Problema com portas de impressora usb no Ubuntu 16.04

0

Eu tenho 2 impressoras USB instaladas; eles recebem suas portas /dev/usb/lp0 e /dev/usb/lp1 .

Mas quando eu reinicio o meu PC, muitas vezes muda entre eles, por exemplo, a impressora 1 é atribuída a porta /dev/usb/lp0 antes da reinicialização e depois que eu reiniciá-lo muda para a porta /dev/usb/lp1 .

Como cada um tem configurações de papel diferentes, isso é um problema. Como posso impedir que isso aconteça?

    
por yoshi130 27.02.2017 / 12:15

1 resposta

0

Você pode usar as regras udev , como disse @Henning.

Primeiro, encontre algumas informações exclusivas para as impressoras, executando

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

(e equivalente para lp1 )

Este é apenas um exemplo, mas geralmente Vendor , Product e serial são suficientes. Agora você pode criar um udev-rule simples para permitir que o udev crie um nome exclusivo (link) para essa impressora quando ela for adicionada. Crie um arquivo em /etc/udev/rules.d , por exemplo com sudo nano /etc/udev/rules.d/99-myprinters.rules para manter duas linhas como:

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

Claro que você tem que substituir os ids e serial pelo que udevadm reportou. Isso significa:

Quando um dispositivo é adicionado ( ACTION=ADD ) que é uma impressora USB ( SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*" ) que corresponde ao fornecedor, produto e número de série, adicione um link simbólico em /dev com o nome printer1 (bem, você pode nomear a impressora como quiser, talvez algo mais intuitivo).

Importante: O nome do arquivo de regras deve terminar em .rules , caso contrário, ele será ignorado. E você deve respeitar as convenções de nomenclatura das regras do udev.

Às vezes, a instalação de drivers de impressora cria suas próprias regras do udev em /etc/udev/rules.d ; basta olhar para eles para exemplos.

Você pode testar isso com sudo udevadm test <devicepath> , em que <devicepath> tem que ser o caminho completo informado por udevadm info , por exemplo, /devices/pci0000:00/0000:00:13.2/usb2/2-3/2-3.2/2-3.2:1.1/usbmisc/lp0 .

    
por ridgy 27.02.2017 / 13:16