In diesem Tutorial zeige ich, wie ihr mit Hilfe eines Raspberry Pi (Zero W, Zero 2, 4, 5) und der Software VirtualHere einen „Printserver“ für eure Photobooth einrichten könnt. „Printserver“ steht hier in Anführungszeichen, weil streng genommen kein echter Printserver eingerichtet, sondern lediglich eine USB-Verbindung des am Raspberry Pi per USB angeschlossenen Geräts über das lokale Netzwerk simuliert wird, auf die euer Photobooth-Rechner zugreifen kann. Der Raspberry Pi fungiert dabei als Host, der Photobooth-Rechner als Client. Die VirtualHere USB Server-Software gibt es für Windows, Linux, Mac, NAS und Android basierte Geräte, die Client-Software für die vorgenannten Systeme mit Ausnahme Android.

In meinem Setup nutze ich einen Raspberry Pi Zero 2 mit dem leichtgewichtigen Betriebssystem DietPi. Fertige Installations-Images für eine Vielzahl von Single Board Computern unterschiedlicher Hersteller, also nicht nur von der Raspberry Pi Foundation, findet ihr auf der DietPi-Webseite. Nachdem wir das Image auf unseren Host-Rechner aufgespielt haben, bootet das System in die Konsole. Haben wir unseren Single Board Computer nicht per HDMI mit einem Monitor verbunden, können wir uns alternativ mittels SSH und Putty verbinden. Vorausgesetzt eine LAN-Netzwerkverbindung existiert, da bis dato ja noch keine WLAN-Verbindung auf dem DietPi eingerichtet wurde. Mit der vom Router zugewiesenen IP-Adresse loggen wir uns über Putty mit dem „root“-User (Passwort „dietpi“) ein. Nach dem Verbindungsaufbau werden wir gebeten, das Passwort sowohl des „root“-Nutzers als auch des Standardnutzers „dietpi“ zu ändern. Eine ausführliche Installationsanleitung findet ihr auf der DietPi-Webseite.

Über den Befehl dietpi-software könnt ihr verschiedene, für das Betriebssystem optimierte Software-Pakete installieren, ebenfalls könnt ihr darunter die ‘System Locales’ anpassen und eine WLAN-Verbindung herstellen. Eine Trial-Version des VirtualHere Servers, die zeitlich und auf ein USB-Gerät limitiert ist, könnt ihr hier ebenfalls auswählen. Da ich über ein Vollversion verfüge, zeige ich die Einrichtung via der Konsole. Mit dem Befehl

installieren wir die Default Server Version für unser System. Gegebenfalls macht es aber Sinn, gleich die für euer System optimierte Version zu installieren. Weitere Infos zur Installation des VirtaulHere USB Servers findet ihr auf Github. Im Anschluss müssen wir noch den VirtualHere USB Client auf unserem Photobooth-Rechner installieren und einrichten. Dies geht über nachfolgende Befehle:

wget https://www.virtualhere.com/sites/default/files/usbclient/scripts/virtualhereclient.service
wget https://www.virtualhere.com/sites/default/files/usbclient/vhclientx86_64
chmod +x ./vhclientx86_64
sudo mv ./vhclientx86_64 /usr/sbin
sudo mv virtualhereclient.service /etc/systemd/system/virtualhereclient.service
systemctl daemon-reload
systemctl enable virtualhereclient.service
systemctl start virtualhereclient.service

Achtung bei der Auswahl des Client-Pakets: Wie der Name schon vermuten lässt, handelt es sich bei dem Paket vhclientx86_64 um den „VirtualHere USB Console Client for Linux (amd64)“, also den VH-Client für x64-basierte Hardware. Falls du einen Raspberry Pi mit Raspberry Pi OS nutzt, musst du in den Befehlen oben an den entsprechenden Stellen vhclientarmhf für die 32bit-Variante des Betriebssystems bzw. vhclientarm64 für Raspberry Pi OS 64bit eintragen. Über den Befehl

/usr/sbin/vhclientx86_64 -t "LIST"

(für Raspberry Pi OS /usr/sbin/vhclientarmhf -t "LIST" (32bit) bzw. /usr/sbin/vhclientarm64 -t "LIST" (64bit)) werden alle am Host-Device angeschlossenen Geräte angezeigt. Auf meinem Photobooth-Mini-PC sieht das dann so aus:

frank@photobooth:~$ /usr/sbin/vhclientx86_64 -t "LIST" 
VirtualHere Client IPC, below are the available devices:
(Value in brackets = address, * = Auto-Use)
Raspberry Hub (DietPi:7575)
--> USB 10/100 LAN (DietPi.114)
*--> RX1 (DietPi.113) (In-use by you)

Auto-Find currently on
Auto-Use All currently off
Reverse Lookup currently off
Reverse SSL Lookup currently off
VirtualHere Client is running as a service

Es sind zwei Geräte verfügbar, einmal der über eine Erweiterungskarte (HAT) am Pi Zero 2  laufende USB-LAN-Port (an der Adresse Diet.Pi.114) und einmal mein DNP RX1-Fotodrucker an der Adresse DietPi.113. Wie ihr sehen könnt, ist nur dieser „In-use“. Ein USB-Device im gleichen Netzwerk lässt sich mit folgendem Befehl aktivieren:

/usr/sbin/vhcclientx86_64 -t "USE,<address>"

und über den Befehl

/usr/sbin/vhclientx86_64 -t "STOP USING,<address>"

wieder stoppen. Soll ein Gerät dauerhaft genutzt werden und schon beim Hochfahren des Rechners aktiviert werden, geht das über den Befehl

/usr/sbin/vhclientx86_64 -t "AUTO USE DEVICE,<address>"

Beachtet die korrekte Eingabe der Device-Adresse <address>, in meinem Fall wäre das „DietPi.113“ für meinen DNP RX1. Eine Übersicht mit allen Konfigurationsmöglichkeiten des VirtualHere Console Clients findet ihr in der Hilfe, die sich mit folgendem Befehl aufrufen lässt:

/usr/sbin/vhclientx86_64 -t "HELP"