Estou tentando fazer com que uma impressora Brother HL-2240 conectada via USB funcione no Linux (Ubuntu Xenial com cups 2.1.3-4ubuntu0.3).
Eu mudei a depuração para o máximo e o log de erros das xícaras me disse muito sucintamente. O log da página simplesmente lista o trabalho como bem-sucedido.
Gerei o arquivo PCL manualmente, executei /usr/lib/cups/backend/usb
sob strace e ele disse que foi bem-sucedido, sem erros aparentes nos ioctls (muitos USBDEVFS_REAPURBNDELAY
= > EAGAIN
, mas isso parece ser algum tipo de spinlock).
Mas nada é impresso.
A impressora funciona bem fisicamente. Eu posso imprimir uma página de teste pressionando o botão "go" na impressora.
Eu tentei isso com e sem usblp. Eu não tenho android-udev (uma fonte pensou que isso poderia ser relevante). Tentei reinstalar as xícaras.
Trabalhou há séculos atrás. Eu acho que eu poderia estar no Pangolin Preciso na época. Sim, é muito tempo para passar sem imprimir, e pode ter havido outras coisas relevantes também nesse período.
Não sei ao certo se os documentos PCL que estou gerando estão corretos. Existe uma maneira de testar isso? Ou uma fonte de documentos conhecidos para esta impressora?
Mas, na maioria das vezes, alguém tem alguma ideia de como corrigir isso?
(Eu ia postar tanto o error_log quanto o strace output aqui, mas eles são muito longos. Eu os examinei bastante bem, mas se houver coisas estranhas para procurar, por favor sugira-os.)
Editar para adicionar:
Tenho certeza que está encontrando a impressora certa por causa das linhas no log, como:
D [28/Nov/2017:00:06:11 -0500] [Job 19] envp[23]="DEVICE_URI=usb://Brother/HL-2240%20series?serial=B3N746940"
Esse é o mesmo número de série de dmesg
.
Além disso, quando eu invoco / usb diretamente:
export DEVICE_URI=usb://Brother/HL-2240%20series?serial=B3N746940
/usr/lib/cups/backend/usb 25 dspeyer hello 1 "" < /etc/hosts
Eu obtenho
DEBUG: Loading USB quirks from "/usr/share/cups/usb".
DEBUG: Loaded 131 quirks.
DEBUG: Printing on printer with URI: usb://Brother/HL-2240%20series?serial=B3N746940
DEBUG: libusb_get_device_list=13
STATE: +connecting-to-device
STATE: -connecting-to-device
DEBUG2: Printer found with device ID: MFG:Brother;CMD:PJL,HBP;MDL:HL-2240 series;CLS:PRINTER;CID:Brother Laser Type1; Device URI: usb://Brother/HL-2240%20series?serial=B3N746940
DEBUG: Device protocol: 2
INFO: Sending data to printer.
DEBUG: Read 195 bytes of print data...
DEBUG: Wrote 195 bytes of print data...
DEBUG: Sent 195 bytes...
DEBUG: Waiting for read thread to exit...
(E coisas semelhantes, se eu usar um arquivo PCL em vez de um arquivo de texto, mas mais.)
Se eu usar qualquer outro DEVICE_URI, recebo mensagens de erro.
E um strace no comando usb contém:
ioctl(10, USBDEVFS_GET_CAPABILITIES, 0xe4c198) = 0
write(2, "STATE: +connecting-to-device\n", 29STATE: +connecting-to-device
) = 29
ioctl(10, USBDEVFS_GETDRIVER, 0xbf941308) = -1 ENODATA (No data available)
timerfd_settime(9, TFD_TIMER_ABSTIME, {it_interval={0, 0}, it_value={3607344, 967184000}}, NULL) = 0
ioctl(10, USBDEVFS_SUBMITURB, 0xe65ea0) = 0
O que indica que dados muito claros estão passando por USB.