History: usbd_drv_musb

This page describes all changes made to the usbd_drv_musb package, USBD Low Level Driver for MUSB, since its release.


1.15 (2021-06-09, 19:24):

  • Driver could not be stopped and restarted due to incorrect interrupt initialization and start.
  • Interrupts were not disabled and deleted when the driver was stopped.

1.14 (2021-03-01, 17:20):

  • MCU cores without separated DMA interrupt are supported.
  • Zero-length packet handled incorrectly on endpoint 0.
  • Corrected faulty DMA channel reset causing hard fault.
  • DMA Mode 1 (one interrupt at the end of the whole DMA transfer) did not work for OUT transfers.

1.13 (2021-02-08, 16:00):

  • ISO endpoints use ring buffer API function reporting if called from an interrupt context.

1.12r2 (2020-09-22, 16:36):

  • Added psp_membar dependency to the info file.

1.12 (2020-05-19, 14:00)

  • Replaced error codes with common USB device errors.
  • Added memory barriers to DMA transfer.
  • DMA BURST mode is set to INCR16/8/4/unspecified.
  • USBD prefix is added for all functions and global variables.
  • SOF interrupt is handled only in case USBD_SOFTMR_SUPPORT is enabled

1.11 (2020-04-21, 15:35)

  • Reworked DMA handling.
  • Endpoint transmit interrupt is enabled right before signalling the packet ready status for the HW and disabled after transmission is completed.
  • TX packet ready flag is checked in the interrupt to make sure that the packet was sent, because it can happen that the USB core generates an extra TX interrupt even if the packet is still in the FIFO.

1.10 (2020-03-17, 17:48)

  • Large transfers' performance increased if USBD_USE_DMA_MODE1 is enabled.

1.9 (2020-01-15, 13:45):

  • Device-to-Host (IN) transfers in USBD_USE_DMA_MODE1 possibly contained corrupted data in USBD_USE_DMA_MODE1 if the size of data was not multiple of the endpoint packet size (typically 512 bytes in High Speed).
  • Disconnecting the device from the USB host during a large (multi-packet) USB transfer (for example when the host PC reads a file from the device, working as mass-storage device) could cause unpredictable behavior after reconnection with USBD_USE_DMA and USBD_USE_DMA_MODE1 enabled.

1.8 (2020-01-10, 12:44):

  • In cases when the USB host stopped and started interfaces represented by this device during normal operation all hardware resources might be acquired then never released, resulting in unpredictable behaviour. Example cases include when activating or disabling functionalities of a composite device, or starting/stopping playback or record on an audio device.
  • Control transactions (e.g. enumeration process) could fail with isochronous communication enabled (USBD_ISOCHRONOUS_SUPPORT != 0).
  • Several fixes regarding isochronous transfers (typically audio microphone/speaker streams).

1.7 (2019-11-19, 15:00):
    - DMA support added.

1.6 (2018-04-05, 11:41):

  • Introduced new configuration option USBD_ADVANCE_TX_FROM_ISR to provide support for enabling the driver to advance multi-packet Tx transfers from ISR rather than letting the user (class driver) advance the transfer by calling usbd_transfer_status(). If enabled, the user (class driver) is only notified when the multi-packet transfer is complete (that is, all packets have been transmitted over USB). This results in less overhead (context switches), therefore higher effective transfer speed. In return for that the program execution might spend significantly more time in ISR as a large amount of data will possibly be copied from within the ISR.

1.5 (2018-09-13, 16:36):

  • Further improvement of the driver's behavior after sending a STALL handshake. The incorrect behavior might have caused the host to issue extra USB resets during enumeration in case the device sent a STALL handshake (e.g. because of receiving a command it does not support).

1.4 (2018-09-12, 16:22):

  • Behavior after sending a STALL handshake fixed: previously the driver could behave indeterminably after STALL'ing a host request, typically when receiving a command it does not support.

1.3r2 (2018-08-29, 18:17):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.

1.3 (2017-10-05, 15:16):

  • Enumeration might have failed, depending on USB timing determined by the USB host hardware/operating system.


  • Full speed operation fixed.
  • MUSB devices with more than 8 endpoints were not working correctly for >8 endpoints.


  • Initial release.