先确认你要的是 Ex-Link 还是 MDC
三星有两套完全不兼容的串口协议:
| Ex-Link | MDC | |
|---|---|---|
| 用于 | 消费级电视 | 商用显示器(QM、QB、UD、ME 等) |
| 接口 | 3.5mm 插孔 | 9 针 D-sub |
| 格式 | 二进制十六进制 | 二进制十六进制 |
| 帧头 | 0x08 0x22 开头 | 0xAA 开头 |
如果你的屏背后是标准 DB9 串口,你要看的是 MDC 协议,不是这一页。Ex-Link 用在电视背后唯一的控制口是一个标着 Ex-Link 或 Service 的 3.5mm 插孔时。
动手前一句忠告:在固定安装工程里用消费级电视是一种妥协。Ex-Link 三星从未公开文档化,代码在不同年份机型间会变,而且这个口有时会在一次固件升级后整个消失。如果甲方肯出钱上商用屏,那才是更好的答案——MDC 有文档、稳定、而且就是为这种场景设计的。
接线难题
这是绝大多数 Ex-Link 项目卡住的地方,也是这个协议被搜索最多的一点。
Ex-Link 用 3.5mm 插孔传串口信号,所以你需要一根 3.5mm 转 DB9 的适配线。三星随部分机型附过官方转接头,第三方也有卖。
不要想当然地假设 tip/ring 的分配。 哪一极是 TX、哪一极是 RX、哪一极是地,在不同机型世代之间是变化的。一根在某台三星上好用的线,换一台可能毫无反应——而且两头长得一模一样,肉眼没有任何线索。
两条实际结论:
- 买线就买标明适配你这个年份机型的。
- 自己焊就去查你这台机器的维修文档,而不是照着一篇讲别的型号的论坛帖焊。
它的故障表现是"没反应",而这和 Ex-Link 其他所有问题的表现一模一样。 如果你没法确认接线是对的,你就没法把线排除掉,然后就会把剩下的时间全花在排查命令语法上——而语法从来不是问题所在。
串口参数
| 参数 | 值 |
|---|---|
| 波特率 | 9600 |
| 数据位 | 8 |
| 校验位 | 无 |
| 停止位 | 1 |
命令必须以十六进制发送
Ex-Link 代码是原始字节。以 ASCII 字符发送不会工作。
这一点值得反复强调,因为这些代码通常是以 08 22 00 00 00 01 D5 这样的文本形式发布的,把它粘进终端是很自然的动作。那样发出去的是二十个文本字符。你必须把工具切到 HEX 发送模式,让七个真正的字节发出去。
帧结构
08 22 | cmd sub val1 val2 | 校验和
└──┬──┘ └────────┬────────┘ └──┬──┘
帧头 数据载荷 1 字节每个 Ex-Link 帧都以 0x08 0x22 开头,带四个载荷字节,末尾一个校验和。
校验和是二补数
最后一个字节不是简单求和,而是"让整帧加起来归零"的那个值:
校验和 = (0x100 - 前六字节之和) & 0xFF用公开代码验证:
| 命令 | 帧 | 前 6 字节之和 | 校验和 |
|---|---|---|---|
| 关机 | 08 22 00 00 00 01 D5 | 0x2B | 0xD5 ✅ |
| HDMI 1 | 08 22 0A 00 05 00 C7 | 0x39 | 0xC7 ✅ |
| 电视信号源 | 08 22 0A 00 00 00 CC | 0x34 | 0xCC ✅ |
三条互相独立的代码,三条全部吻合。规则成立。
那条通不过自身校验的开机代码
到处流传的开机代码是:
08 22 00 00 00 02 D6它不满足上面这条校验和规则。
sum(08 22 00 00 00 02) = 0x2C
(0x100 - 0x2C) & 0xFF = 0xD4 ← 不是 0xD6既然同一条规则在另外三条代码上验证正确,说明这一帧的两个字节里有一个在源头就被抄错了,然后所有人一路照抄至今。反推有两种可能:
| 可能 | 帧 | 依据 |
|---|---|---|
| 校验和被抄错 | 08 22 00 00 00 02 D4 | 保留数据字节 02,修正校验和 |
| 数据字节被抄错 | 08 22 00 00 00 00 D6 | 要让 0xD6 成立,载荷之和必须为零 |
我们没有真机可以验证哪一个是对的,所以不会把任何一个当作事实写在这里。 如果你手上有带 Ex-Link 口的三星电视,用三星自己的 SamTvControlLite 测试工具一分钟就能定论——接上 Ex-Link 口,两条都发一遍,看哪条能把电视点亮。
这件事本身说明了一个值得养成的习惯:当一条公开的控制代码通不过它自己协议的校验规则时,信规则,别信表。 指令表在论坛之间被转载很多年,中间没有任何人重算过。
已验证可用的代码
| 动作 | 帧 |
|---|---|
| 关机 | 08 22 00 00 00 01 D5 |
| HDMI 1 | 08 22 0A 00 05 00 C7 |
| 电视信号源 | 08 22 0A 00 00 00 CC |
因为你现在掌握了校验和规则,你可以在信任任何一条新找到的代码之前先验算它——这比给你一张更长但没法自查的表有用得多。
怎么读回复
命令成功会返回一小段确认,例如 03 0C F1。
有一个值得知道的怪脾气:关机的回复是稳定的三字节代码,而开机的回复是一长串没有规律的数据。如果你写的解析器在等一个定长确认,开机会被判成失败——哪怕电视其实已经亮了。
不要把控制逻辑建立在解析开机回复上。 发命令、等待,然后用别的方式确认状态。
为什么你的 Ex-Link 命令毫无反应
1. 线的接法不匹配你这个年份的机型。 最可能的原因,也是最难排除的。
2. 你把代码当 ASCII 文本发了。 切到 HEX 发送模式。
3. 协议族选错了。 商用面板要用 MDC。
4. 校验和不对——包括"你从某张表里抄了一条错代码"这种情况。用上面的规则重算。
5. 深度待机。 和所有显示设备一个道理:电视在节能待机下给串口接收器断电,就会出现关机好用、开机永远不行。
6. 这个口被固件升级关掉了。 消费级机型上这是真会发生的事,而且你这边没有任何办法。
用 SoftControl 控制
SoftControl 用十六进制输入以裸串口或 TCP 字节发送 Ex-Link 帧,指令测试页同时显示发出的字节和原始回复——这正是你分辨"真确认"和上面那种"开机时乱糟糟的响应"所需要的。