The MP3 player implements a USB 2.0 “mass storage class” interface. What this means is that if you plug the player into a computer / OS that supports the mass storage class, the player will appear as if it were a local harddrive. You can then drag-and-drop files onto the player, delete files, etc. In fact you’re not limited to MP3 files; you can put whatever files you want on the player. Of course the player will only attempt to play files with a “.mp3” extension.
The actual mass-storage class interface is accomplished using a device from Cypress Semiconductor, the CY7C68300A. It does everything, freeing the AVR software from any knowledge of the complexities of this interface. In my testing to date, with several harddrives connected to several PC’s with different operating systems, I’ve found this part to work extremely well.
OS Support and Drivers
Operating systems that support the mass-storage class include WindowsME and beyond. Windows98 supports it with the addition of a driver that can be downloaded from the Cypress website here. If you’re having problems with that link (Cypress regularly updates their site) then go to cypress.com and search for the USB 2.0 drivers for their EZ-USB AT2 family (chip partnumber is CY7C68300A). The Cypress drivers are not required for WinXP although WinXP service pack 1 is.
Windows95 and DOS are not supported.
Some versions of Linux support it. Also many later Apple Macs support it. I don’t have any experience with either of these machines, so if you’ve had success, please let me know so I can post it here. Note that if you’re a Linux or Mac user, you’ll have to find a way to initially format the drive with the FAT32 filesystem, as described on this page.
Backwards Compatibility and Upgrades
USB 2.0 is backwards compatible with USB 1.1, but a lot faster. USB 1.1 (full-speed) runs at 12 Mbits/sec; USB 2.0 high-speed sprints along at 480 Mbits/sec. My earlier rev 1.0 player had a USB 1.1 interface on it. For moving large numbers of MP3 files it’s painfully slow, which is why the current revision of the player has the USB 2.0 interface. If you don’t have USB 2.0 on your computer I suggest you consider doing what I did and obtain a USB 2.0 PCI card. They’re pretty cheap now. The one I purchased was the IOGear GIC220U. Installation was smooth and it seems to work well for me.
Note again that USB 2.0 is backwards compatible with USB 1.1. You can plug the player into a USB 1.1 PC and transfer files that way. But at around 4 or 5 seconds per song you won’t want to transfer too many MP3 files that way. A USB 2.0 PCI card can start looking attractive pretty quickly. I have tested the rev 2 player with a USB 1.1 port and verified that it does indeed work as expected. It just runs slower.
USB Serial EEPROM Parameters & Multiple Players
The Cypress CY7C68300A has a small serial eeprom hanging off it (U9) which contains the board-specific parameters. Any eeproms I provide are pre-programmed. For those who wish to program, or edit the programming, of this part themselves, this is the file I use.
The part is programmed using the ATBlaster software package, part of the CY4615B design kit, downloadable off the Cypress website. Note that this is a “development” serial eeprom file, not a production file. It uses Cypress’s default VendorID number (because I don’t have one; it’s expen$ive to get) and it’s just one file which implies one serial number. According to the USB 2 specification every part must have its own serial number, but I just program this same file into every eeprom. If you want to have two of these players plugged into the same PC at the same time you’ll need to change the serial number for one of them. For experimenting with USB ports, as this MP3 player kit does, it’s more than adequate.
For more details on programming the serial eeprom refer to my ATBlaster page.