The FluxEngine is a very cheap USB floppy disk interface capable of reading and writing exotic non-PC floppy disk formats.
The hardware consists of a single, commodity part with a floppy drive connector soldered onto it.
The software is open source, find it on Github.
You will need a computer with an usb port; you can find the exact requirements on the FluxEngine web page. You will also need:
- the FluxEngine hardware itself
- a usb to micro-usb cable for connecting the FluxEngine to the computer
- a floppy cable, for connecting the FluxEngine to the floppy drive
- a floppy drive capable of reading the floppies you want to read
- a power supply for the floppy drive. Except for 3.5 inch drives, you can't power the drive from the usb port (this might change in the future with USB-C)
You also need a bit of storage space for the images you capture.
Note: Recent versions of the FluxEngine software allows you to use the Greaseweazle hardware, but at the time of writing this text, the Greaseweazle hardware need to have firmware <= 0.22 (there were incompatible changes in firmware 0.23), see pull-request #221 for details. I have tested reading floppies with gw hw and fe sw, and it works, see testing subpage.
The FluxEngine software and how to configure it is described on the FluxEngine webpage and will not be repeated here. Note: you need a Windows machine for the proprietary Cypress software (PSoC Creator) for compiling and loading firmware onto the FluxEngine. If you need additional software, for example ndfs to work with ND filesystem format images, you should install and test it.
Usage is simple (I'm using a Linux command line for this example, and the fluxengine binary is in the parent directory)
$ ../fluxengine fluxengine: syntax: fluxengine <command> [<flags>...] Try one of these commands: erase: Permanently but rapidly erases some or all of a disk. inspect: Low-level analysis and inspection of a disk. rpm: Measures the disk rotational speed. seek: Moves the disk head. testbulktransport: Measures your USB bandwidth. upgradefluxfile: Upgrades a flux file from a previous version of this software. read: Reads a disk, producing a sector image. write: Writes a sector image to a disk. writeflux: Writes a raw flux file. Warning: you can't use this to copy disks. writetestpattern: Writes a machine-generated test pattern to a disk.
to see help for the read command
$ ../fluxengine read --help fluxengine: syntax: fluxengine read <format> [<flags>...] These formats are supported: adfs: Reads Acorn ADFS disks. aeslanier: Reads AES Lanier disks. amiga: Reads Commodore Amiga disks. ampro: Reads Ampro disks. apple2: Reads Apple II disks. brother: Reads 120kB and 240kB Brother word processor disks. c64: Reads Commodore 64 disks. dfs: Reads Acorn DFS disks. f85: Reads Durango F85 disks. fb100: Reads FB100 disks. ibm: Reads the ubiquitous IBM format disks. mac: Reads Apple Macintosh disks. mx: Reads MX disks. victor9k: Reads Victor 9000 disks. zilogmcz: Reads Zilog MCZ disks.
help for the read ibm command
tingo@kg-bsbox:~/personal/projects/psoc/fluxengine/tmp$ ../fluxengine read ibm --help FluxEngine options: --revolutions <default: "1">: read this many revolutions of the disk --pulse-debounce-threshold <default: "0.300000">: Ignore pulses with intervals short than this, in fractions of a clock. --bit-error-threshold <default: "0.200000">: Amount of error to tolerate in pulse timing, in fractions of a clock. --clock-interval-bias <default: "-0.020000">: Adjust intervals between pulses by this many clocks before decoding. --source, -s <default: ":d=0:s=0-1:t=0-79">: source for data --write-flux, -f <default: "">: write the raw magnetic flux to this file --just-read: just read the disk and do no further processing --dump-records: Dump the parsed records. --retries <default: "5">: How many times to retry each track in the event of a read failure. --high-density, --hd: set the drive to high density mode --output, -o <default: "ibm.img">: The output image file to write to. --sector-id-base <default: "1">: Sector ID of the first sector. --help, -h: Shows the help.
fluxengine uses the default values, so specify options if you want to change them. Example: we want to read 77 tracks from the source, so we specify
reading a ND format 17b floppy (the ND format is a variation of the IBM format)
$ ../fluxengine read ibm -s :t=0-76 --retries=0 -o name.img
$ ../fluxengine read ibm -s :t=0-76 --retries=0 --revolutions=2 -o test-nd-525-210523g02-xx-01d_r2.img
reading ND format 0b floppies - these are just single-sided version of the above, so
$ ../fluxengine read ibm -s :s=0:t=0-76 --retries=0 -o name.img
In this section we can share tips to fix problems.
FluxEngine gets confused
A couple of times FE (FluxEngine) has become confused and tried to write 254 tracks or something. The fix is to unplug FE from the usb port (which gives it power) and plug it back in, then retry.