/r/libreboot
The Libreboot project provides free, open source (libre) boot firmware based on coreboot, replacing proprietary BIOS/UEFI firmware on specific Intel/AMD x86 and ARM based motherboards, including laptop and desktop computers. It initialises the hardware (e.g. memory controller, CPU, peripherals) and starts a bootloader for your operating system. Linux and BSD are well-supported. Help is available via #libreboot on Libera IRC.
Libreboot is a free (libre) BIOS/UEFI replacement. Based on coreboot, the aim is to distribute low-level boot firmware that is 100% free software, and easy to use.
To report a bug, go here: https://notabug.org/libreboot/libreboot/issues
For support and troubleshooting join irc channel: #libreboot at freenode
To avoid spam, we require that your user account is at least over 24 hours old.
/r/libreboot
I have thinkpad T480 and thought about flashing libreboot on it. I’m not really familiar with libreboot or coreboot. Can I just switch the WiFi card easily to one with WiFi 7 or are there issues with libreboot?
Hello, I'm planning on librebooting my T400 and perhaps my X220 as well. Some people have reported issues with the CH341A programmer so I decided to play it safe and just buy a raspberry pi and a pomona clip. Which raspberry pi model would you recommend? There is a lot of tutorials when it comes to librebooting the t400, but not so much for the X220. It's still a similar process though? Thanks for the help!
I has used to "./cbfstool myrom.rom add -f background.jpg -n background.jpg -t raw"
but continues without background, background method or name has changed in latest releases?
So I was trying to install libre boot on my t480 and I finished flashing, and it wouldn’t boot, would turn on for less than a second and shut off, and I reflashed the original Lenovo bios and it would still do the same thing, any advice or fixes? I’m a newbie with bios modding, I have 16gb of ram and an i7-8550u.
Hello Everyone!
I'm pretty new to this community and I'm curious if there's a way to install Libreboot on a ThinkPad W520. I've seen support for ThinkPad X220/X220T/T420/T420s/T520 as well as ThinkPad X230/T430/T530/W530/X230T on the official webpage, but it seems like the W520 is missing for some reason.
Has anyone successfully installed Libreboot on their W520? Any input would be greatly appreciated.
Thanks in advance!
Can the ME be fully removed from a QX9300 like the stock CPU or am I better off leaving it be?
E5530 i5 3340M 16GB DDR3 HD 4000 Intel IGPU
HI!! Im new to alot of this.. please may I ask for assistance
From what I understand SeaBIOS is smaller, simpler and enables me to boot OpenBSD. Why use GRUB at all?
I have an older Thinkpad that I want to get librebooted. There is someone on my local marketplace offering to do it for not too much money. Since I don’t have a raspberry pi or any tools, buying them would cost more than paying this person. I’m wondering whether this is a viable option and if there is a secure way of doing it with the seller.
Is the ThinkPad T480 with the latest Libreboot installed compatible with QubesOS?
Hello. So I wanted to libreboot my HP 2560p but found out there is a soic-16 chip. Whats worse, it appears to be 16MB and all the official images are 8MB. This gives the following errors when trying flash:
jacob@smolf ~/bin/hp2560p_8mb $ flashprog -p serprog:dev=/dev/ttyACM0 --force -w seagrub_hp2560p_8mb_libgfxinit_coreb
flashprog v1.2 on Linux 6.6.67-gentoo-x86_64 (x86_64)
flashprog is free software, get the source code at https://flashprog.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
serprog: Programmer name is "pico-serprog"
Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on serprog.
Error: Image size (8388608 B) doesn't match the flash chip's size (16777216 B)!
What can I do about this? Can I resize the rom with dd so its 16 mb perhaps? Any help appreciated.
Hello, I am using Libreboot on both a T480 and a T480s. On both machines, the headphone port does not work after flashing. Does anyone have a similar experience, or even better, know how to enable/fix it again?
The internal speakers work great
Running the latest rev 8 version of Libreboot
Both machines are running Debian
Thank you for any support
https://www.reddit.com/r/libreboot/comments/1ai6qel/raspberry_pi_pico_to_test_clip_wiring/
Does the wiring to the SOIC8 flashclip on my t440p sound correct, I used the pinouts from the libreboot website . My SOIC8 clip pinout diagram is below and the pico is the same as the image from the website except for the change SCK goes to CLK, 3V3 goes to VCC which I got from the reddit post above.
Thanks in advance for any help it is appreciated greatly.
SOIC8 Clip Pin-out
CS 1 --| |-- 5 MOSI
MISO 2 --| |-- 6 CLK
WP 3 --| |-- 7 HOLD
GND 4 --| |-- 8 VCC
Thank you for your time and knowledge.
Hai! :3
I’m going all-in on a maxed-out KGPE-D16 Rev 1.05 build for my security research and need the most powerful, and redundant system. The big question I need answered right now is LRDIMM support for this board in Libreboot:
1. Has anyone tested this for the KGPE-D16? (Can someone please?)
2. What’s the likelihood it works nowadays?
3. Why wasn't it supported sooner?
4. If it does work, I should be able to go beyond 256G RAM?
I currently have 2 Opteron 6386 SE (Special Edition) CPUs and the motherboard itself. My workloads are hefty enough to make serious use of this ridiculous RAM capacity, so this isn’t just overkill for the sake of it—though it is fun.
I’m also wondering about GPU compatibility. I don’t do gaming, but I do a lot of graphics-accelerated processing. Is there any issue using modern, overkill cards like a 4090? I realize it’ll bottleneck and I will choose a different card, but my point is: CAN I use it? (Compatability issues? is my point)
Currently considering the SST-GM900A-GF 900W Redundant Dual PSU and SilverStone Mammoth MM01 case (waterproof case with a HEPA filter 💀). If you know any goofy-but-practical cases, power supplies, or really any components that boost performance or stability, I’m all ears. The weirder, the better-hit me with ur goofiest components!
Lastly, thinking about chiller overclocking if I go for a custom case instead. I’ve seen mentions of +300MHz on non-special CPUs for the KGPE-D16, but no clue if Libreboot or KGPE-D16 can really handle it (It should?).
Disclaimer: Yeah, I know this build is crazy—but it’s also kind of necessary for my workloads and a bit of fun! Appreciate any advice, experiments, or wild ideas!
I noticed that in htop on Linux Mint - T480 (Libreboot 20241206, 8th revision) is showing fewer CPU threads than expected – it displays 4 instead of 8. This might mean the computer's performance is being limited
Libreboot doc says discrete GPU does not work (With SeaBIOS).
I am confused, and hope someone has tried/tested with the Nvidia GPU.
vPro, Libreboot, foss Wi-Fi 4 card. Hi there,
-Do Librebooted t480 8350u/8650u models disables VPRO? -Are switching wifi card ath9k one solves vpro issue? -Do combo coreboot/libreboot+foss wifi 4 card=neutre that issue? Ty
How does updating Libreboot on the T480 work if we already have a version installed? Is it possible to install a newer version without disassembling the laptop?
Edit 1/11/2025:
Updated to reflect new changes in 20241206 rev 8
Updated to reflect changes in new lbmk
Added a missing step (git config)
Added the installation step for flashrom
Added command to use internal flasher
Updated compatibility log with fixed bugs
Edit 1/5/2025:
Added Compatibility Log
EDIT 1/1/2025:
Added more images showing how to wire and place the test clip
Added extra info about the different rom choices
My experience flashing libreboot on a T480 was more of a journey that lasted 4 days. It involved heavy research, reading every sentence of documentation, asking questions on Reddit, and chatting with the developer for basically an entire day (leah - who is a very friendly and helpful person). ChatGPT was also by my side throughout the whole thing. I have no idea what I'm doing, but I wanted Libreboot on this laptop. So, for all of you who are in the same boat, I wrote down all the steps I took (all the correct ones, anyways) from start to finish. If I missed anything, please let me know so I can update the post
Great guides I used for help along the way
https://libreboot.org/docs/install/t480.html
https://libreboot.org/docs/install/spi.html
https://ezntek.com/posts/librebooting-the-thinkpad-t480-20241207t0933/
https://www.cyberciti.biz/faq/update-lenovo-bios-from-linux-usb-stick-pen/
NOTE: Some of these steps are likely to change very soon. One has already changed before I posted (this will be mentioned below). When the scripts/official documents change, blindly following these steps will likely cause problems and headaches. Please use alongside the official documentation
Working:
Not working:
It is worth noting that it is recommended to take a few steps before updating/downgrading the bios:
However, I did not do either of these steps, so we will move on to the upgrading/downgrading
If you wish to backup your current BIOS before attempting to upgrade/downgrade, please skip down to "Prepare Test clip" as well as the following step, "Backup the current BIOS"
Before upgrading/downgrading, first make sure you check the current BIOS version you have. We will need V1.52. You can check this by shutting down the T480, powering back on, and pressing F1 repeatedly until it says "entering setup". In the first page of the BIOS, you should see a version number for your BIOS (1.xx)
If you are already using 1.52, you can skip this section and jump to "Prepare Firmware/Flash Vendor Blobs"
V1.52 is necessary for EC UART support. This can be accomplished by taking the bios image from this site or here's a direct link to the iso. You will want to download the n24ur39w
version.
These links are only for the T480. If you have the T480s, go to the same page but for your model.
After you have the iso image, unfortunately you cannot just write it to a usb stick. You must instead use a tool called geteltorito. This is an excellent guide that I used. If something goes wrong with the install or the process, refer to the guide linked as it is more detailed, as well as contains arch-specific instructions. But I did not use arch, so they will not be mentioned here. To install:
Debian/Ubuntu:
sudo apt install genisoimage
Fedora:
sudo dnf install geteltorito genisoimage
Next, we will want to convert our iso to an img:
geteltorito -o {output-file.img {Bootable-CD.iso}
in the case of the T480, an example would be:
geteltorito -o T480.img n24ur39w.iso
#assuming the n24ur39w.iso is in your home directory
After the img has been saved, you can then write this file to a usb stick using the following command:
sudo dd if=T480.img of=/dev/sdx bs=4M
You will need to replace "sdx" with your usb stick's location. You can find it by running lsblk
and looking for a device with the same size as your usb. If you have a 128GB usb stick it may say 119.5G, and it will be labeled sda, sdb, sdc, etc. DO be sure to double check this and ensure you are not selecting the wrong drive. Using the wrong drive here will wipe it
Once this is done, we are ready to boot into our newly created USB stick.
To boot from the USB, you will need to shut down the laptop, power it back on, and repeatedly press F12 when the Lenovo logo appears until it says "entering boot menu"
Select your usb stick
If the laptop will not boot from USB, you will need to change some BIOS settings. Bios can be accessed by repeatedly pressing F1 when the Lenovo logo appears
As per the libreboot.org documentation linked above:
You must disable SecureBoot, and enable legacy/CSM boot, and boot it in BIOS mode, not UEFI mode. Make sure your battery is well-charged, and boot it with a battery and with the power supply plugged in. Select option 2 in the menu, to update your BIOS, which also updates the EC firmware. This is the Lenovo BIOS/UEFI updater. Once you’ve updated, you can flash Libreboot.
There is also an option in the "Security" settings of the BIOS that says UEFI flashing or UEFI downgrade protection. You want to make sure that downgrade protection is disabled if you are downgrading
After this you should be good to boot from the USB
When you boot from the USB, you will want to select option 2 and follow the instructions
Once the machine reboots, it will continue the flashing process. Please be patient
After the flashing is completely done, go back into the bios and confirm that it is V1.52
If it says 1.52, you are good to go
Next you will want to download the libreboot image for the T480/T480s
https://libreboot.org/download.html < This is where you can find the download link (HTTPS Mirrors are recommended. Just scroll down to HTTPS Mirrors and select any link)
You will want to download from stable > 20241206 > Roms > libreboot-20241206rev6_t480_fsp_16mb.tar.xz
Make sure to get the correct one. If you have T480s, download the libreboot-20241206rev6_t480s_fsp_16mb.tar.xz
This is the current version as of 12/30/2024. The next revision is expected to come early January 2025. At that point, you should use the next revision, as it will include bug fixes and other improvements. I have not noticed any major issues so far with Rev 6, except for the display's backlight. It works fine, but the function keys do not natively work for adjusting the brightness. You will need to adjust the display brightness in your OS, or remap the function buttons. I didn't bother with any of this since I can adjust the backlight from the main panel in my distro
Now that we have the firmware, we need to modify the roms with vendor blobs. Without this step, your bios chip will be bricked and the laptop will be a paperweight
Before we begin these steps, we need to configure a few system changes:
sudo apt install git
git config --global user.name "first last"
git config --global user.email "whatever@example.com"
# feel free to place your git info or any other random info here
# now we can use git as necessary below
To flash the vendor blobs, we need more software. Download the lbmk repo through your terminal >
git clone
https://codeberg.org/libreboot/lbmk.git
Now we want to copy the archive with our T480 roms to this folder, or take note of it's current location. IMO it is easier to work with if you copy the archive to the lbmk folder
Now,
cd lbmk
sudo ./build dependencies arch
# or
sudo ./build dependencies ubuntu2404
# or
sudo ./build dependencies debian
# or
sudo ./build dependencies fedora38
# pick the right one for your distro
and finally
./vendor inject libreboot-20241206rev6_t480_fsp_16mb.tar.xz
If you run into issues injecting the blobs, be sure you are not running in an encryptfs encrypted directory, as some of the filenames will be too long to process and the script will fail. If this is the case, I recommend using a live linux distro like debian for this part of the process. I got it to work on a Linux Mint live ISO, but debian is recommended
If you are using an old version of lbmk, the modified roms will be stored in your lbmk folder > bin > release
The newest revision of this script will modify the zip archive with your roms. Simply take the original archive, extract it, and you now have your roms to flash later on
Now you will want to prepare your flasher. Libreboot.org recommends the Raspberry Pi pico, so this is what I have used. You can attempt to compile the RPI firmware yourself using this repo, but I could not get it to work. Instead, I used the pre-compiled firmware from this fork. Your goal is to end up with a pico_serprog.uf2 file. This is the file you need. Whether you compile it yourself, or download it from the fork. Personally, I used the one from the fork
Now, hold down the "Bootsel" button on the pico while connecting the usb cable to your pc. It should mount like any other usb flash drive
Simply drag the uf2 file to the raspberry pi, and it will automatically disconnect as the update applies. Give it a few seconds, and then unplug the pico's usb from your pc
Now, it is time to prepare for flashing. In a terminal, we will want to run "dmesg -wh" and AFTER running this command, plug in your newly flashed raspberry pi pico (do not hold the button this time). You will see the terminal update when the usb device is recognized. We want to look for line similar to this:
[ +1.391500] usb 7-3: new full-speed USB device number 12 using ohci-pci
[ +0.171110] usb 7-3: New USB device found, idVendor=cafe, idProduct=4001, bcdDevice= 1.00
[ +0.000015] usb 7-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0.000006] usb 7-3: Product: TinyUSB Device
[ +0.000005] usb 7-3: Manufacturer: TinyUSB
[ +0.000005] usb 7-3: SerialNumber: 123456
[ +0.006042] cdc_acm 7-3:1.0: ttyACM0: USB ACM device #<< THIS IS WHAT WE WANT
Take note of the value "ttyACM0" ^^^
Now, before we begin flashing the new firmware, we need to backup the old one in case anything goes wrong. This, I did do, and I did need to restore the backups. Hopefully you won't have to restore them, but they are indeed very good to have handy. So let's connect the test clip correctly. First we need to disassemble the laptop, and disconnect all batteries/power sources (including the CMOS battery). After this you will find an 8 pin chip near the RAM labeled as Winbond (there is also a Winbond chip near the hinges. This is the thunderbolt controller, ignore this chip - unless you need to apply the fix as discussed earlier). You may also have a macronix BIOS chip instead of winbond. Be sure to inspect your chip. Be sure to connect the clip correctly BEFORE connecting power/usb to the pico. Always connect/disconnect the clip while NO POWER IS ATTACHED
Your clip should look similar to the image here when it is seated correctly:
These next images were taken directly from libreboot documentation as well as ezntek and I highly recommend doing your own research in these documents as well. Messing this up can and will cause issues. Make sure the test clip is flush with the board, and the pin 1 indicator (either a different colored wire or some indicator on the plastic clip) matches up with pin1 on the board shown below
This is the command we will run after successfully connecting the test clip, to create a dump of the chip:
flashrom -p yourprogrammer -c "your chip model" -r t480_stockbios_1.bin
In my case:
flashrom -p serprog:dev=/dev/ttyACM0 -c "W25Q128.V" -r t480_stockbios_1.bin
We want to repeat this 3 times, renaming the file to t480_stockbios_2.bin, and so on (it will take up to 15-20 minutes to read the chip each time. This is a long process)
Once you have 3 dumps, run this command:
sha256sum t480_stockbios*.bin
Check the output. There should be 3 lines, and all lines should be identical. If they are not identical, run the flashrom command again until you have 3 identical dumps
After this is done, we are ready to wipe the chip and replace it with libreboot. But before we do so, we need to figure out which rom to use. If we check our rom folder, we see several different roms to choose. Although I cannot explain what all the various options do, I can give info for a few of them:
This way, it boots straight to grub without any user input
The below image shows the only difference I can find between the two. This is seagrub. Notice how boot option 1 is grub2 payload, and option 2 is my NVMe. This is reversed if you flash the seabios rom. In seabios rom, option 1 will be the NVMe, and option 2 will be the grub2 payload
If you have an encrypted drive, or dual drives, going straight to grub (seagrub rom) will be the best option, as it will not require you to interrupt the boot process to get into grub. If you flash a seabios rom with an encrypted drive, it will get stuck forever trying to "boot from hdd". You will need to press "esc" before the hdd starts booting, to enter the menu above, and select option 2 for the grub2 payload
If you have a different keyboard layout, you can select the corresponding seagrub version (ukqwerty if you have a uk layout, etc)
There are also variants of both seabios and seagrub that are configured as txtmode. This is the info I could find in the libreboot docs:
Configurations with
libgfxinit
will use coreboot’s native graphics init code if available on that board. If the file name hastxtmode
in it, coreboot will be configured to start in text mode, when setting up the display. If the file name hascorebootfb
in it, coreboot will be configured to set up a high resolution frame buffer, when initializing the display.
NOTE: If the configuration file is
libgfxinit_txtmode
, the SeaBIOS payload can still run external VGA option ROMs on graphics cards, and this is the recommended setup (SeaBIOS in text mode) if you have a board with both onboard and an add-on graphics card (e.g. PCI express slot) installed.
There are also some strange layouts like Dvorak and Colemak. This is what I could find regarding these two layouts:
Now that we have our rom picked out, we can flash it with one easy command:
sudo flashrom -p serprog:dev=/dev/ttyACM0 -c "W25Q128.V" -w /bin/release/t480_fsp_16mb/seabios_t480_fsp_16mb_libgfxinit_corebootfb.rom
Remember to substitute the info here with your programmer, your chip, and your rom of choice
This process will take a long time, be prepared to spend 40 minutes or so waiting for it to finish. Under any circumstances, DO NOT interrupt this process. Flashing time will depend on your hardware.
To use the internal flasher (ONLY DO THIS IF YOU ARE ALREADY RUNNING LIBREBOOT. YOU CAN DO THIS TO UPGRADE ONLY). This will be much faster than using the external programmer to overwrite the factory BIOS
sudo flashrom -p internal -w /path/to/your/rom
Eventually you should see the following output:
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
After successful verification, you can disconnect the pico's usb cable (do this before removing the test clip), re-assemble, and enjoy your new BIOS!
I bought a ThinkPad T440p with Libreboot and SeaBIOS installed. I'm planning to upgrade the CPU to an Intel Core i7-4910MQ, but before purchasing, I wanted to double-check if there would be any compatibility issues with Libreboot and whether the computer would recognize the new CPU.
Hi, today I attempted to flash my T480 with Libreboot. I followed all steps to the best of my ability and was extremely careful to make sure my new test clip was seated perfectly without power connected. I do have 3 backup dumps I can attempt to revert to, but I would like to find out why this didn't work. I tried with
seabios_t480_fsp_16mb_libgfxinit_corebootfb.rom
and
seagrub_t480_fsp_16mb_libgfxinit_txtmode_usqwerty.rom
using a raspberry pi pico with the flashrom program
The result of both flashes were:
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
Plugged the battery back in, and push power to no avail. The laptop is totally dead. Tried power cycling, holding power, reconnecting BIOS battery, plugging in ac adapter, etc. No power at all. No lights, no screen, no fan spin, nothing. I tried multiple flashes with both roms and although the flash is successful every time, I am dead in the water. Does anyone know any troubleshooting steps I can take to get this machine librebooted successfully?
EDIT: Reverting to the bios backup does restore functionality. So it is just an issue with the libreboot image. Now I am even more confused
Hello reddit, I recently flashed libreboot with SeaBIOS onto my T520 Thinkpad.
It works, and boots off a SATA SSD, but not off my USB (I used dd with bs=4M).
I'm not sure what other info to put here, thanks for any help.
Hi, I am interested in buying a refurb thinkpad x220, which is very nicely priced, but runs libreboot, and was wondering how it would affect my usage. I am purchasing this laptop with the incentive in using it entirely for schoolwork, meaning I would only be running some Chrome applications and maybe some design softwares since I am interested in engineering.
I was just wondering how libreboot software will affect my daily usage, or if it will be merely similar to the windows 10 I am used to using. Thank you!
Hello,
When I found out about libreboot support for the T480, I had to go out and buy one. Now I have one, and I see that the BIOS version is N24ET77W, which is higher (I think) than the recommended version (n24ur39w
). I am going to flash libreboot with a CH341A programmer
As stated on libreboot.org:
Libreboot supports both the T480 and T480s variants. It is available in the Libreboot 20241206 release or later.
Flash a ROM image (hardware)
T480: Make sure to use the n24ur39w release, when updating Lenovo firmware. Or downgrade to this version. This is because the EC UART support in coreboot specifically taps into the EC code of that releaseFlash a ROM image (hardware)
You might think, what's the big deal, just downgrade it... I have been trying for hours. Disabling all the security in BIOS (including disabling BIOS downgrade protection) and I cannot boot into the BIOS utility provided by Lenovo. When I attempt to boot from the USB it just goes straight back to the "boot devices" screen.
This is not necessarily about asking for help with the downgrade, as I am going to also ask about the downgrade on r/thinkpad , but I am more so curious if I can bypass this step, as it doesn't make sense why I have to do this if I am over-writing the BIOS with a hardware programmer
If anyone happens to know how to help with downgrading my BIOS, these are the troubleshooting steps I have taken.
No matter what I do, the end result is the same. Boot screen comes up, I select my USB stick, screen flashes for a sec, and goes right back to boot screen
EDIT: Also, the Thinkpad is running Arch...btw
Any advice or help with the T480 would be greatly appreciated. I know a few people on this sub have done it successfully, and I would love to hear from you guys
Thank you so much!
Hi there,
Apologies in advance for asking "stupid" questions, and for (potentially) posting this in the wrong place.
I'm at the very early stages of researching libreboot/coreboot, and am in the process of building out some kind of flash device, installing a Linux distro, and attempting to learn how to use both.
I'm stalling out while attempting to work with pico-serprog. As far as I can tell, I have successfully compiled the pico-serprog*.uf2 file. (The Pi-Pico accepts the file, drops out of "flash drive" mode, and shows up in dmesg -wH & lsusb with changed information, like the name: "cafe:4001")
Unfortunately, that is literally all the confirmation I am able get. Once I bring flashrom or flashprog into the mix, I *might* get a readback that indicates something to the effect that 'serprog is "pico-serprog"', and hangs there with no further text/messages/warnings/etc until I use ^Z, or I'll get "Error: Programmer initialization failed".
Neither of which is particularly helpful to me, because I have no clue as to which direction to proceed from here.
I've tried the commands with Pi Pico only, with SOIC clipped to chip (with and without VCC, with and without power supplied to the motherboard) - all provide the same results.
I've also tried running lbmk to get to a pre-compiled version of pico-serprog, but no such luck.
I also have a cheap CH341a programmer, which only provides me with a "Programmer initialization failed" message... but that could be because I have absolutely no clue on how to change the syntax for flashrom and/or flashprog vs changing "serprog" to "3h341a_spi"
Thanks in advance for any tips/tricks/guidance.