• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+
イイね!
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件



今、あなたにおすすめ

ブログ人気記事

レインモンスター スライダー 製品 ...
ニシヤンさん

5月1日!‥(2025/05/01 ...
hiro-kumaさん

連休だからこそ、洗車してる暇がない ...
ウッドミッツさん

サーモン祭り^_^
b_bshuichiさん

ゾロ目
ヒカルプカさん

遣られたぁ😨⤵️
KP47さん

この記事へのコメント

コメントはありません。

プロフィール

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

ユーザー内検索

<< 2025/5 >>

    123
45678910
11121314151617
18192021222324
25262728293031

リンク・クリップ

チキチキ!燃料残量チキンレース!真の残量調査レポ 
カテゴリ:その他(カテゴリ未設定)
2025/03/29 18:54:29
ロードスターの雪道性能 
カテゴリ:その他(カテゴリ未設定)
2025/01/15 02:46:12
[マツダ ユーノスロードスター]自作 トランクキャッチにはめ込むフック 
カテゴリ:その他(カテゴリ未設定)
2025/01/15 02:09:34

愛車一覧

マツダ ロードスター 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月
ヘルプ利用規約サイトマップ

あなたの愛車、今いくら?

複数社の査定額を比較して愛車の最高額を調べよう!

あなたの愛車、今いくら?
メーカー
モデル
年式
走行距離(km)
© LY Corporation