1467 Commits
Author SHA1 Message Date
Daniel Markstedt f583ae0687 restore hyperlinks to sponsor usernames tmp 2026-08-31 12:58:32 -07:00
Daniel Markstedt 1ee4a320b8 replace compile-time board types with runtime profiles
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.
2026-08-31 21:55:50 +02:00
Daniel Markstedt 4653db7313 ability to attach all devices in the Control Board UI
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
2026-08-31 07:16:21 +02:00
Daniel Markstedt c292364b44 improved horizontal scrolling and columns in OLED client
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)
2026-08-30 18:27:17 +02:00
Daniel Markstedt b9147e5b33 correct LUN description for SASI in piscsi man page 2026-08-30 01:43:42 -07:00
Daniel Markstedt 369156ec9f update minimum execution time for SASI in man page
Clarify default execution times for SCSI and SASI commands.
2026-08-30 01:42:28 -07:00
Daniel Markstedt 1a51f2441e add 'sasidump' entry to manpage test 2026-08-30 01:29:49 -07:00
Daniel Markstedt 03692438fa add sasidump to piscsi-web manpage index 2026-08-30 01:22:22 -07:00
Daniel Markstedt 69535c772b fix NEC image sector size handling
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.
2026-08-30 09:13:03 +02:00
Daniel Markstedt a0c3c41f2c the Sleep() function now takes a parameter
common bus wait times are now defined in a central place, and passed to the Sleep() function
2026-08-30 08:27:35 +02:00
Daniel Markstedt bbf50d504a restore the sasidump utility
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.
2026-08-30 08:27:35 +02:00
Daniel Markstedt e972b3c31a explicitly wait for protobuf source to be generated 2026-08-30 08:27:35 +02:00
Daniel Markstedt 1b9f279e61 introduce X68000 SASI compatibility quirks
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.
2026-08-30 08:27:35 +02:00
Daniel Markstedt e57893893c restore support for SASI disk drive device
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.
2026-08-30 08:27:35 +02:00
Daniel Markstedt 099aace7f9 Update documentation URL in piscsi-web.service 2026-08-29 23:08:07 -07:00
Daniel Markstedt af834bf019 update scsiexec tarball URL and fix install logic 2026-08-27 22:59:43 +02:00
Daniel Markstedt 12403ff83b install piscsi.service with the meson build system 2026-08-27 22:59:43 +02:00
Daniel Markstedt 087bf241a3 correct language spellings 2026-08-27 22:59:43 +02:00
Daniel Markstedt 48ed872a99 rewrite companion service detection with systemd 2026-08-27 22:59:43 +02:00
dependabot[bot] 85d886fbae Bump actions/upload-pages-artifact from 4 to 5 in /.github/workflows
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-27 12:41:47 +02:00
dependabot[bot] 7d33f48c56 Bump actions/deploy-pages from 4 to 5 in /.github/workflows
Bumps [actions/deploy-pages](https://github.com/actions/deploy-pages) from 4 to 5.
- [Release notes](https://github.com/actions/deploy-pages/releases)
- [Commits](https://github.com/actions/deploy-pages/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/deploy-pages
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-27 12:41:15 +02:00
Daniel Markstedt 576dd5222b move compilation out of easyinstall.sh
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
2026-08-26 23:43:18 +02:00
Daniel Markstedt f902357b2e refine build details in Debian readme 2026-08-24 19:41:15 +02:00
Daniel Markstedt 1edf393f7c add project description to docs site 2026-08-23 18:35:42 +02:00
Daniel Markstedt b75cdfc7ae touch up docs site 2026-08-23 18:09:11 +02:00
Daniel Markstedt 0dd4e72031 create workflow for publishing to Pages 2026-08-23 17:51:26 +02:00
Daniel Markstedt f8675e0e5c create a man page documentation website 2026-08-23 17:40:58 +02:00
Daniel Markstedt d7d31ff8f9 clean up gitignore 2026-08-23 17:40:58 +02:00
Daniel Markstedt e9e48b7fca remove plain text man page generation 2026-08-23 17:40:58 +02:00
Daniel Markstedt 7c1cc81930 overhaul README 2026-08-23 14:45:47 +02:00
Daniel Markstedt 57dfca91c8 meson: rename build targets option to 'targets' 2026-08-23 14:45:47 +02:00
Daniel Markstedt f103292867 fix error in ReadProxyArpUplinkFile unit test 2026-08-23 14:45:47 +02:00
Daniel Markstedt cbf399cc30 bump release version to 26.8.1 2026-08-23 14:45:47 +02:00
Daniel Markstedt e2735813a3 parprouted bridge for SCDP adapter
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.
2026-08-23 12:15:13 +02:00
Daniel Markstedt 0b4ffd5998 piscsi-web: add an upload progress indicator
introduce preflight validation that the target file doesn't already exist
2026-08-22 00:26:25 +02:00
Daniel Markstedt 27da017951 improve media workflows and version reporting in Go clients
- 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.
2026-08-22 00:26:25 +02:00
Daniel Markstedt 95ed9e924a piscsi-web: add support for MiniSCSI driver for HFS image creation
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
2026-08-21 18:44:47 +02:00
Daniel Markstedt 19e68ea408 instructions for building natively on amd64 2026-08-21 07:09:06 +02:00
Daniel Markstedt faa55ba0b8 install a default.json config template with the piscsi-web deb 2026-08-21 07:09:06 +02:00
Daniel Markstedt d8ff0abbad bypass check for piscsi-web templates dir in production mode 2026-08-21 07:09:06 +02:00
Daniel Markstedt 4692acb744 use the current branch workflows and not the primary branch versions 2026-08-21 07:09:06 +02:00
Daniel Markstedt 2643ecb657 use explicit http.Server to initialize the web server
and pin Go builds to the latest security patch level 1.25.13
2026-08-21 07:09:06 +02:00
Daniel Markstedt de7ce9b40a read drive properties config file from /etc/piscsi-web 2026-08-21 07:09:06 +02:00
Daniel Markstedt 420d4eea21 remove compile time stamps to enable reproducible builds
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
2026-08-21 07:09:06 +02:00
Daniel Markstedt fa878e3133 create Debian packaging files
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
2026-08-21 07:09:06 +02:00
Daniel Markstedt 08d24a2dec fix typo in piscsi documentation
Corrected the spelling of 'maximum' in the documentation.
2026-08-17 23:28:15 +02:00
Daniel Markstedt 51ac8cb42d properly initialize piscsi controller before running test
also, add assertions to the GetInitiatorId calls right afterwards
2026-08-17 19:57:05 +02:00
Daniel Markstedt 353bb48878 bump copyright years to 2026 2026-08-17 19:56:46 +02:00
Daniel Markstedt a4b64fc1eb scsiloop: gate hardware diagnostics by platform
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.
2026-08-15 16:33:15 +02:00
Daniel Markstedt fec28e6795 bound CD-ROM READ TOC allocation length to the transfer buffer
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.
2026-08-11 07:05:54 +02:00