The problem
On startup a X280 was showing the following error message:
The connected AC adapter has a lower wattage than the recommended AC adapter
which was shipped with the system. To use AC power, please connect the AC
adapter which was shipped with the system.
Press the ESC key to continue.
The error message on the screen:
And altough there was a power supply unit attached with 45W or 64W, Lenovo Vantage shows that the laptop loads with 15 W only:
It was constantly discharging the battery while working on the laptop, because 15 Watts were not enough to satisfy the actual power demand. Charging was only possible when the laptop was switched off actually.
The solution
Simple (after hours of reading articles on the web and several unsuccessful tests). I followed the instructions at https://www.reddit.com/r/thinkpad/comments/1gyv56s/guide_how_to_flash_a_t480s_thunderbolt_firmware/
The only thing worth to add are images to show how to find the required chip on the X280 logic board. Here, we go. Go to the BIOS and disable the battery. Remove the bottom case from the laptop. Now you need to remove the black plastic foil in the upper right corner and underneeth you find the Winbond 25Q80DV chip.
The chip under a magnifying glass:
The chip gripped by the pliers:
The whole little setup with a connection between the chip and a Linux box by using the CH341A programmer:
Install flashrom packages on Linux
we need to check whether the connection can be established ...
$ sudo flashrom -p ch341a_spi
flashrom unknown on Linux 6.14.0-24-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).
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_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 flashrom@flashrom.org 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!
No operations were specified.
The chip has been found. Let's backup the content of the chip, just in case something goes wrong ...
$ sudo flashrom -p ch341a_spi -r winbond-backup.bin
flashrom unknown on Linux 6.14.0-24-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).
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_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 flashrom@flashrom.org 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 flash... done.
A backup file has been created, now let's create a 1 MiB file full of nulls ...
$ dd if=/dev/zero of=null.bin bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00205349 s, 511 MB/s
Let's erase the chip ...
$ sudo flashrom -p ch341a_spi -E
flashrom unknown on Linux 6.14.0-24-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).
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_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 flashrom@flashrom.org 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!
Erasing and writing flash chip... Erase/write done.
Write all the nulls to the chip ...
$ sudo flashrom -p ch341a_spi -w null.bin
flashrom unknown on Linux 6.14.0-24-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).
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_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 flashrom@flashrom.org 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 old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
Disconnect the pliers, boot the laptop, disable battery again in BIOS, shutdown the laptop and reconnect the pliers again. The original Thunderbolt firmware (from Lenovo, extracted from the .exe) is called TBT.bin ...
$ ls -la TBT.bin
-rwxr-xr-x 1 johann johann 262144 Jul 8 2022 TBT.bin
johann@x250:~$ cp TBT.bin TBT-backup.bin
We need to pad the TBT.bin with nulls to have a 1 MiB file ...
$ dd if=/dev/null of=TBT.bin bs=1 seek=1048576
0+0 records in
0+0 records out
0 bytes copied, 6.4913e-05 s, 0.0 kB/s
johann@x250:~$ ls -la TBT.bin
-rwxr-xr-x 1 johann johann 1048576 Jul 18 20:11 TBT.bin
We flash the content of the updated TBT.bin to the chip ...
$ sudo flashrom -p ch341a_spi -w TBT.bin
flashrom unknown on Linux 6.14.0-24-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).
Found Winbond flash chip "W25Q80.V" (1024 kB, SPI) on ch341a_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 flashrom@flashrom.org 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 old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
$