LAN을 통해 DCP 195C 프린터(Brother)에 액세스하고 싶습니다. 이를 위해 라즈베리 파이를 구입하고 여기에 CUPS를 설치했습니다. CUPS는 잘 돌아가고 다른 모든 것들도 원활하게 돌아가고 있습니다. 내 문제는 형제가 제공하는 드라이버(x86 및 x64 전용)를 내 파이에 설치할 수 없다는 것입니다. 내 파이에 드라이버를 설치하는 데 놓친 옵션이 있습니까?
답변1
간략한 설명: Linux 드라이버에서 ppd 파일을 추출해야 합니다.
긴:
첫 번째
- Brothers Driver 웹사이트로 이동하여 DCP195를 검색하세요.http://support.brother.com
- "의 Linux deb 버전을 다운로드하세요.CUPSwrapper 프린터 드라이버(deb 패키지)"
- 압축 도구를 사용하여 deb 파일을 열고 "dcp195ccupswrapper-1.1.3-1.i386/opt/brother/Printers/dcp195c/cupswrapper" 경로를 따라갑니다.
- "brother_dcp195c_printer_en.ppd" 파일을 추출합니다.
두번째
https://192.168.1.2:631/admin
[ip를 pi로 교체]를 통해 컵 웹 인터페이스를 엽니다.- "프린터 추가"를 클릭하고 "Brother DCP-195C(Brother DCP-195C)"를 선택하고 "계속"을 누릅니다.
- 필요한 경우 향후 정보를 편집하고 "프린터 공유"를 선택한 후 "계속"을 누르십시오.
- "또는 PPD 파일 제공"에서 추출된 "brother_dcp195c_printer_en.ppd" 파일을 찾아 업로드합니다. 다음 단계를 따르세요...완료
그 후 프린터를 사용할 수 있었지만 오류가 발생했습니다: "파일 "/usr/lib/cups/filter/brlpdwrapperdcp195c"를 사용할 수 없음" Ubuntu 노트북에 드라이버를 설치했기 때문에 / usr/lib/cups/filter/를 파이에
그 후 내 노트북이 프린터를 찾을 수 있었습니다
답변2
명령 세트가 다르더라도 에뮬레이션을 통해 Raspberry Pi에서 작동하는 i386 드라이버를 얻을 수 있습니다. 매우 느리고 인쇄물이 도착할 때까지 몇 분이 걸리지만 작동합니다.
이 포럼 게시물에서 힌트를 찾았습니다. https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=15526&start=25#p708038
1단계: Brother 설명서의 지침에 따라 드라이버를 설치합니다.
/opt/brother/Printers/dcp195c/lpd
필터 바이너리 와 같은 디렉토리가 있어야 합니다 brdcp195cfilter
. 이 바이너리는 filterdcp195c
동일한 디렉토리의 바로 옆에 있는 쉘 스크립트 에 의해 호출됩니다 .
나는 그들이 지금 설치 스크립트를 제공한다고 생각하지만, 나는 없이 그것을 했습니다. 사전 설치해야 하는 지침이 어딘가에 있습니다.
2단계: i386 에뮬레이션 작동시키기
이는 다음 단계를 따릅니다.https://wiki.debian.org/QemuUserEmulation
2단계가 끝나면 일반 바이너리처럼 i386 바이너리를 실행할 수 있습니다. 에서는 ps ax
다음과 같이 표시됩니다.
Qemu 설치
패키지를 설치 하고 qemu
.binfmt-support
qemu-user-static
update-binfmts --display
어떤 바이너리 형식이 지원되는지 확인하려면 실행하세요 . Raspbian 및 Debian에서는 자동으로 활성화되어야 합니다.
x86 지원 라이브러리 설치
Raspbian에서는 다음과 같은 줄을 추가합니다 /etc/apt/sources.list
.
## Debian i386
deb [arch=i386] http://http.debian.net/debian stable main contrib non-free
또 다른 데비안 저장소도 그럴 것입니다.
Raspbian 저장소에는 x86 바이너리가 없으므로 [arch=armhf]
기존 줄에 deb
. 로 시작하는 줄은 deb-src
그대로 유지할 수 있습니다.
Raspbian에게 i386 패키지가 포함된 다중 아키텍처 시스템을 원한다고 말하고 i386 libc를 얻으세요. 단계가 작동 하려면 update
패키지 관리를 위해 Debian GPG 키를 가져오고 신뢰해야 합니다.
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386
brdcp195cfilter
이 시점에서 드라이버와 함께 제공되는 바이너리를 실행할 수 있어야 합니다 .
$ ./brdcp195cfilter
ERROR: ld.so: object '/usr/lib/arm-linux-gnueabihf/libarmmem.so' from /etc/ld.so.preload cannot be preloaded (cannot open shared object file): ignored.
Error: invalid option !!
이 출력이 표시되면 제대로 작동한 것입니다. 이 Error: invalid option !!
라인은 brdcp195cfilter
인수를 전달했어야 한다고 불평하고 있습니다.
선택사항: ld.so
오류 메시지 제거
Raspbian은 라이브러리를 모든 프로세스에 /etc/ld.so.preload
미리 로드하는 데 사용됩니다. libarmmem
라이브러리는 일부 고가의 메모리 루틴을 ARM 어셈블리로 작성된 더 빠른 루틴으로 대체하지만 Raspbian을 실행하는 데 꼭 필요한 것은 아닙니다.
경고를 무시해도 안전하지만 에서 해당 줄을 제거하거나 주석 처리하는 것도 안전합니다 /etc/ld.so.preload
. 비활성화하지 않으면 경고가 CUPS 오류 로그에 표시됩니다.
3단계: CUPS를 사용하여 작동시키세요.
Brother 웹사이트의 지침에 따라 CUPS를 설치해야 합니다.
불안정한 USB 연결
내 Raspberry에서는 dmesg
어느 시점에서 로그가 다음 줄 사이를 빠르게 번갈아 가며 표시되었습니다.
[58981.586842] usblp0: removed
[59222.794260] usblp 1-1.3:1.0: usblp0: USB Bidirectional printer dev 8 if 0 alt 0 proto 2 vid 0x04F9 pid 0x0222
나를 위해 문제를 해결한 것은 (CUPS 웹 인터페이스)로 이동하여 localhost:631
"프린터" 섹션에서 프린터를 수정하여 장치가 아닌 CUPS 인식 USB 장치를 사용하도록 하는 것이었습니다 usb://dev/usb/lp0
.
프린터가 정상 속도로 데이터를 수신하도록 합니다.
brdcp195cfilter
거대한 입력 비트맵을 수신하고 이를 나중에 프린터 장치로 파이프되는 것으로 변환하는 인쇄 프로세스의 한 단계입니다. 페이지 상단의 간단한 "Hello world" 메시지에 대한 입력 크기는 ~90MB로 측정되었습니다.
Raspberry의 에뮬레이션은 프린터에 데이터를 공급할 만큼 빠르지 않습니다. 인쇄는 작동하지만 데이터를 기다리는 동안 프린터 모터가 활성화되어 건강에 좋지 않은 소음이 들렸습니다.
이 문제를 해결하려면 패키지 sponge
에서 유틸리티를 설치하고 (일명 ) 의 출력이 . 파일 끝에 "PostScript", "PDF" 및 "*" 케이스 내에 3줄이 있어야 하며 .moreutils
filterdcp195c
$BRCONV $BRCONV_OP
brdcp195cfilter
sponge
... | $BRCONV $BRCONV_OP | sponge
이것이 하는 일은 장기 실행 변환기 프로세스의 모든 출력을 집어삼키고 변환기가 완료될 때 한꺼번에 프린터로 보내는 것입니다. 이렇게 하면 인쇄가 시작될 때까지 시간이 더 걸리지만 프린터는 정상적인 속도로 데이터를 수신하고 있습니다.
( sponge
버퍼링하는 데이터를 임시 디렉토리에 저장하므로 Raspberry Pi의 RAM에 의해 제한되지 않습니다)
답변3
귄터의 대답매우 도움이 되었습니다. 이것은 부분적으로 내 경험과 정보를 바탕으로 한 후속 조치입니다.
커널 모듈에 어떤 문제도 발견되지 않았습니다. 이 문제는 아마도 지난 6년 동안 해결되었을 것입니다.
처음에는 Raspberry Pi 3에서 테스트했습니다. 인쇄 속도는 느리지만(페이지당 ~3분) 프린터를 거의 사용하지 않으므로 괜찮습니다.
오류 메시지를 방지하려면 패키지 ld.so
를 제거하면 됩니다 raspi-copies-and-fills
.
libc6:i386
Debian 과 를 설치해야 한다는 것을 알았습니다 libc6:armhf
. 왜냐하면 이러한 패키지에는 정확한 버전 일치가 필요하고 Raspbian 버전에는 예를 들어 +rpi1
. 데비안의 armhf 패키지는 Raspberry Pi 3에서 제대로 작동하는 것 같습니다. 저는 이 기능이 Raspberry Pi 2(armv7) 이상과 새로운 Raspberry Pi Zero 2 W에서 작동해야 한다고 생각합니다. 하지만 Raspberry Pi 1이나 Zero/W(armv6)에서는 작동하지 않습니다. 참고로, 배포판을 혼합하는 사람은 누구나 를 살펴봐야 합니다 man apt_preferences
.
저는 Raspberry Pi Zero W를 인쇄 서버로 사용하고 싶었습니다. 이는 훨씬 더 느리고(페이지당 ~5분) 데비안의 armhf 패키지를 사용할 수 없습니다. 많은 독서와 시행착오 끝에 libc6:i386
소스에서 Raspbian "부트스트랩" 패키지를 구축하는 데 성공했습니다.
소스 코드를 얻는 것은 쉽습니다:
apt-get source glibc
cd glibc-N.NN
다음 단계는 빌드 프로필을 선택하는 것입니다.
https://wiki.debian.org/BuildProfileSpec
cross
왜냐하면 우리는 크로스 컴파일 중이기 때문입니다.stage2
glibc를 부트스트랩해야 하기 때문에nobiarch
amd64/x32 패키지 빌드 방지nocheck
빌드 종속성을 제거합니다.
다음과 같이 빌드 종속성을 설치하는 것이 가능해야 한다고 생각했습니다.
sudo apt-get -a i386 --build-profiles=cross,stage2,nobiarch,nocheck build-dep glibc
그러나 perl:i386
. 어쩌면 내가 뭔가 잘못하고 있는 건 아닐까? 데비안 패키징에 대한 나의 이해가 매우 제한되어 있기 때문에 그럴 것 같습니다. 나는 대신 이렇게 했습니다:
sudo apt-get build-dep glibc
그런 다음 필요한 debian/control
버전을 확인 하고 다음을 수행합니다.gcc
sudo apt install dpkg-cross gcc-10-i686-linux-gnu g++-10-i686-linux-gnu
이는 종종 를 설치하는 것과 동일합니다 crossbuild-essential-i386
.
이제 빌드할 수 있습니다.
dpkg-buildpackage --no-sign -b -a i386 --build-profiles=cross,stage2,nobiarch,nocheck -d
노트:
- 단일 코어 armv6 Raspberry Pi에서 빌드 프로세스는 매우 오랜 시간이 걸립니다. 패키지를 빌드하려면 더 빠른 Raspberry Pi를 사용하는 것이 좋습니다.
- 이 "부트스트랩" 패키지는 내 요구에 충분했습니다. 기능상 제약이 있을 수 있는지는 모르겠습니다.
- 패키지를 설치하려고 했을 때 Raspbian에서 제공하는
libc6:i386
기존 파일과 충돌했습니다 . 기존 파일의 이름을 바꾸었고 패키지가 올바르게 설치되었습니다.changelog.Debian.gz
libc6:armhf