<labelclass="md-nav__title"for="__toc">Table of contents</label>
<ulclass="md-nav__list"data-md-scrollfix>
<liclass="md-nav__item">
<ahref="#after-connected-autoconnect-menu-performs-but-no-happens"title=" After connected, AutoConnect menu performs but no happens."class="md-nav__link">
After connected, AutoConnect menu performs but no happens.
<ahref="#after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32"title=" After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32."class="md-nav__link">
After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32.
<ahref="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"title=" An esp8266ap as SoftAP was connected but Captive portal does not start."class="md-nav__link">
An esp8266ap as SoftAP was connected but Captive portal does not start.
<ahref="#compile-error-that-eeprom-was-not-declared-in-this-scope"title=" Compile error that 'EEPROM' was not declared in this scope"class="md-nav__link">
Compile error that 'EEPROM' was not declared in this scope
</a>
</li>
<liclass="md-nav__item">
<ahref="#compile-error-that-esphttpupdate-was-not-declared-in-this-scope"title=" Compile error that 'ESPhttpUpdate' was not declared in this scope"class="md-nav__link">
Compile error that 'ESPhttpUpdate' was not declared in this scope
<labelclass="md-nav__title"for="__toc">Table of contents</label>
<ulclass="md-nav__list"data-md-scrollfix>
<liclass="md-nav__item">
<ahref="#after-connected-autoconnect-menu-performs-but-no-happens"title=" After connected, AutoConnect menu performs but no happens."class="md-nav__link">
After connected, AutoConnect menu performs but no happens.
<ahref="#after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32"title=" After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32."class="md-nav__link">
After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32.
<ahref="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"title=" An esp8266ap as SoftAP was connected but Captive portal does not start."class="md-nav__link">
An esp8266ap as SoftAP was connected but Captive portal does not start.
<ahref="#compile-error-that-eeprom-was-not-declared-in-this-scope"title=" Compile error that 'EEPROM' was not declared in this scope"class="md-nav__link">
Compile error that 'EEPROM' was not declared in this scope
</a>
</li>
<liclass="md-nav__item">
<ahref="#compile-error-that-esphttpupdate-was-not-declared-in-this-scope"title=" Compile error that 'ESPhttpUpdate' was not declared in this scope"class="md-nav__link">
Compile error that 'ESPhttpUpdate' was not declared in this scope
<ahref="#3-turn-on-the-debug-log-options"title="3. Turn on the debug log options"class="md-nav__link">
3. Turn on the debug log options
</a>
</li>
<liclass="md-nav__item">
<ahref="#4-reports-the-issue-to-autoconnect-github-repository"title="4. Reports the issue to AutoConnect Github repository"class="md-nav__link">
4. Reports the issue to AutoConnect Github repository
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<divclass="md-content">
<articleclass="md-content__inner md-typeset">
<h1>FAQ</h1>
<h2id="after-connected-autoconnect-menu-performs-but-no-happens"><iclass="fa fa-question-circle"></i> After connected, AutoConnect menu performs but no happens.<aclass="headerlink"href="#after-connected-autoconnect-menu-performs-but-no-happens"title="Permanent link">¶</a></h2>
<p>If you can access the <strong>AutoConnect root path</strong> as http://ESP8266IPADDRESS/_ac from browser, probably the sketch uses <em>ESP8266WebServer::handleClient()</em> without <ahref="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a>.<br/>
For AutoConnect menus to work properly, call <ahref="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a> after <em>ESP8266WebServer::handleClient()</em> invoked, or use <ahref="api.html#handleclient"><em>AutoConnect::handleClient()</em></a>. <ahref="api.html#handleclient"><em>AutoConnect::handleClient()</em></a> is equivalent <em>ESP8266WebServer::handleClient</em> combined <ahref="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a>.</p>
<p>See also the explanation <ahref="basicusage.html#esp8266webserver-hosted-or-parasitic">here</a>.</p>
<h2id="after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32"><iclass="fa fa-question-circle"></i> After updating to AutoConnect v1.0.0, established APs disappear from Open SSIDs with ESP32.<aclass="headerlink"href="#after-updating-to-autoconnect-v100-established-aps-disappear-from-open-ssids-with-esp32"title="Permanent link">¶</a></h2>
<p>Since AutoConnect v1.0.0 for ESP32, the storage location in the flash of established credentials has moved from EEPROM to Preferences. After You update AutoConnect to v1.0.0, past credentials saved by v0.9.12 earlier will <em>not be accessible</em> from the AutoConnect menu - <strong>Open SSIDs</strong>. You need to transfer once the stored credentials from the EEPROM area to the Preferences area.</p>
<p>You can migrate the past saved credentials using <ahref="https://github.com/Hieromon/AutoConnect/tree/master/examples/CreditMigrate"><strong>CreditMigrate.ino</strong></a> which the examples folder contains.</p>
<divclass="admonition info">
<pclass="admonition-title">Needs to Arduino core for ESP32 1.0.2 or earlier</p>
<p>EEPROM area with arduino-esp32 core <strong>1.0.3</strong> has moved from <strong>partition</strong> to the <strong>nvs</strong>. CreditMigrate.ino requires arduino-esp32 core <strong>1.0.2</strong> or earlier to migrate saved credentials.</p>
<h2id="an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"><iclass="fa fa-question-circle"></i> An esp8266ap as SoftAP was connected but Captive portal does not start.<aclass="headerlink"href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"title="Permanent link">¶</a></h2>
<p>Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once.</p>
<h2id="compile-error-that-eeprom-was-not-declared-in-this-scope"><iclass="fa fa-question-circle"></i> Compile error that 'EEPROM' was not declared in this scope<aclass="headerlink"href="#compile-error-that-eeprom-was-not-declared-in-this-scope"title="Permanent link">¶</a></h2>
<p>If the user sketch includes the header file as <code>EEPROM.h</code>, this compilation error may occur depending on the order of the <code>#include</code> directives. <code>AutoConnectCredentials.h</code> including in succession linked from <code>AutoConnect.h</code> defines <strong>NO_GLOBAL_EEPROM</strong> internally, so if your sketch includes <code>EEPROM.h</code> after <code>AutoConnect.h</code>, the <strong>EEPROM</strong> global variable will be lost.</p>
<p>If you use EEPROM with your sketch, declare <code>#include <EEPROM.h></code> in front of <code>#include <AutoConnect.h></code>.</p>
<h2id="compile-error-that-esphttpupdate-was-not-declared-in-this-scope"><iclass="fa fa-question-circle"></i> Compile error that 'ESPhttpUpdate' was not declared in this scope<aclass="headerlink"href="#compile-error-that-esphttpupdate-was-not-declared-in-this-scope"title="Permanent link">¶</a></h2>
<p>If the user sketch includes the header file as <code>ESP8266httpUpdate.h</code>, this compilation error may occur depending on the order of the <code>#include</code> directives. <code>AutoConnectUpdate.h</code> including in succession linked from <code>AutoConnect.h</code> defines <strong>NO_GLOBAL_HTTPUPDATE</strong> internally, so if your sketch includes <code>ESP8266httpUpdate.h</code> after <code>AutoConnect.h</code>, the <strong>ESPhttpUpdate</strong> global variable will be lost.</p>
<p>You can avoid a compile error in one of two ways:</p>
<ol>
<li>
<p>Disable an AutoConnectUpdate feature if you don't need.</p>
<p>You can disable the AutoConnectUpdate feature by commenting out the <strong>AUTOCONNECT_USE_UPDATE</strong> macro in the <code>AutoConnectDefs.h</code> header file.
<h2id="connection-lost-immediately-after-establishment-with-ap"><iclass="fa fa-question-circle"></i> Connection lost immediately after establishment with AP<aclass="headerlink"href="#connection-lost-immediately-after-establishment-with-ap"title="Permanent link">¶</a></h2>
<p>A captive portal is disconnected immediately after the connection establishes with the new AP. This is a known problem of ESP32, and it may occur when the following conditions are satisfied at the same time.</p>
<li>There are receivable multiple WiFi signals which are the same SSID with different channels using the WiFi repeater etc. (This condition is loose, it may occur even if there is no WiFi repeater.)</li>
<li>Or the using channel of the AP which established a connection is congested with the radio signal on the same band. (If the channel crowd, connections to known APs may also fail.)</li>
<p>ESP32 hardware equips only one RF circuitry for WiFi signal. At the AP_STA mode, ESP32 as an AP attempts connect to another AP on another channel while keeping the connection with the station then the channel switching will occur causes the station may be disconnected. But it may not be just a matter of channel switching causes ESP8266 has the same constraints too. It may be a problem with AutoConnect or the arduino core or SDK issue. This problem will persist until a specific solution.</p>
<h2id="data-saved-to-eeprom-is-different-from-my-sketch-wrote"><iclass="fa fa-question-circle"></i> Data saved to EEPROM is different from my sketch wrote.<aclass="headerlink"href="#data-saved-to-eeprom-is-different-from-my-sketch-wrote"title="Permanent link">¶</a></h2>
<p>By default, AutoConnect saves the credentials of the established connection into EEPROM. The credential area of EEPROM used by AutoConnect will conflict with data owned by the user sketch if without measures taken. It will destroy the user sketch data and the data stored in EEPROM by AutoConnect with each other.<br/>
You have the following two options to avoid this conflict:</p>
<ul>
<li>
<p>Move the credential saving area of EEPROM.<br/>
You can protect your data from corruption by notifying AutoConnect where to save credentials. Notification of the save location for the credentials uses <ahref="apiconfig.html#boundaryoffset">AutoConnectConfig::boundaryOffset</a> option. Refer to the chapter on <ahref="advancedusage.html#move-the-saving-area-of-eeprom-for-the-credentials">Advanced usage</a> for details.</p>
<p>Suppresses the automatic save operation of credentials by AutoConnect.<br/>
You can completely stop saving the credentials by AutoConnect. However, if you select this option, you lose the past credentials which were able to connect to the AP. Therefore, the effect of the <ahref="advancedusage.html#automatic-reconnect">automatic reconnection feature</a> will be lost.<br/>
If you want to stop the automatic saving of the credentials, uses <ahref="apiconfig.html#autosave">AutoConnectConfig::autoSave</a> option specifying <strong>AC_SAVECREDENTIAL_NEVER</strong>. Refer to the chapter on <ahref="advancedusage.html#auto-save-credential">Advanced usage</a> for details.</p>
<h2id="does-not-appear-esp8266ap-in-smartphone"><iclass="fa fa-question-circle"></i> Does not appear esp8266ap in smartphone.<aclass="headerlink"href="#does-not-appear-esp8266ap-in-smartphone"title="Permanent link">¶</a></h2>
<p>Maybe it is successfully connected at the <ahref="lsbegin.html#autoconnectbegin-logic-sequence"><strong>first WiFi.begin</strong></a>. ESP8266 remembers the last SSID successfully connected and will use at the next. It means SoftAP will only start up when the first <em>WiFi.begin()</em> fails.</p>
<p>The saved SSID would be cleared by <em>WiFi.disconnect()</em> with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch.</p>
<detailsclass="hint"><summary>You can interactively check the WiFi state of ESP8266.</summary><p>Please try <ahref="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>. It is ESP8266 interactive serial command processor.</p>
<h2id="does-not-response-from-95ac"><iclass="fa fa-question-circle"></i> Does not response from /_ac.<aclass="headerlink"href="#does-not-response-from-95ac"title="Permanent link">¶</a></h2>
<p>Probably <strong>WiFi.begin</strong> failed with the specified SSID. Activating the <ahref="advancedusage.html#debug-print">debug printing</a> will help you to track down the cause.</p>
<h2id="hang-up-after-reset"><iclass="fa fa-question-circle"></i> Hang up after Reset?<aclass="headerlink"href="#hang-up-after-reset"title="Permanent link">¶</a></h2>
<p>If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: <ahref="https://github.com/esp8266/Arduino/issues/1017">https://github.com/esp8266/Arduino/issues/1017</a><supid="fnref:1"><aclass="footnote-ref"href="#fn:1"rel="footnote">1</a></sup></p>
<p>It is described by <ahref="view-source:https://www.espressif.com/en/products/hardware/esp8266ex/resources">ESP8266 Non-OS SDK API Reference</a>, section A.5.</p>
<table>
<thead>
<tr>
<th>Messages</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>rst cause</td>
<td>1: power on<br>2: external reset<br>4: hardware watchdog reset</td>
</tr>
<tr>
<td>boot mode<br>(the first parameter)</td>
<td>1: ESP8266 is in UART-down mode (and downloads firmware into flash).<br>3: ESP8266 is in Flash-boot mode (and boots up from flash).</td>
<h2id="how-can-i-detect-the-captive-portal-starting"><iclass="fa fa-question-circle"></i> How can I detect the captive portal starting?<aclass="headerlink"href="#how-can-i-detect-the-captive-portal-starting"title="Permanent link">¶</a></h2>
<p>You can use the <ahref="api.html#ondetect">AutoConnect::onDetect</a> exit routine. For more details and an implementation example of the onDetect exit routine, refer to the chapter "<ahref="advancedusage.html#captive-portal-start-detection">Captive portal start detection</a>".</p>
<h2id="how-change-http-port"><iclass="fa fa-question-circle"></i> How change HTTP port?<aclass="headerlink"href="#how-change-http-port"title="Permanent link">¶</a></h2>
<p>HTTP port number is defined as a macro in <ahref="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L112">AutoConnectDefs.h</a> header file. You can change it directly with several editors and must re-compile.</p>
<h2id="how-change-ssid-or-password-in-captive-portal"><iclass="fa fa-question-circle"></i> How change SSID or Password in Captive portal?<aclass="headerlink"href="#how-change-ssid-or-password-in-captive-portal"title="Permanent link">¶</a></h2>
<p>You can change both by using <ahref="apiconfig.html#apid">AutoConnectConfig::apid</a> and <ahref="apiconfig.html#psk">AutoConnectConfig::psk</a>. Refer to section <ahref="advancedusage.html#change-ssid-and-password-for-softap">Change SSID and Password for SoftAP</a> in <ahref="advancedusage.html">Advanced usage</a>.</p>
<h2id="how-erase-the-credentials-saved-in-eeprom"><iclass="fa fa-question-circle"></i> How erase the credentials saved in EEPROM?<aclass="headerlink"href="#how-erase-the-credentials-saved-in-eeprom"title="Permanent link">¶</a></h2>
<p>Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the sketch to erase the saved credential with <em>AutoConnectCredential</em>. The <em>AutoConnectCrendential</em> class provides the access method to the saved credential in EEPROM and library source file is including it. Refer to '<ahref="credit.html#saved-credential-in-eeprom">Saved credential access</a>' on section <ahref="credit.html">Appendix</a> for details.</p>
<p>With the <ahref="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>, you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials.</p>
</div>
<h2id="how-locate-the-link-button-to-the-autoconnect-menu"><iclass="fa fa-question-circle"></i> How locate the link button to the AutoConnect menu?<aclass="headerlink"href="#how-locate-the-link-button-to-the-autoconnect-menu"title="Permanent link">¶</a></h2>
<p>Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is <strong>/_ac</strong> by default and embed the following <code><a></a></code> tag in the generating HTML.</p>
<h2id="how-much-memory-does-autoconnect-consume"><iclass="fa fa-question-circle"></i> How much memory does AutoConnect consume?<aclass="headerlink"href="#how-much-memory-does-autoconnect-consume"title="Permanent link">¶</a></h2>
<p>It increases about 53K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced in the Getting started is about 330K bytes. (270K byte without AutoConnect)</p>
<p>It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.</p>
<h2id="i-cannot-complete-to-wi-fi-login-from-smartphone"><iclass="fa fa-question-circle"></i> I cannot complete to Wi-Fi login from smartphone.<aclass="headerlink"href="#i-cannot-complete-to-wi-fi-login-from-smartphone"title="Permanent link">¶</a></h2>
<p>Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.</p>
<h2id="i-cannot-see-the-custom-web-page"><iclass="fa fa-question-circle"></i> I cannot see the custom Web page.<aclass="headerlink"href="#i-cannot-see-the-custom-web-page"title="Permanent link">¶</a></h2>
<p>If the sketch is correct, a JSON syntax error may have occurred. In this case, activate the <ahref="faq.html#3-turn-on-the-debug-log-options">AC_DEBUG</a> and rerun. If you take the message of JSON syntax error, the <ahref="https://arduinojson.org/v5/assistant/">Json Assistant</a> helps syntax checking. This online tool is provided by the author of ArduinoJson and is most consistent for the AutoConnect. </p>
<h2id="submit-element-in-a-custom-web-page-does-not-react"><iclass="fa fa-question-circle"></i> Submit element in a custom Web page does not react.<aclass="headerlink"href="#submit-element-in-a-custom-web-page-does-not-react"title="Permanent link">¶</a></h2>
<p>Is there the AutoConnectElements element named <strong>SUBMIT</strong> in the custom Web page? (case sensitive ignored) AutoConnect does not rely on the <code>input type=submit</code> element for the form submission and uses <ahref="https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit">HTML form element submit</a> function instead. So, the submit function will fail if there is an element named 'submit' in the form. You can not use <strong>SUBMIT</strong> as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element.</p>
<h2id="still-not-stable-with-my-sketch"><iclass="fa fa-question-circle"></i> Still, not stable with my sketch.<aclass="headerlink"href="#still-not-stable-with-my-sketch"title="Permanent link">¶</a></h2>
<p>Both ESP8266 and ESP32 can only work on one channel at any given moment. This will cause your station to lose connectivity on the channel hosting the captive portal. If the channel of the AP which you want to connect is different from the SoftAP channel, the operation of the captive portal will not respond with the screen of the AutoConnect connection attempt remains displayed. In such a case, please try to configure the <ahref="apiconfig.html#channel">channel</a> with <ahref="apiconfig.html#autoconnectconfig">AutoConnectConfig</a> to match the access point.</p>
<spanstyle="color: #f8f8f2">config.channel</span><spanstyle="color: #f92672">=</span><spanstyle="color: #ae81ff">3</span><spanstyle="color: #f8f8f2">;</span><spanstyle="color: #75715e">// Specifies a channel number that matches the AP</span>
<p>Espressif Systems has released a <ahref="https://www.espressif.com/sites/default/files/esp8266_wi-fi_channel_selection_guidelines.pdf">channel selection guide</a>.</p>
<p>You can select the <ahref="http://lwip.wikia.com/wiki/LwIP_Wiki">lwIP</a> variant to contribute for the stable behavior. The <strong>lwIP v2 Lower memory</strong> option of Arduino IDE for core version 2.4.2 is based on the lwIP-v2. On the other hand, the core version 2.5.0 upstream is based on the lwIP-2.1.2 stable release.</p>
<p>You can select the option from Arduino IDE as <strong>Tool</strong> menu, if you are using ESP8266 core 2.5.0. It can be select <code>lwIP v2 Lower Memory</code> option. (not <code>lwIP v2 Lower Memory (no features)</code>) It is expected to improve response performance and stability.</p>
<p>The <ahref="https://github.com/espressif/arduino-esp32">arduino-esp32</a> is still under development. It is necessary to judge whether the problem cause of the core or AutoConnect. Trace the log with the esp32 core and the AutoConnect debug option enabled for problem diagnosis and please you check the <ahref="https://github.com/espressif/arduino-esp32/issues">issue of arduino-esp32</a>. The problem that your sketch possesses may already have been solved.</p>
<h3id="3-turn-on-the-debug-log-options">3. Turn on the debug log options<aclass="headerlink"href="#3-turn-on-the-debug-log-options"title="Permanent link">¶</a></h3>
<p>To fully enable for the AutoConnect debug logging options, change the following two files.</p>
<h3id="4-reports-the-issue-to-autoconnect-github-repository">4. Reports the issue to AutoConnect Github repository<aclass="headerlink"href="#4-reports-the-issue-to-autoconnect-github-repository"title="Permanent link">¶</a></h3>
<p>If you can not solve AutoConnect problems please report to <ahref="https://github.com/Hieromon/AutoConnect/issues">Issues</a>. And please make your question comprehensively, not a statement. Include all relevant information to start the problem diagnostics as follows:<supid="fnref:3"><aclass="footnote-ref"href="#fn:3"rel="footnote">3</a></sup></p>
<liclass="task-list-item"><inputtype="checkbox"disabled/> Problem description</li>
<liclass="task-list-item"><inputtype="checkbox"disabled/> If you have a STACK DUMP decoded result with formatted by the code block tag</li>
<liclass="task-list-item"><inputtype="checkbox"disabled/> The sketch code with formatted by the code block tag (Reduce to the reproducible minimum code for the problem)</li>
<p>This issue has been resolved in ESP8266 core 2.5.0 and later. <aclass="footnote-backref"href="#fnref:1"rev="footnote"title="Jump back to footnote 1 in the text">↩</a></p>
<p><code>PageBuilder.h</code> exists in the <code>libraries/PageBuilder/src</code> directory under your sketch folder. <aclass="footnote-backref"href="#fnref:2"rev="footnote"title="Jump back to footnote 2 in the text">↩</a></p>
<p>Without this information, the reproducibility of the problem is reduced, making diagnosis and analysis difficult. <aclass="footnote-backref"href="#fnref:3"rev="footnote"title="Jump back to footnote 3 in the text">↩</a></p>