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]

Reply via email to