Skip navigation

emUSB-Device—Mass Storage Device Add-On

emUSB-Device MSD enables the use of an embedded target device as a USB mass storage device. The target device can be simply plugged-in and used like an ordinary disk drive, without the need to develop a driver for the host operating system. 

  • Can be used with RAM, parallel flash, serial flash or mechanical drives
  • Support for full-speed (12 MBit/s) and high-speed (480 MBit/s) transfer rates
  • No custom USB host driver necessary
  • Highly portable, efficient, commented ANSI C source code
  • OS-Abstraction: Use with any RTOS, no OS required for MSD only devices
  • Hardware abstraction layer allows rapid addition of support for new devices
  • Small memory footprint



Typical Applications

  • Digital camera
  • USB stick
  • MP3 player
  • DVD player
  • Any target with USB interface:
    Easy access to configuration and data files

Application Samples emUSB-Device MSD

Memory Stick




Mp3 player


DVD player


No Custom Host Drivers Necessary

This is possible because the mass storage class is one of the standard device classes, defined by the USB Implementers Forum. Virtually every major operating system on the market supports these device classes out of the box.

Plug and Play

Let's say the target system is a digital camera using emUSB-Device MSD. Videos or photos taken by this camera can be conveniently accessed with the file system explorer of the used operating system, if the camera is connect to the host.

Use File System Support From Host OS

A device which uses emUSB-Device MSD will be recognized as a mass storage device and can be used like an ordinary disk drive. If the device is unformatted when plugged-in, the host operating system will offer to format the device. Any file system the host provides can be used. Typically FAT is used, but other file systems such as NTFS are possible too. If one of those file systems is used, the host is able to read from and write to the device using the storage functions of the emUSB-Device MSD component, which define unstructured read and write operations. Thus there is no need to develop extra file system code if the application only accesses data on the target from the host side. This is typically the case for simple storage applications, such as USB memory sticks or ATA to USB bridges.

Only Provide File System Code on the Target if Necessary

Mass storage devices like USB sticks do not require their own file system implementation. File system program code is only required if the application running on target device has to access the stored data. The development of a file system is a complex and time-consuming task and delays the time-to market. Thus we recommend the use of commercial file system like emFile, SEGGER's file system for embedded applications. emFile is a high performance library that has been optimized for minimum memory consumption in RAM and ROM, high speed and versatility. It is written in ANSI C and can be used on any CPU and on any media. Refer to for more information about emFile.

Check out our wiki article on MSD:


Components required to use MSD class:

  • emUSB MSD
  • emUSB-Device core
  • emUSB target driver
  • Real-time operating system (embOS or other)