takashiskiのブログ

覚書の殴り書き

USB接続のプリンターを無線化する

簡単に

型落ちのラベルプリンターと最新のラベルプリンターの機能を調べたら、無線対応の有無だけでした。 「かなり安くなってるし、まぁいっか」と買いましたが、やはり使っていると色々と不便な部分が見えてきます。 USB接続のみのラベルプリンターを無線接続する方法を模索しました。

最終的に、PCとUSBプリンターの間にRaspberry pi(など無線接続可能な任意のlinuxマシン)を挟むことでPCとUSBプリンターを直接接続しなくても印刷可能になりました。 ただし、USBプリンターのドライバーをインストールしたPCからしか印刷できません。 これはRapsberry piはただの中継役だからです。

ほぼ以下の記事の内容に従って設定を行い、動作までにあった課題を追加した流れを記載します。

Raspberry Print Server for Brother QL-500 Label Printer [splitbrain.org]

今回使ったデバイス

  • Raspberry pi 4
  • brother QL-1050(ラベルプリンター)
  • 適当なWindows11のPC

流れ

Raspberry piの基本設定を済ませる

  • 無線LAN接続の設定を行う
  • SSH接続の設定を行う

Raspberry Pi Imagerを使えば、あらかじめ設定したイメージを書き込むことができるので新規に起こす場合は苦労しないと思います。

ハードウェアを接続する

Raspberry piとUSBプリンターを接続して、それぞれ電源をいれてください。

ターミナルからSSHでRaspberry piに接続する

任意の方法でSSHで接続してください。

最近はWindowsでもPowershellやVSCodeでできて便利ですね。

Raspberry piにcup, p910ndをインストールする(SSH経由)

参考記事との大きな変更点はp910ndだけではなくcupを追加でインストールすることです。

sudo apt install p910nd
sudo apt install cup

私の環境だと、p910ndだけだとプリンターとのやりとりが途中で止まってしまいました。 どの記事にもcupが登場するのでcupをインストールしてみたら何故か動きました。

今回のことをやるためだけに調べたので、cupとp910ndの関係がわからないです。詳しい人がいたら教えてください。

Windows等クライアントになるマシンに対象プリンターのドライバーをインストールする

例えばbrotherであれば、サポートからダウンロード可能です

ソフトウェアダウンロード | QL-1050 | 日本 | ブラザー

Windows等クライアントになるマシンにRaspberry piをプリンターとして登録する

「プリンターとスキャナー」を開いて追加します。

「新しいデバイスの追加」を押して「プリンターの追加」ウィンドウを開きます。

「プリンターの追加」ウィンドウで「IPアドレスまたはホスト名を使ってプリンターを追加する」を選び「次へ」ボタンを押します。

「デバイスの種類」のプルダウンメニューから「TCP/IPデバイス」を選びます。

「ホスト名またはIPアドレス」にRaspberry piへアクセスできるIPアドレスまたはホスト名を入れます。

「ポート名」はなんでもいいです。勝手に入力されるのでそのままでいいと思います。

「プリンターを照会して、使用するプリンタードライバーを自動的に選択する」チェックボックスからはチェックを外してください。

ここまで行ったら「次へ」ボタンを押します。

しばらく待ちます。

「追加のポート情報が必要です」と表示されます。

「カスタム」を選んで「設定」ボタンを押してください。

「プロトコル」として「Raw」を選びます。ほかは画像の通りです。 設定を変更したら「OK」ボタンを押します。

「プリンタードライバーのインストール」では、Raspberry piに繋がっているプリンターを選んで、「次へ」ボタンを押してください。

「どのバージョンのドライバーを使用しますか?」では「現在インストールされているドライバーを使う(推奨)」を選んで「次へ」ボタンを押します。

プリンター名は表示名なので、自分がわかる好きな名前にしてください。 「どのプリンターなのか」「実際にはどのデバイスなのか」がわかる名前だと、何やったか忘れても状況を把握しやすいかもしれません。「次へ」ボタンを押してください。

プリンター共有設定は好きなようにしてください。今回は「このプリンターを共有しない」を選びます。「次へ」ボタンを押してください。

これで設定は完了です。「完了」ボタンを押してください。

この段階ではRaspberry pi側の設定が終わっていないので「テストページの印刷」を押しても失敗します。

Windows等クライアントになるマシンのプリンターの設定を変更する

「プリンターとスキャナー」から先ほど新規作成したプリンターを選びます。

「プリンターのプロパティ」を開きます。

「詳細設定」タブを開きます。

中段の設定を「プリンターに直接印刷データを送る」に変更して下部の「OK」ボタンを押します。

必要であれば、「詳細設定」の「標準設定」から印刷時の向きなどを変更します。

Raspberry piでp910ndをフォアグラウンドで動かして動作確認をとる(SSH経由)

systemdで動かすと、動かなかった場合になんで動いてないのかわからないのでフォアグラウンドでまず試してみましょう。

sudo p910nd -f /dev/usb/lp0 -d

実行した状態で印刷を行うと以下のようなログが出ます。 Finished jobのログが出力されたら正常に印刷がされました。 印刷物を確認してください。

Connection from 192.168.1.10 port 63570 accepted
read 1460 bytes from network
wrote 1460 bytes to printer
read 4016 bytes from network
wrote 4016 bytes to printer
read: eof
Finished job: 5476/5476 bytes sent to printer

確認が取れたらCtrl+Cでp910ndを終了してください

Raspberry piのp910ndの設定ファイルを変更する(SSH経由)

以下のコマンドを使って設定ファイルをテキストエディタで開きます。テキストエディタはnanoなどを使ってもいいです。

sudo vi /etc/default/p910nd

P910ND_OPTSP910ND_STARTの値を修正します。

# Printer number, if not 0
P910ND_NUM=""
 
# Additional daemon arguments, see man 8 p910nd
P910ND_OPTS="-f /dev/usb/lp0"
 
# Debian specific (set to 1 to enable start by default)
P910ND_START=1

修正したら保存してテキストエディタを閉じます。

最後に、以下のコマンドでp910ndを再起動します。

sudo service p910nd restart

テスト印刷する

任意の方法でテスト印刷を行ってください。 印刷に成功したら完了です。

QL-1050の場合は「Windows11のテストページ印刷」機能は使えません。実行したところ、プリンターが赤点滅エラーを起こしてプリンター自体の再起動が必要になりました。