Fails to upload to ESP32S3-WROOM-1

I have to correct my statement.
Both LED_BUILTIN and RGB_BUILTIN work perfectly.

Problems with LED aside…

Here is a quick run down how to fix the upload problems

The default macOS driver seems to have a problem with the CH34x chipset/board.
You have to install the CH34xVCPDriver.
If you are on a M1/M2 ARM machine you need to install and use the app from the DMG. On Intel the pkg seems to do the trick.

What is a little weird is that I don’t see the driver loaded:

kextstat | grep -v apple
Executing: /usr/bin/kmutil showloaded
No variant specified, falling back to release
Index Refs Address            Size       Wired      Name (Version) UUID <Linked Against>

and that it now creates two ports.
One seems to be the old driver, the other one the new driver.

$ pio device list   
/dev/cu.wchusbserial57810170451
-------------------------------
Hardware ID: USB VID:PID=1A86:55D3 SER=5781017045 LOCATION=2-1
Description: USB Single Serial

/dev/cu.usbmodem57810170451
---------------------------
Hardware ID: USB VID:PID=1A86:55D3 SER=5781017045 LOCATION=2-1
Description: USB Single Serial

You need to ensure that pio uses the wch port.

This pio ini now solved the upload for me:

[env:esp32-s3-devkitc1-n16r8]
platform = espressif32
board = esp32-s3-devkitc1-n16r8
framework = arduino
upload_port = /dev/cu.wchusbserial*
2 Likes

bridgeb: I have found a brand new ESP32-S3 N16S8 sown in the above image. I am running Platformio on a Windows 10 laptop.

How did you get that to work? I’ve got an ESP32-S3-devkitC-1-N8, but whenever I try to create a PlatformIO project for it in VSC, all I get is:

Installing espressif/toolchain-riscv32-esp @ 8.4.0+2021r2-patch3
UnknownPackageError: Could not find the package with ‘espressif/toolchain-riscv32-esp @ 8.4.0+2021r2-patch3’ requirements for your system ‘windows_amd64’

Your comments would be appreciated!

The risc toolchain is for ESP32-C series!?
Please share your platformio.ini

nmw01223: sivar2311 is right. You should be seeing it use the xtensa-esp32s3 toolchain not the risc toolchain. When choosing the board for the project make sure you select one of the esp32-s3-devkitc-1 board options. The default setting is for 8MB of memory but will still work. To make full use of the 16MB flash and 8MB PSRAM you will need to decide on a partition model for the application.

I picked up on this because at the time I couldn’t get anything to work. When I selected the ESP32-S3-DEVKITC-1-N8, being what I have, it came up with the message above.

So, I tried a bland ESP32 dev board and it created the project OK but would not upload because it said wrong CPU - correct, I assume.

Then in another thread someone suggested deleting the espressif folder in the .platformio tree on the basis that it might be out of date and referencing something now non-existent in the repository. So, did that, it presumably reinstalled, and miraculously the project created correctly and all is now OK. So, I assume he was right.

Hey tcurdt thanks so much. I had the exact same problem and the driver solved it. I can’t imaging how long I would have been beating my head against the wall trying to solve this.

2019 Intel Macbook Pro.

1 Like

@tcurdt Thank you very much for sharing the steps to solve your issue.
I am in the same situation you were in and downloaded the drivers and installed them from the DMG, but when i run the programm and click the install button nothing happens:

I wanted to ask if the installer might be broken for me and if i should see anything after clicking Install

In the folder with the DMG and PKG is also an instrucitons.pdf that contains some interesting additional information. After some instructions for installing there are some steps for validation:

When plug the USB-to-SERIAL device into the USB port, you can open “SystemReport”->Hardware->USB, the right side is “USB Device Tree” and you will find a device whose “Vendor ID” is [0x1a86] if USB device is working properly.

I can indeed see the USB device with vendor ID 0x1a86. But the next step -

Open “Terminal” program under Applications-Utilities folder and type the command “ls /dev/tty*”. You should see the “tty.wchusbserialx” where “x” is the assigned device number similar to Windows COM port assignment.

fails for me. I cannot see any wchusbserial port.

Does someone know what might be the issue here?

This ended up working for me! (I’m using a Waveshare ESP32S3 Board with a 1.28 Touch LCD - the link to their wiki is here on an M1 MacBook Pro and using the Arduino IDE)). I got it to recognize the board exactly once and then upload my code. I changed it a bit and now it’s not communicating any more, so I’m troubleshooting that, BUT I got the driver installed. Also, I tend to give more info than not enough in the hopes it helps someone who doesn’t know what they’re doing (cause I’m totally in the same boat lol) so forgive me if I share more than needed.

Driver installation:

First, make sure you can use System Extensions and third party drivers. (You can do that in Recovery Mode under Startup Security Utility).

Next, you’ll open terminal and use it to copy the .dext file to the extensions directory.

  • After downloading the driver, mount the .dmg and get to the blue icon for the driver installer.

  • Right click the installer icon and select “Show Package Contents”

  • Navigate to “Contents → MacOS → Library → SystemExtensions”. You’ll see the ch.wch.CH34xVCPDriver.dext file there.

  • Change the terminal directory to the above System Extensions folder. Use the “cd” command and drag and drop the “SystemExtensions” folder to the terminal to automatically enter the path. It should look something like:
    bobross@MacBook-Pro ~ % cd /Volumes/CH34xVCPDriver/CH34xVCPDriver.app/Contents/Library/SystemExtensions

  • Hit the enter key and you’ll now be in the correct directory. Terminal should now show:
    bobross@MacBook-Pro SystemExtensions %

Now that you’re in the right directory, run the following command:
sudo cp -r /cn.wch.CH34xVCPDriver.dext/ /Library/DriverExtensions

Now that the file is copied, we need to load the extension using this command:
systemextensionsctl install /Library/DriverExtensions/cn.wch.CH34xVCPDriver.dext

That’ll put it in the right area - like the install was supposed to.

It should prompt you to Approve the System Extension - if it doesn’t, go to System Preferences → General → Login Items & Extensions → Extensions → Driver Extensions" (its ALLLL the way at the bottom of the window). Click on the “i” in the circle. Toggle the switch for the CH34xVCPDriver option. Click Done.

Restart you computer.

Now all you have to do is verify the installation! Run this command in Terminal:
systemextensionsctl list

You’ll get something back that looks like this:
4 extension(s)
--- com.apple.system_extension.driver_extension (Go to 'System Settings > General > Login Items & Extensions > Driver Extensions' to modify these system extension(s))
enabled active teamID bundleID (version) name [state]
5JZGQTGU4W cn.wch.CH34xVCPDriver (1.0/1) cn.wch.CH34xVCPDriver [activated enabled]
52444FG85C com.silabs.cp210x (6.0.2/1) com.silabs.cp210x [activated waiting for user]

If it shows [activated enabled] you’re good! You should see both wchusbserial and usbmodem now when looking at the port list.

1 Like

I was about to give up and get my windows laptop out, thank you for this, really worked a treat.

Im on 15.0.1 of macos and the install never prompted for the activation. With your description I was able to find the extension enable slider in settings and it works

This worked for me. It was the treasure found after a very long quest. Thank you very much!