Hotdry.
systems-engineering

实现开源工具解码 Miele 的专有 MDU 协议:故障码读取与家电诊断

利用 FreeMDU 开源项目,通过 USB 接口访问 Miele 家电的光学诊断协议,实现无厂商锁定的故障诊断和数据读取。

在智能家居时代,家电品牌的厂商锁定常常限制用户对设备内部状态的访问。Miele 作为高端家电制造商,其诊断协议 MDU(Miele Diagnostic Utility)原本仅供授权服务技师使用,导致普通用户难以进行 DIY 维修或集成到自动化系统中。FreeMDU 项目通过逆向工程这一专有协议,提供了开源硬件和软件工具,允许用户 via USB 接口读取故障码、传感器数据和进行家电诊断,从而打破垄断,实现自主控制。

FreeMDU 的核心在于对 Miele 家电光学红外(IR)诊断接口的解码。该接口隐藏在设备前面板的指示灯后(如 “Check inlet (PC)” 或 “Salt (PC)” 灯),使用 9600 baud 率的 IR 通信。项目开发者通过捕获官方 MDU 软件的 IR 信号,逆向出协议格式,包括命令帧、响应解析和设备特定实现。协议库采用 Rust 语言编写,确保安全性和跨平台兼容性。目前支持的设备包括软件 ID 为 360、419、605 和 629 的型号,如 G 651 I PLUS-3 洗碗机和 W 2446 洗衣机。这些 ID 对应特定微控制器,如 Mitsubishi M38078MC-065FP。

证据显示,FreeMDU 已成功演示读取实时传感器数据,如水温、转速和错误日志,而无需 Miele 的专有适配器。项目博客详细描述了逆向过程:使用 IR 接收器捕获信号,分析帧结构(起始字节、命令码、校验),并实现桥接模式将 IR 转换为 USB HID 接口。这避免了昂贵的官方硬件(数百欧元),只需构建一个廉价的开源适配器(如基于 ESP32 或 Arduino 的 IR 发射 / 接收模块)。

要落地实施,首先构建通信适配器:使用开源硬件设计(项目提供 Gerber 文件),集成 IR LED 和光电二极管,支持 38kHz 载波调制。固件有两种模式 —— 桥接模式(用于 PC 诊断)和独立模式(MQTT 输出到 Home Assistant)。安装 Rust 工具链后,编译协议库和 TUI(终端用户界面)工具。连接步骤:1)将适配器对准家电接口(确保无光干扰);2)运行 TUI 命令 freemdu tui --device /dev/ttyUSB0,它会自动协商软件 ID 并列出可用命令,如 read_faults(读取故障码)、read_sensors(传感器数据)和 test_components(组件测试)。

可落地参数包括:超时阈值设为 5 秒(避免 IR 信号丢失);重试次数 3 次(处理噪声);数据缓冲区 256 字节(协议帧大小)。监控要点:使用日志级别 --log debug 追踪帧解析;集成 Prometheus 指标暴露 IR 连接成功率和响应延迟。对于 Home Assistant 集成,配置 MQTT 主题如 miele/dishwasher/sensors/temperature,阈值警报如温度 > 80°C 触发通知。回滚策略:若命令导致异常,立即执行 reset_device 命令恢复默认状态。

潜在风险:不当使用可能永久损坏家电,如发送无效命令导致固件崩溃。限制作家建议仅在测试环境中操作,并备份设备状态。项目强调实验性,用户需评估兼容性 —— 新设备需捕获软件 ID 并扩展协议实现。

通过 FreeMDU,用户不仅能诊断如 E01(水泵故障)等常见错误,还可自动化监控家电健康,实现预测性维护。例如,在洗衣机中读取振动传感器数据,预测轴承磨损。该项目展示了开源在 IoT 逆向工程中的力量,推动家电生态的开放。

资料来源:GitHub 项目 https://github.com/medusalix/FreeMDU;逆向工程博客 https://medusalix.github.io/posts/miele-interface。(约 950 字)

查看归档