SCSI2Pi ist eine 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 und ist kompatibel zur PiSCSI-Weboberfläche. 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, Streamer (Bandlaufwerke), Drucker, DaynaPort-Netzwerkadapter oder eine Echtzeituhr. So kann man Computer wie alte Macs oder PCs, Atari ST/TT/Falcon, Amigas, Workstations und Sampler leicht mit Geräten versehen. SCSI2Pi bietet zahlreiche Erweiterungen, Initiator-Modus-Tools 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.
SCSI2Pi bzw. PiSCSI unterstützen folgende, teils äquivalente Tools:
| Anwendungsbereich |
SCSI2Pi |
PiSCSI |
Bemerkung |
| Geräteemulation |
s2p |
piscsi |
|
| Kommandozeilen-Client |
s2pctl |
scsictl |
|
| Backup/Restore |
s2pdump |
scsidump sasidump |
s2pdump unterstützt SCSI-Platten, SASI-Platten und Streamer |
| Streamer (Bandlaufwerke) |
s2psimh |
❌ |
Analyse und Bearbeiten von SIMH-Image-Dateien |
| Formatierung |
s2pformat |
❌ |
Formatieren per SCSI-Kommando, z. B. von Disketten in USB-Laufwerken |
| SCSI/SASI-Kommandos |
s2pexec |
❌ |
Senden beliebiger SCSI/SASI-Kommandos an beliebige Geräte |
| API |
s2pproto |
❌ |
Nutzung der Protobuf-API mit SCSI-Kommandos |
| Software-Test |
s2ptool |
❌ |
Testen der Ausführung von SCSI-Kommandos auf beliebigen Plattformen, ohne Board-Hardware |
| Hardware-Test |
❌ |
scsiloop |
Testen der Board-Hardware |
| Datenanalyse |
❌ |
scsimon |
Datenaufzeichnung, aber die Daten sind irreführend, da sie unvollständig sind |
Der PiSCSI-Vergleich enthält eine Liste der Features im Vergleich zu PiSCSI. Die SCSI2Pi-News liefern die Änderungen von einem SCSI2Pi-Release zum nächsten.
Dies sind die wichtigsten meiner Beiträge zum PiSCSI-Projekt bis Release 24.04.01:
- Client/Server-Architektur mit wohldefinierter API (basierend auf Google Protocol Buffers)
- Detaillierte Informationen zu Eigenschaften des Servers
- Konfigurierbarer Server-Port
- scsictl läuft auch auf einem Intel- oder aarch64-Linux und kann sich mit piscsi 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)
- 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 SCSI-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
- Behebung von über 1500 durch SonarCloud gemeldeten C++-Code-Problemen