CUPS에서 모두 성공했다고 보고하지만 Brother HL-2240 시리즈 USB 프린터에서는 아무 것도 인쇄되지 않습니다.

CUPS에서 모두 성공했다고 보고하지만 Brother HL-2240 시리즈 USB 프린터에서는 아무 것도 인쇄되지 않습니다.

USB로 연결된 Brother HL-2240 프린터를 Linux(컵 2.1.3-4ubuntu0.3이 포함된 Ubuntu Xenial)에서 작동하도록 하려고 합니다.

나는 디버깅을 최대로 설정했고 컵 오류 로그는 모든 것이 성공했음을 매우 장황하게 알려줍니다. 페이지 로그에는 작업이 성공한 것으로만 나열됩니다.

PCL 파일을 수동으로 생성하고 /usr/lib/cups/backend/usbstrace에서 실행했는데 ioctls에 명백한 오류 없이 성공했다고 표시되었습니다(많은 USBDEVFS_REAPURBNDELAY=> EAGAIN이지만 일종의 스핀록인 것 같습니다).

그러나 아무것도 인쇄되지 않습니다.

프린터가 물리적으로 잘 작동합니다. 프린터의 "이동" 버튼을 누르고 있으면 테스트 페이지를 인쇄할 수 있습니다.

나는 usblp를 사용하거나 사용하지 않고 이것을 시도했습니다. 나는 android-udev가 없습니다 (관련이 있을 수 있다고 생각되는 한 소스). 컵을 다시 설치해 보았습니다.

그것은 오래 전에 작동했습니다. 그 당시에는 Precise Pangolin에 있었을 것 같습니다. 네, 인쇄하지 않고 지내기에는 오랜 시간이 걸렸고, 그 당시에도 다른 관련 사항이 있었을 수도 있습니다.

내가 생성하는 PCL 문서가 올바른지 확실하지 않습니다. 이를 테스트할 수 있는 방법이 있나요? 아니면 이 프린터에 대해 알려진 좋은 문서의 출처입니까?

하지만 대부분 이 문제를 해결하는 방법을 아는 사람이 있나요?

(error_log와 strace 출력을 모두 여기에 게시하려고 했는데 너무 깁니다. 꽤 꼼꼼히 살펴봤는데 이상한 점이 있으면 제안해 주세요.)

추가하려면 편집하세요:

다음과 같은 로그의 행으로 인해 올바른 프린터를 찾고 있다고 확신합니다.

D [28/Nov/2017:00:06:11 -0500] [Job 19] envp[23]="DEVICE_URI=usb://Brother/HL-2240%20series?serial=B3N746940"

에서와 동일한 일련번호입니다 dmesg.

또한 /usb를 직접 호출하는 경우:

export DEVICE_URI=usb://Brother/HL-2240%20series?serial=B3N746940
/usr/lib/cups/backend/usb 25 dspeyer hello 1 "" < /etc/hosts

나는 얻다

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...

(텍스트 파일 대신 PCL 파일을 사용하는 경우에도 비슷하지만 더 깁니다.)

다른 DEVICE_URI를 사용하면 오류 메시지가 나타납니다.

그리고 usb 명령의 strace에는 다음이 포함됩니다.

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

이는 데이터가 USB를 통해 이동하고 있음을 매우 명확하게 나타냅니다.

답변1

Brother HL-L2320D에서 이 문제가 발생했습니다. 나는 몇 가지 일을 잘못하고 있었습니다. 이 게시물이 도움이 되었습니다:

Re: 프린터 브랜드 추천 | lists.debian.org

  1. 나는 너무 영리해서 파일 .ppd과 CUPS 필터를 사용하여 CUPS 웹 인터페이스를 통해 직접 프린터를 설치하려고 했습니다. CUPS 필터는 실제로 LPD 필터를 호출하므로 둘 다 필요합니다. 결국 Brother가 제공한 Debian 패키지( hll2320dlpr-3.2.0-1.i386.debhll2320dcupswrapper-3.2.0-1.i386.deb)를 설치했습니다.
  2. 32비트 바이너리에 대한 지원이 필요했습니다. 제안여기Ubuntu 패키지 중 하나가 gcc-multilib저에게 효과적이었습니다.

자동 실패 모드의 원인은 실패를 CUPS에 올바르게 보고하지 않고 실패하는 필터 파이프라인의 다양한 부분이라고 생각합니다. 프린터는 빈 파일이나 유효하지 않은 파일을 전송받고 CUPS는 성공을 확인합니다. 최상위 필터는 다른 스크립트와 바이너리를 호출하는 Perl 스크립트입니다.체계종료 코드를 확인하지 않고 함수 또는 백틱을 사용합니다.

답변2

Shivaram Lingamneni의 답변 확장 ...

Brother 웹사이트에서 드라이버를 설치했습니다. 로그에서 추적할 수 있는 한, 완벽한 PCL이 아닌 다른 형식으로 Brother 프린터에 데이터를 전송하면 프린터는 아무 작업도 수행하지 않습니다. 매우 짜증난다.

답변3

위의 @Shivaram Lingamneni의 답변을 명확히 하기 위해: Brother 프린터용 Linux 드라이버는 i386이므로 실행하려면 32비트 라이브러리가 필요합니다. CentOS의 경우 설치하면 충분합니다 glibc.i686.

관련 정보