Adafruit Hack Chat Helps You Copy That Floppy

Floppy disks

You might think the era of the 3.5 inch “floppy” disk is over, and of course, you’d be right. But when has that ever stopped hackers before? Just because these disks are no longer being manufactured doesn’t mean you can’t find them, or that the appropriate drives aren’t readily available. In fact, as [Ladyada] explained during this week’s Floppy Interfacing Hack Chat with Adafruit, the ongoing chip shortages mean its often easier and cheaper to track down old hardware like this than it is modern microcontrollers and other high-tech components.

Hack Chat posterWhat awaits the brave hacker that picks up a box of random floppies and a dusty old drive at the local thrift store? More than you might expect. As the Hack Chat goes on, it becomes increasingly obvious that these quaint pieces of antiquated technology can be rather difficult to work with. For one thing there are more formats out there than you’ve probably considered, and maddeningly, not all drives are able to read all types (even if they say they do). That means a disk which might seem like a dud on one drive could work perfectly fine in another, which is why the team at Adafruit recommend having a few on hand if you want to maximize your chances of success.

Now here comes the tricky part: unless you happen to have a 1990s vintage computer laying around, getting these drives hooked up is decidedly non-trivial. Which is why Adafruit have been researching how to interface the drives with modern microcontrollers. This includes the Adafruit_Floppy project, which aims to port the well known Greaseweazle and FluxEngine firmwares to affordable MCUs like the Raspberry Pi Pico. There’s also been promising developments with bringing native floppy support to CircuitPython, which would make reading these disks as easy as writing a few lines of code.

But wait, surely this is a solved problem? Why not just pick up a cheap USB floppy drive from the A to Z online retailer we all love to hate? Unfortunately, these gadgets are something of a mixed bag. [Ladyada] pulls one apart on camera to show that what you’re actually getting with one of these units is a new old stock laptop floppy drive hooked up to a dodgy purpose-built chip that connects to the original 26-pin flex cable and offers up a USB interface. That would be great, if it wasn’t for the fact that the chip is exceedingly selective about what kind of disks it will read. If you’re only worried about bog standard IBM-formatted disks they can work in a pinch, but like they say, you get what you pay for.

So is it all just academic? Is there really any reason to use a floppy disk in 2022? The fine folks at Adafruit would argue that the skills necessary to read usable data out of a stream of magnetic flux changes may very well come in handy in unexpected ways down the road. But even if not, there’s at least one good reason to cultivate the technology required to reliably read from these once ubiquitous storage devices: archiving the data stored on these disks before they invariably succumb to so-called “bit rot” and are potentially lost to history.


The Hack Chat is a weekly online chat session hosted by leading experts from all corners of the hardware hacking universe. It’s a great way for hackers connect in a fun and informal way, but if you can’t make it live, these overview posts as well as the transcripts posted to Hackaday.io make sure you don’t miss out.

22 thoughts on “Adafruit Hack Chat Helps You Copy That Floppy

  1. Still plenty of expensive industrial equipment around, with floppies inside dusty documentation pouches that contain the only backup of the software needed to run the machines.

  2. IBM still makes mainframes and I would guess they would still occasionally need terminal controllers. The older controllers used 5.25″ floppies (DSDD if I remember correctly) to store bit code and/or configurations. Would think that they would have been “upgraded” to 3.5″ floppies or beyond at some point, but, ya know, IBM…

    Might be some of those around gathering dust but still working away.

    1. You young thing you. The IBM 370/168 used to boot its microcode from an 8 inch floppy. Single sided 40 track if I remember correctly. Maybe there is a hacker even older than me out there that can provide details. Now I think about it, was if IPL or critical error logging, or both?

  3. Recently finished a project for a local machine shop. Virtualizing a lathe control system from the 90s. I needed to copy data from several hard drives that have been running every day since 1990(or so), and almost 100 floppy disks. Bit rot is very real, I found DDRescue to be indispensable. You can bang away repeatedly 1 sector at a time on a floppy until you get all the data is that is possibly recoverable. I used an older Core2 board that has a real IDE/floppy interface and a properly vintage Floppy drive pulled from a Pentium 1 a tower that hadn’t been used since the 90s.

  4. Has anyone ever done a floppy capacity contest? Like…. store the most amount of non-compressible data on a regular 3.5″ unmodified floppy disk using any means possible. Maybe another contest for the same thing, except without opening the disk cover.

    1. Easy. Get an LS240 drive and it can pack 32 megabytes of uncompressed data onto a 1.44M floppy disk, but it has to write it all in one go. Then it can do random reads from it. If only all the big OEMs had gotten together when the 2.88M floppy was introduced and decided that going forward ALL of their computers would ship with 2.88M drives.

      IIRC IBM and Compaq were the only major OEMs to make 2.88M an option, and like with dual layer DVD-R all the retailers flat out refused to stock 2.88M disks in anything but way overpriced packs of a few disks.

      1. Getting your hands on a working LS240 drive would be the not so easy part. One popped up on ebay about a month ago from my saved search but was gone in 10 minutes. I use an LS120 with an IDE adapter on my desktop for working with floppies. Best drive out there for it and dang fast too.

    2. Back in the days of my TRS-80 model 1, we figured out that we could format 40 track discs above 40 tracks….something like 48 tracks I think. It got us extra storage….but the upper tracks only could be read/written in the specific Shugart drive we had. Stick it in another drive, and it couldnt move the head that far. Of course this was after punching a new index hole to make it a double sided disc…

  5. I used to service this old technology. A service was really just clean the heads, mechanics and electrical connectors check/replace any worn belts and adjust the mechanics (track alignment).

    If I cover the era from the late 70’s/early 80’s till now then most things have been covered in the video.

    What I can add is that there was a lot of technology put into the design of the actual head and this varied quite a lot between formats and the head needs to match the format. There are many formulas and theories that relate to this and it would help you to cover the basics if your going to get serious about restoring old disks that have otherwise become unreadable.

    For example a 40 track disk writes a wider track and has a wider head (recording/sensing area). You can write a 40 track disk with a 80 track drive and you get a narrower track which the 40 track head will have trouble reading. Even though the flux density is the same. The 40 track head is reading the average flux density over a wider area of the disk surface.

    I’ll try and explain better. The heads were designed so that there was an offset between side one and side two. It was a physical offset built into the head. Half the head was the reader/writer and the other half was just support on some drives. On cheaper drives it wasn’t obvious. Side one head was backwards to the side two head. The offset was half a track in total or a quarter of a track each side (head).

    So track 0 was closer to the center on head 0 than it was on head 1. This was so the heads weren’t writing to the exact oppose side of the disk where magnetic interference would be greatest.

    The design constraint on the number of tracks or Tracks Per Inch (TPI) wasn’t simply a limitation in flux density of the media though obviously that is one limitation. It was more about the track width, not because tracks needed to be so wide to store the information but because narrower tracks needed the mechanics to be much more stable and accurate otherwise with a narrower track the head could end up reading right beside where the data is and cause a lot of errors.

    The other things about heads is the media to head speed and the head flux gap. The narrower the head flux gap, the higher the frequency it can write. The higher frequencies need a smaller head gap and/or a higher media to head speed.

    This is very hard to see on floppy heads. It’s much easier to see on cassette heads, reel to reel heads and especially VCR heads where they write the tracks diagonally so they have a very high media to head speed without a high tape speed so they can record much higher frequencies.

    Heads are designed to suit the specific media densities they’re made for. A High Density head ISN’T better at reading a Double Density disk than a Double Density head.

    The best place to read the data is where it’s written (obviously). If you have a perfectly aligned drive and it won’t read a disk because the disk was written on a drive that was misaligned then if you deliberately misalign a drive to match the misalignment of the disk then it may read fine.

    If I had to read a difficult disk today then I would modify the drive so that I had more control of the track position. Perhaps micro-stepping the stepper but if I do that then I worry about getting the stepper drive current right so that there are no mechanical oscillations. If possible it would be better to have a different ratio – perhaps 3D print the worm drive or change the stepper, stepper pulley and band. I would target 8,10 or perhaps 16 sample spaces per original track and use software interpolation on top of that.

    Then I would tap directly off the head and use a loose but tunable PLL and a spectrum analyzer to see where I am tuning to. Mix both a strong sample of the PLL (as a pointer index) with a buffered signal from the head and send to the spectrum analyzer to give a tuning indication.

    Obviously the rest of the process is software and that’s the easier part.

    1. I think it was that “narrow head on a wider track” issue that made passing floppies between Amiga and PC such a nightmare. The Amiga could read and write a PC floppy using crossDOS, but (most) Amigas had a DD drive at the time that PCs had HD drives. So, I’d download something from Aminet onto a PC at work/school/university, save it to a 720k floppy (or, even more fraught, an HD floppy _formatted_ as a DD floppy!) then take it home to the Amiga. Would it work? Sometimes. Don’t get me started on trying to break up a large file onto multiple 720k disks. If I hadn’t been a poor student I’d have just got a modem and an internet account for the Amiga. Kids today don’t know how easy they have it, etc etc etc :-)

      Thanks to Adafruit for giving us more ways to manipulate floppies. Even if you never _need_ to use one, they are a great example of mechatronic systems.

      And thanks ITElite for the suggestion of DDRescue!

      1. I forget details, but there was also some incompatibility between Western Digital controllers, and the 765 used by theIBM PC. There were workarounds, but there was some issue.

Leave a Reply to Iván StepaniukCancel 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.