У меня принтер Kyocera FS-1125MFP нельзя сказать что он не сетевой, надо сказать что он хреновый сетевой принтер, и вообще не сетевой сканер(не выпендривайтесь покупайте всегда HP)! Ну что есть то есть, не покупать же каждый год новую модель принтера! Рядом с ним стоит старый ноутбук только ради сканирования, вот от него буду избавляться, чтобы по сети прокинуть USB порт с Kyocera FS-1125MFP на ПК с Ubuntu. Можно былобы и на Windows 10 сделать, тоже что и на Ubuntu — но Windows на столько не подходящая для этого ОС что даже пытаться не буду!
Отталкиваться буду от этой инструкции habr.com/ru/post/308860/ шикарно — понятно написано, думал это все что надо и не надо ничего дописывать мне, но как обычно всплывают нюансы!
Иду на свой домашний Linux сервер, им все еще работает Orange PI PC PLUS, и будет работать пока Raspberry не начнут ставить eMMC в себя!
На нем крутится Armbian
___ ____ _ ____ ____ / _ \| _ \(_) | _ \ / ___| _ | | | | |_) | | | |_) | | _| |_ | |_| | __/| | | __/| |___ |_ _| \___/|_| |_| |_| \____| |_| Welcome to Debian Stretch with Armbian Linux 4.19.62-sunxi System load: 0.54 0.23 0.20 Up time: 1:00 hour Memory usage: 24 % of 999MB IP: 192.168.1.209 CPU temp: 49°C Usage of /: 43% of 7.1G
Делаю
sudo apt-get update
sudo apt-get upgrade
И ставлю
sudo apt-get install usbip
Запускам
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo usbipd -D
Смотрим что есть на USB, перед этим я подключил принтер к апельсинке по USB
sudo usbip list -l
- busid 4-1 (0482:0498) Kyocera Corp. : unknown product (0482:0498)
Есть! Теперь поделимся им
sudo usbip bind --busid=4-1
usbip: info: bind device on busid 4-1: complete
Смотрим что у нас повесилось на USBIP
usbip list -r localhost
Exportable USB devices ====================== - localhost 4-1: Kyocera Corp. : unknown product (0482:0498) : /sys/devices/platform/soc/1c1c000.usb/usb4/4-1 : Miscellaneous Device / ? / Interface Association (ef/02/01)
То что надо было!
Чтобы нужные модули грузились сами добавляем в
vi /etc/modules
вот это
usbip-core usbip-host
И добавляем в cron команду
sudo crontab -e
вот эту
@reboot /usr/sbin/usbipd -D&&/usr/sbin/usbip bind --busid=4-1
Теперь сервер можно безболезненно перезагружать, а вот клиента…
Настраиваем USBIP на Ubuntu
Идем на клиентский Ubuntu и ставим
sudo apt install linux-tools-common
В этом сборнике есть USBIP, напрмяую однако не ставится, как на апельсинке
Активируем, тут нужен еще модуль vhci-hcd
sudo modprobe usbip-core
sudo modprobe usbip-host
sudo modprobe vhci-hcd
sudo usbipd -D
Подключаем
sudo usbip attach --remote=192.168.1.209 --busid=4-1
Смотрим что появилось
sudo usbip port
usbip: error: failed to open /usr/share/hwdata//usb.ids Imported USB devices ==================== Port 00: <Port in Use> at High Speed(480Mbps) unknown vendor : unknown product (0482:0498) 5-1 -> usbip://192.168.1.209:3240/4-1 -> remote bus/dev 004/003
Оно! А тут вообще как родной по usb показывается!
lsusb
Bus 005 Device 003: ID 0482:0498 Kyocera Corp.
Принтер, кстати после attach сразу появился в Ubuntu, только драйвер неправильный, надо будет скачивать!
Вот тут качаю драйверы для Linux для FS-1125
http://www.kyoceradocumentsolutions.ae/index/contact_support/dlc.false.driver.FS1125MFP._.EN.html#
Принтер начинает печатать после того как даю ему правильный PPD файл. Причем если раньше по сети из под Ubuntu нельзя было напечатать файлы с названием на русском — теперь они стали печататься!!!
Драйверы для сканера устанавливаю кликом на kyocera-sane_1.1.0228_amd64.deb
После этого сканер начинает определятся
sudo scanimage -L
device `kyocera:libusb:005:003' is a Kyocera FS-1125 multi-functional device
Simple Scan все равно не видит принтер, перезагружаюсь!
И тут вскрылся нюанс! После перезагрузки клиента Ubuntu не могу подключиться к принтеру по USBIP, порт на сервере как бы занят как бы завис, чтобы его освободить на сервере надо пере подключить!
sudo usbip unbind --busid=4-1
sudo usbip bind --busid=4-1
На клиенте Ubuntu надо повторить все шаги выше, чтобы подсоединить USBIP!
И после этого Simple Scan начинает сканировать
Заставляем USBIP работать автоматом на Ubuntu
Надеемся что IP USBIP сервера меняться не будет, и USB там никто не будет передергивать! Поэтому надо решить одну проблему — чтобы Ubuntu клиент перед выключением или перезагрузкой, отключался от USBIP сервера и после загрузки подключался!
crontab не поможет, будем делать через systemd
Идем в свою папку у меня это /home/alexandr
Делаем скрипт
vi .usbip_script_start
с текстом
#!/bin/sh sudo modprobe usbip-core sudo modprobe usbip-host sudo modprobe vhci-hcd sudo usbipd -D sudo usbip attach --remote=192.168.1.209 --busid=4-1
Делаем его исполняемым
sudo chmod +x .usbip_script_start
Еще делаем скрипт
vi .usbip_script_stop
С текстом
#!/bin/sh port=`sudo usbip port | grep "Port in Use" | awk -F '[ ]|:' '{print $2}'` sudo usbip detach --port=$port
Тут порт немного интерактивно определяем, но надеемся что одно всего у нас подключение USBIP
делаем его исполняемым
sudo chmod +x .usbip_script_stop
Теперь делаем вот тут
sudo vi /etc/systemd/system/usbip_start_and_stop.service
Скрипт с таким текстом с текстом
[Unit] Description=Run Scripts at Start and Stop Wants=network-online.target After=network-online.target [Service] Type=oneshot RemainAfterExit=true ExecStart=/home/alexandr/.usbip_script_start ExecStop=/home/alexandr/.usbip_script_stop [Install] WantedBy=multi-user.target
Тут пишите свою папку, и тут есть указания на то чтобы network был жив когда скрипт запускается
Запускаем его
sudo systemctl start usbip_start_and_stop.service
и ставим на автозапуск
sudo systemctl enable usbip_start_and_stop.service
Теперь можно спокойно выключаться и перезагружаться, порт на USBIP сервере не будет блокироваться!
UPD: Ubuntu обновился и перестал покдлючасять к сканеру
Неожиданно видимо сменилась версия ядря, надо ставить
sudo apt install linux-tools-generic
sudo apt install linux-tools-5.4.0-45-generic
И опять работает, надо только переподключить на сервере сканер, а то завис в этой связи
Ошибку не ошибку (потому что ни на что не влияет)
usbip: error: failed to open /usr/share/hwdata//usb.ids
можно исправить
sudo mkdir /usr/share/hwdata
sudo ln -s /usr/share/misc/usb.ids /usr/share/hwdata/usb.ids
Добавить комментарий