開源項目解剖:特斯拉 CAN 匯流排協議是怎麼被 20 歐元開發板利用的
发布于 2026-03-31 22:40:28(微信公众号导出记录)。
本文来自公众号后台的“导出文章内容”功能。博客正文由导出长图进行本地 OCR 转写,并保留原始排版图用于逐段核对。
原文链接:查看原文
OCR 转写有效文字约 7245 字;代码、流程图和版式以文末原始排版图为准。
正文(本地 OCR 转写)
開源填目解剖:特斯拉CAN匯流排協是怎被20欧元開發板 利用的 original wθ×7ce EI V1ajero 2826年3月31日 22:40 日本 最近看到GitLab上一個間源项目 tesla-open-can-mod,作者用一增20酸元的間發板接進特斯拉的 CAN匯流排,實现 了FSD敏用、Nag抑制、速度配置等一系列控制项目就明狸有一句話... Tesla Open Can Mod porag Azurnwuog s 1o epose and control everythirg accesstle via CAN as afuly spen project. b no more tan 90 Tris prject eiss so mobcay has to overpe. Warning e ep n se sN p sdnn pusuds unexpected bahavlor, disable safety-crtical sysitems, or pare sBeup .(gu nents. The CAN bus o derstanc whet you're doing, do notimstal ts on your cer. Cautlon ad u0 0 pe u npq peuod ss umnefl sn ty. Mod ifying GIN Ous messages on e vehicie cen leed to unesqpected or dangerous beneviort. hf oftwiere. This project mey roid your wehicie swa os e nof u ev ug sn
tesla open can mode
tebr mor'8 rm hacs 1 torm Dm UCENBE aeI SMU I
3.9
README.rd racs 1 1or
我仔细精完了它的全部源码(handers.h、can_helpers.h、各疆动屠以及单元测试),把 细前微代碾蓬语中提取整理出来。本文所有内容均来源龄封被项目代碼的分析,不涉及任何 到實重的直接逆向操作。 特斯拉的CAN匯流排没有任何加密或證概制所有訊號以明文在匯流排上,任何接入的 装置都船整糖與送。這意味著只需任何一埋有can控制器到率片楼加上一個can收器,就能 透退修改少数摊個 bit 来解辑Full Self-Driving(FSD)功能。本文完整记罐细 的,任何熟悉嵌入式闻發的人都可以基铃此在任意平台自行置作。
一、物理層
项目 规格 598 kb1t/s (CAN 2.8B 椿军帧) 速率 鳞别碼格式 11-bit 华帧,ID 圍ex868-6x7FF 资料最度 固定8位元组(DLC=8) X179 速接器 P1n 13 (CAN-H)、P1n 14 (CAN-L) 接入點(新款) 接入點(离款2020前) X652 速接器 Pin 1(CAN-H)、Pin 2(CAN-L)
二、CAN帧通用結構
每條讯息固定8位元组。Byte0的低3位是MuxID(多工别碼),用来區分同一個 CANID下的不同子规息颈型。 [1] [2] [8] [4] Byte: [E] [5] [6] 低3位=MUX 有效负延(纽接bit码,可跨位元组排列) Bit線性编號规则 全文的bit N均指線性端號,换算方式:Byte 索引x8+Byte内bit 位置(LSB=
0).
综性Bit 能圆 對德位元组 Byte 内 bit 6-7 Byte β 9 - 7 Byte 1 8 -15 67 16 23 Byte 2 67 24 - 31 Byte 3 67 6 -2 Byte 4 67 48 47 Byte 5 67 48 55 Byte 6 67 56 - 63 Byte 7 67
三、涉及的CANID總質
CAN ID Hex 蔬息名 適用車型 操作方向 Legacy 69 STW_ACTN_RQ 只请 0x045 镇+改 921 DAS_status MH 0x399 请+改 1066 θx3EE
- (未命名)
Legacy 1016 8HEX8 HA3 / HN4 UI_driverAss1stControl 只镇 UI_autop1lotControl HA3 / HN4 請+改 1821 Bx3FD 重型就明:
-
Legacy = 竖屏+HM3 的老款 Model S/X
-
HW3=横屏+HN3:以及搭载H4但僵早龄2026.2.9.×的重(跑FSDv13)
-
HW4= HW4硬體+ FSDv14(韧锥 2026.2.9.x以上)
判暨方式:車韩慕Controls+Software→AdditionalVehicle Information可查硬聘版本。
四、速度配置(speedProfile)
speedProfile是整图系最核心的状,控制FSD 的解激造程度,由跟重距雕或操杆位 置决定,再注入回 CAN帕。 HN3 / Legacy(3 级): profile 值 名瓣 触驶凰格 Chill 激进:鞍高速、较少减速 标军行為 Normal 潭行為 1 JnH 保守:鞍低速、提早减速 Hurry 2 HN4 (5 级) : profile 值 名稀 名網 斓驶凰格 潮驶凤格 Chill 最激进 0 标率 Normal 1 KuJnH 2 保守 最保守 Max Stoth 檀保守 4
五、CANID69(0x045)-方向盤报杆位置
限Legacy事型,只镇。老款方向盤报杆的物理位置,用来封癌迹度配置。 同键棚位:Byte 1的高3位(bit5-7),提取方式為data[1]>5。 Byte 1: bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit B pos (3位) pos(高3位) data[1]原始值 映射 speedProfile (n) 8x08 2 (Hurry) 0x21 1 8x42 1 ( Normal ) 2 t9x8 m θ (Ch111 ) S8x8 0 (Chilt) 4 8xA6 θ (Chil ) 5 0xC8 0 (Chill ) 6 规律:pos ≤1 -Hurry;pos = 2 +Normal; pos ≥3 + Chill. 此 ID 收到後不回
六、CANID1016(0x3F8)-跟車距離設定
HN3/HN4共用,只讀。车辆UI的跟车距雕滑样值,用来决定速度配置。 键椭位:Byte 5的高3位(bit 5-7),提取方式为【data[5]否Bb111baeB)> 5. Byte 5: bit 7 bit 6 bit 5 bit 4 bit 3 bit 2bit 1 bit θ followDistance(高3位,值1-5) ENH followDistance speedProfile 2 (Hurry) 1 1 ( Normal ) 2 8 (Ch111) 3 不炭 8或其他 HN4映射: speedProfile followDistance 3 (Max) 1 2 ( Hurry ) 2 1 ( Normal ) 3 8 (Ch111) 4 4 (Sloth) 5 不炭 8或其他 此ID收到後不回發,只用来更新 speedProfile 默感。
七、CANID1006(0x3EE)-Legacy 自動驶控制
催限Legacy 車型。需插截原帖、修改指定bit、再转發回随流排。 Muxθ(data[0]&0x07==θ):FSD用+速度配置 [0] :a1g [s1 [4] [9] [∈] [1] [z] [ 7 ] X=日 bit38 bit46 85-6119 速度配置 FSD糖 F5D Bit(線 遮 操 Byt 含额 性) bit 作 e 0x4 FSDUI還援標:使用者是否用红 只 8 4 6 8 端 燈與停止标缺控制 0x4 置 46 5 6 FSD使位:告新重楠FSD已激活 1 0x0 4950 12 6 速度配置(2bit) 人 6 速度配置的 2-bit 编碼(寡入 data[6]的 bit 1-2): speedProfile data[6] bit 2 data[6] bit 1 data[6]遮罩值 0x00 (Ch111) 8 Bx02 1 ( Normal ) 9 1 0x04 2 ( Hurry ) 1 解發件:bit38為1时才修改亚确段. Mux 1(data[0]&0x07 ==1):Nag 抑制 Byle: [θ] [3] [4] [5] [6] [7] [1] [2] bit19=Nag mUX=1 Bit(線性) Byte 遮罩 操作 含瓣 19 2 3 89x0 清θ 請握住方向:nag提醒 無输FSD是否龄用都必须虚理亚回。
八、CANID1021(0x3FD)-自動完整控制
HN3/HW4共用,这是整個中最被雕的环息,承载所有FSD控制信號。 Mux 0(data[0]&0x07==0):FSD用 Byte: [8] [1] [2] [6] [4] [3] [5] [2] [7] speedoff bit59 b. bit38 bit46 =xnu nUX=θ HN4粤用 MEMH H3还度配置 HW3通 FSD窝 Bit( Byte内 遮 By 含瓣 H4 te 性) bit E 3 速度偏移原始值(6bit,以 8×7 2530 m 16 E 30為零整) E 取 3A 0x4 只 6 8E FSDUI遥操檬 8x4 置 46 FSD 使能 5 6 3 1 8x0 寓 4950 12 HV3速度配置(2 bit) 6 入 0x0 香1(可 59 照急重稀情测 7 3 8 0x1 置1 FSDv14使能(Hk4必须) 60 7 4 3 HW3速度偏移量讀取(Muxθ特有): raw=(data[3]> 1)&0x3F,镜 063, 以 36 為零贴: speedProfile rav值 raw - 30 速度偏移(km/h) 9 (Chill) 31 1 (Normal ) 1 5 2 (Hurry ) 32 10 2 完整轉换公式:speedoffset=clanp((raw-36)x5,0,180) Mux1(data[0]&0x07==1):Nag抑制+ASS解 [8] [2] Byte: [3] [4] [6] [7] [1] [5] bit19=Niag bit47=AS5 [=xnu Byte 内 Byt HW4 含额 性) bit e 罩 6x8 清 19 2 3 8 0 6x8 ASS (Actually Smart Sumno 置 47 7 1 n)地區限制解额 Mux2(data[0]&0x07==2):速度参数注入 HW3-speedoffset 跨位元組注入: 8-b1t 的 speei0ffset(θ-10B)被拆成雨段,分别存入Mux2帧的data[0]和 data[1]: speedoffset (8 bit)=[高6位 HHHHHH][低2位 LL] ↓ data[1] bit 85 data[a] bit B7 片段 遮票 存入位置 0xC0 低 2 位 (LL) data[0] 的 bit 67 JEX8 高 6位(HHHHHH) data[1] 的 bit 85 遇原公式:speedoffsel = ((data[1] & Bx3F]<< 2) | (data[θ] > 6) HN4-speedProfile 直接注入: Byte 7: bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit θ speedProfile (3 bit, 遮墨 8x78) Bit( Byte 遮罩 操作 性) t 离入 3-bit profile, profile << 6862 46 7 4 重要差翼:Hk4的Mux2無缘件轉發,不管FSD是否敏用。HV3的Mux2只在 FSD 故用時才尊貌。
九、CANID921(0x399)-ISA速度蜂鸣抑制
值HN4,可選功能(预股盟)。 ISA(IntelLigent Speed Assistance,智燕速度辅助)是欧盟法规要求的超速蜂略功 能。此功能透過修改 DAS_status 訊息的一bit 来抑制。 [2] [3] [4] [5] [6] [7] [1] Byte: [8] bit5=抑制 校验和 遮罩 操作 含瓣 Bit(螺性) Byte 0x26 置1 41 抑制ISA 超速蜂吗 1 5 9-95 6xFF 重新計算 8-bit 校独和 7 副作用:放用後表板速限标喆圆示登为空白。 校融和演算法 这是整個端中唯一有校瞻和的讯息,其他所有CANID均無完整性校验。 計算步骤:累加 data[8]到data[6](共7個位元组),再加上CANID 921的低 8 位(8x99)與高8位(θx03),取结果的低8位离入data[7]。 計算项目 值 0x99 CAN ID 921 =6x8399 的低 8位 CAN ID 921-6x8399 的高 8位 06X8 雨者相加(固定常数) data[7] = (data[6] + + data[6] + θx9C) & 6xFF 瞻證能例: 原始帧 data =[0x10,6x05,8x08,0x80,0x80,6x90,6x06,7} 修改後 data[1]=6x85|0x20=0x25 校辅和 = 0x16 + Bx25 + Bx98x5+ 0x9C = 0xD1 → data[7] = xD]
十、完整Bit 快速查詢表
線性B Byt 遮 Mu 操 CAN ID 含裁 作 it bit e X 0xE 杆位置pos(data 1315 57 69 1 [1]>>5) 1006 / 1 x8 8X0 清 Nag 抑制(所有重裂) 19 3 2 1 821 8 0x7 16 1021 HW3速度偏移raw值 2530 3 E FSDUI港標( 1066 / 1 ×4 38 4 9 8E 6 條件) 修件) 821 [S ISA蜂喘抑制(HW4可 @×2 置 921 41 5 通) 9 1 @x4 1866 / 1 置 46 FSD使能(所有重裂) 5 6 1 621 6x8 ASS 地区限制解(HW 置 1021 47 5 7 4) 8 1 速度配置bit9(HW3/ 1066 / 1 0x8 49 6 1 821 Legacy) 2 速度配置bit 1(HW3/ 0x8 1006 / 1 50 6 2 Legacy) 821 4 θxC HW3 speed0ffset 低 5455 1021 67 2位 HW3 speedoffset 高 x3 85 5661 1021 1 6位 F 8X0 1021 59 E 7 選) 8 1 θ×1 FSD v14 使能(Hk4必 置 1021 60 7 4 9 9 渠) 1 0×7 46 1021 HW4速度犯置(3bit) 6062 7 2 921 E99S ISA 校验和 7 F
十一、完整工作流程示例
例1:HW4車辆FSD啟用流程 1使用奢在UI效红缘境具停止標社控制; 1車幅 CAN ID 1θ21,MUX B: (1=8E 1q)0x0 -[1e1ep 3開登板掘,晒取 bit 38=1 -FSDEnabled = truc 降改:cata[5] 1= 0x40(b1t 46,FSD 使) data[7] |= Bx18 (bit 69, FsD v14) data[7]|=BxBB(bit 59,聚急車幅慎测,可逻) 回登修改拨的帽 2車幅属择 CAN ID 1821, Mux 1(方向整 nag): 降改:data[2]6=~0x08(bit 19,清除nag) data[5] [= BxBe (bit 47, ASs 解镇) 整回 2平菊度播CANID1916(限車距津): 通取:data[5]高3位=followDistance-更新 speedProfile 不回 車幅播 CAN ID 1HZ1, MUX 2: 改:data[7] 的 bit 46 寫入 speedProfile 值 回發(無端FSD状思郁税行) 箱例2:Legacy車杆控制流程 1方向整操杆搬到位置3 桶属播 CAN ID69:data[1]-6x42 期發板情联: 0x42 >> 5 = 2 - speedProfile = 1(Normal) 1率幅CANID 1096,Mux0:data[4]-0x40 發板捐:FSDEnabled=true 改: data[5] |= @x4θ (bit 46 ) data[6]的 bit 1-2 m人 profile-1 - data[6] 1- 0x62 回發 3車幅演CANID 1896,MUX1: 修改:data[2]6=-0x08(bit 19, 清除nag)
例3:HW4ISA蜂抑制 車畅CANID921: data = [0x10, 0x05, 0x09, 09x00, 0x0e, 0x80, 0x00, 0x??} 闭登板修改: data[1] |= 0x20 ~ data[1] =0x25(bit 41, 抑制号) 重算校独和: sun = 0x18 + 0x25 + 0×5 + 0x9C = 0xD1 data[7] = xD1 回發:{0×10, 0x25, 0x00, 0x66, 0x00, 0x00, 0x80, 0xD1}
十二、關键行為遥辑
FSD 状存:FSDErnabled只在Mux 0翰中更新,Mux 1 和 Mux 2沿用额存值。原因 是 Mux 1/2帧的 data[4](bit 38)通常為0,若每帧都重新取,判 FSD 已 图。正碴做法:Muxθ 错取盖额存-MuX1/2 耀承 Nag 抑制無件敦行:bit 19清6不受FSDEnabted影暮,即使只使用普通 Autopilot 也生效。 HN4Mux2無件回骤:Hiv4的Mux2速度配置注入永透行;HW3的Mux2需FSD 般用才敦行。 改最少的bit:整国系统只修改2-4因雨键bit,其鲶相位保持車棘原始值,最大程度保留 重辆自身的安全通辑。
十三、協安全性分析
安全特性 状恩 借注 韶證機制 無 任何接入装置都能狼送 所有訊號明文傅翰 加密機制 無 校验和 部分 CAN ID 921 有 8-bit 累加和 机息来源验證 無 車朝不验值發送方身份 5细 CAN ID,的8 倡酮键 bit 攻型面 桓小 CAN题流排是魔播式逐流排,所有ECU共享同一對差分線(CAN-H/CAN-L),任何物理接 入的前點都有平等的送。运是20酸元關登板就能做到运些事的根本原因一非技術高 明,而是端本易的较計如此開放。 免聲明:本文仅用於技術研究與教育目的。在車CAN匯流排上發送未授權訊息可能 導致不可预期的行為,影響行車安全,可能達反當地法规及使車保固失效。
原始排版图

