はじめに
数年前の記事で使った サーマルプリンタ(DP-EH600) を、AirPrint化して iPhone や Mac からお手軽に印刷できる環境を作りたいと思い立ち、今回の記事に至りました。
当初は、DP-EH600 を USBシリアル経由で Macに接続し、Python を使い Mac から出力していました。が、これでは AirPrint で出力できないため、ESP32 の UART に接続して、ESP32 に AirPrint のプロトコルを実装しようと考え、AirPrintプロトコルをネットで探しました。
すると、『Raspberry Pi 4 に サーマルプリンタ を接続し、ローカル&ネットワークプリンタ として設定する方法を説明したサイト』を発見しました。
さらに、『Raspberry Pi 4 に接続した ローカルプリンタを AirPrint化 する動画』を発見しました。
と、いうことは、この両者を組み合わせることで、Raspberry Pi 4 に 接続した サーマルプリンタ を AirPrint化できるということです。
本稿はこれについて、まとめたものです。
サーマルプリンタ について
当時、DP-EH600 を Amazonで 4500円で購入しました。しかし、現在は販売されていません。同様なインタフェースを持つ HS-QR71 や CSN-A2 サーマルプリンタは、Aliexpressなら今でも3000円程度で購入できるようです。
出典
今回参考にした サイト・動画 は、次の通りです。
-
Networked Thermal Printer using Raspberry Pi and CUPS
-
Airprint with Rapsberry Pi
以下、設定方法を順を追って説明します。
設定方法
-
今回使用した Raspberry Pi 4 は 次の通り
$ ./rev.py Revision: c03112 Model: 4B Revision: 1.2 Memory Size: 4GB Processor: BCM2711 Manufacturer: Sony UK
現時点の最新OSをインストールした。
( 64ビット Raspberry Pi OS(bookworm)Desktop 版 )
$ cat /sys/firmware/devicetree/base/model
Raspberry Pi 4 Model B Rev 1.2
$ cat /etc/debian_version
12.12
$ cat /etc/issue
Debian GNU/Linux 12 \n \l
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
$ uname -a
Linux raspberrypi48 6.12.34+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26) aarch64 GNU/Linux
$ cat /proc/version
Linux version 6.12.34+rpt-rpi-v8 (serge@raspberrypi.com) (aarch64-linux-gnu-gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26)
Networked Thermal Printer using Raspberry Pi and CUPS
サーマルプリンタを Raspberry Pi 4 のローカル/リモートプリンタとする方法です。
1. OS のシリアルポートを有効にする
今回使用した DP-EH600 サーマルプリンタは、TTLシリアル接続タイプです。
-
raspi-config を起動し、シリアルポートを有効化する
$ sudo raspi-config
-
「3. Interface Option」を選択
- 「I6 Serial Port」を選択
- 「Would you like a login shell to be accessible over serial?」に「No」を選択
- 「Would you like the serial port hardware to be enabled?」に「Yes」を選択
- 「Ok」を選択
- 「Finish」を選択(raspi-config を終了)
- 「Reboot」する
(再起動すると、シリアルポートが有効化する)
2. プリンタの接続と設定
-
サーマルプリンタの電源を接続する
5V2A〜3Aの電源が必要。5V電源の電流実測値は 2A弱でした(Raspbrry Pi 4 の電源とは別で)
( XON / XOFF による(ソフトウェア)フロー制御を使用するため、RTS 信号の接続は不要 )
3. プリンタについて知る
フィードボタンを押したままサーマルプリンタに電源を接続すると、テストページが印刷される。そこのVersionを確認する。今回使用した DP-EH600 は、以前に「爆速化」済み(115200bps)であり、「VERSION 2.69」でした。
19200 や 9600 のモノでも問題ない。
$ stty -F /dev/serial0 115200
$ echo -e "This is a test.\\n\\n\\n" > /dev/serial0
サーマルプリンタに「This is a test.」が出力される。(下の写真の上側)
もし、出力されない場合は、次の点を確認してください。
- プリンタは5V、2A以上の電源に接続していますか?
- プリンタの LED が 時々 点滅しますか?
- 感熱紙 が取り付けられていますか?
- TX/RXピンは Pi と プリンタ の間で接続されていますか?
クロスしていますか? (つまり、プリンタ の TX は Pi の RXD に接続する必要がある) - プリンタ と Pi の間で、GND は接続されていますか?
- シリアルコンソールオプションを 無効にして、シリアルポートハードウェアを 有効にしましたか? raspi‑config で確認する
4. 主要なインストールを開始
プリンタが 上記の基本テストに合格したら、ソフトウェアに移ります。
パッケージデータベースが最新であることを確認してから、いくつかのパッケージをインストールします
$ sudo apt update
$ sudo apt install -y libcups2-dev libcupsimage2-dev git build-essential cups system-config-printer
(古い Raspberry Pi をお使いの場合は、インストールに15分ほどかかる場合があります)
サーマルプリンタ用の CUPSフィルターをダウンロードしてインストールします
$ git clone https://github.com/adafruit/zj-58
$ cd zj-58
$ make
$ sudo ./install
コンパイル時にいくつか警告メッセージが表示されますが、これは無視してください。エラーが発生するとコンパイルが停止します。
残りの手順
サーマルプリンタのファームウェアのバージョンに関係なく、このセットアップの残りの部分は同じです。
- Pi メニュー Preferences → Print Settings を選択
「Print Settings」メニューが表示されない場合は、ZJ-58CUPSフィルターがインストールされていません。上記の手順を確認して、もう一度お試しください。
-
「Serial Port #1」を選択し、ボーレート(テストページに合わせて115200)とフロー制御(XON/XOFF(Software))を設定、「Forward」ボタンをクリック
- 次のフォームで、「Select printer from database」をクリックし、リストの一番下までスクロールして「Zijiang」を選択
- もう一度「Forward」をクリックし、次のフォームで「Zijiang ZJ-58」ドライバーを選択
- もう一度「Forward」をクリックすると、プリンタに名前を割り当てるオプションが表示される
または、デフォルトの ZJ-58をそのまま使用
最後に「Apply」をクリック
(テストページを印刷するか聞かれましたが、今回はキャンセルしました)

- すると、リストに ZJ-58プリンターが表示されます
- ZJ-58アイコンを 右クリックし、メニューから「Properties」を選択
-「Printer Options」の「印刷後の送り距離」を「12mm送り」に設定

-「Settings」の「Device URI」文字列の最後を確認し、もし「+flow=soft」で終わっていない場合は、その右横の「Change...」をクリック

- 「Current device (Current)」の「Flow Control」で「XON/XOFF(Software)」を選択して「Apply」をクリック
- 最後に、「Print Settings」ダイアログの「OK」クリックし閉じる
「OK」をクリックすると、プリンタは「lp」サービスを介して Raspberry Pi で完全に動作するはずです。
試してみましょう!
- ターミナルウィンドウに戻って
$ echo "This is a test." | lp
これにより、「This is a test.」という文字列が再度印刷されるはずです(下の写真の下側)。ただし、最初のテストとは異なり、このテストではプリンターの内部フォントが使用されていないことがわかります。実際にはテキストがラスタライズされており、サイズなどの設定を微調整できます。
(下の写真の上側は、プリンタ内のフォントで印刷したもの)
- ビットマップの印刷も試すことができます。
$ lp -o fit-to-page /usr/share/raspberrypi-artwork/raspberry-pi-logo.png
ほとんどのラスター形式がサポートされており、ベクター形式の場合はPDFがあります。
SVGは直接サポートされていません。LibreOffice Drawで印刷するか、SVGファイルをPDFとして保存し、印刷します。
5. ネットワーク印刷の設定
同じネットワーク上の他のシステムからプリンターにアクセスするには、あと数回操作が必要です。
- ZJ-58アイコンを 右クリックし、メニューから「Properties」を選択
- 「Polices」セクションで、「Shard」がチェックされていることを確認して、「OK」をクリック
- メインの「Print Settings」フォームに戻り、メニュー「Server」→「Settings...」を選択
- 「Publish shared printers connected to this system」チェックボックスをオンにして、「OK」をクリック
これで、このプリンターは他のシステムからもアクセスできるようになりました。Windows または MacOS を実行しているLinux以外のコンピューターからもアクセスできるようになります。
たとえば、Macでは、システム環境設定「プリンタとスキャナ」に移動し、「プリンタ、スキャナ、またはファックスを追加...」ボタンをクリックすると、利用可能なネットワークプリンタが表示されます。
- 「ZJ-58 @ Hostname」を選択して、「追加」をクリック
- ZJ-58 リモートプリンタが追加されました
- その後、任意のアプリケーションからサーマルプリンタに印刷できるようになります
Airprint with Rapsberry Pi
これまでの手順にて、Rapsberry Pi にローカルプリンタの設定が完了しているとして、後半の AirPrint化について説明します。
1. ターミナルで次のコマンドを実行
$ sudo apt install -y cups
$ sudo apt install -y printer-driver-gutenprint
$ sudo usermod -a -G lpadmin <your_pi_username>
# ex, sudo usermod -a -G lpadmin piuser
$ sudo cupsctl --remote-any
$ sudo reboot
(再起動します)
2. ブラウザを起動し、http://localhost:631 を開く
Macのブラウザで開く場合は、Rapsberry Pi の IPアドレス:631 を入力する。
(なぜか日本語になった)

ここでは、Rapsberry Pi のブラウザで作業を続ける想定で説明する(Macで行うことも可能)。
- Administration タブをクリック
- 「Add Printer」ボタンをクリック
Sing inを求められたら、Rapsberry Pi の ユーザ名・パスワードを入力して「Sing in」をクリック
- Local Printersで「Serial Port #1」(サーマルプリンタ)をクリック
「Continue」ボタンをクリック
- ボーレートに 115200、フロー制御に XON/XOFF(Software) を選択
「Continue」ボタンをクリック
- Name, Description, Locationを入力する
(使用できない文字に注意する)
「Continue」ボタンをクリック
- Makeのリストを最後までスクロールして Zijiang を選択
「Continue」ボタンをクリック
- Modelのリストで Zijiang ZJ-58 を選択
「Add Printer」ボタンをクリック
プリンタが追加されました。
- 「Set Printer Options」ボタンをクリック
- Media Sizeを選択
「Set Default Options」ボタンをクリック
- Connection文字列の最後を確認する
+flow=softになっていれば問題なし
- もし、
+flow=noneの場合は、左から2番目の「Administration」ドロップダウンから Modify Printer をクリック
- Current Connection を選択し、「Continue」ボタンをクリック
- Baud Rate に 115200、Flow Control に XON/XOff(Software) を選択し、「Continue」ボタンをクリック
- 変更がなければ「Continue」ボタンをクリック
- Current Driver を選択し、「Modify Printer」ボタンをクリック
- Connection文字列の最後が
+flow=softになっていることを確認する
3. テストプリントを実行
左側の「Maintenance」ドロップダウンから Print Test Page をクリック

少し処理が走って、サーマルプリンタ からテストページが出力されれば設定成功。ゴミが出力される場合は、ボーレート、フロー制御の設定を見直してください。
(右側はフロー制御の設定ができておらず、ゴミを出力した例)
なお、Printer Options の Media Size で、縦幅に 210mm を指定している場合は、テストページも 210mm 印刷されます。故障ではありません。
4. AirPrint の設定
- ターミナルで次のコマンドを実行
$ sudo apt install -y avahi-daemon
$ sudo reboot
- 再起動すると、
avahi-daemonが有効になる
これで、iPhone / iPad の AirPrint から サーマルプリンタが見える。
(ネットワークプリンタである ZJ-58 も見えている)
用紙サイズの設定で縦幅を 短くできます。
カラー画像は 自動的に 白黒ディザリングされます。
iPhone出力した結果は、下の写真の上側。欠けずに印刷できています。
(下側は、lpコマンドで出力した 同じPNGファイル)

おわりに
無事にAirPrint化できたことにより、iPhoneで写真を撮って すぐに サーマルプリンタで出力できるようになりました。
サーマルプリンタも、Raspberry Pi 4 も、手持ちで使っていなかったモノだったことで、これによる追加の出費はありませんでしたが、Raspberry Pi 4 を使うことになり、システム全体のコストは そこそこ高いです。
また、サーマルプリンタと、Raspberry Pi 4 の両方の電源の合計は、5A〜7A必要となるため、電源を準備するコストもそれなりに高いです。
(市販のフォトプリンタの方が安いかも)
Macから ちょっとしたメモを出力するにも重宝しています。
最後に、サーマルプリンタ と Raspberry Pi 4 を一つに収めるケースを作成して完成にしようと思います。
以上





