Canon LBP2900 từ lâu đã được mệnh danh là chiếc máy in "huyền thoại" tại Việt Nam nhờ độ bền bỉ vượt thời gian. Tuy nhiên, với các kỹ sư hay lập trình viên chuyển sang sử dụng Linux Mint 22.x (dựa trên nền tảng Ubuntu 24.04 LTS 64-bit), việc khiến chiếc máy in này cất tiếng chạy là một bài toán hóc chuẩn mực.

Nguyên nhân cốt lõi nằm ở bộ driver CAPT (Canon Advanced Printing Technology) đã quá cũ, phụ thuộc nặng nề vào kiến trúc 32-bit (i386) và cơ chế quản lý daemon ccpd không tích hợp sẵn với Systemd hiện đại. Bài viết này sẽ hướng dẫn bạn giải quyết triệt để vấn đề trên.

💡 Lưu ý quan trọng: Linux Mint 22 đã loại bỏ mặc định nhiều thư viện 32-bit cũ. Bắt buộc bạn phải bật kiến trúc i386 và cài bổ sung các gói phụ thuộc thủ công trước khi cài driver.

1. Kích hoạt kiến trúc 32-bit và cài đặt thư viện phụ thuộc

Trước tiên, chúng ta cần khai báo cho hệ thống nhận diện kiến trúc i386, sau đó cài đặt các thư viện lõi mà driver Canon yêu cầu bao gồm libpopt0:i386, libxml2:i386 và các thành phần CUPS tương thích.

Hãy mở Terminal và thực thi chuỗi lệnh sau:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y libstdc++6:i386 libpopt0:i386 libxml2:i386 libpng16-16:i386 libatk1.0-0:i386 libcairo2:i386 libx11-6:i386 libxext6:i386 libxinerama1:i386 libxrandr2:i386 libcursor1:i386 libglib2.0-0:i386 cups

Nếu bạn muốn tối ưu hệ thống Linux Mint để quá trình build và biên dịch gói diễn ra mượt mà hơn, việc giữ cho các kho lưu trữ (repositories) luôn ở trạng thái cập nhật nhất là điều bắt buộc.

2. Tải và cài đặt bộ Driver Canon CAPT (v2.71)

Trang chủ Canon cung cấp gói driver chính thức bản 2.71 dưới dạng tập tin .deb. Chúng ta tiến hành tải về và giải nén cài đặt hai gói quan trọng: cconv-captcconv-capt-common.

cd /tmp
wget https://gdlp01.c-wss.com/gds/6/0100002766/02/linux-capt-drv-v271-uct.tar.gz
tar -xvf linux-capt-drv-v271-uct.tar.gz
cd linux-capt-drv-v271-uct/64-bit_GS_Driver/Debian

# Cài đặt các gói DEB
sudo dpkg -i cserv-capt_*_amd64.deb cconv-capt_*_amd64.deb || sudo apt-get -f install -y

3. Đăng ký máy in với CUPS và Daemon CCPD

Driver CAPT không giao tiếp trực tiếp qua CUPS thông thường mà thông qua một daemon trung gian gọi là ccpd. Chúng ta cần đăng ký máy in vào CUPS trước, sau đó liên kết thiết bị USB với CCPD.

Cắm cáp USB máy in vào máy tính, bật nguồn máy in và chạy các lệnh sau:

# Khởi động lại CUPS service
sudo systemctl restart cups

# Đăng ký máy in LBP2900 vào CUPS
sudo /usr/sbin/lpadmin -p LBP2900 -m CNCUPSLBP2900CAPTK.ppd -v ccp://localhost:59787 -E

# Đăng ký thiết bị USB với CCPD (Giả định cổng thiết bị là /dev/usb/lp0)
sudo /usr/sbin/ccpdadmin -p LBP2900 -o /dev/usb/lp0

4. Tạo Systemd Service cho CCPD và tự động nhận diện USB

Một vấn đề kinh điển là daemon ccpd thường xuyên bị "chết" hoặc không tự khởi động cùng hệ thống trên các bản Linux Mint mới. Hãy tạo một Service riêng cho Systemd để khắc phục vấn đề này.

Tạo file cấu hình service:

sudo nano /etc/systemd/system/ccpd.service

Dán nội dung sau vào file và lưu lại (Ctrl + O, Enter, Ctrl + X):

[Unit]
Description=CCPD Daemon for Canon CAPT Printers
After=network.target cups.service
Requires=cups.service

[Service]
Type=forking
ExecStart=/usr/sbin/ccpd
Restart=on-failure

[Install]
WantedBy=multi-user.target

Kích hoạt service vừa tạo:

sudo systemctl daemon-reload
sudo systemctl enable --now ccpd

5. Kiểm tra trạng thái và xử lý sự cố

Để kiểm tra xem máy in đã sẵn sàng nhận lệnh hay chưa, bạn hãy bật công cụ giám sát trạng thái của Canon bằng lệnh:

captstatusui -P LBP2900

Nếu cửa sổ hiển thị thông báo "Ready to Print", chúc mừng bạn! Chiếc máy in "huyền thoại" đã sẵn sàng phục vụ. Nếu gặp lỗi "No connection", hãy rút cáp USB ra cắm lại và khởi động lại dịch vụ ccpd bằng lệnh sudo systemctl restart ccpd.

Xem thêm các thủ thuật máy chủ và Linux khác tại mục góc kỹ thuật Linux trên Blog của mình nhé!