はどら秘密研究所
怪しいハードウェアいらいまくり
| HOME | ABOUT | E-mail | 
ジャンクメッセージ表示装置 解析日記
面白いジャンク満載の吉野電装さんのページでジャンクのメッセージ表示装置を見つけました。説明を見る限りでは受信したメッセージを外部に引き出せるポケベル(今はクイックキャストだっけ)を内蔵させてニュース速報などを表示させる物のようです。価格が4000円弱と破格なので何台かまとめて購入しました。(注:当時のお話なのですでに完売になっています)

届いた物を見てみるとどこかで使っていた物にしてはかなり綺麗です。


電源を入れてみましょう

電源を入れると次のような表示が始まります。
(1) 『メッセージ表示装置 NJE−105』
(2) 『Version 1.12』
(3) 『RAMチェック OK』
(4) 『動作モードは「通常動作」です。』 または『動作モードは「自動切換動作」です。』

上記一連のメッセージの後、以前受信したメッセージがある場合は、それを繰り返し表示し、また蓄積されたメッセージが無い場合は『メッセージはありません。』『ただ今、受信待機中です。』の表示を繰り返すようです。

上記ステップ(3)で『RAMチェック NG』が表示される個体がありましたが、一度このメッセージが表示された個体でも再度電源を入れ直すと『RAMチェック OK』のメッセージがでるようになりました。また、『RAMチェック NG』が表示された個体では、以前受信したメッセージが残っている事が無く、『RAMチェック OK』が表示された個体では、メッセージが残っていることが多いことから、これは一般に言うメモリのRead/Writeテストの結果ではなく、内蔵したスーパーキャパシタでバックアップされたメモリの記憶内容の正常性をパリティか何かで確認した結果ではないかと思います。(あくまでも想像ね)

また上記ステップ(4)で個体によって「通常動作」と「自動切換動作」の動作モードがあるようですが、違いはわかりません。

外観は?

外装を見てみると電源はAC100Vでよくあるメガネ型コネクタで電源コードがつながります。ファンが付いていますがなぜか回っていません。後でバラしてみてわかりましたが温度が上がると回るようです。キャビネットの後ろにはポケベルを内蔵させるスペースがあり、ポケベルをつなぐケーブルも付いたままでした。ケーブルのこの装置側はDB-25のコネクタですので、普通のシリアルの可能性大です。それから、このスペースに赤い押しボタンスイッチがありますが、これを押すとリセットがかかって以前受信したメッセージも消えてしまうようで、新たにメッセージを送り込む方法が見つかるまで寂しい思いをすることになるので要注意です。


溜まっていたニュース速報のメッセージから判断する限り2001年の9月頃まで使われていた物のようです。

表示関係はどんなのかな?

表示されたメッセージを見る限りでは、表示色は赤、緑、黄の3色でアトリビュートは通常と点滅と反転ぐらいでしょう。

さて、表示は何ドットかなと数えてみると縦16ドット、横192ドットで、16x16ドットの全角フォントで12文字表示できるようです。で、ドットをよく見てみると三角形のドットが2つくっついて正方形(正確にはちょっと横長)のドットを作っています。正方形に対角線を1本だけ引いたようなイメージですね。この2つでワンセットの三角形が赤と緑に光って赤、緑、黄の3色を作る仕掛けです。「こんなドットのLEDマトリクスは見たこと無いなあ」と 今までLEDだと思っていたのですが、これも後でバラしてわかりましたが蛍光表示でした。


バラせ!!

さて、とりあえず中身を見てみましょうということで、裏面のネジ4本をゆるめましたが簡単には開きません。キャビネットははめ込みになっているようです。用心しながら合わせ目をドライバやコジリなどでこじ開けます。こじるときには手が滑ってドライバなどを合わせ目の奥まで差し込んでしまわないようにしましょう。最悪 ガラス製の蛍光表示管を割ってしまいますし、そうでなくても基板に傷をつけてしまいます。

中身は蛍光表示管とドライバ、マイクロプロセッサなどが載ったメイン基板とスイッチング電源基板、ファンとその温度スイッチ(トーキン製のOHD3-45M:45度でON)、AC電源入力コネクタと電源スイッチで構成されています。面白いのはメイン基板が2枚の基板を継ぎ合わせてある点でしょうか。この程度の長さの基板はあると思うのですが、なぜか真ん中でコネクタでつなぎ合わされていて、基板自身もアルミ製の金具とリベットで結合されています。


ポケベルとの接続に使われているのはDB25のコネクタで、実際に配線されているのは2, 3, 4, 7ピンで、7ピンはアースだろうと勝手に決めつけて他のピンとの電圧をテスターで当たると3ピンと4ピンに4.6Vかかっていて2ピンは0V。基板のパターンを追いかけると2ピンはコネクタから基板に入ったところのチップLが実装されておらず、さらにその先のトランジスタとおぼしきパターンにもトランジスタが実装されておらず、たぶん出力になるであろうが今回は未使用。3ピンは細いパターンで抵抗を通ってシュミットのHC14の1ピンへつながっているのでたぶん入力でしょう。3ピンは細いパターンでシュミットの74HC14の1ピンへつながっているのでたぶん入力でしょう。1ピンは抵抗でプルアップされています。4ピンはなにやら太いパターンにつながって行っているのでポケベルへの給電のようですね。コネクタ形状と使われているピンからはRS-232のように見えますが、入力となる3ピンはTTLレベルです。(2002-05-11 訂正、追記)

表示させてみよう

ってことで 早速PCのシリアルポートからなにかデータを送ってみようと思ったのですが、シリアルケーブルが行方不明になっていて実際にデータを送るのは後日にすることにしました。ざっくりとインターネット上を探してみたのですが、ポケベルから送信されてくるデータのフォーマットがわからなかったので、ある程度推測してみましょう。

転送方法:
誤り訂正や再送をしてもしかたなさそうなので、非同期のシリアルで垂れ流しでしょう。
というか、上のコネクタの結線をみてわかるとおりハードウェアが受信オンリーなので、再送要求とか双方向のプロトコルを使うのは無理ですね。(2002-05-03 追記)

速度:
そんなに大量のデータを送るわけでは無いですし、ポケベルのプロセッサもそんなに高速で送信出来ないでしょうから1200bpsとか2400bpsぐらいじゃないでしょうか?
Tさんから9600bps, non-parity, 1-stopであるとの情報を頂きました。(2002-05-07 追記)

文字コード:
シフトJISでいいんじゃないでしょうか?

表示制御などの方法:
なにかエスケープシーケンスがあるはずです。

表示できませんでした

上で書いた予想を元にシリアルポートから速度を変えたりしながらデータを送ってみましたが、全然ダメっす。 もしかしたら、何か決まったヘッダがデータの先頭に無い限りは全部捨てちゃうようになっているのかもしれません。 デタラメにデータを送って偶然うまくいく可能性はゼロに近いでしょう。 残る方法は (1) 内蔵マイクロプロセッサのファームウェアを解析するか (2) マジメにポケベルを契約して実際に動作させて, ポケベルから送られてくるデータをモニタするか ぐらいしかなさそうです。 ズボラな私としては(1)はパスしたいです。それに(2)も契約はすぐ解約できるとしても、ポケベル本体は今は買い取りしかないはずですから、たぶん1万円ぐらいはするポケベル本体を買うのも躊躇するところです。
インフォネクストB13が偶然手元に余っているとか、同様のメッセージ表示装置が身近にあって1日だけポケベル本体を貸していただけるとか、そういう優しい人がいないかな〜と甘い事を考えてしまいます。(^^) (2002-05-03 追記)

とうとう表示できるようになりました

通信速度が9600bpsであることを教えて頂いたTさんから「表示できた」とのメールを頂きました。以下、Tさんからの情報を元に私の所で行った結果です。Tさん、ありがとうございます。

まずPCとの接続ですが、初めは直結でいいだろうと思っていました。しかし、RS-232の信号はプラスマイナスに振れますから、TTLの入力に直接つなぐのはまずいです。この装置の場合3ピンの入力はCMOSの74HC14で受けていますので、簡易的には直列に100KΩぐらいの抵抗を入れれば良さそうなのですが、上の方で書いたように74HC14の1番ピンは抵抗でプルアップされているためうまく動かないかもしれません。そのため、ここではTさんからのアドバイスを元に簡易RS232レシーバを外付けにしてケーブルを作りました。 回路図はこれです。電源は本来ポケベルに給電するための4ピンからもらうようにして、DSUB25ピンのコネクタシェルの中に回路部分を詰め込みました。ゲートが余ったのでモニタ用にLEDでも付けようかと思ったのですが、場所が無くて断念しました。
なお、ここに書いた回路図はあくまで参考です。このケーブルを回路図通りに作ってもし動かなくても保証はありませんし、このケーブルをつないだことであなたのPCまたはメッセージ表示装置に何か問題が起きても責任はとれません。


またデータのフォーマットは次の通りです。

0D 0A 01 01 01 01 01 01 01 01 表示データ 0D 0A

(1) 先頭の0D0Aは省略不可でした。
(2) 8個連続している01の意味は不明。制御コードなのかもしれません。
(3) 表示データ部分のコードはシフトJISです。最大128バイト。
(4) 手でポチポチ送信ではダメ、まとめて一気に送信しないとダメ。

例えばファイルにデータを予め入れておいてこれをPCのCOMポートから送信すると、初めに反転表示で表示データの内容が表示されてスクロールされていき、次に通常の表示でスクロールを続けます。


...でも まだまだ

とりあえず表示はできるようになりましたが、送ったメッセージを消したり、表示色を変えたり、点滅させたりとか、自由にコントロールする方法がわかりません。なにか制御コードがあるんだろうとは思います。上に書いたテストデータの先頭の方の01連続に秘密があるんじゃないかと思いますが、適当にいろいろデータを変えてみても表示に変化はありませんでした。
(2002-05-12 追記)

インフォネクストD12来たーーーー!

ある方からインフォネクストD12をしばらくお貸しいただくことが出来ました。本業がちょっと落ち着いてそろそろ解析を再開しようと思っていた所でしたので非常に助かります。ありがとうございます。

見た目はインフォネクストD11とそっくりですが、メッセージボードとの組み合わせで使うのが前提のため細部が違います。目立つのはやはりメッセージボードにつながる小型のコネクタと外部アンテナ端子ですね。それから電源スイッチがありません。電池ホルダーはありますがメッセージボードから電源を供給してもらうため電池は入れません。メッセージが着信すると液晶画面にもメッセージは表示されますが、音は鳴りません。上の写真では液晶にスピーカのアイコンが出ていますが、音は強制的に鳴らなくしてあるみたいです。実験場所が電波の届きにくい所のため、外部アンテナ代わりにビニール線をつないでいます。ポケベル本体の上から延びているピンク色のビニール線がそれです。

今回お借りしたポケベルはゼロニード契約の為、e-mailによるフリーメッセージの送信は出来ませんが、懐かしの数字2桁のフリーメッセージや数字4桁コードの漢字メッセージや定型伝言文をプッシュホンから送信することができます。それから、インフォチャンネルにも契約されているため、放っておいても毎日40〜50通のニュースが届きます。


今回はHPの4952Aというプロトコルアナライザでポケベルとメッセージボードの間を流れるデータをモニタしてみました。


モニタしたデータです。

ちょっとわかりにくいですが、次のようになっています。(〜表示データ〜の部分はSJISの漢字コードでした)

0D 0A 30 39 32 30 31 37 33 33 表示データ 0D 0A

なんと、5月にTさんから教えていただいたデータフォーマットそのまんまではないですか。当時は表示データ直前の8バイト部分が意味不明でしたが、今回はASCIIコードで「09201733」という文字列が入っています。これはポケベルがメッセージを受信した日付と時刻でした。ポケベルの内蔵時計が狂った状態でメッセージを受信した時はこの部分も狂っていましたので、この部分は送信元から送られてきたのでは無くポケベルの所で付け加えられたデータということになります。どうやらこの8バイトは制御コードではないようですね。もしかしたらメッセージを選択的に消去するためのインデックスとして使われるのかもしれませんね。

さて、現物のポケベルが使えるようになったので、実際に流れるデータをモニタして制御コードを調べる準備ができました。しかし、問題があります。インフォチャンネルで流れるメッセージの中にアトリビュートを変えた表示があるのか無いのかが今のところわからないということです。とりあえずしばらくの間はモニタしたままメッセージを時々チェックするようにしようと思っています。
(2002-09-24 追記)

エスケープシーケンスの謎

さて、ポケベルから送られているデータをずっとモニタしていたのですが、アトリビュート変更を伴ったデータが来る気配はありません。やはりインフォチャネルのニュースだからなのか、それとも緊急のニュースでは違うのかはわかりません。いつまでも待っていては埒があきませんからちょっと考えることにします。

今までのモニタ結果では先頭部分8バイトに日付時刻以外のデータが乗ってきたことはありませんでした。とりあえず、この部分での何らかの制御は無い物として良いかもしれません。となると、やはりデータ部分には表示に使うデータと制御に使うデータが混在するはずです。通常はそれらの区別はデータの値で行います。例えばASCIIコードでは00h〜1Fhの領域はコントロールコードと呼ばれ、端末装置の制御に使われています。コントロールコードだけでは単純な制御しかできませんから、複雑な制御にはESC(1Bh)で始まるエスケープシーケンスが使われることが多いです。これら制御コードはANSIで定められたエスケープシーケンスが有名で、多くの端末装置(プリンタやターミナル)で使われています。でも掲示板にも書かれていますが、ANSIエスケープシーケンスはこのメッセージボードでは使われていないようです。もちろん私も試してみましたが、やはりダメでした。もちろん1バイトのコントロールコードも試してみましたが、0Dh, 0Ahが終端の役割をしている他は反応が見受けられませんでした。

そこでふと思ったのが「そもそもポケットベルの表示データ部分にコントロールコードはあり得るのだろうか?」ということです。大昔のポケベルは音が鳴るだけでした。そこから数字のみのメッセージ、定型文字列のメッセージ、英数字、カナのフリーメッセージ、漢字混在のフリーメッセージと発達してきたわけですが、ずっと変わっていないのが送信方法です。プッシュホンからのDTMF音の羅列だけで最新の漢字混じりのメッセージを送ることが出来ます。それにポケベルのデータとしてあり得るのは文字コードだけで、反転表示や点滅表示はありませんでした。(どこかのキャリアでカラー表示のポケベルがあったような気がしますが、少なくともDoCoMoではなかったような気がします)だとすると送り手からポケベルに伝えるのは文字コードだけで、制御コードは必要なかったと考えても間違い無いと思います。そこに後からメッセージボードが現れたわけで、そのためにわざわざ制御コードを含めたデータを伝送出来るようにポケベルのシステムを改めるなんて事をやったとは思えません。ということで、いわゆるANSI準拠のエスケープシーケンスでは無いと断定しちゃいましょう。(^^) だって、全然ダメなんですもん。

そうなると、何らかの特定の文字列が制御に関わっていると考える他無さそうです。ただし、偶然その文字列が通常の表示データの中に混ざっていると困りますから、文字列のパターンと長さが一致した時に限って制御コードと見なすようになっているのでは無いでしょうか?

恐るべし、偶然の出会い

そんな文字列を探すのはめちゃくちゃ難しいです。よく考えてみるとどんな文字列を使っても、その文字列が偶然に本当の送信データに使われる確率はあんまり変わらなさそうです。何を使ってもいいわけですね。でも普通は送信データに使われ無さそうな文字列を選ぶんじゃないかな? 自分だったら何を使うかな? とか考えながら、適当な文字列を送って見ました。

   ビンゴです!

わはははは。「NJE」でした。メッセージボードのモデル名 NJE-105のNJEに何か付けながら送っていたのですが、「NJET」と送った時です。「現在の時刻は00時23分です」といきなり表示されたじゃないですか。メッセージボードを手に入れてから5ヶ月目にして表示データ以外の挙動を初めて見ました。感動です。

でも00時23分ってなんじゃ? ははあ、先頭8バイト部分の日付時刻が効いているんだな。その時は先頭8バイトには01hの連続を使っていました。これは日付時刻としては不正なデータですから無視されているのでしょう。このボードの電源を入れてから23分ぐらい経っているんで、00:00からカウントして00:23なのでしょう。試しに先頭8バイトを30h 39h 32h 39h 31h 35h 32h 37h(09291527)にしてみると、「現在時刻は15時27分です」に変わりました。5分ぐらい待って、今度は先頭8バイトを00hの連続にしてNJETを送ってみると「現在時刻は15時32分です」になりました。ふんふん、NJETはメッセージボード内部の時計を表示するコマンドのようです。先頭8バイトにはいつも日付時刻データが入っているようでしたが、これでその裏が取れました。ポケベルは呼び出しセンターからの時刻情報でポケベル自身の内部時計を自動補正する仕掛けがありますから、その時刻がいつも先頭8バイトに入っているとするとメッセージボードはポケベルからメッセージをもらうたびに正確な時刻情報をもらって内部時計を修正しているってことになりますね。なるほど〜。ちなみにこの8バイト部分が日付時刻にあり得ないデータの場合は内部時計の設定は行われないようです。

ちょっと整理してみます。まず文字は大文字4文字でNJETでないとこの内部時計の表示は行いませんでした。例えば、小文字でnjetとか、NJETXとかではコマンドとして認識せず、表示データとして扱われ実際にメッセージとして表示されました。予想通り、文字列のパターンと長さが一致することが条件になっているようです。

他の組み合わせもやってみました。「NJER」がメッセージボードの初期化のようです。本体裏面の赤ボタンを押したのと同等の動きをするようで、今まで受信したメッセージは全て消えて、内部時計も00:00にリセットされます。

いまのところ見つかったのはNJETとNJERの2つだけです。
NJER: Reset
NJET: Time
って感じでコマンドの名前が予想できそうですね。NJEで始まる5文字以上の組み合わせもあり得ますが、組み合わせが多いですから偶然にはそう簡単には見つからなさそうです。まだまだ先は長そうです。

表示アトリビュートも...

制御のために特定の文字列によるエスケープシーケンスが使われているらしいことがわかりました。だとすると、表示アトリビュートの変更にも同様のシーケンスが使われている可能性大です。というか、それ以外なさそうです。

これも表示データにあり得ない無い文字列の組み合わせでしょう。あまり長いと効率が下がりますから、アルファベットだけではなく記号か何かをきっかけにしている可能性が大きいですね。記号であまり使わない物... ^とか~とか`とかは+とか-とかに比べて日常的にはあまり使いませんよね。アトリビュートは表示方法(反転とか点滅)と文字の色ぐらいでしょうか。本当は全ての組み合わせを送るプログラムとか作ればいいのでしょうけれど、面倒なのでさんざんいろんな組み合わせを思いつくまま送りまくっていました。みつかりました。「~AA~」という組み合わせです。表示文字列中に「~AA~」という文字列があったらアトリビュートが変わります。2個のAの意味は、最初のAが文字の色、2個目のAが表示アトリビュートのようです。最初のAの部分はAとBとCが有効で、それぞれ緑、赤、黄の色に対応しています。2個目のAの部分もA, B, C...と有効のようですが、反転、点滅と全体の表示の仕方(スクロール方向?一旦停止?)の組み合わせのようでまだよくわかっていません。とりあえず、先頭8バイト以降のデータ部分に「~BA~Red~CA~Yellow~AA~Green」という文字列で送ると、それぞれの文字が色違いで表示されました。

色以外のアトリビュートの組み合わせはちょっと面倒なのでまだやっていません。もし、追試されて解析に成功された方がおられましたらぜひ掲示板の方で発表してください。さすがにちょっと疲れました。(^^;;(2002-09-30 追記)

掲示板の方に解析をされた方から早速書き込みがありました。あ さん、summitさん、ありがとうございます。私の方も少し解った部分が増えたので、まとめたページを作ってみました。今後随時アップデートしていく予定ですので解析された方からの掲示板への書き込みをお待ちしております。(2002-10-07 追記)

高松さんがメッセージ送信ソフトを作られました。これで、HEXエディタ+TeraTermの面倒な操作とお別れできます。すごくいいです、感激!ありがとうございます。(2002-10-08 追記)

新たなコマンド群発見!

匿名希望の方から新たなコマンド群発見とのお知らせをいただきましたので、コマンドをまとめたページをアップデートしました。これは、メッセージを垂れ流しで表示するのではなく、表示する時にメッセージに番号を付けておき 後でその番号を使って特定のメッセージだけを指定して消すことが出来る物です。
今までは書き込んだメッセージは一定時間が経過するまで消えませんでしたが、このコマンドで随時消すことができるので、時計とか温度計とかのリアルタイムで表示を書き換える必要がある用途にも使えそうです。匿名希望さん ありがとうございました。(2003-03-21 追記)

ご本家のwebにやっと登場

この装置を入手した頃は製造元の長野日本無線さんのwebページにはNJE-105についての記述は影も形もありませんでした。当時はNTTドコモさんがこの装置とクイックキャスト(ポケベル)との組み合わせで売っていましたので、OEM向け製品か何かで直接販売はしないのだろうと思っていました。先日何の気なしにGoogleでNJE-105を検索してみると長野日本無線さんのページがhitするではないですか。PCから制御するためのソフトとセットの販売のようです。今となっては高松さん作の送信ツールがありますから、ノーサンキューですが、ソフトだけ単体で売ってくれないかな? 売ってくれたとしても高いんだろうなあ。(2003-04-11 追記)

ニュース表示プログラム公開される

やまさんさんが作られたニュース表示プログラムを公開していただきました。NTTドコモのインフォチャネルのサービスも2004年の3月末で終わってしまい、ゼロニードポケベルでのニュース表示もできなくなっていましたが、これでいつでもニュースが見られるようになります。ありがとうございます。(2004-05-09 追記)

▲戻る
Base template by WEB MAGIC.   Copyright(c)2005 はどら秘密研究所 All rights reserved.