今回は解析結果です。CAN通信の基本的な考え方ですが、1本のバスを前モジュールが共有し、1モジュールが発信した信号は全モジュールが受信するようになっています。各信号はメッセージIDとデータから構成されています。
ID(11 or 29ビット) | データ長 | データバイト×データ長
IP通信のように発信元と受信先の両方のアドレスを付すわけではなく、発信元に固有のIDだけを載せてブロードキャストします。IDの値が小さいほど優先度が高く扱われるように作られていて、実際小さいIDのメッセージが多数記録されています。データの長さは可変になっていますが、V40の場合ははいずれのIDでも常に8バイト出力されていました。IDには11ビットで表現される標準IDと、29ビットで表現される拡張IDの2種類があり、
米国のユーザに解読されている2002年S80の例ではもっぱら拡張IDが用いられていましたが、実際にデータを取得してみると、ほとんどが11ビットの標準IDでした。メッセージ内容も全く異なっているため、ゼロからの解析になります。
取得できたメッセージIDの種類は76種類ありました。それぞれのIDは8バイトずつのデータが付随していますから、合計608バイトの中から、自分が必要とするデータを見つけなればならず、なかなか骨の折れる作業でありました。社外カメラを連動させるのに必要な情報は以下の通りです。
・リバースギア
・センターコンソールのボタン(テンキー、CAMボタン他)
・インフォテインメントシステムが参照する速度信号
解析の過程で、ドアロック状態、各種気温センサの値、ウィンカーランプの状態等々、色々な情報が判明してきました。今回は上記3種の情報について書き残したいと思います。関係するIDは、0x02, 0x06, 0x1A0, 0x220 でした。
リバースギア
ID: 0x20 (CEM)
xxxxxxxxxxAAxxxx
AA(第6バイト):リバースギア 26h:リバース以外 A6h: リバース
P, N, D の区別はこの信号ではできませんでした。高速CANの方では流れていると思われます。以下は検出した信号をパソコンのモニターに表示している様子です。
車速信号
ID: 0x60 (CEM)
xxxxxxxxxxxxAABB
AABB (第7-8バイト):車速信号(100で割るとおよそkm/hに相当)
車速と思われる信号は他のIDにも見つけましたが、解析装置でこのIDの偽信号を紛れ込ませると、以下の画像のようにテレビ画面が走行中の画面に切り替わりましたので、ICMがこの信号を参照しているのは間違いありません。なお、車載のメインコンピュータから同時に 0km/h の信号が出続けているため、切り替わった後の画面では 0km/h の表示となっています。TVキャンセラーと全く逆の動作ですが、当然そのまた逆の動作も可能となります。
センターコンソールボタン
センターコンソールのボタンが並んだパネルは Climate Control Module (CCM) と呼ばれています。ボタンの種類によって ID が異なります。
ID: 0x1A0 (CCM)
AAxxxxxxxxxxxxxx
AA(第1バイト):テンキー
3C: 押下無し
40:「0」押下 00:「0」押下中
44:「1」押下 04:「1」押下中
48:「2」押下 08:「2」押下中
4C:「3」押下 0C:「3」押下中
50:「4」押下 10:「4」押下中
54:「5」押下 54:「5」押下中
58:「6」押下 58:「6」押下中
5C:「7」押下 1C:「7」押下中
60:「8」押下 20:「8」押下中
64:「9」押下 24:「9」押下中
68:「*」押下 28:「*」押下中
6C:「#」押下 2C:「#」押下中
7C:ボタン解放
ID: 0x220 (CCM)
xxxxxxxxAAxxxxxx
AA(第5バイト):周辺ボタン
00: 押下なし
80: 解放
82: RADIO
84: MEDIA
88: NAV
90: TEL
A0: MYCAR
C0: CAM
動画は各ボタンを検出している様子です。時々関係ない表示が出ているのは解析プログラムのバグのようです (>-<)
必要な情報は揃いました。これから、切り替え装置の回路設計になります。長ーい道のりが続きます(^^;)
Posted at 2014/06/09 14:43:33 | |
トラックバック(0) |
Hacking V40 | 日記