Canon LBP2900 là dòng máy in quốc dân cực kỳ bền bỉ và phổ biến tại Việt Nam. Tuy nhiên, nếu bạn đang sử dụng hệ điều hành Linux, cụ thể là các phiên bản Ubuntu mới như Ubuntu 24.04 LTS hoặc Ubuntu 26.04 LTS, việc cài đặt driver cho chiếc máy in này là một “cơn ác mộng”.
Trình điều khiển CAPT chính thức từ Canon đã quá lỗi thời, yêu cầu các thư viện 32-bit cũ không còn được hỗ trợ, và daemon ccpd hoạt động cực kỳ thiếu ổn định trên các nhân Linux mới.
Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Canon LBP2900 trên các phiên bản Ubuntu mới bằng captdriver – một driver mã nguồn mở hoạt động như một CUPS filter chuẩn, kết hợp xử lý triệt để các xung đột USB phổ biến để đảm bảo máy in hoạt động mượt mà nhất.
Các vấn đề thường gặp trên Ubuntu mới
Khi cài đặt LBP2900 trên Ubuntu mới, bạn thường gặp 2 lỗi lớn:
- Lỗi thư viện: Không thể cài đặt các gói driver
.debchính thức của Canon do thiếu các thư viện 32-bit cũ (nhưlibglade2-0,libgtk2.0-0:i386,…). - Lỗi “CAPT: no reply from printer” hoặc kẹt lệnh in: Do tính năng tự động cấu hình máy in không cần driver của Ubuntu (
ipp-usb) và driver USB mặc định của nhân Linux (usblp) tranh chấp cổng kết nối với máy in.
Hướng dẫn cài đặt chi tiết từng bước
Bước 1: Gỡ cài đặt driver cũ (nếu có)
Nếu trước đó bạn đã thử cài đặt driver chính thức của Canon và gặp lỗi, hãy dọn dẹp hệ thống bằng cách chạy các lệnh sau trong Terminal (Ctrl + Alt + T):
sudo systemctl stop ccpd sudo systemctl disable ccpd sudo dpkg --purge cndrvcups-capt sudo dpkg --purge cndrvcups-common sudo apt-get autoremove -y
Bước 2: Cài đặt các công cụ biên dịch
Chúng ta sẽ biên dịch driver mã nguồn mở từ GitHub nên cần cài đặt các công cụ build:
sudo apt update sudo apt install -y build-essential automake autoconf libcups2-dev libcupsimage2-dev
Bước 3: Tải và biên dịch captdriver
Tiến hành tải mã nguồn captdriver mới nhất từ GitHub và biên dịch:
# Tải mã nguồn git clone https://github.com/mounaiban/captdriver.git cd captdriver # Cấu hình và biên dịch aclocal autoconf automake --add-missing ./configure make make ppd
Bước 4: Sao chép bộ lọc (filter) vào CUPS
Sau khi biên dịch thành công, chúng ta cần đưa file chạy (filter) vào đúng thư mục hệ thống của CUPS:
sudo cp src/rastertocapt /usr/lib/cups/filter/rastertocapt sudo chmod 755 /usr/lib/cups/filter/rastertocapt sudo chown root:root /usr/lib/cups/filter/rastertocapt
Bước 5: Giải quyết xung đột cổng USB (Bắt buộc)
Đây là bước quan trọng nhất giúp máy in không bị lỗi kẹt hoặc mất kết nối.
1. Gỡ bỏ ipp-usb: Gói này tự động chiếm dụng kết nối USB để cố gắng biến máy in thành dạng “Driverless” (in không cần driver), gây khóa thiết bị.
sudo apt-get remove -y ipp-usb
2. Đưa usblp vào danh sách đen (Blacklist): Nhân Linux mặc định sẽ nạp module usblp khi cắm máy in, gây tranh chấp trực tiếp với driver chúng ta vừa cài.
# Đưa vào danh sách đen echo "blacklist usblp" | sudo tee /etc/modprobe.d/blacklist-usblp.conf # Tạm thời gỡ module đang chạy ra khỏi bộ nhớ sudo modprobe -r usblp
3. Khởi động lại CUPS:
sudo systemctl restart cups
Bước 6: Xác định cổng kết nối và Đăng ký máy in
1. Đảm bảo máy in của bạn đã bật nguồn và cắm cáp USB vào máy tính.
2. Kiểm tra địa chỉ URI cổng USB của máy in bằng lệnh:
lpinfo -v | grep usb
Hệ thống sẽ trả về kết quả tương tự như sau: direct usb://Canon/LBP2900?serial=0000A2KA34kl
3. Đăng ký máy in vào hệ thống CUPS bằng lệnh lpadmin (thay thế chuỗi 0000A2KA34kl bằng số Serial của bạn tìm được ở trên):
sudo lpadmin -p LBP2900 -E -v "usb://Canon/LBP2900?serial=0000A2KA34kl" -P ppd/CanonLBP-2900-3000.ppd
4. Đặt Canon LBP2900 làm máy in mặc định trên máy tính:
sudo lpadmin -d LBP2900
Bước Cuối Cùng: Khởi động lại kết nối vật lý
Để đảm bảo máy in nhận diện cấu hình mới một cách sạch sẽ nhất, bạn hãy thực hiện:
- Tắt nguồn máy in.
- Rút cáp USB kết nối ra.
- Cắm lại cáp USB và Bật nguồn máy in lên.
Giờ đây bạn đã có thể mở tài liệu bất kỳ và bấm in thử! Trạng thái máy in sẽ hiển thị là Idle (Sẵn sàng) thay vì bị kẹt lệnh.
Chúc các bạn cài đặt thành công! Nếu gặp bất kỳ khó khăn nào trong quá trình thực hiện, hãy để lại ý kiến dưới phần bình luận nhé!
Nosomovo