Framework Compute Sled

I’m a big fan of Oxide Computer Company and how they do things. They made an embedded operating system, Hubris, to run all the low level functions throughout their rack. Please do watch Cliff Biffle’s OSFC talk for the best explanation of Hubris, it’s super neat.

I thought I’d port exhubris to the Embedded Controller in my Framework Laptop 13 11th Gen Intel® Core™, since we can target its Cortex M4 with big asterisks. And so I did!.. It just took patching the kernel and the debugger (aptly named Humility) in the worst ways, many a time gambling the Intel SoC, and so many more things that I realize I should write up in a blog instead (any recommendations?)

For now I’ll dump the screenshots I took and remind myself to document more often.

After guessing which pin was SWDIO, I got SWD and shortly afterwards got the minimal Hubris app to load and run. Did I mention Humility? Humility sparks joy.


More recently I brought up sensors, fan control, the Embedded Memory Interface (a fascinating peripheral) and power sequencing to support the minimum needed to turn on the Intel SoC. Powering it on is quite daunting, since there is little documentation on doing it properly aside from the EmbeddedController source code.

I’ve also been doing related side quests. My current breakout (pictured above) is finicky and I’d like to use the JST-SH cables that came with my debug probe, so I’m designing a board for that. And because there is no touchpad or keyboard to worry about, the input cover signals can be broken out and repurposed for GPIO and useful peripherals. For example, a NIC for a management network.


I’m already this far gone, so why not go farther? I installed Helios (a distribution of illumos) and got to multi-user without incident, but platform functionality is a bit of a blank slate outside of minimum PC functions. For instance, I can’t power down the system from illumos.

Luckily, I’ve had interest in kernel innards as of recent, so I’m taking a shot at writing device drivers for this mainboard. Wish me luck in not frying the Intel processor :melting_face:

Since we have Hubris on the EC and Helios as the host operating system, this is starting to look more like an Oxide machine than a laptop… as close as one can get with Intel Boot Guard vehemently defending the UEFI firmware, anywho.

Tune in next time for more EC bringup deets! or mishaps in illumos! We’ll see, hopefully in a full length blog post.


Huge thanks to @DHowett for mainboard advice, his CCD card and all his writeups about the EC. I seriously would’ve just left this as a funny idea if not for his utilities and posts customizing the EC firmware.

6 Likes

That is really really cool!
Have you published the code somewhere?

After guessing which pin was SWDIO

We have documented this and a lot more EC related information here: GitHub - FrameworkComputer/FrameworkDebugger: Debugger Firmware Multitool · GitHub

The Nuvoton chip we use in everything after 11th-13th Gen Intel Laptop 13 is even easier to flash! It doesn’t need a debugger, just UART.

1 Like

Regarding ease of flashing and future hardware design.

  1. make the EC flashable from a CCD slot card.
  2. make it possible, from the EC, to also flash the bios and usb-pd firmware from a CCD.

This would made the mainboard unbrickable.

The UART and SOC console is already available from CCD.

Allowing flashing from outside the system would trade off security and convenience too much away from security.

Since you need to get custom hardware or soldering anyways, you might as well just use the JECDB documented in the link I shared above.

I don’t know why you would consider it a security problem.
There are many non FW main boards that permit it.
A FW laptop is particularly easy to open and get directly to the mainboard, so allowing flashing from outside is not a lot different is it.
Is it also available on a large portion of desktop main boards. I know some that permit flashing from a usb stick even when the CPU is removed.

This is off topic, let’s discuss the original topic of hubris firmware here.
Just one comment: Plugging something into a type-c port of a laptop versus opening it up, soldering a connector and connecting to that, is different.

2 Likes