OSX CH340 Ai thinker ESP32-C3F-12F ESP32-12H

Anyone else notice this? OSX version. New RISC-V Ai modules ESP32-C3F-12F or ESP-12H on boards with CH340, require RTS/DTR to be high for the board to turn on. As soon as the serial monitor is turned ON, RTS/DTR goes LOW turning OFF the board. WINDOWS 10 works fine, cross platform compatibility issue. CH340 manufacturer supplied new driver CH34xVCPDriver V1.1. This driver cleared the RTS/DTR (OFF) problem when no program is driving the CH340. IDE will program the boards okay but when reset, RTS/DTR is driven LOW turning the board OFF. Cannot use the serial port to debug. Arduino claims not their problem since it is not one of their boards(never mind the dozens of non-arduino boards they DO support!). Using 3rd party OSX SerialTool, also works fine...

Sorry; the rs232 standard says that "low" is the "active" state for DTR/RTS.
The nominal Arduino HW spec says that DTR becoming low causes a momentary reset of the board, to implement the auto-reset-and-upload capability. (ie - when the serial port is activated, get ready for an upload.)

If this board remains continuously reset when DTR is low, it's just wrong.

Please list one of them so I can understand what you mean by that.

Arduino does not support 3rd party boards. Why would they? It's like taking a Mercedes to a BMW dealer to get it fixed.

People on the forum here might provide a form of support for non-arduino boards but Arduino doesn't.

It really depends on what you mean by "support". Arduino has put a lot of effort into creating a boards platform and package index framework that allows the official development software to easily support any board, so in this way you could say that 3rd party boards are supported.

But as far as expecting to be able to get assistance from Arduino's private technical support staff for problems you are having that are specific to 3rd party hardware or software, it would be unreasonable to expect such a thing.

It also depends on what you mean by "non-arduino boards". Certain boards manufactured by other companies have been given special status over time because those companies had established some sort of partnership with Arduino (e.g., the "Arduino At Heart" program). You will see these listed in the Arduino IDE's Boards Manager when you don't have any 3rd party URLs added in your preferences. So these boards were given extra support, at least as far as being able to install them in the IDE without the extra step of modifying your preferences.

I mean under the board manager, there are probably >100 boards supported/included in the IDE.

My point is CH340-RTS/DTR is handled fine in the Windows environment, I can turn on the serial monitor and use the board normally, debug etc. The same IDE in OSX turns the RTS/DTR LOW, board is disabled/OFF will not function......

As mentioned above, those were included as a result of some special arrangement between Arduino and the manufacturer. The manufacturer of your ESP32 dev board doesn't have such an agreement. It also doesn't necessarily imply that Arduino provides technical support for those boards, as the agreement might well have been limited to the inclusion of their platforms in the primary package index file.

It is certainly interesting.

Are you using the exact same version of the Arduino IDE (e.g., 1.8.16) on both computers?

Are you using the exact same version of the ESP32 boards platform (e.g., 2.0.0) on both computers? You can see the installed platform version at Tools > Board > Boards Manager.

These are NodeMCU, probably hundreds of thousands sold and I'm the only shmuck to try them on OSX.......

Well, several different boards made by quite a few different manufacturers have been labeled "NodeMCU", so there's no reason to think whatever you have was sold in the hundreds of thousands.

Anyway, I asked you a question in my last reply and you haven't answered it yet.

Both machines had 1.8.13, Windows serial worked OSX did not.
Just upgraded to 1.8.16 OSX, same problem...

Both have the ESP32C3 & ESP32S2 DEV Modules supported in the IDE.
Both OS's will program the NodeMCU boards.
Windows will program, reset and run.
OSX will program, reset and be disabled if serial monitor is on.

All boils down to how Arduino IDE handles the RTS/DTR.

Very annoying

It's Ai Thinkers dev board (in their documentation) with NodeMCU logo on the back.
Ai Thinker "ESP8266 killer" offerings with a C3 and S2 in ESP8266-12F form factor.
Not quite pin for pin but I would expect they would sell a lot of them.

The ESP32C3/S2 DEV boards only appear in the boards manager if the espressif Alpha 2.0.0 is installed.

Mute point anyway, no one here seems to be using OSX with these modules.


Not if they're the (new) RISC-V chips...
Also, the original NodeMCU boards had a cp2102 for the USB/Serial converter.
My 8266 NodeCPU (now rather old) works fine on my Mac. (Or it does now that I've updated the cp21xx driver!)

It's Ai Thinkers dev board (in their documentation) with NodeMCU logo on the back.
Ai Thinker "ESP8266 killer" offerings with a C3 and S2 in ESP8266-12F form factor.

Wait, which board exactly are you using (provide a link. (and where did you buy it?)) The ESP8266 and the new board have similar dtr/rts reset circuitry in spite of the different CPU and serial chip, but it's more complicated than just connecting DTR/RTS to a 12F-style module...

The Arduino IDE does not have ANY special board-dependent Serial Monitor code, so it really can't "add support" for a board with special requirements WRT serial ports... (it DOES potentially have special per-board RESET code that can manipulate the serial port.)

It is possible to configure the Serial Monitor DTR/RTS toggling behavior in the board definition:

This is why I asked @ejab if they had the same version of the ESP32 boards platform installed on both machines. I never got an answer though.


Neat. I wonder when that happened?

Four years ago:

But it was only finally documented last year:

I will see if I can sort out the disable-dtr-rts-properties

Sorry folks, my bad:
My initial comparison(June) was just plugging the target into a USB port OSX/Win to power it up.
OSX driver by default (no program using it) sets the RTS/DTR LOW.
Windows driver, guessing the COM port not being open, did not set the pins LOW so it could run the board.

Like OSX with espressif Alpha 2.0.0, Win IDE 1.8.13/16 will program the ESP32C3 DEV board but on reset,
if the serial monitor is open, RTS/DTR is set LOW. Toggle the board ON and OFF by closing and opening the serial monitor.

When I contacted the Eng at Nanjing Qinheng Microelectronics Co., Ltd. , he confirmed the OSX driver by default
will set the RTS/DTR LOW. Target board will not power up with CH341ser 1.5 so he sent CH34XSER_MAC_V1.1.
If no program is using the driver RTS/DTR is set HIGH and the target board will power up. Progress!

The program OSX "SerialTool" had no issues with RTS/DTR.
I could plug the board in and see serial data flowing. (Don't think had this prog before the new driver...)

The Ai Thnker C3 board documentation is here:

Note the diagram is not correct and there are errors in the breakout pin assignments.

ESP-C3-12F-Kitspecifications V1.0 Page5of16 1.Productoverview The ESP-C3-12F-Kit development board is a core development board designed by ESP-C3-12FfortheESP-C3 ...

The boards can be found here: Limited supply, had to wait for inventory on my second order.

ESP32 C3 ESP C3 ESPC3 C3S 12F 13 13U 01M 32S low cost WiFi+ Bluetooth 5.0 series module development board ESP C3 13 ESP C3 01M|Integrated Circuits| - AliExpress
Cheap Integrated Circuits, Buy Quality Electronic Components & Supplies Directly from China Suppliers:ESP32 C3 ESP C3 ESPC3 C3S 12F 13 13U 01M 32S low cost WiFi+ Bluetooth 5.0 series module development board ESP C3 13 ESP C3 01M Enjoy Free Shipping Worldwide! Limited Time Sale Easy Return.

  • | - |

Thanks for the help.

BTW: does this mean that Espressif is providing a RISC-V compiler that runs on Mac?
I have some Seeed Longan Nano boards that I was going to experiment with, only to discover that their core didn't run on Mac :frowning:

Looks like it's distributed in the latest 2.0.0 production release of the platform:

          "name": "esp32",
          "architecture": "esp32",
          "version": "2.0.0",
          "category": "ESP32",
          "url": "https://github.com/espressif/arduino-esp32/releases/download/2.0.0/esp32-2.0.0.zip",
          "archiveFileName": "esp32-2.0.0.zip",
          "checksum": "SHA-256:10e1c42dbf11d2359259a80008f13f37d2f9bb8f49a25d34d387cf4531052cbc",
          "size": "139313137",
          "help": {
            "online": ""
          "boards": [
              "name": "ESP32 Dev Module"
              "name": "WEMOS LoLin32"
              "name": "WEMOS D1 MINI ESP32"
          "toolsDependencies": [
              "packager": "esp32",
              "name": "riscv32-esp-elf-gcc",
              "version": "gcc8_4_0-esp-2021r1"
              "packager": "esp32",
              "name": "xtensa-esp32-elf-gcc",
              "version": "gcc8_4_0-esp-2021r1"
              "packager": "esp32",
              "name": "xtensa-esp32s2-elf-gcc",
              "version": "gcc8_4_0-esp-2021r1"
              "packager": "esp32",
              "name": "esptool_py",
              "version": "3.1.0"
              "packager": "esp32",
              "name": "mkspiffs",
              "version": "0.2.3"
              "packager": "esp32",
              "name": "mklittlefs",
              "version": "3.0.0-gnu12-dc7f933"
          "name": "riscv32-esp-elf-gcc",
          "version": "gcc8_4_0-esp-2021r1",
          "systems": [
              "host": "x86_64-pc-linux-gnu",
              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-amd64.tar.gz",
              "checksum": "SHA-256:3459618f33bbd5f54d7d7783e807cb6eef6472a220f2f1eb3faced735b9d13bb",
              "size": "152812483"
              "host": "arm-linux-gnueabihf",
              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-armel.tar.gz",
              "checksum": "SHA-256:24b9e54b348bbd5fb816fc4c52abb47337c702beecdbba840750b7cfb9d38069",
              "size": "151726623"
              "host": "i686-pc-linux-gnu",
              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-linux-i686.tar.gz",
              "checksum": "SHA-256:954d340ebffef12a2ce9be1ea004e6f45a8863f1e6f41f46fd3f04f58499627c",
              "size": "155430963"
              "host": "x86_64-apple-darwin",
              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-macos.tar.gz",
              "checksum": "SHA-256:612fb3a3f84f703222327bd16581df8f80fda8cdf137637fe5d611587d1b664e",
              "size": "159836199"
              "host": "i686-mingw32",
              "url": "https://github.com/espressif/crosstool-NG/releases/download/esp-2021r1/riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
              "archiveFileName": "riscv32-esp-elf-gcc8_4_0-esp-2021r1-win32.zip",
              "checksum": "SHA-256:5711eb407ffe44adddbd1281b6b575a5645e7193ca78faefa27dc5bc5b662bec",
              "size": "191266312"

If you mean the ESP-IDF...
It is supported on the MAC in 4.2+ for the risc-v S2 and C3 chips.


Get Started - ESP32-C3 - — ESP-IDF Programming Guide latest documentation - Espressif
Get Started¶. This document is intended to help you set up the software development environment for the hardware based on the ESP32-C3 chip by Espressif.

I'm not a coder so most of it is Greek to me:o\

I frankincode to test my hardware...
I designed boards using the ESP-12F adding a 15bit ADC, RTC, Accelerometer, eeprom, TF card and an I2C bus.
Now I'm planning to move it over to Ai's C3F-12F RISC-V module.
My associates are coding with the prototype ESP-12F boards, hoping they will have something useful to port over to the C3F.

I did find a hardware config txt file for the C3 board and it has statements for the RTS & DTR set to false.
I changed them to true but now the IDE is crashing on compile, complaining of missing a file/directory.
I think a library may have updated and killed something. Was just about to get into that when I saw your message.



Thats what was running, I had no problem selecting the risc board I wanted and programming it.
It just got disabled on reset if the serial port was open.

but thanks:o)