คุณสามารถทำให้ไดรเวอร์ i386 ทำงานบน Raspberry Pi ผ่านการจำลองแม้ว่าจะมีชุดคำสั่งที่แตกต่างกัน มันช้ามากและใช้เวลาไม่กี่นาทีจนกว่างานพิมพ์จะมาถึง แต่ก็ใช้งานได้
ฉันพบคำใบ้ในโพสต์ฟอรัมนี้:
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
พื้นที่เก็บข้อมูล Debian อื่นจะทำเช่นกัน
พื้นที่เก็บข้อมูล Raspbian ไม่มีไบนารี x86 เพื่อเพิ่มสายสายที่มีอยู่ของคุณเริ่มต้นด้วย[arch=armhf]
deb
บรรทัดที่ขึ้นต้นด้วยdeb-src
สามารถเก็บได้ตามที่เป็น
บอก Raspbian ว่าคุณต้องการระบบ multiarch ที่มีแพ็คเกจ 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 ได้
คุณควรมีการติดตั้ง CUPS จากการทำตามคำแนะนำจากเว็บไซต์ของ Brother
การเชื่อมต่อ 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
สิ่งที่แก้ไขให้ฉันคือไปที่localhost:631
(ส่วนต่อประสานกับเว็บ CUPS) และแก้ไขเครื่องพิมพ์ในส่วน "เครื่องพิมพ์" เพื่อให้ใช้อุปกรณ์ USB ที่รู้จัก CUPS แทนusb://dev/usb/lp0
อุปกรณ์
ปล่อยให้เครื่องพิมพ์รับข้อมูลด้วยความเร็วปกติ
brdcp195cfilter
เป็นขั้นตอนในกระบวนการพิมพ์ที่ได้รับบิตแมปอินพุตจำนวนมากและแปลงเป็นสิ่งที่ภายหลังจะได้รับการไพพ์ไปยังอุปกรณ์เครื่องพิมพ์ ฉันวัดขนาดอินพุตเป็น ~ 90MB สำหรับข้อความ "Hello world" ง่ายๆที่ด้านบนของหน้า
การจำลองบน Raspberry นั้นไม่เร็วพอที่จะให้ทันกับการป้อนข้อมูลของเครื่องพิมพ์ การพิมพ์ทำงานได้ แต่ฉันได้ยินเสียงที่ไม่ดีต่อสุขภาพจากมอเตอร์เครื่องพิมพ์กำลังทำงานอยู่ขณะรอข้อมูล
ในการแก้ไขปัญหานี้ให้ติดตั้งยูทิลิตี้sponge
จากmoreutils
แพ็คเกจและแก้ไขfilterdcp195c
เพื่อให้สามารถส่งออกของ$BRCONV $BRCONV_OP
(aka brdcp195cfilter
) sponge
ได้ ควรมีสามบรรทัดในกรณี "PostScript", "PDF" และ "*" ที่ท้ายไฟล์ซึ่งลงท้าย... | $BRCONV $BRCONV_OP | sponge
ด้วย
สิ่งนี้ทำคือการฮุบเอาท์พุททั้งหมดจากกระบวนการตัวแปลงที่รันเป็นเวลานานและส่งมันไปยังเครื่องพิมพ์ทั้งหมดในคราวเดียวเมื่อตัวแปลงเสร็จสิ้น ด้วยวิธีนี้มันใช้เวลานานกว่าการพิมพ์จะเริ่มขึ้น แต่เครื่องพิมพ์กำลังรับข้อมูลตามปกติ
( sponge
เก็บข้อมูลที่บัฟเฟอร์ในไดเรกทอรีชั่วคราวดังนั้นคุณจึงไม่ถูก จำกัด โดย RAM ของ Raspberry Pi)