USBIP оказывается рабочая штука и её очень просто настроить. То есть буквально за пару команд можно сделать так, чтобы USB устройство, подключенные к одному компьютеру - было виртуально, подключено к другому.
Собранные драйвера для моего принтера есть только под x86. Но рядом с принтером нет x86 компа. Зато там есть OrangePi Zero. Это вообще крутой одноплатник, который в свое время стоил 600р. Шестьсот рублей за почти настоящий Linux компьютер с ethernet, WiFi и USB.
В ядре линуса есть модуль usbip, И в дебиане есть пакет для управления им. Так что мы буквально делаем это на OrangePi
modprobe usbip_core usbip_host
usbip list -l
usbip bind --busid=1-1
usbipd
А на x86 компе, который будет клиентом:
modprobe usbip_core vhci-hcd
usbip list -r 192.168.0.9
usbip attach -r 192.168.0.9 -b 1-1
И теперь lsusb показывает, что устройство подключено к компьютеру, где запущен клиент. И на удивление оно работает достаточно стабильно и достаточно быстро. Единственное, после переподключения устройства на сервере - надо заново делать bind и запускать клиент. Но это можно решить несложными скриптами.
Cups и AirSane с этим сетапом заработали без проблем.