本文创建和持续完善及优化的初衷是为购买作者设计的SuzyQ-Adapter的朋友提供完善和直观的指导。同时,不设密码免费公开也是想同时方便广大Chromebook同好。然而,本站大量邮件及其他途径的咨询,给作者造成不小的困扰。在此声明:作者无法确定其他CCD线材或是转接板的兼容及稳定性,除使用经本站严格测试的SuzyQ-Adapter外,使用其他CCD器材带来的问题,由于作者精力所限,恕无法解答。Chromebook是个小圈子,本文将持续保持公开方便同好,并欢迎分享及参考引用。祝玩机快乐!
本教程仅适用于带CCD调试功能的 (2017之后的机器大多都支持) Chromebook,Chromebox等ChromeOS设备,同时有如下要求:
- 设备带CCD调试功能*;
- 非含有企业锁或教育锁的机型,这些机型的CCD往往都被锁定;
- SuzyQ-Adapter(首选),或SuzyQable;
- 写保护解锁:可以是前期CCD flags reset过或者断开电池排线;
- 另一台运行Linux的电脑,推荐Ubuntu(2304)
*具体可参考此处,查找自己机型,如果机型对应的WP Method
一栏写有CR50
字样,则该机器支持CCD功能。
流程:
*如果刷写原机备份的BIOS文件,则此步可跳过
准备工作
如果按照标准的教程开启CCD并解锁了写保护,可以不要拆机(实际上如果按照标准教程,变砖概率很低)。
但是如果很不幸,出于种种未知的原因或是按照非标准的教程操作,并未开启CCD,那么需要拆机,然后断开内部电池排线。断开电池排线千万要注意,有些电池排线端子金属裸露容易接触主板,造成主板烧坏。断开电池排线千万要小心,不要碰到主板其他元器件,同时断开后,将电池排线的端子用胶带包裹绝缘起来。这点千万不可偷懒马虎,不要心存侥幸!如果出于某些奇怪的原因,此时CCD仍未能打开。请按照这里的方法尝试。
注意:无论是救砖还是采用该教程方法强刷机器BIOS,必须保证待刷机器处于完全关机(不能是开机或者睡眠)的状态。
此时,打开另一台运行Linux的电脑(建议Ubuntu 2304,否则可能遇到flashrom问题,点击下载),Ubuntu系统可以是从U盘启动的,但必须物理安装,不能是虚拟机。连接网络,然后打开一个terminal(Ctrl+Alt+T), 注意不要以root身份打开。运行以下命令,切换到home
目录
cd;
安装flashrom
sudo apt update sudo apt install flashrom
连接SuzyQ-Adapter或是SuzyQable, 其C头连接被救砖的电脑的调试口(一般是左边的C口),另一头连接运行Linux的机器。输入以下命令检查线是否正常连接:
ls /dev/ttyUSB*
这条命令应该输出三个项目/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2
,如果不是,线的C端上下翻转后重插,或者换一个机身的C口。出现左边的三个输出,则线功能正常且成功连上。
将CCD状态设置为open:
echo "ccd open" | sudo tee -a /dev/ttyUSB0 > /dev/null
拷贝待刷的.rom
或.bin
文件:
如果是备份的原机BIOS文件,则将其直接拷贝到home
根目录(Ubuntu中文系统中显示为家
目录);
如果要刷的是第三方的Full ROM文件,则也将其拷贝到home
根目录,或者直接通过下列命令下载
wget https://mrchromebox.tech/files/firmware/full_rom/<filename>
其中,上述代码中的<filename>
替换成从这里找到的文件名,如coreboot_edk2-redrix-mrchromebox_20230721.rom
。找适合自己机器的文件的方法是根据机器的主板代号,可以从MrChromebox.tech或chromium.org查找主板代号Board Name
。如果没有本机备份文件且不想刷第三方固件,或无法在上述位置找到合适的固件,可通过邮件咨询,个别机型固件提取很麻烦,有偿。
处理VPD
这里需要分情况讨论,如果你有本机原始固件的备份,那么可以跳过这一步,进入刷写流程。
如果待刷固件非本机备份,则需要处理VPD。提取VPD有两种方式,机器内安装有正确BIOS固件的可用方式1,否则方式2,但两种方法都需要先安装cbfstool
:
wget https://mrchromebox.tech/files/util/cbfstool.tar.gz && tar -zxf cbfstool.tar.gz
方式1:通过CCD从机器提取固件并抽取VPD
sudo flashrom -p raiden_debug_spi:target=AP -r badflash.rom ./cbfstool badflash.rom read -r RO_VPD -f vpd.bin
注:上列两行命中的第一行也可以作为备份现有固件使用,其将机器现有固件备份为badflash.rom
。
方式2:从备份的BIOS文件中提取VPD(先将备份的BIOS文件拷贝到home
目录)
./cbfstool <备份的固件> read -r RO_VPD -f vpd.bin
完成提取后将VPD注入待刷固件
./cbfstool <待刷固件> write -r RO_VPD -f vpd.bin
刷写固件
刷写固件如果是原机备份固件,则运行:
sudo flashrom -p raiden_debug_spi:target=AP -i SI_BIOS -w <待刷固件>
刷写固件如果是其他固件,则运行:
sudo flashrom -p raiden_debug_spi:target=AP -w <待刷固件>
以上命令中的<filename>
需要根据情况修改为home
目录中待刷固件的完整文件名。刷写固件一般后缀为.bin
或.rom
。同时还需要补充说明的是,如果备份固件采用第一个方式不成功,可以尝试第二种方式。之所以分不同的固件刷机方式是因为某些备份的固件是不完整的,尤其是原版脚本在本机备份的固件对于Intel的U来说,本机是没有权限读取自身的ME分区的,备份出来的文件缺少ME分区无法完整刷写,这种情况可以告诉编程器只刷写bios部分,刷写命令中也可添加--ifd
。当然如果在非本机操作备份,比如通过SuzyQ-Adapter或烧录夹备份的则完整。
搞定,祝好运。
一些奇奇怪怪的问题
1. EC相关
一些离谱的操作可能会导致机器的AP和EC*出问题,导致flashrom无法正常写入全部固件,在验证阶段出错。可尝试重启AP或者通过EC设置gpio。
在CR50终端(sudo minicom -D /dev/ttyUSB0
)输入reboot
,但是个别主板无效。
如果无效,尝试通过操作EC。进入EC终端(sudo minicom -D /dev/ttyUSB2
),输入:apshutdown
,等5秒,输入gpioset s5_en_rails 1
个别机型,比如redrix主板,上述s5_en_rails
已经改为en_s5_rails
。
然后退出minicom
,再次尝试刷机。
*EC文档
2. GBB FLAGS
对于某些特殊情况,无法进入Chromebook执行命令,或Chromebook不能完全重置到出厂等,可通过工具重置GBB FLAGS,获取gbb_utility
后运行以下代码:
sudo ./gbb_utility --set --flags=0x0 <待修改ROM文件>
如果是开启了开发者模式,但是似乎又没完全开启,比如不能从恢复盘启动等,可以尝试将GBB FLAGS设置到39:
sudo ./gbb_utility --set --flags=0x39 <待修改ROM文件>
如果遇到了提示EC Sync相关的问题,可以尝试将GBB FLAGS设置到200,如需保留开发者环境就设置到239,在下方代码对应位置修改:
sudo ./gbb_utility --set --flags=0x200 <待修改ROM文件>
3. flashrom问题
某些情况下flashrom
缺少相应的库或者编程器,可以自行编译flashrom
,然后运行自编译的版本:
sudo apt update sudo apt install -y git build-essential libpci-dev libudev-dev zlib1g-dev libusb-1.0-0-dev pkg-config git clone --single-branch --branch master https://github.com/flashrom/flashrom.git cd flashrom pkg-config --libs libusb-1.0 make CONFIG_NOTHING=yes CONFIG_DUMMY=yes CONFIG_RAIDEN_DEBUG_SPI=yes WARNERROR=no
然后在刷机时指向自编译的flashrom
即可,比如上文中在home目录运行刷机命令时将命令中的flashrom
替换成./flashrom/flashrom
。
4. HWID修改
对于一些特殊情况缺少原机备份且无正常HWID
,可能影响机器后期跑刷机脚本或者系统更新,可以完成刷机后,在机器上运行命令窗口参考此处更改HWID
。或是刷机前通过gbb_utility
直接操作待刷机的ROM文件。
5. VPD的直接注入
如果有提取的有效VPD比如提取为vpd.bin
,也可将其直接注入机器。
sudo flashrom -p internal -w -i RO_VPD:vpd.bin
6. Minicom开启CCD并常开
Linux安装minicom
,根据不同发行版,自行安装,比如Ubuntu即apt instal minicom
在连好SuzyQ-Adapter后运行:
sudo minicom -D /dev/ttyUSB0
进入minicom
后,在minicom
中运行*(逐行运行,不要一次性四行全部粘贴运行):
*注:个别机型可能会跳出文字要求确认(Press PP button
),每跳出一次此提示,都需要短按一次电源键,直到不再提示。有些机型则直接开启。
ccd open
ccd reset factory
ccd testlab enabled
wp disabled atboot