I’ve spent days getting a minimal FreeRTOS application running on the Pico W and printing “FreeRTOS is running!” over USB, but despite the code building and flashing cleanly, Linux never creates the /dev/ttyACM0 port. I verified the hardware and cable by successfully building and running TinyUSB’s CDC dual-ports example (which did enumerate correctly), so I know the Pico and host can do CDC-ACM. In my own app I created a FreeRTOS USB task that calls tud_task() every 10 ms, called tusb_init() (or tud_init(NULL)) after stdio_init_all(), and even added a custom tusb_config.h with CFG_TUD_CDC, buffer sizes, endpoint settings, and ensured the include paths in CMake picked it up. I also tried forcing compile definitions and adjusting the CMake include order. Yet when I plug the Pico in normal (non-BOOTSEL) mode I only see “new full-speed USB device” in dmesg and no cdc_acm … ttyACM0 binding. I've chased port assembly, config headers, SDK vs. raw TinyUSB stacks, buffer macros, and initialization order—all to no success . Any insight into why the cdc class refuses to enumerate in my freertos build would be greatly appreciated 🙌
I can provide any of the files that you might want to see to better help