DaynaPort throughput improvements (Pico 2 W)
DaynaPort WiFi throughput improvements for the BlueSCSI v2 Pico 2 W (RP2350) target, with a
matching FreeMiNT driver for Atari. One firmware works on both Atari (FreeMiNT) and classic
Mac (System 7 with the Dayna 7.5.3 drivers).
Firmware changes (tag v2026.07.24-daynaport)
- READ(6) returns multiple [len, flags, payload, crc] records per command, matching the
DaynaPort SCSI/Link protocol. It batches up to 16 records in blind mode and 4 in polled
mode (about 6 KB, the real device's packet-memory size), sets the per-record "more pending"
flag from ring occupancy, and paces the records to match the Mac driver's timing. - A READ(6) batch that stops on a size or packet cap now emits a zero-length terminator record,
so the host stops at the end of the transferred data instead of parsing stale buffer bytes. - The inbound packet ring no longer reads as empty when full.
- The inbound ring is 48 slots on the Pico 2 W target (was 20).
- platform_millis() is derived from the 64-bit microsecond counter, fixing a timeout misfire at
the 71.6 minute wrap. - The read-ahead prefetch cache is invalidated when the image behind a target changes.
Atari side (FreeMiNT)
SCSILINK.XIF adds multi-packet WRITE(6) transmit batching and matching multi-record receive
batching. Source: atari-daynaport-driver.patch (GPL). Branch:
https://github.com/ingpaschke/freemint/tree/daynaport-throughput
Measured throughput
- Atari Falcon (68030, FreeMiNT): about 90 KB/s receive, 85 KB/s transmit (was 11 / 0.5).
- Mac SE/30 (System 7.5, Dayna 7.5.3): over 100 KB/s, including with virtual memory on and
writing to the same BlueSCSI.
Install
Firmware: copy the .uf2 to the RP2350 in BOOTSEL mode.
Atari: copy SCSILINK.XIF into the MiNT system directory (for FreeMiNT OS Distro 26.2 that is
C:\MINT\1-19-CUR).
Optional configuration
WiFiPowerSave in the [SCSI] section of bluescsi.ini controls the radio power-save mode. The
default (0) keeps power save off for low latency (for example ping and incoming connections).
Set it to 1 for lower power draw at the cost of higher latency on unsolicited inbound traffic.