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 #1969
- Update net_device.h to make MAC addresses not const. by @MattMills in #1971
- fix cdc host enumeration issue when device does not support line request by @hathach in #1979
- openh743i: initialize USB3300 reset pin by @raiden00pl in #1999
- Vendor device race condition fix by @epatstarkey in #1989
- Add STM32L5 support - no OTG similar to some L4s by @jncronin in #2000
- Cmake by @hathach in #2006
- Add hid host send/recieve ready by @hathach in #2011
- fix audio comment error by @tyustli in #2015
- Fix spelling configuraiton->configuration by @dauc in #2025
- MIDI_CIN_NOTE_ON definition transposed with MIDI_CIN_NOTE_OFF by @mikee47 in #1920
- Fix compatibility with the latest Microchip XC16 compiler by @ReimuNotMoe in #2033
- [rp2040] Make writes to SIE_CTRL aware of concurrent access by @jfedor2 in #2024
- Add cmake build by @hathach in #2039
- Handle iMX RT 1042 usb naming by @tannewt in #2013
- bump up imxrt mcux-sdk to 2.13.1 by @hathach in #2040
- fix build with nxp since mcux-sdk from 2.13.0 remove CMSIS folder by @hathach in #2043
- Add usb2uart serial host driver by @hathach in #2046
- cdc: fix line_coding aligment by @jbtheou in #2047
- Update porting.rst by @slc-tl in #2030
- Improve serial host by @hathach in #2051
- Add Cmake for imxrt and Fix EHCI PortSC issue by @hathach in #2058
- fix(iar_template.ipcf): add missing portable links, and delete the us… by @abakosh in #2057
- add support for nrf5340 application core with pca10095 by @hathach in #2065
- iMX.RT EHCI add dcache support and other fixes + refactor by @hathach in #2061
- Minor build system by @hathach in #2069
- Enhance chipidea by @hathach in #2075
- fix(RA Host Portable): implement missing function __builtin_ctz(x) by @abakosh in #2063
- More build system by @hathach in #2081
- More build2 by @hathach in #2084
- Even when we get an empty "status change" interrupt from the hub, schedule another interrupt poll by @ipopov in #2016
- add lto for cmake by @hathach in #2088
- STM32G0 support by @HubertD in #1942
- Fix diagnostic format string (missing %u) by @DRNadler in #2089
- Stm32g4 by @hathach in #2092
- fix(RA Host Portable): git rid of the IAR warnings for packed by @abakosh in #2077
- movement of TOP in c0ecf8b broke RP2040 SDK build by @kilograham in #2100
- Initial support for USB PD stack by @hathach in #2104
- fix usbh issue when device genreate multiple attach/detach/attach when plugging in by @hathach in #2107
- Typec rename by @hathach in #2109
- Chipidea fs by @hathach in #2110
- Add the capability for video class to handle a bulk endpoint in the streaming interface. by @kkitayam in #1985
- Minor naming opt mcu imxrt by @hathach in #2112
- correct cmake iar build by @hathach in #2113
- Etm trace by @hathach in #2117
- Fix typos by @eustas in #2101
- Refactor make build by @hathach in #2124
- auto detect FAMILY based on BOARD by @hathach in #2125
- Rp2040 cmake cleanup by @hathach in #2127
- rework cmake with rtos support add RTOS to family_configure_device/host/dual_example() by @hathach in #2128
- Fixes bug in tuh_msc_ready by @georgeboc in #2085
- add hcd_frame_number() for pio-usb host by @hathach in #2130
- Fix minor spelling issues by @dauc in #2129
- enhance RA family by @hathach in #2137
- Imxrt bsp by @hathach in #2148
- fix(RA_hcd): STALL status can be also 3 not only 2 by @abakosh in #2120
- Fix host buffer alignment setting by @tannewt in #2146
- fix etm trace clock with stm32h743eval board by @hathach in #2149
- Fix flash-jlink target to work on Windows command prompt by @kkitayam in #2150
- add is_compiler_supported_by_pico_pio_usb() for rp2040 by @kilograham in #2152
- Usbh xfer user callback by @hathach in #2156
- Board support for XMC4700_RELAX by @jferreir in #2155
- update bsp for 4088 by @hathach in #2172
- change dcache clean/invalidate return type to bool by @hathach in #2173
- Add HCD abort xfer API by @hathach in #2175
- correct hcd_edpt_clear_stall() API signature by @hathach in #2182
- Enhance EHCI by @hathach in #2179
- osal_none: make it possible to override the task delay function by @abakosh in #2093
- Fixed typo in binary declaration RP2040 hw bspw family.c by @0xCCF4 in #2187
- Fix STM32G0 build. by @HiFiPhile in #2197
- default class driver log level to CFG_TUH/TUD_LOG_LEVEL by @hathach in #2200
- For FreeRTOS kernel-aware debugging, when queue registry is enabled, … by @DRNadler in #2091
- Add CDC+UAC2 composite device example for Pico by @kholia in #2105
- Renesas_RA: add support for board with HS USB port by @facchinm in #2052
- Renesas ra hs rebased from #2052 by @hathach in #2192
- fix example of bare_api, check empty string by @dsugisawa-mixi in #2116
- Update support for Cynthion boards by @mndza in #2133
- Enhance bsp by @hathach in #2204
- made line ends consistent. by @JustAnother1 in #2135
- Board support for STM32F407VETx by @ahooper in #2121
- add usb serial for hw l412 test by @hathach in #2206
- Fix typos in HCD rusb file by @abakosh in #2185
- Fix build issues when building for RP2040 from pico-examples/pico-sdk. by @kilograham in #2151
- Fix makefile a warning when run on windows command prompt by @kkitayam in #2208
- Host usb reset by @hathach in #2211
- Enhance HITL test by @HiFiPhile in #2209
- Invoke unmounted state on configuration reset by @Rocky04 in #2202
- min on cdc r/w by @tswan-quasi in #2219
- Add lpc43s67 by @hathach in #2217
- fix issue 2188: support usbh_app_driver_get_cb() by @rppicomidi in #2222
- EHCI more fixes by @hathach in #2221
- Fix documentation symlinks by @sjanc in #2142
- Add cmake support for samd21 and samd51 by @hathach in #2246
- Add max3421e host driver by @hathach in #2251
- Fix msd extraneus bytes on reading by @maidnl in #2245
- fix:Resource leak: fp by @slark-yuxj in #2235
- Cmake u5 by @hathach in #2258
- Add in isr to hcd int hanlder by @hathach in #2269
- Update IAR template. by @HiFiPhile in #2268
- Add max3421 support for esp32 by @hathach in #2270
- More max3421 by @hathach in #2276
- Fix UAC encoding, update example. by @HiFiPhile in #2259
- Add stm32u575-nucleo support by @gabChouin in #2244
- STM32U5 HS Support by @bencowperthwaite in #2265
- UAC IN transfer improvements by @HiFiPhile in #2282
- Update audio_4_channel_mic example for HS device. by @HiFiPhile in #2289
- minor update for max3421 by @hathach in #2291
- Add support for stm32u5a5 (highspeed with built-in femtoPHY) by @hathach in #2300
- Update doc & add Adafruit as sponsor in readme by @hathach in #2304
- remove legacy driver st/synopsys by @hathach in #2305
- Add STM32F4 OTG_HS support to BSP by @HiFiPhile in #2302
- skip tuh_max3421_spi_cs_api() in hcd_init() by @hathach in #2307
- add unique id for u5, also allow to build with OPT_OS_CUSTOM by @hathach in #2308
- Add PlatformIO manifest by @Yveaux in #2293
- Fix usbh enumeration removal race by @hathach in #2310
- Adding extern C to definitions to allow link on C++ project by @jfm92 in #2314
- Add BSP for nucleo-g491re by @kasjer in #2315
- Typo fix. by @HiFiPhile in #2316
- add ra2a1 ek by @hathach in #2317
- Update imxrt family by @hathach in #2320
- Add dwc2 info of F429. by @HiFiPhile in #2326
- Add featherwing max3421e support by @hathach in #2331
- fix typo in cdc line coding enum by @hathach in #2334
- Update imxrt usbphy by @hathach in #2335
- Fix h7 running on fullspeed phy has issue with WFI by @hathach in #2336
- Move build file from tools/ to examples/build_system by @hathach in #2339
- Add CH32F20x support by @Krasutski in #2278
- Add historical EP compatibility to bth class by @antoniovazquezblanco in #2279
- Add optional hooks for DCD and HCD events by @projectgus in #2303
- add tuh_hid_set_default_protocol() to set default USB host HID protocol (part 2) by @hathach in #2340
- Release 0.16.0 by @hathach in #2343
New Contributors
- @jefftrull made their first contribution in #1893
- @NullMember made their first contribution in #1853
- @sinitax made their first contribution in #1796
- @branalba made their first contribution in #1931
- @dhalbert made their first contribution in #1948
- @Tails86 made their first contribution in #1889
- @howard0su made their first contribution in #1860
- @koendv made their first contribution in #1882
- @bavison made their first contribution in #1639
- @bpaddock made their first contribution in #1858
- @MattMills made their first contribution in #1971
- @raiden00pl made their first contribution in #1999
- @epatstarkey made their first contribution in #1989
- @jncronin made their first contribution in #2000
- @dauc made their first contribution in #2025
- @mikee47 made their first contribution in #1920
- @jfedor2 made their first contribution in #2024
- @jbtheou made their first contribution in #2047
- @slc-tl made their first contribution in #2030
- @abakosh made their first contribution in #2057
- @HubertD made their first contribution in #1942
- @eustas made their first contribution in #2101
- @georgeboc made their first contribution in #2085
- @jferreir made their first contribution in #2155
- @0xCCF4 made their first contribution in #2187
- @kholia made their first contribution in #2105
- @facchinm made their first contribution in #2052
- @dsugisawa-mixi made their first contribution in #2116
- @mndza made their first contribution in #2133
- @JustAnother1 made their first contribution in #2135
- @ahooper made their first contribution in #2121
- @Rocky04 made their first contribution in #2202
- @maidnl made their first contribution in #2245
- @slark-yuxj made their first contribution in #2235
- @gabChouin made their first contribution in #2244
- @bencowperthwaite made their first contribution in #2265
- @Yveaux made their first contribution in #2293
- @jfm92 made their first contribution in #2314
- @Krasutski made their first contribution in #2278
- @antoniovazquezblanco made their first contribution in #2279
- @projectgus made their first contribution in #2303
Full Changelog: 0.15.0...0.16.0