Skip to content

Connected Low-speed device, not supported (IDFGH-14984) #15683

@alex-k8

Description

@alex-k8

Answers checklist.

  • I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.

v5.4.0

Espressif SoC revision.

ESP32-S3

Operating System used.

Windows

How did you build your project?

VS Code IDE

If you are using Windows, please specify command line type.

PowerShell

Development Kit.

Custom Board

Power Supply used.

USB

What is the expected behavior?

I expect the enumeration of the device to be correct so I can communicate with the connected keyboard

What is the actual behavior?

The enumeration does not happen and I get an error

Steps to reproduce.

  1. Build and upload the HID Host or the USB Host Lib Example code (must have HUB support turned on, as this keyboard has a HUB internally)
  2. Connect the Apple A1243 MB110LL/A Wired Aluminum Keyboard
  3. Check the logs

Debug Logs.

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce2820,len:0x15d0
load:0x403c8700,len:0xd20
load:0x403cb700,len:0x2f60
entry 0x403c8924
I (21) boot: ESP-IDF v5.5-dev-1942-g1160a86ba0 2nd stage bootloader
I (22) boot: compile time Feb 24 2025 01:01:29
I (22) boot: Multicore bootloader
I (24) boot: chip revision: v0.2
I (26) boot: efuse block revision: v1.3
I (30) boot.esp32s3: Boot SPI Speed : 80MHz
I (34) boot.esp32s3: SPI Mode       : DIO
I (37) boot.esp32s3: SPI Flash Size : 2MB
I (41) boot: Enabling RNG early entropy source...
I (46) boot: Partition Table:
I (48) boot: ## Label            Usage          Type ST Offset   Length
I (55) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (61) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (68) boot:  2 factory          factory app      00 00 00010000 00100000
I (74) boot: End of partition table
I (78) esp_image: segment 0: paddr=00010020 vaddr=3c030020 size=0e2ech ( 58092) map
I (95) esp_image: segment 1: paddr=0001e314 vaddr=3fc92800 size=01d04h (  7428) load
I (97) esp_image: segment 2: paddr=00020020 vaddr=42000020 size=22050h (139344) map
I (124) esp_image: segment 3: paddr=00042078 vaddr=3fc94504 size=00c2ch (  3116) load
I (125) esp_image: segment 4: paddr=00042cac vaddr=40374000 size=0e738h ( 59192) load
I (141) esp_image: segment 5: paddr=000513ec vaddr=600fe000 size=0001ch (    28) load
I (147) boot: Loaded app from partition at offset 0x10000
I (147) boot: Disabling RNG early entropy source...
�[0;32mI (159) cpu_start: Multicore app�[0m
�[0;32mI (168) cpu_start: Pro cpu start user code�[0m
�[0;32mI (168) cpu_start: cpu freq: 160000000 Hz�[0m
�[0;32mI (168) app_init: Application information:�[0m
�[0;32mI (171) app_init: Project name:     hid�[0m
�[0;32mI (175) app_init: App version:      1�[0m
�[0;32mI (180) app_init: Compile time:     Feb 24 2025 01:07:48�[0m
�[0;32mI (186) app_init: ELF file SHA256:  0e936220f...�[0m
�[0;32mI (191) app_init: ESP-IDF:          v5.5-dev-1942-g1160a86ba0�[0m
�[0;32mI (197) efuse_init: Min chip rev:     v0.0�[0m
�[0;32mI (202) efuse_init: Max chip rev:     v0.99 �[0m
�[0;32mI (207) efuse_init: Chip rev:         v0.2�[0m
�[0;32mI (212) heap_init: Initializing. RAM available for dynamic allocation:�[0m
�[0;32mI (219) heap_init: At 3FC959B0 len 00053D60 (335 KiB): RAM�[0m
�[0;32mI (225) heap_init: At 3FCE9710 len 00005724 (21 KiB): RAM�[0m
�[0;32mI (231) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM�[0m
�[0;32mI (238) heap_init: At 600FE01C len 00001FCC (7 KiB): RTCRAM�[0m
�[0;32mI (245) spi_flash: detected chip: generic�[0m
�[0;32mI (248) spi_flash: flash io: dio�[0m
�[0;33mW (252) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.�[0m
�[0;32mI (266) sleep_gpio: Configure to isolate all GPIO pins in sleep state�[0m
�[0;32mI (273) sleep_gpio: Enable automatic switching of GPIO sleep configuration�[0m
�[0;32mI (281) main_task: Started on CPU0�[0m
�[0;32mI (291) main_task: Calling app_main()�[0m
�[0;32mI (291) example: HID Host example�[0m
�[0;32mI (291) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2 �[0m
�[0;32mI (301) gpio: GPIO[13]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 �[0m
�[0;32mI (341) example: Waiting for HID Device to be connected�[0m
�[0;33mW (1261) hid-host: No HID device at USB port 1�[0m
�[0;31mE (1491) HUB: Connected Low-speed device, not supported�[0m
�[0;31mE (1491) EXT_PORT: [1:2] Port disabled, reset attempts=1�[0m
�[0;33mW (1491) HUB: Device tree node (parent_port=2): not found�[0m
ESP-ROM:esp32s3-20210327
Build:�[0;33mW (2011) example: To shutdown example, remove all USB devices and press button again.�[0m
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x2b (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce2820,len:0x15d0
load:0x403c8700,len:0xd20
load:0x403cb700,len:0x2f60
entry 0x403c8924
I (21) boot: ESP-IDF v5.5-dev-1942-g1160a86ba0 2nd stage bootloader
I (22) boot: compile time Feb 24 2025 01:01:29
I (22) boot: Multicore bootloader
I (24) boot: chip revision: v0.2
I (26) boot: efuse block revision: v1.3
I (30) boot.esp32s3: Boot SPI Speed : 80MHz
I (34) boot.esp32s3: SPI Mode       : DIO
I (37) boot.esp32s3: SPI Flash Size : 2MB
I (41) boot: Enabling RNG early entropy source...
I (46) boot: Partition Table:
I (48) boot: ## Label            Usage          Type ST Offset   Length
I (55) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (61) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (68) boot:  2 factory          factory app      00 00 00010000 00100000
I (74) boot: End of partition table
I (78) esp_image: segment 0: paddr=00010020 vaddr=3c030020 size=0e2ech ( 58092) map
I (95) esp_image: segment 1: paddr=0001e314 vaddr=3fc92800 size=01d04h (  7428) load
I (97) esp_image: segment 2: paddr=00020020 vaddr=42000020 size=22050h (139344) map
I (124) esp_image: segment 3: paddr=00042078 vaddr=3fc94504 size=00c2ch (  3116) load
I (125) esp_image: segment 4: paddr=00042cac vaddr=40374000 size=0e738h ( 59192) load
I (141) esp_image: segment 5: paddr=000513ec vaddr=600fe000 size=0001ch (    28) load
I (147) boot: Loaded app from partition at offset 0x10000
I (147) boot: Disabling RNG early entropy source...
�[0;32mI (159) cpu_start: Multicore app�[0m
�[0;32mI (168) cpu_start: Pro cpu start user code�[0m
�[0;32mI (168) cpu_start: cpu freq: 160000000 Hz�[0m
�[0;32mI (168) app_init: Application information:�[0m
�[0;32mI (171) app_init: Project name:     hid�[0m
�[0;32mI (175) app_init: App version:      1�[0m
�[0;32mI (180) app_init: Compile time:     Feb 24 2025 01:07:48�[0m
�[0;32mI (186) app_init: ELF file SHA256:  0e936220f...�[0m
�[0;32mI (191) app_init: ESP-IDF:          v5.5-dev-1942-g1160a86ba0�[0m
�[0;32mI (197) efuse_init: Min chip rev:     v0.0�[0m
�[0;32mI (202) efuse_init: Max chip rev:     v0.99 �[0m
�[0;32mI (207) efuse_init: Chip rev:         v0.2�[0m
�[0;32mI (212) heap_init: Initializing. RAM available for dynamic allocation:�[0m
�[0;32mI (219) heap_init: At 3FC959B0 len 00053D60 (335 KiB): RAM�[0m
�[0;32mI (225) heap_init: At 3FCE9710 len 00005724 (21 KiB): RAM�[0m
�[0;32mI (231) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM�[0m
�[0;32mI (238) heap_init: At 600FE01C len 00001FCC (7 KiB): RTCRAM�[0m
�[0;32mI (245) spi_flash: detected chip: generic�[0m
�[0;32mI (248) spi_flash: flash io: dio�[0m
�[0;33mW (252) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.�[0m
�[0;32mI (266) sleep_gpio: Configure to isolate all GPIO pins in sleep state�[0m
�[0;32mI (273) sleep_gpio: Enable automatic switching of GPIO sleep configuration�[0m
�[0;32mI (281) main_task: Started on CPU0�[0m
�[0;32mI (291) main_task: Calling app_main()�[0m
�[0;32mI (291) example: HID Host example�[0m
�[0;32mI (291) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:2 �[0m
�[0;32mI (301) gpio: GPIO[13]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 �[0m
�[0;32mI (341) example: Waiting for HID Device to be connected�[0m
�[0;33mW (1261) hid-host: No HID device at USB port 1�[0m
�[0;31mE (1491) HUB: Connected Low-speed device, not supported�[0m
�[0;31mE (1491) EXT_PORT: [1:2] Port disabled, reset attempts=1�[0m
�[0;33mW (1491) HUB: Device tree node (parent_port=2): not found�[0m

Diagnostic report archive.

No response

More Information.

I'm using the ESP32-S3 on a custom board with the USB Host capabilities. It generally works with most keyboards, and recently I've been trying to make it work with HUBs as well. It seems to work properly in most devices, but on the Apple Aluminum Wired Keyboard it does not work. The keyboard internally has a HUB, and I assume the actual keyboard is connected to the first slot of the hub. I've tried with other HUB keyboards and they worked.

On the Apple keyboard I get the logs that were shared above Connected Low-speed device, not supported. Is it just not supported? Any menuconfig settings I can try? Thank you!

On the usb host lib firmware I get the below if it helps

�[0;32mI (1611) CLASS: Registering Client�[0m
D (2491) HUB: Root port reset�[0m
D (2491) HUB: Device tree node (uid=1): new�[0m
D (2491) ENUM: [0:0] Start processing, device address 0�[0m
D (2491) ENUM: [0:0] GET_SHORT_DEV_DESC OK�[0m
D (2491) USBH: Processing actions 0x4�[0m
D (2491) USBH: Default pipe device 0�[0m
V (2501) ENUM: 0x3fceb324   80 06 00 01 00 00 08 00  12 01 00 02 09 00 00 40  |...............@|�[0m
D (2511) ENUM: [0:0] CHECK_SHORT_DEV_DESC OK�[0m
D (3041) ENUM: [0:0] SECOND_RESET OK�[0m
D (3041) ENUM: [0:0] SECOND_RESET_COMPLETE OK�[0m
D (3041) ENUM: [0:0] SET_ADDR OK�[0m
D (3041) USBH: Processing actions 0x4�[0m
D (3041) USBH: Default pipe device 0�[0m
V (3041) ENUM: 0x3fceb324   00 05 01 00 00 00 00 00                           |........|�[0m
D (3051) ENUM: Assign address (dev_addr=1)�[0m
D (3061) ENUM: [0:0] CHECK_ADDR OK�[0m
D (3071) ENUM: [0:0] SET_ADDR_RECOVERY OK�[0m
D (3071) ENUM: [0:0] GET_FULL_DEV_DESC OK�[0m
D (3071) USBH: Processing actions 0x4�[0m
D (3071) USBH: Default pipe device 1�[0m
V (3071) ENUM: 0x3fceb324   80 06 00 01 00 00 12 00  12 01 00 02 09 00 00 40  |...............@|�[0m
V (3081) ENUM: 0x3fceb334   ac 05 06 10 15 96 01 02  03 01                    |..........|�[0m
D (3091) ENUM: [0:0] CHECK_FULL_DEV_DESC OK�[0m
D (3101) ENUM: Selected bConfigurationValue=1�[0m
D (3101) ENUM: [0:0] SELECT_CONFIG OK�[0m
D (3101) ENUM: [0:0] GET_SHORT_CONFIG_DESC OK�[0m
D (3111) USBH: Processing actions 0x4�[0m
D (3111) USBH: Default pipe device 1�[0m
V (3121) ENUM: 0x3fceb324   80 06 00 02 00 00 08 00  09 02 19 00 01 01 00 a0  |................|�[0m
D (3121) ENUM: [0:0] CHECK_SHORT_CONFIG_DESC OK�[0m
D (3131) ENUM: [0:0] GET_FULL_CONFIG_DESC OK�[0m
D (3131) USBH: Processing actions 0x4�[0m
D (3141) USBH: Default pipe device 1�[0m
V (3141) ENUM: 0x3fceb324   80 06 00 02 00 00 19 00  09 02 19 00 01 01 00 a0  |................|�[0m
V (3151) ENUM: 0x3fceb334   28 09 04 00 00 01 09 00  00 00 07 05 81 03 01 00  |(...............|�[0m
V (3161) ENUM: 0x3fceb344   ff                                                |.|�[0m
D (3171) ENUM: [0:0] CHECK_FULL_CONFIG_DESC OK�[0m
D (3171) ENUM: [0:0] GET_SHORT_LANGID_TABLE OK�[0m
D (3171) USBH: Processing actions 0x4�[0m
D (3181) USBH: Default pipe device 1�[0m
V (3181) ENUM: 0x3fceb324   80 06 00 03 00 00 02 00  06 03                    |..........|�[0m
D (3191) ENUM: [0:0] CHECK_SHORT_LANGID_TABLE OK�[0m
D (3201) ENUM: [0:0] GET_FULL_LANGID_TABLE OK�[0m
D (3201) USBH: Processing actions 0x4�[0m
D (3201) USBH: Default pipe device 1�[0m
V (3211) ENUM: 0x3fceb324   80 06 00 03 00 00 06 00  06 03 09 04 04 04        |..............|�[0m
D (3221) ENUM: [0:0] CHECK_FULL_LANGID_TABLE OK�[0m
D (3221) ENUM: [0:0] GET_SHORT_MANU_STR_DESC OK�[0m
D (3221) USBH: Processing actions 0x4�[0m
D (3231) USBH: Default pipe device 1�[0m
V (3231) ENUM: 0x3fceb324   80 06 01 03 09 04 02 00  18 03                    |..........|�[0m
D (3241) ENUM: [0:0] CHECK_SHORT_MANU_STR_DESC OK�[0m
D (3251) ENUM: [0:0] GET_FULL_MANU_STR_DESC OK�[0m
D (3251) USBH: Processing actions 0x4�[0m
D (3251) USBH: Default pipe device 1�[0m
V (3261) ENUM: 0x3fceb324   80 06 01 03 09 04 18 00  18 03 41 00 70 00 70 00  |..........A.p.p.|�[0m
V (3271) ENUM: 0x3fceb334   6c 00 65 00 2c 00 20 00  49 00 6e 00 63 00 2e 00  |l.e.,. .I.n.c...|�[0m
D (3281) ENUM: [0:0] CHECK_FULL_MANU_STR_DESC OK�[0m
D (3281) ENUM: [0:0] GET_SHORT_PROD_STR_DESC OK�[0m
D (3281) USBH: Processing actions 0x4�[0m
D (3291) USBH: Default pipe device 1�[0m
V (3291) ENUM: 0x3fceb324   80 06 02 03 09 04 02 00  1a 03                    |..........|�[0m
D (3301) ENUM: [0:0] CHECK_SHORT_PROD_STR_DESC OK�[0m
D (3301) ENUM: [0:0] GET_FULL_PROD_STR_DESC OK�[0m
D (3311) USBH: Processing actions 0x4�[0m
D (3311) USBH: Default pipe device 1�[0m
V (3321) ENUM: 0x3fceb324   80 06 02 03 09 04 1a 00  1a 03 4b 00 65 00 79 00  |..........K.e.y.|�[0m
V (3331) ENUM: 0x3fceb334   62 00 6f 00 61 00 72 00  64 00 20 00 48 00 75 00  |b.o.a.r.d. .H.u.|�[0m
V (3331) ENUM: 0x3fceb344   62 00                                             |b.|�[0m
D (3341) ENUM: [0:0] CHECK_FULL_PROD_STR_DESC OK�[0m
D (3351) ENUM: [0:0] GET_SHORT_SER_STR_DESC OK�[0m
D (3351) USBH: Processing actions 0x4�[0m
D (3361) USBH: Default pipe device 1�[0m
V (3361) ENUM: 0x3fceb324   80 06 03 03 09 04 02 00  1a 03                    |..........|�[0m
D (3371) ENUM: [0:0] CHECK_SHORT_SER_STR_DESC OK�[0m
D (3371) ENUM: [0:0] GET_FULL_SER_STR_DESC OK�[0m
D (3381) USBH: Processing actions 0x4�[0m
D (3381) USBH: Default pipe device 1�[0m
V (3381) ENUM: 0x3fceb324   80 06 03 03 09 04 1a 00  1a 03 30 00 30 00 30 00  |..........0.0.0.|�[0m
V (3391) ENUM: 0x3fceb334   30 00 30 00 30 00 30 00  30 00 30 00 30 00 30 00  |0.0.0.0.0.0.0.0.|�[0m
V (3401) ENUM: 0x3fceb344   30 00                                             |0.|�[0m
D (3411) ENUM: [0:0] CHECK_FULL_SER_STR_DESC OK�[0m
D (3411) ENUM: [0:0] SET_CONFIG OK�[0m
D (3421) USBH: Processing actions 0x4�[0m
D (3421) USBH: Default pipe device 1�[0m
V (3421) ENUM: 0x3fceb324   00 09 01 00 00 00 00 00                           |........|�[0m
D (3431) ENUM: [0:0] CHECK_CONFIG OK�[0m
D (3441) ENUM: [0:0] Processing complete, new device address 1�[0m
D (3441) ENUM: [0:0] COMPLETE OK�[0m
D (3451) USBH: Processing actions 0x40�[0m
D (3451) USBH: New device 1�[0m
�[0;33mW (3451) HUB: External Hubs support disabled, Hub device was not initialized�[0m
�[0;32mI (3461) CLASS: Opening device at address 1�[0m
�[0;32mI (3461) CLASS: Getting device information�[0m
�[0;32mI (3471) CLASS: 	Full speed�[0m
�[0;32mI (3471) CLASS: 	bConfigurationValue 1�[0m
�[0;32mI (3481) CLASS: Getting device descriptor�[0m
*** Device descriptor ***
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0x9
bDeviceSubClass 0x0
bDeviceProtocol 0x0
bMaxPacketSize0 64
idVendor 0x5ac
idProduct 0x1006
bcdDevice 6.10
iManufacturer 1
iProduct 2
iSerialNumber 3
bNumConfigurations 1
�[0;32mI (3511) CLASS: Getting config descriptor�[0m
*** Configuration descriptor ***
bLength 9
bDescriptorType 2
wTotalLength 25
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
bMaxPower 80mA
	*** Interface descriptor ***
	bLength 9
	bDescriptorType 4
	bInterfaceNumber 0
	bAlternateSetting 0
	bNumEndpoints 1
	bInterfaceClass 0x9
	bInterfaceSubClass 0x0
	bInterfaceProtocol 0x0
	iInterface 0
		*** Endpoint descriptor ***
		bLength 7
		bDescriptorType 5
		bEndpointAddress 0x81	EP 1 IN
		bmAttributes 0x3	INT
		wMaxPacketSize 1
		bInterval 255
�[0;32mI (3561) CLASS: Getting Manufacturer string descriptor�[0m
Apple, Inc.�
�[0;32mI (3561) CLASS: Getting Product string descriptor�[0m
Keyboard Hub
�[0;32mI (3571) CLASS: Getting Serial Number string descriptor�[0m
000000000000

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions