Skip to content

Inquiry regarding DIY Thread Border Router: ESP32-H2 SuperMini (USB-CDC) Timeout Issue #5

@ephesuss

Description

@ephesuss

First of all, thank you for the excellent DIY Thread Border Router guide and the pre-built binaries you’ve shared on GitHub. It’s a great resource for the community!

I am currently trying to set up the border router using a Raspberry Pi 5 (OpenMediaVault/Docker) and an ESP32-H2 SuperMini. However, I’ve hit a roadblock with the ot-agent and I was hoping you might be able to point me in the right direction.

The Issue: The container fails to initialize the RCP, repeatedly throwing a Wait for response timeout error.

Technical Details:

Hardware: ESP32-H2 SuperMini (This board has only one USB port, which maps to the internal USB-Serial/JTAG controller).
Host: Raspberry Pi 5.
Mapping: The device is correctly identified as /dev/ttyACM0 (usb-Espressif_USB_JTAG_serial_debug_unit).
Software: I flashed the ot_rcp.bin, bootloader.bin, and partition-table.bin files provided in your repository.

My Analysis: It seems that the pre-built binaries might be configured for UART communication (GPIO 23/24), which is standard for dual-port DevKits. Since the SuperMini relies on the internal USB-JTAG/CDC for communication over its single port, I suspect the RCP is "listening" on the UART pins instead of the USB-CDC interface.

My Question: Do you happen to have a version of the ot_rcp.bin (or a merged file) that is specifically compiled with USB-CDC (Native USB) support enabled (CONFIG_OPENTHREAD_RCP_USB_INTERFACE=y)? Or could you provide guidance on any specific flags I should use to compile it for this single-port hardware?

I noticed that in the official Espressif ot_rcp example, there is a specific configuration file named sdkconfig.ci.rcp_usb with the commit message 'support rcp based on USB Serial JTAG'.
(https://github.com/espressif/esp-idf/tree/master/examples/openthread/ot_rcp)

Since my ESP32-H2 SuperMini uses the internal USB Serial JTAG for its only port, could you please try building the ot_rcp.bin using this rcp_usb configuration instead of the default UART one? This should allow the Spinel protocol to communicate over the native USB port I'm using.

A bit of context: I’m quite an amateur and don't have a background in coding. I’m actually trying to build this project with the help of AI (Gemini). While it’s a bit of a steep learning curve, I'm really excited about getting this Border Router up and running. Your guidance would mean a lot to someone just starting out!

I would really appreciate any help or advice you can provide to get this SuperMini working with your setup.

Best regards,

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions