我安装了 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
)
这只是一个例子,但通常Vendor
、Product
和serial
就足够了。现在您可以创建一个简单的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=ADD
USB 打印机( ),添加一个带有名称的符号链接(当然,您可以根据需要命名打印机,也许更直观)。SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*"
/dev
printer1
重要提示:规则文件的名称必须以 结尾.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
。