WT32-ETH01 and entry of AT Commands

I have just bought an ET32-ETH01. I have connected it to a 5V bench supply and also used a USB to TTL converter to my iMac.
When the USB to TTL converter is connected to the TXD/RXD pins (using the 115200 8N1 as per the data sheet) usign the pins at the topright of the board (also labelled ‘IO1, TXD0’ and ‘IO3, RXD0’), I can see the power on text from the ESP32 that end with the “user_AT_handler_task” which makes me thing that it is ready to receive AT commands.
Also if I power on with an ethernet cable to the iMac, a few seconds after that last message (above) I see that the ethernet connection is up and that is has been given an IP address.
If I connect the USB to TTL converter to the other paid of Tx and Rx pins (labelled ‘IO5, RXD’ and ‘IO17, TXD’), I get a message saying “module ok” during power up.

My problem is that I don’t know how to enter the AT commands that are listed in the datasheets.
The first pair of Tx/Rx pins above (where I get the power up messages) has no echo at all and no response to the “ATE1” command (that should turn on command echo).
Using the other Tx/Rx pair the typed characters are echoed but there is no response from the unit (no OK etc.)
(BTW a port scan from my iMac to the device’s ethernet address shows no open ports and opening a telnet or http connection does gets rejected.)
I’m happy to provide screen shots of the start up messages if that helps.

How do I enter the AT commands?

PS: the pin names on the data sheet for the device on this site seem to be wrong. The data sheet at https://github.com/May-DFRobot/DFRobot/raw/master/WT32-ETH01_datasheet_V1.1.pdf says it is an erlier version but the pin descriptions both seem to be better (no duplicates) and also in English.

Looking from the top, left side, nearest the power led are an RX and TX.
Those are the ones I use…

(Yellow in the pic is RXD on ETH01 - TXD from USB232)
(Orange in the pic is TXD on ETH01 - RXD from USB232)

As I said in the first message - I’ve tried that so I must have done something wrong. I’ll try again.
Does it matter if there is something on the other end of the ethernet cable? (I think the default mode is for the device to initially come up in the serial-ethernet passthrough mode.)
Is there some sequence you need to type so that the AT commands are interpreted and not passed through?

1 Like

No sequence was necessary. I just enter commands with a CRLF.

With the ethernet cable disconnected you just get a response from the AT+CIFSR command.
When connected you get the IP address…




What do you use for the serial comms on the Mac? Is flow control disabled? I’m using Windows, my MAC died :frowning:

1 Like

“screen /dev/tty.usbmodem-140 115200”.
As I said, I did get the text “module ok” using those pins on power up and the typed characters were echoed (I’ve even tried ctrl-j ctrl-m is various combinations after the AT command string) but nothing was ever sent back.
(Thanks for the quick replies)

Sorry - I saw you mentioned the module OK message - but that just indicates the device can send to you… maybe it can’t receive your inputs?
I found that I need to use an app that can send the messages “entirely”, ie not by just typing the commands. I just used node-red…
I’ll test here on my Ubuntu dev kit…

1 Like

Hey @Susan109576,

AT Commands can be tricky, using echo and other standard methods normally don’t allow you to receive anything back which can make setting up something like this pretty difficult.

As @Gary151736 has mentioned using a application built specifically for this is a much easier way to do things. If you are using macos I would recommend looking into minicom. its a terminal based application made for this kind of thing.

You can install this using homebrew and the command

brew install minicom

You can find information on homebrew here. If you don’t have it already its super useful for development on mac https://brew.sh/

There are a few application to do this but using some kind of terminal application to send AT commands instead of the basic echo commands will make this kind of testing way easier.

Hope this helps!

1 Like

Thanks for the suggestions. minicom behaves in the same way as the screen app. I’ve also tried powering the ETH01 from the 5V of the USB-TTL converter (and by the way, the USB-TTL converter is switched to 3.3V for the comms). Just as a check, can you please confirm that the following is the correct startup output:

configsip: 0, SPIWP:0xee
mode:DIO, clock div:2
load:0x40078000,|8?ets Jun  8 2016 00:22:57

configsip: 0, SPIWP:0xee
mode:DIO, clock div:2
entry 0x4008089c
I (29) boot: ESP-IDF 5d27367-dirty 2nd stage bootloader
I (30) boot: compile time 20:25:30
I (30) boot: Enabling RNG early entropy source...
I (35) boot: SPI Speed      : 40MHz
I (39) boot: SPI Mode       : DIO
I (43) boot: SPI Flash Size : 4MB
I (47) boot: Partition Table:
I (50) boot: ## Label            Usage          Type ST Offset   Length
I (58) boot:  0 nvs              WiFi data        01 02 0000d000 00004000
I (65) boot:  1 phy_init         RF data          01 01 00011000 00001000
I (73) boot:  2 factory          factory app      00 00 00020000 00200000
I (80) boot:  3 abup_fota        OTA data         01 00 00220000 00100000
I (88) boot: End of partition table
I (92) boot: Defaulting to factory image
I (96) ABUP: abup_bl_init_flash: app_offset = 0x20000, app_size = 0x200000

I (104) ABUP: abup_bl_init_flash: ota_offset = 0x220000, ota_size = 0x100000

I (112) ABUP: Delta file is not exist, exit.
I (117) esp_image: segment 0: paddr=0x00020020 vaddr=0x3f400020 size=0x3c6cc (247500) map
I (213) esp_image: segment 1: paddr=0x0005c6f4 vaddr=0x3ffbdb60 size=0x0391c ( 14620) load
I (219) esp_image: segment 2: paddr=0x00060018 vaddr=0x400d0018 size=0xeb954 (964948) map
I (557) esp_image: segment 3: paddr=0x0014b974 vaddr=0x3ffc147c size=0x00340 (   832) load
I (558) esp_image: segment 4: paddr=0x0014bcbc vaddr=0x40080000 size=0x00400 (  1024) load
I (564) esp_image: segment 5: paddr=0x0014c0c4 vaddr=0x40080400 size=0x175e8 ( 95720) load
I (626) boot: Loaded app from partition at offset 0x20000
I (626) boot: Disabling RNG early entropy source...
I (627) cpu_start: Pro cpu up.
I (630) cpu_start: Application information:
I (635) cpu_start: Project name:     ethernet_basic
I (641) cpu_start: App version:      5d27367-dirty
I (646) cpu_start: Compile time:     Nov 26 2019 20:24:44
I (652) cpu_start: ELF file SHA256:  b3b686af6ffc043e...
I (658) cpu_start: ESP-IDF:          5d27367-dirty
I (664) cpu_start: Starting app cpu, entry point is 0x4008113c
I (0) cpu_start: App cpu up.
I (674) heap_init: Initializing. RAM available for dynamic allocation:
I (681) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (687) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (693) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (699) heap_init: At 3FFBDB5C len 00000004 (0 KiB): DRAM
I (706) heap_init: At 3FFCFA48 len 000105B8 (65 KiB): DRAM
I (712) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (718) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (724) heap_init: At 400979E8 len 00008618 (33 KiB): IRAM
I (731) cpu_start: Pro cpu start user code
I (749) spi_flash: detected chip: generic
I (750) spi_flash: flash io: dio
I (750) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (758) gpio: GPIO[16]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (768) gpio: GPIO[2]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (778) gpio: GPIO[32]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 
I (788) eth_example: ~~~~~~ver:[1.2]~~~~abup_ota_flag = 1 ~~~~~
I (798) eth_example: ~~CFG_val = 1 ~~
I (808) eth_example: MAC:24:dc:c3:c7:86:c3
dhcp_type = 0x04
I (808) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (828) user_eth: eth_event_handler
I (828) user_eth: Ethernet Started
I (828) user_AT: user_AT_handler_task


@Susan109576 - That’s about what I get on the secondary port, with “module ok” message on the primary port (AT Commands). I have 5V power and 3V3 USB-TTL.

Just a quick thought. Note: I don’t have these units, so this is more just from reading your posts here and the online documents.

Three things kinda jump out out me;

  1. all AT commands MUST be in upper case.
  2. the cfg pin to reset the module settings.
  3. AT commands and \r\n in one go

I could be very wrong here.
If the AT commands need to be entered from the “user” serial port (that bridges to ethernet, wifi etc) and not via the debug/flash serial port, and as @Susan109576 said, if in transparent mode, where everything is just in/out the interfaces, then how does it know its an AT Command to action v sending AT commands to a remote device.
So do you need to reset the config back to default to be allowed to use the AT Commands (or is there some pin to hold high/low to get into AT mode?

From what’s been said above, the AT Commands need to be sent as a single string with the CRLF i.e. line mode, v single character mode.

To me, resetting everything back to factory defaults could be the first step; keep in mind you will loose your settings, so if that’s not ok… hold off on that one.

edit: Just found this bit of info in the documents

So maybe +++ to get into AT mode

Thanks Michael - the +++ thing was exactly why I asked in my second post if there was an sequence that needed to be typed. (I’ve seen that on the XBEE3 AT command system). Unfortunately it makes no difference.
I have tried using the Espressif AT command example code on an ESP32-C3-DevKitC-02 that I have and the setup I have allows me to enter AT commands and get a response so I think my basic means of entering the commands is OK. (I did note that the default AT software shows list the pins that it is using the its I/O.)
I’ll have a look at the ‘cfg’ pin thing shortly (by dog is pressuring me for her walk before it gets too dark!!!).
Also where can I find the binary firmware files in case I want to try to re-flash the MCU?

No luck with a hardware factory reset via the CFG pin.
One thing that I’ve noticed is that the two LEDs next to the RXD and TXD pins what the data sheet says will flash when ‘… there is data flow…’ are always off. I can see the corresponding LEDs on the USB-TTL converter flash as characters are sent in either direction, but not on the board itself. However I do get an echo of the characters that are typed. (Also I’ve checked and there is no short between those pins.)
Back to my question about the firmware - I can see a number of ‘projects’ where people have reprogrammed these boards but I can’t find anywhere the original (or latest) firmware download file from Wireless-Tag. Any idea where that might be?

That is a good question.

The documents start that you “upgrade” Over The Air. So assuming you have a network connection with internet access that may updated

But an actual file you could flash to it by hand… not sure (yet).

1 Like

Hey Susan,

That’s quite odd. If you can send commands and get a response you would expect an indication of this process from the RXD and TXD LEDs.

Could you have something wrong with your physical setup? feel free to share photos if you want us to double check.

Green is ground
Red is 5V
White is USB-TTL Tx to RXD
Yellow is USB-TTL Rx to TXD
@Samuel - to be clear, the response I get is the echo back of the characters I send. There is never an “OK” or error message or any response to the commands. (But I do get the ‘module ok’ mesage after power up so something is happening in the MCU.)

Can you put your Voltmeter on the gnd/5v pin?
Im not sure if I am looking at the usb/serial device correctly, but It looks like the voltage is selectable via the switch; so I just want to confirm its set to 5v and not 3.3V. If its on 3.3V then I suspect you need to feed that into the 3.3v input on the WT32 board.

If set to 5V and on the 5V pin, what should the voltage be on the RX pin of the WT32? My understanding is the ESP32 is a 3.3v logic, so would be expecting 3.3V on the TTL Serial.

Hi All
Just poking my nose in here. I don’t suppose this could be the TX/RX confusion popping up.
Have you tried connecting TX to TX and RX to RX and see what happens. If you haven’t done this so far it would be worth a try.
Cheers Bob


@Michael99645 - there is 5V on the 5V pin of the board (just measured to check). Also the ‘brownout’ message is seen on the TX0/RX0 pins when the voltage is switched off so I’m confiden that the board is beig fed the correct voltage.
The switch on the USB-TTL converter is for the voltage of the Tx/Rx pins. As you say, the ESP2’s are al 3.3V for their IO. (I’ve not pulls out my scope but both the Tx and Tx pins are idling at 3.3V according to my DMM.

@Robert93820 - tried that but (as expected) nothing at all - no echo, no power on message etc.

Thank you all for your continued support - this sort of thing is very frustrating.


1 Like

Thats good, I was not sure, so good to get confirmation; so it does sound like everything is connected as it should.

Just trying to recap (please correct anything I miss/get wrong)

On boot (in that setup), you get a message sent to you computer.

Post boot, you can sent bytes/groups of bytes and they echo back

You cant get one of the other interfaces setup and working as you cant get into AT mode.

the local TX/RX leds dont flash, even though you get echo; but you can see the TX/RX leds flash on the USB-UART (TTL) device.

pending me missing something and/or having that wrong, It sounds like we just need to work out why you cant get AT mode to configure. e.g. the TX/RX may only flash as its forwarding packets (guess).

What was not clear is if you need +++ or +++\r\n
it reads as just +++, but then calls it a packet which on the AT commands needs that \r\n
Can you try both and confirm ?

1 Like

@Michael99645 - I have tried the +++ sequence and it makes no difference.
The +++ characters are echoed just like every other character.
I’ve tried +++\r\n and +++AT-RST\r\n and other combinations but I can see no change.
(Also I have tried both the minicom program [as suggested earlier] which I’ve set up to insert the \n after the \r automatically, and also the ‘screen’ app on the iMac - all provide the same response.)