Dell T5820刷入修改过的BIOS

外部EEPROM烧录器

T5820主板BIOS芯片

在主板CMOS电池旁边可以找到BIOS芯片,通常是Winbond(华邦), MXIC(旺宏)或Micron(美光)。我在主板CMOS电池旁边找到了芯片 winbond 25Q256JVFQ 1829 :

../../../../_images/winbond_25Q256JVFQ_1829.jpg

winbond 25Q256JVFQ 1829 BIOS芯片

  • 25Q256JVFQ : JV 结尾代表 3.3V ,在淘宝上购买的 CH341A编辑器+转接板+SOP16夹子线 默认提供的就是3V,可直接使用(如果芯片是1.8V还需要1.8V适配器)

  • 芯片左下角有一个凹陷小圆坑(旁边印着数字 1), SOP16 夹子上的红线必须对准这个圆坑所在的引脚

  • 芯片引脚表面有一层淡淡的氧化层或助焊剂残留: 在使用SOP16夹子是,需要用酒精擦拭一下 16 个引脚,能极大地提高“识别成功率”

CH341A/B编程器

淘宝上可以购买到非常经济实惠的外接EEPROM烧录器(CH341A/B编程器),需要注意根据自己主板上BIOS芯片的引脚数选购SOP8夹子线或SOP16夹子线(T5820),只需要24RMB包邮到家。

第一次使用我确实有点惴惴不安,不过我发现 How to Fix a Corrupted BIOS with a $5 Programmer | CH341A BIOS Flash Tutorial 视频简短但解析非常清晰,只要你仔细观看步骤就能正确完成 CH341A/B编程 的组装: 关键点在于选择正确选择 BIOS 25 SPI 插槽以及 1-2 编程 跳线(卖家发货默认就是),此外确保连线红色线插在1号空就可以了。唯一让我疑惑的是gemini告知我连线红色线对应的SOP16夹子位置应该对着主板芯片的凹陷标记,但是买到的配套夹子正好相反。幸运的是,这个相反标记没有关系,因为如果插反了连线,编程器上的红色指示灯不亮,你就知道线接反了。

备注

我后来看了淘宝买家的评论,原来淘宝卖家就能提供NeoProgrammer软件!!!

不过我是自己折腾寻找软件,并且最后还是使用Linux平台开源的 flashrom 来完成BIOS烧录的

NeoProgrammer

NeoProgrammer 是一个现代化的社区驱动的CH341A USB编程器软件,特别适合读取、写入和刷新24和25系列flash memory芯片(通常用于BIOS修复)。它提供了一个易用的管理芯片数据和支持大 多数IC的交互界面。

警告

我发现一个非常糟糕的事情: NeoProgrammer不是一个开源软件!!!

在网上搜索到的这个软件似乎是很久以前流传在网上的一个执行程序,虽然很好用并且在很多刷机论坛中能找到。但是没有人能保证这个windows软件的安全性,从 NeoProgrammer infected my laptop #18 讨论可以看到,即使我通过google搜索推荐的这个仓库,也有很多人已经报告这个仓库中提供的Windows版本NeoProgrammer已经感染了病毒!!!

目前看来只能根据网友反馈信息来判断选择可能较为安全的软件仓库(非开源软件的弊端)

如果要绝对安全,可以采用 tomek-o/CH341A-tool 维护发布的 tomek-o/CH341A-tool Releases 这个仓库的维护者创建的网站 tomeko.net CH341A tool ,虽然软件比较陈旧(使用Tubo C++ Explorer 2006编译),也很古旧,但是是一个开源软件,安全性有所保障!!!

备注

请使用 WinPE 的只读环境在内存中运行,不要有任何重要数据的主机上运行可疑程序!!!

How to Fix a Corrupted BIOS with a $5 Programmer | CH341A BIOS Flash Tutorial 提供了非常简洁清晰的说明,非常专业地提供了NeoProgrammer和CH341A驱动的下载链接:

使用 NeoProgrammer 驱动和软件

  • 取出 T5820 CMOS电池,然后按几次主机电源按钮放电,避免影响烧录

  • 夹好芯片,在软件里选 W25Q256JV

  • 备份,得到 32MB 的bin文件

备注

我遇到一个问题: 在使用 Ventoy (可启动U盘) 运行 WinPE ,但是发现安装 CH341A驱动 失败,所以我最后没有使用Windows平台的NeoProgrammer,而是采用下文Linux平台的 flashrom 完成

flashrom

Linux环境下有一个开源软件 flashrom 在Ubuntu发行版中包含,命令行操作,所以使用可能不如图形界面直观

安装 flashrom
apk add flashrom
  • 在完成了上文 CH341A/B编程器 连接之后,执行检测命令,这样能够确认CH341A/B编程器工作正常:

检查确认flashrom工作正常
# 1. 探测芯片
# 如果识别不到,尝试增加速度限制参数,因为 SOP16 线的信号衰减比 8 脚线严重
sudo flashrom -p ch341a_spi

实际上需要小心的连接CH341A/B编程器,特别是SOP16夹子,我也是尝试了两次调整SOP16夹子才正确读取出BIOS,输出显示检测出两个类型的winbond flash chip:

flashrom检测出2个型号的winbond flash chip
Found Winbond flash chip "W25Q256FV" (32768 kb,SPi) on ch341a_spi.
Found Winbond flash chip "W25Q256JV_Q" (32768 kb,SPi) on ch341a_spi.
Muliple flash chip definitions match the detected chip(s): "W25Q256FV", "W25Q256JV_Q".
Please specifiy which chip definition to use with the -c <chipname> option. 
  • 执行两次读取备份,并对比保存两次bin文件的校验码,以确认CH341A/B编程器连接和电气读写正常:

执行2次备份BIOS
# 执行2次备份,生成2分BIOS bin文件,两次备份时不要移动夹子,确保物理电气连接环境完全一致
# 每次备份需要3-5分钟,务必确保电脑不要进入休眠状态
sudo flashrom -p ch341a_spi -c "W25Q256JV_Q" -r backup1.bin
sudo flashrom -p ch341a_spi -c "W25Q256JV_Q" -r backup2.bin

# 校验2个BIOS bin文件的哈希值
sha256sum backup1.bin backup2.bin

经过对比2次备份BIOS bin文件的哈希值一致,基本说明备份是可信的,这样就能放心修改BIOS文件

备注

Winbond 的 W25Q256 系列有很多子型号(FV, JV, JW 等),它们的 JEDEC ID(芯片内部的身份代码)非常接近。flashrom 识别到了代码,但无法确定是老款的 FV 还是 JV 系列。

根据之前观察到的芯片丝印 25Q256JV ,应该选择 W25Q256JV_Q

备注

这里备份得到的 bin 文件可以解决我之前在 配置Dell T5820 Aperture Size变量 反复尝试都失败没能正确提取的bin文件问题。这是一个完整的包含主机Service Tag等信息的BIOS bin,甚至不会引发Windows授权失效。

参考