How to Make a Low Cost DIY SD Card Duplicator

If you have to duplicate many SD cards for example to boot Raspbian on multiple Raspberry Pi board, one option is buy one of those SD card duplicators, but the problem is that they are not really cheap, for example the Systor 1-to-7 cards model sells for $540.

Bob Brown, a retired senior lecturer, is now teaching K-12 students how to get started with Raspberry Pi boards, and must prepare bootable SD cards for his class. In order to save time, a duplicator would have been nice, but the price is too high, so instead he went with a DIY solution.

DIY SD Card Duplicator
DIY SD Card Duplicator – Image Source: Richard Hayler

You’ll first need some hardware, including a powered USB hub with the number of cards you want to duplicate, and corresponding SD card reader, and a larger micro SD card to hold Raspbian and/or other operating systems (optional, only for Raspberry Pi based duplicator). Mr. Brown made a 10-port SD card duplicator (1-to-9) for just under $100.

One the software side, he’s used to utilities. PiShrink used to reduce to size for the firmware image of the SD card you want to duplicate so that it can fit into SD card with a slightly smaller size, and dcfldd to handle dumping the firmware to multiple cards in one command.

Example for PiShrink:


Example for dcfldd to copy the firmware to 4 SD cards in one go, after installation:


Mr. Brown used a Raspberry Pi to run the command, you could also use your Linux PC instead.  It takes about eight minutes for one card, and up to 20 minutes for 10 cards with the Raspberry Pi board. You’ll find the full details about the setup on Kennesaw State University website.

Support CNX Software - Donate via PayPal or become a Patron on Patreon

9
Leave a Reply

avatar
4 Comment threads
5 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
DroneJerrySingmanmaurertheguyuk Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
tkaiser
Guest
tkaiser

Strange advices. While dcfldd is of course available on other distros than Debian (and even totally different platforms — on macOS for example it’s just a ‘brew install dcfldd’) of course it’s a horrible idea to use it to burn SD cards for the same reason dd sucks with this use case in general: no verify. Using dd or dcfldd is a great way to write garbage to the SD card without being notified.

If I have to write a bunch of SD cards I only use Etcher for the obvious reason that a verify is always needed. I insert the first, then check which disk device it is (diskutil list) and then use a simple while loop:

When using great performing SD cards (those better A1 rated ones) and a fast USB3 attached card read this is done faster in a sequential fashion compared to attaching USB hubs to an SBC that is only USB2 capable. SanDisk Extreme A1 in my MacBook’s card reader write/verify with constant 80 MB/s.

Singman
Guest
Singman

Just no, your method is good for a few cards, not for a batch. “dcfldd” is NOT “dd”, that program include a few options to verify data written, and it could output to multiple disks at the same time. This is the feature you missed.

Jerry
Guest
Jerry

Nobody really cares about write speed. With RPI and the hub many cards can be written in parallel.

theguyuk
Guest
theguyuk
tkaiser
Guest
tkaiser

Using ‘dd’ to create a master image? Weird. I would use ‘ddrescue -d’ for this most important step.

theguyuk
Guest
theguyuk

There is also a Python based project again using a rpi and usb hubs, it is on Github.

theguyuk
Guest
theguyuk

Also came across this, has anyone tried it on PC?

Free for private use

https://www.osforensics.com/tools/write-usb-images.html

maurer
Guest
maurer

what about 9.99 $ ?
if you’re cheap and can wait up to 1 month you can get a 10-port usb hub + 10 uSD card reader for about 10 bucks shipping included from ebay or aliexspress
🙂

Drone
Guest
Drone

Isn’t there a way to do this over a network with something like PXE-Boot [Preboot Execution Environment – Boot]? Once up, each machine writes the new image received over the network to it’s own USB drive. No need for a big USB hub and plugging-unplugging nonsense.