Framework and open source

After reading blog posts and working in open source I started to get curious about what frameworks view is on open source for their products.

First off, Y’all have done a fantastic job selecting hardware with linux support in mind and I really appreciate that.

I was wondering if there is more going on behind the scene, working with vendors for better support, working with OSs to improve services they offer or maybe everything works and not much is needed by framework.


I’d be super happy if they would make their own stuff open source. I know they are looking for ruby devs and while I probably couldn’t do full time I’d love to help with some code, review or testing work.


I’m probably ignorant of what all has gone into the framework laptop, but what part of it would be open-sourceable? Firmware? OS-specific drivers?

1 Like

The EC and the BIOS (they are looking into coreboot, apparently InsydeH2O is just temporary so they can ship a working product).


I’m ignorant as well and it was why I opened this thread - just curious what things, if any, Framework are doing in this space, and the answer of “nothing” is also great because it means everything just works.

1 Like

Discussion on another thread led me to wonder: is the keyboard firmware open source, and can the fn key be customized (for example, swapping it with the ctrl key)?

There are a lot of fanatical keyboard users out there (e.g. QMK) and it would be neat if this could work inside a laptop.

1 Like

Keyboard controller is part of the EC firmware. @nrp posted this before elsewhere:

We own the embedded controller firmware, which is based on Chromium EC, and we’ll be releasing the source soon.

Which means customizing it should be possible, although not a trivial task.

Even now though, there should be an option to swap these keys in the BIOS setup, in the Advanced menu (I don’t have the laptop so can’t check):

Form: Advanced, FormId: 0x1 {01 86 01 00 8C 1A}

	One Of: Swap Ctrl-Fn, VarStoreInfo (VarOffset/VarName): 0x91, VarStore: 0x1234, QuestionId: 0xA, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 71 1A 72 1A 0A 00 34 12 91 00 10 10 00 01 00}
		One Of Option: Normal, Value (8 bit): 0x0 (default) {09 07 73 1A 30 00 00}
		One Of Option: Swap, Value (8 bit): 0x1 {09 07 74 1A 00 00 01}

Thank you! This is exactly what I was looking for in the thread @Duane_Johnson mentioned earlier; it works great.