USB视频采集卡(ms2130、2109)固件烧录修改pid、vid及eeid
USB视频采集卡(ms2130、2109)固件烧录修改pid、vid及edid
一.写在前面
本文章可通过修改、烧录固件实现USB视频采集卡(ms2130、2109)的相关信息,包括:
1.采集端USB摄像头、USB音频设备的名称及PID、VID
2.设备本身的PID、VID
3.被采集端(视频输出端)的EDID信息,包括显示器名称、PID、VID、分辨率及色彩信息
二、项目相关地址
1.ms21xx-firmware : https://github.com/sandbox-pokhara/ms21xx-firmware 一个Python库,用于生成ms2130/2109的固件
2.ms21xx-firmware-research : https://github.com/sandbox-pokhara/ms21xx-firmware-research 介绍了ms2130/2109的固件的格式
3.[MS21XX MS91XX Download Tool],ms2130/2109的官方烧录工具,可读取、烧录、保存固件,目前国内打不开。
4.[HxD] : https://mh-nexus.de/en/hxd/ 二进制文件编辑器
5.EDID Decode:https://people.freedesktop.org/~imirkin/edid-decode/ 在线解析EDID信息
6.[Monitor Asset Manager]:https://www.entechtaiwan.com/util/moninfo.shtm 可查看本机当前及历史显示器的EDID信息
三、烧录过程
1.用[Monitor Asset Manager]提取EDID信息或从网上下载相关EDID,注意VGA和DVI显示器的EDID信息是128kB(256kbit),HDMI和DP显示器是256kB(512kbit),ms21xx-firmware仅支持256kB(512kbit),否则生成时会报错 !=512,实测把程序里的==512改成256,生成的固件刷入后无法工作,但可以继续用工具刷回来
提取出的EDID可能是下面这样的(以下是一个128kB的EDID)
00,FF,FF,FF,FF,FF,FF,00,30,AE,A5,65,82,53,00,00,29,18,01,04,68,33,1D,78,2A,DD,45,A3,55,4F,A0,27, 12,50,54,AF,EF,00,D1,C0,B3,00,A9,C0,95,00,81,80,81,8A,71,4F,81,00,02,3A,80,18,71,38,2D,40,58,2C, 45,00,FD,1E,11,00,00,1E,00,00,00,FF,00,30,31,35,33,36,45,34,31,32,31,33,37,38,00,00,00,FD,00,32, 4B,1E,53,11,00,0A,20,20,20,20,20,20,00,00,00,FC,00,4C,45,4E,20,4C,49,32,33,34,32,77,41,0A,00,09
填入python时不区分大小写,要把空格或者逗号去掉即可,之后最好再去EDID Decode在线验证以下能否正确识别
参数说明:
ms21xx-firmware -h
usage: generate.py [-h] [--chip {ms2109,ms2130}] [--output OUTPUT] [--vid VID] [--pid PID] [--firmware-version FIRMWARE_VERSION] [--video VIDEO] [--audio AUDIO] [--edid EDID] [--serial SERIAL]
options:
-h, --help show this help message and exit
--chip {ms2109,ms2130}
--output OUTPUT
--vid VID
--pid PID
--firmware-version FIRMWARE_VERSION
--video VIDEO
--audio AUDIO
--edid EDID
--serial SERIAL
官网示例信息(ms2109 DELL S2421HN)
ms21xx-firmware --chip ms2109 --vid 534D --pid 2109 --firmware-version 20200211 --video "Patched Video" --audio "Patched Audio" --edid 00FFFFFFFFFFFF0010ACF14142555944011F010380351E78EAF995A755549C260F5054A54B00714F8180A9C0D1C00101010101010101023A801871382D40582C45000F282100001E000000FF004633534B4332330A2020202020000000FC0044454C4C205332343231484E0A000000FD00304B1E5312000A202020202020013502032BF14F90050403020716010611121513141F230907078301000065030C001000681A00000101304BE62A4480A070382740302035000F282100001A011D8018711C1620582C25000F282100009E011D007251D01E206E2855000F282100001E8C0AD08A20E02D10103E96000F2821000018000000000000000000000000AC --output ms2109_DELL_S2421HN.bin
ms21xx-firmware --chip ms2130 --vid 345F --pid 2130 --firmware-version 20200211 --video "Patched Video" --audio "Patched Audio" --edid 00FFFFFFFFFFFF0010ACF14142555944011F010380351E78EAF995A755549C260F5054A54B00714F8180A9C0D1C00101010101010101023A801871382D40582C45000F282100001E000000FF004633534B4332330A2020202020000000FC0044454C4C205332343231484E0A000000FD00304B1E5312000A202020202020013502032BF14F90050403020716010611121513141F230907078301000065030C001000681A00000101304BE62A4480A070382740302035000F282100001A011D8018711C1620582C25000F282100009E011D007251D01E206E2855000F282100001E8C0AD08A20E02D10103E96000F2821000018000000000000000000000000AC --output ms2130_DELL_S2421HN.bin
在python中运行后,即可在项目根目录获得bin固件文件
注意:
(1)如果修改了默认的VID和PID,则需要手动输入后才可以读取到硬件信息,建议使用默认的,避免遗忘后无法再次操作硬件。
默认:MS2130-vid=345F,pid=2130
MS2109-vid=534D,pid=2109
(2)在python3.8中,会出现报错,原因为to_byte()方法缺少参数,在generate.py主函数相关方法中加入"big"参数后解决(一共有5处,为14行、92行、94行、133行、135行)
(3)ms2109不支持序号(serial)参数,执行时不添加该参数即可
3.使用[MS21XX MS91XX Download Tool]进行烧录操作,注意备份原厂固件数据,MS2130要点击flash,ms2109默认第一个即可
刷入完成后,重新插拔即可更新固件信息