Skip to content
Uwe Seimet edited this page Nov 30, 2023 · 8 revisions

Table of Contents

What is SCSI2Pi?

The PiSCSI/RaSCSI board extends the Raspberry Pi with a SCSI interface. SCSI2Pi (or simply just S2P) is an alternative to the PiSCSI software. SCSI2Pi focuses on improving the backend and is compatible with the PiSCSI web UI and the PiSCSI Control app.
You can switch from PiSCSI to SCSI2Pi (or back, if needed) in seconds, by installing/de-installing a Debian package. This package will contain the SCSI2Pi-Binaries, i.e. there is no time-consuming compilation required. At least that's the plan.
SCSI2Pi emulates several SCSI or SASI devices like hard disks, CD-ROM drives, printers or network adapters at the same time. This way you can easily add devices to computers like 68k Macs, Atari ST/TT/Falcon, Amigas, old PCs, Unix workstations or samplers. Compared to PiSCSI the SCSI2Pi backend offers numerous extensions, new device emulations, performance improvements and bug fixes. These add to the extensive changes I contributed to the PiSCSI project in the past. Almost the complete original codebase I have re-implemented in modern C++.
SCSI2Pi was chosen as the name for this project because there are not that many choices anymore when looking for a name that contains both "SCSI" and "Pi" ;-).
The SCSI2Pi project has not yet been fully set up and it will still take a bit of time until there is a first release. Note that the current sources on GitHub are only temporary, and the repository will be re-initialized with fresh sources when SCSI2Pi is ready to start.

How is SCSI2Pi related to PiSCSI and the former RaSCSI?

Over time, within the PiSCSI project the interest in replacing the old, often buggy or unnecessary code became rather low. In addition, developers for the required pull request reviews were missing, and many of the features that have been 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 current (23.11.01) PiSCSI codebase has been contributed by me anyway. There was also no interest in further exploiting the initiator mode feature of the FULLSPEC board. This mode, together with new command line tools, offers solutions for use cases that have never been addressed before, neither with PiSCSI nor its predecessor RaSCSI. From my perspective this situation was not satisfying, and this is why I decided to set up SCSI2Pi as an alternative project that is compatible with the RaSCSI/PiSCSI board.

SCSI2Pi goals

The intention of SCSI2Pi is not to completely replace the PiSCSI software, where great work is still being done on the web interface, for instance, and on supporting users in social media. The goal of SCSI2Pi is to improve the actual SCSI emulation, i.e. the C++ core, and to address compatibility issues, mainly (but not only) with usually rather exotic platforms. SCSI2Pi focuses on vintage computers like Macs, Ataris, Amigas, workstations and on samplers. There is no support for the X68000, in particular the host bridge, though. In PiSCSI the related code has always been in a bad shape, nobody has been willing to test it. It might not even be working. Most of the other features of PiSCSI are supported by SCSI2Pi - many of these I implemented anyway ;-). There are more new features to come.

How to switch between PiSCSI and SCSI2Pi

As already mentioned, SCSI2Pi is not meant to completely replace PiSCSI. Instead, I intend to provide standard Debian packages with binaries that replace the PiSCSI backend binaries. Just by installing such a package your PiSCSI installation will profit from a more modern and well maintained SCSI emulation codebase.
If need should be, you can switch back any time by just running PiSCSI's easysetup script. SCSI2Pi does not modify anything except binaries and manpages, which can easily be reverted.
Naturally, in case you have to switch back to PiSCSI I would appreciate your feedback on any issues caused by SCSI2Pi which you do not observe with PiSCSI 23.11.01, which is the last release I have contributed to. Just create a GitHub ticket with details on what is working with PiSCSI but not with SCSI2Pi. But please note: The SCSI2Pi project only accepts tickets that target SCSI2Pi, but none related to PiSCSI.
Even though I cannot give any guarantees I will try to stay compatible with PiSCSI on the one hand while on the other hand offering new backend features. The same applies to the PiSCSI Control Android app, which is going to be renamed to SCSI Control. I will try to keep it compatible also with PiSCSI. Currently I do not see an issue with that. Being compatible and not a full replacement also means being compatible with most of the documentation on the PiSCSI Wiki. More general information on SCSI2Pi is available on the SCSI2Pi website. The GitHub site focuses on development work.

Contributing to SCSI2Pi

If you are interested in the Pi and/or SCSI, in modern C++ and platform-independent programming, you are very welcome as a developer or a code reviewer.
Did I just say "platform independent programming", even though SCSI2Pi is about the Pi? I did indeed, because I have ensured that the PiSCSI code also compiles and partially runs on regular Linux PCs, on BSD and even on macos. This is important for developers and for testing, because the faster your development machine, the better. In general, a C provides a much better development environment than a Pi. I am using Eclipse CDT on a Linux PC as my primary development platform, by the way.

Clone this wiki locally