背景
MS2130,虽然价格只有几十元,但是在1080p下的性能还是很不错的。我有一个MS2130和一个MS2131,但是使用的时候发现他们在设备上的显示名都叫“HDMI TO USB”,一个很不优雅的名字...每次看到这个名字,强迫症就犯了,于是就决心改掉他。
设备大都是通过EDID来获取显示器元数据信息,EDID共有128字节,里面包含了显示器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串等,具体可参见:什么是EDID,EDID能做什么,EDID基本介绍或EDID - 维基百科
那么,只要修改采集卡的EDID信息,便也许能够实现伪装/模拟成其他显示器的效果。
实践
第一步要做的是,需要导出采集器的固件,这步网络上有不少教程,总结步骤如下
- 打开固件刷写工具
- 界面上选择对应的芯片(MS2130/31)
- 按实际填入VID和PID,一般来说默认的VID是345F;MS2130的PID是2310,MS2131的PID是2131;可以通过iChipGenius功能查看
- 点击Connect连接采集卡
- 选择Flash选项框
- 点击Read读取固件
- 点击SaveTo Bin保存固件
更具体可参考B站大佬教程:【图吧小白教程】MS2130国产采集卡刷校色4K输出固件+备份教程
第二步,用任意Hex浏览工具(如WinHex)打开导出的固件文件,搜索EDID的header,果然能找到EDID信息:
解析下EDID信息,便看到了那个不顺眼的"HDMI TO USB":
将这128字节数据保存下来
用各类edid修改器(如EEditGold)修改下型号信息,替换掉固件中的EDID信息,然后用刷写工具刷入修改后到固件,再重新拔插下采集卡,可以看到这次设备将采集卡识别为修改后的型号了:
工具化
以上整套流程下来,时间大多耗费在找EDID解析修改器,重新拼接固件上,步骤很繁琐。于是便写了个工具实现对固件中EDID的一次性修改。
工具原理如下:
- 解析固件,查找EDID的header
- 解析EDID
- 按需修改EDID
- 重新计算EDID校验码,替换原固件中的EDID,并保存修改后的固件到指定的位置。
工具中对EDID的解析是使用了github.com/anoopengineer/edidparser这个package,为了实现EDID的修改,魔改了这个package,目前能够实现对如下基础参数的修改:
- ManufacturerId 三位大写字母,制造商代码,如LEN
- ProductCode 16位产品代码
- SerialNumber 32位序列号
- YearOfManufacture 生产年份
- WeekOfManufacture 生产所在周
- MonitorName 显示器名,比如那个"HDMI TO USB",最长13位ASCII字符
程序整体使用方法如下:
- 使用固件刷写工具备份采集卡固件
- 按如下步骤生成修改后的固件
ms213x-rename -m <ManufacturerId> -p <ProductCode> -s <SerialNumber> -y <YearOfManufacture> -w <WeekOfManufacture> -d <MonitorName> -o <修改后固件保存位置> <备份的固件位置>
举例:
ms213x-rename -m LEN -p 6666 -s 2333 -y 2022 -w 20 -d XianShiQi -o ./modify.bin ./firmware.bin
# 修改firmware.bin的EDID,并输出位modify.bin
- 刷写修改后的固件到采集卡中即可。
如果只是想查看固件中的edid信息,执行ms213x-rename <固件位置>
即可,如果需要更详细的信息,加上-v参数:ms213x-rename -v <固件位置>
工具代码和编译release文件见:https://github.com/starainrt/ms213x-rename
将这个修改工具、用于查看VID和UID的ChipGenius、Edid修改器以及固件刷写工具整体打包到我的Onedrive(刷写需谨慎):https://rapid.b612.me/s/NlJf1 密码:5ftw3q
其他问题与解决方法
使用修改EDID的固件后,在win 10/11上不显示“显示器音频”
这是windows自身的问题,问题复现方法如下:
- 使用旧固件,采集windows系统,windows上音频设备能看到“HDMI TO USB显示器音频”
- 刷写修改EDID后的固件,再次采集同一个windows系统,采集功能正常,但windows上音频设备无法看到这个采集卡的音频输出
使用非windows设备测试或在首次使用此采集卡的windows系统上测试,不会出现此问题,MS2131的录音与音频功能也没有失效。
具体原因可能与通过修改注册表强制更新Windows中显示器音频设备名的方法 这篇文章中记录的原理有关,但使用文中的方法无法解决这个问题,目前也没有能找到这个问题的解决方案,待进一步跟踪。
更新:EDID的问题,重刷一遍就好了
刷写固件当中报错
包括或不限于不小心拔掉了采集卡,或者写入固件时报校验失败或者写入了不合适的EDID。
- 此时,如果USB设备还能识别,flash可能被重置为默认固件,VID和PID会有变化。用ChipGeius之类的工具能看到采集卡的VID和PID,将固件刷写工具中的VID和PID设置为ChipGeius中显示的VID和PID,重新刷写备份的原固件即可救活。
- 如果此时显示不可识别的USB设备,那只能短接针脚救砖了,具体可参考此文:MS2130采集卡reset强刷固件救砖方法-哔哩哔哩