Between the SCSI decoder and the sdraw driver, I developped a Sd. Card. Manager adapted from the Data. Flash. Manager of the original LUFA demo. Here is the bloc diagram with my modifications The SDCard. Manager layer implements readwrite operations directly fromto the USB endpoints. The i9 series of SDmicroSD copiers designed for volume SDmicroSD flash memory card programming. Copying at speeds of 1. GB per minute per port. Because data blocks are not stored in RAM, I can not directly use the functions sdrawread and sdrawwrite. Instead I will use the functions sdrawreadinterval and sdrawwriteinterval that allows to do data transfers using callbacks. The hardware. The hardware used to test my application is a Teensy. ATMEGA3. 2U4 with a SD card adapter connected on the SPI bus. The serial port is used to output debug traces. Compiling the project. See at the end of the post how to download my source code. The application code is located in the Low. Level. Mass. StorageSD directory. Just type make to compile it. The resulting Mass. Storage. hex binary can be downloaded to a Teensy. Teensy loader. Connecting to the host. I insert a 2. GB SD in my adapter and connect the Teensy. OS X. Using the serial port and printf, I can see read and write commands being issued to the application. MMCSD initialization failed. USBDeviceSet. Configuration. Programs Help Mortgage Debt Forgiveness here. When the activity stops, I can see my SD card successfully mounted in the Finder I can copy files on the SD card and then read them again without problem. It is just that the transfer speed is suddenly very slow compared to a real SD card reader. Source code. As an experiment, the source code for this project can be downloaded from my Bit. Bucket Mercurial repository http bitbucket. V2. A binary is also available. The repository root address is http bitbucket.