はじめに
ひょんなことから未使用品のレーザープリンターCanon LBP3100を入手。2008年発売のくっそ古いプリンターだけど、2026年現在でも互換トナーが2,000円未満で入手できて非常にコスパが良さそうなので活用することにした。ただ、くっそ古いプリンターなので、いまどき当たり前のネットワークプリンター機能が付いていないのが不便。オプション品の外付け型プリントサーバーは当然販売終了で、中古でも数万円する。仕方ないので、余っていたRaspberry Pi 4を使ってプリントサーバーを構築することにした。すんなりとはいかず色々と試行錯誤したが、LBP3100のネットワークプリンター化に成功。備忘録として構築手順を残しておく。
構築手順概要
- Raspberry PiにRaspberry Pi OSをインストール
- CUPSをインストール
- LBP3100の非公式CAPTドライバーをインストール
- LBP3100のセットアップ
- LBP3100を共有プリンター化
- その他
- (Mac用) Avahiのインストール
- 印刷余白の設定
1. Raspberry PiにRaspberry Pi OSをインストール
まず、Raspberry Pi Imagerを入手し、microSDカードにRaspberry Pi OSのイメージを書き込む。OSにはFull版とLite版、32-bit版と64-bit版、があるが、プリントサーバー用途なのでLite版で十分。32-bitと64-bitの選択については、ChatGPTが「Canonの古いCAPTドライバは、arm64 で動かないことがあります。なので Raspberry Pi OS は 32bit版 (armhf) を選ぶのが安全です。」とか言うので32-bit版を選んだ。実際、試行錯誤している途中で64-bit版だとうまくビルドできないパッケージがあったりしたので1。
OSイメージをmicroSDに書き込んだら、Raspberry Piに差し込んで電源を入れる。
OS起動後、コンソールから直接ログインするか、他PCからsshでログインし、OSを最新版に更新する。
sudo apt update && sudo apt upgrade -y
2. CUPSをインストール
CUPS(カップス)は印刷サーバーで、Raspberry PiにUSB接続したプリンターを他のPCに共有するのに使う。
以下、CUPSのインストールと基本設定。
CUPSのインストール
sudo apt install cups -y
ユーザーをlpadmin(プリンター管理グループ)に追加
piユーザーを追加する場合
sudo usermod -aG lpadmin pi
CUPSの管理画面をリモートからアクセス可能にする
CUPSの設定ファイルをエディタで開き、リモートから管理画面にアクセスできるようにする。
sudo nano /etc/cups/cupsd.conf
まず、localhostからのアクセスに限定している下記設定を
Listen localhost:631
次のように変更する。
port 631
次に、LANからのアクセスを許可するために、<Location />や<Location /admin>, <Location /admin/conf>を探して下記のように設定する(無ければ追加)。
<Location />
Order allow,deny
Allow all
</Location>
<Location /admin>
Order allow,deny
Allow all
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order alloww,deny
Allow all
</Location>
/etc/cups/cupsd.confを上書き保存したら、CUPSを再起動する。
sudo systemctl restart cups
他のPCからWebブラウザでhttp://<Raspberry PiのIPアドレス>:631にアクセスし、CUPSの管理画面が表示されたらOK。
3. LBP3100の非公式CAPTドライバーをインストール
LBP3100のドライバーは「CAPTドライバー」というものらしい。CAPTドライバーはWindows/Mac/Linux向けに提供されていたが、x86向けしか無く、arm64向けは無いらしい。なので、有志が開発した非公式ドライバーをインストールする。
sudo apt install git build-essential autoconf libtool cups libcups2-dev libcupsimage2-dev
git clone https://github.com/mounaiban/captdriver.git
cd captdriver
autoreconf -i
./configure
make
sudo make install
makeを実行すると、captdriverディレクトリにCanon-LBP3010-3018-3050.ppd2というテキストファイルが生成される。このファイルは後ほどプリンターの設定時に使用するので、PCにコピーしておく。
4. LBP3100のセットアップ
-
まず、Raspberry PiにLBP3100をUSBケーブルで接続し、プリンターの電源を入れる
-
Webブラウザで
https://<Raspberry PiのIPアドレス>:631/adminにアクセスし、CUPSの管理画面を開く -
プリンターの追加ボタンをクリックする
-
ローカルプリンターから
Canon LBP3100を選択して続けるボタンをクリック -
接続の箇所に、LBP3100の接続用URLを入力して続けるボタンをクリック。URLはRaspberry Pi上で下記コマンドを実行して取得する
lpinfo -v実行結果の中から
direct usb://で始まるURLが見つかるので、usb://以降を全て接続の箇所に入力すれば良い。例えば、下記実行結果の場合は
usb://Canon/LBP3100/LBP3108/LBP3150?serial=0000B1E039J5がプリンターキューのURLとなる。network beh direct vnc:/ file cups-brf:/ serial serial:/dev/ttyS0?baud=115200 network https network ipps network lpd network ipp network socket direct hp network http direct usb://Canon/LBP3100/LBP3108/LBP3150?serial=0000B1E039J5 -
プリンターの名前を入力し(例:
LBP3100)、このプリンターを共有するにもチェックを入れる -
3. LBP3100の非公式CAPTドライバーをインストールでbuildし、PCにコピーしておいたプリンターのPPDファイルをアップロードして続くボタンをクリック
-
プリンターを追加ボタンをクリック
-
プリンターオプションの設定で、用紙サイズや解像度を設定し、デフォルトオプションの設定ボタンをクリックする
設定が完了したら、再度CUPSのWeb管理画面https://<Raspberry PiのIPアドレス>:631/adminにアクセスし、プリンタータブをクリック→LBP3100をクリックし、メンテナンスのプルダウンからテストページの印刷を実行する。プリンターが印刷を正常に実行できたらOK。
5. LBP3100を共有プリンター化
CUPSの設定ファイルをエディタで開く。
sudo nano /etc/cups/cupsd.conf
下記設定を追加して保存する。
Browsing Yes
DefaultShared Yes
プリンターの設定ファイルをエディタで開く。
sudo nano /etc/cups/printers.conf
<DefaultPrinter LBP3100>タグの中に下記設定を追加して保存する。
Shared Yes
CUPSを再起動する。
sudo systemctl restart cups
これでネットワークプリンター化は完了。
Windows PCでプリンターの追加を行う際は、LBP3100の電源をONにしておく。
設定のプリンターとスキャナーからプリンターの追加を行うと、LBP3100が候補として見つかるので追加する。ドライバーのインストールは不要。
6. その他
(Mac用) Avahiのインストール
MacやiPhone向けにプリンター共有する場合は、Bonjour/AirPrint向け設定が必要。
プリンターの設定ファイルをエディタで開く。
sudo nano /etc/cups/printers.conf
下記の設定を追加して、上書き保存する。
BrowseLocalProtocols dnssd
CUPSを再起動する。
sudo systemctl restart cups
Macの設定からプリンタとスキャナを開き、プリンターの追加を行うと、候補にLBP3100が出てくるので追加すればOK。
iPhoneやiPadから印刷する際は、アプリの印刷機能からプリンターの選択でLBP3100を選べばOK。
印刷余白の設定
色々印刷してみたら、どうも用紙の上の方がはみ出して印刷されてしまう。どうやら3. LBP3100の非公式CAPTドライバーをインストールでbuildしたドライバーが原因らしい。
こういう時は、CAPTドライバーのPPDファイルを修正し、用紙のマージンを変更すれば良いらしい。
エディタでLBP3100のPPDファイルを開く。
sudo nano /etc/cups/ppd/LBP3100.ppd
PPDファイルの仕様によると、用紙のマージンはImageableAreaという項目で設定されており、用紙上部のマージンはuryの値(4番目の数値)を大きくすれば良いらしい。
The syntax for defining imageable area is as follows:
*ImageableArea mediaOption: "llx lly urx ury " *DefaultImageableArea: mediaOption | Unknownll stands for lower left corner and ur for upper right corner. The bounding box value of *ImageableArea is given as four real numbers, representing the x and y coordinates of the lower left and upper right corners of the region, respectively, in the PostScript language default user space coordinate system. The x and y axes of a given page size correspond to the x and y axes of that page size in the *PaperDimension entry.
なので、A4用紙のImageableAreaを以下のように、4番目の数値を10くらい大きくしてみた。
*ImageableArea A4/A4: "13.35000038147 13.35000038147 581.650024414062 828.650024414062"
*ImageableArea A4/A4: "13.35000038147 13.35000038147 581.650024414062 838.650024414062"
PPDファイルを上書き保存したら、例のごとくCUPSを再起動。
sudo systemctl restart cups
その後、テスト印刷してみたところ、上部がはみ出さずにきれいに印刷できた。
使い心地
いやあ、これは素晴らしく便利。プリンターの電源を入れてから印刷可能になるまで10秒かからないくらい。印刷も速い。きれい。もうインクジェットプリンターには戻れない。
プリントサーバーがあるおかげで、プリンターの電源を切っていても印刷データはCUPSサーバーがキューにためてくれていて、プリンターの電源を後からONにすれば印刷を開始してくれるのもよい。互換トナーが販売され続ける限り使い倒したい。