Không thể để máy in Canon LBP của tôi chạy trên Ubuntu 14.04


17

Tôi đã tải xuống trình điều khiển Linux CAPT V2.60 từ Canon và cài đặt cả hai gói .deb, được liệt kê trong thư mục 64 bit với Trung tâm phần mềm Ubuntu. Máy in Canon của tôi vẫn không được công nhận. Có điều gì khác tôi phải làm không? Máy in của tôi được kết nối qua USB.

Ubuntu sẽ thay thế tuyệt vời cho văn phòng của tôi, nhưng thật không may nếu không có sự hỗ trợ của máy in, tôi vẫn sẽ dựa vào Windows.

nhập mô tả hình ảnh ở đây


Đừng đổ lỗi cho Ubuntu vì sự thiếu hỗ trợ của Canon đối với Linux.
Rinzwind

@Rinzwind Tôi nghĩ Ubuntu sẽ có đủ sức mạnh để nói chuyện với Canon để đạt được sự hỗ trợ tốt hơn.
empedokles

Không, bạn sai ở đó. Đơn giản: Canon là một doanh nghiệp muốn có tiền. Và Canonical sẽ không trả tiền (điều đó trái với lý tưởng của công ty). Tất cả các hỗ trợ mà bạn thấy liên quan đến Canon trên Ubuntu là từ một tình nguyện viên (!) (Michael gruz trên launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind

@Rinzwind Theo hướng dẫn ở đó, tôi đã mở một thiết bị đầu cuối và thực hiện "sudo add-apt-repository ppa: michael-gruz / canon-trunk" và "sudo apt-get update". Còn gì nữa không?
empedokles

1
PPA đó đã lỗi thời, nó không hỗ trợ Ubuntu 14.04.
Bain

Câu trả lời:


14

Trình điều khiển máy in Canon CAPT là nguồn đóng và các thư viện nhị phân do Canon cung cấp được biên dịch cho i386. Vì vậy, nếu bạn ở trên amd64, trước tiên bạn sẽ cần bật multiarch và cài đặt một số thư viện:

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

Cài đặt cốc nếu bạn chưa có:

apt-get install cups

Tải xuống và giải nén trình điều khiển máy in 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

Cài đặt trình điều khiển 32 bit hoặc 64 bit tùy theo kiến ​​trúc của bạn:

  • 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
    

Bây giờ hãy tìm /usr/share/cups/modelcác tệp ppd mô tả máy in và chọn tệp phù hợp (hoặc gần nhất) với máy in của bạn:

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

Trong trường hợp này, chúng tôi đã chọn CNCUPSLBP6018CAPTS.ppdmô hình phù hợp với mô hình LBP6000.

Thêm máy in:

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

Và định cấu hình hệ thống của bạn để tự động khởi động Canon ccpd daemon:

# update-rc.d ccpd defaults

Các vấn đề

Có một số vấn đề với trình điều khiển máy in Canon:

  • Nó được xây dựng cho Debian và phiên bản Ubuntu được hỗ trợ lần cuối là 12.04. Nó không hoạt động trong 14.04 mặc dù.

  • Nó bao gồm các thư viện nhị phân nguồn đóng được xây dựng cho i386 32 bit, do đó không thể chạy tự nhiên trên amd64 (ngay cả trong gói 64 bit)

  • captstatusui bao gồm một cuộc gọi không giới hạn đến strcpytrong cnsktmodule.c không thành công với lỗi aborted *** buffer overflow detected ***trên một số hệ thống

  • Trình điều khiển máy in Canon thực sự là một trình nền riêng biệt nói chuyện với các cốc trên ổ cắm cục bộ hoặc mạng - nó để lại một cổng mạng mở trên hệ thống của bạn và tôi nghi ngờ mã Canon đã từng được kiểm tra về các lỗ hổng bảo mật

  • Máy in có thể xuất hiện hai lần trong cốc (một lần đối với máy in USB được phát hiện tự động, một lần là daemon Canon CCPD) nhưng máy in "USB" sẽ không hoạt động nếu bạn thử và in ra nó. Trong cài đặt máy in, nếu bạn thấy máy in của mình được cấu hình là máy in USB, bạn phải tắt thủ công (nhấp chuột phải, tắt)

  • Canon sử dụng phần mềm và giao thức độc quyền của riêng họ để nói chuyện với máy in, đó là lý do tại sao nó không được tích hợp với cốc, không được tự động phát hiện và yêu cầu trình điều khiển phải được cài đặt thủ công. Thật hợp lý khi hy vọng rằng một máy in sẽ được tự động phát hiện và chỉ hoạt động, nhưng điều này là không thể với Canon LBP. Máy in tiếp theo của tôi sẽ là máy in "chỉ hoạt động" với trình điều khiển nguồn mở, có thể là máy in mạng hỗ trợ chuẩn PCL - Ngôn ngữ lệnh máy in , như Brother HL-2250DN (máy in mạng song công giá rẻ, trước đây là máy in laser bán chạy nhất của Amazon) hoặc máy in được đề xuất HP Linux hoạt động với phần mềm HPLIP nguồn mở của họ .

  • Các tập lệnh xây dựng cho mã nguồn đã cũ và một chút lộn xộn. Do bao gồm các thư viện nhị phân i386 nguồn đóng và thiếu hỗ trợ cho multiarch trong các tập lệnh xây dựng, sẽ rất khó để biên dịch một bản phát hành 64 bit hoạt động hoàn toàn. Có thể biên dịch bản phát hành 32 bit trên hệ thống 32 bit một khi bạn đã khắc phục được các lỗi khác nhau trong hệ thống xây dựng.


Vấn đề: ccpd bị treo

Đôi khi ccpd bị treo và hàng đợi chỉ nói "Đang xử lý từ ..."

Hãy thử khởi động lại bằng tay:

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

Vấn đề: ccpd không hoạt động - chỉ có một quy trình ccpd chạy sau khi khởi động hệ thống

Đối với hoạt động bình thường, hai quá trình ccpd nên được chạy trong một hệ thống. Trình nền ccpd phụ thuộc vào việc chạy cốc daemon trước khi thực hiện quy trình thứ hai. Bạn có thể sử dụng phương pháp sau để khắc phục sự cố:

  1. Cho phép tập lệnh init init (mặc định update-rc.d cup).

  2. Hướng dẫn tập lệnh init ccpd để chạy sau lệnh init init (update-rc.d ccpd mặc định 99) hoặc thêm "ngủ 10 && /etc/init.d/ccpd start" trong tập lệnh /etc/rc.local.

Nếu bạn muốn sử dụng các quy tắc UDEV và tập lệnh khởi động, hãy lưu ý rằng các quy tắc UDEV thực thi trước tập lệnh init CUPS, vì vậy có thể hữu ích để khởi động lại tập lệnh init ccpd thay vì chỉ đơn giản là bắt đầu. Ví dụ: bạn có thể đặt chuỗi sau vào "/etc/rc.local":

ngủ 10 && /etc/init.d/ccpd khởi động lại

(Giải pháp từ Ubuntu wiki )


Báo cáo lỗi và sự cố cho bộ phận hỗ trợ của Canon

Canon có một địa chỉ email chính thức để báo cáo bất kỳ lỗi và sự cố nào với trình điều khiển:

sup-debian@list.canon.co.jp

Xây dựng từ nguồn

Nếu bạn muốn thử xây dựng và cài đặt từ nguồn, hãy làm theo các hướng dẫn sau ( tập lệnh xây dựng Arch cũng có thể giúp đỡ):

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

Tôi bao gồm điều này giống như một lưu ý cho bất cứ ai có xu hướng đi theo con đường này. Hầu hết mọi người không nên cố gắng xây dựng điều này từ nguồn. Ngay cả trên hệ thống amd64, gói kết quả sẽ bao gồm các thư viện i386 đã đóng.


Cảm ơn. Tôi cũng luôn tìm kiếm hiệu quả năng lượng. Còn LaserJet Pro P1102 thì sao? topten.ch/deutsch/buro/laserdrucker/ từ
empedokles

Theo trang HPLIP P1102 , máy in được hỗ trợ đầy đủ trên Ubuntu 14.04. Nó đòi hỏi một plugin nguồn đóng có thể tải xuống; họ cung cấp phần mềm ( hp-setup) sẽ thực hiện tải xuống và định cấu hình nó.
Bain


1
Cảm ơn câu trả lời! Nhân tiện, làm thế nào bạn biết điều đó libstdc++6:i386 libxml2:i386 zlib1g:i386là bắt buộc? Các hướng dẫn đã đề cập ia32-libs, từ đó đã không có trong các phiên bản Ubuntu sau này, vì vậy tôi đã tự hỏi sự thay thế là gì.
syockit

1
@syockit Nếu bạn chạy, file canon/libcapt.sonó sẽ xác định các thư viện Canon là "ELF 32-bit" để chúng tôi biết rằng nó cần các thư viện động 32 bit. Chạy ldd như vậy ldd canon/libcapt.so- trình liên kết sẽ in bất kỳ thư viện động cần thiết nào và hiển thị những thư viện không tìm thấy. Sau đó, bạn có thể sử dụng apt-file search libpthread.sođể tìm gói thư viện đang ở.
Bain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.