The In-Circuit SD Card Switch


For nearly every problem, it’s possible to engineer a solution, even if you’re dealing with an extraordinarily niche problem that might only apply to yourself. [Joel] wanted to be able to program the microSD card in his BeagleBone with a new bootloader or file system without removing the SD card from the target board. This is a peculiar requirement, and it’s highly doubtful a product or even a circuit exists for such a function. This meant [Joel] would need to roll his own board to accomplish the task.

The board is remarkably simple, housing a single microSD socket, two expansion headers for a microSD sniffer for a computer and an embedded board, an FTDI header, and a pair of 4-bit multiplexer/demultiplexers. The operation of the device is fairly straightforward: send a signal down the FTDI cable, and the board switches the onboard SD card from one device to another.

[Joel] has a video of his screen that shows him pulling off in-circuit SD card reading and writing. You can check that out below.


28 thoughts on “The In-Circuit SD Card Switch

  1. Took me a while from the picture to see what was actually going on. Would it have been any harder to only have one board with the two micro SD shape and contacts, instead of two large sparkfun breakouts connected the the board?

    1. The hard part was finding a PCB service to build one of the suitable thickness. The sparkfun boards are thin enough (0.75mm) to fit into an SD slot. I had otherwise had no reason to use them. Let me know if you have any suggestions of PCB fab houses that can build one of the required thickness (<= 0.75mm).

  2. “For nearly every problem, it’s possible to engineer a solution, even if you’re dealing with an extraordinarily niche problem that might only apply to yourself.”

    Am I the only person who feels this way almost all of the time? Somebody should create an easy to use place that is easy to search that can allow people to explore previous, related work (if possible) for things like this.

    1. Yeah, you’ll be surprised how many people have a similar problem that may be thought niche. Quite a few folks have shown interest in my board which I did not at all expect.:)

  3. If I had to do this, I’d probably use one of the generic (non-EyeFi) sd+wifi cards that have been on the market recently – the embedded linux they run has been hacked, so you could telnet into it and modify the data exported from the SD interface on the fly.

  4. I’ve too have faced a similar problem. I had a microcontroller writing data to a SD card and then creating a MSD for a computer to download the data via USB. But the having the microcontroller handle all the USB data meant slow downloads (~100kB/s) and complicated firmware! My solution was to use a specialized IC (MAX14502). It added made the BOM quite a bit more expensive but was worth it.

      1. Mouser stocks these ICs. But they are quite expensive. I ended up buying directly from MAXIM, which ended up being about 1/4 the price in low MOQ (25 or so). Also I found that you need to toggle the SD card’s power after the MSD has enumerated so that you can read the disk properly.

  5. I just got back to town, it was such a pleasant surprise to see my project featured on hackaday! I will reply to all comments and keep up with new ones.

    Thanks again hackaday, its very encouraging!

  6. 2 Years along, are there any updates on who is selling such devices, looks like this board would work for me, but ned a trial or some way to know if speed/bus timing will be an issue in advance? Any places to get a trial board?

    1. hey Jogi. I’m facing the same issue but I can’t order here in Brazil.
      Trying with a 4066 the switching between inputs didn’t work. Could you suggest a “common”/simple IC for switch the channels?

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.