SCSI2Pi is the advanced alternative to the PiSCSI software. SCSI2Pi improves the emulation and the performance and requires less main memory. Further SCSI2Pi offers additional and extended tools and is compatible with the PiSCSI web UI. For the installation packages with the binaries are provided. Thus no time-consuming compilation is required.
SCSI2Pi emulates several devices like hard drives, CD-ROM drives, streamers, printers, DaynaPort network adapters or a realtime clock at the same time. You can easily add devices to computers like 68k Macs, Atari ST/TT/Falcon, Amigas, old PCs, Unix workstations or samplers. SCSI2Pi offers numerous extensions, new device emulations and bug fixes. These add to the extensive changes I contributed to the PiSCSI project in the past, when I re-implemented and modernized almost the complete codebase.
Within the PiSCSI project replacing the old, often buggy and unnecessary code did not have any priority. In addition, many of the features promised for a long time are not addressed. This is why I decided to further improve the software in a separate project. The major part of the PiSCSI device emulation (until release 24.04.01) has been contributed by me anyway.
The SCSI2Pi sources are public and installation packages with the binaries are provided. Installing SCSI2Pi is a matter of seconds.
The PiSCSI comparison and the SCSI2Pi news contain a list of new features compared to PiSCSI and the changes from one SCSI2Pi release to the next.
These are the most important of my contributions to PiSCSI until release 24.04.01:
- Client/Server architecture with well-defined remote interface (based on Google Protocol Buffers)
- Detailed information on the server properties
- Configurable server port
- scsictl also runs on an Intel or aarch64 Linux and can connect to SCSI2Pi on the Pi
- Localization of client messages
- Optional authentication in order to safeguard all operations
- Shutting down SCSI2Pi and shutting down/restarting the Pi (by remote interface or SCSI command)
- Device files (/dev/*) can be used as image files
- Support for hierarchical image folders
- Renaming, copying and deleting of image files
- Removable media drive support
- Support of DVD images
- Configurable default folder for image files
- Support of 32 LUNs per device (Logical Units)
- Configurable device identifier (vendor, product, revision)
- Implementation of numerous additional SCSI commands
- Improved compatibility with the current SCSI standard
- Improved compatibility with numerous PC/workstation platforms
- ICD compatibility for Atari computers
- Fixed compatibility issues with Linux-68k
- Support for reserved device IDs, typically used for the SCSI initiator ID
- More flexible handling of device capacities
- Configurable sector size per device (256, 512, 1024, 2048, 4096 bytes)
- Support for CD-ROM drives with 512 bytes per sector
- Improved WLAN support for the Daynaport network adapter
- Implementation of a SCSI printer
- Realtime clock for SCSI clients
- Improved command validation and error analysis
- More concise and multilingual error messages
- Improved logging and configurable log level
- Support for device statistics
- Restored the functionality of the scsidump tool for dumping/restoring drive contents
- Extended scsidump by a bus scan
- Support for the clang++ compiler (besides g++)
- Support for 64 bit Raspberry Pi OS, Bookworm and Ubuntu
- Extensive code cleanup
- Improved code modularity
- Improved memory management
- Robust and modern C++ code (C++-20)
- Migration from POSIX threads to C++ threads
- Introduction of C++ unit tests based on Google Mock
- Implementation of more than 260 C++ unit tests
- Introduction of test coverage metrics based on gcov/lcov
- Removal of more than 1500 C++ code issues reported by SonarCloud