古いCanon CAPTプリンタをWindows/Mac/Linuxで使う

こんなことやってる暇ないんですが、必要に迫られて、かつかなり面倒だったので記録を兼ねてブログに残しておきます。ネット上にも英語、日本語を問わずほとんど情報が上がってないです。

Canon CAPTプリンタは以前にキャノンが販売していた、専用のドライバが必要なぶん、安価なレーザープリンタで、自分の身近にはLBP-1210とLBP-1120の2台があります。プリンタ自体はまだまだ元気に動くのですが、いかんせん、ドライバのアップデートがない。64bitのWindowsでは動かないし、最近のMacOS向けのドライバもない。特にWindowsの場合、仮想マシンにWindowsXPを入れて動くようにしたところで、結局、クライアントマシンにドライバが無いと使えない。まー、にっちもさっちもいかないわけです。

この手の古いプリンタの場合、WindowsXP環境に仮想Postscriptプリンタをインストール&共有して、他のマシンからはPostscriptで印刷しようというのが定番です。これはWindowsのGeneric Postscript Printer経由で普通に印刷したデータを、RedMonという仮想プリンタポートを使ってghostscriptにリダイレクトし、改めて古いプリンタに送るという処理になります。「Windows RedMon ghostscript」あたりで検索すれば、色々と出てきます。

ただこれだと、どうもpostscriptの処理が怪しくて、たぶん、フォントがビットマップで処理されてたりするのかな、印字品質が低いのです。しかもWindowsXPのライセンスを用意して、実機か、仮想マシンを用意しないといけない。いまどきWindowsXPを用意するとか、たいへん面倒くさいですね。

全てを無料で簡単に済ませるのにいちばんいいのは、仮想マシンにLinux環境を作り、それで印刷することです。幸い、CAPTはLinux用のドライバがあります。Mac + VirtualBox + Ubuntu 12.04LTS + CAPT Linux Driver の組み合わせで、あっさり、Macから印刷出来るようになりました。以下サイトからCUPSドライバを入手し、普通にインストールすればOKです。インストール後は、CUPS管理ページからプリンタの共有を有効にするだけです。あとはMacからプリンタを追加しようとすれば、Bonjourで自動的に発見できます。

Canon CAPT Linux Printer Driver

ところが同じことをWindowsベースでやろうとすると、Windows10 + VirtualBox + Ubuntu 12.04LTS + CAPT Linux Driver はぜんぜん上手くいかない。インストールは普通に出来るものの、印刷が不安定で、出てきたり、来なかったりします。確証はないですが、どうもVirtualBoxのUSB周りのバグが怪しいと、睨んでいます。Windows10 + VMWare Workstation Playerに変えたら上手くいきました。。

さらに困るのが、上記の方法で作ったLinux仮想マシンは、理屈の上ではどんなPostscriptファイルでも処理出来るはずなのに、Windows Generic Postscript Printer (例えば MS Publisher Imagesetter)から印刷しようとすると、上手くいかない。これがくせ者で、色々調べて見たら、Canonのpstocaptという、PostscriptをCAPTに変換するコマンドにバグがあって、Microsoft Generic Postscript Printerが作るpsが読めないという。。。こいつが”[CAPTFILTER] Input File Error”というエラーを吐き出して止まります。

ロシアのプログラマの方がこのバグを直したCAPTドライバを配布しているのですが、ソースコードでの配布なので、自分の能力では、コンパイル環境を整えることが出来なかった。。

GitHub – Magister/cndrvcups-capt: Canon CAPT driver

で、ようやくこの投稿のポイントなのですが。要するにWindowsからLinux上のCAPTプリンタへの印刷を考えるとき、Windows Generic Postscript Printerの書き出すpsファイルが、お行儀の良いファイルになればいいわけです。だったら、そのお行儀の悪いpsファイルを、ghostscriptで再処理すればいい。これで上手くいきました。

  1. Linux環境での設定は全て済ませ、CUPSで普通に印刷出来るようにしておく。これを仮にプリンタAとする。
  2. Linux環境にsambaをインストールし、プリンタAがWindowsから見えるようにしておく。

  3. Windows環境にRedMonをインストールし、印刷ポートのリダイレクトを使えるようにしておく。なおインストール時には管理者権限が必要で、プリンタのプロパティでRedMon関係の設定をするときも管理者権限のコマンドプロンプトから rundll32 printui.dll,PrintUIEntry /p /n\machine\printer でプロパティを開く必要があります。

  4. 同じくWindows環境にghostscriptをインストールしておく。

  5. WindowsからLinuxのCAPTプリンタに接続する。ドライバはMS Publisher Imagesetterを選択。このプリンタはWindowsマシンからLinuxマシンにデータを送るためのもの。これを仮にプリンタBとする。

  6. Windowsにもうひとつ、MS Publisher Imagesetterのプリンタをインストールし、印刷先ポートをRedMonにする。こちらは、印刷を実行するためのもの。これを仮にプリンタCとする。

  7. プリンタCのポートの設定でRedirect this port to the program欄には、gswin64c.exeを設定する。また、Arguments for this program are欄に「-q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=ps2write -sOutputFile=“%printer%\仮想マシン名\プリンタB” -」 とする。最後のスペースとダッシュを忘れないこと。ダッシュの後にはスペースも改行も残さないこと。Outputについては、今回ghostscriptに直接スプールにデータを書き出させているので、Program handles outputでOK。

以上の設定により、以下の流れで印刷が可能になる。

WindowsプログラムからプリンタCに印刷指示
→ プリンタCにてMS Publisher Imagesetterが出力したpsデータをRedMonが受信
→ RedMonがghostscriptでps形式をクリーンに変換してプリンタBに送る
→ プリンタBがLinux側のプリンタAにsamba経由でデータを転送
→ Linux側のプリンタAでCUPSで印刷される

6、7に相当する画面をキャプチャして貼っておきます。

わかってしまえば、それほどたいしたことはやってなく、Linux環境のセットアップから含めても全部で1時間もあれば出来るのだけど、不具合の原因を辿って解明するのが大変だった。どこかの誰かの役に立つかもしれないので、ここに書き残しておきます。

GPSロガーGT-740FLをMac/Linuxでも使えるGPSBabel

旅の記録にときどきGPSロガーを使っています。自分ひとりで歩き回っているぶんには自分で地図が頭に入るのでいいのですが、他の方に案内して頂くとそれはそれで楽しいのですが地図がさっぱり頭に入りません。そんなとき、GPSロガーはとても便利です。GPS機能がないカメラで撮った写真にジオタグを付けるのにも役立ちます。

短時間であればスマホアプリでも良いのですが、スマホでGPSを使い続けるとバッテリー消費が激しいので、丸一日ログを取るなら専用機の方が気が楽です。

GPSロガーはいくつも安価なものが発売されていますが、GT-730FL-SやGT-740FLなどが安くて使い勝手も良く、オススメです。4,000円前後で手に入ると思います。競合としてよく話題になるi-gotUシリーズはUSBケーブルが独自規格のため、旅先で無くしたり壊れたりしたらオシマイです。個人的に旅に持って行く道具に独自規格はありえません。HOLUX m-241は以前に使っていましたが、電池で使えるのは一見便利なようで、交換や充電が面倒くさいです。GT-740FLならば大容量モバイルバッテリーから充電しながら使えば超長時間記録が可能になります。

さてこのGT-430FLですが、付属ソフトウェアがWindowsにしか対応していません。どうにかMacで直接使う方法はないかと調べてみたところ、Mac用のドライバを入れた上で、GPSBabelというフリーソフトを用いればトラックデータのダウンロードが可能だと分かりました。

本製品はUSB-Serial接続で、採用されているチップはPL2303というものです。このチップのドライバは以下サイトから入手出来ます。これでMacからシリアルポートとして見えるようになります。

PL2303ドライバ

GPSBabelはフリーのGPSログデータダウンロード&変換ソフトウェアです。

GPSBabel: convert, upload, download data from GPS and Map programs

DeviceをSkyTraq Venus based loggers (download)、Device NameをUSB-Comポートとして、シリアルポートの速度だけ設定してやれば、オッケーです。出力はGPXにしておけばたいていのアプリが対応しています。

同様のやり方でLinuxでも使えるようになりそうです。

海外旅行に便利なチャット専用グローバルSIM ChatSim

こないだ複数の国を巡る海外旅行でとても役に立ったもの。年間たった10ユーロで、世界150ヶ国超から、なんとテキストチャットが使い放題。さらに追加でチャージすれば、写真の送受信や音声通話も可能という素晴らしいsimです。Facebook messenger、LINE、WhatsApp、WeChatなど、使えます。LINE callを使えば一般電話へも通話出来てしまいます。

基本的にはおそらくIPアドレスベースの通信制限がかけられていて、一般サイトには繋がらず、チャットアプリだけが使えるようになっています。追加チャージ無しの状態だと、文字以外の、例えば写真などを送ろうとすると、すぐにSMSが飛んできて、「テキストチャット以外の利用が検出されました、20分間、通信速度が低下します」という趣旨のことを言われます。

僕はこれを中古で8000円で買った激安Androidスマホに入れてるんですが、一度だけ設定してしまえば、どこの国へ行こうが、飛行機が着陸した瞬間から、電源を入れるだけでメッセンジャーが使い放題ですから、とても安心感があるし、現地での人との待ち合わせも完璧。

ネットを検索すると、発売当初は色々と使い勝手が悪かったようですが、現在売られているのは ChatSim Unlimited というたぶん第三世代に当たる製品で、当初問題になっていた設定の難しさなどはなく、基本的に他の一般的なSIM同様、SIMを入れてAPNを設定するだけで使えるようになっています。

ベンチャー企業の製品だと思うので、この会社が潰れたら急に使えなくなるリスクもあると思いますが、目先、海外に行かれる機会があるなら、一考の価値はあるかと。リンク先は日本の代理店が販売しているもので、年間利用料のほかに、初回SIM代、送料が含まれて3,580円ですね。

さらに、本来はチャット専用なのですが、実質的にFacebook本体も利用出来てしまっています。おそらくmessengerと同じIPアドレスで規制出来ないか、あるいは、ユーザーの利便性のために、意図的に開放したままにしているのかもしれません。Facebookアプリで通信をしてしまうと画像などもやりとししてしまいますが、追加チャージをすれば、対価も払うので、サービス提供側としても問題はないのではないかと。自分は通信量を削減するために、Androidに途上国向けに軽量にカスタマイズされたFacebook Liteを入れて、ちゃっかり使ってみています。

最後に、重要なポイントを2つ。

まず、iPhoneに入れた場合、使えることは使えるのですが、通知が来ないという制限があります。メッセンジャーのアプリを手動で開けば受信されます。おそらくiPhoneはApple側で統一的に通知を管理していて、ChatSim側で上手く管理が出来ないなどの事情があるのでしょう。Androidだと、通知も含めて使えます。

次に、対応アプリ一覧に含まれているTelegramが日本からは使えませんでした。ChatSim提供元とパケットキャプチャのログなどを交換して話し合ったのですが、どうやらChatSim側で把握していないサーバが使われていて(地域ごとに接続先サーバが異なる?)そのために通信出来ないようでした。今のところ、Facebook messenger、LINE、WhatsApp、WeChatについては問題なく使えることを確認しています。

ITにあまり詳しくない人にまで手放しで勧められる商品ではありませんが、多少の設定が苦にならない人にとっては、なかなか良い選択肢になりうるのではないでしょうか。

ドメインのレジストラをDynDNSからGoDaddyに移転したけど、QNAP NASからDDNSする件

経費節減のために某ドメインをDynDNSからGoDaddyに引っ越したのですが、固定IPではない自宅サーバをDynamic DNSのように動的にGoDaddy上のドメインに紐付ける方法が見つかったという話を備忘録を兼ねて。

結論から書くとGoDaddyは独自APIの提供を始めたので、API経由でDNS設定をアップデートすることが出来ます。それをやってくれる素晴らしいシェルスクリプトが以下サイトで公開されています。

GoDaddy DDNS Updater

サイト上にも解説がありますが、似たようなことをやるPythonスクリプトやPHPスクリプトが出回っていますが、それらは新たに提供が開始されたAPIを使っておらず信頼性が低いとのこと。それにシェルスクリプトで済むなら、QNAPにPythonを追加でインストールする必要も無いですし、良いですね。QNAPで動かす場合にはコマンドのパスが違うところがあるので、適宜修正。

あとQNAPでのcron設定は普通に crontab -e すると再起動で設定が消えるので注意。 /etc/config/crontab を直接編集すれば再起動しても大丈夫。

これで高価なDDNSサービスや怪しい無料サービスを使わなくて済みます。(^^)

Android-x86でPebble Timeのペアリング

Pebble TimeはAndroid環境からでないと非公式日本語パックがインストール出来ない状況が続いていますが、Mac上のVM にインストールしたAndroid-x86でPebble Timeをペアリングし、日本語パックのインストールに成功しました。

当方の成功環境は以下の通りです。

・MacOS X 10.10.4
・VirtualBox 5.0.0
・Android-x86-4.4-r3

Android-x86は4.4-r2では上手くいかなかったのですが、r3になってBluetooth Stackが変更され安定化したそうですので、それが勝因かもしれません。
いくつかTipsがあります。

・Pebble TimeアプリはWiFiが認識されていないと起動しない。
VirtualBoxでホストのネットワークを共有してもダメです。
対策として、外付けUSBのWiFiを接続し、ホストのネットワーク共有はオフにします。

・Android-x86でBluetoothを使うには、外付けUSBのBTドングルを利用する必要があります。

上記2つで、Pebble Timeがペアリング出来るようになります。
ちなみに今回動作確認した外付け機器は
– BUFFALO WLI-UC-GNM2
– PLANEX BT-Micro4

そのほか、

・*.pblファイルをChromeから直接開こうとするとPebble Timeアプリ上でInstalling.になってすぐ止まってしまいます。ネット上にはFirefoxでローカルに落としてからファイルマネージャで開く、というアイディアもありましたが、なぜかFirefoxがクラッシュするので、私は、自分のDropboxに保存する→Dropboxアプリを入れて、アプリから開く、で無事にインストール出来ました。

・VirtualBoxのマウス設定をPS/2にしておかないとマウスカーソルが見えません。

以上、少々面倒ではありますが、これで2000円ほどの投資だけでAndroid環境が手に入り、Pebbleの日本語化が可能になります。

※追加の情報をコメント欄に記載しています。

参考にさせて頂いたページ:
Pebble 日本語言語パック
Pebble Time 日本語・中国語言語パック
Pebble Time : 初期設定&日本語フォント導入