Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

David Hansel’s open-source ArduinoFDC lets a supported Arduino control a real 3.5-inch or 5.25-inch floppy drive. Its USB connection is a serial link for commands and transfers—not a standard USB floppy drive that automatically mounts in Windows, macOS, or Linux. It is suited to learning, custom hardware projects, and ordinary sector-formatted disks; it is not a flux-imaging tool for preservation or copy-protection recovery.

What ArduinoFDC does—and what “USB” means

Modern computers rarely include floppy controllers, while conventional USB floppy drives offer limited, sector-oriented access. ArduinoFDC fills a different niche: firmware on an Arduino controls a conventional drive through its 34-pin interface. The computer sends commands to the Arduino over USB serial, using a terminal program. The Arduino handles drive signals, sector reads and writes, and formatting.

The communication path is computer → USB serial → Arduino → 34-pin cable → floppy drive. The disk does not normally appear as drive A: or as a removable USB mass-storage volume. Independent project coverage describes the same serial-terminal approach: Hackaday.io’s project page.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

David Hansel’s ArduinoFDC repository combines a low-level controller library, FatFS support for FAT disks, and an example program with ArduDOS, a disk monitor, and optional XModem transfers. The repository is licensed under GPL-3.0.

#1 Best Overall
Sale
4 Pack L298N Motor Drive Controller Board DC Dual H-Bridge Robot Stepper Motor Control and Drives Module for Arduino Smart Car Power Compatible with Arduino UNO MEGA R3 Mega2560
  • Using L298N made by ST company as the control chip,the module has such characteristics as strong driving ability,low calorific value and strong anti-interference ability.
  • L298n motor driver module can use built-in 78M05 for electric work via a driving power supply part.But to avoid the damage of the voltage stabilizing chip,please use an external 5V logic supply when using more than 12V driving voltage.
  • The l298n motor driver Using large capacity filter capacitor,this module can follow current to protect diodes,and improve the reliability.
  • Dual-channel H-bridge driver working mode creates higher working efficiency
  • To avoid damage the voltage stabilizing chip, please use an external 5V logic supply when using more than 12V driving voltage

Supported boards and floppy formats

The project names Arduino Uno, Leonardo, Nano, Pro Mini, Micro, and Mega as supported boards. Pin assignments differ by board family, and firmware pin definitions, timing, memory, and the physical serial connection matter; this is not a promise that every Arduino-compatible board will work unchanged.

Media Supported capacity Notes
3.5-inch DD 720 KB Drive and firmware must be configured for the media.
3.5-inch HD 1.44 MB Density detection and drive configuration can depend on the drive.
5.25-inch DD 360 KB Check drive power and cable wiring.
5.25-inch HD 1.2 MB Drive power, density selection, and configuration need particular care.

A 5.25-inch HD drive can use a DD disk, but the firmware needs the matching mode, DT_5_DDonHD. The supported drive/media settings are DT_5_DD, DT_5_DDonHD, DT_5_HD, DT_3_DD, and DT_3_HD. Incorrect selection can prevent reliable reads and writes. Density-select polarity varies among drive models, so check the drive’s manual or board markings rather than assuming one signal level works for all drives.

Hardware and wiring to plan before building

A basic setup needs a supported Arduino, a working floppy drive, a 34-pin cable or direct wiring, a separate supply for the drive, a USB cable, and a computer terminal. Match the drive’s power connector and voltage requirements: many 3.5-inch drives use 5 V, while 5.25-inch drives may also require 12 V. Check the specific drive label or documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
TIMESETL 5Pack L298N Motor Drive Controller Board DC Dual H-Bridge Robot Stepper Motor Control and Drives Module for Arduino Smart Car Power UNO MEGA R3 Mega2560
  • [High Quality] Main driver chip L298N, strong driving ability, strong anti-interference, low calorific value, afterflow diode protection, more stable and reliable for Arduino projects
  • [High Efficient] Double H bridge design, can drive one 2-phase stepper motor, one 4-phase stepper motor or two DC motors, high efficient
  • [Easy to Use] No assembly required. This L298N board comes ready to go. Just wire up motors and power, easy to use
  • [Parameter] External size 43*43*27mm / 1.69*1.69*1.06 inch, voltage 5V-35V, drive current 2A (Max single bridge)
  • [Wide Usage] Great for for Arduino DIY Smart Car Robot Power UNO MEGA R3 Mega2560 Duemilanove, if driving voltage is more than 12V, use external standard 5volt TTL outputs to switch the H-bridge circuits

The Arduino’s USB power should not be treated as a dependable supply for the drive motor. The project author notes that powering a 3.5-inch drive from the Arduino can work, but voltage drop in a USB cable caused problems in one setup; a separate drive supply is recommended. Keep drive power distinct from signal wiring and Arduino USB power.

34-pin signal mapping

The project’s wiring table assigns signals as follows. Odd-numbered signal pins are ground.

Floppy pin Uno/Mini/Nano Leonardo/Micro Mega Signal
2 13 13/16 42 Density select
8 7 8 47 Index
10 4 5 51 Motor Enable A
12 A1 A1 40 Drive Select B
14 5 6 50 Drive Select A
16 A0 A0 41 Motor Enable B
18 3 3 52 Step direction
20 2 2 53 Step pulse
22 9 9 46 Write data
24 10 10 45 Write gate
26 11 11/14 44 Track 0
28 12 12/15 43 Write protect
30 8 4 48 Read data
32 6 7 49 Side select
34 A2 A2 39 Disk changed
Odd-numbered signal pins GND GND GND Signal ground

Use the project’s wiring guidance alongside the table. Its SELECT and MOTOR assignments assume connection at the controller end of a twisted floppy cable; connecting at the drive end can reverse A/B assignments. Confirm ground continuity rather than assuming every cable connects every ground pin. A 1 kΩ pull-up on read data is strongly recommended: the Arduino’s internal pull-ups, approximately 20–50 kΩ, may be too weak for reliable HD reads.

Rank #3
2 Pack L298N Motor Drive Controller Board Module Stepper Motor Control DC Dual H-Bridge and Drives Module for Arduino Smart Car Power Compatible with Arduino UNO MEGA R3 Mega2560 (2)
  • L298N, as the main driver chip, has the advantages of strong driving capability, low heat generation, strong anti-interference ability, and low heat generation.
  • This module can use built-in 78M05 for electric work via a driving power supply part.But to avoid the damage of the voltage stabilizing chip,please use an external 5V logic supply when using more than 12V driving voltage.
  • Dual-channel H-bridge driver working mode creates higher working efficiency
  • This module adopts a large capacity filtering capacitor with continuous current protection function, which can follow the current protection diode to improve stability and reliability.
  • Size: 43 * 43 * 27 mm/1.69 * 1.49 * 1.06in

Optional shield

The repository supplies schematics and Gerber files for Uno and Mega shields. The basic shield requires a 34-pin IDC connector and two 1 kΩ resistors. Review the matching board documentation before fabrication: Uno shield schematic, Mega shield schematic, Uno shield Gerbers, and Mega shield Gerbers.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install the example firmware and make a cautious first test

The project repository contains the sketch and supporting files. Begin with reading, not formatting: the firmware can write to disks, so use a known-good, nonessential disk and keep valuable originals out of the drive.

  1. Download the project with git clone https://github.com/dhansel/ArduinoFDC.git, or obtain the repository files from GitHub.
  2. Open ArduinoFDC.ino in the Arduino IDE. Select the connected supported board and its serial port.
  3. Set the sketch’s drive/media configuration to match the physical drive and disk. Check the drive documentation for density-select behavior.
  4. Wire the 34-pin signals, verify grounds, add the recommended 1 kΩ read-data pull-up, and power the drive from a supply appropriate to that drive.
  5. Compile and upload the sketch. Open the Arduino Serial Monitor or another terminal at 115200 baud.
  6. With a nonessential disk inserted, check disk detection and attempt a read before any write or format operation.

To build a custom Arduino application, copy ArduinoFDC.h and ArduinoFDC.cpp for low-level access. For FAT support, also copy ff.h, ff.c, ffconf.h, diskio.h, and diskio.cpp, then include ArduinoFDC.h and ff.h.

Rank #4
PCA9685 16 CH 12Bit PWM Servo Motor Driver Board Controller IIC Interface for Arduino Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+ and Robot (2pcs)
  • Contains an I2C-controlled PWM driver with a built-in clock. It means, unlike the TLC5940 family, you do not need to continuously send it signals tying up your microcontroller; it's completely free running!
  • 5V compliant, which means you can control it from a 3.3V microcontroller and still safely drive up to 6V outputs, which is good when you want to control white or blue LEDs with a 3.4V+ forward voltage
  • Supports using only two pins to control 16 free-running PWM outputs – you can even chain up 62 breakouts to control up to 992 PWM outputs.
  • 3 pin connectors in 4 groups, so you can plug in 16 servos at one time (Servo plugs are slightly wider than 0.1" so you can only stack 4 adjacent ones on 0.1"-hole female headers.
  • 12-bit resolution for each output - for servos, that means about 4us resolution at an update rate of 60Hz.

Read, write, and format disks

Sector-level library

The library provides sector reading and writing, drive selection and type selection, motor control, disk-presence and write-protect checks, disk-change detection, and low-level formatting. Sectors are 512 bytes. The read/write functions require a buffer of at least 516 bytes, and sector data is stored in buffer[1..512], not buffer[0..511]. The format function requires a buffer of at least 144 bytes. Automatic motor start includes a one-second spin-up delay.

Low-level format is not a FAT format

formatDisk() lays down low-level sector structure and fills sector data with 0xF6; it does not create a FAT filesystem and does not automatically verify the entire disk. Read the disk afterward to test the result. ArduDOS’s format command is the DOS-like layer for initializing a usable FAT disk; do not confuse it with the library’s low-level formatting function.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Use ArduDOS and the disk monitor

ArduDOS is a small DOS-like shell for FAT-formatted disks. It operates on the selected drive, keeps the working directory at the disk’s top level, and has no ordinary cd command. Disk changes are not automatically detected; reselect the drive, such as a:, after changing disks.

Best Value
Sale
3.5in SSD Floppy Drive Emulator,SFR1M44 U100 1.44MB FAT32 USB SSD Floppy Drive Emulator&CD Screws,Plug and Play,Easy to Install,for Industrial Control Equipment
  • SFR1M44-U100 USB Floppy Drive Simulator a floppy drive simulator with high safety data performance, convenient installation and user friendly. Suitable for 1.44MB floppy disk drive industrial control equipment.
  • Built-in memory used to switch data and convert format between FAT16 / 32 and FAT12, and automatically save data when the power turned off.
  • The voltage 5V DC, the interface USB interface, 4-pin power plug (power supply), 34-pin plug (standard floppy disk drive).
  • You can search the root directory and data in 99 folders, plug and play, and highly secure data .
  • When you are not satisfied with this product, or when you do not know how to use this product, please us immediately, we will immediately improve the problem, and at the same time, we will give you a satisfactory answer to your question .
Command Purpose
dir [directory] List files in the current top-level view or a directory.
type filename Display a text file.
dump filename Show file contents in a dump view.
write filename Write a file.
del filename Delete a file.
mkdir dirname / rmdir dirname Create or remove a directory.
disktype 0/1/2/3/4 Select the drive/media type.
format [/q] Format a disk through the DOS-like layer.
monitor Enter the low-level disk monitor.
send filename / receive filename Transfer a file using optional XModem support.

For example, dir lists files, type README.TXT displays a text file, disktype 4 selects a type, format formats through ArduDOS, and monitor enters the monitor. Confirm the selected drive and disk before using any command that writes.

The monitor includes commands such as r track, sector[,side] to read a sector, w track, sector[,side] to write one, f to format, and x to exit. Letter case matters: lowercase r with track and sector reads a specified sector, while the standalone r command reads all sectors and reports their status. Other monitor commands control settings and report drive or disk state; consult the repository’s monitor command reference for the complete syntax.

Optional XModem file transfers

XModem is optional and uses the same serial connection as the command interface. In ArduinoFDC.ino, uncomment #define USE_XMODEM, compile, and upload again. Connect with an XModem-capable terminal; the project recommends Tera Term. Start the transfer from ArduinoFDC, then initiate the matching send or receive operation in the terminal. During a transfer, the shared serial channel cannot also display diagnostic messages. If a transfer stops and the prompt does not return, pressing Enter can restore the command prompt. The 115200-baud serial path is not a promise of modern disk-imaging speed.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshoot by the error, not by guesswork

Symptom or status Checks to make
No data / S_NOTREADY Check for a disk, drive power, MOTOR and SELECT wiring, READ and INDEX lines, and ground.
S_NOSYNC Check whether the disk is formatted, the DD/HD configuration is correct, ground is sound, and density selection is right.
S_NOHEADER Check STEP, STEPDIR, SIDE, track/sector/head parameters, disk format, and drive alignment.
CRC errors Try a known-good disk and inspect format compatibility, cabling, signal quality, and the 1 kΩ read-data pull-up.
S_NOTRACK0 Check STEP, STEPDIR, SELECT, TRACK0, drive power, and whether the drive can return to track zero.
Write verification failure / S_VERIFY Check WRITEGATE and WRITEDATA wiring, write protection, WRITEPROTECT input, and disk condition.

If reads fail inconsistently, recheck the cable end in use: the twisted section can change drive-select and motor assignments. Also verify that the firmware’s configured drive type matches the media and that the drive receives adequate power.

When ArduinoFDC is—and is not—the right tool

ArduinoFDC is a strong fit for an educational build, custom Arduino integration, direct sector experiments, or reading and writing ordinary FAT/MS-DOS disks with real 3.5-inch and 5.25-inch drives. It is a poor fit if the requirement is a normal mounted USB volume, a turnkey workflow, rapid imaging of a collection, or reliable recovery of damaged, copy-protected, or nonstandard media.

ArduinoFDC works at the sector level; it does not provide raw magnetic-transition capture. For preservation work, compare tools built around flux workflows. Greaseweazle and FluxEngine are open-source alternatives for flux-level imaging and unusual formats. Adafruit Floppy is another Arduino/RP2040-oriented development project; its documentation explains why ordinary USB floppy controllers cannot provide flux reads or handle damaged sectors in the same way. For Apple disk preservation, Applesauce offers a dedicated commercial ecosystem, with a focus different from a general Arduino build. For common 3.5-inch PC file transfers, an ordinary USB floppy drive is simpler, but is not a substitute for 5.25-inch control or flux capture.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.