Ubuntu 16.04 中的 USB 打印机端口问题

Ubuntu 16.04 中的 USB 打印机端口问题

我安装了 2 台 USB 打印机;它们被分配了各自的端口/dev/usb/lp0/dev/usb/lp1

但是当我重新启动电脑时,它们经常在它们之间切换,例如,打印机 1/dev/usb/lp0在重新启动之前被分配了端口,而我重新启动后它会更改为端口/dev/usb/lp1

由于每台机器的纸张设置都不同,所以这是一个问题。我该如何避免这种情况发生?

答案1

您可以使用udev规则,正如@Henning 所说。

首先通过执行以下语句找出打印机的一些独特信息

$ sudo udevadm info -a /dev/usb/lp0
calling: info
.
.
    SUBSYSTEMS=="usb"
.
.
    ATTRS{idProduct}=="1763"
    ATTRS{idVendor}=="04a9"
    ATTRS{serial}=="8025E2"

(和 的等价物lp1

这只是一个例子,但通常VendorProductserial就足够了。现在您可以创建一个简单的udev-rule,让 udev 在添加此打印机时为其创建一个唯一的名称(链接)。创建一个文件,/etc/udev/rules.d例如,sudo nano /etc/udev/rules.d/99-myprinters.rules包含两行,如:

ACTION=="add", SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="1763", ATTRS{serial}=="8025E2", SYMLINK+="printer1"

当然,你必须用udevadm报告的内容替换 ids 和 serial。这意味着:

当添加一个设备( )时,该设备是与供应商、产品和序列号相匹配的ACTION=ADDUSB 打印机( ),添加一个带有名称的符号链接(当然,您可以根据需要命名打印机,也许更直观)。SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*"/devprinter1

重要提示:规则文件的名称必须以 结尾.rules,否则将被忽略。并且您应该遵守 udev 规则的命名约定。

有时打印机驱动程序安装会创建自己的 udev 规则/etc/udev/rules.d;只需查看它们作为示例即可。

您可以用下面方法测试一下sudo udevadm test <devicepath>,其中<devicepath>必须是报告的完整路径udevadm info,例如/devices/pci0000:00/0000:00:13.2/usb2/2-3/2-3.2/2-3.2:1.1/usbmisc/lp0

相关内容