Wenn mehrere Rechnern und USB Geräte gemeinsam nutzt werden sollen gibt es diverse Lösungen. Ein USB Netzwerk Server ist eine solche. Aber was tun wenn der Hersteller keine aktuellen Treiber mehr liefert?
Wenn man in einem Netzwerk USB Geräte gemeinsam nutzen will gibt es verschiedene Lösungen um diese zu teilen:
- über einen Rechner
- Router
- NAS
- Netzwerk USB Server
Letzteres Möglichkeit hat mir speziell beim heiklen Thema Multifunktionstdurcker / Scannern stets gute Dienste geleistet.
Mein verwendeter Netzwerk USB Server basiert auf einem Network USB over Ethernet SoCs der Firma Elite Silicon. Diese stecken in den meisten günstigen Geräte wie:
- Sharkoon USB Lanport 400
- LogiLink 4-Port Hub USB 2.0 Netzwerk Server
- etc.
Im Gegensatz zu den OEMs stellt Elite Silicon seit Jahren Treiber für diese Geräte bereit. Sogar für Linux (wenn auch nicht mehr die neusten Versionen)!
http://www.elitesilicon.com/linux_software_eng.html
Leider kam es bei der Neuinstallation meines Rechners zu folgem
Fehler bei der Installation:
$ dpkg -i ./nhci_0.9.22-1usbserver1_amd64.deb Selecting previously unselected package nhci. (Reading database ... 263226 files and directories currently installed.) Preparing to unpack .../nhci_0.9.22-1usbserver1_amd64.deb ... Unpacking nhci (0.9.22-1usbserver1) ... Setting up nhci (0.9.22-1usbserver1) ... Loading new nhci-0.9.22 DKMS files... Building for 4.13.0-37-generic Building for architecture x86_64 Building initial module for 4.13.0-37-generic ERROR (dkms apport): unable to determine source package for nhci Error! Bad return status for module build on kernel: 4.13.0-37-generic (x86_64) Consult /var/lib/dkms/nhci/0.9.22/build/make.log for more information. Processing triggers for ureadahead (0.100.0-20) ... Processing triggers for man-db (2.7.6.1-2) ...
Schauen wir mal ins Log: hier finden wir ein paar warnings wegen nicht verwendete Variablen ect. Der Hauptgrund sind fehlende Funktionsaufrufe: wie signal_pending und send_sig.
/var/lib/dkms/nhci/0.9.22/build/nhci_kernel.c: In function ‘kern_signal_pending’: /var/lib/dkms/nhci/0.9.22/build/nhci_kernel.c:263:12: error: implicit declaration of function ‘signal_pending’; did you mean ‘kern_signal_pending’? [-Werror=implicit-function-declaration] return signal_pending((struct task_struct *)p); ^~~~~~~~~~~~~~ kern_signal_pending /var/lib/dkms/nhci/0.9.22/build/nhci_kernel.c: In function ‘kern_thread_setting’: /var/lib/dkms/nhci/0.9.22/build/nhci_kernel.c:272:5: error: implicit declaration of function ‘allow_signal’; did you mean ‘do_signal’? [-Werror=implicit-function-declaration] allow_signal(SIGKILL); ^~~~~~~~~~~~ do_signal /var/lib/dkms/nhci/0.9.22/build/nhci_kernel.c: In function ‘kern_send_sig’: /var/lib/dkms/nhci/0.9.22/build/nhci_kernel.c:286:12: error: implicit declaration of function ‘send_sig’; did you mean ‘send_sigio’? [-Werror=implicit-function-declaration] return send_sig(sig, (struct task_struct *)p, priv); ^~~~~~~~ send_sigio cc1: some warnings being treated as errors scripts/Makefile.build:308: recipe for target '/var/lib/dkms/nhci/0.9.22/build/nhci_kernel.o' failed
Diese wurden mit dem Kernel 4.11 in eine neue Include-Datei verschoben.
Um das Paket zu reparieren entpacken wir die .deb Datei zunächst.
Um die Rechte der Dateien nicht zu ändern führen wir alles als root aus :
$ sudo su $ dpkg-deb -R nhci_0.9.22-1usbserver1_amd64.deb ./tmp
Nun finden wir unter ./tmp/usr/src/nhci-0.9.22/nhci_kernel.c die Problemstelle.
Also passen wir die die nhci_kernel.c etwas an und fügen folgende Zeile unterhalb der anderen Includes ein um auch die Rückwärtskompatibilität zu erhalten:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) #include <linux/sched/signal.h> #endif
Weil das Paket von 2015 stammt und hier noch up-start Standard war benötigen wir auch noch einen Wrapper für system.d
Hierfür fügen wir noch eine .service-Datei unter ./tmp/lib/systemd/system mit folgendem Inhalt hinzu:
[Unit] Description=EST Network USB Host configuration Documentation=man:virtualusbc(8) [Service] Type=oneshot ExecStart=/usr/sbin/nhci start EexcStop=/usr/sbin/nhci stop RemainAfterExit=yes [Install] WantedBy=multi-user.target
Nach dem nun alle Fehler behoben sind packen wir uns wieder ein neues Packet mit:
$dpkg-deb -b tmp ./nhci_0.9.22-1usbserver1_amd64_fixed.deb
Nun kann die Installation erneut getestet werden:
$ dpkg -i ./nhci_0.9.22-1usbserver1_amd64_fixed.deb Selecting previously unselected package nhci. (Reading database ... 263226 files and directories currently installed.) Preparing to unpack .../nhci_0.9.22-1usbserver1_amd64_fixed.deb ... Unpacking nhci (0.9.22-1usbserver1) ... Setting up nhci (0.9.22-1usbserver1) ... Loading new nhci-0.9.22 DKMS files... Building for 4.13.0-37-generic Building for architecture x86_64 Building initial module for 4.13.0-37-generic Done. nhci: Running module version sanity check. - Original module - No original module exists within this kernel - Installation - Installing to /lib/modules/4.13.0-37-generic/updates/dkms/ depmod... DKMS: install completed. Processing triggers for ureadahead (0.100.0-20) ... Processing triggers for man-db (2.7.6.1-2) ... Processing triggers for shim-signed (1.33.1~17.10.1+13-0ubuntu2) ...
Und schon läuft wieder alles.
Die .deb-Datei könnt ihr auch hier herunterladen:
Hi,
könntest du das File nochmal bereitstellen bitte?
Der Download funktioniert leider nicht….
LG & vielen Dank
Thomas
Hallo Thomas,
ich hab den Link aktualisiert.
Viele Grüße
Steve
das geht leider nicht mehr mit 4.18
kannst du da bitte nochmal rüberschauen?
vielen lieben dank
dirk
Wenn ich die Zeit finde mach ich das. Ich bin aber ich bin mittlerweile selbst auf einen RasberyPi als Druck und Printserver umgestiegen.
Hi,
kannst Du Dich noch erinnern, wie Du den virtualusb-Kram zum Laufen bekommen hast?
Leider scheitere ich am Verbinden mit den Devices, da wird ein Fehler (-3/10) geworfen.
Auch eine Anleitung zu dem Zeug habe ich nicht, nur die Man-Page. Da steh aber nix drinnen.
Wäre toll, wenn Du mir da weiter helfen könntest.
Danke und Gruß
Alex
Hallo Alex,
das weiß ich leider nicht mehr so genau.
Das einzige was mir dazu gerade einfällt wäre zu wenig Rechte. Hast du es schon mal mit sudo versucht und geprüft dass keine Firewall Regel im weg ist?