I have small ESP 12F (ESP8266) module and I can not get it to work. I have used many other modules like Wemos successfully, I can program. I understand that for very basic functionality test the ESP 12F needs to be connected to external 3.3V power source (I use battery) and TX/RX pins to UART-USB converter. Also ground of UART and external power is connected. With this setup and with terminal set to 78440 baud, CR+LF, the ESP 12F should respond to AT commands.

When I issue AT, I get some unknown character in response (⸮). I get this for baud rates from 38400 to 500000. Under 38400 I dont get anything at all, for baud 1000000 I get "Q R" as response and for baud 2000000 I get "Q5R" as response to AT.

So I think that the module can respond, but bits returned are not understood.

  • \$\begingroup\$ you will need to set the right baudrate. Stop guessing, read data sheets. \$\endgroup\$ Jan 8, 2019 at 20:31
  • \$\begingroup\$ You could also use an oscilloscope to observe the data coming from the module to determine the baud rate. In the meantime, give us a link to the datasheet. \$\endgroup\$ Jan 8, 2019 at 21:03
  • \$\begingroup\$ What have you done to verify that there's an AT command interpreter loaded in the flash? \$\endgroup\$ Jan 9, 2019 at 2:24
  • \$\begingroup\$ Thanks for responses. Some specs say native br is 78440, others 115200, I tried both (I tried all). As of AT, these modules (and datasheet confirms it) are shipped ready to use AT commands. Is there any other way to verify the module is working? Flashing does not work, I get comm error. Datasheet is here: wiki.ai-thinker.com/_media/esp8266/a014ps01.pdf \$\endgroup\$
    – Jan
    Jan 9, 2019 at 10:17

1 Answer 1


I have resolved the problem myself. The small ESP 12F module did not have pull-up resistor on EN pin and pull-down on GPIO15. Despite the fact that AI-Thinker DOES have the resistors in their ESP 12F datasheet schematics. I have added resistors and board started to work. For others, I have set up baud rate of serial monitor to 74880 and reset method to ck, I reset manually when IDE is waiting to upload. Also when programming, the GPIO0 needs to be pulled down. When you reset the chip you get response on serial terminal that contains boot mode:(x,y). x are bits of GPIO15, GPIO0 and GPIO2, If you get value of x 3 or more it means you need to pull GPIO15 and GPIO0 low. For flashing then there should be boot mode:(1,y), for running the sketch boot mode:(3,y). I do not know what y means but it seems it does not matter.

I also encountered another strange behavior. I use OTA from web server and sometimes the ESP just did not connect to web server and indstead expected http code 200 it returned code 400. After long debugging it turned out that I have multiple SSID at home provided by ZYXEL router, some with password and some without it. When I was connected to SSID with password, the server was still returning http code 400. When I connected to other SSID without password, server connection was OK, server returned code 200 and OTA proceeded without problems.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.