carbus_lib — 車載バス(CAN/ISO-TP/UDS)非同期スタック

Library

概要

carbus_libは、Pythonで書かれた非同期(asyncio)ベースの車載通信ライブラリで、特にCAN-Hacker / Car Bus Analyzer アダプタ向けに設計されています。ハードウェアとの低レベルなやり取り(CAN/LINの設定、フィルタ、ターミネータ制御など)を行うcarbus_async、CAN上でのISO-TP(ISO 15765-2)を実装するisotp_async、そしてUDS(ISO 14229)を実装したuds_asyncを含みます。さらに、TCPブリッジによる遠隔接続機能を提供し、物理的に接続されていない環境でもアダプタを透過的に扱えます。自動テストやリモート診断ツールのベースに適したモジュール構成が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 7
  • フォーク数: 2
  • ウォッチャー数: 7
  • コミット数: 8
  • ファイル数: 9
  • メインの言語: Python

主な特徴

  • asyncioベースの非同期APIで並列処理・高応答性を実現
  • ISO-TP(シングル/マルチフレーム)とUDSクライアント/サーバを提供
  • CAN-Hacker / Car Bus Analyzerに特化した低レイヤ制御(フィルタやターミネータ)
  • TCPブリッジでネットワーク越しにアダプタを利用可能

技術的なポイント

carbus_libはレイヤ化された設計を採り、ハードウェア制御→トランスポート→診断という階層を分離しています。最下層のcarbus_asyncはアダプタ固有の通信やCAN/LINの設定(ビットレート、フィルタ、ターミネータのオン/オフなど)を非同期で扱い、イベント駆動でフレーム受信を通知します。中間のisotp_asyncはISO 15765-2に従い、単一フレーム・初回フレーム・連続フレーム・フロー制御などを実装し、ペイロードの分割・再構築・タイムアウト処理やウインドウ管理を行います。上位のuds_asyncはISO 14229に基づくUDSサービス(診断セッション管理、リードデータ、セキュリティアクセス、など)をクライアント/サーバ双方で扱うためのAPIを提供し、VIN読み取りなどの典型的な診断タスクをサポートします。全体がasyncioで実装されているため、複数の診断セッションや同時フレーム処理、ネットワーク越しのTCP-bridge経由での接続をスムーズに行えます。TCP-bridgeはアダプタをリモートで公開する役割を持ち、物理的に接続されていないクライアントでもあたかもローカル接続であるかのように扱えます。現状は小規模でコミット数も少なく、実運用向けにはテストやドキュメント、例示コードの充実が望まれますが、プロトタイピングや研究用途には利用価値が高い設計です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • .idea: dir
  • LICENSE: file
  • README.md: file
  • carbus_async: dir
  • isotp_async: dir
  • uds_async: dir
  • tcp_bridge: dir …他 1 ファイル

まとめ

非同期で車載通信(CAN/ISO-TP/UDS)を扱える軽量なライブラリです。

リポジトリ情報:

READMEの抜粋:

car-bus-lib (async CAN / ISO-TP / UDS stack)

Асинхронная библиотека на Python для работы с CAN-адаптером CAN-Hacker / Car Bus Analyzer:

  • 📡 carbus_async – низкоуровневая работа с железкой (CAN/LIN, фильтры, терминаторы и т.д.)
  • 📦 isotp_async – ISO-TP (ISO 15765-2) поверх CAN (single + multi-frame)
  • 🩺 uds_async – UDS (ISO 14229) клиент и сервер (диагностика, чтение VIN и т.п.)
  • 🌐 TCP-bridge – удалённое подключение к адаптеру через сеть (как будто он воткнут …