Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Physical floppy drives (FluxBridge)

Copperline can interface directly with real 3.5" floppy drives connected to the host via a Greaseweazle USB controller. Hardware communication is handled by the FluxBridge library.

When using a physical drive, the bridge streams MFM data to Paula and disk DMA, allowing trackdisk.device and custom loaders to operate as they would on hardware.

Requirements

FluxBridge is compiled into Copperline by default. To build without physical drive support:

cargo build --release --no-default-features \
  --features "midi,frontend,wasm-boards,control,ctl-bin,net-nat,net-bridge,mt32,cpu-jit,profile-stats"

Configuration

In the launcher, navigate to the Floppy tab and enable the Physical drive checkbox for the desired bay (DF0: through DF3:), then select Configure.

In copperline.toml:

[floppy.df0]
bridge = "greaseweazle"      # "greaseweazle" or "off"
write_protected = true       # emulator-level write protection (default: true)
# bridge_port = "/dev/ttyACM0"   # serial port path (omit for auto-detection)
# bridge_cable = "a"             # "a"/"b" (PC cable) or "0".."3" (Shugart)
# bridge_density = "auto"        # "auto", "dd", or "hd"
# bridge_mode = "normal"         # "normal", "compatible", or "stalling"
# replay_speed = "fast"          # "fast" (default) or "normal"

From the command line:

copperline --model A500 --floppy-bridge df0 greaseweazle kickstart.rom
Command-line flagConfiguration keyDescription
--floppy-bridge DFN NAMEbridgeEnable bridge device (greaseweazle or off)
--floppy-bridge-port DFN PORTbridge_portSerial device path (default: auto-detect)
--floppy-bridge-cable DFN SELbridge_cableCable drive select (a, b, 0..3)
--floppy-bridge-mode DFN MODEbridge_modeRead mode (normal, compatible, stalling)
--floppy-bridge-density DFN Dbridge_densityTrack density (auto, dd, hd)
--floppy-replay-speed DFN SPEEDreplay_speedReplay rate (fast, normal)
--floppy-bridge-writable DFNwrite_protected = falseAllow disk writes

Serial port detection

By default, Copperline automatically scans for connected Greaseweazle devices. If multiple serial devices are attached, set bridge_port explicitly (e.g., /dev/ttyACM0 on Linux or COM3 on Windows).

Cable conventions and drive select

bridge_cable sets the drive select signal:

Ensure this matches your physical cabling and drive jumper configuration. Disk change detection is supported on PC cables; on Shugart configurations, disk swaps are detected during subsequent read operations.

Density detection

bridge_density defaults to auto, detecting bit timings directly from flux transitions. You can explicitly force dd or hd if reading non-standard disks (such as high-density media formatted as double-density).

Read modes

Replay speed

Once a track is verified and cached in memory, replay_speed controls how fast subsequent reads of that track are served:

Write protection and disk writes

To write to a physical disk, two requirements must be met:

  1. The physical write-protect tab on the 3.5" disk must be set to writable.

  2. write_protected = false (or --floppy-bridge-writable) must be specified in the configuration.

Writes are verified and committed directly to the physical medium. Full-track revolution writes can start at any rotational position. However, partial track writes that do not begin at the index pulse are refused because the hardware interface cannot accurately position an offset partial write.

Operational differences from disk images

Troubleshooting