Releases: hathach/tinyusb
0.17.0
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 https://...
0.16.0
0.16.0
- New controller driver: MAX3421e (usb host shield), rusb2 (Renesas USB2.0), ChipIdea fullspeed
- New MCUs: MCXn9, nRF5340, STM32: G0, G4, L5, U575, U5A5, RA6m5, CH32F20x
- Add initial TypeC PowerDelivery support with STM32G4
- Remove submodules and use python script to manage repo dependencies #1947
- Add CMake support for most families and boards, move build file from tools/ to examples/build_system
- Add ETM trace support with JTrace for nrf52840, nrf5340, mcb1857, stm32h743eval, ra6m5
- [osal] Make it possible to override the osal_task_delay() in osal_none
- Add CDC+UAC2 composite device example
- Enhance Hardware-in-the-loop (HIL) testing with more boards: rp2040, stm32l412nucleo, stm32f746disco, lpcxpresso43s67
Controller Driver (DCD & HCD)
-
Add new ISO endpoint API: dcd_edpt_iso_alloc() and dcd_edpt_iso_activate()
-
Remove legacy driver st/synopsys
-
EHCI
- [iMXRT] Add dache clean/invalidate when memory is in cacheable memory
- Fix portsc write issue which cause problem with enumeration
- Fix an issue when doing port reset write to portsc
- Fix port change detect is not recognized when power on with attached device
- Fix xfer failed with disconnected device as stalled
- Fix error on EHCI causes xfer error in non-queued qhd which cause memory fault
- Un-roll recursive hub removal with usbh queue
- Fix issue when removing queue head
- Implement hcd_edpt_abort_xfer()
- use standard USB complete interrupt instead of custom chipidea async/period interrupt to be more compatible with other ehci implementation
- refactor usb complete & error isr processing, merge, update. Fix EHCI QHD reuses QTD on wrong endpoint
- Improve bus reset, fix send_setup() not carried out if halted previously
- Fix clear qhd halted bit if not caused by STALL protocol to allow for next transfer
-
ChipIdea Highspeed
- Fix control transfer issue when previous status and new setup complete in the same isr frame
- [imxrt] Add dcache support for cache region
-
ChipIdea Fullspeed
- Generalize ChipIdea Fullspeed driver for mcxn9 (port 0), kinetis
-
nrf
- Fix DMA race condition with ISO OUT transfer #1946
- Add support for nRF5340 with pca10095 board
-
Renesas rusb2
- Generalize rusb2 driver for ra, rx mcus
- rework both dcd and hcd for better multiple ports support
- Add support for board with HS USB port: ra6m5 port1
-
rp2040
- [dcd] Make writes to SIE_CTRL aware of concurrent access
- [hcd] add hcd_frame_number(), hcd_edpt_abort_xfer() for pio-usb host
-
stm32 fsdev:
- Add STM32L5 support
- Implement dcd_edpt_iso_alloc() and dcd_edpt_iso_activate()
-
OHCI
- Allows configurable root hub ports, handles SMM mode (Ref OHCI spec 5.1.1.3.3) and Bios mode (Ref OHCI spec 5.1.1.3.4)
- Fix FrameIntervalToggle must be toggled after we write the FrameInterval (Ref OHCI Spec 7.3.1)
- Wait PowerOnToPowerGoodTime after we enable power of the RH ports (Ref OHCI Spec 7.4.1)
- Generate port interrupts for devices already connected during init.
- Fix issue when removing queue head
- Disable MIE during IRQ processing and clear HccaDoneHead on completion as per OCHI Spec Page 80
Device Stack
-
Add optional hooks tud_event_hook_cb()
-
Audio (UAC2)
- Fix feedback EP buffer alignment.
- Fix encoding, update example
- Improve IN transfer
-
Bluetooth
- Add historical EP compatibility for Bluetooth HCI
-
CDC
- Fix line_coding alignment
- Fix typo in cdc line coding enum
-
MIDI
- Fix stream_write() always writes system messages to cable 0
- Fix incorrect NOTE_ON, NOTE_OFF definitions
-
USBTMC: Fix tmc488 bit order
-
Vendor: fix read()/write() race condition
-
Video (UVC)
- Add the capability for video class to handle a bulk endpoint in the streaming interface.
Host Stack
-
USBH
- Add new APIs: tuh_interface_set(), tuh_task_event_ready(), tuh_edpt_abort_xfer(), tuh_rhport_reset_bus(), tuh_rhport_is_active()
- Fix issue when device generate multiple attach/detach/attach when plugging in
- Prefer application callback over built-in driver on transfer complete event
- Correct hcd_edpt_clear_stall() API signature
- Separate bus reset delay and contact debouncing delay in enumeration
- Support usbh_app_driver_get_cb() for application drivers
- Fix usbh enumeration removal race condition
- Add optional hooks tuh_event_hook_cb()
-
CDC
- Breaking: change tuh_cdc_itf_get_info() to use tuh_itf_info_t instead of tuh_cdc_info_t
- Fix cdc host enumeration issue when device does not support line request
- Add support for vendor usb2uart serial: ftdi, cp210x, ch9102f
- Improve sync control API e.g tuh_cdc_set_control_line_state(), tuh_cdc_set_line_coding()
-
HID
- Add new APIs tuh_hid_send_report(), tuh_hid_itf_get_info(), tuh_hid_receive_ready(), tuh_hid_send_ready(), tuh_hid_set_default_protocol()
- Change meaning of CFG_TUH_HID to total number of HID interfaces supported. Previously CFG_TUH_HID is max number of interfaces per device which is rather limited and consume more resources than needed.
-
HUB
- Fix handling of empty "status change" interrupt
- Fix issue with hub status_change is not aligned
-
MSC
- Fix bug in tuh_msc_ready()
- Fix host msc get maxlun not using aligned section memory
What's Changed
- Turn data cache on by @ccrome in #1898
- Add metro rt1011 by @hathach in #1901
- dhserver: Fix a potential DoS vulnerability accidentially introduced by #1712 by @kripton in #1885
- Adjust reserved bitfields to make SDCC happy by @jefftrull in #1893
- update pico-pio-usb to include data pid fix (0.5.1) by @hathach in #1906
- Fix issue 1909 by @rppicomidi in #1910
- examples/uac2: Fix mute and volume array lengths by @NullMember in #1853
- Minor audio_test example fix. by @HiFiPhile in #1825
- fix: Change all static variables to thread when fuzzing by @silvergasp in #1867
- use tu_static instead of static _fuzz_thread by @hathach in #1919
- Fix ifdefs for disabled uart stdio in rp2040 family by @sinitax in #1796
- OHCI usbh, tweaks and improvements by @Ryzee119 in #1491
- fix: Replace device calls to memcpy with tu_memcpy_s by @silvergasp in #1852
- stm32_fsdev & ISO EP buffer allocation improvements by @HiFiPhile in #1828
- add TUP_USBIP_FSDEV and TUP_USBIP_FSDEV_STM32 by @hathach in #1932
- fix: Fix wrong destsz used with tu_memcpy_s by @silvergasp in #1937
- Fix build on windows and macos by @hathach in #1938
- make rp2040 code compile cleanly with LLVM embedded toochain for ARM. by @kilograham in #1933
- Minor ci by @hathach in #1941
- For STM32H7 BSP boards, initialize RCC_...TypeDef structs as empty by @branalba in #1931
- dcd_nrf5x: ISO OUT handling by @kasjer in #1946
- Remove submodules and use python script to manage repo dependencies by @hathach in #1947
- update get-deps.py by @hathach in #1950
- rp2040: include hardware/sync.h explicitly by @dhalbert in #1948
- Implemented tuh_hid_send_report by @Tails86 in #1889
- Flush the dcd data on reset by @tannewt in #1953
- Fix old picosdk by @hathach in #1957
- fix HAL_Delay no effect bug on st platform by @tyustli in #1958
- Renesas ra family support by @perigoso in #1391
- Allow config OS for RP2040 by @howard0su in #1860
- Fix host enumerate multiple devices from multiple host controllers by @hathach in #1960
- Remove all submodules by @hathach in #1961
- add board: DshanMCU Pitaya Lite by @koendv in #1882
- Fixes for building with IAR toolchain by @bavison in #1639
- Add support for the NXP FRDM-K32L2A4S eval board. by @bpaddock in #1858
- Update bsp by @hathach in #1962
- more compatible with IAR by @hathach in #1963
- add tuh_set_interface by @hathach in #1964
- UAC2: fix feedback EP buffer alignment. by @HiFiPhile in #1965
- Refactor hid host by @hathach in #1968
- rename and change default pio usb pin to adafruit feather usb host by @hathach in #1974
- update doc and generate deps list by @hathach in #1975
- separate CFG_TUSB_MEM_SECTION/ALIGN to host and device specific macros by @hathach in #1978
- Fix tmc488 bit order 1658 by @hathach in https://git...
0.15.0
- Add codespell to detect typo
- Add support for fuzzing and bagde for oss-fuzz
- [osal]
- Allow the use of non-static allocation for FreeRTOS
- Fix FreeRTOS wrong task switch in some cases
- Fix tu_fifo memory overflown when repeatedly write to overwritable fifo (accumulated more than 2 depths)
- Better support for IAR (ARM) with ci build check for stm32 mcus.
- Fix Windows build for some mingw gnu make situations
Controller Driver (DCD & HCD)
- Add new port support (WIP) for WCH CH32V307 USB Highspeed
- Add new port support (WIP) for PIC32MM/MX & PIC24
- [nRF]
- Fix endpoint internal state when closed
- Fix reception of large ISO packets
- [rp2040]
- [dcd] Implement workaround for Errata 15. This enable SOF when bulk-in endpoint is in use and reduce its bandwidth to only 80%
- [hcd] Fix shared irq slots filling up when hcd_init() is called multiple times
- [hcd] Support host bulk endpoint using hw "interrupt" endpoint. Note speed limit is 64KB/s
- [samd][dcd] Add support for ISO endpoint
- [dwc2][dcd] Add support for stm32u5xx
- [esp32sx] Fix Isochronous transfers only transmitted on even frame
- [lpc_ip3511][dcd] Add isochronous support and fix endpoint accidental write
- [ft90x] Improve and enhance support for FT9xx MCU, tested with more examples
Device Stack
- [Video]
- Add support for MJPEG
- Fix probe on macOS
- [MIDI]
- Support port name strings
- fix MS Header wTotalLength computation
- [HID]
- Add FIDO descriptor template
- change length in tud_hid_report_complete_cb() from uint8 to uint16
- [CDC]
- Fix autoflush for FIFO < MPS
- Fix tx fifo memory overflown when DTR is not set and tud_cdc_write() is called repeatedly with large enough data
- [USBTMC] Fix packet size with highspeed
Host Stack
- Retry a few times with transfers in enumeration since device can be unstable when starting up
- [MSC] Rework host masstorage API. Add new host/msc_file_explorer example
- [CDC]
- Add support for host cdc
- Fix host cdc with device without IAD e.g Arduino Due
What's Changed
- try to fix release body in tinyusb_src (not tested) by @hathach in #1611
- Remove Hardcoded interface numbers from video descriptors by @Lan-Hekary in #1613
- nrf5x: Fix endpoint internal state when closed by @kasjer in #1614
- re-added code in pr 1438 to fix compile with h7 with 1 usb otg by @hathach in #1641
- nrf5x: Fix reception of large ISO packets by @kasjer in #1642
- Fix bug #1628 by preventing shared irq slots for filling up by @jmark1m in #1629
- Fix typo for log in dcd_rp2040.c by @mingpepe in #1664
- Initial PIC32MM/MX & PIC24 support by @ReimuNotMoe in #1623
- audio_device: prototype added for function referenced before use by @battlesnake in #1646
- Fix typo in getting_started guide by @hadess in #1691
- Allow more endpoint packet sizes for SAMD by @maddyaby in #1523
- Add support for MJPEG on UVC by @kkitayam in #1668
- Port stm32u5xx by @LynnL4 in #1680
- stm32u5: Fix submodules paths by @kasjer in #1696
- esp: Fix Isochronous transfers by @tore-espressif in #1690
- dcd_lpc_ip3511: isochronous support and endpoint accidental write fix by @tswan-quasi in #1676
- do not apply storage attributes to member of struct by @battlesnake in #1698
- Rp2040 hcd bulk by @Skyler84 in #1434
- tusb_types: add edpt_dir and edpt_type strings by @Skyler84 in #1433
- Fix rp2040 minor by @hathach in #1723
- Add self host by @hathach in #1724
- Fixed wrong FreeRTOS port for EFM32GG12 by @hfegran in #1718
- Add support for STM32L412. by @HiFiPhile in #1727
- Add hifiphile self-hosted by @hathach in #1740
- MIDI: support port name strings by @kaysievers in #1738
- dhserver: Support DHCP clients that don't send the MESSAGETYPE as first option by @kripton in #1712
- Add host msc explorer example by @hathach in #1746
- Rework host msc complete callback by @hathach in #1750
- Retry a few times with transfers in enumeration since device can be unstable when starting up by @hathach in #1763
- Added board description for electro-smith daisy seed by @benishor in #1756
- Fix RP2040 Issue 1721 by @rppicomidi in #1755
- Rp2040 host bulk comment by @hathach in #1765
- Fix typos by @hadess in #1695
- Add codespell to ci run by @hathach in #1774
- Allow the use of non-static allocation for FreeRTOS mutexes & queues by @pete-pjb in #1767
- Hid fido by @hathach in #1776
- HID: Add FIDO U2F descriptors by @gaoyichuan in #1686
- cdc: Fix autoflush for FIFO < MPS by @tore-espressif in #1487
- Update unit test by @hathach in #1781
- fuzz: Add support for fuzzing by @silvergasp in #1716
- Correct interrupt polling interval in descriptor by @scoudreau in #1784
- usbtmc: correct packet size bug by @scoudreau in #1783
- fix midi MS Header wTotalLength computation by @hathach in #1797
- Update osal mutex by @hathach in #1799
- Update osal_freertos.h to fix FreeRTOS wrong task switch by @jbruneaux31 in #1803
- Support Host CDC by @hathach in #1809
- fix incorrect rx buf in cdc by @hathach in #1810
- add tuh_cdc_peek() by @hathach in #1814
- [add] semaphore reset support for rt-thread by @tyustli in #1801
- fix ncm warning by @hathach in #1819
- fix(fuzz): Make sanitizer flags optional by @silvergasp in #1823
- Fix IAR warning: Warning[Pe381]: extra ";" ignored by @HiFiPhile in #1836
- Fix typo in audio.h. Specifiy _ctrl_xfer struct in CFG_TUSB_MEM_SECTION in usbh.c by @pete-pjb in #1837
- Fix fifo memory overflow by @hathach in #1789
- Fix UVC probe and commit on MacOS by @Staacks in #1820
- ip3511 : Fix IAR build. by @HiFiPhile in #1843
- feat(ci): Adds oss-fuzz integration on PRs by @silvergasp in #1844
- Add WCH CH32V307 port by @gregdavill in #1405
- dwc2: fix iar warnings by @HiFiPhile in #1847
- Add support for nucleo-h723zg by @kasjer in #1872
- feat(fuzz): Adds seed corpus for cdc and msc classes by @silvergasp in #1875
- Add support for NXP's mimxrt1024_evk evaluation board. by @DRNadler in #1866
- Windows build fix for some mingw gnu make situations by @DRNadler in #1870
- Support iar build by @hathach in #1876
- Port ft90x by @ftdigdm in #1768
- rp2040: avoid device-mode state machine hang by @P33M in #1779
- Fix host cdc without iad by @hathach in #1877
- Bundle mulitple familes for self-hosted iar to reduce build time by @hathach in #1880
- change length in tud_hid_report_complete_cb() from uint8 to uint16 by @hathach in #1884
- RP2040 build fixes by @kilograham in #1887
- update version to 0.15.0 by @hathach in #1890
New Contributors
- @Lan-Hekary made their first contribution in #1613
- @jmark1m made their first contribution in #1629
- @ReimuNotMoe made their first contribution in #1623
- @battlesnake made their first contribution in #1646
- @hadess made their first contribution in #1691
- @LynnL4 made their first contribution in #1680
- @tore-espressif made their firs...
0.14.0
- Improve compiler support for CCRX and IAR
- Add timeout to osal_queue_receive()
- Add tud_task_ext(timeout, in_isr) as generic version of tud_task(). Same as tuh_task_ext(), tuh_task()
- Enable more warnings -Wnull-dereference -Wuninitialized -Wunused -Wredundant-decls -Wconversion
- Add new examples
- host/bare_api to demonstrate generic (app-level) enumeration and endpoint transfer
- dual/host_hid_to_device_cdc to run both device and host stack concurrently, get HID report from host and print out to device CDC. This example only work with multiple-controller MCUs and rp2040 with the help of pio-usb as added controller.
Controller Driver (DCD & HCD)
- Enhance rhports management to better support dual roles
- CFG_TUD_ENABLED/CFG_TUH_ENABLED, CFG_TUD_MAX_SPEED/CFG_TUH_MAX_SPEED can be used to replace CFG_TUSB_RHPORT0_MODE/CFG_TUSB_RHPORT1_MODE
- tud_init(rphort), tuh_init(rhport) can be used to init stack on specified roothub port (controller) instead of tusb_init(void)
- Add dcd/hcd port specific defines TUP_ (stand for tinyusb port-specific)
- [dwc2]
- Update to support stm32 h72x, h73x with only 1 otg controller
- Fix overwrite with grstctl when disable endpoint
- [EHCI] Fix an issue with EHCI driver
- [msp430] Fix for possible bug in msp430-elf-gcc 9.3.0
- [nrf5x] Fix DMA access race condition using atomic function
- [pic32] Fix PIC32 santiy
- [rp2040]
- Add PICO-PIO-USB as controller (device/host) support for rp2040
- Use shared IRQ handlers, so user can also hook the USB IRQ
- Fix resumed signal not reported to device stack
- [stm32fsdev] Add support for stm32wb55
Device Stack
- [Audio] Add support for feedback endpoint computation
- New API tud_audio_feedback_params_cb(), tud_audio_feedback_interval_isr().
- Supported computation method are: frequency with fixed/float or power of 2. Feedback with fifo count is not yet supported.
- Fix nitfs (should be 3) in TUD_AUDIO_HEADSET_STEREO_DESCRIPTOR
- Fix typo in audiod_rx_done_cb()
- [DFU] Fix coexistence with other interfaces BTH, RNDIS
- [MSC] Fix inquiry response additional length field
- [Venndor] Improve write performance
Host Stack
- Add new API tuh_configure(rhport, cfg_id, cfg_param) for dynamnic port specific behavior configuration
- [HID] Open OUT endpoint if available
- [Hub] hub clear port and device interrupts
- [USBH] Major improvement
- Rework usbh control transfer with complete callback. New API tuh_control_xfer() though still only carry 1 usbh (no queueing) at a time.
- Add generic endpoint transfer with tuh_edpt_open(), tuh_edpt_xfer(). Require
CFG_TUH_API_EDPT_XFER=1
- Support app-level enumeration with new APIs
- tuh_descriptor_get(), tuh_descriptor_get_device(), tuh_descriptor_get_configuration(), tuh_descriptor_get_hid_report()
- tuh_descriptor_get_string(), tuh_descriptor_get_manufacturer_string(), tuh_descriptor_get_product_string(), tuh_descriptor_get_serial_string()
- Also add _sync() as sync/blocking version for above APIs
What's Changed
- Add concurrent host and device example by @tannewt in #1340
- Set the standard inquiry response additional length field. by @iabdalkader in #1349
- Enhance rhports management by @hathach in #1350
- Solve problems with CCRX toolchain by @Wini-Buh in #1311
- The IAR compilier does not resolve references to fields in the anonym… by @yoyopod in #1353
- Updated the clearing of the status register bits to use a straight '=… by @yoyopod in #1352
- Mcu specific by @hathach in #1354
- Fix CPP compilation with IAR by @alexandre-perrin in #1345
- Open OUT endpoint for HID host by @Daft-Freak in #1343
- fix build with esp32s2, also use dwc2 for esp example by @hathach in #1370
- Add host string descriptor functions by @tannewt in #1369
- documentatio: fix bad supported dev table format by @perigoso in #1371
- Fix string descriptor fetch by @tannewt in #1372
- vendor: Write improvements by @kasjer in #1289
- stm32wb55 support by @kasjer in #1374
- Modify the wrong macro definition code by @Qianhao2579 in #1379
- Add missing releases to Mynewt repository.yml by @sjanc in #1380
- fix issue 1359 by @hathach in #1389
- in TUD_AUDIO_HEADSET_STEREO_DESCRIPTOR, _nitfs should be 3. by @ccrome in #1360
- Add host example that prints out info of connected devices by @tannewt in #1392
- More host enhancement by @hathach in #1393
- merge device_info into bare_api example by @hathach in #1394
- Rework host control xfer by @hathach in #1397
- Add sof isr by @PanRe in #1402
- Host edpt xfer by @hathach in #1403
- remove cxd56 pycache folder by @hathach in #1409
- Fix docs by @perigoso in #1413
- Osal queue timeout by @hathach in #1440
- Gh action use replacement ruby by @Firefishy in #1444
- set irq priority for freertos by @ccrome in #1460
- PIO USB support by @hathach in #1412
- pic32 sanity fixes by @kasjer in #1451
- fix links in docs by @sknebel in #1473
- Minor cleanup of RP2040 code post addition of Pico-PIO-USB by @kilograham in #1467
- Remove lib/Pico-PIO-USB, which has moved to hw/mcu/raspberry_pi/Pico-PIO-USB. Fixes #1475. by @cr1901 in #1477
- changes proposal to audio feedback computation by @hathach in #1463
- Fix printf long int compiler error by @M3gaFr3ak in #1479
- Add SOF IRQ Handler by @hathach in #1381
- Update dwc2_stm32.h by @Nikitarc in #1438
- overwrite grstctl on edpt_disable by @Iktek in #1454
- remove cmake compile macro for net example (use lwipopts.h instead) by @hathach in #1483
- Fix compile error by @tfx2001 in #1485
- msp430x5xx: Add fix for possible bug in msp430-elf-gcc 9.3.0. by @cr1901 in #1481
- Better support multiple controllers configuration by @hathach in #1495
- add TU_ATTR_FAST_FUNC for audio sof isr call chain by @hathach in #1496
- add tuh_configure() for port/dynamic host behavior config by @hathach in #1498
- make all hcd/dcd function used in isr into ram by @hathach in #1501
- revert sof_isr driver rename since it cause issue with existing code by @hathach in #1505
- more dynamic controller for host by @hathach in #1506
- Host: Add support for multi-level usb hubs by @Ryzee119 in #1480
- rp2040: make moving 1K of code into RAM optional - and off by default by @kilograham in #1512
- correct bulk size for highspeed endpoint in dynamic_configuration and usbtmc exmaples by @hathach in #1516
- rp2040: use shared IRQ handlers, so user can also hook the USB IRQ by @kilograham in #1519
- Fix typo for log format by @mingpepe in #1518
- Stub out dcd_edpt_close for samd by @maddyaby in #1515
- RP2040 HCD Improvements (Hub + Keyboard + Mouse working) by @liamfraser in #1509
- Added The Teensy 4.1 board by @ccrome in #1526
- Hid report len uint16 by @hathach in #1533
- Add more warnings by @hathach in #1534
- samd: Fix a lock-up situation at high traffic. by @robert-hh in #1535
- Re-add some warning suppression for rp2040 by @kilograham in #1521
- Fix actual compiler warning on gcc 10.3.1 by @kilograham in #1538
- Improve ci by @hathach in #1539
- rp2040 enable SOF as resumed signal when remote wakeup by @hathach in #1542
- Define CFG_BOARD_UART_BAUDRATE in CMake by @phryniszak in #1540
- Ci parallel build by @hathach in #1544
- mimxrt: Change the definitions for MIMXRT boards. by @robert-hh in https://github.com/hathach/tin...
0.13.0
- [tu_fifo] Fix locked mutex when full, and return type in peek_n()
Controller Driver (DCD & HCD)
- [DWC2] Generalize synopsys dwc2 with synopsys/dwc2 which support both FS and HS phy (UTMI and ULPI) for various MCUs.
- Broadcom 28/27xx on raspberrypi SBC
- Silicon Labs EFM32
- Espressif ESP32 Sx
- GigaDevice GD32
- ST STM32
- Infineon XMC
- [KL25] Add new HCD for NXP KL25
- [MUSB] Add new DCD and HCD for Mentor musb with TI MSP432E4
- [F1C100s] Add new DCD for Allwinner F1C100s family
- [PIC32MZ] Add new DCD for PIC32MZ
- [nRF] Fix/Enhance varous race condtion with: EASY DMA, request HFXO, EPOUT
- [ChipIdea] rename Transdimension to more popular ChipIdea Highspeed,
- [RP2040] various update/fix for hcd/dcd
- [FT9XX] new DCD port for Bridgetek FT90x and FT93x devices
- [DA1469X] Fix resume
- [OHCI] Fix device array out of bound
Note: legacy drivers such as st/synopsys, nxp/transdimension are still present in this release but won't recieve more update and could be removed in the future.
Device Stack
- [Audio] Support disabling feedback format correction (16.16 <-> 10.14 format)
- [MSC] Add tud_msc_request_sense_cb() callback, change most default sense error to medium not present (0x02, 0x3A, 0x00)
- [Video] Fix video_capture example fails enumeration when 8FPS
Host Stack
No notable changes
What's Changed
- net_lwip_webserver: allow users to enable LWIP_IP6 if desired by @majbthrd in #1153
- UVC example: change input terminal type to camera from external by @kkitayam in #1150
- Increase compiler warnings flags by @hathach in #1159
- Remove ep descriptor wMaxPacketSize bitfield due to endian issue by @hathach in #1161
- msp430x5xx: Set base of transmit_packet buffer earlier to avoid incre… by @cr1901 in #1160
- Properly handle Program Change and Channel Aftertouch messages by @todbot in #1162
- Add Adafruit QT Py board by @mkj in #1171
- Adds support for Adafruit's Trinket M0 by @jgressmann in #1172
- update dcd_esp32sx with correct include list by @suda-morris in #1164
- samd21: enable SysTick only if running w/o OS by @jgressmann in #1176
- Generalize synopsys dwc2 by @hathach in #1163
- docs: update supported device table by @perigoso in #1179
- broadcom/dcd: Fix mynewt build by @kasjer in #1178
- Add xmc4500 by @hathach in #1180
- Update bth for IAD support by @kasjer in #1182
- Fix invalid assert in RP2040 host mode when compiled in debug mode by @liamfraser in #1181
- Add support for TI MSP-EXP432E401Y by @kkitayam in #1183
- set DCFG_XCVRDLY when using external ULPI highspeed phy by @hathach in #1195
- Bcm dwc2 address by @hathach in #1206
- Update bug_report.yml by @hathach in #1207
- fix nrf easy dma race condition by @hathach in #1208
- Update iar project template. by @HiFiPhile in #1209
- correct 32 button in gamepad hid descriptor template by @hathach in #1214
- use 4k stack for example with esp32sx by @hathach in #1215
- Update doc by @hathach in #1216
- Implement usbh replug on pico by @rppicomidi in #1193
- temporarily skip s3 build on ci by @hathach in #1223
- rename transdimension to chipidea by @hathach in #1224
- after commit: eae4132 this dependency is no longer required by @perigoso in #1225
- Fix buffer overrun in dcd_musb driver by @kkitayam in #1227
- Add a HCD driver for MSP-EXP432E401Y by @kkitayam in #1213
- Remove unused-parameter errors when LOGGER=swo by @scoudreau in #1222
- nrf5x: Fix race condition during startup by @kasjer in #1221
- Handle the closing of endpoints on RP2040 by @vmilea in #1233
- Add G4 support by @hathach in #1243
- Feature kuiic by @nxf58843 in #1244
- samd21: make uart_init() static by @mkj in #1252
- Add s3 devkitm & devkitc by @hathach in #1255
- nucleo-f439zi support by @leptun in #1258
- Fix typo by @leptun in #1260
- Fix Mynewt build for Microchip PIC32MZ devices. by @kasjer in #1263
- build system: Changes for xc32 compiler by @kasjer in #1264
- Add Raspberry Pi Zero W and Zero 2 W by @tannewt in #1271
- Enable breakpoints for ARM8M (e.g. cortex-m33) by @EmergReanimator in #1272
- Support disabling feedback format correction #1234 by @vmilea in #1235
- Fix esp ci by @hathach in #1282
- Driver for Microchip PIC32MZ family by @kasjer in #1270
- [rt-thread] add rt-thread os in readme by @mysterywolf in #1269
- Port ft90x by @ftdigdm in #1238
- Fix family_support.cmake to use new skip.txt and only.txt files by @liamfraser in #1277
- ft9xx: Fix Mynewt build by @kasjer in #1284
- Fix video_capture example fails enumeration when 8FPS by @kkitayam in #1276
- nrf5x: Request HFXO via OS by @kasjer in #1274
- olimex pic32 board fixes by @kasjer in #1283
- nrf5x: Fix EP OUT race conditions by @kasjer in #1279
- fix locked mutex when fifo is full by @hathach in #1286
- fix idfgh-6508: return type in tu_fifo_peek_n() by @alisitsyn in #1287
- Add HCD driver for Renesas RX by @kkitayam in #1265
- enable ci build for RX65X host example by @hathach in #1288
- Add support for Allwinner F1C100s family by @t123yh in #1220
- fix mynewt build sunxi by @hathach in #1301
- add rt-thread's tinyusb repo address by @mysterywolf in #1303
- OHCI: Fix array out of bounds issue by @Ryzee119 in #1305
- da1469x: fix resume by @kasjer in #1291
- Add hcd driver for frdm kl25z by @kkitayam in #1304
- readme: fix typo by @ZenithalHourlyRate in #1322
- Nit spelling correction by @JayToltTech in #1318
- Add msc request sense callback by @hathach in #1327
- Fix link to supported boards in Getting Started page by @NexusXe in #1328
- fix HID_REPORT_ID_N() by @hathach in #1330
- fix build with latest esp idf by @hathach in #1331
- nrf5x: Fix DMA access race condition by @kasjer in #1280
- Some platforms require SDKs and use of cmake by @sharpie7 in #1300
- increase version, update doc for release by @hathach in #1341
New Contributors
- @mkj made their first contribution in #1171
- @suda-morris made their first contribution in #1164
- @rppicomidi made their first contribution in #1193
- @scoudreau made their first contribution in #1222
- @vmilea made their first contribution in #1233
- @leptun made their first contribution in #1258
- @EmergReanimator made their first contribution in #1272
- @mysterywolf made their first contribution in #1269
- @ftdigdm made their first contribution in #1238
- @t123yh made their first contribution in #1220
- @Ryzee119 made their first contribution in #1305
- @ZenithalHourlyRate made their first contribution in #1322
- @JayToltTech made their first contribution in https:...
0.12.0
- add CFG_TUSB_OS_INC_PATH for os include path
Device Controller Driver (DCD)
- Getting device stack to pass USB Compliance Verification test (chapter9, HID, MSC). Ports are tested:
nRF, SAMD 21/51, rp2040, stm32f4, Renesas RX, iMXRT, ESP32-S2/3, Kinetic KL25/32, DA146xx - Added dcd_edpt_close_all() for switching configuration
- [Transdimension] Support dcd_edpt_xfer_fifo() with auto wrap over if fifo buffer is 4K aligned and size is multiple of 4K.
- [DA146xx] Improve vbus, reset, suspend, resume detection, and remote wakeup.
Device Stack
- Add new network driver Network Control Model (CDC-NCM), update net_lwip_webserver to work with NCM (need re-configure example)
- Add new USB Video Class UVC 1.5 driver and video_capture example ((work in progress)
- Fix potential buffer overflow for HID, bluetooth drivers
Host Controller Driver (HCD)
No notable changes
Host Stack
No notable changes
0.11.0
- Add host/hid_controller example: only worked/tested with Sony PS4 DualShock controller
- Add device/hid_boot_interface example
- Add support for Renesas CCRX toolchain for RX mcu
Device Controller Driver (DCD)
- Add new DCD port for SAMx7x (E70, S70, V70, V71)
- Add new mcu K32L2Bxx
- Add new mcu GD32VF103
- Add new mcu STM32l151
- Add new mcu SAML21
- Add new mcu RX65n RX72n
- Fix NUC120/121/126 USBRAM can only be accessed in byte manner. Also improve set_address & disable sof
- Add Suspend/Resume handling for Renesas RX family.
- Fix DA1469x no VBUS startup
Synopsys
^^^^^^^^
- Fix Synopsys set address bug which could cause re-enumeration failed
- Fix for dcd_synopsys driver integer overflow in HS mode (issue #968)
nRF5x
^^^^^
- Add nRF5x suspend, resume and remote wakeup
- Fix nRF5x race condition with TASKS_EP0RCVOUT
RP2040
^^^^^^
- Add RP2040 suspend & resume support
- Implement double buffer for both host and device (#891). Howver device EPOUT is still single bufferred due to techinical issue with short packet
Device Stack
USBD
^^^^
- Better support big endian mcu
- Add tuh_inited() and tud_inited(), will separte tusb_init/inited() to tud/tuh init/inited
- Add dcd_attr.h for defining common controller attribute such as max endpoints
Bluetooth
^^^^^^^^^
- Fix stridx error in descriptor template
DFU
^^^
- Enhance DFU implementation to support multiple alternate interface and better support bwPollTimeout
- Rename CFG_TUD_DFU_MODE to simply CFG_TUD_DFU
HID
^^^
- Fix newline usage keyboard (ENTER 0x28)
- Better support Hid Get/Set report
- Change max gamepad support from 16 to 32 buttons
MIDI
^^^^
- Fix midi available
- Fix midi data
- Fix an issue when calling midi API when not enumerated yet
UAC2
^^^^
- Fix bug and enhance of UAC2
Vendor
^^^^^^
- Fix vendor fifo deadlock in certain case
- Add tud_vendor_n_read_flush
Host Controller Driver (HCD)
RP2040
^^^^^^
- Implement double bufferred to fix E4 errata and boost performance
- Lots of rp2040 update and enhancment
Host Stack
- Major update and rework most of host stack, still needs more improvement
- Lots of improvement and update in parsing configuration and control
- Rework and major update to HID driver. Will default to enable boot interface if available
- Sepearate CFG_TUH_DEVICE_MAX and CFG_TUH_HUB for better management and reduce SRAM usage
0.10.1 - 2021.06.03
- rework rp2040 examples and CMake build, allow better integration with pico-sdk
Host Controller Driver (HCD)
- Fix rp2040 host driver: incorrect PID with low speed device with max packet size of 8 bytes
- Improve hub driver
- Remove obsolete hcd_pipe_queue_xfer()/hcd_pipe_xfer()
- Use hcd_frame_number() instead of micro frame
- Fix OHCI endpoint address and xferred_bytes in xfer complete event
0.10.0 - 2021.05.28
- Rework tu_fifo_t with separated mutex for read and write, better support DMA with read/write buffer info. And constant address mode
- Improve audio_test example and add audio_4_channel_mic example
- Add new dfu example
- Remove pico-sdk from submodule
Device Controller Driver (DCD)
- Add new DCD port for Silabs EFM32GG12 with board Thunderboard Kit (SLTB009A)
- Add new DCD port Renesas RX63N, board GR-CITRUS
- Add new (optional) endpoint API dcd_edpt_xfer_fifo
- Fix build with nRF5340
- Fix build with lpc15 and lpc54
- Fix build with lpc177x_8x
- STM32 Synopsys: greatly improve Isochronous transfer with edpt_xfer_fifo API
- Support LPC55 port1 highspeed
- Add support for Espressif esp32s3
- nRF: fix race condition that could cause drop packet of Bulk OUT transfer
USB Device Driver (USBD)
- Add new (optional) endpoint ADPI usbd_edpt_xfer_fifo
Device Class Driver
CDC
- [Breaking] tud_cdc_peek(), tud_vendor_peek() no longer support random offset and dropped position parameter.
DFU
- Add new DFU 1.1 class driver (WIP)
HID
- Fix keyboard report descriptor template
- Add more hid keys constant from 0x6B to 0xA4
- [Breaking] rename API
- HID_PROTOCOL_NONE/KEYBOARD/MOUST to HID_ITF_PROTOCOL_NONE/KEYBOARD/MOUSE
- tud_hid_boot_mode() to tud_hid_get_protocol()
- tud_hid_boot_mode_cb() to tud_hid_set_protocol_cb()
MIDI
- Fix MIDI buffer overflow issue
- [Breaking] rename API
- Rename tud_midi_read() to tud_midi_stream_read()
- Rename tud_midi_write() to tud_midi_stream_write()
- Rename tud_midi_receive() to tud_midi_packet_read()
- Rename tud_midi_send() to tud_midi_packet_write()
Host Controller Driver (HCD)
- No noticable changes
USB Host Driver (USBH)
- No noticable changes
Host Class Driver
- HID: Rework host hid driver, basically everything changes
0.9.0 - 2021.03.12
Device Stack
Device Controller Driver (DCD)
RP2040
- Fix endpoint buffer reallocation overrun problem
- Fix osal_pico queue overflow in initialization
- Fix Isochronous endpoint buffer size in transfer
- Optimize hardware endpoint struct to reduce RAM usage
- Fix enum walkaround forever check for SE0 when pull up is disabled
Sony CXD56
- Pass the correct speed on Spresense
- Fix setup processed flag
NXP Transdimention
- Update dcd_init() to reset controller to device mode
USB Device Driver (USBD)
- Fix issue with status zlp (tud_control_status) is returned by class driver with SET/CLEAR_FEATURE for endpoint.
- Correct endpoint size check for fullspeed bulk, can be 8, 16, 32, 64
- Ack SET_INTERFACE even if it is not implemented by class driver.
Device Class Driver
DFU Runtime
- rename dfu_rt to dfu_runtime for easy reading
CDC
- Add tud_cdc_send_break_cb() to support break request
- Improve CDC receive, minor behavior changes: when tud_cdc_rx_wanted_cb() is invoked wanted_char may not be the last byte in the fifo
HID
- [Breaking] Add itf argument to hid API to support multiple instances, follow API has signature changes
- tud_hid_descriptor_report_cb()
- tud_hid_get_report_cb()
- tud_hid_set_report_cb()
- tud_hid_boot_mode_cb()
- tud_hid_set_idle_cb()
- Add report complete callback tud_hid_report_complete_cb() API
- Add DPad/Hat support for HID Gamepad
- TUD_HID_REPORT_DESC_GAMEPAD() now support 16 buttons, 2 joysticks, 1 hat/dpad
- Add hid_gamepad_report_t along with GAMEPAD_BUTTON_ and GAMEPAD_HAT_ enum
- Add Gamepad to hid_composite / hid_composite_freertos example
MIDI
- Fix dropping MIDI sysex message when fifo is full
- Fix typo in tud_midi_write24(), make example less ambigous for cable and channel
- Fix incorrect endpoint descriptor length, MIDI v1 use Audio v1 which has 9-byte endpoint descriptor (instead of 7)
Host Stack
Host Controller Driver (HCD)
- Add rhport to hcd_init()
- Improve EHCI/OHCI driver abstraction
- Move echi/ohci files to portable/
- Rename hcd_lpc18_43 to hcd_transdimension
- Sub hcd API with hcd_ehci_init(), hcd_ehci_register_addr()
- Update NXP transdimention hcd_init() to reset controller to host mode
- Ported hcd to rt10xx
USB Host Driver (USBH)
- No noticeable changes to usbh
Host Class Driver
MSC
- Rename tuh_msc_scsi_inquiry() to tuh_msc_inquiry()
- Rename tuh_msc_mounted_cb/tuh_msc_unmounted_cb to tuh_msc_mount_cb/tuh_msc_unmount_cb to match device stack naming
- Change tuh_msc_is_busy() to tuh_msc_ready()
- Add read10 and write10 function: tuh_msc_read10(), tuh_msc_write10()
- Read_Capacity is invoked as part of enumeration process
- Add tuh_msc_get_block_count(), tuh_msc_get_block_size()
- Add CFG_TUH_MSC_MAXLUN (default to 4) to hold lun capacities
Others
- Add basic support for rt-thread OS
- Change zero bitfield length to more explicit padding
- Build example now fetch required submodules on the fly while running
make
without prio submodule init for mcu drivers - Update pico-sdk to v1.1.0
New Boards
- Microchip SAM E54 Xplained Pro
- LPCXpresso 55s28
- LPCXpresso 18s37