Back to Release page

Release Notes for STM32 USB Device Library

Copyright 2015 STMicroelectronics

 

Update History

V2.10.0 / 03-Sept-2021

Main Changes

  • Integration of  new USB device Class driver:
    • Adding support of Composite devices with an auto generation of composite device configuration descriptors
  • USB All Classes:
    • Fix Code Spelling and improve Code Style
    • Update device class drivers to support Composite devices
    • Improve declaration of USB configuration descriptor table which is allocated if the composite builder is not selected

V2.9.0 / 06-July-2021

Main Changes

  • Integration of  new USB device Class driver:
    • USB CCID Class driver based on Universal Serial Bus Device Class Definition for Integrated Circuit(s) Cards Interface Devices Revision 1.1
    • USB MTP Class driver based on Universal Serial Bus Device Class Media Transfer Protocol Revision 1.1
  • USB All Classes:
    • Fix Code Spelling and improve Code Style
    • Update the way to declare licenses
  • USB CDC/RNDIS/ECM Classes:
    • Fix compilation warning with C++ due to missing casting during class handler allocation

V2.8.0 / 10-Mars-2021

Main Changes

  • Integration of  new USB device Class driver:
    • USB Printer Class driver based on Universal Serial Bus Device Class Definition for Printing Devices Version 1.1
  • USB All Classes:
    • Fix USB buffer overflow vulnerability for CDC, CDC-ECM, CDC-RNDIS, DFU, AUDIO, CustomHID, and Video Classes
    • fix compilation warning with C++ due to missing casting during class handler allocation
    • Enhance comments of USB configuration descriptors fields
  • USB Video Class:
    • fix missing closing bracket for extern "C" in usbd_video.h
    • fix USBCV test with Uncompressed video format support

V2.7.1 / 18-August-2020

Main Changes

  • USB All Class:
    • Add NULL pointer access check to Class handler

V2.7.0 / 12-August-2020

Main Changes

  • Integration of  new USB device Class driver:
    • USB video Class driver based on USB-IF video class definition version 1.1
  • USB Core:
    • Enhance NULL pointer check in Core APIs
    • Allow supporting both USER and USER Class string desc
    • Add support of USB controller which handles packet-size splitting by hardware
    • Avoid compilation warning due macro redefinition
    • change added to USBD_HandleTypeDef structure: dev_state, old_dev_state and ep0_state declaration become volatile to disable compiler optimization
    • Word spelling correction and file indentation improved
    • usbd_conf.h/c Template file updated to suggest using by default a static memory allocation for Class handler
  • USB All Classes
    • Word spelling correction and file indentation improved
    • Allow updating device config descriptor Max power from user code usbd_conf.h using USBD_MAX_POWER define
    • Fix device config descriptor bmAttributes value which depends on user code define USBD_SELF_POWERED
  • USB CDC Class:
    • Class specific request, add protection to limit the maximum data length to be sent by the CDC device
  • USB CustomHID Class:
    • Allow changing CustomHID data EP size from user code

V2.6.1 / 05-June-2020

Main Changes

  • USB Core:
    • minor rework on USBD_Init() USBD_DeInit()
    • Fix warning issue with Keil due to missing return value of setup API
  • USB CDC Class:
    • Fix file indentation
    • Avoid accessing to NULL pointer in case TransmitCplt() user fops is not defined to allow application compatibility with device library version below v2.6.0

  • Fix minor misra-c 2012 violations

V2.6.0 / 27-December-2019

Main Changes

  • Integration of three new USB device Class drivers:
    • USB CDC ECM Class driver
    • USB CDC RNDIS Microsoft Class driver
    • USB Billboard Class driver
  • Fix mandatory misra-c 2012 violations
  • update user core and class template files
  • USB Core:
    • Fix unexpected EP0 stall during enumeration phase 
    • Improve APIs error management and prevent accessing NULL pointers
  • USB MSC Class:
    • Fix USBCV specific class tests
    • Fix multiple error with SCSI commands handling
    • Protect medium access when host ask for medium ejection
  • USB CDC Class:
    • Add new function to inform user that current IN transfer is completed
    • update transmit and receive APIs to transfer up to 64KB
  • USB AUDIO Class:
    • Fix audio sync start buffer size
    • update user callback periodicTC args by adding pointer to user buffer and size
  • USB CustomHID Class:
    • Rework the OUT transfer complete and prevent automatically re-enabling the OUT EP 
    • Add new user API to restart the OUT transfer: USBD_CUSTOM_HID_ReceivePacket()

V2.5.3 / 30-April-2019

Main Changes

  • Fix misra-c 2012 high severity violations
  • Core driver:
    • protect shared macros __ALIGN_BEGIN, __ALIGN_END with C directive #ifndef
    • update Core driver and DFU Class driver to use USBD_SUPPORT_USER_STRING_DESC instead of  USBD_SUPPORT_USER_STRING
    •  prevent accessing to NULL pointer if the get descriptor functions are not defined
    • Update on USBD_LL_Resume(),  restore the device state only if the current state is USBD_STATE_SUSPENDED

V2.5.2 / 27-Mars-2019

Main Changes

  • DFU Class:
    • fix compilation warning due to unreachable instruction code introduced with CMSIS V5.4.0 NVIC_SystemReset() prototype change

V2.5.1 / 03-August-2018

Main Changes

  • Update license section by adding path to get copy of ST Ultimate Liberty license
  • Core: Fix unexpected stall during status OUT phase
  • DFU Class:
    • rework hdfu struct to prevent unaligned addresses
  • MSC Class:
    • fix lba address overflow during large file transfers > 4Go
  • Template Class:
    • add missing Switch case Break on USBD_Template_Setup API

V2.5.0 / 15-December-2017

Main Changes

  • Update license section
  • Update some functions to be MISRAC 2004 compliant
  • Add HS and OtherSpeed configuration descriptor for HID and CustomHID classes
  • Correct error handling in all class setup function
  • Add usbd_desc_template.c/ usbd_desc_template.h templates files
  • Add support of class and vendor request
  • CDC Class: fix zero-length packet issue in bulk IN transfer
  • Fix compilation warning with unused arguments for some functions
  • Improve USB Core enumeration state machine

V2.4.2 / 11-December-2015

Main Changes

  • CDC Class
    • usbd_cdc.c: change #include "USBD_CDC.h" by #include "usbd_cdc.h"

V2.4.1 / 19-June-2015

Main Changes

  • CDC Class
    • usbd_cdc.c: comments update
  • MSC Class
    • usbd_msc_bot.h: update to be C++ compliant
  • AUDIO Class
    • usbd_audio.c: fix issue when Host sends GetInterface command it gets a wrong value
    • usbd_audio.c: remove useless management of DMA half transfer

V2.4.0 / 28-February-2015

Main Changes

  • Core Driver
    • Add support of Link Power Management (LPM): add new API GetBOSDescriptor(), that is used only if USBD_LPM_ENABLED switch is enabled in usbd_conf.h file
    • usbd_core.c: Fix bug of unsupported premature Host Out stage during data In stage (ie. when endpoint 0 maximum data size is 8 and Host requests GetDeviceDescriptor for the first time)
    • usbd_ctlreq.c: Fix bug of unsupported Endpoint Class requests (ie. Audio SetCurrent request for endpoint sampling rate setting)
  • HID Class
    • Updating Polling time API USBD_HID_GetPollingInterval() to query this period for HS and FS
    • usbd_hid.c: Fix USBD_LL_CloseEP() function call in USBD_HID_DeInit() replacing endpoint size by endpoint address.
  • CDC Class
    • usbd_cdc.c: 
      • Add missing GetInterface request management in USBD_CDC_Setup() function
      • Update USBD_CDC_Setup() function to allow correct user implementation of CDC_SET_CONTROL_LINE_STATE and similar no-data setup requests.

V2.3.0 / 04-November-2014

Main Changes

  • Update all drivers to be C++ compliant
  • CDC Class
    • usbd_cdc.c: fix clear flag issue in USBD_CDC_TransmitPacket() function
    • usbd_cdc_if_template.c: update TEMPLATE_Receive() function header comment
  • Miscellaneous source code comments update

V2.2.0 / 13-June-2014

Main Changes

  • Source code comments review and update
  • HID class
    • Remove unused API USBD_HID_DeviceQualifierDescriptor()
    • Add a new API in the HID class to query the poll time USBD_HID_GetPollingInterval()
  • CDC class
    • Bug fix: missing handling ZeroLength Setup request
  • All classes
    • Add alias for the class definition, it's defined as macro with capital letter
ex. for the HID, the USBD_HID_CLASS macro is defined this way #define USBD_HID_CLASS  &USBD_HID
  and the application code can use the previous definition: &USBD_HID ex. USBD_RegisterClass(&USBD_Device, &USBD_HID) or the new USBD_HID_CLASS ex. USBD_RegisterClass(&USBD_Device, USBD_HID_CLASS)

V2.1.0 / 22-April-2014

Main Changes

  • usbd_conf_template.c: update file with the right content (it was using MSC memory management layer)
  • usbd_conf_template.h: change include of stm32f4xx.h by stm32xxx.h and add comment to inform user to adapt it to the device used
  • Several enhancements in CustomHID class
    • Update the Custom HID class driver to simplify the link with user processes
    • Optimize the Custom HID class driver and reduce footprint
    • Add USBD_CUSTOM_HID_RegisterInterface() API to link user process to custom HID class
    • Add Custom HID interface template file usbd_customhid_if_template.c/h
  • Miscellaneous comments update

V2.0.0 / 18-February-2014

Main Changes

  • Major update based on STM32Cube specification: Library Core, Classes architecture and APIs modified vs. V1.1.0, and thus the 2 versions are not compatible.
  • This version has to be used only with STM32Cube based development

V1.1.0 / 19-March-2012

Main Changes

  • Official support of STM32F4xx devices
  • All source files: license disclaimer text update and add link to the License file on ST Internet.
  • Handle test mode in the set feature request
  • Handle dynamically the USB SELF POWERED feature
  • Handle correctly the USBD_CtlError process to take into account error during Control OUT stage
  • Miscellaneous bug fix

V1.0.0 / 22-July-2011

Main Changes

  • First official version for STM32F105/7xx and STM32F2xx devices

License

This software component is licensed by ST under Ultimate Liberty license SLA0044, the "License"; You may not use this component except in compliance with the License. You may obtain a copy of the License at:

http://www.st.com/SLA0044


For complete documentation on STM32 Microcontrollers visit www.st.com/STM32