New Post: Librem 14: Adding Librem EC, Freed Embedded Controller Firmware

Please limit discussion in this thread to the topics covered in the news post itself.

Starting with the Librem 14 laptop we are including fully liberated Embedded Controller (EC) firmware with all the source code available. This is something we set as a goal a long time ago, and now we are finally here. Let’s first start by explaining what the EC is and does.

Read the rest of the post here:


Thanks for the update. I’m glad to have access to the EC as I definitely like the ability to control the fans and charge capabilities. Definitely cool. Also glad to see a disclaimer at the bottom of the post too, as this is something that really should be done by somebody that knows exactly what they are doing to avoid bricking.

@Kyle_Rankin has there been any scoping done for the neutralization of the ME? I’m assuming that work could take a few months given complexities of the new proc and various Intel-isms?

1 Like

Haven’t scoped the work yet. The team that would be digging into it is focused on the EC right now.


This news is fantastic. I decided to not buy the L14 (due to the lack of replacement parts), but this tips me toward buying it.

I love the fact that Purism is planning to upstream its code changes to System76’s EC project for 8-bit 8051 embedded controllers:

For more info about System 76’s efforts to liberate the embedded controller, see this article:

Given the fact that Purism and System76 are direct competitors, I really hope that that the two companies will work together on this. @MrChromebox deserves a big thanks for being willing to send his code changes to System76, and Jeremy Soller and Tim Crawford at System76 deserve an even bigger thanks for putting out their code under the GPL 3.0, so that their competitors can use it.

I would also love to know which 8051 chip Purism is using for its EC in the L14 and whether the C code is being compiled with standard gcc or something else.

I ask because I worked on a project back in the late 1990’s that used an 8051 chip and we had a heck of a time because those little buggers have so little storage. We were using a Keil C compiler whose license cost something like $30k at the time, and it kept failing once our code got above a certain size. Keil refused to fix its crappy compiler. It was that horrible experience that convinced me that I never wanted to be dependent on proprietary tools ever again.

I’m also curious whether there is any more documentation about how to use the Rust code in the tool directory to get info about the 8051’s firmware. The info at is pretty vague about how to use it. I’m also curious why Jeremy Soller decided to use an MIT license for that part.


it’s an ITE IT8528E, and the S76 open-EC is compiled with sdcc.


What makes 8051 special so that even with OSS code people are using it (instead of more conventional ISAs like AVR, PIC or ARM)?

It’s amazing how transparent and collaborative Purism is, in comparison to any other company out there. Thank you for the bright future of free computing.


Yeah is cool that Purism is a Perseverance company on free software mission.
I will definitely buy one L14 for having the EC Libre and a good general desing with small edges.


special? it’s cheap and simple. We didn’t pick it, it just happens to be what the EC on the board uses. If we were designing from scratch, probably would have gone with an ARM chip supported by Chrome EC


For what it’s worth, we don’t see it that way internally (and encourage our employees not to see it that way). If it ever comes up in an internal discussion, inevitably our response ends up becoming something like the following:

While we have FOSS roots and that’s obviously our core audience, we are trying to build an ethical computer ecosystem for everyone (everyone, not just FOSS geeks like ourselves, deserve freedom, privacy, and security). So we view our competitors as those Big Tech household names and that’s where we need to continue to aim our sights.


That’s awesome to hear… err, read


I’ll just mention the concept of coopetition. I don’t see this arrangement as a zero-sum game, and not just because the market is big.


This update was really exciting to read! The power management is something that has often bugged me using other laptops.

Where does discussion on user-space improvements on these things typically take place? This forum interface doesn’t seem ideal for technical conversations; are there other venues people use?

1 Like


I have installed Arch Linux on my Librem 14 but I have an issue with keyboard backlight. By default, Arch installed the system76_acpi kernek module. I noticed that for the keyboard backlight, it had a max_brightness set to 5 instead of 255 (that is the observed max value when you hit the key). This ends up making gnome confused and very weird backlighting behavior.

So Instead I installed librem-ec-acpi-dkms from It loads correctly and I see no error in dmesg. However, there is nothing in /sys/class/leds/.

~ % uname -a
Linux librem 5.12.2-arch1-1 #1 SMP PREEMPT Fri, 07 May 2021 15:36:06 +0000 x86_64 GNU/Linux

~ % lsmod | grep system76
~ % lsmod | grep librem  
librem_ec_acpi         20480  0

~ % ls /sys/class/leds 
ath9k-phy0        input4::scrolllock  input23::kana        input27::capslock  input27::numlock
input4::capslock  input23::capslock   input23::numlock     input27::compose   input27::scrolllock
input4::numlock   input23::compose    input23::scrolllock  input27::kana      

~ % sudo dmesg | grep librem
[    0.000000] DMI: Purism librem_14/librem_14, BIOS PureBoot-Release-17.1 01/01/1970
[   15.282472] librem_ec_acpi: loading out-of-tree module taints kernel.
[   15.282491] librem_ec_acpi: module verification failed: signature and/or required key missing - tainting kernel

I’m running out of ideas on what’s going on. Any help appreciated.

Turns out Purism shipped the laptop with an incorrect version of pureboot still using system76 acpi IDs, and the librem-ec-acpi-dkms repo had a bug. @nicole.faerber helped me on matrix, I got a new pureboot build and patched the dkms. Everything is now nice and dandy.


@primalmotion could you share how you patched the EC (if that’s what you did)? Some of us have issues with the Librem 14 crashing when unplugged and my hope would be that the June EC release would fix that…but don’t know how to flash it properly, don’t want to brick my device…

1 Like

If that EC firmware upgrade fixed the crash when unplugging issue, we’d say so, but it does not. There will be an EC firmware update to address this, but it has not yet been released.

primalmotion said they patched the EC dkms ACPI driver, not the EC firmware. Two very different things.

Any updates on the EC firmware upgrade that would fix the crashing?


You can find the change log of new releases here


Is there a way to check the embedded controller firmware version while the Librem 14 is booted into the Qubes operating system?

1 Like