CROSSAM2 on Mac OS X
なぜいまさら
10年くらい前に買って5年くらい前に壊れて放置していたのですが、分解して掃除した
ところなんとなく直ったようなので、ubsa-osxをつかって簡単なプログラムを作って
みたいと思っています。5年の間にいくつかリモコンを使う機器も増えましたし、
修理不可能になる前に
PT-D4W
のパターンを解析しておきたいという理由もあります。
HALの製品にはちょっと思い入れがあって、30年ほど前PC-8001
を使っていた頃、PCGというHAL製のキャラクタをプログラムできる機器の回路図を
オープンにしたのでクローンを作りちゃんと動いたのに感動した記憶があります。
今でもその基板を持っていますが、よく中学生が作れたもんだと自分でも感心します。
資料
HALのコマンド(圧縮ファイルの中に簡単な説明あり)
HALのページのコピー
波形データの資料
コマンドなどの詳細な資料
分解方法などや波形データの分析などあります
コマンド処理などが書いてあります
昔調べたPioneer BA-V520のパターン
開発方針
必須機能
あると良い機能
- パターン表示&解析
- リアルタイム送信機能
- バックアップ機能
開発環境
- Mac OS X 10.5
- Xcode 3.1.3
- MacBook Air
- BELKIN F5U103
- RSIF-2010
- HMR-2001
プログラムの構成
- シリアル操作部分は分離
- ubsa-osxを前提にするが別のシリアルIFでも使えるようにする
- 必要ないけど初期化もサポートする
- USB版クロッサムは手元にないのでサポートできないかな
- UIは当然cocoa
- UIはあまり凝らない
- 設定はプリファレンスで残す
- データ保存形式はHAL形式(?)
- ソースはubsa-osxのsvnにアップ
リモートコントロール機能
森の仲間たちキャラクタ
とりあえずコマンド操作が一通り出来るようになったがコマンドの送信は10秒の
インターバルを入れないと動かない。。。oz_
HACK.EXEで初期化したところ、コマンドのレスポンスはインターバルを入れなくても
動作するようになった。ただレスポンスのタイミングが変わってしまった。。。
コマンドでオフにしたメモリプロテクトは、電池を抜くとオンになるようだ。
データ解析
ソニーのTVの電源のプリセットデータ
00 c0 11
ソニーのLDの電源のプリセットデータ
00 c8 16
パイオニアのCATVの電源の疑似学習データ(0x35CA38C7:32ビット)
15 00 00 86 30 01 10 10 11 10 01 01 00 01 11 00 01 10 00 11 12 fe 22
このデータはHALが提供していた、hack.extで解析して手動で調整して作った
パターンだと思う。10年近く前の事なので詳細は思い出せません。
データは以下のようなビットの並びです。
00110101 11001010 00111000 11000111 Power
睨めっこしてパターンが見えたのだが、このような疑似学習パターンは
データの4ビットがリモコンから送信される1ビットとなっていて、5バイ
ト目の下位4ビットからデータが始まっている。21バイト目の下位4ビット
の2はパディングの空データで、最後に付いているfe 22は終端データと思われる。
ソニーのTVの電源の学習データ(0xA900:12ビット)
33 00 00 05 20 98 16 00 03 06 00 56 0b 00 03 06
00 1e 05 00 04 06 00 d3 04 00 67 fb 00 80 04 00
ba fb 3e fd 07 01 21 21 22 12 22 3f c0 d0 12 12
12 21 22 24 ff
このページ
を参考にして解析してみると以下のような構成になる。同じデータのはずですが
微妙に違っています。おそらくクロッサムの解析のロジックに揺れがあるように
思われます。
33 00 00 05 20
-
98 16 00 03 06 00 (マーク&スペース:リーダー)
56 0b 00 03 06 00 (マーク&スペース:1)
1e 05 00 04 06 00 (マーク&スペース:0)
d3 04 00 67 fb 00 (マーク&スペース:最初の終端)
80 04 00 ba fb 3e (マーク&スペース:最後の終端)
-
fd 07 01 21 21 22 12 22 3f (パターン)
c0 d0 12 12 12 21 22 24 ff
このデータは、12ビットのデータ(101010010000)を二回送っていているようです。
同じコマンドをPC-OP-RS1で受信したデータ
ff ff ff 81 ff 07 7f f0 ff c1 1f fc 3f f0 03 3f
f0 ff c0 0f fc c0 0f fc 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 fe ff ff c1 ff 07 7f f0
ff c1 0f fc 3f f0 03 3f f0 ff c0 0f fc c0 0f fc
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
fe ff ff c1 ff 07 7f f0 ff c0 0f fc 3f f0 03 3f
f0 ff c0 0f fc c0 0f fc 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 ff ff ff c1 ff 07 3f f0
ff c0 0f fc 3f f0 03 3f f0 ff c0 0f fc c0 0f fc
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ff ff ff c1 ff 03 3f f0 ff c0 0f fc 3f f0 03 3f
最初のブロックを下位ビットから2進数で表すと以下のような感じ。
11111111 11111111 11111111 10000001 11111111 11100000 11111110
00001111 11111111 10000011 11111000 00111111 11111100 00001111
11000000 11111100 00001111 11111111 00000011 11110000 00111111
00000011 11110000 00111111 00000000
おおよそ12ビットの1と6ビットの0で1を表して、6ビットの1と6ビットの0
で0を表しているように見える。最初にバイトのビットを逆から見て全く
パターンが見えなかった。
ソニーのTVの電源を作った例
24 00 00 04 20 72 06 00 46 05 00 28 0c 00 46 05
00 00 00 00 1e f5 00 06 18 00 20 05 00 31 01 01
00 10 00 02 fe 0e
HACK.EXEで基本波形のSONY-TV-Powerを書き込んで読み出したデータ
0b 00 00 80 41 01 01 00 10 00 2f e0 de
PT-D4WのAのONのコマンド
70 00 00 0b 20 00 00 00 42 01 00 00 00 00 5e 1a
00 4e 00 00 6a 09 00 df 00 00 df 0e 00 fd 00 00
bf 0f 01 95 15 00 e2 05 00 fc 04 00 d6 05 00 d2
0a 00 e1 05 00 b6 0a 00 d0 03 01 72 0a 00 f3 26
08 a2 0a 00 d8 f5 3e 01 fd 06 02 fc 02 03 02 02
02 03 04 56 66 66 67 66 67 85 66 66 66 76 66 79
fd 02 56 66 66 67 66 67 8f c0 d5 66 66 66 76 66
7a ff
PT-D4WのAのOFFのコマンド
64 00 00 0a 20 00 00 00 26 01 00 d1 00 00 75 09
00 3a 01 00 01 0f 00 99 01 00 cf 0c 01 ad 15 00
d2 05 00 0c 0b 00 d4 05 00 e5 04 00 d7 05 00 9c
0a 00 cd ff 00 e1 0a 00 84 1b 08 b8 0a 00 ad f5
3e 01 01 02 11 12 34 56 66 66 56 66 57 45 66 66
65 66 65 8f d0 24 56 66 66 56 66 57 fc 0d 45 66
66 65 66 65 9f f0
PT-D4WのBのONのコマンド
66 00 00 0a 20 3d 00 00 11 0a 00 13 00 00 85 01
00 00 00 00 1d 0f 00 00 00 00 d3 0b 01 97 15 00
d9 05 00 e7 04 00 d7 05 00 00 0b 00 d4 05 00 ec
0a 00 9f 01 01 73 0a 00 07 2d 08 f4 0a 00 9b f5
3e 00 10 12 10 10 10 12 13 45 65 55 56 55 56 74
56 55 55 65 55 68 fd 02 45 65 55 56 55 56 7f c0
d4 56 55 55 65 55 69 ff
PT-D4WのBのOFFのコマンド
71 00 00 0b 20 00 00 00 7c 01 00 00 00 00 63 1a
00 05 00 00 16 0f 00 7c 00 00 77 09 00 ec 01 00
08 04 01 c3 15 00 d5 05 00 e5 0a 00 d6 05 00 e7
04 00 d5 05 00 82 0a 00 10 fc 00 e0 0a 00 93 eb
07 b9 0a 00 ac f5 3e 01 02 02 03 03 03 03 02 03
03 03 02 45 66 77 77 67 77 68 56 67 77 76 77 76
9f d0 25 66 77 77 67 77 68 fc 0d 56 67 77 76 77
76 af f0
素のデータは以上になるが、どうもPT-D4Wは7つも赤外線ダイオード付いていて
パワーが強いためかノイズでデータが多くなっているように思われます。
元のデータは以下のようです。
A ON | 00 00 00 10 00 11 | 0x02 0x30 |
A OFF | 10 00 00 10 00 11 | 0x82 0x30 |
B ON | 01 00 00 10 00 11 | 0x42 0x30 |
B OFF | 11 00 00 10 00 11 | 0xc2 0x30 |
オンキョウのCDプレーヤのイジェクト
41 00 00 07 21
f0 56 00 3d 2c 00
a5 04 00 c3 05 00
bf 04 00 b0 10 00
34 04 00 32 93 01
76 57 00 3b 16 00
7a 04 00 c7 aa 03
96 04 00 b2 fb 3e
01 21 12 12 21 12 21 21 12 21 21 11 11 12 12 22 23 45 46 ff
このデータはスタート,32ビットのデータ(0x4b,0x34,0xd0h,0x2f),ストップのビット
列と、最後にマーカーかが二つ付いている、genir.cのジェネレートコードでは
最後のマーカーをスタートとストップのみのデータとして処理できる。
三菱の液晶ディスプレーの電源
3f 00 00 06 1f
d4 4c 00 d6 26 00
3e 04 00 43 05 00
1d 04 00 8b 0e 00
d0 03 00 ce 26 00
de 03 00 7a c7 00
b0 03 00 ae fc 3e
fd 05 01 12 11 22 23 22 11 11 11 4f
c1 30 11 21 12 22 32 21 11 11 15 ff
このデータはスタート,8ビットデータ(0x27),マーカ,8ビットデータ(0xc0),ストップ
のビット列になっている。genir.cのコードで処理する場合は半分に分けてマーカー
を前半のストップとして、後半のデータのスタートを空にしている。
HUMAXのデジタルCATVチューナーの電源
4e 00 00 05 22
af 03 00 31 04 00
02 04 00 e1 0c 00
38 04 00 c1 d7 02
74 21 00 17 11 00
b1 04 00 48 fc 3e
00 00 00 01 01 01 01 10 00 01 01 01 00 1f d0 e0
fc 01 11 00 02 31 00 00 00 00 10 10 10 11 00 00 10 10 10 01
fd 0e 0f c0 11 10 00 4f f0
シャープのビデオの電源
57 00 00 05 22
90 03 00 50 04 00
ae 03 00 5c 0c 00
d9 02 00 b7 c1 00
34 20 00 7c 10 00
24 03 00 f4 fc 3e
fd 02 01 01 01 01 01 10 10 11 11 00 01 00 00 11 00 10 00 00 10 10 00 11 11 23
01 fc 32 01 01 01 01 01 10 10 11 11 00 01 00 00 11 00 10 00 00 10 10 00 11 11
4f f0
いろいろ試してみたのだが、パターンを見つける事ができなく、同じパターンが
作れない。。。他のサイトを見るとシャープのリモコンは15ビット+15ビットの
構成とあるが、まったく見えてこない。。。
すべては確認していないが機種とプリセットコードの対応は以下のように
なっていると思われる。
ソニー | テレビ | 1-1 | 0xc0 |
松下 | テレビ | 2-1 | 0xcc |
東芝 | テレビ | 3-1 | 0xd0 |
アンプ | 1-2 | 0xc1 |
CD | 2-4 | 0xcd |
BS | 3-3 | 0xd1 |
衛星放送 | 1-3 | 0xc2 |
LD | 2-9 | 0xce |
ビデオ1 | 3-10 | 0xd2 |
CD | 1-4 | 0xc3 |
ビデオ1 | 2-10 | 0xcf |
| | |
テープA | 1-5 | 0xc4 |
| | |
| | |
テープB | 1-6 | 0xc5 |
| | |
| | |
DAT | 1-7 | 0xc6 |
| | |
| | |
チューナー | 1-8 | 0xc7 |
| | |
| | |
LD | 1-9 | 0xc8 |
| | |
| | |
ビデオ1 | 1-10 | 0xc9 |
| | |
| | |
ビデオ2 | 1-11 | 0xca |
| | |
| | |
ビデオ3 | 1-12 | 0xcb |
| | |
| | |
波形呼出タイプ
ソニー | 0x80 |
松下 | 0x81 |
東芝,日立,三洋,日本電気,ヤマハ | 0x82 |
三菱 | 0x83 |
ビクター | 0x84 |
シャープ | 0x85 |
パイオニア | 0x86 |
HAL | 0x87 |
Copyright (C) 2010 Hiroki Mori All Rights Reserved.