skip navigational linksPJRC
Shopping Cart Checkout Shipping Cost Download Website
Home MP3 Player 8051 Tools All Projects PJRC Store Site Map
You are here: MP3 Player Technical Docs Old MP3 Player Design Main Page

PJRC Store
Main Board, $150
LCD & Pushbuttons, $42
LCD/Backlight/PB, $77
IDE Cable, $9
Complete Parts List
MP3 Player
Main Page
Detailed Info
User Photo Gallery
Connecting The Board
Firmware Download
Side Projects
Technical Docs
Freq. Asked Questions
FAQ #2
News And Updates


icon: new design
Click For New Design
This new design has replaced the old one. The design shown on this page is obsolete. The new design has more features, is flash upgradable, is much easier to use, costs less, and is actually available if you'd like to buy one! It's better than this old design is almost every way. These old pages are still available, mostly for reference.


The Older MP3 Player Design

MP3 Player Pages

Related PJRC Pages

Data Sheets

Making Your Own High Capacity MP3 Player

I've wanted an MP3 player for some time... but forget about those tiny little flash memory toys. I don't need miniture and absolutely shake-proof, I want long play times, very long! Playing a CDR is an improvement, but it's only 650 megs, still not enough. Only one storage will do, a standard hard disk drive.

I got tired (impatient) of waiting, so I rolled my own. Here's a photo.

Photo: MP3 Player With Speakers Attached

It's actually not all that difficult to make your own player. The MAS3507D decoder chip does all the hard work of turning a MP3 bitstream into the decoded audio. A CS4327 DAC provides the audio output, though many other audio DAC chips will work. One of my 8051 development boards reads the hard drive and pumps the bitstream into the MP3 decoder chip. The decoder only runs on 3 volts, so there are a couple logic level conversion issues.

Here is a larger photo of just the player. The hard drive is in the middle, the 8051 development board with IDE interface, MP3 decoder, and audio output is on the top, and a power supply board is located on the bottom. Vent holes allow the power supply and hard drive to keep cool.

Photo: MP3 Player, Closer View

Cool Stuff

  • Plays for a long time. I used a spare 1.2 gig hard drive and loaded it with 17 hours of MP3s, but the design can easily handle any modern IDE drive. I'll probably buy a 20 gig drive for this thing someday soon.
  • It sounds great. The MP3 decoder chip and DAC are really quite easy to use and they sound great. Both manipulate 20 bit data.
  • Reasonably small size. About half of the box is the power supply, which was a spare one laying in my junk drawer. Most of the development board circuitry is not necessary for playback. The design could be much smaller.
  • The top and bottom pushbuttons jump to the next or previous track.
  • The middle pushbutton pauses and restarts playback.
  • I can keep listening while rebooting between Linux and Windows, or while playing games, or in my car!

Things To Improve Upon

The new design addresses most of these issues, and it is fully flash upgradable, so cool new features can be added to it even after it's built.
  • The 8051 can't play 256k and 320k bitrates. Bitrates 192k and lower work fine, and variable bitrates work fine.
  • There is currently no buffering, beyond a single 512 byte sector.
  • If you shake it (fairly hard), the drive will have higher read latency, and without much buffering, little gaps in the playback can happen. Walking with it is no problem, but jogging won't work. Works fine in my car on the front seat, but probably would need shock mounting if it were bolted down.
  • The firmware requires the MP3 files to be written directly to the drive, with a table in the first several sectors to indicate where each track begins. I wrote a little program to copy the files to the drive, but it requires all of them to be copied at once. You can't easily add and remove files. The program runs in Linux. There is currently no windows version.
  • Power supply needs 120 volts AC. I've used it in my car with a small inverter. Should really design a 10-15 volt input supply for use in my car.
  • There is no display and no support for playlists, categories, etc.
  • The drive always spins, so it uses too much power to run from any small-size battery.
  • Plastic enclosure looks nice, but it's a pain to remove the drive for loading new data.

Design Info (For Free)

I haven't made any nice pages with all the info for this player. It takes time to make nice web pages, and I'm putting most of my limited free time into making the second version. Here is the info that is available now:

Disclaimer: This code and design data is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.

The circuit board shown is the newer 8051 development board. The schematic and layout are available. Wrote a detailed page about the IDE interface, which is the circuitry on the right side of the photo, partially hidden by the ribbon cable. The circuits on the left side are the MAS3507D, a crystal oscillator for it, a Cyrstal Semiconductor DAC, and a couple chips to do the 5 volt to 3 volt logic level conversions. There is now schematic for this circuitry. The 8051 sends data to the MAS using its serial port, configured in "mode 0" (sync serial). See the 8051 datasheets for more info. I did not actually draw a schematic, but you can view Originally I did not have a nice schematic drawn, just these hand-drawn notes and sketches that I used when I built the player. Some close-up photos of the point-to-point wiring are available, in case I've forgot to document something.

Here is a copy of the firmware source code (assemble with as31). This code is intended to be used with my Paulmon2 monitor. To get a group of MP3 files onto the hard drive, you will need to use this little perl script that generates the raw hard drive image, in the linear sector format that the firmware uses, with a list of the starting sector addresses in the first 256 sectors of the drive. It's ugly, I know, but it does work, and unlike a lot of the other players you'll find on the net (see below), I am actually distributing the design data for free.

Future Plans

Here is a page about my plans for a new open source design. If you are interested in the technical development of this project, please read and make comments. The new design's hardware is more or less finished. The design is fully flash upgradable, including the digital logic on the board that implements the DRAM controller, IDE interface, and DMA interface to the MP3 decoder chip. There should be lots of room to add cool features to the design.

If you're interested in this project and/or want to have one of your own, please contact me. I'm interested in any feedback or ideas you may have.

Other Homebrew Players

It seems that there are a number of people building their own MP3 players. Here's a few that I know about: If you know of other homebrew players on the net, please let me know so I can make links to them.


Paul's Homebrew MP3 Player, Paul Stoffregen.
Designed and constructed Winter, 2000.
http://www.pjrc.com/tech/mp3/old_player.html
Last updated: February 23, 2005
Status: More info to come... just a couple photos for now.
Questions, Comments?? <paul@pjrc.com>