Skip to content

uweseimet/scsi2pi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is SCSI2Pi?

SCSI2Pi is an advanced alternative to the PiSCSI software for the PiSCSI/RaSCSI board. It provides an improved SCSI emulation, extendend functionality and new tools for the board's initiator mode. SCSI2Pi is compatible with the PiSCSI web UI and the SCSI Control app.
You can switch from PiSCSI to SCSI2Pi (or back, if needed) in seconds, simply by installing/de-installing a package with the SCSI2Pi binaries. No time-consuming compilation is required.
SCSI2Pi emulates several SCSI or SASI devices like hard drives, CD-ROM drives, printers or network adapters at the same time. You can easily add a range of devices to computers like 68k Macs, Atari ST/TT/Falcon030, Amiga, Unix workstations, samplers or other computers with SCSI port. Compared to PiSCSI, SCSI2Pi offers numerous extensions, performance improvements, smaller and highly optimized binaries, and bug fixes. These add to the extensive changes and new features I contributed to the PiSCSI project in the past.

Who am I?

In the past I was the main contributor for the PiSCSI SCSI emulation. I revised the backend architecture, added a remote interface and re-engineered most of the legacy C++ code. The code was updated to C++-20, which is the latest C++ standard you can currently use on the Pi. All in all this resulted in more modular code and drastically improved SonarQube code metrics. Besides adding numerous new features and improving the compatibility with many platforms, I also fixed a range of bugs in the legacy codebase and added an extensive set of unit tests.
I am also the author of the SCSI Control app for Android, which is the remote control for your PiSCSI/RaSCSI boards. SCSI Control supports both SCSI2Pi and PiSCSI. The full range of app features requires SCSI2Pi, though.

How is SCSI2Pi related to PiSCSI?

In the PiSCSI project there was not much interest in replacing old, often buggy or unnecessary code, or to improve the data transfer rates. In addition, code reviewers were missing, which resulted in a rather long PR backlog, slowing down the development process. Unfortunately long promised features on the PiSCSI roadmap and user requests in tickets have not been addressed. This is why I decided to work on the emulation in a separate project, while staying compatible with the PiSCSI web interface. The major part of the PiSCSI C++ codebase has been contributed by me anyway.
There was also not much interest in further developing the SCSI emulation and exploiting the initiator mode feature of the FULLSPEC board. This mode, together with new SCSI2Pi command line tools, offers solutions for use cases that have never been addressed before. These tools also help with advanced testing, making the emulation more robust and reliable.

SCSI2Pi goals

SCSI2Pi is not meant to completely replace the PiSCSI software, but only the device emulation and the tools. For the PiSCSI project great work is still being done on the web interface, and on supporting users in social media.
There is no SCSI2Pi support for the X68000 platform, in particular not for the host bridge (SCBR) device. In PiSCSI the respective code has always been in a bad shape, and nobody has been interested in testing it. The other PiSCSI features (and many more) are supported by SCSI2Pi - most of these I implemented anyway ;-).

SCSI2Pi website

The SCSI2Pi website addresses regular users and developers, whereas the information on GitHub is rather developer-centric. The website also provides regular development and release packages. These packages contain the SCSI2Pi binaries, i.e. no time-consuming compilation is required. Installing SCSI2Pi on your Pi is just a matter of seconds.
The website also provides information on the SCSI Control app for Android.

Contributing to SCSI2Pi

If you are interested in SCSI on the Pi and in modern C++ and platform-independent programming you are welcome as a contributor, be it as a developer or a code reviewer.
Have I just said "platform-independent", even though SCSI2Pi is about the Pi? I did indeed, because I ensure that the PiSCSI code also compiles and partially runs on regular Linux PCs and on BSD. This is relevant for developers and for testing, because the faster your development machine, the better. A PC provides a much better development environment than a Pi. My primary development platform is Eclipse CDT on a Linux PC, by the way. Thanks to the SCSI2Pi in-process bus most of the testing does not even require a Pi.