Hello,
From what you describe, your current setup works fine with Linux as the USB HOST and STM32 as the DEVICE using CDC ECM, allowing Linux and Windows to communicate over Ethernet. However, when you switch roles—making STM32 the HOST and Linux the DEVICE, and try to use the same ECM code, Windows cannot resolve the Linux device’s IP and MAC addresses in the ARP table. This is a common issue related to how Windows handles USB Ethernet protocols.
Windows primarily supports RNDIS, a proprietary Microsoft protocol for Ethernet over USB, and does not natively support ECM devices well. That’s why when your STM32 acts as HOST and Linux as DEVICE using ECM, Windows struggles with ARP resolution. but keep in mind that memory-limited MCUs cannot support these protocols properly.
To summarize:
- RNDIS is widely supported on Windows and is the preferred protocol for USB Ethernet communication on that platform.
- ECM is a standard protocol used mainly on non-Windows systems like Linux and macOS, offering good cross-platform compatibility.
- Windows does not promote ECM and expects RNDIS devices instead.
- Your STM32 HOST scenario with Linux DEVICE using ECM will face issues on Windows due to this protocol mismatch.
- Also, ensure your STM32 MCU has enough memory to handle the USB Ethernet protocol you want to implement.
If possible, try configuring the Linux device to use RNDIS when connected to Windows. This should help resolve the ARP and connectivity issues you’re facing.
Best regards,
To improve visibility of answered topics, please click 'Accept as Solution' on the reply that resolved your issue or answered your question.