予備知識

LinuxといってもFedora42までくると、大抵のドライバーは内蔵されており、Windowsみたいにプリンターを接続しただけで自動的に使えるようになるのですが、LBP7010CはAPIが非公開となっており、通常の印刷命令をccpdというキヤノン独自のドライバーをパイプしないと印刷できないようになっています。

それなんで、どうにかしてccpdをインストールしたいのですが、これがけっこう古いドライバーで、Fedora42に入れるとなると、ひと工夫もふた工夫もしなければなりません。

準備

まず、PCにLBP7010CをUSBケーブルで接続します。「そんなの当たり前だろ?」とかいってこの工程を侮ってはいけません。USBケーブルでLBP7010Cを接続して、LBP7010Cの電源を入れてからFedoraを起動しないと、/dev/usb/lp0が作られず印刷できません。

次に、ここ

https://canon.jp/-/media/Project/Canon/CanonJP/Website/support/software/drv-upd/lasershot/linux/captlinux?pr=3174&os=20
から、LBP7010Cのドライバーをダウンロードします。

ところが、このダウンロードページが厄介でして、ドライバーに直リンクしておらず、いったんローダーにアクセスしてから、ローダーのプログラムがドライバーを送出するようになっています。

したがって、wgetが使えず、ブラウザでないとダウンロードできません。GUIがインストールされたFedoraであれば、FireFoxでダウンロードできますが、GUIがインストールされてない場合は、いったんWindows機でダウンロードしてから、USBメモリー等でFedora機にコピーする必要があります。

CUPSをインストールする 

dnf install cups
でインストールできると思います。
その後、
systemctl start cups
systemctl enable cups
として起動させます。

CUPSが起動したら、FireFoxを起動して、URLバーに、
http://localhost:631
と入力します。
GUIがインストールされてない場合は、
/etc/cups/cupsd.conf
を編集して同じネットワーク内のWindows機からアクセスできるようにします。

 ドライバーのインストール

さきほどダウンローしたlinux-capt-drv-v271-jp.tar.gzの入ったディレクトリに移動して、
tar xvzf linux-capt-drv-v271-jp.tar.gz
で解凍した後、
cd linux-capt-drv-v271-jp/64-bit_Driver/RPM/
として、
dnf install libc.so.6
dnf install libglade2
dnf install libstdc++.so.6
rpm -ivh cndrvcups-common-3.21-1.x86_64.rpm
として共通ドライバーをインストールします。
次に
dnf install libpopt.so.0
dnf install libxml2.so.2
rpm -ich cndrvcups-capt-2.71-1.x86_64.rpm
としてccpdドライバーをインストールします。

ただし、これはあくまで例であって、どのライブラリが必要だと言われるかはFedoraのバージョンや、そのPCで既に何を入れてるかにもよります。なので、これを丸写ししてもうまくいかないと思います。

基本的に、「◯◯はcndrvcups-common-3.21-1」に必要とされています、とかなんとか言われたら、dnfでそのライブラリを入れてください。

libglade-2.6.soが必要だと言われて、
dnf install libglade-2.6.so
とかやってもダメで、
dnf install libglade2
みたいにハイフンを抜かなければならない場合もあるので、Linuxは侮れません(?)。

プリンターの登録 

/usr/sbin/lpadmin -p LBP7010C -m CNCUPSLBP7010CCAPTJ.ppd -v ccp://localhost:59687 -E
/usr/sbin/ccpdadmin -p LBP7010C -o /dev/usb/lp0

これで、CUPSにLBP7010Cが登録されます。ただし、CUPSで自動的に「LBP-7010C-LBP7018C」なるプリンターが登録されますが、こちらは無視してください。

CCPDを自動的に起動させる 

このドライバーは古いので、
/etc/rc.d/init.d/ccpd start
で起動させて、
chkconfig ccpd on
で次回から自動起動させるようになっていますが、今のLinuxでそんな手は使えません。なので、今のLinuxで使えるようにします。

最初から入ってるスクリプトを消します。
rm /etc/rc.d/init.d/ccpd

新しい起動スクリプトを作ります。
vi /etc/systemd/system/ccpd.service

[Unit]
Description=Canon CAPT daemon
Requires=cups.service
After=printer.target
[Service]
Type=forking
ExecStart=/usr/sbin/ccpd
[Install]
WantedBy=multi-user.target

CCPDを起動します。
systemctl daemon-reload
systemctl start ccpd.service
電源投入時に自動起動させます。
systemctl enable ccpd.service

▽ここを参考にしました。ありがとうございました。
https://forums.ubuntulinux.jp/viewtopic.php?id=18629

注意 

1.CCPDが常駐しているか細心の注意を払う
うっかりCCPDが常駐していない時にプリンターにデーターを送信してしまうと、CCPDからCUPSエラーコードが返り、CUPSは「このプリンターはエラーで使えない」という事を覚えてしまいます。この事は、PCを再起動してもずっと覚えています。

そのため、その後いくらプリンターにデーターを送信してもキューにたまるだけで印刷ができません。私など、最初にCCPDが常駐してない時にテストページの印刷をやってしまったばっかりに、その後は設定がうまくいっているにもかかわらず印刷できないので、死ぬほど悩みました。

CUPSの画面で「ccpd returned error 保留中」と表示されている場合は、「メンテナンス」→「プリンターの再開」を押してください。これで印刷できるようになります。

CCPDの常駐は、
ps ax | grep ccpd
で確認できます。

2.自動的に登録される「LBP-7010C-LBP7018C」なるプリンターは使わない
これはCUPSが自動的にプリンターを識別して登録してくれちゃいますが、CCPDをパイプしないため、まるで印刷できません。LBP7010CはあくまでAPI非公開でCCPDをパイプしないと一切印刷されません。なら登録しなきゃいいんですけど、困ったものです。

3.先にプリンターの電源を入れる
APIは、まずデーターを/dev/usb/lp0に印刷して、それをCCPDが受け取ってから、独自APIに変換してプリンターに送信します。しかし、PCより先にプリンターの電源を入れてないと、/dev/usb/lp0が作られず印刷できません。プリンターをPCより先に電源を入れてください。

うっかり/dev/usb/lp0がない時に印刷しようとすると、CUPSがまたしても保留中にしてしまうので、そういう時は「メンテナンス」→「プリンターの再開」を押してください。

このページの先頭へ
  広告