Introducing GNOME MultiWriter

I spent last night writing a GNOME application to duplicate a ton of USB devices. I looked at mdcp, Clonezilla and also just writing something loopy in bash, but I need something simple my dad could use for a couple of hours a week without help.

It’s going to be super useful for me when I start sending our LiveUSB disks in the ColorHug box (rather than LiveCDs) and possibly useful to other people just wanting to copy a USB drive for QA testing on a small group of people, a XFCE live CD of Fedora rawhide for a code sprint, and that kind of thing.

GNOME MultiWriter allows you to write and verify an ISO file to up to 20 USB devices at once.

Screenshot from 2015-01-02 16:24:35

Bugs (and especially pull requests) accepted on GitHub; if there’s sufficient interest I’ll move the project to git.gnome.org after a few releases.

Published by

hughsie

Richard has over 10 years of experience developing open source software. He is the maintainer of GNOME Software, PackageKit, GNOME Packagekit, GNOME Power Manager, GNOME Color Manager, colord, and UPower and also contributes to many other projects and opensource standards. Richard has three main areas of interest on the free desktop, color management, package management, and power management. Richard graduated a few years ago from the University of Surrey with a Masters in Electronics Engineering. He now works for Red Hat in the desktop group, and also manages a company selling open source calibration equipment. Richard's outside interests include taking photos and eating good food.

11 thoughts on “Introducing GNOME MultiWriter”

    1. I’ve been testing with 10 devices, and it really starts to hammer the I/O subsystem as you make things more-and-more parallel. I’m just not sure more than 20 at one time is going to be any faster than just doing them 10 at a time. If you’ve got a usecase for this many drives I can look into just doing 10 at a time over the entire set.

  1. > I’ve been testing with 10 devices, and it really starts to hammer the I/O subsystem as you make things more-and-more parallel. I’m just not sure more than 20 at one time is going to be any faster than just doing them 10 at a time. If you’ve got a usecase for this many drives I can look into just doing 10 at a time over the entire set.

    Or even being smarter, and start writing to N drives (N being 5), then adding one by one with intervals of Y seconds (Y being 30), and stop when the total write speed is lower than previously.
    Obviosuly that might be just too complex for a simple program… Who has 20 USB ports anyway (unless you have a large desktop and some hubs).

    Alternatively it could be a configurable thing (although would break the simplicity of the app…)

  2. Do you do anything to deal with USB bus saturation? In making a pile-o-thumbdrives I’ve experienced that once you get past writing a couple of devices throughput goes into the toilet – at least with standard desktop hardware? Do you interleave, rest, etc… anything to deal with that? Performance drops off pretty fast as you add more devices.

    1. For my own use-case I’m planning to use more than one USB root device (i.e. using a PCIe extender card too) and multiple 10x USB hubs. I’ve not done much profiling yet (I’m waiting for the shipment of drives from China) but I’m expecting there to be lots of low hanging fruit, e.g. doing write123, then verify123,write456 then verify456,write789 then verify789.

Comments are closed.