Upgrade X1 Carbon BIOS from Linux
This is a very brief writeup of how to upgrade the BIOS on a X1 Carbon (G1) from Linux. For more information on this topic there is always the excellent ThinkWiki.
OK, this post is more about creating the bootable USB stick needed, was too much of a chicken to try Flashrom …
First, find your serial number, for querying Lenovo support (BIOS upgrade) pages.
sudo dmidecode -t system
The serial number is actually the combination of the Product Name and the Serial Number. E.g.
Handle 0x000D, DMI type 1, 27 bytes
System Information
Manufacturer: LENOVO
Product Name: 3460CLG
Version: ThinkPad X1 Carbon
Serial Number: DEXFXX
UUID: MMMMMMMM-NNNN-OOOO-PPPP-QQQQQQQQQQQQ
Wake-up Type: Power Switch
SKU Number: LENOVO_MT_3460
Family: ThinkPad X1 Carbon
Which in my case means 3460CLG-DEXFXX
… actual serial have been
obfuscated, obviously. Find the Drivers & Software URL at
Lenovo (again, real serial number obfuscated in URL).
Navigate to the “BIOS Update Bootable CD”, which in my case turned out
to be called g6uj21us.iso
. Now we need to convert the ISO to an IMG
file to be able to dd
it to a USB stick:
./geteltorito.pl -o g6uj21us.img g6uj21us.iso
Booting catalog starts at sector: 20
Manufacturer of CD: NERO BURNING ROM
Image architecture: x86
Boot media type is: harddisk
El Torito image starts at sector 27 and has 65536 sector(s) of 512 Bytes
Image has been written to file "g6uj21us.img".
The link to the Perl script is available on the ThinkWiki page, or from GitHub. Now, insert a USB stick and unmount it manually, not using Ubuntu/Gnome file manager’s eject thingy!
Write to USB, mine was at /dev/sdb
BUT YOURS MIGHT NOT BE, WATCH OUT!
sudo dd if=g6uj21us.img of=/dev/sdb
65536+0 records in
65536+0 records out
33554432 bytes (34 MB, 32 MiB) copied, 16,5346 s, 2,0 MB/s
Reboot your laptop and select UEFI First in BIOS startup order, then F12 and select boot from Generic USB mass storage device. Done.
Follow the instructions in the tool to upgrade your BIOS.