Floppy Disk Analysis, Restoration & Recovery Tool
The Floppy Disk Workbench is a floppy disk analysis, restoration and recovery tool using Greaseweazle V4.1 for flux-level disk access. Floppy Disk Workbench provides tools for disk preservation, recovery, and analysis.
- Real-time flux waveform visualization - Oscilloscope-style view of magnetic transitions
- Pulse width histogram - Analyze MFM timing distribution
- Signal quality metrics - SNR, jitter, and weak bit detection
- Automatic format detection - MFM, FM, GCR, and non-standard formats
- Copy protection detection - Forensic analysis of protection schemes
- Multi-capture recovery - Read same track multiple times for statistical bit voting
- PLL tuning - Find optimal decoder parameters for marginal disks
- Convergence-based recovery - Automatically stop when no further improvement
- Bit-slip correction - Recover from synchronization errors
- Targeted recovery - Focus on bad sectors while preserving good data
- Scan - Full surface analysis with sector-by-sector health mapping
- Format - Write fresh formatted disk with verification
- Restore - Multi-pass recovery with configurable intensity
- Write Image - Write disk images to physical media
- Batch Verify - Verify multiple disks in sequence
- Head alignment measurement - Detect azimuth errors and track centering issues
- RPM stability monitoring - Real-time drive speed analysis
- Drive health assessment - Comprehensive drive diagnostics
- Single-page workbench layout - All controls accessible at once
- Circular sector map - Visual disk health with zoom and selection (2,880 sectors)
- Tabbed analytics panel - Overview, flux, errors, recovery, diagnostics
- Keyboard shortcuts - Fast operation access
- Dark/Light themes - Comfortable viewing in any environment
- Native system sounds - Audio feedback on Windows, Linux, and macOS
- 360KB 5.25" DD (40 cylinders, 9 sectors/track)
- 720KB 3.5" DD (80 cylinders, 9 sectors/track)
- 1.2MB 5.25" HD (80 cylinders, 15 sectors/track)
- 1.44MB 3.5" HD (80 cylinders, 18 sectors/track)
- 880KB DD (80 cylinders, 11 sectors/track)
- 1.76MB HD (80 cylinders, 22 sectors/track)
- 360KB DD (80 cylinders, 9 sectors/track)
- 720KB DD (80 cylinders, 9 sectors/track)
- DFS 100KB/200KB (FM encoding)
- ADFS 640KB/800KB (MFM encoding)
- Sector images: IMG, IMA, DSK formats
- Flux images: SCP (SuperCard Pro), HFE (HxC Floppy Emulator)
- Reports: PDF and HTML with embedded charts
- Greaseweazle V4.1 (or compatible V4, F7 models)
- 3.5" HD floppy drive (PC-type, 34-pin interface)
- USB connection to host computer
- Official project: Greaseweazle on GitHub
- Pre-built units available from various retro computing vendors
- 3.5" HD (1.44MB) - Primary support
- 3.5" DD (720KB) - Supported
- 5.25" drives - Experimental support
- Python 3.10 or higher
- PyQt6 (installed automatically)
- Greaseweazle library (installed automatically)
- Operating System: Windows, Linux, or macOS
pip install floppy-workbench# Clone the repository
git clone https://github.com/JYewman/Floppy-Disk-Restorer.git
cd Floppy-Disk-Restorer
# Install with Poetry
poetry install
# Or with pip in development mode
pip install -e .The following packages are installed automatically:
PyQt6- GUI frameworkPyQt6-Charts- Chart widgetsgreaseweazle- Hardware communicationnumpy- Numerical operationsbitarray- Efficient bit operationscrcmod- CRC calculationsreportlab- PDF generationpydantic- Settings validation
- Connect your Greaseweazle to a USB port
- Connect a 3.5" floppy drive to the Greaseweazle
- Power on the drive (some drives require external power)
# Using the installed command
floppy-workbench
# Or using Python module
python -m floppy_formatter- Click "Connect" in the Drive Control panel
- Select drive unit (usually Drive 0)
- The motor will spin up and RPM will be displayed
- Insert a floppy disk into the drive
- Click "Scan" or press
Ctrl+S - Watch the sector map fill in with disk health
- View flux data: Switch to the Flux tab in the analytics panel
- Recover bad sectors: Click "Restore" and configure recovery options
- Export disk image: Click "Export" to save IMG/SCP/HFE files
The scan operation reads all sectors and displays their status:
- Green: Good sector, data readable
- Red: Bad sector, CRC error or unreadable
- Yellow: Weak sector, marginal signal
- Blue: Currently being read
Scan modes:
- Quick: Sample tracks (fast overview)
- Standard: All sectors, single read
- Thorough: Multi-read verification
Format operations write fresh data to the disk:
- Standard: Normal format with verification
- Low-level Refresh: Rewrite all sectors to refresh magnetic signal
- Secure Erase: Multiple overwrite passes
For disks with bad sectors:
- Scan first to identify bad sectors
- Select recovery mode:
- Fixed Passes: Run exactly N format passes (1-100)
- Convergence Mode: Run until bad count stabilizes
- Enable Multi-Capture for statistical recovery
- Set recovery level:
- Standard: Traditional multi-pass recovery
- Aggressive: Adds PLL tuning
- Forensic: Maximum effort, all techniques
The Flux tab provides low-level analysis:
- Waveform view: See individual flux transitions
- Histogram: Analyze pulse width distribution
- Quality metrics: Signal-to-noise ratio, timing jitter
Save disk contents to files:
- IMG/IMA: Standard sector images (for working disks)
- SCP: SuperCard Pro flux format (preserves raw flux)
- HFE: HxC Floppy Emulator format
Settings are stored in platform-specific locations:
- Windows:
%APPDATA%/FloppyWorkbench/settings.json - Linux:
~/.config/floppy-workbench/settings.json - macOS:
~/Library/Application Support/FloppyWorkbench/settings.json
Example configuration:
{
"device": {
"default_drive": 0,
"motor_timeout": 30,
"seek_speed": "standard"
},
"display": {
"theme": "dark",
"color_scheme": "default",
"animate_operations": true
},
"recovery": {
"default_passes": 5,
"convergence_threshold": 3,
"multi_capture_revolutions": 5
}
}| Shortcut | Action |
|---|---|
Ctrl+S |
Start Scan |
Ctrl+Shift+F |
Start Format |
Ctrl+R |
Start Recovery |
Ctrl+Shift+A |
Start Analysis |
Space |
Pause/Resume |
Escape |
Cancel Operation |
Ctrl+Shift+C |
Connect/Disconnect |
Ctrl+M |
Toggle Motor |
Ctrl+0 |
Seek to Track 0 |
-
Check USB connection
-
Verify Greaseweazle LED is lit
-
On Linux, ensure user is in
plugdevgroup:sudo usermod -a -G plugdev $USER -
Try running with sudo:
sudo floppy-workbench
- Check disk is fully inserted
- Verify drive is connected to Greaseweazle
- Check drive power (some drives need external 5V/12V)
- Try a known-good disk
- Clean the drive heads
- Try a different disk
- Check for correct drive type (HD vs DD)
- Inspect disk for visible damage
If using Windows Subsystem for Linux:
-
Install USBIPD-WIN
-
In PowerShell (Admin):
usbipd list usbipd bind --busid <BUSID> usbipd attach --wsl --busid <BUSID>
-
Verify in WSL:
lsusb | grep -i greaseweazle
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
pytest - Submit a pull request
# Clone and install in development mode
git clone https://github.com/JYewman/Floppy-Disk-Restorer.git
cd Floppy-Disk-Restorer
poetry install --with dev
# Run tests
poetry run pytest
# Run linting
poetry run flake8 src/ --max-line-length=100
poetry run ruff check src/
poetry run black --check src/This project is licensed under the MIT License - see the LICENSE file for details.
- Greaseweazle - Keir Fraser's amazing floppy controller project
- PyQt6 - Riverbank Computing
- Feather Icons - Icon set by Cole Bemis
- Floppy Disk Preservation Community - For keeping magnetic media alive
Made with love for the floppy disk preservation community
