Chromebook使用SuzyQable CCD免拆机救砖教程
Chromebook使用SuzyQable CCD免拆机救砖教程

Chromebook使用SuzyQable CCD免拆机救砖教程

本文创建和持续完善及优化的初衷是为购买作者设计的SuzyQ-Adapter的朋友提供完善和直观的指导。同时,不设密码免费公开也是想同时方便广大Chromebook同好。然而,本站大量邮件及其他途径的咨询,给作者造成不小的困扰。在此声明:作者无法确定其他CCD线材或是转接板的兼容及稳定性,除使用经本站严格测试的SuzyQ-Adapter外,使用其他CCD器材带来的问题,由于作者精力所限,恕无法解答。Chromebook是个小圈子,本文将持续保持公开方便同好,并欢迎分享及参考引用。祝玩机快乐!

本教程仅适用于带CCD调试功能的 (2017之后的机器大多都支持) Chromebook,Chromebox等ChromeOS设备,同时有如下要求:

  1. 设备带CCD调试功能*;
  2. 非含有企业锁或教育锁的机型,这些机型的CCD往往都被锁定;
  3. SuzyQ-Adapter(首选),或SuzyQable
  4. 写保护解锁:可以是前期CCD flags reset过或者断开电池排线;
  5. 另一台运行Linux的电脑,推荐Ubuntu(2304)

*具体可参考此处,查找自己机型,如果机型对应的WP Method一栏写有CR50字样,则该机器支持CCD功能。

流程:

  1. 准备工作
  2. 处理VPD*
  3. 刷写固件

*如果刷写原机备份的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.techchromium.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

26条评论

  1. yukai

    大佬,按照你的教程,使用ubuntu救砖遇到如下提示:用离谱案例试了一下,没有效果,请大佬指点一下
    Error; Unknown programmer “raiden_debug_spi:target=Ap”, Valid chotces are:internal, dummy, nic3com, nicrealtek, gfxnvidia, drkaiser, satasit, atavta,it8212, ft2232_spi, serprog, buspirate spi, dediprog, developerbox, rayer_spt,pony_spi, nicintel, nicintel_spi, nicintel eeprom, ogp_spi, satamv, linux mtd,linux_spl, usbblaster_spl, pickit2_spi, ch341a spi, digilent_spt, stltnkv3_spt.please run .flashrom ..help” for usage info.

    1. 你很可能不是Ubuntu2304,教程建议使用2304的原因就是防止flashrom出现奇怪问题。可以改到2304,或者自行编译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运行:
      sudo ./flashrom -p raiden_debug_spi:target=AP ...

  2. Eric

    大佬,按照你的办法,我连了SuzyQable,开机,然后断开电池,提取VPD的时候报错,该怎么办阿。联想chromebook c630,之前进入了开发者模式,打开了ccd,断电池刷机失败。。。
    sudo flashrom -p raiden_debug_spi:target=AP -r badflash.rom
    flashrom unknown on Linux 6.2.0-32-generic (x86_64)
    flashrom is free software, get the source code at https://flashrom.org

    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Raiden target: 2
    Raiden: Target SPI bridge is disabled (is WP enabled?)
    Raiden: Error configuring protocol
    protocol = 2
    status = 0x00005
    Error: Programmer initialization failed.

  3. Eric

    大神,自编译了flashrom,拔掉电池,还是不行,求指点
    sudo ./flashrom/flashrom -p raiden_debug_spi:target=AP -r –wp-disable badflash.rom
    flashrom 1.4.0-devel (git:v1.2-1353-gebda447a) on Linux 6.2.0-33-generic (x86_64)
    flashrom is free software, get the source code at https://flashrom.org

    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Error: Extra parameter found.
    Please run “flashrom –help” for usage info.

  4. Eric

    厚着脸皮继续
    sudo flashrom –wp-disable -p raiden_debug_spi:target=AP –wp-disable -r badflash.rom
    flashrom unknown on Linux 6.2.0-33-generic (x86_64)
    flashrom is free software, get the source code at https://flashrom.org

    Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
    Raiden target: 2
    Found GigaDevice flash chip “GD25B128B/GD25Q128B” (16384 kB, SPI) on raiden_debug_spi.
    Found GigaDevice flash chip “GD25Q127C/GD25Q128C” (16384 kB, SPI) on raiden_debug_spi.
    Multiple flash chip definitions match the detected chip(s): “GD25B128B/GD25Q128B”, “GD25Q127C/GD25Q128C”
    Please specify which chip definition to use with the -c option.

        1. 但你复制在这边的是一个长横线,根据报错应该是识别了两个flash芯片,需要你指定刷哪个。我没有遇到过这个情况,不知,可以自行尝试下。如sudo flashrom --wp-disable -p raiden_debug_spi:target=AP -c "GD25B128B/GD25Q128B" -r badflash.rom或指定另一个。

          1. Eric

            感谢耐心解答,我看到有类似的问题MrChromebox作了如下解答,但是我执行 firmware-util.sh这个命令的时候提示并没有这个文件。。。

            known issue with sandybridge/ivybridge platform devices and the updated flashrom build the script is currently using.

            to workaround, run from home dir:
            sudo rm /tmp/flashrom
            curl -LO https://mrchromebox.tech/files/util/flashrom.tar.gz
            tar zxf flashrom.tar.gz
            mv flashrom /tmp
            sudo bash firmware-util.sh

            that should resolve the issue

            1. 他这个原本是跑脚本的,你这个肯定没有这个文件。你把他的链接中的文件下载,解压,把里面的flashrom文件拷贝到home文件夹下的flashrom文件夹里面覆盖原文件。

  5. Eric

    哎,把他github里所有脚本下回来,设置好权限,然后执行,还是报几个脚本缺失。然后手贱把这几个脚本手工执行了一下,现在好了,一直提示写保护开着了…

    1. 救砖的前提是对linux操作和执行的命令有基本的理解,并不是大力出奇迹。我这边也只是给出救砖的方法,没办法也没时间指导其他的问题,具体问题自行检索吧。

    1. 我觉得您可能是没有理解支持列表和你所说的固件的意思。这个设备支持列表里有,但是只是支持RW_LEGACY,这只是原系统的一个分区的意思。你说的找固件应该是找Fullrom,而这不在支持范围,所以没有。也就是说你这个机器想要救砖,必须刷回原生BIOS。同时这个机器也是不支持刷win的。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注