Skip to content

Releases: cherry-embedded/CherryUSB

CherryUSB v1.6.0

27 Jan 12:23

Choose a tag to compare

Common

  • update(demo): remove all old desc api

Device

  • feat(class/gamepad): add gamepad device #392

Host

  • feat: host add event callback mechanism similar to device @Egahp
  • refactor(serial): add host serial framework @sakumisu @MDLZCOOL #379
  • feat(class/hid): add hid report parse api #364

OTG

Port

  • feat(musb): add support for ti microcontroller with musb ip @MDLZCOOL
  • feat(port/dwc2): add infineon glue
  • update(port/dwc2): add usbd_dwc2_get_system_clock to replace SystemCoreClock #404
  • update(port/dwc2/usb_dc_dwc2): remove __UNALIGNED_UINT32_READ and __UNALIGNED_UINT32_WRITE because buf is always align4, only receive one setup packet
  • update(port/dwc2/usb_dc_dwc2): move read setup into USB_OTG_GINTSTS_ENUMDNE irq
  • feat: add roothub speed for dwc2/ehci

Platform

Security Check

  • update(port/dwc2): add check for fifo value with power on value

CherryUSB v1.5.3.99

22 Jan 13:35

Choose a tag to compare

This is the last version for release/v1.5.

Common

  • refactor(osal): replace NuttX internal APIs with POSIX APIs @SunJun8
  • fix(demo): fix cdc ecm string check

Device

Host

OTG

Port

  • Update T113S3 glue @HakumenJean
  • fix(port/dwc2/usb_hc_dwc2): restart split transfer with dwc2_xxx_urb_init, do not use dwc2_chan_reenable api
  • fix(port/dwc2/usb_hc_dwc2): fix incorrect HFIR_RELOAD_CTRL setting
  • fix(musb): fix musb_pipe_alloc missing bus parameter, and fix host checks in irq @MDLZCOOL

Platform

  • update(platform): remove net class weak api, check CONFIG_USBHOST_PLATFORM_* macro is defined or not in usbh_lwip.c
  • fix(bluetooth): Correct HCI packet type from SCO to ISO in USB host @shchen-Lab

Security Check

CherryUSB v1.5.3

12 Dec 12:57

Choose a tag to compare

Common

  • feat(demo): add mongoose rndis demo
  • update(demo/cdc_acm_rttchardev): add finsh & console switch with usb
  • update: remove old bl616 wifi driver, add new api
  • update(demo): format uac demos with macros
  • update(demo): add more descriptor init macros
  • refactor(usb_osal_threadx): optimize the creation and deletion of threads @MDLZCOOL
  • style: remove printf with USB_LOG_XXX
  • chore: add build ci for hpmicro & bouffalolab & espressif
  • fix:Fix RNDIS DHCP dependency,and delay implementation @Rbb666
  • bugfix: Fix support for idf versions lower than 5.3, Fix some compilation errors @udoudou
  • fix: Remove usb component private requirement for idf v6 @udoudou
  • fix(demo): fix missing ecm mac address string

Device

  • feat: support custom ep0 mps

Host

  • feat(class/video/usbh_video): support bulk mode
  • feat(class): support more match flags for cdc acm & rndis
  • feat(core/usbh_core): support interfacenum match flag
  • feat(core/usbh_core): support custom config index
  • refactor(core/usbh_core): refactor devaddr allocation, use auto increment
  • refactor(core/usbh_core): refactor lsusb
  • update(core/usbh_core): add retry for control transfer, some devices are flakey
  • update(core/usbh_core): print interface num when load driver
  • fix(class/hub): delete thread before delete mq

OTG

  • refactor(otg): refactor otg framework

Port

  • feat: Add MUSB IP without multipoint feature support @HalfSweet
  • feat: support custom ep0 mps
  • update(port/dwc2/usb_glue_hc): update hc port
  • update(port/hpmicro): add dcache support for device
  • update(port/chipidea): add dcache support for device
  • update(port/dwc2/usb_glue_st): increase ep1 tx fifo for audio demo
  • update(port/musb/usb_hc_musb): reenable pipe alloc & free
  • port: update hpmicro port files for otg @chenzhihong007
  • fix(port/ehci): clear iaad status before set
  • fix(usb_dc_dwc2): add unaligned read/write macros for IAR compiler @meng-plus
  • fix(port/dwc2/usb_dc_dwc2): invalid cache before all read setup

Platform

  • feat(platform/idf): add fatfs port for host msc
  • update(platform): remove CONFIG_USB_DCACHE_ENABLE, always check align size
  • update(platform/rtthread): add more check for chip cache
  • update(platform/rtthread): change LWIP_NO_RX_THREAD check error to warning
  • update(platform/daplink): sync with cherrydap

Security Check

  • update(hub/usbh_hub): add check for nports
  • update(class/hub): remove hport sources safely

CherryUSB v1.5.2

07 Aug 13:25

Choose a tag to compare

Common

  • update(common/usb_hc): change interval u8 to u32 for us
  • update(usb_config): change CONFIG_USBHOST_MAX_INTF_ALTSETTINGS to 2 as default for less memory usage
  • update(osal/idf): change freertos timer to esp_timer, change xtaskcreate to xTaskCreatePinnedToCore
  • fix(common/usb_util): fix missing __ICCARM_V8 define
  • style: remove some logs, fix log typo, format log

Device

Host

  • update: add output_len param for usbh_get_string_desc
  • update(core/usbh_core): do not assert when parse desc fail, just return error
  • update(core/usbh_core): check string support and then get string desc
  • fix(core/usbh_core): change 2ms to 10ms because some platform's tick is 100hz then 2ms = 0ms, refs: #342
  • fix(class/msc/usbh_msc): Clear error code after intentionally ignoring it @dkonigsberg

Port

  • feat(port): add urb->complete in usbh_kill_urb
  • Add FS support for ESP32-P4 @udoudou
  • feat(port/dwc2): support ep mult
  • update(port): remove CONFIG_USBDEV_EP_NUM & CONFIG_USBHOST_PIPE_NUM macro
  • update(port/musb): If ep control register group exists, do not use epidx register
  • update(port/dwc2/usb_glue_kendryte): update dwc2 param
  • update(port/dwc2): invalid data before start read
  • update(port/dwc2/usb_hc_dwc2): optimize split transfer code, mainly for cache and intr nak issue (56c864b, cc3e91e, f949e16, 65288c9, 9ddcbf5, 7037fd0)
  • update(port/musb): add mode check
  • update(port/dwc2): add mode check
  • fix(port/dwc2/usb_hc_dwc2): exit porten loop check when device disconnects
  • add reset port timeout check for dwc2, prevent unplug with loop @udoudou
  • Fix a bug where the channel might not be released, timeout but give sem @udoudou
  • Fix the bug that dwc2_halt may cause hardware abnormality, do not clear USB_OTG_HCCHAR_EPDIR @udoudou
  • fix(port/dwc2/usb_glue_at): fix host rx size
  • fix(port/dwc2/usb_glue_st): reduce f4 total size for some specific f4 chips
  • fix(port/ehci): remove usb_osal_msleep in critical section
  • fix(port/dwc2/usb_dwc2_param): fix macro literal types @Egahp

Platform

  • update(platform/rtthread): remove align size check
  • fix(platform/rtthread): change RT_USING_CACHE to CONFIG_USB_DCACHE_ENABLE
  • fix(platform/rtthread): restart read at usbd_cdc_acm_bulk_out @uid-matthew
  • fix(platform/rtthread): add RT_DEVICE_FLAG_INT_RX falg to device @uid-matthew

Security Check

CherryUSB v1.5.1

13 Jul 10:28

Choose a tag to compare

This release needs to be urgent because some companies need the custom configuration for multi dwc2 usbip and the qtd bug for ehci.

Common

Device

  • update(core/usbd_core): add ep0 state log

Host

  • fix(vendor/serial/usbh_ftdi): fix missing break
  • fix(class/hub): change urb interval unit to us

Port

  • refactor(port/dwc2): support custom config for each dwc2 usb port
  • feat: support sifli device
  • fix(port/ehci): Fix the urb leak when there is no data in the control transmission @minlewang
  • update(port/dwc2/usb_dc_dwc2): use usbd_get_ep0_next_state for read setup

Platform

  • feat(platform/rtthread): support adb shell/device cdc acm chardev/host serial framework
  • fix(platform/rtthread): change dfs ssize_t to rt_ssize_t

Security Check

  • update(demo): remove ep num check
  • update(port/fsdev): assert for fsdev log

CherryUSB v1.5.0

16 Jun 12:31

Choose a tag to compare

Common

  • osal: add liteos_m osal (#301) @huohongpeng
  • feat(osal/usb_osal_zephyr): add zephyr osal
  • update(osal): rename ticks to timeout_ms
  • update(osal/usb_osal_nuttx): update timer driver
  • update: change memcpy with usb_memcpy, fuck newlib with memcpy unalign bug
  • update(common/usb_log): update USB_ASSERT
  • update(demo): enable feedback trasnfer when USING_FEEDBACK=1 and use largest frequence from table
  • update(demo/usb_host): add fatfs speed test
  • update(demo): include dnserver & dhserver config for rndis & ecm
  • update(demo): wait done in linkoutput_fn for rndis & ecm, retransmission in lwip costs too much time
  • update: enable CONFIG_USBDEV_ADVANCE_DESC as default
  • cmake: Format CMake files using cmake_format and add a .cmake_format.json file @minlewang
  • chore: update cmake & kconfig & scons
  • docs: update rst
  • docs: 更新 README 文件结构和内容 (#300) @MDLZCOOL
  • fix: fix wformat warnings
  • class: hid: Fix typo: MODIFER → MODIFIER @RCSN

Device

  • feat(core/usbd_core): add ep0_next_state to record control transfer state
  • feat(class/mtp): support mtp device
  • refactor(class/usbd_msc): replace cherryrb with only variable
  • refactor(class/video/usbd_video): zero copy for video data transfer
  • update: add usb align up for every buffer when use dcache clean&invalid api
  • update(class/wireless/usbd_rndis): enable indicate msg for sending connect status
  • update(class): add weak api to avoid undefine symbol(not use such class but add)
  • update(class/wireless/usbd_rndis): use usbd_rndis_start_write for usbd_rndis_eth_tx
  • update(class): replace ecm & rndis USB_ERR_NOTDEV with USB_ERR_NOTCONN
  • update(core/usbd_core): clear configuration in disconnect callback
  • update(class/video): change headerlen to 12 for 4 byte align, fix encoding
  • msc: add support for SCSI_CMD_SYNCHCACHE10 (0x35) to fix unsupported command error @Aladdin-Wang

Host

  • feat(class/usbh_hid): add usbh_hid_get_protocol api
  • feat(class): add usb_osal_thread_schedule_other to allow the applications which use the struct usbh_xxx to exit properly before free struct usbh_xxx
  • update: add usb align up for every buffer when use dcache clean&invalid api
  • fix(class/vendor/ftdi): fix ftdi baudrate caculation

Port

  • feat(port/dwc2/usb_glue_st): implement low level api for device and host
  • feat(port/fsdev/usb_glue_st): implement low level api
  • feat(port/dwc2/usb_hc_dwc2): support external hs hub with fs/ls device
  • feat(port/kinetis): add mm32f5 support
  • feat: add nationstech support
  • feat(port/dwc2/usb_dc_dwc2): support dcache
  • feat(dcache): add dcache api for bl/hpm/esp/st/nxp
  • refacor(port/hpmicro): move hpmicro glue into hpmicro directory
  • refactor(port/nxp): combine nxp mcx glue for chipdea & ehci
  • update(port/ehci): add pad for qh&qtd cachemaintain, add CONFIG_USB_EHCI_DESC_DCACHE_ENABLE for qh&qtd&itd
  • update(port/ohci): add pad for ed&td cachemaintain, add CONFIG_USB_OHCI_DESC_DCACHE_ENABLE for ed&td
  • update(port/ehci): use static qtd pool for qtd alloc & free
  • update(port): add sof support
  • ehci: update config to improve performance @chenzhihong007
  • port: hpmicro: update isr processing (#304) @chenzhihong007
  • update(port/aic): sync code from luban lite
  • update(port/ch32): update irqhandler name
  • update(port/musb/usb_hc_musb): flush and disable ep intr in usbh_kill_urb
  • update(port/ehci/usb_glue_t113): update clock config
  • fix(port/dwc2/usb_hc_dwc2): enlarge pktcnt to 0x3ff, GHWCFG3(bit4:6) = 6, GHWCFG3(bit0:3) = 8
  • fix(port/bl): enable PDS_REG_USB_IDDIG bit for device
  • fix:(port/ch32/usb_dc_usbhs.c) Add isochronous out transfer support and fix endpoint config bug (#310) @sumengqi
  • fix(port/ch32): clear intflag first, set nak before handling ep in
  • fix(port/chipidea): fix qtd buffer setting
  • Fix esp32-p4 cache operation adaptation issue @udoudou
  • refactor(port/ch32): classify ch32 port
  • update(port/bl): add fs support

Platform

  • update(platform): update platform code
  • feat(platform): add lvgl mouse&keyboard support
  • platform: lvgl: update features and support both LVGL 8 and LVGL 9 @RCSN
  • feat(platform): add filex support
  • chore: update zephyr code
  • feat(platform/zephyr): support msc host with disk
  • update(platform): make msc host with fs common for dcache
  • add usb net under idf platform @loogg

Security Check

  • update(rtthread): add check for use dfs
  • update: add USB_ASSERT_MSG for common case
  • update(port): add USB_ASSERT_MSG for ep num check
  • fix(core/usbd_core): add check for desc callback
  • update(port/fsdev): assert for fsdev iso

CherryUSB v1.4.3

04 Mar 09:47

Choose a tag to compare

Common

  • feat(osal): add argument macro for different os, especially for nuttx
  • feat(common): add usb_phyaddr2ramaddr & usb_ramaddr2phyaddr macro
  • feat(platform/nuttx): update fs & net & cdcacm support
  • update(demo): add CONFIG_USBDEV_ADVANCE_DESC template
  • update(nimble): remove nimble submodule, because it costs time to pull
  • update(platform/rtthread/usbh_dfs): move mount into another thread
  • osal: fix rtthread usb_osal_thread_delete() API (#288) @chenzhihong007
  • update(osal/idf): reduce tx fifo for more space for ep5 & ep6

Device

  • feat(audio): add audio feedback macros and demo for uac1 & uac2
  • feat(core/usbd_core): add ep0 setup handler into thread feature
  • update(class/wireless/usbd_rndis): support transfer api for enet & wireless without lwip
  • fix current_desc_len += p[DESC_bLength] before p+= p[DESC_bLength]
  • fix reset all eps when alt_setting=0

Host

  • feat(core/usbh_core): add usbh_printf_setup api for debug
  • update(class/msc/usbh_msc): move msc scsi commands out(add usbh_msc_scsi_init api) to prevent blocking enum thread, add retry for testunityready request
  • fix(core/usbh_core): return valid hport which is connected

Port

  • update(port): add ehci/ohci/dwc2 dcache support
  • feat(port/rp2040): update rp2040 device driver to latest
  • feat(port/rp2040): update rp2040 host driver, use irq_add_shared_handler to register irq handler
  • feat(port/ehci): add t113 glue
  • Add ch585 usbhs dc @HaiMianBBao
  • update(port/kinetis): add MCXA156 support
  • fix(port/musb/usb_hc_musb): fix musb_write_packet size with urb->transfer_buffer_length
  • fix(port/dwc2/usb_glue_st): set GCCFG zero in host for stm32h7rs

Security Check

CherryUSB v1.4.2

23 Dec 12:34

Choose a tag to compare

Common

  • add:cherryusb_config_template.h add CONFIG_USB_HS configuration description @Dozingfiretruck
  • update(osal/usb_osal_thread): implement usb_osal_sem_reset
  • chore(cmake): update idf config for lwip & freertos
  • update(osal/freertos): update usb_osal_mq_recv and usb_osal_mq_send for isr api
  • update(demo): set hid busy before write
  • chore(scons): add kendryte config
  • update(cherrymp): move into standalone repo

Device

  • update(core/usbd_core): implement USB_REQUEST_GET_INTERFACE request, refs:#268
  • update(class/cdc/usbd_cdc_ecm): support transfer api for enet & wireless without lwip
  • update(demo/usbd_rndis): update send & recv done api, add check for this demo
  • refactor(class/video/usbd_video): refactor video stream transfer, support n frames in one transfer
  • usbd_video: use pingpang buffer to improve tx performance @chenzhihong007
  • update(class/audio): change volume unit with dB, fix uac2.0 volume range
  • update: change memcpy to fast memcpy
  • fix(core/usbd_core): fix ep config for more eps when call usbd_set_interface

Host

  • feat(core/usbh_core): add usbh_find_hubport api
  • feat(class/aoa): add usb aoa host
  • update(class/audio/usbh_auido): update audio volume and mute api, caculate volume with volume min & max
  • update(class/audio): change volume unit with dB, fix uac2.0 volume range
  • fix: rename class to class_code, for c++ compatibility (#269) @electretmike
  • fix vid pid match @yangpengya

Port

  • update(port/ehci/usb_glue_aic): remove lsusb shell, add check for ehci configflag, support ohci
  • update(port/ohci): update ohci common code
  • update(port/dwc2/usb_dc_dwc2): clear crst bit because some mcu cannot be self-clearing, refs:#276
  • update(port/dwc2/usb_dc_dwc2): support up to 16 endpoints
  • update(port/dwc2/usb_glue_at): import system_core_clock
  • update(port/dwc2/usb_glue_st): support stm32h7rs
  • fix(port/dwc2/usb_dc_dwc2): do not clear other intr bits

Security Check

  • update(port/fsdev): add check for iso, we do not support
  • update(port/dwc2/usb_hc_dwc2): do not support hs hub with ls/fs device
  • update(port/dwc2/usb_glue_gd): add check for ep

CherryUSB v1.4.1

20 Oct 12:51

Choose a tag to compare

Common

  • update(demo): set bNumConfigurations with zero in Device Qualifier Descriptor, we do not request other speed desc as default
  • chore(cmake): fix cdc acm config name
  • Add Github Action for Documentation Builds @HalfSweet
  • Add issue template @HalfSweet
  • Create cppcheck.yml
  • update(platform/none/usbh_lwip): remove freertos, use osal api

Device

  • feat(class/audio/usb_audio): add audio altsetting desc init macros
  • feat(class/video/usbd_video): add usbd_video_stream_start_write api for video split tranfer, every transfer with one ep_mps
  • fix(core/usbd_core): reset endpoint only for altsetting 0, refs:#258

Host

  • refactor(class/audio/usbh_audio): refactor getting audio control info
  • update(class/hid/usbh_hid): export usbh_hid_get_report_descriptor api, refs:#260
  • update(class/wireless/usbh_rndis): reduce rndis control buffer
  • fix(class/msc/usbh_msc): when device stalls by usbh_msc_get_maxlun, ingore error and set lun=0, refs:#259

Port

  • feat(port/kinetis): add kinetis usbip
  • update(port/dwc2/usb_dc_dwc2): enlarge CONFIG_USB_DWC2_TX1_FIFO_SIZE for video demo and export CONFIG_USB_DWC2_DMA_ENABLE
  • fix(port/dwc2/usb_dc_dwc2): set multi packet for iso in tx empty process, every transfer will reset this bits, so we need restore it. remove ununsed iso imcomplete isr

Security Check

  • chore: static code analysis
  • fix(class/msc/usbd_msc): fix warning and add check for CONFIG_USBDEV_MSC_MAX_BUFSIZE
  • fix(port/dwc2/usb_hc_dwc2): fix fifo check typo

CherryUSB v1.4.0

26 Aug 12:02

Choose a tag to compare

Common

  • feat(demo): add uf2 demo
  • feat(osal): import idf osal from udoudou/esp_cherryusb @udoudou
  • feat(osal): add threadx support
  • feat(common): add usb_hexdump for test
  • refactor(osal): use osal malloc and free, remove usb_malloc & usb_free macro
  • refactor: move CHERRYUSB_VERSION and CHERRYUSB_VERSION_STR into usb_version.h
  • update(cherrymp): rename cherrypool to cherrymp
  • update(class/cdc): set cdc acm bFunctionProtocol to 0x00
  • fix: change hid_mouse_report struct. from uint8_t to int8_t @MaigoW
  • fix(demo/winusb1.0_template): fix WINUSB_IFx_WCIDProperties array
  • fix: fix -Wunused-parameter warning with -Wextra cflag

Device

  • feat(core/usbd_core): support get hid desc request(0x21)
  • feat(core/usbd_core): support get status for remote wakeup & self powered, add remote wakeup api
  • feat(core/usbd_core): support ep get status with usbd_ep_is_stalled api
  • feat(core/usbd_core): support webusb
  • feat(core/usbd_core):: add usb_device_is_suspend() API @chenzhihong007
  • feat(class/msc/usbd_msc): add msc polling mode to move read & write from isr to while1
  • feat: add usb adb device with cherrysh
  • refactor(class/cdc): rename usbd_cdc to usbd_cdc_acm
  • fix(class/msc/usbd_msc): fix usbd_msc_get_popup api spelling
  • Fix the bug that USBD_EVENT_DEINIT was not notified correctly @udoudou

Host

  • feat(wifi/bl616): add bl616 usbwifi
  • feat: Add host driver for XBOX controllers @harbaum
  • update(hub): update hub macros and hub params for usb3.0 @zhugengyu @sakumisu
  • fix(class): use different buffer for cdc_acm,hid,msc,serial

Port

  • feat(port): implement usbd_ep_is_stalled api @liuhy-2020 @sakumisu
  • feat(port): add remote wakeup api
  • feat(port/dwc2): import kendryte glue from k230_sdk
  • feat: add chipidea support for nxp mcx, add ehci glue for nxp mcx
  • refactor(e(o)hci): rename usb_hc_e(o)hci to usb_e(o)hci_reg, usb_hc_e(o)hci_priv to usb_hc_e(o)hci
  • refactor: refactor pusb2 and xhci driver @zhugengyu
  • port: ehci: update init and deinit @chenzhihong007
  • port: ehci: should not be clear CSC/PEC/OCC flag when usb_hc_init() @chenzhihong007
  • update(port/hpm/usb_dc_hpm): enable resume handler
  • update: port: hpmicro: add USBH_USE_CUSTOM_ISR add USBD_USE_CUSTOM_ISR to control isr @chenzhihong007
  • update(port/dwc2/usb_dc_dwc2): add busid for functions to support multi ip
  • update(port/dwc2): Modifying the USB Int Source to support esp32p4 @Kevincoooool
  • fix(port/bl): fix test mode api
  • fix(port/dwc2/usb_dc_dwc2): fix lost ep0 setup intstatus by clear, for dwc2 version 4.3 @charschu
  • fix(port/dwc2): check idle when flush fifo, add delay for dwc2_set_mode
  • fix(port/dwc2): reset dma burst then modify, clear HCINT intstatus first
  • fix(port/dwc2): fix dwc2 rx fifo size, remove divided by 4

Security Check