Does running flashrom with --wp-disable work? It looks like the SPI flash's block protect bits got set somewhere along the way.
On Fri, Jul 3, 2026, 9:19 PM None via flashrom <[email protected]> wrote: > Hi, > > I was trying to flash a modded dump back to the W25Q128.V BIOS chip of a > Lenovo ThinkPad T470 but it failed and left my chip in an unusable > state. I tested using SPI through two different devices - a ch341a and a > Raspberry Pi - and with two different versions of flashrom - 1.4.0 and > 1.8.0-devel (git:v1.7.0-48-g0b14d50a). > > The strange thing is that I've already successfully flashed a dump to > this chip once before, to set the HAP bit. I was using the same devices > and version of flashrom. The only thing that changed since then is I > updated the laptop's firmware, from 1.78 to 1.79. > > Hope you guys can help because the laptop won't turn on now, pressing > the power button does absolutely nothing. > > Here's the output from flashrom 1.4.0: > > ``` > $ flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -c W25Q128.V -w > ./modified_dump.bin > flashrom 1.4.0 on Linux 6.18.33+rpt-rpi-v7 (armv7l) > flashrom is free software, get the source code at https://flashrom.org > > Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on linux_spi. > Failed to unlock flash status reg with wp support. > Block protection could not be disabled! > Reading old flash chip contents... done. > FAILED at 0x00000c00! Expected=0xff, Found=0xd9, failed byte count from > 0x00000000-0x0000ffff: 0x1bcb > Erase/write done from 0 to ffffff > Write Failed!Uh oh. Erase/write failed. Checking if anything has changed. > Reading current flash chip contents... done. > Apparently at least some data has changed. > Your flash chip is in an unknown state. > Please report this to the mailing list at [email protected] or > on IRC (see https://www.flashrom.org/Contact for details), thanks! > ``` > > Here's the verbose output from 1.8.0-devel (git:v1.7.0-48-g0b14d50a): > > ``` > $ ./flashrom -V -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -c > W25Q128.V -w ./modified_dump.bin > flashrom v1.8.0-devel (git:v1.7.0-48-g0b14d50a) on Linux > 6.18.33+rpt-rpi-v7 (armv7l) > flashrom is free software, get the source code at https://flashrom.org > > flashrom was built with GCC 14.2.0, little endian > Command line (7 args): ./flashrom -V -p > linux_spi:dev=/dev/spidev0.0,spispeed=1000 -c W25Q128.V -w > /home/flashing/Downloads/T470_Dump_2026-05-28_to-flash.bin > Initializing linux_spi programmer > Using device /dev/spidev0.0 > Using 1000kHz clock > get_max_kernel_buf_size: Using value from > /sys/module/spidev/parameters/bufsiz as max buffer size. > linux_spi_init: max_kernel_buf_size: 4096 > The following protocols are supported: SPI. > Probing for Winbond W25Q128.V, 16384 kB: compare_id: id1 0xef, id2 0x4018 > Added layout entry 00000000 - 00ffffff named complete flash > Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on linux_spi. > Chip status register is 0xf8. > Chip status register: Status Register Write Disable (SRWD, SRP, ...) is set > Chip status register: Sector Protect Size (SEC) is 4 KB > Chip status register: Top/Bottom (TB) is bottom > Chip status register: Block Protect 2 (BP2) is set > Chip status register: Block Protect 1 (BP1) is set > Chip status register: Block Protect 0 (BP0) is not set > Chip status register: Write Enable Latch (WEL) is not set > Chip status register: Write In Progress (WIP/BUSY) is not set > Chip status register 2 is NOT decoded! > This chip may contain one-time programmable memory. flashrom cannot read > and may never be able to write it, hence it may not be able to completely > clone the contents of this chip (see man page for details). > write_wp_bits: wp_verify failed: reg:1 actual:0xf8 expected:0x80 > Failed to unlock flash status reg with wp support. > Some block protection in effect, disabling... Block protection could not > be disabled! > Chip status register is 0xf8. > Chip status register: Status Register Write Disable (SRWD, SRP, ...) is set > Chip status register: Sector Protect Size (SEC) is 4 KB > Chip status register: Top/Bottom (TB) is bottom > Chip status register: Block Protect 2 (BP2) is set > Chip status register: Block Protect 1 (BP1) is set > Chip status register: Block Protect 0 (BP0) is not set > Chip status register: Write Enable Latch (WEL) is not set > Chip status register: Write In Progress (WIP/BUSY) is not set > Chip status register 2 is NOT decoded! > can_change_target_regions: cannot fully update complete flash region > (00000000..0xffffff) due to chip's write-protection. > At least one target region is not fully writable. Aborting. > Error: some of the required checks to prepare flash access failed. > Earlier messages should give more details. > Write operation has not started. > restoring chip status (0xf8) > write_wp_bits: wp_verify failed: reg:1 actual:0xf8 expected:0xf0 > Runtime from programmer init to shutdown: 0min 0sec > ``` > _______________________________________________ > flashrom mailing list -- [email protected] > To unsubscribe send an email to [email protected] >
_______________________________________________ flashrom mailing list -- [email protected] To unsubscribe send an email to [email protected]
