サーマルプリンターをRaspberry Piでプリントサーバーに仕立てる

printserver-thermal-title
特集記事

前回までの「Raspberry Piで使うサーマルプリンター基本動作編」のように、レシート印刷のサーマルプリンターを、Raspberry Pi Zero WHにRaspberry Pi OS lite上でプリントサーバーにしました。

サーマルプリンターを使うにあたり、スマホからも印刷できるようにしたかったからです。

※記事中のサーマルプリンターはSymcode製の58mm、USB接続のサーマルレシートプリンター

汎用のドライバソフトも入れて、CUPSを使い印刷させます。ネットワークプリンターとしてはsamba共有を使います。

  1. 汎用のドライバソフト
  2. CUPSで印刷
  3. samba共有

CUPSはWebUI画面から設定できるので楽でした。使用したサーマルプリンター以外でも、同じように設定できると思います。

ここでは、プリンターを繋いだRaspberry Piを、家庭内の他のPCやスマホからでも印刷できるプリントサーバーとして構築しています。

多くのジョブでなければ、メモリーが少ないRaspberry Pi Zero 系でも処理できます。

スポンサーリンク

cupsのインストール

sudo apt install cups

設定をする

sudo nano /etc/cups/cupsd.conf

書き足した内容

Port 631
ServerAlias *
DefaultEncryption Never

Port 631は、Listen localhost:631をコメントアウトして追記します。

DefaultEncryption Neverは認証アップグレードを促すエラーを回避するためです。

更に、Locationで囲まれている箇所の、Order allow,deny以下に、Allow from @LOCALを追記します。ローカルから管理、設定、ログ閲覧ができるようにするためです。4箇所です。

<Location />
<Location /admin>
<Location /admin/conf>
<Location /admin/log>
・・・

ユーザーをCUPSのグループに追加

ユーザーpiを印刷制御するCUPSのグループに追加する。

sudo adduser pi lpadmin

サービスをリスタート

sudo systemctl restart cups

sudo service cups restartもいけます。今はsystemctlが主流。

スポンサーリンク

sambaのインストール

sudo apt install samba

smb.confに追記

ユーザーがデフォルトのpiの場合です。既存のセクションを書き換えずに最下部にセクションを設けて追記しました。

sudo nano /etc/samba/smb.conf
[zj-58]
    comment=zj-58 thermal-printer
    printer=zj58
    path=/var/spool/samba
    printing=cups
    printable=yes
    printer admin=@admin root pi
    user client driver=yes
    guest ok=no
    writable=no
    write list=@adm root pi
    valid users=@adm root pi

ゲストはNOにしています。もしもYESにする場合は、最終行のvalid~は要りません。

sambaの変更を適用するコマンド

sudo smbcontrol all reload-config

デーモンをリスタートでも良いでしょう。

sudo service smbd restart
sudo service nmbd restart

これでプリンターの共有準備ができました。続いてプリンターを追加します。

プリンタードライバをインストールしておく

プリンタードライバーを先にインストールすることで、CUPSにプリンターの追加を行うことができます。

今回のサーマルプリンターのドライバは別の記事で詳しくご紹介しています。

Webインターフェイスで設定

ネットワーク内にある他のマシンのWebブラウザから設定できます。

http://(ラズパイのIPアドレスかホスト名):631/admin

固定IPアドレスに設定していない場合、WindowsもmacOSも名前解決できると思いますので、ホスト名が良いでしょう。(例:ホスト名ledpiの場合、http://ledpi.local:631/admin)

プリンターの追加手順

プリンターを選ぶのに、zj-58に限り「Unknown」を選ぶことになります。ここはご自分のプリンタードライバを選んでください。

CUPSでUSBに繋がっているデバイスを調べるコマンド

sudo /usr/lib/cups/backend/usb
DEBUG: Loading USB quirks from "/usr/share/cups/usb".
DEBUG: Loaded 172 quirks.
DEBUG: list_devices
DEBUG: libusb_get_device_list=2
DEBUG2: Printer found with device ID: 	 Device URI: usb://Unknown/Printer
direct usb://Unknown/Printer "Unknown" "Unknown" "	 " ""

Unkownという名前になっていますが、これがUSBポートに直接繋がっているプリントデバイスです。

URIで指定するしかありません。

管理のプリンターの追加

今回はUnknownとしか出ませんので選んで続ける。

すべて埋める形で入力していきます。共有するにもチェックを入れます。

先にプリンタードライバをインストールしてあったので、メーカー名も出ています。

モデル名も出ました。プリンターの追加ボタンで次へ。

デフォルトの用紙サイズを選んで設定は終了です。

接続のURIがUnknownというのだけはいただけませんが、動作には支障ありません。ドライバの問題です。

テスト印刷

早速テスト印刷をしてみます。
macOSのテキストエディタから印刷をしてました。

結果はこんなです。狭くてあまり文字が入っていない。

iPhoneからも印刷してみましょう。

文字が潰れて汚いですね。

Webページは少し無理がありました。

これでネットワークプリンターとしては機能していることになります。

エラーを確認してみる

エラーログを覗いてみます。

[Job 16] /var/spool/cups/d00016-001 (object 6 0): object has offset 0

どうやら、PDFの印刷処理で起こるエラーのようです。

印刷はできていますが、これはまた調べないとなりませんね。qpdfやcups-filtersをアップグレードインストールしましたが変わりませんでした。

プリントサーバーとしてsamba+CUPS

sambaとCUPSの連携でプリントサーバーしました。

Raspberry Pi なら小さくて消費電力も少ないため、あまり気になりません。

サーマルプリンターではなく、一般的なプリンターも同じように共有させてみてください。

スポンサーリンク
ラズパイダ

お知らせ

おすすめセット品
これまでラズパイをたくさん購入してきたラズパイダがおすすめするセット品とアドバイスをご紹介!

コメント ご感想をお願いします。

タイトルとURLをコピーしました