Page 1 of 1

ESP32-S3 native USB does not work

Posted: Thu Aug 17, 2023 6:21 am
by jessevdz
I get code 43 usb device descriptor failed when I plug in my custom ESP32-S3 board.
Native USB does work on a esp32-s3-devkitc-1, so I transplanted the module to my custom board.
Now the custom board still does not work, but the devkit does, indicating a hardware issue.
It seems so simple: IO19 as D-, IO20 as D+. 3V3 is present via an LDO from the 5V usb power.
Uploading via UART is possible. Layout snippet is attached. Swapping D-/D+ does not work.
Are there strapping pins somehow related to this issue that I am unaware of?
esp_routing.png
esp_routing.png (275.75 KiB) Viewed 1336 times

Re: ESP32-S3 native USB does not work

Posted: Thu Aug 17, 2023 7:21 am
by ESP_Sprite
Nope, conceptually I can't see anything you may have done wrong. Can you post more info, e.g. your schematic?

Re: ESP32-S3 native USB does not work

Posted: Tue Aug 22, 2023 9:02 am
by RandomInternetGuy
Aren't there fuses involved in this process? Once you've blown them to, say, work with booting from UF2/DFU, native USB goes away, I think.

Just as something additional to check, have you perhaps reprogrammed the E-fuses?

As a sanity check, my ESP-32S3 board is returning mostly 0's except for the things I'd expect to be non-zero from the factory.

Code: Select all

✗ espefuse.py --port $PLATFORMIO_UPLOAD_PORT  dump

espefuse.py v4.6.2
Connecting....
Detecting chip type... ESP32-S3
BLOCK0          (                ) [0 ] read_regs: 00000000 00000000 0000d1f5 00000000 00000100 00000000
MAC_SPI_8M_0    (BLOCK1          ) [1 ] read_regs: [ CENSORED ]
BLOCK_SYS_DATA  (BLOCK2          ) [2 ] read_regs: [ CENSORED ]
BLOCK_USR_DATA  (BLOCK3          ) [3 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_KEY0      (BLOCK4          ) [4 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_KEY1      (BLOCK5          ) [5 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_KEY2      (BLOCK6          ) [6 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_KEY3      (BLOCK7          ) [7 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_KEY4      (BLOCK8          ) [8 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_KEY5      (BLOCK9          ) [9 ] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
BLOCK_SYS_DATA2 (BLOCK10         ) [10] read_regs: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

BLOCK0          (                ) [0 ] err__regs: 00000000 00000000 00000000 00000000 00000000 00000000
EFUSE_RD_RS_ERR0_REG        0x00000000
EFUSE_RD_RS_ERR1_REG        0x00000000