Hi,
I'm developing a product around an ESP32-S3 module (WROOM) that registers 2 USB CDC Ports on the attached Windows computer (industrial application, the device will always be plugged into a Windows computer).
For the sake of easily configuring software on the Windows machine, I'd like the board to make the first USB-Port visible (ie COM6), then after a configurable delay register the 2nd CDC Port (which might be called COM5, or even COM7). From what I've tried, (ESP-SDK 5.2) it appears that TinyUSB notifies windows of the existence of both CDC ports when the S3 starts the USB stack with `tinyusb_driver_install()`, before I even call `tusb_cdc_acm_init()`.
I've found that I can't rely on the lower-number COM port to be the first or second CDC instance - they appear swap randomly between eachother, or even get new COM numbers.
If I delay my call to `tusb_cdc_acm_init()`, windows can still see and open the 2 ports, but the S3 logs that its not yet read/writable until `tusb_cdc_acm_init()` has been called.
Is there a solution that will allow the devices to appear 1 before the other in device manager, so that Its just a case of knowing 'the first COM port that appears is CDC_ACM_0, and then 3s/5s/10s later when the next COM port appears, you know its CDC_ACM_1?
Any help would be greatly appreciated.
Thanks,
Hayden
ESP32-S3 Delay Enumeration of 2nd USB CDC Port
-
- Posts: 9764
- Joined: Thu Nov 26, 2015 4:08 am
Re: ESP32-S3 Delay Enumeration of 2nd USB CDC Port
Not sure if that's possible. The configuration of an USB device is a single structure that is read when the device is plugged in (which in your case tells Windows that the device has two serial ports). There's no way to 'add' a second serial port later except by forcing a disconnect and reconnect, and at that moment the entire configuration gets read in again and you still won't know which port comes first.
Re: ESP32-S3 Delay Enumeration of 2nd USB CDC Port
I hadn't considered that process, but with what you've described I may be out of luck.
I guess this question is more Windows specific / less ESP32, but do you have any suggestions on how the 2 ports could be differentiated.
Is it possible (though probably not advisable) for one CDC descriptor to be changed so that it lists as a CP2102N or WCH340 style COM port (which windows gives different names)? Or are these descriptors specific to the entire device, rather than CDC port specific?
I guess this question is more Windows specific / less ESP32, but do you have any suggestions on how the 2 ports could be differentiated.
Is it possible (though probably not advisable) for one CDC descriptor to be changed so that it lists as a CP2102N or WCH340 style COM port (which windows gives different names)? Or are these descriptors specific to the entire device, rather than CDC port specific?
- Attachments
-
- ComPorts.png (5.29 KiB) Viewed 696 times
-
- Posts: 9764
- Joined: Thu Nov 26, 2015 4:08 am
Re: ESP32-S3 Delay Enumeration of 2nd USB CDC Port
Sorry, I don't know what influences the naming of these ports in Windows.
Who is online
Users browsing this forum: Bing [Bot] and 93 guests