0.17.0
General
- Improved CI: build both cmake and make. Make use of CircleCI for part of build process to speed up CI
- Add CodeQL Workflow for Code Security Analysis
- Add Clang compiler support
- Add default implementation for weak callbacks functions for better Keil compatibility
- Upgrade hardware-in-the-loop (HIL) testing with more boards and examples: including dual stack example
Controller Driver (DCD & HCD)
-
Chipidea
- Support MCXA
-
DWC2
- Fix tickless issue with stm32f7: disable ULPI clock during sleep when using internal phy
- Fix SOF interrupt handling
- Fix fifo level half/empty issue
- Add DWC2 Test Mode support.
- for esp32 force disconnect/connect using USB_WRAP otg pad override
-
FSDEV
-
Rewrite and Generalize driver to support non-stm32 mcu such as wch
-
Simplify PMA, HW FIFO access and bit manipulation for different access scheme 1x16, 2x16 and 32 bit
-
Add support for ch32 usbd e.g ch32v203
-
Add support for STM32G4 and STM32U5 microcontrollers.
-
Fix h5 (32-bit) errata 2.15.1: Buffer description table update completes after CTR interrupt triggers
-
ISO EP buffer allocation improvements, implement dcd_edpt_close_all()
-
Fix ch32v203 race condition and stability issue with
- fix ch32v203 seems to unconditionally accept ZLP on EP0 OUT.
- fix v203 race condition between rx bufsize and RX_STAT which cause PMAOVR, occurs with WRITE10
- correctly handle setup prepare at dcd_edpt0_status_complete(), which fixes the race condition with windows where we could miss setup packet (setup bit set, but count = 0)
-
-
MAX3421E
- Add support for rp2040, esp32 (c3, c6, h2, etc..)
- Add hcd_deinit() for max3421
- Retry NAK handling next frame to reduce CPU and SPI bus usage
- add cpuctl and pinctl to tuh_configure() option for max3421
- Implement hcd abort transfer for Max3421
- Properly Handle NAK Response in MAX3421E driver: correctly switch and skip writing to 2 FIFOs when NAK received. Otherwise, the driver may hang in certain conditions.
-
MSP430: support non-bus-powered
-
MUSB
- Add support for Analoog devices: max32650, max32666, max32690, max3278002
-
nRF
- Fix dcd_edpt_open for iso endpoint
- Handle ISOOUT CRC errors
- Add compile support with old nordic sdk
- Fix a few race conditions
-
OHCI
- Allow more than 16 devices
-
RP2040
- Correctly abort control transfer when new setup arrived. Due to RP2040-E2 only able to fix B2 or later
- Implement hcd abort transfer for rp2040
- Add support for rp2350
-
RUSB2
- Support ra2a1 pipe number scheme
-
WCH CH32
- Added support for USB OTG/FS and FSDev Driver. Update CH32V307 to allow manual select FS or HS driver.
- Fixed various bugs in CH32v307 usbhs driver: endpoint handling and data transfer management.
Device Stack
-
Add tud_deinit() and class driver deinit() to deinitialize TinyUSB device stack.
-
Add support for generic SOF callback.
-
Add set address recovery time 2ms per USB spec.
-
Audio
- Add audio_test_freertos & audio_4_channel_mic_freertos
- Improved support for Audio Class 2.0 (UAC2) with various bug fixes.
- Add feedback by fifo counting.
-
Bluetooth HCI
- Issue ZLP on ACL IN ep when transfer is multiple of endpoint max packet size
-
CDC
- Add tud_cdc_configure_fifo() to make RX/TX buffer persistent (not clear when disconnected)
- Add missing capability bit for CDC ACM serial break support
- Enhanced CDC class with better handling of large data transmissions.
- Add missing capability bit for CDC ACM serial break support
-
HID
- Added missing key codes for keypad
- Added HID Lighting and Illumination functionality
- Fixed issues in the HID class for more reliable device enumeration.
- Support HID Mouse with absolute positioning
- Use separate buffer for control SET_REPORT, fix conflict with interrupt endpoint out
-
MSC: Added support for SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL
-
Net
- Rewrite of NCM device driver to improve throughput
- removed obsolete tud_network_link_state_cb()
-
USBTMC Added notification support
-
Vendor
- Migrate to new endpoint stream API, support non-buffered TX/RX
- Add ZLP for write() when needed
-
Video
- Enhance UVC descriptors and example
- Video Added support for USB Video Class (UVC) with MJPEG.
- Fix multiple interfaces, add an example of 2ch video capture.
- Fix race for tud_video_n_streaming check
Host Stack
-
Added tuh_deinit() to de-initialize TinyUSB host stack.
-
Added support for new USB mass storage class APIs.
-
Improved error handling and retry mechanisms for unstable devices.
-
CDC Serial
- Add support for ch34x
- Allow to overwrite CFG_TUH_CDC_FTDI/CP210X/CH32X_VID_PID_LIST
- Enhanced stability of CDC-ACM devices during enumeration.
-
HID
- Add tuh_hid_receive_abort()
- Add tuh_hid_get_report()
-
Hub
- Prevent status request to invalid ep_num
- Fix double status xfer
- unroll hub removal
What's Changed
- stm32h750-dk support by @antoniovazquezblanco in #2271
- Update hil test for rp2040 on self-hosted PI4 by @hathach in #2355
- made log line end consistent \r\n by @IngHK in #2346
- update esp32 to also be supported by hil test by @hathach in #2356
- Add CodeQL Workflow for Code Security Analysis by @b4yuan in #2351
- Fix strict-overflow warning when compiling with gcc >= 12 by @angmolin in #2366
- Allow external definition of TU_CP210X_PID_LIST by @LarssonOliver in #2296
- Add esp32s3 to hardware in the loop test by @hathach in #2367
- More s3 hil by @hathach in #2369
- add nrf52840 to hard in the loop pool by @hathach in #2371
- fixed compile errors due to untreated CFG_TUH_LOG_LEVEL by @IngHK in #2347
- Add configuration option CFG_TUH_CDC_FTDI_PID_LIST to tusb_option.h by @LarssonOliver in #2368
- add samd51 (itsybitsy_m4) to hardware test loop by @hathach in #2375
- reset pi4 usb bus before checkout/download, so that we could skip delay by @hathach in #2379
- IAR CMake native support by @HiFiPhile in #2376
- Add Support stm32h5 for stm32h573i based on stm32_fsdev G0 implementa… by @Lurcy38 in #2373
- update freertos deps to v11.0.0 by @hathach in #2383
- dcd_nrf5x: Fix dcd_edpt_open for iso endpoint by @kasjer in #2385
- support max3421e for rp2040 by @hathach in #2390
- [CDC] host: moved acm_open to other acm prototypes by @IngHK in #2406
- Disable ULPI clock during sleep on stm32f7 when using internal phy by @leptun in #2408
- [HUB] Prevent status request to invalid ep_num by @Ryzee119 in #2404
- [HUB] Fix double status xfer by @Ryzee119 in #2400
- [cdch] replaced vendor specific bInterfaceClass number by define by @IngHK in #2411
- fixed device/video_capture/src/images.h,main.c CFG_EXAMPLE_VIDEO_DISA… by @YixingShen in #2382
- [STM32 FSDEV] Fix ISR race conditions by @Okarss in #2402
- Fixes #1018 the weak dcd_edpt0_status_complete for Keil Compiler by @XelaRellum in #2239
- change tuh_event_hook_cb, tud_event_hook_cb to weak default implementation by @hathach in #2412
- [OHCI] Allow more than 16 devices by @Ryzee119 in #2401
- change serila host FTDI/CP210X pid list to vid/pid list by @hathach in #2417
- initial support of CH34x CDC device by @IngHK in #2391
- audio_device: Fix unused variable warning by @kasjer in #2422
- Retry hil s3 by @hathach in #2424
- house keeping uvc example by @hathach in #2426
- bump up to actions/setup-python@v5 by @hathach in #2427
- Enhance UVC decriptors and example by @hathach in #2435
- update video_capture by @YixingShen in #2428
- fix of #2437 CDCh tuh_cdc_mounted() returns true before process config is completed by @IngHK in #2438
- fix #2444 and other small things by @IngHK in #2445
- Update vendor_device.c fifo mutex config similar to cdc_device.c. by @mamiral in #2443
- synopsys/dwc2: fix SOF interrupt handling by @gschorcht in #1928
- Fix esp build by @hathach in #2454
- HIDh tuh_hid_mounted() returns true before process set config is completed by @IngHK in #2442
- fixed #2469 compiler warning tusb_fifo.c -> missing default: break; by @IngHK in #2470
- improved hex debug print, improved USBH debug prints, added pid/vid debug print by @IngHK in #2389
- fix wrong volatile usage in ohci gtd by @hathach in #2479
- add clock_config.c/h from mcux to frdmk32l2a4 and frdm_k32l2b by @hathach in #2480
- Fix nRF5340 DK USB host shield build by @xudongzheng in #2481
- nrf5x: Handle ISOOUT CRC errors by @kasjer in #2463
- video_device: fix uninitialized variable warning by @eightycc in #2484
- msc_device: Fix check for including MSC lookup tables by @zx96 in #2420
- slightly change cdc_msc_freertos example by @hathach in #2487
- Added support for the NXP K64 series by @emb4fun in #2168
- fix crytsal-less access on unsupported kinetis mcu by @hathach in #2489
- fixed compiler warning src/tusb.c by @IngHK in #2490
- Add tuh hid abort by @hathach in #2500
- [host] abort all pending transfer when SET_CONFIGURATION is complete by @hathach in #2503
- Minor code format by @hathach in #2516
- work around possible RP2040 erratum by @tlyu in #2492
- use rt-thread 5+ mq recv api by @kaidegit in #2473
- fix: uvc multiple interface support by @lijunru-hub in #2520
- Tweaks for ESP-IDF 5.2.1 by @tannewt in #2527
- Fix uvc hardfault by @hathach in #2526
- Fix the error that occurs when executing make on Windows by @kkitayam in #2533
- Do not enable the Mode mismatch interrupt source, it is not cleared by @cdesjardins in #2472
- add new labeler workflow by @hathach in #2540
- Bug fix for STM32H5 need few cycles for RX PMA descriptor to update by @Lurcy38 in #2515
- Add tuh deinit by @hathach in #2530
- implement hcd_deinit() for max3421 by @hathach in #2542
- use usbreset to reset built-in usb 2.0 hub VIA Labs before each test by @hathach in #2544
- Change labeler token by @hathach in #2547
- Usbh unroll hub removal by @hathach in #2550
- forward declare board_millis for OPT_OS_CUSTOM by @duckylotl in #2549
- Fake unplug devices when a root hub is deinit by @tannewt in #2546
- fix rp2 debug build with level 3 by @hathach in #2557
- dwc2: add endpoint allocation support. by @HiFiPhile in #2333
- fix hid close not clear data by @hathach in #2559
- Follow up to h5 errata 2.15.1 by @hathach in #2560
- MAX3421E NAK retry handling next frame by @IngHK in #2543
- Support for STM32H503 MCU by @wjklimek1 in #2563
- sparkfun_samd21_mini_usb board support by @ChrisDeadman in #2497
- max3421 limit max nak by @hathach in #2565
- correct max nak by @hathach in #2566
- check cfg_param pointer by @hathach in #2568
- UAC2 supports interrupt-endpoint for providing control-change notifications to the host by @battlesnake in #1702
- try catch labeler rest api by @hathach in #2569
- Changes required for new SDK 3.2.0 by @camilaodsouza in #2514
- fix build with rp2040 + max3421 by @hathach in #2571
- Log outbound xfer bytes while in debug by @antoniovazquezblanco in #2421
- Add an example of 2ch video capture. by @kkitayam in #2538
- TinyUSB stack ported to MCXA and MXCN freedom boards. by @jerpa77 in #2466
- add cpuctl and pinctl to tuh_configure() option for max3421 by @hathach in #2577
- ISO endpoint allocation improvments by @HiFiPhile in #2567
- dwc2: remove fifo free code. by @HiFiPhile in #2575
- HID Mouse with absolute positioning by @tobozo in #1363
- Implements deinit functions for host/device mode switch by @ikskuh in #1835
- Fix tud_video_n_streaming check by @HiFiPhile in #2579
- Fixing Renesas register write protection and some compiler warnings in static code analysis by @MatiMcFly in #1580
- more try/catch for labeler by @hathach in #2580
- Fix pointer typo in video_capture_2ch by @HiFiPhile in #2582
- add permission to lable issue/pr by @hathach in #2583
- Dwc2 interrupts (based on #2050) by @hathach in #2584
- Dwc2 interrupts by @electretmike in #2050
- dwc2 set txfifo empty level to complete and change back fifo tx to normal … by @hathach in #2585
- remove the usage of TU_BIT() and TU_GENMASK() from tusb_types.h by @hathach in #2586
- Add tuh_hid_get_report(...) to hid_host.h by @arntsonl in #2223
- Revert PR #2245 by @hathach in #2587
- use pull_request_target for labeler by @hathach in #2591
- dwc2: flush fifo in dcd_edpt_close_all() by @HiFiPhile in #2589
- FSDEV fix/cleanup. by @HiFiPhile in #2574
- FSDEV: Implement dcd_edpt_close_all() by @HiFiPhile in #2592
- Update labeler.yml by @hathach in #2594
- Non-bus-powered MSP430 support. by @clhenry in #2134
- Enhance dcd rusb2, support ra2a1 pipe number scheme by @hathach in #2588
- When clearing an endpoint stall, reset DTOG by @pigrew in #1537
- Check for event queue overflow in usbd / dcd_event_handler by @Erlkoenig90 in #1662
- Add SOF support for ST Synopsys port by @battlesnake in #1685
- dcd_nrf5x: make it compile also with old Nordic SDK by @rgrr in #2263
- fix: memory leak: buf by @slark-yuxj in #2354
- nrf code format by @hathach in #2603
- Add Clang support by @hathach in #2606
- [osal]Add rt-thread script support. by @Rbb666 in #2599
- Some misc fixes by @HiFiPhile in #2607
- Add esp32 max3421e by @hathach in #2611
- Remove redundant header file includes for the hid class by @tyustli in #2609
- hid_device: use separate buffer for SET_REPORT instead of epout by @shuffle2 in #2283
- Update IAR template. by @HiFiPhile in #2612
- HID class driver fixes by @Rocky04 in #2253
- Add audio_test_freertos & audio_4_channel_mic_freertos by @kaspernyhus in #1709
- Add notification support for device class USBTMC by @tommie in #2494
- Update dnserver.c: Match dnserv_free signature with fwd-decl by @maflcko in #2615
- Add missing capability bit for CDC ACM serial break support by @trejan in #2616
- Ci update by @hathach in #2622
- tusb_fifo: skip constant address functions if not used by @HiFiPhile in #2618
- tusb_fifo: split constant address functions by @mndza in #2132
- Rewrite of NCM device driver by @rgrr in #2227
- removed obsolete tud_network_link_state_cb() by @rgrr in #2216
- Add option to make CDC TX buffer persistent. by @andrewleech in #2629
- Added support for SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL by @acscd in #2532
- Add HID Lighting and Illumination functionality by @rsolorzanomsft in #2252
- Add SOF interrupt to CH32V307 by @Xelus22 in #2181
- Rework ci by @hathach in #2631
- Enable empty transfers for tud_vendor_n_write() by @thierer in #911
- Add missing key codes for keypad by @jotonedev in #2633
- use argparse instead of click to fix cifuzz.yml by @hathach in #2635
- Adding support for a generic SOF callback by @Rocky04 in #2213
- Circleci project setup by @hathach in #2637
- More ci tweak by @hathach in #2636
- [osal]add usb host script of RT-Thread to USB HOST. by @Rbb666 in #2639
- more ci update by @hathach in #2642
- Ci tweak3 by @hathach in #2643
- Add DWC2 Test Mode Support by @Rocky04 in #2416
- build arm-clang on circleci with pull request by @hathach in #2644
- Implement Max3421 hcd abort xfer by @hathach in #2646
- dcd_nrf5x: fix race condition by @rgrr in #2626
- Add esp32c2 and esp32h2 for max3421 support by @tannewt in #2648
- Add CH32V20x USB OTG/FS Driver by @dragonlock2 in #2362
- circle ci remove caching to reduce credit usage by @hathach in #2654
- bugfix(ch32-hs-dcd): fix ch32 DATAx managment and long packet transmit by @Krasutski in #2392
- CH32 add support for fsdev (device only) by @hathach in #2659
- [osal]Add usb-device and host macro controls. by @Rbb666 in #2657
- bump up version to 0.17.0 (not release yet) by @hathach in #2661
- Add support for dcd_sof_enable() to some additional ports. by @andrewleech in #2647
- fix xtensa_api.h include by @hathach in #2663
- Add esp c6 devkit board by @hathach in #2668
- Add ch32v103 (not working yet) by @hathach in #2674
- [FSDEV] Simplify toggle bit logic by @Okarss in #2675
- Add support for STM32U535xx/STM32U545xx by @tinic in #2672
- usbh: Set interface recipient should be interface by @Ryzee119 in #2680
- synopsys/dwc2_esp32: Add header for vTaskDelay. by @andrewleech in #2683
- [FSDEV] Update the STM32 documentation by @Okarss in #2676
- Add host devinfo, add ch32v203g6 board by @hathach in #2686
- remove double semicolon since ISO C not allow it by @ra1nb0w in #2689
- audio_device.c: fix strict-overflow warning with gcc >= 12 by @ra1nb0w in #2691
- audio.h: fix error ISO C restricts enumerator values to range of 'int' by @ra1nb0w in #2693
- Revert "audio.h: fix error ISO C restricts enumerator values to range of 'int'" by @hathach in #2699
- V203 use 224kb by @hathach in #2705
- LPC55: FreeRTOS fix by @HiFiPhile in #2688
- add tud_cdc_configure_fifo() to replace CFG_TUD_CDC_PERSISTENT_TX_BUFF by @hathach in #2709
- simplify dwc2 test mode by @hathach in #2710
- update hil test to run on new pi5 by @hathach in #2712
- hil flash itsybitsy m4 with picoprobe by @hathach in #2715
- follow up to #2253 by @hathach in #2718
- Add family da1469x by @hathach in #2719
- HIL add metro m7 by @hathach in #2721
- fix hil board_test duplication, add cdc_msc_freertos test by @hathach in #2722
- UAC2: Fix memclr on driver reset. by @HiFiPhile in #2725
- add ra4m1 ek for hil test by @hathach in #2726
- Fix some race conditions by @HiFiPhile in #2630
- usbh: Add set address recovery time by @Ryzee119 in #2681
- Additional fix related to issue #1018. Corrects the usage of TU_ATTR_WEAK for the Keil compiler by @feaser in #2694
- RP2040 tweaks by @liamfraser in #2723
- [HIL] add lpc11u37 for hil test by @hathach in #2728
- fix fsdev issue introduced by #1942 by @hathach in #2732
- change hil s3 baudarte by @hathach in #2734
- Enhance fsdev by @hathach in #2739
- HIL test hardware changes by @hathach in #2749
- rp2040: add clocks.h as set_sys_clock_khz is moving there from stdlib.h by @kilograham in #2743
- UAC2: Implement feedback by fifo counting. by @HiFiPhile in #2328
- rework fsdev driver, fix ch32v203 race condition and stability issue by @hathach in #2750
- Fix ESPs without device support by @tannewt in #2756
- Update ci toolchain by @hathach in #2758
- Marked the keycode parameter of the keyboard_report functions as const since the functions don't modifies the value by @hjalleboii in #2759
- change pio to fix rp2040 build by @hathach in #2760
- readd v203 to hil pool by @hathach in #2761
- Fsdev iso fix by @hathach in #2762
- Circi dynamic config by @hathach in #2763
- Add port for Analog Devices MAX32 MCUs by @BrentK-ADI in #2708
- Minor update by @hathach in #2767
- update circle ci to build make by @hathach in #2769
- circleci tweaks by @hathach in #2770
- [HIL] add dual host_info_to_device_cdc support by @hathach in #2771
- change hil max32666 to use picodebug by @hathach in #2779
- bump up pio-usb to 0.6.1 by @hathach in #2780
- dcd_nrf5x: fix race condition by @rgrr in #2782
- Fix ESP32-SX resume by @tannewt in #2784
- Fix: Properly Handle NAK Response in MAX3421E driver by @cumhuronat in #2731
- Fix compiler warning in hid_boot_interface example by @lurch in #2781
- couple of fixes for usbtmc example by @hinxx in #2765
- Bluetooth Device: Issue ZLP on ACL IN ep when transfer is multiple of endpoint max packet size by @donatieng in #2783
- Put break inside #if by @dp111 in #2786
- dwc2: for esp32 force disconnect/connect using USB_WRAP otg pad override by @hathach in #2789
- make function prototypes match functions( found by cppcheck) by @dp111 in #2788
- Allow vendor class to be used without FIFO. by @HiFiPhile in #2450
- [circleci] fix build with rx by get-deps before install toolchain by @hathach in #2794
- add pico2 rp2350 (arm) board by @hathach in #2799
- prepare for 0.17.0 release by @hathach in #2801
New Contributors
- @IngHK made their first contribution in #2346
- @b4yuan made their first contribution in #2351
- @angmolin made their first contribution in #2366
- @LarssonOliver made their first contribution in #2296
- @Lurcy38 made their first contribution in #2373
- @YixingShen made their first contribution in #2382
- @Okarss made their first contribution in #2402
- @XelaRellum made their first contribution in #2239
- @mamiral made their first contribution in #2443
- @gschorcht made their first contribution in #1928
- @xudongzheng made their first contribution in #2481
- @eightycc made their first contribution in #2484
- @zx96 made their first contribution in #2420
- @emb4fun made their first contribution in #2168
- @tlyu made their first contribution in #2492
- @kaidegit made their first contribution in #2473
- @lijunru-hub made their first contribution in #2520
- @cdesjardins made their first contribution in #2472
- @duckylotl made their first contribution in #2549
- @wjklimek1 made their first contribution in #2563
- @ChrisDeadman made their first contribution in #2497
- @camilaodsouza made their first contribution in #2514
- @jerpa77 made their first contribution in #2466
- @tobozo made their first contribution in #1363
- @ikskuh made their first contribution in #1835
- @MatiMcFly made their first contribution in #1580
- @electretmike made their first contribution in #2050
- @arntsonl made their first contribution in #2223
- @clhenry made their first contribution in #2134
- @Erlkoenig90 made their first contribution in #1662
- @rgrr made their first contribution in #2263
- @Rbb666 made their first contribution in #2599
- @shuffle2 made their first contribution in #2283
- @kaspernyhus made their first contribution in #1709
- @tommie made their first contribution in #2494
- @maflcko made their first contribution in #2615
- @trejan made their first contribution in #2616
- @andrewleech made their first contribution in #2629
- @acscd made their first contribution in #2532
- @rsolorzanomsft made their first contribution in #2252
- @Xelus22 made their first contribution in #2181
- @thierer made their first contribution in #911
- @jotonedev made their first contribution in #2633
- @dragonlock2 made their first contribution in #2362
- @tinic made their first contribution in #2672
- @ra1nb0w made their first contribution in #2689
- @feaser made their first contribution in #2694
- @hjalleboii made their first contribution in #2759
- @BrentK-ADI made their first contribution in #2708
- @cumhuronat made their first contribution in #2731
- @hinxx made their first contribution in #2765
- @donatieng made their first contribution in #2783
- @dp111 made their first contribution in #2786
Full Changelog: 0.16.0...0.17.0