ไม่สามารถทำให้เครื่องพิมพ์ Canon LBP ของฉันทำงานภายใต้ Ubuntu 14.04 ได้


17

ฉันดาวน์โหลดไดรเวอร์ Linux CAPT V2.60 จาก Canon และติดตั้งแพคเกจ. deb ทั้งคู่ซึ่งอยู่ในรายการภายใต้โฟลเดอร์ 64 บิตด้วยศูนย์ซอฟต์แวร์ Ubuntu เครื่องพิมพ์ Canon ของฉันยังคงไม่เป็นที่รู้จัก มีอะไรอีกบ้างที่ฉันต้องทำ? เครื่องพิมพ์ของฉันเชื่อมต่อผ่าน USB

อูบุนตูจะทำการทดแทนที่ยอดเยี่ยมสำหรับสำนักงานของฉัน แต่น่าเสียดายที่ไม่มีการสนับสนุนเครื่องพิมพ์ฉันจะยังคงใช้ Windows

ป้อนคำอธิบายรูปภาพที่นี่


อย่าตำหนิ Ubuntu เพราะขาดการสนับสนุนจาก Canon ถึง Linux
Rinzwind

@ Rinzwind ฉันคิดว่า Ubuntu จะมีพลังมากพอที่จะคุยกับ Canon เพื่อรับการสนับสนุนที่ดีกว่า
empedokles

ไม่ผิดหรอก ง่าย ๆ : Canon ในฐานะธุรกิจต้องการเงิน และ Canonical จะไม่จ่ายเงิน (ขัดต่ออุดมคติของ บริษัท ) การสนับสนุนทั้งหมดที่คุณเห็นเกี่ยวกับ Canon บน Ubuntu นั้นมาจากอาสาสมัคร (!) (michael gruz บน launchpad launchpad.net/~michael-gruz/+archive/canon-trunk )
Rinzwind

@Rinzwind ตามคำแนะนำฉันเปิดเทอร์มินัลแล้ว "sudo add-apt-repository ppa: michael-gruz / canon-trunk" และ "sudo apt-get update" มีอะไรอีกไหม
empedokles

1
PPA นั้นล้าสมัยไม่รองรับ Ubuntu 14.04
bain

คำตอบ:


14

ไดรเวอร์เครื่องพิมพ์ Canon CAPT ปิดแหล่งที่มาและห้องสมุดไบนารีที่จัดทำโดย Canon รวบรวมสำหรับ i386 ดังนั้นหากคุณใช้ amd64 คุณจะต้องเปิดใช้งาน multiarch ก่อนและติดตั้งบางไลบรารี:

# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386

ติดตั้งถ้วยถ้าคุณยังไม่ได้:

apt-get install cups

ดาวน์โหลดและแกะไดรเวอร์เครื่องพิมพ์ Canon CAPT:

wget http://gdlp01.c-wss.com/gds/6/0100004596
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz

ติดตั้งไดรเวอร์ 32- บิตหรือ 64- บิตขึ้นอยู่กับสถาปัตยกรรมของคุณ:

  • 32 บิต

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64 บิต

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb
    

ค้นหา/usr/share/cups/modelไฟล์ ppd ที่อธิบายเครื่องพิมพ์และเลือกไฟล์ที่ตรงกับ (หรือใกล้เคียงที่สุด) เครื่องพิมพ์ของคุณ:

# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"

ในกรณีนี้เราเลือกCNCUPSLBP6018CAPTS.ppdรุ่นที่ตรงกับ LBP6000

เพิ่มเครื่องพิมพ์:

# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0

และกำหนดค่าระบบของคุณเพื่อเริ่มต้น Canon ccpd daemon โดยอัตโนมัติ:

# update-rc.d ccpd defaults

ปัญหาที่เกิดขึ้น

มีปัญหาหลายอย่างกับไดรเวอร์เครื่องพิมพ์ Canon:

  • มันถูกสร้างขึ้นสำหรับ Debian และ Ubuntu รุ่นที่รองรับล่าสุดคือ 12.04 มันทำงานใน 14.04 แม้ว่า

  • มันประกอบไปด้วยไลบรารีไบนารีแบบปิดแหล่งที่สร้างขึ้นสำหรับ 32 บิต i386 ดังนั้นจึงไม่สามารถเรียกใช้แบบดั้งเดิมบน amd64 (แม้แต่ในแพ็คเกจ 64 บิต)

  • captstatusui รวมถึงการโทรไม่ จำกัดstrcpyใน cnsktmodule.c ซึ่งล้มเหลวด้วยข้อผิดพลาดaborted *** buffer overflow detected ***ในบางระบบ

  • ไดรเวอร์เครื่องพิมพ์ Canon เป็น daemon ที่แยกต่างหากซึ่งพูดคุยกับถ้วยบนซ็อกเก็ตเครือข่ายหรือ - มันออกจากพอร์ตเครือข่ายเปิดในระบบของคุณและฉันสงสัยว่ารหัส Canon ได้รับการตรวจสอบช่องโหว่ด้านความปลอดภัยแล้ว

  • เครื่องพิมพ์สามารถปรากฏขึ้นสองครั้งในถ้วย (หนึ่งครั้งสำหรับเครื่องพิมพ์ USB ที่ตรวจพบโดยอัตโนมัติเช่นเดียวกับ Canon CCPD daemon) แต่เครื่องพิมพ์ "USB" จะไม่ทำงานหากคุณลองและพิมพ์ไป ในการตั้งค่าเครื่องพิมพ์หากคุณเห็นว่าเครื่องพิมพ์กำหนดค่าเป็นเครื่องพิมพ์ USB คุณต้องปิดการใช้งานด้วยตนเอง (คลิกขวาปิดการใช้งาน)

  • Canon ใช้ซอฟต์แวร์และโปรโตคอลที่เป็นกรรมสิทธิ์ของตัวเองสำหรับพูดคุยกับเครื่องพิมพ์ซึ่งเป็นสาเหตุที่ไม่ได้รวมเข้ากับถ้วยไม่ตรวจพบโดยอัตโนมัติและต้องติดตั้งไดรเวอร์ด้วยตนเอง มีเหตุผลที่คาดว่าจะตรวจพบเครื่องพิมพ์โดยอัตโนมัติและทำงานได้ แต่ Canon LBP ไม่สามารถทำได้ เครื่องพิมพ์ต่อไปของฉันจะเป็นเครื่องพิมพ์ที่ "เพิ่งทำงาน" กับไดรเวอร์โอเพ่นซอร์สซึ่งอาจเป็นเครื่องพิมพ์เครือข่ายที่รองรับPCL - ภาษามาตรฐานการพิมพ์คำสั่งของเครื่องพิมพ์เช่นBrother HL-2250DN (เครื่องพิมพ์เครือข่ายดูเพล็กซ์ราคาถูก หรือเครื่องพิมพ์ที่แนะนำของ HP Linuxที่ทำงานร่วมกับซอฟต์แวร์HPLIPโอเพนซอร์ซ

  • สคริปต์การสร้างสำหรับซอร์สโค้ดเก่าและค่อนข้างยุ่ง เนื่องจากการรวมของไลบรารีไบนารี i386 ปิดแหล่งที่มาและขาดการสนับสนุน multiarch ในสคริปต์การสร้างมันจะยากมากที่จะรวบรวมรุ่น 64 บิตที่ทำงานได้อย่างสมบูรณ์ การคอมไพล์รีลีส 32- บิตบนระบบ 32- บิตเป็นไปได้เมื่อคุณแก้ไขข้อผิดพลาดต่าง ๆ ในระบบบิลด์


ปัญหา: ccpd แฮงค์

บางครั้ง ccpd แฮงค์และคิวเพิ่งพูดว่า "กำลังดำเนินการตั้งแต่ ... "

ลองรีสตาร์ทด้วยตนเอง:

pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status

ปัญหา: ccpd ไม่ทำงาน - เพียงหนึ่งกระบวนการ ccpd ที่ทำงานหลังจากการเริ่มต้นระบบ

สำหรับการดำเนินการปกติสองกระบวนการ ccpd ควรทำงานในระบบ ccpd daemon ขึ้นอยู่กับการทำงาน cups daemon ก่อนฟอร์กกระบวนการที่สอง คุณสามารถใช้วิธีการต่อไปนี้เพื่อแก้ไขปัญหา:

  1. เปิดใช้งานสคริปต์ init ถ้วย (เริ่มต้น update-rc.d ถ้วย)

  2. สั่งให้สคริปต์เริ่มทำงานของ ccpd เพื่อทำงานหลังจากเริ่มต้น cups (update-rc.d ccpd ค่าเริ่มต้น 99) หรือเพิ่ม "sleep 10 && /etc/init.d/ccpd start" ในสคริปต์ /etc/rc.local

หากคุณต้องการใช้กฎ UDEV และสคริปต์เริ่มต้นโปรดทราบว่ากฎ UDEV จะทำงานก่อนสคริปต์ CUPS ดังนั้นจึงอาจมีประโยชน์ในการเริ่มต้นสคริปต์ ccpd init ใหม่แทนที่จะเริ่ม ตัวอย่างเช่นคุณสามารถวางสตริงต่อไปนี้ใน "/etc/rc.local":

sleep 10 &&/etc/init.d/ccpd ทำการรีสตาร์ท

(โซลูชันจาก Ubuntu wiki )


การรายงานข้อผิดพลาดและปัญหากับฝ่ายสนับสนุนของ Canon

Canon มีที่อยู่อีเมลอย่างเป็นทางการสำหรับการรายงานข้อผิดพลาดและปัญหากับไดรเวอร์:

sup-debian@list.canon.co.jp

สร้างจากแหล่งที่มา

หากคุณถูกล่อลวงให้ลองสร้างและติดตั้งจากแหล่งที่มาให้ทำตามคำแนะนำเหล่านี้ ( สคริปต์การสร้าง Archอาจช่วยได้เช่นกัน):

sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev

wget http://gdlp01.c-wss.com/gds/6/0100004596/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
cd Linux_CAPT_PrinterDriver_V260_uk_EN/Src/

# do cndrvcups-common
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
rm -rf cndrvcups-common-2.60-1/
tar -zxvf cndrvcups-common-2.60-1.tar.gz
cd cndrvcups-common-2.60-1/
sed -i -e 's/-lcups/-lcups -lgmodule-2.0/' cngplp/src/Makefile.am
dpkg-buildpackage -b -uc
cd ..
sudo apt-get install cups
sudo dpkg -i cndrvcups-common_2.60-1_amd64.deb

# do cndrvcups-capt
rm -rf cndrvcups-capt-2.60-1/
tar -zxvf cndrvcups-capt-2.60-1.tar.gz
cd cndrvcups-capt-2.60-1/
export echo=echo
sed -i -e 's/dh_shlibdeps/dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info/' debian/rules
sed -i -e 's/eval cmds=\"$old_archive_cmds/echo/' cngplp/ltmain.sh
sed -i -e 's:uimain.h":uimain.h"\n#include <cups/ppd.h>:' statusui/src/ppapdata.c
sed -i -e 's/cnsktmodule.la/cnsktmodule.la -lpthread/' statusui/src/Makefile.am
debian/rules configure
sed -i -e 's/RANLIB=/#RANLIB=/' cngplp/libtool
debian/rules build
fakeroot debian/rules install
fakeroot debian/rules binary-arch
cd ..
sudo dpkg -i cndrvcups-capt_2.60-1_amd64.deb

ฉันกำลังรวมสิ่งนี้ไว้เป็นข้อสังเกตสำหรับทุกคนที่อยากจะติดตามเส้นทางนี้ คนส่วนใหญ่ไม่ควรพยายามสร้างสิ่งนี้จากแหล่งที่มา แม้ในระบบ amd64 แพ็คเกจผลลัพธ์จะรวมไลบรารี i386 ที่ปิดอยู่


ขอบคุณ ฉันมักจะมองหาประสิทธิภาพการใช้พลังงาน แล้ว LaserJet Pro P1102 ล่ะ? topten.ch/deutsch/buro/laserdrucker/…
empedokles

ตามหน้าHPLIP P1102ว่าเครื่องพิมพ์รองรับ Ubuntu 14.04 อย่างสมบูรณ์ มันต้องใช้ปลั๊กอินแหล่งที่มาที่ดาวน์โหลดได้แบบปิด; พวกเขามีซอฟต์แวร์ ( hp-setup) ที่จะทำการดาวน์โหลดและกำหนดค่า
bain


1
ขอบคุณสำหรับคำตอบ! โดยวิธีการที่คุณรู้ว่าสิ่งที่libstdc++6:i386 libxml2:i386 zlib1g:i386ถูกต้องหรือไม่ คำแนะนำไม่ได้พูดถึงia32-libsซึ่งไม่ได้มีอยู่ใน Ubuntu รุ่นต่อมาดังนั้นฉันจึงสงสัยว่าสิ่งที่ใช้แทนคืออะไร
syockit

1
@syockit หากคุณเรียกใช้file canon/libcapt.soมันจะระบุไลบรารี Canon เป็น "เอลฟ์ 32 บิต" เพื่อให้เรารู้ว่ามันต้องการไลบรารีไดนามิก 32 บิต เรียกใช้ ldd ดังนี้ldd canon/libcapt.so- ตัวเชื่อมโยงจะพิมพ์ไลบรารีไดนามิกที่ต้องการและแสดงไลบรารีที่ไม่พบ จากนั้นคุณสามารถใช้apt-file search libpthread.soเพื่อค้นหาแพ็กเกจที่มีไลบรารีอยู่ได้
bain
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.