作者Pellaeon (秋风孤剑李鸿章)
看板car
标题[心得] 自制W124 HFM 诊断软体
时间Mon Aug 17 04:50:52 2026
文长慎入
一、前言
HFM(Hot-Film Mass热膜式空气流量计),正式名称是HFM-SFI
全名是 HFM Sequential Multiport Fuel Injection/Ignition System
大多用在90年代的车子 例如我的1993年 W124 300E 2.8
现代车子常用OBD-II介面 类似一种通用的语言
HFM数据没办法直接用OBD-II读取(头不一样、协定也不一样)
最佳的沟通方式是透过HHT原厂诊断电脑
现在的通用车用诊断电脑也可以 但就差了点
也少了一些coding的功能
但我知道HFM系统的ECU已经具备完整的自我诊断与引擎管理功能
可惜一直都没有办法去读取
最近开始用CODEX来Vibe Coding 想到多年前我曾经看到一个网站
http://www.hfmscan.com/en/index.html
由一位应该是俄国人的W124车主研发出了HFM读取软体
软体有免费功能(可读/清故障码)跟付费升级(阅读即时数据)
可惜无论是当年 还是现在 写信给他都没有回应
考虑到他是俄国人.....希望他一切安好
现在既然有CODEX 或许可以结合原厂资讯与他这个软体
进行逆向工程与开发 最後做出一套我命名为HFMreader的程式
因为是中文系毕业的纯文组 很多叙述或理解可能有误
也有可能我觉得很新奇 但在资工人看来稀松平常的事情
以下部分内容是辅以AI的解释 若有错误还请不吝赐教
二、成本
订阅chatgpt 20 美金
CODEX点数 154.5 美金
AUTOOL汽车诊断协议检测盒 1208 NTD
KKL 409.1 FTDI USB-OBDII 诊断接口 260 NTD
三、开发过程
1.透过wireshark侧录HFMscan跟HFM的沟通方式,得到基本数据。
接线方式非常土炮 透过诊断盒附的香蕉头<->OBDPIN转接头
一端插再KKL USB的OBDII头端PIN脚上 一端插到HFM诊断孔PIN1、8、16
搞半天根本没用到诊断盒 浪费一千二了 哭啊
透过这样 得到宝贵的资讯
它并不是像现代 OBD-II直接用标准 PID 询问转速、水温
串列端是 9600 baud 初始化时先用 8N1 拉一段大约 177 ms 的 K-Line BREAK
放开之後等约 214 ms 再用 space parity 传送 AA
线上会先看到自己的 echo AA,接着ECU 回 55
总之就是先经过特定的 K-Line 初始化
再以不同的 command、group 与 selector 向 ECU 要资料
每个 byte 还伴随 echo、ACK 与特定 parity 规则
我的理解有点像打电话前要先挂断电话几秒钟再打
打过去要说"你好" 电话中会听到自己的讲的"你好"
然後电脑会回"好你"表示收到了 然後才给数据
2.解读数据
拿到 ECU 回传的资料後 通常只是原始的 RAW byte 我根本看不懂
程式必须先依照资料型别判断它是单 byte、双 byte、signed value 或 bit flag
再按照对应的换算公式 把它转成真正有意义的数值
有些比较简单
例如RPM = RAW × 25
所以如果 ECU 回传 0x20 十进位就是 32 故RPM=32 ×25 = 800
有趣的是透过与原厂HHT诊断电脑对比 发现显示出来的最小单位就是25rpm
所以他只会显示675、700这样,不会有679、702
水温则比较困难 他是非线性的公式
我举两段为例
RAW 0xA4 = 164
相邻基准点:
RAW 160 = 61°C
RAW 176 = 70°C
61 + (70 - 61) × (164 - 160) ÷ (176 - 160)
= 63.25°C
RAW 0xBE = 190
相邻基准点:
RAW 176 = 70°C
RAW 192 = 80°C
70 + (80 - 70) × (190 - 176) ÷ (192 - 176)
= 78.75°C
有趣的是 CODEX一开始推估的水温公式
对比我们透过逆工程、原厂资讯得到的公式
差异都在0.1~2度之间 真的蛮厉害的
同时也发现宾士仪表上的水温表准的不可思议
例如79.16就换刚好落紧贴80白线下方
81.25度则会紧贴80度水温的上方
转速表亦然
整体言而 公式的来源来自原厂资料、HFMscan拆解以及修车厂HHT数据对照
HFM还有近百种 甚至更多可读取的数据 从HHT上可以验证
从档位、时速、引擎发动时间到第几缸失火
这就有待日後慢慢验证了(至少等我下周CODEX用量重置)
3.故障码读取与清除
故障码读取也是一大难题 他的逻辑跟读live data不同
程式先完成 AA/55 同步 再送出 F1 读取命令
依序取得 ECU 内的故障位元资料
我的理解大概像把每一个放资料的抽屉打开检查一遍
得到的数据前半段代表 Stored(曾经发生、已记录)
後半段代表 Current(目前仍存在)
ECU 传回的不是一整句故障描述 而是一组需要软体解码的位元图
所以还要对照原厂HFM诊断表才能正确转译
有趣的是 消除故障码的指令必须在读取指令後的大约0.22秒内发出
不然ECU会把下一个指令视为独立指令 然後就卡住了
所以我们看似按下"清除故障码"
但按下的瞬间他其实会再度重读一次然後迅速发出清除指令
为了准确测试 我可怜的W124被我拔了好几次MAF(空气流量计)的头
辛苦他气喘吁吁好几回了
附带一提 早在93年的W124 他的ECU就有学习功能了
原厂HHT诊断电脑也有学习数据归零甚至coding的功能
後者是可以调整ECU一些细部的version code
举例来说 手排/有触媒会有一组 XXX XXX XXX的序号
自排/无触媒 也会有一组OOO OOO OOO的序号
所以如果你自排改手排 电脑可以沿用 只要改这个序号
让电脑的自我认同从自排变手排即可
不然转速会拉不上去,因为电脑一直以为在空档
这也是未来我想尝试的功能
四、制作程式
交给CODEX,我完全不懂CODING。
只是交代他UI跟背後运算分开
方便我之後做一些酷酷的UI
同时加上读取ECU版本的功能 以便日後开发更多车子可以用的版本
研究中我发现少数数据读取或故障诊断 牵涉到不同版本的ECU
此外还读到自己电脑的生日
Hardware date: 35/92
Software date: 46/92
我猜35 46应该是周啦 跟轮胎一样
CODEX完成後就是实车试验
总之就是各种debug 地下停车场真的超热
不过CODEX其实蛮厉害的 大概来回三次就搞定
五、成品展示
https://youtu.be/EbqY9gmMMY8?si=iVEO-h4DcTltSMyf
前半段是实操第一人称视角
後半段是萤幕录影
车上超乱请大家无视 谢谢
先插PIN1(接地)、8(读资料)、16(12V,开红火才供电)
开红火(或发动) 选连接埠 然後点Connect
目前只有两个功能 读即时数据跟故障码读取/清除
即时数据的部分 目前公式确定的有
RPM、水温、节气门开度角度、含氧感知器电压、引擎负载、点火提前角
结合原厂数据+HHT推算的则是
IAT(进气温度)、MAF(空气流量)
这两个跟原厂HHT数值误差极小
例如怠速675~725转 HHT跟我们读到的平均值都落在15.1~15.3
但毕竟是CODEX推估的公式
所以还不能100%说是完全正确
故障码的部分 因为即时数据马上切过去会故障
原理大概就是ECU反应不过来吧 所以我做了等待2秒的设计
可以读故障码 然後会分成正在发生/曾经发生
CODEX坚持要在清除时跳一个警示"删除不代表修好"
真有趣
六、未来展望
其实坊间卖的诊断电脑也能做到这些
但我做这些最终极的目标
是透过带WIFI功能的ESP32插在引擎室内
然後传讯号到车内有触控萤幕的开发板上
再3D列印一个菸灰缸卡榫底座
制作一个能安放在菸灰缸位置的小萤幕
而不是像目前国内外加装的表 都要拉线
由於现在带WIFI或蓝牙的ELM327诊断头 不能直接传输HFM的数据
经过测试ELM会自己乱解读HFM的数据最後不是传不出来就是乱传
所以必须自己做一个可以忠实把HFM讯号传出来的发讯器
最後解读则交给车内开发板
不过由於我只有高中生活科技课焊过LED灯
这部分还得再研究 感觉道阻且长
同时也希望软体本身多一些功能
例如纪录最大/最小值、60秒波型图之类的
七、结语
经过两个礼拜的闭门造车
终於做出一个可用的程式
很庆幸自己生活在有AI的年代
当WIN11的笔电上跑出W124的数据与故障码
那种感觉真的好奇妙 又好开心
开发过程也开始能同理以前我学生看文言文的感觉了
每个字都懂 整句就鸭子听雷 早知道应该读理组的 恨文组
感谢车友Omega的技术文件
感谢宾皇的HHT支援与数据分享
感谢台大资工的好友阿尧给我的指点
感谢网友Rikki给我ESP32与开发板的知识补充
希望未来能继续改良 让每台电喷W124都能用 造福更多车友
八、参考资料
《Mercedes-Benz HFM-SFI Diagnostic Manual》(Mercedes-Benz,Diagnostic Manual
· Engines,09/2000) Mercedes-Benz HFM-SFI Diagnostic Manual.pdf
《Mercedes-Benz Vehicle Communication Software Manual》(Snap-on Incorporated
,2011) Mercedes-Benz_Vehicle_Communication_Software_Manual.pdf
Mercedes-Benz HFM-SFI Engine 111 Diagnostic Trouble Code(DTC)Memory 原厂故障
码表图片,页面 11/9~11/16
Mercedes-Benz W124 16-pin Data Link Connector/Impulse Counter Scan Tool 接线
图
HFM 故障码读取、清除与 ECM Memory Reset 中文操作说明
http://www.hfmscan.com/en/index.html 相关资料
--
/
 ̄ ̄﹨
▁▁ /
◤ ≡ /
▕
鸿木▏ \
. .
秋风孤
剑 ▕
章子▏ Pella
eon ξ
◥ /︻\
 ̄ ̄ ψ η
◢ ;川;◣
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ζ\■/
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.133.202 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/car/M.1786913461.A.9EB.html
※ 编辑: Pellaeon (111.249.133.202 台湾), 08/17/2026 04:52:06
1F:推 jemile1016 : 太神了 08/17 05:37
2F:推 zerg2150 : 神人阿! 08/17 06:56
3F:推 kokunmai : 这样捞过界是要理组情何以堪 08/17 07:15
可能W124车主之中 理组太少...
4F:推 kvlo : 厉害 08/17 07:17
5F:推 Behave : 不推不行 08/17 08:09
6F:推 maltum : 不能再笑文组的不会 coding 了呜呜呜 08/17 08:26
都是Vibe Coding...
7F:推 mylegacy : 推 08/17 08:27
8F:推 joybarbarian: 看不太懂但还是推 08/17 08:30
老实说我打了甚麽有些我也还在一知半解...
9F:推 Gloomy : 猛猛 08/17 08:31
10F:推 toasl : 赞赞要推 08/17 08:32
11F:推 ohlong : 很猛! 通常都软体灌一灌usb工具就完事 08/17 08:34
12F:→ ohlong : Bmw的软体做得很神 manual 都很齐 08/17 08:35
96年之後的宾士就省事多了 最麻烦的就是我们这些出代电喷车主
13F:推 lkj12tw : 太厉害了,前W124车主推一个 08/17 08:40
14F:推 zizou : 哇喔.....算你狠 08/17 09:07
为了爱 勇往直前
我觉得最狠的是我五点睡 九点准时到办公室
我现在感觉快死了
15F:推 mouz : 太……太认真了吧 08/17 09:07
16F:→ zzahoward : 你这个可以拿去订阅XDDD 08/17 09:12
我有想过 之後完整版可以放github 然後大家依照心情斗内我
但如果还要开发更多功能 感觉真得跟大家收点钱 不然CODEX要等每周重置
上百种功能不知道要弄到民国几年
17F:推 ninnyshadow : 推一下 08/17 09:14
18F:推 DSB520 : 花那麽多 wireshark至少也赞助一下 ( ( ^ω^ ) 08/17 09:26
我到现在还搞不懂WIRESHARK跟USBNCAP的关系....
19F:推 KevinKURO : 替W124的车友跟你说声感谢 08/17 09:37
希望之後四缸也能证明可行
20F:推 ohlong : 忘了说 搞个蓝芽工具跟app就可以卖了 08/17 09:47
工具就是现在最大的障碍QQ
不过感觉卖不出去几套
因为车友已经越来越少XD
21F:推 doi : 先推推再跪 08/17 09:53
22F:推 zwk0606 : 好猛 08/17 09:55
23F:推 ohlong : 这种东西最好就手机架着能一直看最方便 08/17 09:55
对 如果可以搞定ELM327 或许手机的carscanner就可用
24F:推 whatzup1124 : 好屌 08/17 10:02
25F:推 GTAAK47s : 强 08/17 10:06
26F:推 mardy0422 : 强 08/17 10:11
27F:推 luke2007 : 超猛 08/17 10:17
28F:推 bgflyer : 俄国人那组WiFi 版本的我有装在车上,有需要的话可 08/17 10:19
29F:→ bgflyer : 以借你测试。 08/17 10:19
感谢大大无私分享 我再站内您
30F:推 leo255112 : 超猛,文组变码农喔 08/17 10:23
为了爱车 不惜当码农爆肝...
31F:推 Mercedes124 : 我帐号可以送你 08/17 10:27
都靠我朋友的技术支援
32F:推 lll156k1529 : 太神啦 Mercedes Classic Center都没你专业 08/17 11:05
他们有原厂作弊神器HHT...
33F:推 CircusJoker : 鸿章太猛了吧,还不推爆xD 08/17 11:08
感谢大大 有机会我也想延伸到202 140上
34F:推 ChangeHeart : 太神!! 08/17 12:32
35F:推 h311013 : 修成精了 08/17 13:04
36F:推 QuentinHu : 太猛 08/17 14:08
37F:推 kalapon : 听起来很像是一般的serial port 协定,只是data 编 08/17 19:52
38F:→ kalapon : 码每家不同,所以要猜 08/17 19:52
39F:→ kalapon : ESP32还是用线把信号拉进驾驶室,避免震动和密封的 08/17 19:52
40F:→ kalapon : 问题,5V也方便取得 08/17 19:52
完全不考虑拉线进来XD会动到内装的就不考虑了
※ 编辑: Pellaeon (118.163.72.223 台湾), 08/18/2026 11:16:47
41F:推 Alllllogo : 推推!! 08/18 14:11
42F:推 wlv : 推 08/18 19:04
43F:推 gx9900824 : 爱它 就修它 给尊重 08/18 23:06