tylerharvey/Ioniq5_CAN
GitHub: tylerharvey/Ioniq5_CAN
该项目通过对 Hyundai/Kia E-GMP 平台车型的 CAN 总线进行逆向工程,为 Ioniq 5/6 和 EV6 提供开源的手动电池预热硬件套件及配套固件。
Stars: 38 | Forks: 1
# 目的
我们已经为完全开源的 Ioniq 5/6/EV6 预热按钮开启了预售,该按钮可以通过硬件改装套件来实现。本仓库旨在记录 Ioniq 5 CAN 逆向工程的进展,以及该套件硬件和软件的状态更新。
迄今为止的主要贡献者:
- [Liz](https://github.com/L1Z3):固件、CAN 逆向工程
- [Roy](https://github.com/dragz):CAN 逆向工程、原型制作
- [Corbin](https://www.theioniqguy.com):测试、策略、营销、零售、3D 打印
- [Tyler](https://github.com/tylerharvey):核心统筹/产品化
- [Michaël](https://github.com/Tichael):技术审查
- [Kenny](https://www.reddit.com/user/KennyBS167/submitted/):技术审查
- [Thomas](https://www.ioniqforum.com/members/thomas212.6422/):CAN 逆向工程
本项目的其他仓库:
- [手动预热固件仓库](https://github.com/L1Z3/wicant-i-precondition)
- [DBC 格式的已知 CAN 报文](https://github.com/dragz/egmpdbc)
- [基于 ESP 的 DIY 构建](https://github.com/dragz/ironiq)
# 购买方式
预售目前已开放,预计在 6 月底或 7 月初开始发货。如需在美国购买,请访问 [ElectroniqButtons.com](https://www.electroniqbuttons.com)。如需在美国以外地区购买,请在 [Etsy](https://www.etsy.com/listing/4498059167/ioniq-56ev6gv60-manual-preconditioning) 上购买。Etsy 不支持 HTML,因此 [ElectroniqButtons.com](https://www.electroniqbuttons.com) 上的产品页面要清晰得多。建议您先在那里浏览。如果产品页面未能解答您的任何问题,请通过 [info@electroniqbuttons.com](mailto:info@electroniqbuttons.com) 联系我们。如果您确实进行了购买,请填写[此电子邮件表单](https://www.etsy.com/listing/4498059167/ioniq-56ev6gv60-manual-preconditioning),以便我们了解您拥有的车辆信息。
# 基本说明
该套件安装在车载主机正下方,位于主机和车辆其余部分之间。这使得我们的微控制器能够复制或覆盖主机对车辆其余部分发出的任何请求。这使我们能够请求电池管理系统以与主机在使用内置导航时完全相同的方式启动预热。

随附的线束有两种模式:中间人攻击(MITM)(您也可以称之为串联模式),或并联模式。
在中间人模式下,主机在电气上不再连接到允许其与车辆其余部分通信的 CAN 总线,而是与我们的微控制器共存于其自己的小型网络中。微控制器决定向车辆其余部分发送的内容,并且速度足够快,一切都能正常工作。这样做的优点是我们获得了对通信的大量控制权。缺点是,如果移除微控制器,您的主机将无法与车辆的其余部分通信。我们正在定制一款 WiCAN,它将在中间人模式下工作。
在并联模式下,线束位于 CAN 总线上,就好像它只是另一个 ECU 一样。无论微控制器是否接入,主机都能正常与车辆进行通信。这里可以使用任何微控制器来实现您能想到的任何功能,但我们对通信的控制力较弱。我们的公测套件附带标准的 WiCAN 发货,并设计为在并联模式下运行。当定制的 WiCAN 可用时,我们的公测人员将可以选择免费升级到该版本,并且在收到货后只需[将线束模式切换](guides/harnesses/head_unit_MITM/MITM_harness_modes.pdf)为 MITM 即可。在此模式下,我们发送到仪表盘的信息会出现闪烁,因为我们必须与主机争夺控制权,但预热功能可以成功激活。
# 结构
这个套件包含几个关键部分:
- CAN 报文(与车辆通信)
- 用于注入 CAN 报文的微控制器(与车辆通信的盒子)
- 用于该微控制器的固件(盒子的编程)
- 用于使微控制器适配车辆的线束(如何将盒子插入车辆)
- 用户界面(触发预热的按钮)
我们在多个平台上都有上述所有内容的原型版本或更高版本。
按钮操作的视频:
- [dragz 从笔记本电脑触发预热](https://youtu.be/vaBQV_6DW-M?si=8POdBs7m_WmN-vUu)
- [我在 panda 上使用星号按钮触发预热](https://youtu.be/1I849mg2cQ4?si=igR4gxgVAqW1klbn)
- [Liz 展示首个 UI](https://youtu.be/VzLoRYCNTqQ?si=Sd3lELZRXEixEHiz)
# 当前状态
我们已经在 3 种不同的微控制器上、来自 3 个不同市场的 3 辆 Ioniq 5 上、以及一辆美国版的 Ioniq 6 上成功测试了手动预热,并即将在一辆加拿大版的 EV6 上进行测试。库存将在 6 月下旬的某个时候提供并发送给公测人员。
- 
- 
在公测阶段,我们将在标准的 WiCAN-OBD-C3 上搭载 Liz 的 [WiCAN 固件](https://github.com/L1Z3/wicant-i-precondition)。
Roy 正在以 [DBC 文件](https://github.com/dragz/egmpdbc) 的形式收集已知的 E-GMP CAN 总线信息,并基于 Lilygo T-Display S3 [制作了 UI 原型](https://github.com/dragz/ironiq)。
# 历史
1. CAN 报文:
- dragz 和我在 2026 年 3 月初分离出了在 2021-2024 款 E-GMP 车型上启动预热所需的 CAN 报文。Roy 计划托管一个 DBC 文件来收集已知的 CAN 数据帧。
2. 微控制器:
- 我们正在使用一种低成本的预包装微控制器,以便利用现有的工作和开源代码
- 公测单元最初将使用标准的 WiCAN-OBD-C3,随后会收到定制的 WiCAN
- 定制的 WiCAN 已经设计完成,目前正在测试中
3. 固件:
- Liz 和我(主要是 Liz)在一个原型微控制器上有了[可用的固件](https://youtu.be/1I849mg2cQ4?si=igR4gxgVAqW1klbn),详见[此处](https://github.com/tylerharvey/animatronic_panda)
- Liz 成功将逻辑移植到了两个分支的 [WiCAN 固件](https://github.com/L1Z3/wicant-i-precondition) 中
4. 线束:
- 首批库存已从一家线束供应商处订购
- 我们还收到了另一家供应商的样品作为备份,以防出现问题
5. 用户界面:
- Liz 设计了在按下星号按钮时[激活和停用](https://youtu.be/3RfnEo8Xc0o?si=r9ix7-klKYVObkZd)预热的逻辑;未来可能会提供其他用户界面选项
- 我们正在积极探索实体按钮的附加组件
# 商业信息
本着开放的精神,以下是迄今为止有关业务结构的一些基本信息。Electroniq Buttons Boutique LLC 是一家由 Tyler 全资拥有的美国独资有限责任公司。我们已经达成口头协议,从净利润中向主要贡献者支付报酬(如果您想做出重大且持续的贡献,可能还会获得更多此类报酬)。选择这种结构有以下几个原因:
- Tyler 对专业制造的线束和预装的微控制器最感兴趣,这是两项最大的成本,并且他有可用的资金来做到这一点
- 美国的有限责任公司相对容易创立;非营利组织和其他结构需要在对指导性文件和潜在的董事会方面做更多的工作
- 我们谁也没指望能赚大钱;如果我们在这个问题上大错特错,这个结构可能会有所改变
截至 6 月初,该业务已产生大约以下成本:
- 至少 1150 美元的原型/测试费用(例如 WiCAN、pandas、线束样品、手工制作的线束等)
- 7400 美元的库存成本,包括原始的 WiCAN(最大成本)、达到最低订购量的两种线束、安装工具和包装材料;这包括开发定制版 WiCAN 的成本(为保护他人的商业细节而打包在内),但尚不包括生产或运输定制版 WiCAN 的成本
- 500 美元的杂项业务开支
- 500 美元的各种运输费用
Roy、Liz 和 Tyler 迄今为止已经投入了数百小时的劳动力,而 Michaël 也在一个可能被合并的相关项目上投入了大量工作。如果所有现有库存都以 Shopify 或 Etsy 商店目前列出的价格售出,在扣除平台费用后但在扣除任何税款之前,该业务将获得约 14,500 美元的收入。由于我们仍需订购定制的 WiCAN(预计所有公测套件的成本约为 4000 美元),这将剩下大约 1000 美元可用于支付首批库存的人工费用并实现收支平衡。我们希望能在这个项目上最终赚到最低工资,但这可能需要一些时间!
# 内容
本仓库的结构:
## 1. 最小可用的 CAN 报文
两份 CAN 报文日志(为 SavvyCAN 格式,带有以微秒为单位的时间戳),由使用 [SavvyCAN](https://github.com/collin80/SavvyCAN) 和 [WiCAN Pro](https://github.com/meatpihq/wican-fw) 记录的日志过滤/编辑而来,可以发送回配备了电池 PTC 加热器并启用了电池预热模式的 Ioniq 5,以手动[启动](preconditioning_messages/MWE_preconditioning.csv)或[取消](preconditioning_messages/MWE_cancel_preconditioning.csv)预热。这些报文是由 [dragz](https://github.com/dragz) 和我逆向工程得出的。有关更多文档,请参阅 dragz 的[文章](https://github.com/dragz/explorationsincarhacking/tree/main/articles)或我们的 [Ioniq 论坛笔记](https://www.ioniqforum.com/posts/666540/)。
## 2. 最佳真实日志与解析脚本
我包含了两份包含预热激活过程的真实录制日志 [1](CAN_logs/M-CAN_driving_with_nav_preconditioning_at_end_cleaned.csv) 和 [2](CAN_logs/M-CAN_start_nav_to_EA_parked_in_D_preconditioning_cleaned.csv);两份旨在作为对照实验、使用内置导航但未导航至附近充电桩的真实录制日志 [1](CAN_logs/M-CAN_driving_with_nav_to_school_no_preconditioning_including_reroute.csv) 和 [2](CAN_logs/M-CAN_start_nav_to_school_parked_in_D.csv);以及我事后编辑过的解析[脚本](CAN_parsing/parsing_MWE.ipynb),用于展示我为识别最小工作示例(MWEs)所采取的最有价值的解析步骤
## 3. 线束设计
已根据该线束设计制作了样品:

我还附上了用于通过 [wireviz](https://github.com/wireviz/WireViz/) 渲染图纸的[源文件](wiring_harness/M-CAN_dongle_shunt_caps_007-1.yml)。Wireviz 易于学习,适合相当简单的线束,但有一些限制:
- 除了电线之外,没有内置的方法来绘制电阻器或任何其他基本的电路元件
- 除了不可见的拼接外,无法将一根电线直接连接到另一根电线,这让一些供应商感到困惑
## 4. 指南
提供以下书面指南:
- [套件的基本使用](guides/manuals/preconditioning_manual.pdf)
- [线束模式切换](guides/harnesses/head_unit_MITM/MITM_harness_modes.pdf)
- [Ioniq 5 安装](guides/cars/E-GMP_gen1/Ioniq5/head_unit_preconditioning_kit_install.pdf)
# CAN 逆向工程提示/资源
一两个好的日志远比 10 个有问题的日志有价值得多。在识别出我最好的日志并对它们进行清理(例如清除缓冲数据中超出范围的时间戳)之后,我取得了更好的效果。将获取日志视为一项科学实验:你需要一个测试条件和一个对照条件。对于预热而言,这意味着将导航设置为附近的充电桩与附近的学校进行对比。您还可以用已知的报文(例如星号按钮)来标记日志。如果所有其他方法都失败了,绘制大范围报文随时间变化的图表可以提供大量的见解,并有助于识别有趣的数据帧 ID。
通用 CAN 资源:
- [CSS electronics](https://www.csselectronics.com/pages/can-bus-simple-intro-tutorial):许多关于 CAN 的有用入门文章
- [canbus tools](https://github.com/iDoka/awesome-canbus):更好、更全的资源列表
- [OVMS DBC 文件文档](https://docs.openvehicles.com/en/latest/components/vehicle_dbc/docs/dbc-primer.html):DBC 文件结构的基础解释
- [独立版 Cabana](https://github.com/deanlee/openpilot-cabana):用于通用 CAN 逆向工程的 openpilot Cabana 分支
- [kvaser.com](https://kvaser.com/):需要登录,但免费提供各种 CAN 资源
相关项目:
- [手动预热固件仓库](https://github.com/L1Z3/wicant-i-precondition)
- [DBC 格式的已知 CAN 报文](https://github.com/dragz/egmpdbc)
- [基于 ESP 的 DIY 构建](https://github.com/dragz/ironiq)
- [另一个 Ioniq 5 CAN 逆向工程项目](https://github.com/Sterlingarcher2525/ioniq5-can)
- [最初的 Ioniq CAN 逆向工程](https://github.com/philipkocanda/ioniq-can)
- [现代 Kona VESS 逆向工程](https://github.com/ereuter/vess)
# 贡献
欢迎加入 [我们的 Fluxer 服务器](https://fluxer.gg/w0OpDJjG)参与讨论。欢迎提交有关安装指南更改、线束请求或 CAN 解析工具的 PR。
## 来自客户的可返利贡献
欢迎以下贡献,这些贡献可能符合返利条件:
- 提供建议或照片以改进[手册](./guides/manuals/)、[安装指南](./guides/cars/)或产品描述(注:Ioniq 6 和 EV6 指南目前正在完善中)
- 被采纳的针对[固件仓库](https://github.com/L1Z3/wicant-i-precondition)或 [DBC 仓库](https://github.com/dragz/egmpdbc)的 Pull Request
- 实体按钮原型(注:Michaël 目前正在处理此项;请与我们联系以避免重复劳动;这可能会超出返利范畴)
标签:CAN总线, ESP, 云资产清单, 嵌入式硬件, 开源硬件, 汽车电子, 车载系统, 逆向工具, 逆向工程