Lenovo ThinkCentre M60q Chromebox bricked with UEFI Full ROM Firmware

factory new M60q, the model is listed on Supported Devices | MrChromebox.tech but not Supported Devices and Platforms | Chrultrabook Docs

  1. recovery button + power button to enter recovery mode

  2. ctrl + D, then press recovery button as prompted to reboot into developer mode, boot from internal desk

  3. SuzyQable / CCD, output all expected

  4. ran firmware script, Y to disable software write protection and reboot

  5. ran firmware script, flashed UEFI firmware successfully (took quite a bit longer than 90s as prompted)
    Screenshot from 2024-08-11 03-25-25

  6. Reboot

Waited for a long time (much longer than a few minutes), nothing happend, no display output. Tried to power cycle / enter recovery mode, still no display output.

I tried unbricking with SuzyQable using coreboot_edk2-kinox-mrchromebox_20240615.rom, but flashroom verification kept failing at different address. I tried different cables and never got a success, and no display output still (red power light is on tho)

However when I flashed stock backup, despite also showing verification error, it booted back into ChromeOS once flashrom exited.

cc @MrChromebox

Reading old flash chip contents... done.
FAILED at 0x01c08440! Expected=0x55, Found=0x15, failed byte count from 0x00500000-0x01fffffe: 0x6b102
Verifying flash. Write failed for range 0x500000 : 0x1ffffff, Abort.
Erase/write done from 500000 to 1ffffff
Write Failed!Uh oh. Erase/write failed. Checking if anything has changed.
Reading current flash chip contents... Google Security Chip (GSC) Case Closed Debugging (CCD)done.
Apparently at least some data has changed.
Your flash chip is in an unknown state.
W(1c08000:1cd3bff)write_flash:  region (00000000..0x1ffffff) is writable, writing range (0x1cd3f00..0x1d807ff).
W(1cd3f00:1d807ff)write_flash:  region (00000000..0x1ffffff) is writable, writing range (0x1d94000..0x1f235ff).
W(1d94000:1f235ff)write_flash:  region (00000000..0x1ffffff) is writable, writing range (0x1ff7000..0x1ffffff).
W(1ff7000:1ffffff)0x500000..0x1fffffe verify_range: Verifying  region (00000000..0x1ffffff)
read_flash:  region (00000000..0x1ffffff) is readable, reading range (0x500000..0x1fffffe).
FAILED at 0x01c0843b! Expected=0x89, Found=0x81, failed byte count from 0x00500000-0x01fffffe: 0x6d322
Verifying flash. Write failed for range 0x500000 : 0x1ffffff, Abort.
Erase/write done from 500000 to 1ffffff
Write Failed!Uh oh. Erase/write failed. Checking if anything has changed.
Reading current flash chip contents... read_flash:  region (00000000..0x1ffffff) is readable, reading range (00000000..0x1ffffff).
done.
Apparently at least some data has changed.
Your flash chip is in an unknown state.
W(1c08000:1cd3bff)write_flash:  region (00000000..0x1ffffff) is writable, writing range (0x1cd3f00..0x1d807ff).
W(1cd3f00:1d807ff)write_flash:  region (00000000..0x1ffffff) is writable, writing range (0x1d94000..0x1f235ff).
W(1d94000:1f235ff)write_flash:  region (00000000..0x1ffffff) is writable, writing range (0x1ff7000..0x1ffffff).
W(1ff7000:1ffffff)0x500000..0x1fffffe verify_range: Verifying  region (00000000..0x1ffffff)
read_flash:  region (00000000..0x1ffffff) is readable, reading range (0x500000..0x1fffffe).
FAILED at 0x01c08442! Expected=0xf7, Found=0xf3, failed byte count from 0x00500000-0x01fffffe: 0x6fddb
Verifying flash. Write failed for range 0x500000 : 0x1ffffff, Abort.
Erase/write done from 500000 to 1ffffff
Write Failed!Uh oh. Erase/write failed. Checking if anything has changed.
Reading current flash chip contents... read_flash:  region (00000000..0x1ffffff) is readable, reading range (00000000..0x1ffffff).
done.
Apparently at least some data has changed.
Your flash chip is in an unknown state.

full log from flashrom user@hh4:~$ cd tmp/user@hh4:~/tmp$ mkdir chromeosuser@hh4:~/tmp$ cd chromeos - Pastebin.com

you’re flashing with the battery disconnected and external power removed?

it’s a Chromebox without battery? or you mean the CMOS battery?

tried without external power, same verification error and it would not boot after flashing UEFI. No display output, but keyboard numlock key / LED does work

then we’ll need to flash a debug build with serial output to see what’s going on

Is a debug build something you will create specific for kinox? Currently when it is not booting nothing new gets logged in ttyUSB0 / 1 /2

yes. You ought to see messages on ttyUSB0/2 (CR50/EC) regardless, as long as the device has power. ttyUSB1 is the CPU console, and will only show the boot log with a debug-enabled build

I am also seeing the same thing.

Log:

sudo flashrom -p raiden_debug_spi:target=AP -w coreboot_edk2-kinox-mrchromebox_20240615.rom –
ifd -i bios
flashrom unknown on Linux 6.1.0-22-amd64 (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 Winbond flash chip “W25Q256JV_M” (32768 kB, SPI) on raiden_debug_spi.
===
This flash part has status UNTESTED for operations: WP
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to [email protected] if any of the above operations
work correctly for you with this flash chip. Please include the flashrom log
file for all operations you tested (see the man page for details), and mention
which mainboard or programmer you tested in the subject line.
Thanks for your help!
Reading ich descriptor… done.
Using region: “bios”.
Reading old flash chip contents… done.
Erasing and writing flash chip… Erase/write done.
Verifying flash… FAILED at 0x000045bf! Expected=0x80, Found=0xaa, failed byte count from 0x00000000-0x01fff
fff: 0x25ac8
Your flash chip is in an unknown state.
Please report this to the mailing list at [email protected] or
on IRC (see Contact — flashrom documentation for details), thanks!

ccd is opened and factory reset?

Ccd is open, do I have to do a factory reset too? (Holding reset and power button) Do I also have to turn off software wp with flashrom?

open a terminal to /dev/ttyUSB0
run:
ccd open
ccd reset factory

software WP is already disabled by the script.

same verification error and it didnt boot even after ccd reset factory

are you getting anything at all from the USB0/2 consoles?

I was getting:

bash: /dev/ttyUSB0: Permission denied

even with sudo, but I did a chmod on it and was able to send things to it. (This is on Debian 12_06) then with screen opened to /dev/ttyUSB0 was able to input the commands to /dev/ttyUSB0

ccd open
ccd reset factory
Opening factory settings.
ccd open
[937.642066 enable_spi_pinmux: AP]
[937.694702 AP UART off]
[1150.466720 usb_spi_board_disable]
[2088.568096 enable_spi_pinmux: AP]
[2088.571548 AP UART on]
[2088.605583 AP UART off]

Then I ran

sudo flashrom -p raiden_debug_spi:target=AP -r badflash.rom
./cbfstool badflash.rom read -r RO_VPD -f vpd.bin
/cbfstool coreboot_edk2-kinox-mrchromebox_20240615.rom write -r RO_VPD -f vpd.bin
sudo flashrom -p raiden_debug_spi:target=AP -w coreboot_edk2-kinox-mrchromebox_20240615.rom --i
fd -i bios

output:

flashrom unknown on Linux 6.1.0-22-amd64 (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 Winbond flash chip “W25Q256JV_M” (32768 kB, SPI) on raiden_debug_spi.
===
This flash part has status UNTESTED for operations: WP
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to [email protected] if any of the above operations
work correctly for you with this flash chip. Please include the flashrom log
file for all operations you tested (see the man page for details), and mention
which mainboard or programmer you tested in the subject line.
Thanks for your help!
Reading ich descriptor… done.
Using region: “bios”.
Reading old flash chip contents… done.
Erasing and writing flash chip… Erase/write done.
Verifying flash… FAILED at 0x0000463b! Expected=0xcc, Found=0xc4, failed byte count from 0x00000000-0x01ffff
ff: 0x845c
Your flash chip is in an unknown state.
Please report this to the mailing list at [email protected] or
on IRC (see Contact — flashrom documentation for details), thanks!

For USB2 I see:

[0.258091[1.073428 C0: PE_SNK_Hard_Reset]
[1.075934 C0 Hard Reset sent]
[1.077480 C0: PE_SNK_Transition_to_default]
[1.352629 MKBP not cleared within threshold, toggling.]
[1.353423 power timeout on input; wanted 0x0040, got 0x0000]
[1.354145 Not enough power to boot (-1 %, 2500 mW)]
[1.355381 can’t read any temp sensors!]
[1.355785 can’t read any temp sensors!]
[1.554752 Not enough power to boot (-1 %, 2500 mW)]
[1.739952 C0: PE_SNK_Startup]
[1.742022 C0: PE_SNK_Discovery]
[1.743211 C0: PE_SNK_Wait_for_Capabilities]
[1.755699 Not enough power to boot (-1 %, 2500 mW)]
[1.956568 Not enough power to boot (-1 %, 2

Trying with it plugged in to see if that makes a difference (got different response when doing ccd open)

With power on USB2 shows this after a failed flash:

RTC: 0x000d1d8b (859531.00 s)
[2.456860 power state 4 = S0, in 0x00ff]
[2.614819 C0: PE_SNK_Hard_Reset]
[2.617331 C0 Hard Reset sent]
[2.618858 C0: PE_SNK_Transition_to_default]
[3.281201 C0: PE_SNK_Startup]
[3.283266 C0: PE_SNK_Discovery]
[3.284454 C0: PE_SNK_Wait_for_Capabilities]
[3.860190 C0: PE_SNK_Hard_Reset]
[3.862694 C0 Hard Reset sent]
[3.864231 C0: PE_SNK_Transition_to_default]
[4.526626 C0: PE_SNK_Startup]
[4.528693 C0: PE_SNK_Discovery]
[4.529881 C0: PE_SNK_Wait_for_Capabilities]
[5.105587 C0: PE_SNK_Hard_Reset]
[5.105971 C0: PE_SRC_Disabled]

and USB0:

[439.325168 usb_spi_board_disable]
[439.873302 AP UART on]
[440.538681 deferred_tpm_rst_isr]
[440.539794 AP on]
[440.540401 tpm_reset_request(0, 0)]
[440.541236 tpm_reset_now(0)]
[440.544841 tpm_init]
tpm_manufactured: manufactured
[440.547031 tpm_reset_now: done]
[440.548034 CCD state: UARTAP+TX UARTEC+TX I2C SPI USBEC+TX]
[440.642948 tpm_rst_asserted]
[441.643791 AP off]
[441.644744 CCD state: UARTEC+TX I2C SPI USBEC+TX]
[442.007312 deferred_tpm_rst_isr]
[442.008358 AP on]
[442.008972 tpm_reset_request(0, 0)]
[442.009822 tpm_reset_now(0)]
[442.010593 Committing NVMEM changes.]
[442.052421 tpm_init]
tpm_manufactured: manufactured
[442.056732 tpm_reset_now: done]
[442.058555 CCD state: UARTAP+TX UARTEC+TX I2C SPI USBEC+TX]
[445.058345 Committing NVMEM changes.]
[463.802024 PinWeaver: Loading Tree!]
[463.845600 PinWeaver: Loaded Tree. restart_count = 6]

I am also getting that it’s busy now (USB0)

what does sudo flashrom -p raiden_debug_spi:target=AP --wp-status report?

It’s showing

flashrom unknown on Linux 6.1.0-22-amd64 (x86_64)
flashrom is free software, get the source code at
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Raiden target: 2
Found Winbond flash chip “W25Q256JV_M” (32768 kB, SPI) on raiden_debug_spi.
===
This flash part has status UNTESTED for operations: WP
The test status of this chip may have been updated in the latest development
version of flashrom. If you are running the latest development version,
please email a report to [email protected] if any of the above operations
work correctly for you with this flash chip. Please include the flashrom log
file for all operations you tested (see the man page for details), and mention
which mainboard or programmer you tested in the subject line.
Thanks for your help!
Protection range: start=0x00000000 length=0x00000000 (none)
Protection mode: disabled

no idea why you’re not able to erase/write the full flash via CCD, this is very strange

Any ideas of anything else I should try?

Well my debug cable broke so waiting on a new one, also wondering if it was slightly damaged and that was causing problems.

I have the same problem with this device. The debug cable I have is working fine, and I used it on another chromebook to be sure.