• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
2018年06月06日

CANバス解析のハマりどころ

CANバス解析のハマりどころ

整備手帳にも多少書いているように、CANバスの解析を行っています。CANバス解析の情報は少ないので、私がハマったところをまとめておきます。TCP/IPのパケットキャプチャぐらいは当たり前にやったことがある、という人が想定読者です。

◆解析に用いる環境

まず環境ですが、大いに参考にしているCar Hacker's Handbookの解説がLinux上のツールを中心にしていることと、自分自身、20世紀からUNIXおよびLinuxを使っていて(カーネルがバージョン1になる前です)慣れていることから、Ubuntu系の環境を使っています。

CANバスアダプタは、パーツ紹介に書いたusb2canを使っています。安価なのにSocketCAN対応していて便利です。

https://minkara.carview.co.jp/userid/2898510/car/2508605/8995638/parts.aspx

車両からのCANバス取り出しケーブルは、下記パーツを購入して、反対側にDSUB 9ピンコネクタを接続しただけです。

http://www.to-fit.co.jp/obd2.html

Kayak, can-utils(canplayer, cansniffer等)は自分でビルドしています。cantoolsは、pip3でインストールしただけです。kcdファイルの編集には、適当なテキストエディタを使っています。

◆ハマった点

自分がハマったのは、以下の点です。

1. VirtualBoxのUSBの不安定さ

当初、WindowsをホストOSとしたVirtualBox内の仮想マシンに、Ubuntuをインストールして、そこにusb2canをVirtualBox経由で接続していました。この構成で、実車に流れるCANパケットのログをところまで特に問題なく動作していたのですが、そのログをICテストベンチに対して流そうとしたところ、途中で止まったり、ドライバが謎のエラーを吐いたりして困りました。

ドライバのソースなども追いかけたのですが原因が分からず、あまり使っていないパソコンに直接Ubuntuをインストールして、ハード的に直接usb2canを接続するようにしたら、特に問題が発生しなくなったので、VirtualBoxのUSB機能が高負荷時には不安定になるようです。

2. SocketCANのデフォルトの送信バッファの小ささ

実車のCANログをcanplayerでテストベンチに流していると、結構な頻度で、sendto: No buffer space available というエラーが出ます。送信バッファのサイズが小さすぎるようです。下記のコマンドで、送信バッファを大きくすれば解消します。

$ sudo ifconfig can0 txqueuelen 1000

3. bit numberingの不統一

CANの生パケットは8バイトです(これより短くても良いが、説明を簡単にするため、以下8バイトで統一。マツダ車はすべて8バイト)。この8バイトに、色々な情報を詰め込む都合上、CANのデータはほとんどビット単位で語られます。たとえば、「第19ビットが左ウィンカー、第13ビットからの12ビットが回転数」のような感じです。

しかしながら、ビット番号の付け方が、統一されていません。

最終的に自分が使っているcantoolsでは、下記のようになっています(cantoolsのドキュメントより)。思わず「どうしてこうなった…」とつぶやきたくなる規約ですね。



しかし、当初使っていたKayakというツールでは、ビット番号はcantoolsと同じであることは実車のログとICテストベンチで確認できたのですが、長さを数える方向がよく分かりません(kcdファイルを色々書き換えて試したのですが)。Kayakを自分でビルドする際に、何かミスしている可能性もありますが…。

さらに、マツダのSkyActiv世代のCANバスのメッセージを解析した情報を見付けたのですが、これはビット番号が左から0から順に63まで増えて行き、長さは右から左に数えられています。気が向いたら、この方に何のツールで使ったkcdなのか聞いてみたいと思っていますが、とりあえず、自分が扱いたいメッセージについてoffsetを手で変換して使っています。

https://github.com/majbthrd/MazdaCANbus/blob/master/skyactiv.kcd

◆最終的な解析の流れ

最終的には、以下のような流れで解析しています。

- 実車に対してcandumpを実行して採集したログを、canplayerでICテストベンチに対して流してみる
- cansnifferで16進表示したり2進表示したりしながら、ICの表示と見比べて、欲しい情報がどのあたりにあるかを予想する
- その情報だけをcangenで、ICテストベンチに対して流してみて、動作を比較する
- KCDファイルを更新して、実車のログをcantools decodeでデコードしながらICに流して、ICの表示と一致することを確認する。

なお、cantoolsはPythonで書かれているのですが、decodeの処理をちょっと改造して、kcdファイルに記述されているIDのみを表示するようにしています。
ブログ一覧 | 日記
Posted at 2018/06/08 01:07:23

イイね!0件



今、あなたにおすすめ

ブログ人気記事

ル・ボラン カーズ・ミートからのパ ...
yabu3さん

純正シート搬入しました。
つよ太郎さん

カーポート日除けの改良
hajikun2002さん

「ダイソー」
lb5********さん

くろまろくん
avot-kunさん

はっさくもろて。
.ξさん

この記事へのコメント

コメントはありません。

おすすめアイテム

プロフィール

haniliitoです。漢字表記は羽仁理糸。MT車でドライブすることが好きです。ノーマル状態を基本に、ドライブが快適になる方向で少し手を加えるぐらいですが、よろ...
みんカラ新規会員登録

ユーザー内検索

<< 2022/5 >>

1234567
891011121314
15161718192021
22232425262728
293031    

リンク・クリップ

[マツダ ロードスター]Yupiteru Y-400di 
カテゴリ:その他(カテゴリ未設定)
2022/05/04 21:48:48
[マツダ ロードスター]ROBBINS AUTO TOP SFクロス幌 ハイエンド仕様 
カテゴリ:その他(カテゴリ未設定)
2022/03/19 21:27:57
[マツダ ロードスター]ROBBINS AUTO TOP SFクロス幌 ハイエンド仕様 
カテゴリ:その他(カテゴリ未設定)
2022/03/19 21:27:00

愛車一覧

マツダ ロードスター NDロードスター(20万番台) (マツダ ロードスター)
NDロド(6MT)。色はエターナルブルー。2017年12月発売の車台番号20万番台モデル ...
フォード マスタング クーペ Mustang 2005 (USモデル) (フォード マスタング クーペ)
アメリカに住んでいたときに、「この機会にアメリカらしい車に乗ろう!」と思って買った車です ...

過去のブログ

2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
©2022 Carview Corporation All Rights Reserved.