TM-T88IV 接続メモ
TM-T88IV というレシートプリンタを買ったので遊びます.
https://gyazo.com/e694cb83341e4172b755d517f33fbb6e
購入したレシートプリンタ
型番: TM-T88IV
I/F仕様: USB、カスタマーディスプレイ接続用コネクター(RJ-45)
無線LANのサポートはない
用紙幅(mm): 80
テスト印刷する
まずは動作確認も兼ねてテスト印刷したい
OSからプリンタとして認識させ, OSのプリンタマネージャーからテスト印刷する
Windows/Ubuntu/openSUSE/Red Hat Enterprise Linux しかドライバが提供されてないことが分かった
とりあえず動かすのであればWindowsが簡単そうだったのでWindowsで試してみる
WindowsにUSB接続でプリンタを接続する
勝手にUSBデバイスとして認識されドライバのインストールが始まるが, 無視して良い
自動でインストールされるドライバでは何もできないので, 手動で入れる必要がある
ここからドライバを入れる
途中でどの品番のどのインターフェース向けのドライバを入れるか聞かれる
TM-T88IV, USBで
インストールが終わるとTM-T88IVがプリンタとして認識されるようになる
OSのプリンタマネージャーからテスト印刷すると, いつものテスト用紙が出てくる
Linuxから印刷する
Ubuntu向けのドライバがあるのでUbuntuで試してみる
自宅に転がってたRaspberry Pi 3 Model Bを拾ってきてチャレンジ
まずはUbuntuをインストール
後は電源を入れて起動するだけ
外付けキーボードとディスプレイ, HDMIケーブルを持ってきてubuntuにログイン
…したかったが家に外付けキーボード無くて終了してしまった
仕方がないので有線LANでルータに接続してDHCPで割り振られたIP経由でssh
ssh ubuntu@<DHCPで割り振られたIP>でログインできる (passはubuntu)
所々の設定をやっていく
パッケージを更新
code:console
sudo apt-get update
sudo apt-get upgrade
ipconfig -aで無線LANインターフェースっぽい奴をメモしておく. 今回はwlan0が無線LANインターフェース.
code:console
ipconfig -a
eth0: ...
lo: ...
wlan0: ...
code:console
sudo apt-get install network-manager
sudo vim /etc/netplan/50-cloud-init.yaml
network:
version: 2
renderer: NetworkManager
# ...
wifis:
wlan0:
addresses: []
dhcp4: true
optional: true
access-points:
<SSID>:
password: <PASSWORD>
sudo netplan apply
ssh ubuntu@<hostname>.localでアクセスできるよう, avahi-daemonを入れる
code:console
sudo /etc/init.d/avahi-daemon status
ping ubuntu.local
## 返答があればOK
ネットワーク周りの設定が終わったので, LANケーブルを抜き無線LANで接続できるか試してみる
code:bash
$ LANケーブルを抜く
$ ping ubuntu.local
PING ubuntu.local (192.168.0.35): 56 data bytes
64 bytes from 192.168.0.35: icmp_seq=0 ttl=64 time=12.807 ms
^C
$ ssh ubuntu@ubuntu.local
ubuntu@ubuntu.local's password:
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-1041-raspi2 armv7l)
念の為ここでシャットダウンしておく
code:console
sudo shutdown -h now
code:console
sudo locale-gen ja_JP.UTF-8
sudo dpkg-reconfigure -f noninteractive locales
echo "LANG=ja_JP.UTF-8" | sudo tee /etc/default/locale
sudo timedatectl set-timezone Asia/Tokyo
sudo vim /etc/default/keyboard
sudo dpkg-reconfigure -f noninteractive keyboard-configuration
sudo vim /etc/apt/sources.list
sudo apt update
sudo apt upgrade
sudo reboot
スワップファイルを作成 (これももっと早くやっておくべきだった)
code:console
sudo fallocate -l 1g /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
sudo swapon -a
プリンタのドライバーをインストールする
解凍してscpでubuntuに転送
code:console
$ tar xzvf tmx-cups tmx-cups-2.0.3.0.tar.gz
$ scp -r tmx-cups ubuntu@ubuntu.local
$ ssh ubuntu@ubuntu.local
cd tmx-cups
ll
total 208
drwxr-xr-x 7 ubuntu ubuntu 4096 10月 27 19:14 ./
drwxr-xr-x 6 ubuntu ubuntu 4096 10月 27 19:13 ../
drwxr-xr-x 2 ubuntu ubuntu 4096 10月 27 19:13 .install/
-rw-r--r-- 1 ubuntu ubuntu 36408 10月 27 19:13 EULA.en.txt
-rw-r--r-- 1 ubuntu ubuntu 37854 10月 27 19:13 EULA.ja.txt
-rw-r--r-- 1 ubuntu ubuntu 34779 10月 27 19:13 EULA.zh_CN.txt
drwxr-xr-x 2 ubuntu ubuntu 4096 10月 27 19:13 backend/
drwxr-xr-x 2 ubuntu ubuntu 4096 10月 27 19:14 filter/
-rwxr-xr-x 1 ubuntu ubuntu 22419 10月 27 19:14 install-sc.sh*
-rwxr-xr-x 1 ubuntu ubuntu 22567 10月 27 19:13 install.sh*
drwxr-xr-x 5 ubuntu ubuntu 4096 10月 27 19:14 manual/
drwxr-xr-x 2 ubuntu ubuntu 4096 10月 27 19:13 ppd/
-rwxr-xr-x 1 ubuntu ubuntu 8554 10月 27 19:13 uninstall.sh*
ドライバをインストール
code:console
./install.sh
Running the sudo command...
install.sh for "TM/BA Series Printer Driver for Linux" Ver.2.0.3.0
Copyright (C) Seiko Epson Corporation 2010-2016. All rights reserved.
Checking for incompatible packages...
Please select your distribution.
1.RHEL 6.4 x86(32bit)
2.RHEL 6.4 x86_64(64bit)
3.RHEL 6.5 x86(32bit)
4.RHEL 6.5 x86_64(64bit)
5.Ubuntu 12.04 x86(32bit)
6.Ubuntu 12.04 x86_64(64bit)
7.Ubuntu 14.04 x86(32bit)
8.Ubuntu 14.04 x86_64(64bit)
9.Ubuntu 9.04 x86(32bit)
10.Ubuntu 9.04 x86_64(64bit)
11.openSUSE 11.1 x86(32bit)
12.openSUSE 11.1 x86_64(64bit)
13.openSUSE 12.2 x86(32bit)
14.openSUSE 12.2 x86_64(64bit)
15.openSUSE 13.1 x86(32bit)
16.openSUSE 13.1 x86_64(64bit)
dpkg: error processing archive /home/ubuntu/tmx-cups/backend/pcs-3.17.0.0-1.amd64.deb (--install):
package architecture (amd64) does not match system (armhf)
Errors were encountered while processing:
/home/ubuntu/tmx-cups/backend/pcs-3.17.0.0-1.amd64.deb
dpkg: error processing archive /home/ubuntu/tmx-cups/backend/tmx-cups-backend-1.2.4.0-1.amd64.deb (--install):
package architecture (amd64) does not match system (armhf)
Errors were encountered while processing:
/home/ubuntu/tmx-cups/backend/tmx-cups-backend-1.2.4.0-1.amd64.deb
dpkg: error processing archive /home/ubuntu/tmx-cups/filter/tmx-cups_1.2.2-1_amd64.deb (--install):
package architecture (amd64) does not match system (armhf)
Errors were encountered while processing:
/home/ubuntu/tmx-cups/filter/tmx-cups_1.2.2-1_amd64.deb
Making directory...: /usr/share/cups/model/Epson
Copying PPD files to /usr/share/cups/model/Epson...
*** The installation finished. ***
Press the Enter key.
😇😇😇
やってみる
code:console
## plinth666/epsonsimplecups はバグがあるのでフォーク版を使う
cd epsonsimplecups
sudo apt-get install libcups2-dev
sudo apt-get install libcupsimage2-dev
sudo make
sudo make install
# installing
cd install; exec ./setup
EpsonTMT20Simple
cups driver installer
---------------------------------------
./setup: 9: [: Illegal number:
grep: /etc/cups/cupsd.conf: No such file or directory
Searching for ServerRoot, ServerBin, and DataDir tags in /etc/cups/cupsd.conf
grep: /etc/cups/cupsd.conf: No such file or directory
ServerBin tag not present in cupsd.conf - using default
grep: /etc/cups/cupsd.conf: No such file or directory
DataDir tag not present in cupsd.conf - using default
ServerRoot =
ServerBin =
DataDir =
Copying rastertoepsonsimple filter to /usr/lib/cups/filter
Copying model ppd files to //usr/share/cups/model/epson
Restarting CUPS
Could not restart CUPS
Install Complete
😇😇😇
bin/setup壊れてそう & /etc/cups/cupsd.confが無いと言われてる
というかそもそもcups入ってなかった
code:console
sudo service cups status
Unit cups.service could not be found.
再挑戦
code:console
sudo apt-get install cups
sudo service cups status
● cups.service - CUPS Scheduler
...
sudo make install
# installing
cd install; exec ./setup
EpsonTMT20Simple
cups driver installer
---------------------------------------
./setup: 9: [: Illegal number:
Searching for ServerRoot, ServerBin, and DataDir tags in /etc/cups/cupsd.conf
ServerBin tag not present in cupsd.conf - using default
DataDir tag not present in cupsd.conf - using default
ServerRoot =
ServerBin =
DataDir =
Copying rastertoepsonsimple filter to /usr/lib/cups/filter
Copying model ppd files to //usr/share/cups/model/epson
Restarting CUPS
ok Stopping cups (via systemctl): cups.service. ok Starting cups (via systemctl): cups.service. Install Complete
Illegal numberと怒られているけどインストール自体は成功してそう
無視して続行
デフォルトだとcupsのダッシュボードが公開されてなくて不便なので, ローカルネットワーク内からであれば見えるようにする
code:console
sudo vim /etc/cups/cupsd.conf
#
# Configuration file for the CUPS scheduler. See "man cupsd.conf" for a
# complete description of this file.
#
# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn
PageLogFormat
# Deactivate CUPS' internal logrotating, as we provide a better one, especially
# LogLevel debug2 gets usable now
MaxLogSize 0
# Only listen for connections from the local machine.
Port 631
# Show shared printers on the local network.
Browsing On
BrowseLocalProtocols all
BrowseAddress 192.168.0.*:631
# Default authentication type, when authentication is required...
DefaultAuthType Basic
# Web interface setting...
WebInterface Yes
# Restrict access to the server...
<Location />
Order allow,deny
Allow @local
</Location>
# Restrict access to the admin pages...
<Location /admin>
Encryption Required
Order allow,deny
Allow @local
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @local
</Location>
# Restrict access to log files...
<Location /admin/log>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @local
</Location>
# 以降は削除
sudo service cups restart
http://ubuntu.local:631でダッシュボードにアクセスし, https://www.youtube.com/watch?v=fGOcgz6z81Iを参考にプリンタを登録する
ローカルプリンターの欄にUnknownと出ているのがTM-T88IV
https://gyazo.com/e21a9c785549f830bc1c63cad59844da
😇😇😇
cupsd.confのPolicyの設定が上手くいってないっぽい
怒りのAllow allで再挑戦
code:console
sudo vim /etc/cups/cupsd.conf
#
# Configuration file for the CUPS scheduler. See "man cupsd.conf" for a
# complete description of this file.
#
# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn
PageLogFormat
# Deactivate CUPS' internal logrotating, as we provide a better one, especially
# LogLevel debug2 gets usable now
MaxLogSize 0
# Only listen for connections from the local machine.
Port 631
# Show shared printers on the local network.
Browsing On
BrowseLocalProtocols all
BrowseAddress 192.168.0.*:631
# Default authentication type, when authentication is required...
DefaultAuthType Basic
# Web interface setting...
WebInterface Yes
# Restrict access to the server...
<Location />
Allow all
</Location>
# Restrict access to the admin pages...
<Location /admin>
Allow all
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
Allow all
</Location>
# Restrict access to log files...
<Location /admin/log>
Allow all
</Location>
<Policy default>
<Limit Activate-Printer Cancel-Current-Job Cancel-Job Cancel-Jobs Cancel-My-Jobs Cancel-Subscription Close-Job Create-Job Create-Job-Subscriptions Create-Printer-Subscriptions Deactivate-Printer Disable-Printer Enable-Printer Get-Job-Attributes Get-Jobs Get-Notifications Get-Printer-Attributes Get-Printer-Supported-Values Get-Subscription-Attributes Get-Subscriptions Hold-Job Hold-New-Jobs Pause-Printer Pause-Printer-After-Current-Job Print-Job Print-URI Promote-Job Purge-Jobs Release-Held-New-Jobs Release-Job Renew-Subscription Reprocess-Job Restart-Job Restart-Printer Resubmit-Job Resume-Job Resume-Printer Schedule-Job-After Send-Document Send-URI Set-Printer-Attributes Set-Job-Attributes Shutdown-Printer Startup-Printer Suspend-Current-Job Validate-Document Validate-Job CUPS-Accept-Jobs CUPS-Add-Modify-Class CUPS-Add-Modify-Printer CUPS-Authenticate-Job CUPS-Delete-Class CUPS-Delete-Printer CUPS-Get-Classes CUPS-Get-Default CUPS-Get-Devices CUPS-Get-Document CUPS-Get-PPDs CUPS-Get-Printers CUPS-Move-Job CUPS-Reject-Jobs CUPS-Set-Default>
Allow all
</Limit>
</Policy>
sudo service cups restart
プリンタ登録できた
プリンタ名: tm-t88iv
説明: tm-t88iv
用紙: 80mm x 90mm
用紙サイズが指定されなかった時に使われるものっぽい?
例えばテストプリントはこのサイズで印刷される
ESC/POSは用紙サイズの概念がないのでそもそもこのオプションの影響を受けない (はず)
80mm x 2000mm とかあって面白い
誰かやってみて
cupsからテストプリントもできた
https://gyazo.com/03851ad0c99adaade24162f3758cf096
参考
ESC/POSで印刷する
Linuxから印刷できるようになったのでESC/POSを試してみる
lpを使ってESC/POS形式の印刷コマンドを投げるので, lpから見えるかどうかをまず確認する
code:console
lpstat -t
スケジューラーは動作中です
システムのデフォルトの宛先がありません
tm-t88iv のデバイス: usb://Unknown/Printer?serial=20080514142100765M01C
tm-t88iv は 2019年10月27日 21時46分08秒 からリクエストを受け付けています
プリンター tm-t88iv は待機中です。2019年10月27日 21時46分08秒 以来有効です
code:javascript
const EscPosEncoder = require('esc-pos-encoder')
const fs = require('fs')
const encoder = new EscPosEncoder()
const result = encoder
.initialize()
.text('The quick brown fox jumps over the lazy dog')
.newline()
.encode()
fs.writeFileSync('test.pos', result)
posファイルをscpで転送してlpで印刷する
code:console
$ scp test.pos ubuntu@ubuntu.local:~
$ ssh ubuntu@ubuntu.local
lp -d tm-t88iv ~/test.pos
https://gyazo.com/f2ad5466a75228aa546e12188d560792
取れないが...
カットコマンドを付けて再挑戦
code:javascript
const EscPosEncoder = require('esc-pos-encoder')
const fs = require('fs')
const encoder = new EscPosEncoder()
const result = encoder
.initialize()
.text('The quick brown fox jumps over the lazy dog')
.newline()
// esc-pos-encoder が用意している .cut メソッドはバグがあるので
// .raw メソッドでカットコマンドを埋め込む
.encode()
fs.writeFileSync('test.pos', result)
https://gyazo.com/975d50908bda4fcc8bdcb5c8245ea6bb
切れた!!!
印字ヘッドとカッターの位置が離れてる関係でQRコードが途中で切れてて面白い
画像の印刷に挑戦
今度はpaddingを取ってみる
実は.imageも壊れていて下のスクリプトをただ実行するだけでは動かない
エラーログ見れば直し方は分かると思うので各自適当に直してください
code:javascript
const EscPosEncoder = require('esc-pos-encoder')
const fs = require('fs')
const encoder = new EscPosEncoder()
const { loadImage } = require('canvas')
async function main() {
const result = encoder
.initialize()
.align('center')
.text('@mizdra')
.newline()
.newline()
.image(img, 280, 280, 'bayer')
.newline()
.newline()
.text('mizdra' is pronounced 'Mizudora')
// 7行くらい padding を取っておく
.newline()
.newline()
.newline()
.newline()
.newline()
.newline()
.newline()
// esc-pos-encoder が用意している .cut メソッドはバグがあるので
// .raw メソッドでカットコマンドを埋め込む
.encode()
fs.writeFileSync('test.pos', result)
}
main()
https://gyazo.com/e694cb83341e4172b755d517f33fbb6e
zdra
何故か文字が欠けた
まあ画像は問題なく印刷できたので良しとします
Macから印刷する
CUPSにプリンタ共有機能なるものがある
ローカルネットワーク内にプリンタを共有できる
これを使えばMacからプリンタが見えるようになりそうということで試してみる
http://ubuntu.local:631にアクセス
プリンタの管理 > tm-t88iv > プリンタの変更 > 続けるでこのプリンターを共有するチェックボックスがあるページを開く
チェックボックスにチェックして保存
Macでシステム環境設定 > プリンタとスキャナを開き, +ボタンを押してプリンタ追加画面を表示する
tm-t88iv @ ubuntuというプリンタが出てるので選択し, 以下の設定でプリンタを追加する
名前: tm_t88iv
場所: local
ドライバ: 一般的なPostScriptプリンタ (どうせ生のESC/POSを投げるので何でも良い)
lpコマンドから見えるようになっているか確認
code:console
$ lpstat -t
プリンタtm_t88ivは待機中です。火 10/29 00:01:38 2019以来有効になっています
test.posをlpで投げてみる
code:console
$ lp -d tm_t88iv test.pos
要求IDはtm_t88iv-38です(1個のファイル)
できた
あとがき
別にubuntu入れなくてもraspbianでもplinth666/epsonsimplecupsは動かせる
一々OS入れ直すの面倒なので, raspbianのほうが良いと思います