[RESPONDED] Coreboot on the Framework Laptop

I am daily driving my 11th gen (i7-1165G7) Framework laptop today. In fact I’m writing you this message from that very laptop. I use this laptop for most everything, and I’m a software engineer that likes to do compile-y and Rust-y things on a regular basis. This laptop is absolutely usable as a “modern laptop”, at least by my definition of a “modern laptop”, which I appreciate could be considered a rather subjective term :slight_smile:

I expect this laptop to remain “modern” for at least another 2-3 years by most peoples’ standards, and probably another 2-3 years beyond that.

I see your point and concern though, and this is why I think it’d be great to get some kind of temperature test from Framework officially. If 11th gen is in fact their most sold unit (which I suspect to be the case), then ensuring that coreboot is available for that generation ensures that it’s available for the most number of potential candidates.

There’s lots of different ways to view this whole thing, though. You might care about coreboot because you’re buying a new laptop. You might care about coreboot because you’re buying an old laptop.

For example, let’s say 2 years from now 11th gen is well and truly out of manufacture and Framework (the company) have their hands full supporting 2-3 generations of Framework 16, and 5+ generations (both Intel and AMD) of Framework 13. It seems less likely that Framework will have the appetite or bandwidth to ensure security updates and further QoL improvements are made available (in a timely fashion) for the older generations.

3 Likes

I say this because I don’t want people suffering burnout going for the most complicated task and then getting frustrated. It’s important to get the base stuff first before diving into the harder stuff; also I wonder if the people in oreboot (coreboot but rewritten in Rust practically) can help? GitHub - oreboot/oreboot: oreboot is a fork of coreboot, with C removed, written in Rust.

2 Likes

I’m not proposing that kind of information be made public, though. That would only be known if specific numbers were provided, with rate of change. There’s no way 13th gen mainboards have outsold 11th gen already! Those have only been available for a few months, the 11th gen has been sold (and also re-sold as refurb) for a couple of years now!

This is an excellent idea.

One thing I’m absolutely certain of: getting coreboot working on any Framework generation is not a good idea for someone currently suffering, or recently recovering from, burnout. :smiley:

Modern x86 platforms are horrifyingly complex, they are comprised of 30+ years of standards and technologies layered on top of each other. It’s a miracle anything even works at all.

The only reasonable candidates to be working on such a project are extremely knowledgeable and experienced hardware hackers who grew up with this sort of thing, or folks who are commercially involved and have a monetary interest to do such work.

Take a look at the technical blog for Asahi Linux, for an example of what I mean. The project lead and founder, marcan, is the same fella who was doing stuff like this 10+ years ago: Search for person "marcan" - media.ccc.de

1 Like

A vote on this isn’t productive and would only lead to more stress on the coreboot maintainers, I think they should decide what generation they should focus on if this happens at all tbh.

2 Likes

I agree, something is better than nothing. I think going for whatever generation is easiest is a good compromise and probably beneficial towards the general attempt at achieving a port.

ooof, another one of those “rust” projects. anyway, looking at their page, an Alwinner D1, awesome RISCV so they did a good choice, but no other support for anthing else but qemu. so nope, not in a while. we need x86_64 atleast (and coreboot does it with i386 anyway at first, due to system bringup). well see where this will go, but i guess if we want a shot at this, it be coreboot (or maybe libre)

1 Like

Maybe there should be a channel in Framework Discord? Or can we create a Matrix or Discord channel? To talk more efficiently.

1 Like

This brings me a lot of hope for the future of Coreboot, MSI Z790-P is a modern motherboard!

4 Likes

Was randomly trawling the Framework forums this morning and stumbled across this thread about enabling Resizable BAR. It was originally opened about a year ago. Whilst the participants in there have found some workarounds to enable ReBAR, there’s never been any official Framework assistance or response to this matter.

I think this is a great example of why we need something like coreboot. ReBAR didn’t matter so much a couple of years ago (though I do remember messing with it years ago whilst trying to get GPU passthrough working under Xen…), but it matters more today with the mainstream release of Arc GPUs.

Looks like coreboot supports ReBAR enablement: https://github.com/coreboot/coreboot/blob/master/src/device/Kconfig#L668

So, pretending that we already had coreboot firmware shipped when this thread was first opened, I can imagine a scenario where someone from the community says “huh, let me try a build of coreboot with PCIEXP_SUPPORT_RESIZABLE_BARS enabled…”, produces said build, and it’s available for testing the next day, and in a stable release the next week/month.

4 Likes

It’s great that coreboot now has official targets for the absolute latest chipsets, but FWIW we were already at the point that it could be considered to run on “modern motherboards” last year: https://www.phoronix.com/review/coreboot-adl-dream

I’d be curious how much work from that Z690 enablement was useful for the Z790 bring-up. If the answer is “alot” then likely we’d see the same re-use if the bring-up is done for 11th gen and then that work is carried forwards for 12th gen + 13th gen bring-up.

2 Likes

Are there different implementations of Coreboot?

As a System 76 GALP5 owner, I’m not all that fond of Coreboot’s options. Granted I’m not a developer so maybe you need to be one to be able to configure it to your heart’s content. But from my POV, the firmware is stripped down and doesn’t give me access to settings I’d need from something like Phoenix.

To this day, no idea how to switch to legacy mode (it doesn’t seem to have that), configure TPM, memory timing/speeds, edit boot entries (requires knowledge of bcdedit or efi cmd line tools), etc.

Again, probably have OS-level config tools, but System76 doesn’t have an all-in-one firmware settings app (nothing like a GUI that exposes traditional firmware/BIOS settings). They have command line packages for various things like power management, battery charging limitation setting, etc.

Coreboot is amazing for some people who has a handle on that kind of access, but not everyone does. There are still people who complain about System76 use of Coreboot. Yes it’s faster because it’s stripped down, but not everyone wants it stripped down. Most people are just used to a traditional firmware.

If Framework can offer two different firmwares you can swap between easily, then sure.

System76 offers a way to get the proprietary firmware back on the laptop but I believe it requires special tools most people don’t have.

I’m personally having issues with dual booting PopOS and Windows 11 on my GALP5 and Coreboot left a very nasty taste in my mouth right now. Waiting on System76 to fix the issues turned it into a Linux only laptop for me (which isnfine for those whomuust want Linux) . They didn’t release a new firmware until my laptop was 2 generations old. And it still didn’t fix the issue.

I don’t want this to happen to my Framework laptop.

Here’s a video of mine showing System76 Coreboot.

3 Likes

Are there different implementations of Coreboot?

Coreboot is kinda like the Linux kernel. It’s a low level codebase that handles the super early initialization (from cold power-on) of the various bits of silicon in your computer. It’s the software that is initializing your DDR memory controllers, pulling the CPU up from 16bit real mode thru to 64 bit, etc.

I think the Linux kernel analogy is especially apt when you think about something like a BIOS configuration screen. You wouldn’t expect the Linux kernel to present a GUI on a screen. It provides the low level DRI stuff. But then you need something like Mesa to implement 2D/3D rasterization APIs, a Wayland display server implementation (e.g Weston), and then finally a window manager (like Mutter) to handle drawing pretty UI elements and such.

So yeah, coreboot isn’t really for someone who just wants to press F1 and configure some settings graphically before booting into Windows or a vanilla Ubuntu installation. It’s for power users, system integrators, and such. Of course, there’s nothing stopping someone from implementing a fancy GUI payload on top of coreboot that functions similar to what you typically expect from a proprietary BIOS blob.

To this day, no idea how to switch to legacy mode

Someone with more experience can speak specifically to this, but if you’re referring to CSM mode I dunno if coreboot would ever bother supporting that.

As mentioned, Coreboot is very low level. It configures memory controllers, uploads FSP blob to your Intel CPU, and then it hands over to a “payload”. The typical payloads you’d be using are either SeaBIOS (for the legacy BIOS you’re probably looking for) or TianoCore (for a UEFI boot environment).

Coreboot is very niche. As noted in this thread, you can count the number of standard mainstream ATX/ITX mainboards produced in the last decade supported by coreboot on one hand. It has a lot more adoption in the netbook world because Google chose it for Chromebooks. But Google doesn’t want you to configure a Chromebook any further than the cart customization you do every 3 months in their checkout page so that we can all drown in e-waste.

I can imagine that coreboot gains a lot more traction over the next few years, which attracts more vendor interest and demand for end-user-friendly GUI configuration tools, either at F1 on boot, or from userland in a booted OS.

In summary, I wouldn’t expect Framework to completely drop the current InsydeH2O payload shipping on their laptops today. In fact, I would expect a consumer-focused company like Framework to continue shipping that BIOS (or something like it) by default indefinitely.

As I’ve noted earlier, it’s more about what happens 5 years from now when Framework stop supporting their old 11th gen laptops. It’s also about enabling folks to do whatever they want to do with their Framework mainboards once a laptop has reached its end of life. Or put differently, preventing an item from ending up as e-waste.

10 Likes

Also just to complicate things further, the boundaries of what is handled by BIOS have blurred over the last few years. Especially in portable devices. Nowadays, those things are handled by the “embedded controller”, which is distinct hardware independent(…ish?) of the software that executes on the CPU once it powers up.

Framework allows you to configure the things you mentioned (battery charging limits and fan curves for example) from the F1 (er, well, F2 on Framework laptops!) BIOS screen, but you can also configure them with a command-line tool: Exploring the Embedded Controller

2 Likes

I see. That makes sense. Then yeah, I personally am not equipped mentally for Coreboot, lol. Too barebones. If someone develops a GUI to go on top and replicates all the settings that the stock proprietary firmware interface exposes and more (that’s what I was hoping for when I bought my System76), then great.

Currently I’m having boot entry issues with mine, AND it has a nasty bug where after a few edits using efi tools in either Windows or Linux, the boot entries in the firmware won’t save. The System 76 team wrote me a custom firmware to flash to clear all settings and used me as a tester to see if they fixed the read only issues (it goes read only after a few efi changes). I eventually just gave up. It’s now a single boot laptop for PopOS and I vowed never to go Coreboot for my next machine.

See my video I posted earlier.

Also this one showing boot entry issues.

3 Likes

Windows 11 installed was using DISM so I bypassed the TPM and Secure Boot requirements. But System76 didn’t offer any solutions to that even now. I’m running their latest firmware release which is pretty old.

There are branches that have various fixes but nothing released yet. If I want, I could compile to try, but what normie wants to do that? Plus have potential for other bugs on an unreleased branch that’s just being tested.

And that’s my issue with Coreboot (at least this implimentation). I remembered I tried my hand at fixing the fan curves. I found the part where you can edit it in the source code and did it. Someone did it better eventually. But the issue was I had to download the entire thing, edit, compile, then flash. Nerve-racking. And I can see how most people won’t or can’t do this.

And if you don’t like what the community pushed curves, good luck.

That’s what I mean it’s probably great for a certain kind of person. You can customize everything if you k ow how to and have the tenacity. Most people don’t.

Framework is trying to be for everyone, including PC enthusiasts. Most PC enthusiasts are not developers who understand GitHub, C++, or Rust. You need these skills to “customize to your heart’s content” competently.

When I bought my System76, I thought Coreboot being open source is an awesome idea, but didn’t know what I was getting myself into. I thought it would have more options. Thought it was like open source firewall where it’s still easy to use but with a lot more options. Turns out it’s barely any options unless you do things in the source code.

Until System76 develop a standard GUI to expose all the settings an enthusiast expects, it’s more of a developer’s wet dream than for an enthusiast like me.

I’ve gone pretty far to mess with the code but it’s not something I want to keep doing just to adjust memory timings and fan curves.

The only exposed setting is boot order. You don’t even have access to edit boot entries in the firmware interface. As you see in my video, I did everything with command line in an OS. If you don’t even have the option to boot into an OS, you might be borked.

So if Framework does eventually go Coreboot, either make it so it’s a direct 1 to 1 replacement feature wise to the InsydeH2O bios or offer Coreboot as a (non-default) option.

6 Likes

this is why I want a coreboot capable machine and be able to change the code aswell. I want to see if I can develop such menu and configuration options. or see if there is a payload that allows such thing. (a small linux kernel and init that does exactly this would be a way, but does take more space next to for example UEFI and Seabios payloads). ( I have a few boards and a older laptop that might be compatible already. just not my main Framework (yet))

just coreboot that I cant change on a FW laptop would be cool, but just as usefull as InsydeH20. I trust the code a bit more tho, being opensourced. but I see your experience and many folks should be aware of what youve experienced. thank you for sharing your experience. hope it helps warn some of us to be sure what we are getting ourselves into.

2 Likes

Definitely not for me, and definitely for you. :+1:

I’d love to see what you end up making!

1 Like

I didn’t know that. My impression was that there was a GUI comparable to at least the old school BIOS present similar to present Framework BIOS. That sucks.

2 Likes

I don’t know how feature complete it is compared to H2O or AMI but Starlabs employs CFR to enable user-facing coreboot configuration, but it seems to offer more options than the System76 configurator.

5 Likes