CoreS3 read data via usb_uart
-
Hello. I’m trying to read data via usb_uart on an M5Stack CoreS3 from a CDC-ACM device, without success.
Here some config entries.
I moved the logger to a different interface. I have no idea whether this is necessary, but this way it definitely doesn’t occupy the USB interface.logger: baud_rate: 0 hardware_uart: UART0 level: VERBOSE initial_level: DEBUG logs: usb_uart: VERBOSE usb_host: VERBOSE uart_debug: VERBOSEOutputs
output: - platform: axp2101 type: range channel: DLDO1 id: lcd_backlight_output min_voltage: 2600 max_voltage: 3300 - platform: axp2101 channel: ALDO1 voltage: 1800 - platform: axp2101 channel: ALDO2 voltage: 3300 - platform: axp2101 channel: BLDO1 voltage: 2800 - platform: axp2101 channel: BLDO2 voltage: 1500Then I set these switches:
switch: - platform: gpio name: "bus_out_en_sw" internal: true pin: aw9523b: aw9523b_hub number: 1 restore_mode: ALWAYS_ON - platform: gpio name: "usb_otg_en_sw" internal: true pin: aw9523b: aw9523b_hub number: 5 restore_mode: ALWAYS_ON - platform: gpio name: "boost_en_sw" internal: true pin: aw9523b: aw9523b_hub number: 15 restore_mode: ALWAYS_ON - platform: gpio name: "AW RST P0_2" internal: true pin: aw9523b: aw9523b_hub number: 2 restore_mode: ALWAYS_ONAnd configure the
usb_uartusb_uart: - type: cdc_acm id: scanner_bus vid: 0x152A pid: 0x880F channels: - id: uch_1 debug: trueThe device is a barcode scanner Digitus DA-8002
DC 3.3 - 5V, 120 mA, idle 1uA
The scanner is set as "USB serial interface output".
Adapter USB-C to USB-A Greencell 2.4A 480 Mbps
Power supply CoreS3: Yingjiao YS35V-1203000, 12V, 3A, 36W
Baudrate scanner: 9600
The scanner is powered. When I plug it in, it beeps, and it also beeps when I scan.
It has a USB-A interface, and I’m using a USB-C to USB-A OTG adapter.
The scanner works without any problem with this exact adapter on a Windows PC and on an Android smartphone.
This is the log when I plug in the scanner.[18:14:15.614][D][usb_host:265]: Open device 1 [18:14:15.615][D][usb_host:272]: Get descriptor device 1 [18:14:15.615][D][usb_host:279]: Device descriptor: vid 152A pid 880F [18:14:15.616][D][usb_host:289]: Device connected: Manuf: MINJCODE; Prod: MINJCODE MJ2818A; Serial: 00000000050C [18:14:15.618][V][usb_host:089]: *** Device descriptor *** [18:14:15.618]bLength 18 [18:14:15.618]bDescriptorType 1 [18:14:15.618]bcdUSB 1.10 [18:14:15.618]bDeviceClass 0x2 [18:14:15.618]bDeviceSubClass 0x0 [18:14:15.618]bDeviceProtocol 0x0 [18:14:15.618]bMaxPacketSize0 64 [18:14:15.618]idVendor 0x152a [18:14:15.618]idProduct 0x880f [18:14:15.618]bcdDevice 1.00 [18:14:15.618]iManufacturer 1 [18:14:15.618]iProduct 2 [18:14:15.618]iSerialNumber 3 [18:14:15.618]bNumConfigurations 1 [18:14:15.627][V][usb_host:070]: *** Configuration descriptor *** [18:14:15.627]bLength 9 [18:14:15.627]bDescriptorType 2 [18:14:15.627]wTotalLength 67 [18:14:15.627]bNumInterfaces 2 [18:14:15.627]bConfigurationValue 1 [18:14:15.627]iConfiguration 0 [18:14:15.627]bmAttributes 0x80 [18:14:15.627]bMaxPower 500mA [18:14:15.652][V][usb_host:056]: *** Interface descriptor *** [18:14:15.652][V][usb_host:056]: bLength 9 [18:14:15.652][V][usb_host:056]: bDescriptorType 4 [18:14:15.652][V][usb_host:056]: bInterfaceNumber 0 [18:14:15.652][V][usb_host:056]: bAlternateSetting 0 [18:14:15.652][V][usb_host:056]: bNumEndpoints 1 [18:14:15.652][V][usb_host:056]: bInterfaceClass 0x2 [18:14:15.652][V][usb_host:056]: iInterface 0 [18:14:15.669][V][usb_host:042]: *** Endpoint descriptor *** [18:14:15.669][V][usb_host:042]: bLength 7 [18:14:15.669][V][usb_host:042]: bDescriptorType 5 [18:14:15.669][V][usb_host:042]: bEndpointAddress 0x82 EP 2 IN [18:14:15.669][V][usb_host:042]: bmAttributes 0x3 INT [18:14:15.669][V][usb_host:042]: wMaxPacketSize 8 [18:14:15.669][V][usb_host:042]: bInterval 10 [18:14:15.679][V][usb_host:056]: *** Interface descriptor *** [18:14:15.679][V][usb_host:056]: bLength 9 [18:14:15.679][V][usb_host:056]: bDescriptorType 4 [18:14:15.679][V][usb_host:056]: bInterfaceNumber 1 [18:14:15.679][V][usb_host:056]: bAlternateSetting 0 [18:14:15.679][V][usb_host:056]: bNumEndpoints 2 [18:14:15.679][V][usb_host:056]: bInterfaceClass 0xa [18:14:15.679][V][usb_host:056]: iInterface 0 [18:14:15.692][V][usb_host:042]: *** Endpoint descriptor *** [18:14:15.692][V][usb_host:042]: bLength 7 [18:14:15.692][V][usb_host:042]: bDescriptorType 5 [18:14:15.692][V][usb_host:042]: bEndpointAddress 0x1 EP 1 OUT [18:14:15.692][V][usb_host:042]: bmAttributes 0x2 BULK [18:14:15.692][V][usb_host:042]: wMaxPacketSize 64 [18:14:15.692][V][usb_host:042]: bInterval 0 [18:14:15.699][V][usb_host:042]: *** Endpoint descriptor *** [18:14:15.699][V][usb_host:042]: bLength 7 [18:14:15.699][V][usb_host:042]: bDescriptorType 5 [18:14:15.699][V][usb_host:042]: bEndpointAddress 0x81 EP 1 IN [18:14:15.699][V][usb_host:042]: bmAttributes 0x2 BULK [18:14:15.699][V][usb_host:042]: wMaxPacketSize 64 [18:14:15.699][V][usb_host:042]: bInterval 0 [18:14:15.719][D][usb_host:304]: Call on_connected [18:14:15.721][D][usb_uart:331]: device connected [18:14:15.730][D][usb_uart:031]: intf_desc: bInterfaceClass=02, bInterfaceSubClass=02, bInterfaceProtocol=01, bNumEndpoints=1 [18:14:15.740][D][usb_uart:041]: ep: bEndpointAddress=82, bmAttributes=03 [18:14:15.750][D][usb_uart:031]: intf_desc: bInterfaceClass=0A, bInterfaceSubClass=00, bInterfaceProtocol=00, bNumEndpoints=2 [18:14:15.760][D][usb_uart:041]: ep: bEndpointAddress=01, bmAttributes=02 [18:14:15.771][D][usb_uart:041]: ep: bEndpointAddress=81, bmAttributes=02 [18:14:15.771][V][usb_uart:081]: Found CDC-ACM device [18:14:15.781][D][usb_uart:338]: Found 1 CDC-ACM devices [18:14:15.783][D][usb_uart:390]: enter enable_channels [18:14:15.791][D][usb_uart:398]: start_input for channel [18:14:15.793][D][usb_uart:278]: call transfer_in epAddress: 0x81, MaxPacketSize: 64 [18:14:15.802][D][usb_uart:283]: transfer_in returns true [18:14:15.802][W][component:547]: usb_host took a long time for an operation (189 ms) [18:14:15.812][W][component:550]: Components should block for at most 30 ms [18:14:15.826][D][usb_host:174][usb_task]: New device 1As it looks, the transfer is submitted with usb_host_transfer_submit. There are absolutely no error messages and everything looks correct. The callback is just never called—no matter what, how much, or how fast I scan.
What did I forget? Is this even possible at all?