Hi Realtek team,
I am developing a 4G dashcam using AMB82-Mini ( RTL8735B) with a Quectel EC200U-CN 4G modem ( Quectel EC200U 4G Modem - CAPUF ). The modem is configured for USB CDC ECM mode via AT+QCFG=“usbnet”,1. UART AT commands work perfectly, the modem registers on the network, and gets an IP address. However, USB Host CDC ECM enumeration always fails with ecm init fail.
Hardware Setup
-
Board: AMB82-Mini EVB (Rev 2V0)
-
Modem: Quectel EC200U-CN
-
SDK: ameba-rtos-pro2 (FreeRTOS SDK, GCC build)
-
USB connection: EC200U USB header pins (5/P/M/G) → AMB82-Mini CON9 (USB Host port)
-
Pin P (USB D+) → CON9 D+ → R60 (33Ω) → USB_HSDP (module pin 85 as per schematic)
-
Pin M (USB D-) → CON9 D- → R61 (33Ω) → USB_HSDM (module pin 86 as per schematic)
-
Pin G (GND) → CON9 GND
-
Pin 5 (VBUS) → CON9 VBUS (5V confirmed with multimeter)
-
-
Debug serial: CON8 (CH340 debug port) — separate from USB Host
-
UART AT commands: PA_2 (TX) → EC200U RX, PA_3 (RX) → EC200U TX — working
What Works
-
UART AT commands: all working (AT+CPIN? → READY, AT+CREG? → registered, AT+CGPADDR → IP assigned)
-
Modem USB ECM mode confirmed: AT+QCFG=“usbnet” returns +QCFG: “usbnet”,1
-
Modem registered on Airtel 5G LTE (Band 40), signal CSQ 23
-
PDP context active, IP assigned
-
VBUS 5V verified at CON9 and at EC200U USB header pin
-
Tried both D+/D- orientations
What Fails
USB Host ECM enumeration fails every time. Serial log:
[ECM] USB host ECM demo started…
usb otg mode 1
USB_Init
[4G] Waiting for DHCP… (28)
[4G] Waiting for DHCP… (27)
…
ecm init fail
The bulk_task already deinit
The intr_task already deinit
USB_DeInit
ecm deinit ok
ecm_status 2
The USB host controller initializes (usb otg mode 1, USB_Init) but usbh_cdc_ecm_on() returns false — no USB device is detected on the bus.
Code Reference
I am calling ethernet_usb_init() from component/ethernet_mii/ethernet_usb.c (line 593), which creates the usbh_ecm_thread. Inside that thread, ecm_on() (line 290) calls usbh_cdc_ecm_on(), which fails.
My initialization code is as following:
/* In modem_task — called after modem AT init completes */
ethernet_usb_init();
/* Wait for DHCP */
int dhcp_timeout = 30;
while (ecm_lwip_dhcp_status() != 4 && dhcp_timeout-- > 0) {
***printf("\[4G\] Waiting for DHCP... (%d)\\r\\n", dhcp_timeout);***
***vTaskDelay(1000 / portTICK_PERIOD_MS);***
}
Build configuration in video_example_media_framework.cmake:
CONFIG_USBH_CDC_ECM=1
platform_opts.h:
#define CONFIG_ETHERNET 1
#define MII_INTERFACE 0
#define USB_INTERFACE 1
#define ETHERNET_INTERFACE USB_INTERFACE
What I’ve Verified
-
Schematic confirmed: CON9 D+/D- route to USB_HSDP (pin 85) / USB_HSDM (pin 86) via 33Ω series resistors (R60/R61)
-
CON8 is separate: Debug USB goes to CH340C (U9), not RTL8735B USB OTG
-
VBUS detected by modem: USB PWR LED turned on in EC200U module when VBUS connected
-
Tried with retries: Added 3 retry attempts with ethernet_usb_deinit() between each — same result
-
Tried longer delays: Waited up to 15 seconds before calling ethernet_usb_init() — same result
Questions
-
Has USB Host CDC ECM been tested with any device other than RTL8152B USB Ethernet dongle?
-
Does usbh_cdc_ecm_on() in libusbd.a filter by USB VID/PID?
-
Is there a way to enable verbose USB host debug logging to see if the host detects any electrical activity on D+/D-?
-
Is there a known issue with USB Host enumeration on AMB82-Mini EVB ?
-
Would it be possible to get source code for usbh_cdc_ecm_on() (currently in precompiled library form) so we can debug the enumeration failure?
Environment
-
SDK: ameba-rtos-pro2
-
Board: AMB82-Mini EVB 2V0
-
OS: Windows11
Warm Regards,
Pradeep