Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsSome 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.
Recommended Free Tools
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
- 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.
Rank #2
- [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
- 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.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchInstall 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.
- Download the project with
git clone https://github.com/dhansel/ArduinoFDC.git, or obtain the repository files from GitHub. - Open
ArduinoFDC.inoin the Arduino IDE. Select the connected supported board and its serial port. - Set the sketch’s drive/media configuration to match the physical drive and disk. Check the drive documentation for density-select behavior.
- 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.
- Compile and upload the sketch. Open the Arduino Serial Monitor or another terminal at 115200 baud.
- 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
- 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.
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
- 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.
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.
Quick Recap
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.

