0.17.0

September 13, 2024

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

Contributors

Thanks to everyone who contributed to this release: @acscd, @andrewleech, @angmolin, @antoniovazquezblanco, @arntsonl, @b4yuan, @battlesnake, @BrentK-ADI, @camilaodsouza, @cdesjardins, @ChrisDeadman, @clhenry, @cumhuronat, @donatieng, @dp111, @dragonlock2, @duckylotl, @eightycc, @emb4fun, @Erlkoenig90, @feaser, @gschorcht, @hathach, @HiFiPhile, @hinxx, @hjalleboii, @ikskuh, @IngHK, @jerpa77, @jotonedev, @kaidegit, @kasjer, @kaspernyhus, @kilograham, @kkitayam, @Krasutski, @LarssonOliver, @leptun, @liamfraser, @lijunru-hub, @lurch, @Lurcy38, @maflcko, @mamiral, @MatiMcFly, @Okarss, @pigrew, @ra1nb0w, @Rbb666, @rgrr, @Rocky04, @rsolorzanomsft, @Ryzee119, @shuffle2, @slark-yuxj, @tannewt, @thierer, @tinic, @tlyu, @tobozo, @tommie, @trejan, @tyustli, @wjklimek1, @XelaRellum, @Xelus22, @xudongzheng, @YixingShen, @zx96.