Подключение двух принтеров к Thinstation и привязка их к портам

  • Печать

Бывает такая проблема что в конфиге принтерам назначены /dev/usb/lp0 и /dev/usb/lp1, а они вдруг меняются портами. Происходит это из-за того, что принтеры подключаются по принципу "кто первый встал - того и тапки", т.е. какой первый загрузился - того и /dev/usb/lp0.
Короче исправляем.

Имеется конфиг:

PRINTER_0_DEVICE=/dev/usb/lp0
PRINTER_0_NAME=HP2055
PRINTER_0_TYPE=U
PRINTER_1_DEVICE=/dev/usb/lp1
PRINTER_1_NAME=HP2015
PRINTER_1_TYPE=U

Принтер к ноде (/dev/usb/lp*) мы привязать не можем, зато можем создать фиксированный симлинк, поможет нам в этом udev, но сначала нужно узнать как идентифицируются наши принтеры.
При подключенных к клиенту принтерах запускаем по очереди на нём команды:
udevadm info -a -n /dev/usb/lp0 | grep ATTRS{product}
udevadm info -a -n /dev/usb/lp1 | grep ATTRS{product}

и ищем в выхлопе подходящий идентификатор, в нашем случае ATTRS{product}.
Создаём в packages/base/etc/udev/rules.d файл 12-printer-local.rules и в нём пишем правила, создаём симлинк к ноде по его модели:
KERNEL=="lp*", ATTRS{product}=="HP LaserJet 2055", SYMLINK+="usb/hp2055"
KERNEL=="lp*", ATTRS{product}=="HP LaserJet 2015", SYMLINK+="usb/hp2015"

Конфиг придётся переделать, задав симлинк девайса:
PRINTER_0_DEVICE=/dev/usb/hp2055
PRINTER_0_NAME=HP2055
PRINTER_0_TYPE=U
PRINTER_1_DEVICE=/dev/usb/hp2015
PRINTER_1_NAME=HP2015
PRINTER_1_TYPE=U

Пересобираем образ и теперь печать, независимо от того какую ноду получил девайс, будет уходить на нужный принтер.
Количество правил зависит от зоопарка принтеров.

Или если у вас несколько типов принтеров: куча HP LaserJet ***, Canon*** и какие нибудь фискальные FPrint***, то можно обойтись несколькими правилами:

KERNEL=="lp*", ATTRS{product}=="*HP LaserJet*", SYMLINK+="usb/hp"
KERNEL=="lp*", ATTRS{product}=="*Canon*", SYMLINK+="usb/cnn"
KERNEL=="lp*", ATTRS{product}=="*FPrint*", SYMLINK+="usb/fp"

Сработает если к одному тонкому подключены разные типы принтеров.

Ну и самый простой вариант -  у вас куча всяких принтеров, а вторым притером стоят везде какие нибудь фискальные FPrint***,

KERNEL=="lp*", ATTRS{product}!="*FPrint*", SYMLINK+="usb/print"
KERNEL=="lp*", ATTRS{product}=="*FPrint*", SYMLINK+="usb/fprint"

т.е. если  атрибут содержит FPrint, то симлинк fprint, все остальные получают симлинк print.

Обсудить на форуме (комментариев 4).