Move GPIO mappings into a single module and select a board profile at process startup instead of at compile time: Build every GPIO-facing utility for every supported profile. At the same time, we remove support for the historical AIBOM board type since it's the only one using positive logic, the other three variants share the same electrical behavior.
Run piscsi, scsimon, scsiloop, scsidump, or sasidump with -C=STANDARD, FULLSPEC, or GAMERNIUM. FULLSPEC remains the default. To select a profile for the systemd service, set PISCSI_CONNECTION_TYPE and restart the service.
when you do Attach/Insert on an empty slot, you now get a list of all available device types instead of list of all images; picking one of them either attaches the device immediately, or takes you to a submenu for making additional choices (network topology, image file)
introduce image file filtering per the device type that is being attached, including filtered lists also for inserting media into existing removable devices
add an option to attach a removable device without inserting media
rather than scrolling a long status strings horizontally back and forth, we now have:
- ID and type as frozen columns
- scroll from left to right then wrap to the beginning
- 3 frame pause before scrolling starts
- 2 frame pause before a fully scrolled string wraps
- print product names for all non-file device types
- special abbreviation of SAHD->SA (to disambiguate with SCHD)
Use the validated image sector size to derive SCSIHD_NEC's sector shift count, instead of the complete image size. This restores correct capacity and MODE SENSE geometry for PC-98 HDN images.
Restore the sasidump tool for dumping physical SASI hard disks to local file through piscsi GPIO. It has been slightly refactored to align with the current C++ coding standards.
Port the X68000 SASI probe handling and completion-message behavior from the older RaSCSI SASI implementation.
Borrow BlueSCSI v2-compatible Assign Disk Parameters (0xC2) handling: accept its six-byte CDB and consume the ten-byte parameter payload.
Introduce a SASI controller and SAHD disk implementation alongside the existing SCSI path. Select the appropriate controller when attaching a device, prevent SASI and SCSI devices from sharing a target ID, and implement SASI-specific selection, message, status, timing, and LUN handling.
Restore SAHD in the protocol and expose it consistently through the device factory, command-line client, configuration validation, web interface, drive profiles, and manual. Enforce the two-LUN limit for SASI targets wherever device definitions are created or parsed.
Bring back handling of the hdf image format and map it to the SAHD device type. The hdf file ending is the established one for SASI raw disk images used in the X68000 emulation community, however it is a raw data format without any special header.
Add focused C++ and Go coverage for SASI devices, controller selection, LUN validation, and web-facing behavior.
now users are expected to either install a binary deb package or use the build system directly when installing piscsi and the clients
create an INSTALL.md file with instructions how to use both the Makefile and Meson build systems
easyinstall.sh has been restructured to handle companion app installation solely, while the Netatalk installation script uses the Debian package instead of compiling from source
move the network configuration ASCII graphics over to the piscsi-network-profile script
Refactor the DaynaPort TAP driver around explicit bridge and proxy-ARP profiles. Validate the selected interface and profile before creating piscsi0, attach it only to the preconfigured bridge when appropriate, derive a stable DaynaPort MAC address from the uplink, and make TAP setup and cleanup robust.
Add managed host networking profiles for wired bridging and Wi-Fi proxy ARP. Install the PiSCSI NetworkManager templates, profile-management command, parprouted and DHCP relay system services, udev/sysctl hooks, and configuration file so a selected Wi-Fi uplink can provide proxy-ARP networking without altering connectivity during package installation.
Expose DaynaPort profiles consistently through the protocol, daemon, scsictl, and web UI. Report interface type, state, and supported modes; require or default explicit mode/interface pairs on attach; present eligible wired-bridge and Wi-Fi proxy-ARP choices; and validate selections before attaching an SCDP device.
Package and document the new networking workflow. Add the profile utility and required runtime assets to Debian packages, expand the manual-page set and web manual index, update DaynaPort command help, and extend unit and handler tests for the profile-aware behavior.
- Extract selected archives directly into the image directory, skip existing images, and move properties files into the configuration directory without duplicate temporary storage.
- Limit no-media selectors to compatible image types, render device parameters without Go map delimiters, and return uploads to the upload page.
- Limit web uploads to the largest supported drive preset and simplify upload/download destination selection.
- Generate the shared Go project version from the C++ source, expose it through -v in the web, OLED, and Control Board clients, and verify it in Make, CI, and Debian builds.
- Update tests and documentation for the corrected web workflows and version flags.
when placed in the Mac drivers dir and renamed to 'miniscsi.bin' the Web UI
can create a working HFS disk image to be mounted on a classic Mac
MiniSCSI is a free and open source alternative to historical Mac drivers:
https://github.com/ingpaschke/miniscsi
currently, only a m68k driver is available so PPC Macs are not supported
additionally, the Web UI will scan the Mac drivers dir for any file ending
in .bin or .img and will enumerate them for the disk image creation form;
before, only a few named images were offered as options
while the timestamp when the binary was built can be handy for
knowing when a development build was created, it breaks reproducible
builds which is a fatal error when doing Debian deb packaging
also strips away the redundant trailing version string from the banner
Debian deb packaging files for all four targets: piscsi, piscsi-web,
piscsi-oled, piscsi-ctrlboard
build instructions for Trixie specifically in README.Debian
consolidate all systemd unit files and standardize on /usr/bin
for all binaries
Replace getopt() and usleep() dependencies with portable C++ parsing and sleeps. Refuse to execute the GPIO loopback diagnostic off Linux/Raspberry Pi hardware, and omit the hardware-only target from non-Linux Meson builds.
READ TOC receives its allocation length from the initiator’s CDB and accepts values up to 65535 bytes. The controller’s transfer buffer is normally only 4096 bytes, so using that value directly could overrun the buffer and report more data than can be transferred.
Clamp the response length to the available buffer size and clear only that bounded range before constructing the response. Also bound the start-track scan before dereferencing the track vector, allowing a lead-out (0xAA) request to safely produce its descriptor when no matching track exists.
Add regression tests for the maximum allocation length and for READ TOC lead-out handling.