The Embedded Experts
Release notes for emUSB-Device version V3.18c
Version 3.18c [29. Mar 2019]
- Renesas R8A66597: Receiving EPs are using now the continuous mode rather than the conventional mode.
- RNDIS: Changed USB Class field value in Device descriptor to CDC which allows Windows to enumerate RNDIS properly.
Version 3.18b [04. Mar 2019]
- MSD: When operating in idle (only TestUnitReady commands are sent from the host to the MSD device) it was sometimes possible for the MSD module to loose an incoming command which would cause the host to mark the MSD device as not responding and re-enumerate it. Fixed.
Version 3.18a [28. Feb 2019]
- Add support for NXP RT105x controllers.
- Add support for ST STM32L0538 controllers.
- Enumeration: Allow a device to have no serial number.
- Enumeration: Allow to set ISO transfers types in the endpoint descriptor.
- Synopsys DWC2 driver: Allow to configure endpoint memory buffer.
- General: Moved USB_OS_Panic() from the respective RTOS layers into USB_ConfigIO.c.
- Bulk host API: Function USBBULK_ResetPipe was removed. Functions USBBULK_ResetINPipe() and USBBULK_ResetOUTPipe() were added.
- LPC546 FS driver: It was possible for a ClearFeatureHalt request to not clear the data toggle value. This could cause issues for protocols which use the STALL request on non-control EPs (e.g. MSD). Fixed.
- MSD: When an MSD command was completed with an error and the error was not immediately cleared by the host it was possible for the module to enter a busy-loop until the error condition was resolved by the other side. Fixed.
Version 3.18 [27. Nov 2018]
- Renesas USB: All HS and FS have been merged to one driver including the external USB controller Renesas R8A66597.
- Renesas USB: Timeout value for a FIFO stuck has been set to minimum value to reduce interrupt execution.
- Synopsys DWC2 driver: Under some circumstances ISO OUT transfers did not work. Fixed
Version 3.16a [08. Oct 2018]
- STM32L4xx driver: Workaround for the setup transfer issue of the hardware improved.
Version 3.16 [05. Oct 2018]
- TZ1200: Added support for Toshiba TZ1200 series devices.
- MTP: USBD_MTP_SendEvent now has a return value indicating success or failure.
- STM32L4xx driver: Setup OUT packets are sometimes get corrupted due to a hardware issue of the MCU. Workaround implemented.
- MTP: USBD_MTP_SendEvent no longer sends data via an asynchronous write. This could result in events being lost if many events were sent at once. Fixed.
Version 3.14 [20. Jul 2018]
- LPC54: Added support for the NXP LPC54xxx devices.
- nRF52: Added support for the Nordic Semiconductor nRF52840 devices.
- BULK interface: Added new functions USBD_BULK_ReadAsync() and USBD_BULK_WriteAsync().
- CDC class: Added new functions USBD_CDC_ReadAsync() and USBD_CDC_WriteAsync().
- Renesas FS driver: Added support for ISO transfers.
- EHCI driver: Allow to configure endpoint memory buffer.
- BULK interface: Request for MS extended compatible id was not answered correctly if size >= maximum packet size of EP0. Fixed.
- Atmel SAMD21 driver: USB_Read could not be retriggered in event callback function. Fixed.
- Atmel SAMD21 driver: Read timeouts were not handled correctly on multi-packet reads. Fixed.
- Renesas HS driver: It was possible for the BaseAddress variable to be set to 0, which would break communication. Fixed.
Version 3.12a [07. May 2018]
- SAM3U: Added missing source file to driver package.
Version 3.12 [04. May 2018]
- MTP: Added support for the GetPartialObject command.
- Core stack: Added new function USBD_RemoveOnEvent().
- Logging: Functions USBD_SetLogFunc() and USBD_SetWarnFunc() are now obsolete. USB_X_Log() and USB_X_Warn() are now always called for log output.
- ECM / RNDIS / IP-over-USB: Added de-initialization handlers.
- Audio: Added tasks for read/write handling. Allows the read/write callbacks to notify the application of timeouts.
- USBBULK API: USBBULK_CancelRead() did cancel all pending reads independent of the instance. Fixed.
- Enumeration: Other speed descriptor may contain incorrect packet sizes. Fixed.
Version 3.10 [22. Mar 2018]
- Added Audio class.
- BULK interface: Added new function USBD_BULK_Add_Ex().
- Atmel SAMA5D2x, SAMA5D3x driver: Transfer speed improved.
- Synopsys DWC2 driver: Support ISO transfers.
- EHCI driver: Allow ISO transfers.
- Atmel High speed driver: Allow ISO transfers.
- SmartMSD: Changed USB_SMSD_FILE_INFO to access the short dir entry directly, removed long dir entry from the documentation as it is only used internally.
- USBBULK API: In case starting the device failed, the memory was not cleaned up and the failed instance was still in memory. Fixed.
- USBBULK API: Removed fixed DLL binding to CancelIoEx() which only be used when Windows version > Windows XP -> dynamically used. Removed some minor errors.
- Renesas FS driver: Big Endian was not handled properly. Fixed.
- Renesas FS driver: When aborting a write transfer, remaining FIFO contents was not flushed. Fixed.
- RNDIS: EP0 send-data have been modified after the USBD_WriteEP0FromISR() was called. Fixed.
- Atmel High speed driver (SAM3U, SAMA5D2/3/4x, SAM9x25): Write timeout was not handled correctly. Fixed.
Version 3.08a [14. Feb 2018]
- MTP: Changed USB Class/Subclass/Protocol to PTP in order to allow to be enumerated as PTP in case MTP is not recognized.
Version 3.08 [13. Feb 2018]
- Cypress MB9BFxxx support: Added support for MB9BFxxx devices.
- New function USBD_AddEPEx which allows to configure the maximum packet size of an endpoint.
- EHCI driver: Dynamic endpoint buffer configuration allows reduced RAM usage, if not all endpoints are used.
- Synopsys DWC2 driver: Dynamic endpoint buffer configuration allows reduced RAM usage, if not all endpoints are used.
- RNDIS: Changed USB Class/Subclass/Protocol to USB.org assigned IDs (0xE0/0x01/0x03).
- Synopsys DWC2 driver: High speed controller did not work correctly when enumerated in full speed. Fixed.
- Renasas FS driver (RX, Synergy): Under some circumstances a GET control request (EP0) was not handled properly
after a SET control request (EP0) was executed. Fixed.
Double-buffering has been disabled on RX targets for safety reasons (data loss).
- USBBULK API: CancelOperation was pending even though the handle was closed and a new open was initiated. Fixed.
Reference counter was not locked in release version which can have undefined behavior. Fixed.
- IP-over-USB: IP_Config_IP_over_USB.c did not initialize the Init structure for USBD_IP_Add() which could cause an exception. Fixed.
Version 3.06e [12. Jan 2018]
- ST STM32H7 support: Added support for STM32H7xx devices.
- SliliconLabs EFM32GG11 support: Added support for EFM32GG11 devices.
Version 3.06d [19. Dec 2017]
- USBBULK.net: Added new methods WriteTimed and ReadTimed.
- Kinetis KHCI driver: Abort of an endpoint did not work correctly. Fixed.
- MSD: LUN serial numbers longer than 32 bytes would cause a memcpy with a negative array offset, potentially leading to undefined behaviour. Fixed.
Version 3.06c [04. Dec 2017]
- USB BULK API: The Windows host API can now detect devices which have been enumerated by a third party USB 3.0 host controller driver. These drivers do not handle MS OS descriptors properly, which could cause enumeration to fail.
- Renesas USB FS driver: Stalling a setup request sometimes did not work. Fixed.
- MSD: USBD_MSD_Disconnect() became ineffective after new enumeration. Fixed.
- Synopsys DWC2 driver: Driver for HS controller in FS mode separated.
- Synopsys DWC2 driver: HS controller in FS mode reported high-speed state wrongly. Fixed.
- Renesas Synergy FS driver: Sometimes NULL packets were not sent to the host. Fixed.
Version 3.06b [13. Oct 2017]
- USB BULK API: New functionality added to allow to send SETUP requests to target devices. For USBBULK.dll and USBBULK.net a new function was introduced. On target side new callbacks can be registered to retrieve SETUP vendor requests or any other SETUP request.
- IP-over-USB: Under certain circumstances switching between ECM mode and RNDIS may not work properly. Fixed.
Version 3.06a [28. Sep 2017]
- XMC4500, STM32L4xx driver: Improved write transfer speed using dynamic FIFO allocation and double buffering.
- ATSAMV7x driver: On a write timeout the endpoint was not reset correctly and gets blocked. Fixed.
- XMC4500 driver: Setup responses with multiple packet size length did not work correctly. Fixed.
Version 3.06 [19. Sep 2017]
- IP-over-USB, CDC-ECM, RNDIS: This release makes the requirement for tasks obsolete. USBD_IP_Task(), USBD_ECM_Task() or USBD_RNDIS_Task() are no longer necessary as everything is handled through callbacks (thereby reducing overhead). To use this feature embOS/IP V3.22b or newer is required.
- Printer class: Taskless operation is possible now, if all printer data can be processed in an interrupt.
- STM32 driver (STM32F0/F3): Enhanced overall read speed in the driver.
- ATSAMV7x driver: Optimize DPRAM usage to have more endpoints.
- EHCI driver: Reduce RAM usage.
- TI OMAP-L138 driver: Under some circumstances the RX buffer can overflow, resulting in data loss. Fixed.
- Renesas USB HS driver: Stalling a setup request sometimes did not work. Fixed.
- Renesas USB FS driver: With a self-powered device it was possible upon a second enumeration for the first two packets to be sent in the wrong order. Fixed.
- Interrupt endpoints: Interval settings < 1ms were not handled correctly, if the device was enumerated in full speed. Fixed.
Version 3.04b [29. Aug 2017]
- Drivers: Migrated STR91x driver to emUSB 3 API.
Version 3.04a [17. Aug 2017]
- Drivers: Migrated Toshiba TMPA900 driver to emUSB 3 API.
Version 3.04 [24. Jun 2017]
- IP-over-USB: Added new component emUSB-Device-IP to easily run any IP-based protocol over USB.
Version 3.02q [17. Jun 2017]
- Synopsys DWC2 driver: Added BSP and configuration files for the STM32F769 Discovery evaluation board.
Version 3.02p [14. Jun 2017]
- Printer class: USB_PRINTER_Task did not work correctly on USB disconnect. Fixed.
Version 3.02o [13. Jun 2017]
- MTP: Support for Read/Write callbacks added.
- MSD / MTP: Added MSD and MTP combination feature.
- SystemView: SystemView support added.
- EHCI driver: Receiving non-setup OUT data on endpoint 0 could lead to controller fatal error. Fixed.
- Synopsys DWC2 driver on STM32: High speed controller did not work when enumerated in full speed. Fixed.
- Renesas USB HS driver: Enumeration or setup requests may fail due to wrong interrupt handling. Fixed.
- HID: On some devices the setup request SET_REPORT was not handled correctly. Fixed.
- MTP: A missing interface name string descriptor prevented emUSB-Device-MTP from being recognized as MTP by Android. Fixed.
Version 3.02n [12. Jun 2017]
- AT91SAM9X25: Added Support for Atmel AT91SAM9X25 devices.
Version 3.02m [08. Jun 2017]
- Synopsys DWC2 driver on STM32: Under some circumstances the FIFO size registers could not be written. Workaround implemented.
Version 3.02l [02. Jun 2017]
- IP: Preliminary version of component emUSB-Device-IP to easily run any IP-based protocol over USB.
- STM32F7: Added Support for STM32F7 devices -> more endpoints available.
- USBBULK .net component: Updated new version that contains USBBULK.net V1.20.
- Renesas Synergy HS driver: Enhanced overall read/write speeds in the driver.
- MSD: Under some circumstances the MSD task could hang when the device is removed from host. Fixed.
- MSD: After re-plugging a MSD device to host the device may not work. Fixed.
- MTP: The IAR ARM compiler generates wrong code for the function ExecGetObjectPropList when using high optimization level. Fixed.
Version 3.02k [26. Apr 2017]
- KHCI driver: Enhanced read speed in KHCI driver.
- LPC43xx driver: Maximum number of endpoints for full speed corrected.
- Synopsys DWC2 driver: Controller may receive an extra packet after an endpoint is disabled. Handling of extra packets implemented.
- Renesas RX driver: Driver did not properly function with RX231 and RX113. Fixed.
- MSD: When user assigned a value to pInstData->DriverData.NumSectors the value was ignored. Fixed.
- MSD: Sending the CSW did not return when device is disconnected from host. Fixed.
- MSD: Internal variables were not reset after leaving the MSD Task loop. Fixed.
- Enumeration: Endpoint descriptors for interrupt endpoints did not always contain the correct value for 'bInterval'. Fixed.
- Enumeration: Unit of the 'Interval' parameter of the function USBD_AddEP() was changed to 125us.
- Enumeration: It was possible for the callback set by USBD_SetGetStringFunc to not be called because the internal handler incorrectly reduced the received string index. Fixed.
Version 3.02j [01. Mar 2017]
- SAMA5D2x: Added Support for Atmel SAMA5D2x devices.
- RX driver: Handling of Zero-Length-Packets was not handled correctly. Fixed. Waiting for the FIFO setting until the setting are set was not done. Fixed.
Version 3.02i [10. Feb 2017]
- Renesas Synergy devices: Added Support for Highspeed Controller in Synergy S3,S7 devices.
Version 3.02h [26. Jan 2017]
- ST STM32L4 support: Added support for STM32L4x6 devices.
Version 3.02g [23. Jan 2017]
- Renesas Synergy devices: Added support for FullSpeed Controller in Synergy S1,S3,S7 devices.
Version 3.02f [04. Jan 2017]
- Renesas SH7269: Added support for SH7269.
Version 3.02e [15. Dec 2016]
- Atmel SAMA5D4: Added support for SAMA5D4.
- Renesas R7FS7G2: Added support for R7FS7G2.
- ST STM32F4x, EnergyMicro EFM32GG: Improved write transfer speed using dynamic FIFO allocation and double buffering.
- EHCI driver: Correct handling of multiple TX packets on systems using cache.
Version 3.02d [18. Nov 2016]
- BULK interface: Improve write speed when using SEGGER Windows driver on the host.
- BULK interface: Removed FriendlyName entry from MS_ExtendedProperties table. This entry causes a lot of Windows versions to crash (BSOD) when the device is disconnected.
- Debug Logging: Replace USBD_PrintSafe with SEGGER equivalent.
- Synopsys DWC2 driver: Added a USB core reset at init, this alleviates issues with multiple re-enumerations on certain MCUs which use this USB controller.
- Atmel UDP driver, Synopsys DWC2 driver, Freescale KHCI driver: Re-Initialization (after USBD_DeInit) is done correctly now.
- MTP: Add timeout for reading zero packet.
Version 3.02c [03. Nov 2016]
- Initialization: Not all static variables were initialized correctly after low-power mode. Fixed.
Version 3.02b [31. Oct 2016]
- MSD: Handle timeouts during communication with host.
- DA1468x driver: Handling of endpoint table changed to allow re-initialization.
- SMSD: API functions renamed (Old API function names still work).
- Deinitialization: USBD_DeInit() did not always deinitialize all interfaces correctly. Fixed.
Version 3.02a [18. Oct 2016]
- Atmel AT91SAM3X: Added support for AT91SAM3X.
Version 3.02 [10. Oct 2016]
- BULK: Support WinUSB driver for BULK communication.
- CDC: CDC devices can now be used on Windows 10 without installing a driver.
- RNDIS, ECM: Added handling (self generated MAC addresses) when user did not assign a MAC address.
- BULK: Support Windows/Linux/MacOSX hosts with the same target application.
- CDC: Under some circumstances a serial state packet was not send to the host. Fixed.
- BSP.c/BSP_USB.c: It was possible for two interrupt handler routines (one for emUSB-Device and one for emUSB-Host) to be registered for one controller. This caused issues for OTG. Fixed.
Version 3.00g [23. Aug 2016]
- MTP: Added support for the GetNumObjects MTP command.
- MSD: Added new function USBD_MSD_RequestRefresh() to force reread of the storage by the host.
- BULK: Added host API for Linux and Mac OSX.
- SmartMSD: Improvements for using with Mac OSX.
- DA1468x support: Update OS layer.
- MTP: MTP_SUPPORT_EVENTS configuration define did not completely disable event handling when set to zero. Fixed.
- STM32 driver: Check for overflow of buffer memory corrected.
Version 3.00f [01. Aug 2016]
- DA1468x support: Add support for Dialog Semiconductor DA1468x.
- SmartMSD: API improved.
- RNDIS, CDC_ECM: Updated IP driver with new embOS/IP function which allow us to access need information without accessing internal embOS/IP structures directly.
- FreeRTOS layer: Allow static allocation of objects with FreeRTOS 9.0.0.
- CDC API: Definition of function USB_CDC_WriteTimedEx in migration layer corrected.
- BULK interface: USBD_BULK_WriteEx(NumBytes=0, Timeout>=0) didn't wait for completion of pending write transfers: Fixed.
- STM32 driver: Buffer sizes were not set properly which could lead to all sorts of strange effects.
- STM32 driver: Added a panic check for endpoint allocations which makes sure users do not allocate more endpoints than there is RAM for them.
- STM32 driver: Added handling for unaligned access when using access width of 16.
- STM32F0 driver: Merged with STM32 driver.
Version 3.00e [08. Jul 2016]
- TI AM335: Driver using DMA implemented.
- STM32F7xx support: Added USB config files for the popular STM32F746 DISCO evalboard.
- OS Layer: New operating system layer interface implemented (Can be activated with '#define USBD_OS_LAYER_EX 1' in USB_Conf.h).
- BULK: Added new configuration macro: USB_EXACT_DATASIZE_ON_CANCEL to speed up BULK reads on particular USB controllers (disables exact behaviour on cancelled read operations).
- STM32F107: Merged the STM32F107 driver into the DWC2 driver.
- TI AM335: Added Detach function.
- USB enumeration: A ZLP was sent for getdescriptor requests when the size of the descriptor matched the ep0 size. Fixed.
- MSD: The device had to stall bulk ep IN when it sent less data than requested to the host. Fixed.
- MSD: Fixed MSD_Task so that it correctly considers all return values of USBD_Receive.
- MSD: Fixes for USB_V2_V3_MIGRATION_MSD_LUN_INFO
- MSD: StorageRAM: Fixed GetBuffer* functions, previously they did not check buffer limits at all.
- MTP: Updated NULL Packet handling in _ReceiveBytes function (MTP transfer could have hang up on particular file sizes).
- MTP: Fixes for USB_V2_V3_MIGRATION_MTP_INFO
- STM32F1/2/4xx, EFM32GG, XMC45xx: Fix an issue in the driver if using Keil/ARM compiler with optimization (HardFault).
- Sample configurations: emPower board: Bus muster priorities corrected. STM3210C-EVAL: config file updated.
Version 3.00d [08. Jun 2016]
- Freescale KHCI: Added optimized SendEP routine.
- Atmel SAMD21 driver: NVM values for USB D+ and D- pads have been read in the wrong byte order. Fixed.
- Atmel SAMD21 driver: Control request with a DATA OUT phase (CDC: SetLineCoding) did not work properly. Fixed.
- Atmel SAMD21 driver: Setting an OUT Endpoint to NAK was done before the endpoint was properly initialized. Fixed.
- TI AM335x driver: Start of frame interrupt removed as it is not necessary for the driver functionality.
- TI AM335x driver: FIFO addresses were set incorrectly which could cause undefined behaviour when using multiple classes (composite device). Fixed.
- MTP class: Certain return values during retrival of the object property list were ignored. Fixed.
- Printer class: The receive data callback wrongly received the return values of the lower-level receive function. The callback is only to be called when at least one bytes is received. Fixed.
Version 3.00c [23. May 2016]
- BULK: Added new configuration macro: USBD_BULK_REGULAR_2048_XFER to remove the optimization which is used with the SEGGER Windows Bulk driver. By default this macro is not set, it is only necessary when you are writing your own host driver, in that case it can be added to the USB_Conf.h file.
- OS-Layer: Free-RTOS layer improved once more.
- Atmel SAMD21 driver: Coming out of the USB suspend state did not work. Fixed.
- uC/OS-II RTOS layer: Read functions would return with the busy flag (-4) under certain circumstances. Fixed.
Version 3.00b [28. Apr 2016]
- MTP: Added new configuration macro: USB_MTP_NAME_CASE_SENSITIVE to ignore case sensitivity.
- MTP:When MTP_SAVE_FILE_INFO was enabled function _AddObject did not compile due to wrong function call. Fixed.
- MTP:_SetObjectPropObjectFileName: Wrong function was called to remove the object from the object store, resulted that a rename was not shown on the host. Fixed.
- MTP:USBD_MTP_SendEvent: Calling the function with USB_MTP_EVENT_OBJECTADDED resulted in an undefined behaviour when searching for the object. Fixed.
- MTP:USBD_MTP_SendEvent: USB_MTP_EVENT_OBJECTREMOVED used the file name instead of the file path to notify the host that the object was removed which resulted in showing the host the wrong file or that no file was removed.
Version 3.00a [15. Apr 2016]
- HID: A callback can be set to be notified when a SET_REPORT or GET_REPORT is sent from the host.
- OS-Layer: The OS-Layer for Free-RTOS and uC/OS-II have been improved.
- Renesas RX driver: Renesas RX62N driver has been renamed to Renesas RX, driver file name and its name has been renamed. Compatibility macros has been added.
- CDC-ECM: When disconnecting the CDC-ECM device from host, the disconnect was not properly handled. Fixed.
- Atmel SAMD21: USB Resume interrupt did not work. Fixed.
- Atmel SAMD21: Read and write operation did not check for proper data alignment. Fixed.
Version 3.00 [18. Mar 2016]
- Initial version. Customers coming from emUSB-Device V2 should read the emUSB-Device V3 migration guide. (Doc\AN09001_emUSB_V3_MigrationGuide.pdf).