SCSI2Pi ist die Weiterentwicklung der PiSCSI-Software. SCSI2Pi verbessert die Emulation und die Performance und benötigt weniger Hauptspeicher. Außerdem bietet SCSI2Pi zusätzliche und verbesserte Tools, ist kompatibel zur PiSCSI-Web-Oberfläche und bietet eine umfangreiche Client-API. Die SCSI2Pi-Quelltexte sind öffentlich und es stehen Installationspakete mit den Binaries zur Verfügung. Die Installation von SCSI2Pi ist in Sekundenschnelle erledigt.
SCSI2Pi emuliert Festplatten, MO-Laufwerke, CD-ROM-Laufwerke, Bandlaufwerke (Streamer), Drucker, DaynaPort-Netzwerkadapter oder eine Echtzeituhr. So kann mann Computer wie alte Macs oder PCs, Atari ST/TT/Falcon, Amigas, Workstations und Sampler leicht mit Geräten versehen. SCSI2Pi bietet zahlreiche Erweiterungen, neue Geräte-Emulationen und eine SCSI-auf-USB-Bridge.
SCSI2Pi besitzt eine umfangreiche Client-API, mit der sich zahlreiche Funktionen steuern lassen. Die API wird von der SCSI-Control-App, dem Kommandozeilen-Tool s2pctl und der PiSCSI-Weboberfläche genutzt.
Der PiSCSI-Vergleich und die SCSI2Pi-News enthalten eine Liste der neuen Features verglichen mit PiSCSI und die Änderungen von einem SCSI2Pi-Release zum nächsten.
Dies sind die wichtigsten meiner Beiträge zu PiSCSI bis Release 24.04.01:
- Client/Server-Architektur mit wohldefinierter API (basierend auf Google Protocol Buffers)
- Detallierte Informationen zu Eigenschaften des Servers
- Konfigurierbarer Server-Port
- scsictl läuft auch auf einem Intel- oder aarch64-Linux und kann sich mit SCSI2Pi auf dem Pi verbinden
- Lokalisierung der Client-Meldungen
- Optionale Authentifizierung zur Absicherung aller Operationen
- Herunterfahren von SCSI2Pi und Herunterfahren/Neustart des Pi (per Remote-Interface oder SCSI-Kommando)
- Gerätedateien (/dev/*) lassen sich als Image-Dateien verwenden
- Unterstützung für hierarchische Image-Ordner
- Umbenennen, Kopieren und Löschen von Image-Dateien
- Unterstützung von Wechselmedien
- Unterstützung von DVD-Images
- Konfigurierbarer Standard-Ordner für Image-Dateien
- Unterstützung von 32 LUNs pro Gerät (Logische Einheiten)
- Konfigurierbare Gerätekennung (Hersteller, Produkt, Revision)
- Implementierung zahlreicher zusätzlicher SCSI-Kommandos
- Verbesserte Kompatibilität zum aktuellen SCSI-Standard
- Verbesserte Kompatibilität zu zahlreichen PC/Workstation-Plattformen
- ICD-Kompatibilität für Atari-Computer
- Kompatibilitäts-Probleme mit Linux-68k behoben
- Unterstützung für reservierte Geräte-IDs, typischerweise benutzt für die SCSI-Initiator-ID
- Flexiblere Handhabung von Gerätekapazitäten
- Konfigurierbare Sektorgröße pro Gerät (256, 512, 1024, 2048, 4096 Bytes)
- Unterstützung von CD-ROM-Laufwerken mit 512 Bytes pro Sektor
- Verbesserte WLAN-Unterstützung für den Daynaport-Netzwerk-Adapter
- Implementierung eines SCSI-Druckers
- Echtzeit-Uhr für SCSI-Clients
- Verbesserte Kommando-Validierung und Fehleranalyse
- Präzisere und mehrsprachige Fehlermeldungen
- Verbessertes Logging und konfigurierbarer Log-Level
- Unterstützung von Geräte-Statistiken
- Wiederherstellung der Funktionalität des scsidump-Tools zum Laden/Speichern von Laufwerks-Inhalten
- Erweiterung von scsidump um einen Bus-Scan
- Unterstützung für den clang++-Compiler (neben g++)
- Unterstützung für 64-Bit Raspberry Pi OS, Bookworm und Ubuntu
- Umfangreiche Code-Aufräumarbeiten
- Verbesserte Code-Modularität
- Verbesserte Speicherverwaltung
- Robuster moderner C++-Code (C++-20)
- Migration von POSIX-Threads zu C++-Threads
- Einführung von C++-Unit-Tests basierend auf Google Mock
- Implementierung von über 260 C++-Unit-Tests
- Einführung von Test Coverage-Metrics basierend auf gcov/lcov
- Beseitigung von über 1500 durch SonarCloud gemeldeten C++-Code-Problemen