Ask Hackaday: How On Earth Can A 2004 MP3 Player Read An SDXC Card?

What were you doing in 2004? Can you even remember 2004? Maybe it’s like the old joke about the 1960s, if you can remember it, you weren’t really there, man. Cast your mind back, [Lance Armstrong] was winning the Tour de France, and SpaceShipOne made it into space.

[Gregg Eshelman], wrote to us to say that in 2004 he bought an MP3 player. Ask your parents about them, they were what hipsters used before they had cassette tapes: portable music players that everyone thought were really cool back then, onto which music didn’t come from the Internet but had to be manually loaded from a computer.

Jokes about slightly outdated consumer electronics aside, [Gregg]’s player, a GPX MW3836, turned out to be a really good buy. Not only does it still work, it packs an unexpected bonus, it reads 64Gb SD cards when they are formatted as FAT32. This might not seem like a big deal at a cursory glance, but it’s worth considering a little SD card history.

Back when the GPX was made, the maximum capacity of an SD card was 2Gb, a figure that must have seemed huge when the standard was created, but by the middle of the last decade was starting to look a little cramped. The GPX player is designed to only read these original 2Gb cards. In the years since then there have been a couple of revisions to the standard, SDHC, and SDXC, which have given us the huge cards we are used to today. Many other devices from the 2Gb SD era, made before SDHC and SDXC existed, cannot read the modern cards, yet [Gregg]’s GPX can.

Hackaday’s readership constantly amaze us with the sheer breadth of their knowledge and expertise, so we are sure that among you reading this piece will be experts on SD card standards who can shed some light on this mystery. Why can a player designed for the original SD card standard read the much newer cards when other contemporary ones can not? [Gregg] would love to know, and now our curiosity has been whetted, so would we.

If you think you’ve heard [Gregg]’s name before, it might be for his expertise in resin casting automotive parts.

SD card image: Andreas Frank (CC BY 2.5).

80 thoughts on “Ask Hackaday: How On Earth Can A 2004 MP3 Player Read An SDXC Card?

  1. 2GB was a FAT16 limit rather than a limit of the SD card technology. FAT32 was introduced in 1996, so there was plenty of time for a 2004 MP3 player to have support for FAT32 built in. As with many industry standards, limits are often arbitrary and may not keep up with technology. SDHC was electrically the same (with the addition of an optional high speed mode) and not much else changed besides the default FAT32 formatting.

    Ultimately it’s not too surprising for a device built in 2004 to support FAT32; sure, it would be weird to put it in if they were space-constrained, but if they were using a premade FAT library it would be more work to take it out. The SD card size limit was more about certification and standards (and the agreed-upon FAT16 formatting) rather than a technical limitation.

    1. The structure of the SD Commands changed significantly between SDSC and SDHC. Before, everything was in bytes – after, everything was in Blocks (512B). To quote the SD specification:
      “2) Data address is in byte units in a Standard Capacity SD Memory Card and in block (512 Byte) units in a High Capacity SDMemory Card.” (p. 59, regarding CMD17 and CMD18). There are many more differences.
      SDHC and SDXC are almost equal, except that SDXC requires you to use exFAT (theoretically). Therefore either the developers had access to the specifications before its release, or the owner of that device did a firmware upgrade sometime after the release and just doesn’t remember.

      1. As someone who has written code to initialize SD devices and parse the FAT, I can tell you that SDXC does not physically require you to use exFAT. It’s a licensing imperative, not a physical imperative. While Windows will not easily let you format a 64GB SDXC card in any other format than exFAT, it will absolutely read and write 64GB SDXC cards formatted in FAT32, and use them properly. The great thing about SD is that while things have been added, there has been a layer of standard compatibility that has been maintained, allowing newer cards to support older, more basic interface modes. While not required to support these modes (and interface voltage ranges), many quality cards do anyway. Basic code to detect and use different features of different SD cards has been around for a very very long time, and it is standard practice to intensively query a card for all features that it can support. It is completely within the realm of possibility that well-written code from 2004 works fine with a well-engineered SDXC card of today.

        1. The exFAT thing I agree with, that’s why I wrote “theoretically”. Theoretically, a card might have better performance and lifetime with exFAT – no idea whether that’s actually the case with any model. However, how would a code from 2004 access data beyond 4 GB? The byte offset for CMD17/18 is a 32bit integer. However good the card is, it couldn’t guess what the host wants. The only possibility would be that the card recognizes the absence of CMD8, and pretends to be a SDSC <= 2GB card, preventing you from accessing data written beyond that boundary.

          1. You can actually squeeze 4GB out of cards that follow the 1.01 spec (extra bits available in size). However, by the time the 1.10 spec was released in 2003, there were already proposed specs and commands reserved for the coming 2.0 spec. It is possible that within that time frame, an SD association member implemented the proposed items in code for testing and one of the member companies used that code. We see companies all the time that add proposed specs to their products ahead of time if they’re confident in the implementation. I would personally like to see someone jack a logic analyzer on the SD bus of this player to see what commands it is actually using.

          2. Access using byte addressing (as opposed to sector addressing) would limit the accessible region, but the FAT32 file-system only limits filesize to 2GB (or 4GB with some spec bending). The capacity limit of the device is into the TB region.

            exFAT was supposedly developed to minimise the wear on flash memory, but I think it was YET MORE of the typical M$ thing to lock other systems out of the market (linux, etc) that they wanted to get their own hooks into. And they’ve done well too… I would bet that M$ gives a sizeable kickback to flash vendors (SanDisk etc) to only format 64GB+ cards to exFAT. When I purchase them, the first thing I do is reformat them to FAT32. *ALL* my PC’s read them fine, and only one hardware video recorder has difficulty.

      2. I missed the byte versus block addressing. I wonder if the switch from byte to block address is common across several types of storage media and therefore automatically occurs with the particular FAT implementation on the device. I notice that media player was made well into 2006, and if they were already using 512 byte blocks it would have been a couple of simple tweaks to detect and use higher capacity cards. I was wondering if the MMC spec was ahead of the game on high capacity cards, but looks like it had the same addressing scheme in 2004. Or if he’s only accessing it through the device’s USB port, it’s only using 1 out of every 512 blocks :)

    2. “SDHC was electrically the same (with the addition of an optional high speed mode) and not much else changed besides the default FAT32 formatting.”

      Umm… That doesn’t seem right to me. The reason is I have a bunch of old SD readers/writers lying around that are pretty much worthless to me because they do not work with any of the newer SD cards. Here’s the thing, I’m not talking about embedded devices with firmwares that only speak a specific filesystem format. I am talking about devices that plug into a Linux desktop that will happily format, read and write any filesystem I choose to. I have formatted several SD cards(2GB and down) with FAT16, FAT32 and even ext3 using these devices.

      If the difference was only the filesystem then my old read/writers should be working just fine! But they don’t. So something else must be going on.

      1. Ironically, I’ve got older readers for when the more modern ones won’t read.
        I’d guess some manufacturers are crippling of the chipset, not following specs to the T or a bit of both.
        i.e. by only having enough bits of RAM to store the max “LBA” of the currently available cards, that is the 64GB era readers will only read 64GBand lower and so forth.

        In my Dell E6400 the MMC/SDcard socket can read my genuine big-name walk-in* store purchased 128GB.
        Yet in a Dell E6410 couldn’t even read either the 128GB or 64GB SD cards and that’s with the same brand but newer model Recoh PCI-MMC chipset.

        As for older players reading newer cards, I’ve got a Cowon j3 MP3 player that barely keeping alive due to having bad flash wear out despite not being written to often.
        The firmware will read all the music on SD cards up to 128GB and according to another forum user somewhere on the internet it should support 256GB.
        Yet using the MP3 player with a PC as an SD card reader is a failure as all SD cards above 32GB are exposed to the host PC as being 10 to 12mb and unformattable.
        This proves a lot of the MMC and SD stuff is mostly software oriented. For a start, quite a few SD cards including many of the newer above 64GB ones can be put into SDIO mode and R/WR to like an i2c mass-EEPROM/flash-ROM.

        *Millenials might not know what this is though, hint: It is where your mum/dad goes when they say they’re going shopping… unless they’ve been converted to use the computer for all shopping ;)

        1. Some of us Millennials are in our late thirties now (the cut-off is 1980), but when I used to shop in big stores they never had the range or cheap price that mail order companies did then, or online stores do now.

          1. Try MicroCenter if you have one in your town. They usually have smaller parts like SD cards at or near the shipped price from an online-only source, and their house brand cards (which they give away for free during the holidays) are just as reliable and fast as big-name cards in my testing. In fact, I’ve just today had a SanDisk (the freaking creators of the format) card die after only half a dozen write sessions, whereas I’ve got a 32GB MicroCenter card that’s been running in one of my Pis for nearly two years nonstop with no issues.

          2. So was the millennial period before the 90’s?
            I’m very certain, with scientific study that the late 90’s through early 00’s were the millennial period…
            Heck, the 70’s and 80’s were more the Gen-X and boomers era… ya know, free-love-to-win-back-the-wife era… that’s how I was conceived, LOL.
            I’ve got that Gen-X attitude, Nobody collectively can seem to brandish any label against I.

            The 70’s included bikers, rockers, modders, blah, blah… so even when the people of the generation didn’t want to be defined as a collective brand of generation, they’ve shown more individuality as sub collectives.

            LOL by trying to be different… people these days start to look and act the same… there are still a few people whom stand out.

            Back onto subject, those whom get spoon-fed the idea that something useless is great, they are more likely to chew than the generation-X period or the war-generation period… I.e. sub-par equipment, like SD-card readers that don’t read the card’s descriptor fully and auto-adapt and/or fall back onto a more compatible mode: MMC-mode.

  2. on hardware point of view there is no issue to read a sdhc card.
    But generally you will need firmware upgrade to decode properly sdcard registers to recognize a sdhc or more are there are evolution in legacy registers to handle the new size limitation. (typically address was expressed as byte but now the number is expressed as a sector number (so as sector has been fixed to 512 so the size can be 512 time bigger).
    My guess is that some checks aren’t done and then the sdcard is not rejected but read and written with maybe a bad full size or maybe a bad sector size. So the sdcard may work with a few files but i would not trust a lot the integrity of the whole file system.

  3. Many years since I’ve looked at it so my memory is hazy but I seem to remember these specs being specified by a simple bit field. Possibly the device in question doesn’t bother to check them and thus just assumes a maximum possible capacity.

    1. I have one somewhere. I used to drool over those things “back in the day”. MP3s were so much more fun back when everyone I knew was still paying up the !@## for high priced CDs. Spending all night surfing shady FTP sites and coming up with a half a dozen good MP3s felt like such an accomplishment. I was the first person I knew to wire my computer into my stereo to actually make those sound files worth listening to. I dreamed of one day owning a portable MP3 player so I could take my music with me.

      Later a friend gave me his when he was cleaning out his junk but by then I had no use for it. Maybe it can go to a museum some day?

    2. In 1999 I had its poor cousin, a MusicMatch SoulMate, in fact its still on the shelf here as a curio for visitors… It has only battery backed storage, so when the batteries go flat (no charging socket provision for nicads of course), it lost the entire contents, and they used to last about 3 days on average not turned on or playing much. To upload was a painful process too, it had a edge connector that plugged into a bespoke dock, and I think it was serial? it used to take a long time to put music on it and the upload software was terrible too. At the time it seemed like a revolution when you first got one, then after a few weeks reality dawned on you how bad it was and you went back to listening to mp3’s on your peecee with mono wireless headphones instead.
      When we had hovis for tea eh?

    3. I have a Rio 500, the first model of USB connected MP3 player on the market. I need to dig out an old laptop or something to put Windows 95 OSR2 on because it needs the memory repair/reformat tool used on it and that will not work on XP and later. Might not work on 98, 98SE, or Me.

      Hey, hacker peeps. How about a modern utility for ancient music players that *require* tracks to be transferred to them using their proprietary software since they do weird things with the cards that make them unreadable by anything else, or futz with the files during the transfer so they’re no longer standard MP3?

  4. I think it probably has to do with the card initialization. Either the SD Card he used doesn’t implement the standard correctly or the Player doesn’t. Perhaps the player sets the HCS bit as 1 which would tell the card it supports SDHC or SDXC cards. (See Physical Layer Simplified Specification V.6.00 under 4.2.3 from the SD Association.)

    1. No, the commands (esp. CMD17 and CMD18) have the same semantics in SPI and the SD bus, and the same SDSC/SDHC differences – see p. 138 in the specification, and footnote 10, as quoted before.

  5. [Gregg Eshelman], wrote to us to say that in 2004 he bought an MP3 player. Ask your parents about them, they were what hipsters used before they had cassette tapes: portable music players that everyone thought were really cool back then, onto which music didn’t come from the Internet but had to be manually loaded from a computer.

    Errrr..what?! I think (I hope!!!) your tryin to pull our leg, but cassette tapes absolutely pre-dates MP# players.

    Wax => 8-tracks => cassettes => MP3 Players=> IPOD => Digital Delivery (includes all the current stuff…)

    1. Woooosh!!!!

      Clearly that was a joke about the hipsters moving technologically backwards. Given their love of vinyl records, vacuum tube audio amplifiers and single-geared bicycles… I would say it is an appropriate one too.

      The hipsters of our children’s generation will probably be debating the merits of wax cylinder vs steel wire recordings as they ride on their pennyfarthings.

        1. Working in SF, i’ve been amazed at the number of unicycles, penny farthings,sit bikes (?), roller skates (like actual key using, sliding bridge type skates) and miscellaneous self mangled bicycles I’ve seen. Once would have been serendipitous, any more than that and I start looking for hidden cameras.

    2. He was referring to the modern resurgence in cassetee tape players used by “hipsters” like the ones that buy modern records pressed on vynil and wont’t shut up about it. Before the new era tape fad they would use aesthetic looking old stand alone mp3 players because that was their idea of cool.

      1. I’ve got an old stand alone MP3 player and it doesn’t make me cool. I’ve got it because the end of the MP3 era meant trying every infuriating auto-disorganizing music player on a sub-par PWM quality audio over headphone jack based phones that ended up obliterated due to the stress of trying to get them to play music in a sane and sensible manner.

        The problem is I organize my music like I’m still using MSDOS for document organization from my pre-school days!
        IMHO where I put the file containing the compressed sheet of sound-pressure over time lists, then I’d expect to be able tonavigate to it and play it… then the next file should be auto-queued. Yet suddenly Eminem is Screemo, Bob marley is DrumNbass and Florence+Machine is split into Gabber and hardcore!!! WTF?
        My MP3 player never does that! and that’s how an OCD music listener loves things to be!

        TL;DR not everybody with an MP3 player is a Hipster… sometimes it is a sanity reason.

        1. … Yes… The first computer I got to learn was an all-in-one CRT containing a 386, the games and stuff were on 5.5″ disks and I learnt CD, DIR, and to look for anything with .bat and .exe on the end that also had words like “start, begin, go, load, setup” or similar.
          Oh sorry Primary school… was trying to remember the American noun for it.. LOL

  6. Maybe it’s a case of the card being the awesome half of the equation and being programmed to fall back to and speak an old standard when necessary instead of the MP3 player possessing clairvoyance.

  7. Here is a question, since the GPX MW3836 player can also read MMC cards and that had a 128 GB limit from the beginning will it read a SD card up to or over 128 GB because of the MMC spec?

  8. flash was so expensive back then the earliest mp3 players like the archos jukebox used hdd storage. so it shouldn’t be surprising that the same filesystem on the pc was used on them.

    1. My empeg had space for two of them. It came with a whopping 20Gb drive. It still does duty today in the car as it has done for years but with an IDE to SD adapter. (cheaper than CF and I have lots of cards).
      It works extremely well and gives good audio output.
      Nothing touches it even today imho.

  9. I use an iFlash Dual to put SDXC cards into an iPod Video 5.5G. It works well, and there’s more space inside the case for other hacks!

    One slot serves the iPod, the other slot has a PQI Air Card. That is a microSD-to-SD and WiFi card adaptor that adds WiFi features to cameras. It uses the same firmware as the Transcend cards, but it has expandable memory because of the microSD slot. It draws power from the iPod when the iPod is rebooted in disk mode.

    Using the extra space in the iPod, I put a microSD male-to-SD female ribbon cable, and now I can read a full-size (not microSD) 512GB SDXC card over WiFi.

    I can also take an SD card from a friend, put it into the iPod, and share the photos over WiFi to my iPhone. It’s a WiFi card reader, but with an iPod as well. (and offline sync over USB of contacts & calendars).

    I have a plan to get two PQI Air Cards and make them create their own WiFi network and auto-sync files between my laptop and the office computer, but I didn’t write that code yet.

  10. Has he verified that the entire 64GB is accessible to the player?
    We have a player that will read a 64GB card that was formatted on the PC.
    But, it can’t play any of the songs past the 2GB mark. They show up in the directory, but nothing happens when you select them to play

  11. If I were to make an assumption, Linux kernel on device. User has sdxc card in a sdxc to sdhc adapter, and is using sdhc to sda access. File system supported, hardware supported through up standard intermediate devices. Do not forget the power of pipe.

  12. This player has no capability for formatting its internal 1 gig, nor can it format the SD or MMC cards. It also acts as a (rather slow) card reader/writer for the computer its plugged into via its Mini B USB 2.0 port. Could be its slow transfer mode is from using the MMC protocol on SD?

    The 64 gig card is a genuine SanDisk micro SDXC in the adapter that came with it. With it formatted exFAT, the host computer can read/write but the GPX cannot read it. It tries to read then switches to its internal storage.

    This is the FAT32 formatting utility I used, on its default settings.

    Before trying the 64 gig I’d previously used 1, 2, 4, 8, 16, and 32 gig cards in it. I have as a test written over 2 gig to each of them, so as a card reader/writer is supports the large size. There’s not a huge amount of music I really like. Filling up a 4 gig with MP3 files is pretty tough for my tastes in music.

    It would be very interesting to see someone with the electronic and software knowledge take one of these players apart to ID its components, and examine its firmware to see what makes it able to read SD card formats that didn’t exist when it was made. Mine has SUFFIX NO.:B1 on a label on its back. No idea if that has any significance.

  13. I still have my Creative Labs original Nomad MP3 player that hooks up to a parallel port. It will support a whopping 64MB, 32MB internal and 32MB memory card. I traveled a lot and people would ask me what I was listening to. I spent more time demonstrating the player than listening to it!

  14. SD cards have a single bit mode (serial) that can used legally without a license. Perhaps this old player uses the single bit interface and perhaps that interface is still supported by SDxc.

    The FAT is another thing but even so data is just sequential bytes once you get the start location right. Someone mentioned FAT16 which from memory was 512 bytes/sector but FAT16 was dead before SD cards came out.

    FAT32 and exFAT are not that much different. Even newer SDxc cards can be formatted with FAT32. FAT32 supports up to 2TB and is readable by most OS’s but most raw OS’s wont format that large in FAT32 even though they can read it so you need a format tool.

    1. With Windows 2000, Microsoft resurrected FAT12, applying it automatically when formatting any media of exactly 32 megabytes or less, even if the existing format was FAT16. I still have an old KB Gear JAMp3 that uses MMC. Ran into that “feature”. I had to get my hands on a computer running Windows 98SE to be able to reformat the card properly because there was absolutely zero way of forcing 2000 to format it properly. Nobody would write a utility to do it, nobody cared, unlike how there are several utilities to bypass Windows’ insistence on only using exFAT or NTFS on media over 32 gigabytes.

      It would be interesting to try MMC cards in excess of the JAMp3’s official maximum to see if it’ll read them when formatted FAT16.

  15. Two things: First it might be one of those ebay cards that don’t actually have 64GB at all (As others already suggested).
    Secondly using 64GB cards and using them at decent speed are two altogether different propositions I found.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.