iDoka/awesome-canbus

GitHub: iDoka/awesome-canbus

Stars: 3107 | Forks: 374

# Awesome CAN Bus [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) [![GitHub stars](https://badgen.net/github/stars/iDoka/awesome-canbus)](https://GitHub.com/iDoka/awesome-canbus/stargazers/) [![GitHub forks](https://badgen.net/github/forks/iDoka/awesome-canbus)](https://GitHub.com/iDoka/awesome-canbus/network/) [![GitHub watchers](https://badgen.net/github/watchers/iDoka/awesome-canbus/)](https://GitHub.com/iDoka/awesome-canbus/watchers/) [![GitHub contributors](https://badgen.net/github/contributors/iDoka/awesome-canbus)](https://GitHub.com/iDoka/awesome-canbus/graphs/contributors/) [![GitHub pull-requests merged](https://badgen.net/github/merged-prs/iDoka/awesome-canbus)](https://github.com/iDoka/awesome-canbus/pulls?q=is%3Amerged) [![GitHub latest commit](https://badgen.net/github/last-commit/iDoka/awesome-canbus)](https://GitHub.com/iDoka/awesome-canbus/commit/)

CAN logo

此列表的永久 URL:https://github.com/iDoka/awesome-canbus ## 目录 * [黑客与逆向工程工具](#hacking-and-reverse-engineering-tools) * [测试设备与模拟器](#test-equipment-and-simulators) * [协议](#protocols) * [OBD-II 工具](#obd-ii-tools) * [UDS](#uds) * [ISO-TP](#iso-tp) * [J1939 工具](#j1939-tools) * [J2534 工具](#j2534-tools) * [实用工具](#utils) * [通用](#common) * [Linux 相关](#linux-related) * [GUI 工具](#gui-tools) * [TUI 工具](#tui-tools) * [Python 工具](#python-tools) * [CAN-over-IP](#can-over-ip) * [其他实用工具](#other-utils) * [库](#libraries) * [示例](#examples) * [CAN 数据库](#can-database) * [格式 (DBC, KCD)](#formats-dbc-kcd) * [转换器与解析器](#converters-and-parsers) * [DBC 专用](#dbc-only) * [硬件](#hardware) * [ARM](#arm) * [Arduino](#arduino) * [Espressif Systems (ESP8266, ESP32)](#espressif-systems-esp8266-esp32) * [SBC](#sbc) * [其他硬件](#others-hw) * [硬件相关工具](#hardware-related-tools) ## 黑客与逆向工程工具 * 🔝[CarHackingTools](https://github.com/jgamblin/CarHackingTools) - 常用汽车黑客工具合集,包含一系列脚本以帮助快速启动汽车研究和黑客攻击。 * 🔝[Caring Caribou](https://github.com/CaringCaribou/caringcaribou) - 友好的 CAN 总线汽车安全探索工具。 * 🔝[CAN_Reverse_Engineering](https://github.com/brent-stone/CAN_Reverse_Engineering) - 控制器局域网 (CAN) 协议的自动化负载逆向工程流水线。 * 🔝[carhacking](https://github.com/daedalus/carhacking) - 汽车黑客脚本和文档集合。 * [ReCAN](https://github.com/Cyberdefence-Lab-Murcia/ReCAN) - 控制器局域网逆向工程。 * [parse_can_logs](https://github.com/v-ivanyshyn/parse_can_logs) - 解析 CAN 日志并在图表上可视化数据流。 * [reversegear](https://github.com/linklayer/reversegear) - 汽车网络离线逆向工程工具。 * 🔝[CANalyzat0r](https://github.com/schutzwerk/CANalyzat0r) - 专有汽车协议的安全分析工具包。 * 🔝[CANToolz](https://github.com/CANToolz/CANToolz) - 黑盒 CAN 网络分析框架。 * [GVRET](https://github.com/collin80/GVRET) - 通用电动汽车逆向工程工具 (Arduino 固件)。 * [UDSim](https://github.com/zombieCraig/UDSim) - 统一诊断服务模拟器与模糊测试器 (uds-server 的继任者)。 * [uds-server](https://github.com/zombieCraig/uds-server) - CAN UDS 模拟器与模糊测试器。 * [CANalyse](https://github.com/KartheekLade/CANalyse) - 车辆网络分析与攻击工具。 * [canhack](https://github.com/kentindell/canhack) - 底层 CAN 协议黑客库。 * [canDrive](https://github.com/adamtheone/canDrive) - 汽车黑客工具。 * [Carpunk](https://github.com/souravbaghz/Carpunk) - CAN 注入工具包,CANghost 的继任者。 * [CANghost](https://github.com/souravbaghz/CANghost) - 用于入侵 CAN 总线的自动化脚本。 * [canTot](https://github.com/shipcod3/canTot) - 快速且粗糙的 CAN 总线黑客框架。 * [CANanalyze](https://github.com/renault/cananalyze) - 该框架可用于与 CAN/ISOTP/UDS 等汽车协议进行交互。 * [Scapy](https://github.com/secdev/scapy) - 基于 Python 的交互式数据包操作程序和库。支持 CAN/ISOTP/UDS/GMLAN 以及许多其他协议。 * [CAN-RE-Tool](https://github.com/openvehicles/CAN-RE-Tool) - 基于 CAN 总线通信系统的逆向工程工具。 * 🔝[can-explorer](https://github.com/Tbruno25/can-explorer) - 辅助逆向工程的 CAN 总线可视化工具。 ## 测试设备与模拟器 * [ECU-simulator](https://github.com/lbenthins/ecu-simulator) - 模拟某些车辆诊断服务的工具。它可用于测试支持 UDS (ISO 14229) 和 ISO-TP (ISO 15765-2) 协议的 OBD-II 适配器或测试仪工具。 * [ELM327-emulator](https://github.com/Ircama/ELM327-emulator) - ELM327 模拟器,用于测试通过 ELM327 适配器连接 OBDII 的软件,支持多 ECU 模拟。 ## 协议 ### OBD-II 工具 * [DDT4All](https://github.com/cedricp/ddt4all) - 用于创建自定义 ECU 参数界面并通过廉价的 ELM327 接口连接到 CAN 网络的工具。 * [ELM327SLCAN](https://github.com/qnx425/ELM327SLCAN) - 基于 ELM327 的车辆 CAN 总线嗅探器。 * [Arduino-OBD2-Async](https://github.com/v-ivanyshyn/Arduino-OBD2-Async) - 支持异步数据请求的 Arduino OBD 库。 * [CAN-Shark](https://github.com/quantyle/CAN-Shark) - 在 Arduino + MCP2515 扩展板上处理 OBD PID。 * [OBD2-Scantool](https://github.com/AustinMurphy/OBD2-Scantool) - 用于读取汽车 OBD2 信息的 Python 扫描工具。 * [O2OO](https://www.vanheusden.com/O2OO/) - 符合 OBD-II 标准的汽车诊断工具。它将汽车的传感器数据读入 SQLite 数据库。 * [freediag](https://github.com/fenugrec/freediag) - 针对 OBD-II 兼容机动车辆的免费诊断软件。 * [pyvit](https://github.com/linklayer/pyvit) - Python 车辆接口工具包 _(已归档)_。 ### UDS _ISO 14229 标准_ * [python-UDSonCAN](https://github.com/pylessard/python-udsoncan) - UDS ISO-14229 标准的 Python 实现。 * [uds-c](https://github.com/openxc/uds-c) - 统一诊断服务 (UDS) 和 OBD-II C 语言库。 * [iso14229](https://github.com/driftregion/iso14229) - 面向嵌入式系统的 UDS ISO-14229 服务器和客户端的 C 语言实现。 ### ISO-TP _ISO 15765-2 标准_ * [isotp-c](https://github.com/openxc/isotp-c) - C 语言实现的 ISO-TP (ISO15765-2) CAN 协议。 * [python-can-IsoTP](https://github.com/pylessard/python-can-isotp) - ISO-TP (ISO15765-2) CAN 协议的 Python 实现。 * [CanTp](https://github.com/Sauci/CanTp) - 根据 AUTOSAR 规范 v4.4.0 实现的 CanTp 模块 (ISO 15765-2)。 * [aioisotp](https://github.com/christiansandberg/aioisotp) - 适用于 asyncio Python 的 ISO-TP 实现。 ### J1939 工具 _SAE J1939 标准_ * [J1939-CANBUS](https://github.com/taha842/J1939-CANBUS) - 支持的发动机包括 CAT, Perkins, Wartsalla, MTU, VOLVO。 * [J1939-Framework](https://github.com/famez/J1939-Framework) - 用于处理公交、汽车和卡车行业 CAN 总线中使用的 J1939 帧 的框架。 * [python-j1939](https://github.com/milhead2/python-j1939) - 依赖于 python-can 包的 SAE J1939 支持。提供编解码和按 PGN 过滤功能,但不包含完整的 SPN 解码。 * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - 增加了一些 J1939 额外工具的 can-utils 分支。 * [test-can-j1939](https://github.com/kurt-vd/test-can-j1939) - 如何在 Linux 上使用 CAN J1939。 * [libj1939](https://github.com/paoloteti/libj1939) - 用于处理 J1939 帧 的库 (旨在用于微控制器)。 * [Pretty-J1939](https://github.com/nmfta-repo/pretty_j1939) - 用于美化打印 J1939 日志的 Python 库和脚本。 * [TruckDevil](https://github.com/paoloteti/libj1939) - 用于与在 CANBUS 上使用 J1939 进行通信的 ECU 进行交互和评估的工具及框架。 * [python-can-j1939](https://github.com/juergenH87/python-can-j1939) - 为 Python 开发者提供 SAE J1939 支持的包。 * [Open-SAE-J1939](https://github.com/DanielMartensson/Open-SAE-J1939) - 可免费用于嵌入式系统或带有 CAN-bus 的 PC 的 SAE J1939 协议。 * [embr::j1939](https://github.com/malachi-iot/j1939) - 面向嵌入式 MCU 的精简、便携 J1939 库。 ### J2534 工具 _SAE J2534 标准_ * [j2534-tcp](https://github.com/brandonros/j2534-tcp) - 基于 TCP/IP 的虚拟 J2534 驱动程序。 * [SharpWrap2534](https://github.com/MEAT-Inc/SharpWrap2534) - 终极 J2534 封装套件。 * [gocanflasher](https://github.com/roffe/gocanflasher) - 支持 J2534 的 Trionic 5/7/8 CANbus 刷写工具。 ## 实用工具 ### 通用 * 🔝[cantools](https://github.com/mwkpe/cantools) - CAN 总线网络的命令行 (CLI) 工具集合。 * [BUSMASTER](https://github.com/rbei-etas/busmaster) - 用于模拟、分析和测试数据总线系统 (如 CAN) 的开源软件工具。 * [signalbroker-server](https://github.com/AleksandarFilipov/signalbroker-server) - 使用 gRPC 读取和写入 CAN/LIN/flexray 及其他总线的工具,允许使用首选语言。 * [CANiBUS](https://github.com/Hive13/CANiBUS/) - CAN 设备车辆研究服务器 (OpenGarages.org)。 ### Linux 相关 * 🔝[Linux CAN Utils](https://github.com/linux-can/can-utils) - Linux-CAN / SocketCAN 用户空间实用工具。 * [CAN support in Linux](https://elinux.org/CAN_Bus#CAN_Support_in_Linux) - Linux 内核对 CAN 硬件接口的支持。 * [SocketCAN](https://docs.kernel.org/networking/can.html) - Linux 内核 (内核 >= 2.6)。 * [J1939](https://docs.kernel.org/networking/j1939.html) - Linux 内核支持 (内核 >= 5.4),另请参阅 [can-j1939 kernel module](https://github.com/linux-can/can-utils/blob/master/can-j1939-install-kernel-module.md)。 * [elmcan](https://github.com/norly/elmcan) - 针对 ELM327 设备的 Linux SocketCAN 内核驱动 (内核 >= 6.0)。 * [can-isotp](https://github.com/hartkopp/can-isotp) - 用于 ISO 15765-2:2016 CAN 传输协议的 Linux 内核模块 (Linux 内核 >= 5.10 的一部分)。 * [gs_usb](https://github.com/ryedwards/gs_usb) - 基于 WCID 的 Linux/Windows CAN 驱动程序,适用于 Geschwister Schneider USB/CAN 设备和 candleLight USB CAN 接口。 ### GUI 工具 * [CANdevStudio from GENIVI](https://github.com/GENIVI/CANdevStudio) - 使用拖放式 GUI 和互连功能块的 CAN 仿真软件。 * [CANAL-View](https://github.com/rusoku/CANAL-View) - 用于 TouCAN USB 转 CAN 总线转换器的 Qt GUI。 * [wxCAN-Sniffer](https://github.com/KruFFT/wxCAN-Sniffer) - 带有动画和图表的 CAN 总线嗅探器 (PC 端)。 * [CANLogger](https://github.com/olegel/CANLogger) - CAN 总线记录器和分析器工具。 * [Seeed-USB-CAN-Analyzer](https://github.com/SeeedDocument/USB-CAN-Analyzer/) - 适用于非名牌中国 USB-CAN 适配器的闭源二进制文件。 * [CANtact-app](https://github.com/linklayer/cantact-app) - CANtact 硬件接口的桌面应用程序。 * [SavvyCAN](https://github.com/collin80/SavvyCAN) - 跨平台基于 Qt 的 GUI 分析工具。支持 SocketCAN 兼容接口。 * [openCanSuite](https://github.com/sebi2k1/openCanSuite) - 用于分析、模拟和可视化 CAN 系统的工具集。 * [Plotter and Scanner from SmartGauges](https://github.com/smartgauges/obd2-bt-stm32/tree/master/qt) - 用于汽车系统的扫描和可视化工具。 * [ICSim](https://github.com/zombieCraig/ICSim) - OpenGarages 推出的 SocketCAN 仪表盘模拟器。 * [CANgaroo](https://github.com/HubertD/cangaroo) - 基于 Qt 的 CAN 总线分析软件。 * [CAN-X](https://github.com/karlyamashita/CAN-X) - C# 编写的 CAN 总线分析软件。 * [CAN-Monitor-qt](https://github.com/tixiv/CAN-Monitor-qt) - 通用 CAN 总线监控程序。 * [CANBUS-Analyzer](https://github.com/amund7/CANBUS-Analyzer) - 用于图表、显示和分析已知及未知 CANBUS 数据包的开发工具/配套软件。 * [SLSS-CANAnalyser](https://github.com/SeppHansen/SLSS-CANAnalyser) - SLSS CANAnalyser 是一款 Windows CAN-Bus 分析软件,用于显示、记录和评估 CAN-Bus 信号。 * [TSMaster](https://github.com/TOSUN-Shanghai/TSMaster) - 强大的汽车总线监控、仿真、测试、诊断、校准等开放式环境 _(闭源)_。 * [CAN++](https://github.com/TDahlmann/canpp) - 用于接收和发送 CAN 总线消息的 Windows 程序。导入 CAN 数据库文件 (`*.dbc` 或 `*.kcd`) 后,CAN 信号将以符号形式显示。此外,它们还可以显示为图形 (波形)。 * [CANcool](https://github.com/MHS-Elektronik/CANcool) - 支持 CAN-FD 的 CAN 总线分析器和仿真软件。 * [Kayak](https://github.com/dschanoeh/Kayak) - 基于 Java 的 CAN 流量 GUI 分析工具 _(已归档)_。 * [PlotJuggler](https://github.com/facontidavide/PlotJuggler) - 强大的时间序列可视化工具 (配合 panda 硬件、cabana 和 plotjuggler,您可以在几天内快速完成整车的逆向工程)。 * [PlotJuggler::CAN-dbs](https://github.com/PlotJuggler/plotjuggler-CAN-dbs) - 在 PlotJuggler 中可视化 CAN .dbs (或 .dbc?) 文件的插件。 * [OpenSourceLogger](https://github.com/DanielMartensson/OpenSourceLogger) - 数据采集软件,可收集测量数据、分析 CAN 消息并向其他 ECU 发送 SAE-J1939 消息。 * [EcuBus-Pro](https://github.com/ecubus/EcuBus-Pro) - 强大的汽车 ECU 开发工具。支持 UDS, CAN-TP, DOIP, LIN , Script(TS) (类似 CAPL)。 * [Novo Bus Analyzer](https://github.com/reymor/novobusanalyzer) - BUSMASTER 的分支 (BUSMASTER 是用于模拟、分析和测试数据总线系统 (如 CAN) 的开源软件工具)。 * [bootCAN](https://github.com/friessssss/bootCAN) - 允许监控、跟踪和绘制消息,以及 .SYM 解码和消息发送。 ### TUI 工具 * [socanui](https://github.com/miwagner/socanui) - 终端下的 SocketCAN 用户界面。 ### Python 工具 * 🔝[cantools](https://github.com/cantools/cantools) - Python 中的 CAN BUS 工具。 * 🔝[python-can](https://github.com/hardbyte/python-can) - CAN 包为 Python 开发者提供控制器局域网支持。 * [strym](https://github.com/jmscslgroup/strym) - 实时 CAN 数据记录和可视化工具,适用于 USB-CAN 接口。 * [canviewer](https://github.com/tsabelmann/canviewer) - 用于检查传入 can-bus 消息的 GUI 程序,支持来自记录的 can-bus 数据或实时数据。 * [can4python](https://github.com/caran/can4python) - 用于处理 Linux SocketCAN 上 CAN 总线信号的包。 * [Python-Vector-CANoe](https://github.com/hmq2018/Python-Vector-CANoe) - 通过 Python 控制 Vector CANoe API。 * [CanCat](https://github.com/atlas0fd00m/CanCat) - 常用于汽车和楼宇自动化等的 CAN 瑞士军刀。 * [Pyfuzz_can](https://github.com/bhass1/pyfuzz_can) - 可用于研究,向卡车注入消息并导致加速、仪表盘欺骗和制动性能下降。 * [Robotell-USB-CAN-Python](https://github.com/nopnop2002/Robotell-USB-CAN-Python) - 适用于 Robotell USB-CAN 适配器的 Python 程序。 * [python-socketcan-monitor](https://github.com/P1kachu/python-socketcan-monitor) - 通过网络接口显示 CAN 总线数据的脚本。 * [CanoPy](https://github.com/tbruno25/canopy) - 用于实时可视化和绘制消息负载的 Python GUI。 * [PythonVectorXL](https://github.com/Prindl/PythonVectorXL) - 完整的 Vector XL 驱动库 Python ctypes 封装库。包含 'vxlapi.h' 的 #define 指令、struct/union typedef 指令和函数定义 (也会加载 DLL) _(仅限 Windows)_。灵感来自 `python-can`。 * [py4can](https://github.com/SikkandarSulaiman/py4can) - 通过 CANalyzer 发送和接收 CAN 消息的 Python 实用工具。 ### CAN-over-IP * [cannelloni](https://github.com/mguentner/cannelloni) - 基于以太网的 SocketCAN 隧道。 * [tincan](https://github.com/mwkpe/tincan) - 通过 UDP 接口可视化 CAN 总线流量。 * [pican](https://github.com/ovravna/pican) - TCP CAN 读取器。 * [canny](https://github.com/m10k/canny) - 简单的 CAN-over-IP 网关。 ### 其他实用工具 * [Seeed-USB-CAN-Linux](https://github.com/alexmohr/usb-can) - 非名牌中国 USB-CAN 适配器的 CLI Linux 支持。 * [opendlv-device-can-replay](https://github.com/chalmers-revere/opendlv-device-can-replay) - 将捕获的 CAN 帧重放到 CAN 接口的 OpenDLV 微服务。 * [c0f](https://github.com/zombieCraig/c0f/) - CAN 总线指纹识别工具,旨在分析 CAN 总线流量并指纹识别制造商和型号。 * [canqv](https://github.com/kurt-vd/canqv) - 使用 CAN_RAW 进行快速 CAN 帧检查。 * [Candle.NET](https://github.com/elliotwoods/Candle.NET) - candlelight CAN 总线网关/分析器 (如 CANable, CANtact 等) 的 Candle API 的 .NET 封装。 * [canSerializer](https://github.com/zainahm3d/canSerializer) - 用于序列化和反序列化 CAN 帧以便通过非 CAN 传输层传输的库 (可用于通过 UART, SPI 等传输 CAN 帧)。 ### 库 * [libwecan](https://github.com/nisennenmondai/libwecan) - 仅头文件库,用于编码和解码 CAN 信号。 * [VCAN](https://github.com/TheMatjaz/VCAN) - C 语言编写的小型虚拟 CAN 和 CAN-FD 总线库。 * [IMCTFD](https://github.com/tonton81/IMCTFD) - 改进版 Microchip CAN Teensy FlexData 库 MCP2517FD。 * [go-socketcan](https://github.com/linklayer/go-socketcan) - SocketCAN 的 Golang 库。 * [Qt CAN Bus](https://doc.qt.io/qt-5/qtcanbus-backends.html) - 多平台 C++ 插件式库,支持各种 CAN 设备 (SocketCAN, Sys Tec, PEAK, Virtual)。 * [JavaCAN](https://github.com/pschichtel/JavaCAN) - SocketCAN 的 Java 绑定库,支持使用基于 epoll 的事件驱动 IO 的 RAW, BCM 和 ISO-TP 套接字。 * [iso15765-canbus](https://github.com/devcoons/iso15765-canbus) - C 语言实现的 ISO15765-2。 ### 示例 * [CAN-Examples](https://github.com/craigpeacock/CAN-Examples) - Linux 上 CAN 套接字的 C 代码示例。 * [socketcan-demo](https://github.com/zhanglongqi/socketcan-demo) - 一组示例程序,重点介绍如何在 Linux 上使用 SocketCAN。 ## CAN 数据库 ### 格式 (DBC, KCD) #### DBC DBC - CAN 数据库事实上的标准是 Vector Informatik GmbH 开发的 DBC 文件格式。它是一种专有格式,没有官方的公开文档或规范。 * [DBC Format Specification v1.0](http://read.pudn.com/downloads766/ebook/3041455/DBC_File_Format_Documentation.pdf) - 泄露的 DBC 文件格式规范 v1.0 (已过时的规范)。 * [DBC Format](http://socialledge.com/sjsu/index.php/DBC_Format) - 关于各部分的简要说明、许多示例,并很好地解释了复用信号。 * [DBC File Explained](https://www.csselectronics.com/screen/page/can-dbc-file-database-intro/language/en) - DCB 文件格式简介。 * [J1939 and DBC introduction](https://www.kvaser.com/developer-blog/an-introduction-j1939-and-dbc-files/) - J1939 和 DBC 文件简介。 * 🔝[cabana](https://github.com/commaai/cabana) - CAN 可视化工具和 DBC 生成器 (一种为查看原始 CAN 数据而开发的工具;其用途之一是创建和编辑 CAN 字典 (DBC 文件))。 #### KCD * [KCD](https://github.com/julietkilo/kcd) - 一种描述 CAN 中通信关系的开放格式。类似于 DBC 格式,但使用 XML 编写。 ### 转换器与解析器 * 🔝[cantools by Erik Moqvist](https://github.com/eerimoq/cantools) - Python 中的 CAN 工具,用于 DBC, KCD, SYM, ARXML 4 和 CDD 文件解析。 * [cantools by Andreas Heitmann](https://github.com/aheit/cantools) - 用于处理 ASC, BLF, CLG, VSB, MDF 和 DBC 文件的库和命令行工具集。 * [CanDB](https://github.com/skysky97/Candb) - 使用 OEM 定义的 CAN 矩阵 生成 CAN dbc 文件。 * [canmatrix](https://github.com/ebroecker/canmatrix) - 转换 CAN 数据库格式 .arxml .dbc .dbf .kcd。 * [CANBabel](https://github.com/julietkilo/CANBabel) - 多种 CAN 描述格式的转换器 (支持 KCD 读写和 DBC 读取)。 * [can4python](https://github.com/caran/can4python) - 用于显示 KCD 文件内容 (也包括从 DBC 文件转换而来的文件) 的实用包。 * [dbcc](https://github.com/howerj/dbcc) - 使用 mpc 解析器组合器库将 DBC 转换为 C (以及 CSV, JSON 和 XML) 的编译器。 * [convert_dbc_to_cpp_file](https://github.com/jobgeodev/convert_dbc_to_cpp_file) - 将 dbc (canbus) 转换为 cpp (cplusplus) 函数的实用工具。 ### DBC 专用 * [Vector DBC](https://bitbucket.org/tobylorenz/vector_dbc) - 从 Vector Informatik 访问 CAN 数据库 (也称为 CANdb 或 DBC 文件) 的库。 * [dbcppp](https://github.com/xR3b0rn/dbcppp) - C/C++ DBC 文件解析器/工具。 * [can_decoder](https://github.com/CSS-Electronics/can_decoder) - 使用 DBC CAN 数据库将原始 CAN 总线数据解码为物理值的 API 模块。 * [CANdb from GENIVI](https://github.com/GENIVI/CANdb) - 用于解析 DBC - CAN 总线数据库描述格式的库。 * [dbc-parser](https://github.com/msalau/dbc-parser) - 用于 DBC 文件的 Flex/Bison/Lemon 解析器/扫描器。 * [Vector CANdb++ DBC file parser](https://github.com/kdschlosser/vector_dbc) - eerimoq 的 dbc 文件解析器的修改版本。 * [dbc_reader](https://github.com/autti/dbc_reader) - 从 dbc 文件读取的虚拟 can 总线读取器。 * [CAN_BUS_DBC_VIEWER](https://github.com/akshaych92/CAN_BUS_DBC_VIEWER) - 基于 GUI 的 CAN 总线 dbc 查看器。 * [dbcview](https://github.com/driftregion/dbcview) - DBC 可视化工具 - 绘制由消息链接的发送和接收节点的图表。 * [VectorDbChecker](https://github.com/Golyshkin/VectorDbcChecker) - Vector DBC 检查器,一个 Python GUI 应用程序,用于检查 DBC 文件中是否存在消息重复、缺少网络节点、消息中信号重叠等问题。 * [pydbc](https://github.com/Sauci/pydbc) - dbc 格式的 AST 生成器。 * [pydbc](https://github.com/christoph2/pydbc) - 处理车辆网络描述 (CAN .dbc 文件)。 ## 硬件 各种类型的硬件,如 CAN 总线 USB2CAN 加密狗、记录器、嗅探器、适配器等。 ### ARM * [USB_CAN-FD on ATSAME51](https://github.com/RudolphRiedel/USB_CAN-FD) - 这是一个开源硬件 USB 转 CAN-FD 接口 (ATSAME51J)。 * [SuperCAN](https://github.com/jgressmann/supercan) - 开源 USB 转 CAN-FD 协议固件 (ATSAME51)。 * [FlexCAN](https://github.com/collin80/FlexCAN_Library) - Teensy 3.1, 3.2, 3.5 和 3.6 的 Arduino CAN 库。 * [ELM327](https://github.com/ObdDiag-Net/allpro) - 基于 LPC1517JDB48 的开源 ELM327 OBD 适配器。 * [Open-OBD2-datalogger](https://github.com/arturlangner/Open-OBD2-datalogger) - NXP Kinetis E 数据记录器,可将实时引擎数据保存到 SD 卡 (可视化通过 HTML5 和 JavaScript 完成)。 * [CANBootloader](https://github.com/596142041/CANBootloader-Qt) - GUI + CAN 引导加载程序协议。 * [PiCCANTE](https://github.com/Alia5/PiCCANTE) - 基于 Raspberry Pi Pico (1|2|W) 的开源 CAN 黑客工具 - 最多 3 个 CAN 接口,包含 ELM327 模拟器。 #### STM32 * 🔝[panda](https://github.com/commaai/panda) - 它支持 3x CAN, 2x LIN 和 1x GMLAN (并在主机端通过 USB 支持 J2534)。它使用 STM32F413 (将 panda 与 cabana 配合使用提供了最好的 CANBUS 逆向工程和开发套件)。 * 🔝[STM32duino_CAN_Library](https://github.com/adamczykpiotr/STM32duino_CAN_Library) - 适用于 STM32duino 上运行的 STM32F103 的 CanBus 库。 * 🔝[pcan_pro_x](https://github.com/moonglow/pcan_pro_x) - 适用于基于 STM32F4 的板卡的 PEAK PCAN PRO/PRO FD 固件。 * [CANnon](https://github.com/mxcd/CANnon) - 适用于 STM32 及其兼容板的通用 CAN 引导加载程序。 * [hadoucan-fw on STM32H750](https://github.com/suburbanembedded/hadoucan-fw) - 基于 SM-1301 USB-CAN FD 适配器的固件。 * [CANCAN](https://github.com/DDolphin/CANCAN) - 基于 STM32F407ZGTx 的 CAN 记录器。 * [stm32-CAN-bus-example-HAL-API](https://github.com/timsonater/stm32-CAN-bus-example-HAL-API) - 使用更新的 HAL API 函数在两个 STM32 微控制器之间进行 CAN 总线通信的简单示例。 * [CAN-to-USB-lawicel-for-stm32](https://github.com/kolyandex/CAN-to-USB-lawicel-for-stm32) - 基于 STM32F103 的使用 Lawicel/Canhacker 协议的 CAN 转 USB 适配器。 * [stm32-slcan](https://github.com/walmis/stm32-slcan) - 适用于基于 STM32f103C8T6 的 BluePill 的 SLCAN 兼容固件。 * [cantact-pro-hw](https://github.com/linklayer/cantact-pro-hw) - CANtact Pro 的硬件,使用 [cantact-pro-fw](https://github.com/linklayer/cantact-pro-fw) 作为固件。 * [STM32-CAN-Busadapter](https://github.com/IvanDev2018/STM32-CAN-Busadapter) - MCU stm32f303cb 上的 CAN 适配器。 * [Ethernet-CAN converter](https://github.com/MikhailBerezhanov/cncu-01) - 基于 STM32F407。 * [CANBUS_UART](https://github.com/Oktay97/Canbus_Uart) - STM32F1 (BluePill 和 Nucleo 板) 的 CANBUS 转 UART。 * [Arduino-STM32-CAN](https://github.com/nopnop2002/Arduino-STM32-CAN) - Arduino Core STM32 的 CAN 通信示例。 * [eXoCAN](https://github.com/exothink/eXoCAN) - STM32F103 (即 Blue Pill) 的 CAN 库。 * [CAN-BUS-Man-In-The-Middle](https://github.com/damienmaguire/CAN-BUS-Man-In-The-Middle) - 基于 STM32F105 的双通道 CAN MitM 设备。 * [CAN-Bus-Arduino_Core_STM32](https://github.com/seeers/CAN-Bus-Arduino_Core_STM32/blob/master/CanLowlevel.ino) - Arduino Core STM32 的底层 CanBUS 示例。 * [BudgetCANv2](https://github.com/ryedwards/budgetcan_fw) - 用于 STM32 微控制器的固件,使用 STM32 HAL 实现 FDCAN 和 USB。在 [BudgetCANv2-HW](https://github.com/ryedwards/BUDGETCANFD_G0-Hardware) 上测试。 * [CanDybugFW](https://github.com/IntergatedCircuits/CanDybugFW) - CanDybug 的嵌入式固件,一种 CAN 总线流量分析器,通过 USB 串口仿真使用自定义协议 (STM32F302/STM32F042)。 * [CAN-USB-dongle-fw](https://github.com/cvra/CAN-USB-dongle-fw) - CVRA CAN 转 USB 加密狗的 slcan 固件 (STM32F302)。 * [zubax_babel](https://github.com/Zubax/zubax_babel) - 高性能 CAN-USB/CAN-UART 适配器 + UAVCAN 开发板 (STM32F37x)。 * [CAN-RS485-adapter](https://github.com/YuriyLogvin/CAN-RS485-adapter) - CAN-RS485 适配器 (STM32F103)。 * [vector_can](https://github.com/moonglow/vector_can) - 适用于廉价 STM32F407/405 硬件的 Vector VN1610 协议实现 (双 CAN 通道)。 * [CAN_OMEGA](https://github.com/zjlywjh001/CAN_OMEGA) - 基于 STM32F411 的终极汽车黑客 CAN 总线硬件。包含全功能 [firmware](https://github.com/zjlywjh001/CAN_Omega_Firmware) & [software](https://github.com/zjlywjh001/CAN_OMEGA_Tools)。 #### STM32F0x2 相关硬件 * [candleLight_fw](https://github.com/candle-usb/candleLight_fw) - 兼容 candleLight, cantact, canable, CANAlyze, VulCAN 的固件。 * [CANsniffer on STM32F042](https://github.com/majbthrd/CANsniffer) - 比现有商业产品更简单的 CANbus 嗅探器。 * [candleLight](https://github.com/HubertD/candleLight) - 基于 STM32F0 的 usb-can 适配器 KiCAD 项目。 * [cantact-hw](https://github.com/linklayer/cantact-hw) - CANtact 工具的硬件设计文件,使用 [cantact-fw](https://github.com/linklayer/cantact-fw) 作为固件源。 * [cantact](https://github.com/linklayer/cantact/) - CANtact 工具的驱动程序和命令行界面。 * [USB2CAN](https://github.com/roboterclubaachen/usb2can) - 紧凑且隔离的 USB 转 CAN 适配器。 * [CANAlyze](https://kkuchera.github.io/canalyze/) - Linux 的开源原生 CAN 接口,可完全使用开源工具构建,使用 [canalyze-fw](https://github.com/kkuchera/canalyze-fw) 作为固件源。 * [Cantact FW](https://github.com/x893/cantact-fw) - x893 开发的 Cantact 固件。 * [ELM329](https://github.com/ObdDiag-Net/elm329) - 基于 STM32F042 的开源 ELM329 OBD 适配器。 * [OBD2CAN](https://github.com/autosportlabs/OBD2CAN) - 任何符合 OBD2 标准的车辆与 CAN 总线接口之间的网桥 (固件针对 STM32F072,并使用 ChibiOS 作为 RTOS)。 * [pcan_cantact](https://github.com/moonglow/pcan_cantact) - 适用于 CANtact (CANable) 或任何其他基于 STM32F042 的类似板卡的 XCAN 固件。 * [kvaser_cantact](https://github.com/moonglow/kvaser_cantact) - 适用于 CANtact/CANable 或任何其他基于 STM32F042 的类似板卡的 Xvaser LL v2 固件。 ### Arduino * 🔝[arduino-canhacker](https://github.com/autowp/arduino-canhacker) - Arduino + MCP2515 上的 CanHacker (lawicel) CAN 适配器。 * [open-usb-can from Fabio Baltieri](https://github.com/fabiobaltieri/open-usb-can) - 基于 ATMega32U 和 MCP2515 的 CAN 转 USB 加密狗。 * [Arduino-CAN-bus-SD-logger](https://github.com/DieselDuz42/Arduino-CAN-bus-SD-logger) - 将 CAN 总线信息记录到 SD 卡的 Arduino 脚本。主要关注 J1939。 * [Arduino-canbus-monitor](https://github.com/latonita/arduino-canbus-monitor) - 基于 arduino 和 can bus shield 的 CAN 总线监控工具。实现兼容 Lawicel CAN232/CANUSB 的 CAN ASCII/SLCAN 协议。 * [Arduino-psa-comfort-can-adapter](https://github.com/ludwig-v/arduino-psa-comfort-can-adapter) - 在旧 BSI CAN-BUS (CAN2004) 上操作新 PSA (标致, 雪铁龙, DS, 欧宝) 舒适设备的 Arduino 草稿图。 * [epasuino](https://github.com/srenner/epasuino) - 基于Arduino 的汽车车速感应式电动助力转向。 * [carfuino](https://github.com/srenner/carfuino) - 基于 Arduino 的集成 Megasquirt 的汽车性能计算机。 * [W203-canbus](https://github.com/rnd-ash/W203-canbus) - 适用于 W211/W219 W203/W209 梅赛德斯 (蓝牙音频控制等) 的 Arduino 项目。 * [CANBus-Triple](https://github.com/CANBus-Triple/CANBus-Triple-Hardware) - 基于 AVR 和 MCP2515 的汽车黑客平台,配合 [this firmware](https://github.com/CANBus-Triple/CANBus-Triple) 使用。 * [GVRET](https://github.com/collin80/GVRET) - 通用电动汽车逆向工程工具 (Arduino 固件)。 * [open-source-can-bridge](https://bitbucket.org/emile_nijssen/open-source-can-bridge) - 基于 Xmega 的具有多个 CAN 接口的网关。 * [arduino-mcp2515](https://github.com/autowp/arduino-mcp2515) - Arduino MCP2515 CAN 接口库。 * [slcanuino](https://github.com/kahiroka/slcanuino) - Arduino CAN-BUS 扩展板的 USB-CAN (SocketCAN) 草稿图。 * [CITM02](https://github.com/BXProject/CITM02) - CAN In The Middle (CITM),基于 Arduino 构建的双通道 CANBUS 适配器。 * [arduino-OBD2](https://github.com/sandeepmistry/arduino-OBD2) - 用于通过 CAN 总线从汽车读取 OBD-II 数据的 Arduino 库。 * [arduino-ecu-logger](https://github.com/ihaque/arduino-ecu-logger) - 基于 Arduino 的 OBD2 引擎监控器和数据记录器。 ### Espressif Systems (ESP8266, ESP32) * [ESP-IDF-CANBus-Monitor](https://github.com/nopnop2002/esp-idf-CANBus-Monitor) - ESP32 Canbus 流量监控器。 * [connected-car](https://github.com/marmotton/connected-car) - 将日产 e-NV200 (或 Leaf) 连接到 MQTT。 * [PSASteeringWheelAdapter](https://github.com/morcibacsi/PSASteeringWheelAdapter) - 基于ESP32 的标致和雪铁龙汽车方向盘适配器。 * [esp32-slcan](https://github.com/mintynet/esp32-slcan) - ESP32 slcan 兼容设备。 * [esp32s3-slcan](https://github.com/Pacerino/TWAI_SLCAN) - ESP32-S3 的 SLCAN 实现 (基于 [esp32-slcan](https://github.com/mintynet/esp32-slcan))。 * [ESP32-Arduino-CAN](https://github.com/miwagner/ESP32-Arduino-CAN) - ESP32 的 Arduino CAN-Bus 库。 * [ESP32_CAN_Interface](https://github.com/PhilippFux/ESP32_CAN_Interface) - ESP32 的无线 CAN 接口,使用 cannelloni 协议通过 Wi-Fi 隧道 (UDP) 发送 CAN 帧。 * [esp32_canbus_gateway](https://github.com/vigoballak/esp32_canbus_gateway) - 在 esp32 + tja1050 上用 micropython 编码的 CAN 模块。 * [esp32-cantroller](https://github.com/neg2led/esp32-cantroller) - 基于 ESP32-S2-WROVER/WROOM 的 CANBUS 控制器。 * [esp32-canbus-logger](https://github.com/scipioni/esp32-canbus-logger) - 基于 ESP32 的 uSD 卡 CAN 总线记录器。 * 🔝[ESP32_CANViewer](https://github.com/Cellgalvano/ESP32_CANViewer) - 基于ESP32 的 Web 浏览器 CAN 接口。 * [esp-idf-can2http](https://github.com/nopnop2002/esp-idf-can2http) - 使用 ESP32 的 CANbus 到 http 网桥。 * [esp32-obd2-emulator](https://github.com/limiter121/esp32-obd2-emulator) - 基于 ESP32 + CAN 收发器 IC 的开源 OBD-II 模拟器,可通过 WiFi 通过简单的 Web UI (或 API) 进行控制。 * [ESP32RET](https://github.com/collin80/ESP32RET) - 基于 ESP32 板卡的 CAN 逆向工程工具 (无人维护)。 * [ESP32S3RET](https://github.com/MagnusThome/ESP32S3RET) - 基于 ESP32-S3 板卡的 CAN 逆向工程工具。 * [esp32_obd2](https://github.com/MagnusThome/esp32_obd2) - 运行在支持较新 ESP32-S3 的 esp32_can 库之上的简化 OBD2 层 (Arduino 库)。 * [ESP32BD2_Emulator](https://github.com/MagnusThome/ESP32_OBD2_Emulator) - 运行在 ESP32-S3 上的简单 OBD2 汽车模拟器 (使用虚拟数据回复所有 OBD2 请求)。 * [RejsaCAN-ESP32](https://github.com/MagnusThome/RejsaCAN-ESP32) - 带有 CAN 接口的 ESP32-S3 板。 * [RejsaCAN-ESP32-C6](https://github.com/MagnusThome/RejsaCAN-ESP32/tree/main/Code%20Examples/RejsaCAN%20v6.x%20-%20ESP32-C6%20-%20DUAL%20CAN%20self%20test) - 经测试可在内置两个 CAN 控制器的新型 ESP32-C6 上运行的示例代码。 * [CAN-wizard](https://github.com/okhsunrog/can_wizard) - esp32/esp32-c3 + SN65HVD230 上的 CAN 总线嗅探器。使用 ESP-IDF 开发并实现串行控制台。 ### SBC **SBC** - 单板计算机。 * [beaglebone_black_socketcan](https://github.com/BlueAndi/beaglebone_black_socketcan) - 如何通过 socketcan 接口访问 BeagleBone Black 上的 CAN 总线。 * [rpi-can-logger](https://github.com/JonnoFTW/rpi-can-logger) - 从 PiCAN2 和 GPS 模块记录 CAN 总线数据的项目。 * [CANoPi](https://github.com/SushiBits/CANoPi) - Raspberry Pi Zero 的 CAN 接口。 ### 其他硬件 * [Microchip CAN BUS Analyzer on PIC18F2550/PIC18F2680 Firmware](https://github.com/rkollataj/mcba_firmware) - Microchip CAN BUS 分析仪固件。 * [Microchip CAN BUS Analyzer on PIC18F2550/PIC18F2680 Driver](https://github.com/rkollataj/mcba_usb) - Microchip CAN BUS 分析仪工具的 Linux 内核驱动。 * [BB-to-STM32](https://github.com/mvollrath/canbus_bbone_stm32) - BeagleBone Black 和 STM32F4 Discovery 板之间的 LED 同步。 * [elm327_clone](https://github.com/darkspr1te/elm327_clone) - 用于中国克隆版 OBD2 中 pic18f25k80 芯片的 ELM327 固件。 ### 硬件相关工具 * [CAN Bus Bit Timing Calculator](https://www.kvaser.com/support/calculators/bit-timing-calculator/) - 针对过时 SJA1000 和 MCP2510 的在线工具 (可能适用于 MCP2515)。 * [Bit Timing Calculator for CAN FD](https://kvaser.com/support/calculators/can-fd-bit-timing-calculator/) - 针对通用 CAN FD 设备计算详细位定时参数的在线工具。 * [STM8S208 CAN Speed Calculator](https://github.com/iDoka/STM8S208-CAN-Speed-Calculator) - STM8 的 CAN 速度计算器 (可能也适用于 STM32 系列)。 * [STMG431 FDCAN SOLVER](https://phryniszak.github.io/stm32g-fdcan/) - 用于计算 STM32G4 位定时参数的在线工具 (可能兼容 STM32G0)。 ## 贡献 * 随时欢迎您的贡献!请先阅读 [贡献指南](contributing.md)。 ## 脚注 1. 请关注 [此处](https://github.com/iDoka/awesome-canbus) 的根仓库以获取最新更新。 2. 另一份精彩的列表 :arrow_forward: [CAN ID collections](https://github.com/iDoka/awesome-automotive-can-id) :arrow_backward: 也可能有用。 3. [此精选列表](https://github.com/iDoka/awesome-linbus) 可能也很有用,其中包含用于 LIN 总线逆向工程、LIN 硬件开发和调试的精选工具和资源。