Canon LBP printer saya tidak dapat berjalan di bawah Ubuntu 14.04

17

Saya mengunduh driver CAPT Linux V2.60 dari Canon dan menginstal kedua paket deb, yang terdaftar di bawah folder 64bit dengan Ubuntu Software-Center. Printer Canon saya masih tidak akan dikenali. Apakah ada hal lain yang harus saya lakukan? Printer saya terhubung melalui USB.

Ubuntu akan menjadi pengganti yang bagus untuk kantor saya, tetapi sayangnya tanpa dukungan printer saya masih akan mengandalkan Windows.

masukkan deskripsi gambar di sini

empedokles
sumber
Jangan salahkan Ubuntu karena kurangnya dukungan oleh Canon ke Linux.
Rinzwind
@Rinzwind Saya pikir Ubuntu akan memiliki kekuatan yang cukup untuk berbicara dengan Canon untuk mencapai dukungan yang lebih baik.
empedokles
Tidak, kamu salah di sana. Sederhana: Canon sebagai bisnis menginginkan uang. Dan Canonical tidak akan membayar (itu bertentangan dengan cita-cita perusahaan). Semua dukungan yang Anda lihat mengenai Canon di Ubuntu adalah dari sukarelawan (!) (Michael gruz di launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind
@Rinzwind Menurut instruksi di sana saya membuka terminal dan melakukan "sudo add-apt-repository ppa: michael-gruz / canon-trunk" dan "sudo apt-get update". Ada yang lain?
empedokles
1
PPA itu sudah usang, tidak mendukung Ubuntu 14.04.
bain

Jawaban:

14

Driver printer CAPT Canon adalah sumber tertutup dan perpustakaan biner yang disediakan oleh Canon dikompilasi untuk i386. Jadi jika Anda menggunakan amd64, Anda harus terlebih dahulu mengaktifkan multiarch dan menginstal beberapa perpustakaan:

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

Pasang cangkir jika Anda belum memilikinya:

apt-get install cups

Unduh dan buka paket driver printer 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

Instal driver 32-bit atau 64-bit tergantung pada arsitektur Anda:

  • 32-bit

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64-bit

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

Sekarang cari /usr/share/cups/modelfile ppd yang menggambarkan printer dan pilih salah satu yang cocok (atau paling dekat dengan) printer Anda:

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

Dalam hal ini kami memilih CNCUPSLBP6018CAPTS.ppdmodel mana yang cocok dengan LBP6000.

Tambahkan printer:

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

Dan konfigurasikan sistem Anda untuk memulai daemon Canon ccpd secara otomatis:

# update-rc.d ccpd defaults

Masalah

Ada beberapa masalah dengan driver printer Canon:

  • Itu dibangun untuk Debian dan versi Ubuntu yang didukung terakhir adalah 12,04. Itu bekerja di 14,04 sekalipun.

  • Ini termasuk perpustakaan biner sumber tertutup yang dibangun untuk i386 32-bit, jadi tidak dapat dijalankan secara native di amd64 (bahkan dalam paket 64-bit)

  • captstatusui termasuk panggilan tidak terbatas ke strcpydalam cnsktmodule.c yang gagal dengan kesalahan aborted *** buffer overflow detected ***pada beberapa sistem

  • Driver printer Canon sebenarnya adalah daemon terpisah yang berbicara dengan cangkir melalui soket lokal atau jaringan - ia meninggalkan port jaringan terbuka di sistem Anda, dan saya ragu kode Canon pernah diaudit untuk kerentanan keamanan

  • Printer dapat muncul dua kali dalam gelas (satu kali untuk printer USB yang terdeteksi secara otomatis, sekali sebagai daemon Canon CCPD) tetapi printer "USB" tidak akan berfungsi jika Anda mencoba dan mencetaknya. Dalam pengaturan printer, jika Anda melihat printer Anda dikonfigurasikan sebagai printer USB, Anda harus menonaktifkannya secara manual (klik kanan, nonaktifkan)

  • Canon menggunakan perangkat lunak dan protokol milik mereka sendiri untuk berbicara dengan printer, itulah sebabnya mengapa printer tidak terintegrasi dengan gelas, tidak terdeteksi secara otomatis, dan mengharuskan driver dipasang secara manual. Masuk akal untuk berharap bahwa printer harus secara otomatis terdeteksi dan hanya berfungsi, tetapi ini tidak mungkin dengan Canon LBP. Printer saya berikutnya adalah printer yang "hanya berfungsi" dengan driver open source, mungkin printer jaringan yang mendukung PCL - standar Bahasa Perintah Printer , seperti Brother HL-2250DN (printer jaringan duplex murah, yang sebelumnya merupakan printer laser terlaris di Amazon) , atau printer yang direkomendasikan oleh HP Linux yang bekerja dengan HPLIP open source mereka perangkat lunak .

  • Skrip build untuk kode sumber sudah tua dan sedikit berantakan. Karena dimasukkannya pustaka sumber tertutup i386 sumber tertutup, dan kurangnya dukungan untuk multiarch dalam skrip build, akan sangat sulit untuk mengkompilasi rilis 64-bit yang berfungsi penuh. Mengkompilasi rilis 32-bit, pada sistem 32-bit, dimungkinkan setelah Anda mengatasi berbagai bug dalam sistem build.


Masalah: ccpd hang

Terkadang ccpd hang dan antrian hanya mengatakan "Memproses sejak ..."

Coba mulai ulang secara manual:

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

Masalah: ccpd tidak berfungsi - hanya satu proses ccpd yang berjalan setelah sistem dinyalakan

Untuk operasi normal, dua proses ccpd harus dijalankan dalam suatu sistem. Daemon ccpd tergantung pada menjalankan daemon cangkir sebelum melakukan proses kedua. Anda dapat menggunakan metode berikut untuk menyelesaikan masalah:

  1. Aktifkan skrip init cups (perbarui-rc.d default cups).

  2. Instruksikan skrip init ccpd untuk menjalankan setelah cawan init (perbarui-rc.d ccpd default 99), atau tambahkan "sleep 10 && /etc/init.d/ccpd start" di skrip /etc/rc.local.

Jika Anda ingin menggunakan aturan UDEV dan skrip startup, perlu diketahui bahwa aturan UDEV dijalankan sebelum skrip init CUPS, jadi mungkin berguna untuk me-restart skrip init ccpd daripada hanya memulai. Misalnya, Anda dapat menempatkan string berikut di "/etc/rc.local":

sleep 10 && /etc/init.d/ccpd restart

(Solusi dari wiki Ubuntu )


Melaporkan bug dan masalah ke dukungan Canon

Canon memiliki alamat email resmi untuk melaporkan segala bug dan masalah dengan pengemudi:

[email protected]

Bangun dari sumber

Jika Anda tergoda untuk mencoba membangun dan menginstal dari sumber, ikuti petunjuk ini ( skrip pembuatan Arch juga dapat membantu):

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

Saya memasukkan ini hanya sebagai catatan bagi siapa saja yang cenderung mengikuti jalan ini. Kebanyakan orang seharusnya tidak berusaha membangun ini dari sumber. Bahkan pada sistem amd64, paket yang dihasilkan akan menyertakan pustaka i386 tertutup.

bain
sumber
Terima kasih. Saya juga selalu mencari efisiensi energi. Bagaimana dengan LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles
Menurut halaman HPLIP P1102 printer itu didukung penuh pada Ubuntu 14.04. Itu memang membutuhkan plugin sumber tertutup yang dapat diunduh; mereka menyediakan perangkat lunak ( hp-setup) yang akan melakukan unduhan dan mengkonfigurasinya.
bain
1
Terima kasih atas jawabannya! Ngomong-ngomong, bagaimana Anda tahu libstdc++6:i386 libxml2:i386 zlib1g:i386itu diperlukan? Instruksi memang menyebutkan ia32-libs, yang sejak itu tidak ada di versi Ubuntu kemudian, jadi saya bertanya-tanya apa penggantiannya.
syockit
1
@syockit Jika Anda menjalankannya file canon/libcapt.soakan mengidentifikasi perpustakaan Canon sebagai "ELF 32-bit" jadi kami tahu bahwa itu membutuhkan perpustakaan dinamis 32-bit. Jalankan ldd seperti itu ldd canon/libcapt.so- penghubung akan mencetak pustaka dinamis apa pun yang diperlukan dan menunjukkan yang tidak ditemukan. Anda kemudian dapat menggunakan apt-file search libpthread.sountuk menemukan paket yang ada di perpustakaan.
bain