Pertanyaan Tidak bisa mendapatkan printer Canon LBP saya berjalan di bawah Ubuntu 14.04


Saya mengunduh driver CAPT Linux V2.60 dari Canon dan menginstal 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 membuat pengganti yang bagus untuk kantor saya, tetapi sayangnya tanpa dukungan printer saya akan tetap mengandalkan Windows.

enter image description here


13
2018-05-09 09:43


asal


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 mendapatkan 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 berasal dari relawan (!) (Michael gruz di launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ). - Rinzwind
@Rinzwind Menurut petunjuk 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
PPA itu sudah usang, tidak mendukung Ubuntu 14.04. - bain


Jawaban:


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

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

Pasang piala jika Anda belum memilikinya:

apt-get install cups

Unduh dan buka 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 lihatlah /usr/share/cups/model untuk file ppd yang menjelaskan printer dan pilih salah satu yang cocok (atau paling dekat) 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.ppd yang cocok dengan model 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:

  • Dibangun untuk Debian dan versi Ubuntu terakhir yang didukung adalah 12.04. Itu bekerja di 14.04 sekalipun.

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

  • captstatusui menyertakan panggilan tak terbatas ke strcpy di cnsktmodule.c yang gagal dengan kesalahan aborted *** buffer overflow detected *** pada beberapa sistem

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

  • Printer dapat muncul dua kali dalam bentuk cangkir (satu kali untuk printer USB yang terdeteksi 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 dikonfigurasi sebagai printer USB, Anda harus secara manual menonaktifkannya (klik kanan, nonaktifkan)

  • Canon menggunakan perangkat lunak dan protokolnya sendiri untuk berbicara dengan printer, yang mengapa tidak terintegrasi dengan cangkir, tidak terdeteksi secara otomatis, dan membutuhkan driver untuk dipasang secara manual. Masuk akal untuk mengharapkan bahwa printer harus secara otomatis terdeteksi dan berfungsi, tetapi ini tidak mungkin dilakukan dengan Canon LBP. Printer berikutnya saya akan menjadi printer yang "berfungsi" dengan driver sumber terbuka, mungkin printer jaringan yang mendukung PCL - Bahasa Perintah Printer standar, seperti Saudara HL-2250DN (printer jaringan dupleks murah, sebelumnya printer laser terlaris Amazon), atau a Printer yang direkomendasikan HP Linux yang bekerja dengan sumber terbuka mereka HPLIP perangkat lunak.

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


Masalah: ccpd hang

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

Coba restart 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 startup sistem

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

  1. Aktifkan skrip init cups (update-rc.d cups defaults).

  2. Instruksikan skrip init ccpd untuk dijalankan setelah cangkir init (update-rc.d ccpd defaults 99), atau tambahkan "sleep 10 && /etc/init.d/ccpd start" di skrip /etc/rc.local.

Jika Anda ingin menggunakan aturan UDEV dan skrip startup, ketahuilah 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":

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

(Solusi dari Ubuntu wiki)


Melaporkan bug dan masalah ke dukungan Canon

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

sup-debian@list.canon.co.jp

Bangun dari sumber

Jika Anda tergoda untuk mencoba membangun dan menginstal dari sumber, ikuti petunjuk ini (the Skrip membangun Arch mungkin juga 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 termasuk ini hanya sebagai catatan bagi siapa pun yang cenderung mengikuti jalan ini. Kebanyakan orang tidak boleh mencoba membangun ini dari sumber. Bahkan pada sistem amd64, paket yang dihasilkan akan menyertakan perpustakaan tertutup i386.


12
2018-05-11 13:11



Terima kasih. Saya juga selalu mencari efisiensi energi. Bagaimana dengan LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/… - empedokles
Menurut Halaman HPLIP P1102 printer yang sepenuhnya didukung pada Ubuntu 14.04. Itu memang membutuhkan plugin sumber tertutup yang dapat diunduh; mereka menyediakan perangkat lunak (hp-setup) yang akan melakukan unduhan dan konfigurasi. - bain
Juga relevan: Apa printer terbaik untuk Ubuntu? - bain
Terima kasih atas jawabannya! Ngomong-ngomong, bagaimana kamu tahu itu? libstdc++6:i386 libxml2:i386 zlib1g:i386 diperlukan? Instruksi itu menyebutkan ia32-libs, yang sejak itu tidak ada di versi Ubuntu kemudian, jadi saya bertanya-tanya apa pengganti itu. - syockit
@syockit Jika Anda menjalankan file canon/libcapt.so itu akan mengidentifikasi perpustakaan Canon sebagai "ELF 32-bit" sehingga kita tahu itu membutuhkan pustaka dinamis 32-bit. Jalankan ldd seperti itu ldd canon/libcapt.so - penaut akan mencetak pustaka dinamis yang diperlukan dan menampilkan yang tidak ditemukan. Anda dapat menggunakannya apt-file search libpthread.so untuk menemukan paket yang digunakan perpustakaan. - bain