Skip to content

All About USB-C: Laptop Framework

Talking about high-quality USB-C implementations, there’s a product that has multiple selling points designed around USB-C, and is arguably a shining example of how to do USB-C right. It’s the Framework laptop, where the USB-C expansion cards take the center stage.

Full disclosure – this article is being typed on a Framework laptop, and I got it free from Framework. I didn’t get it for Hackaday coverage – I develop Framework-aimed hardware as a hobby, specifically, boards that hack upon aspects of this laptop in fun ways. As part of their community developer support effort, they’ve provided me with a laptop that I wouldn’t otherwise be able to get for such a hobby. By now, I’m part of the Framework community, I have my own set of things I like about this laptop, and a set of things I dislike.

This is not an article about how I’m satisfied or dissatisfied with the Framework laptop – there’s plenty of those around, and it wouldn’t be fair for me to write one – I haven’t paid for it in anything except having lots of fun designing boards and hanging out with other people designing cool things, which is something I do willingly. I’m an all-things-laptops enthusiast, and the reason I’d like to talk about Framework is that there is no better example of USB-C, and everything you can do with it, in the wild.

It’s USB-C All The Way Down

There are four USB-C ports on the Framework laptop. All of these ports can be used as charging, USB3, DisplayPort or Thunderbolt 3 ports. This is possible in part because, well, there are no other ports in the system – these four ports are what you get, bar the headphone jack, and each port has a Thunderbolt and PD controller assigned to it. However, there are no dongles to deal with, unlike Macbooks – all ports are deeply recessed into the case, and you use so-called expansion cards for your port needs. The simplest one, a USB-C expansion card, just extends the USB-C port it plugs into – it’s essentially a USB-C extension but somehow, of the standard-compliant kind; it has no active components inside of it and just forwards pins 1:1, inheriting all the properties of the ports.

There are other cards, like HDMI, DisplayPort, USB-A, Ethernet and also storage expansion cards. As you might guess, they summon altmodes out of the USB-C ports they’re connected into – with DisplayPort and HDMI using the DP altmode, DisplayPort card just passing the high-speed altmode-enabled pins through, and HDMI using an active DisplayPort – HDMI converter chip. The USB-A acts as a male USB-C to female USB-A 3.1 adapter, Ethernet connects over USB3, and storage expansion cards seem to connect over USB3, too.

This solves quite a few problems. If you want a laptop with a very specific combination of ports, you are likely able to get it here. You don’t have to carry dongles – the expansion cards are small and manageable, you can throw a fistful of them into your laptop bag, and only use the DisplayPort card when you need a DisplayPort output, having USB-C or USB-A ports at other times instead. If a port breaks, you no longer have to replace and fix the mainboard – swap the Expansion Card and go. Oh, and if you have one more USB-C-equipped laptop, all your expansion cards will work as USB-C dongles in a pinch, provided that the necessarily inflexible mechanical form-factor isn’t an issue for you.

Community-Driven Cards

From the beginning, Framework published files for others to develop their own expansion cards – a KiCad template with part numbers, an example card with an STM32 microcontroller, and printable card housing files. They also pledged to support developers in the community by funding prototype production runs – the program that I’ve benefitted from, as I’ve described above. While a lone hacker might not be able to develop a Thunderbolt device, you still get 5 V output and a USB 2.0 port, with USB 3.0 ability if you dare try your luck at impedance matching. Plus, of course, USB-C charging passthrough is there as long as you preserve the CC lines.

Since then, the Framework forum has become lively with people inventing, discussing, developing and polishing expansion card designs, ideas ranging from LTE modem to MagSafe. There are already a few community-sourced cards, like the magnetic USB-C charging card, which anyone can assemble by combining a 3D-printed case with Aliexpress components, and people have been improving upon it. There are also cards for a serial port, a miniDisplayPort, and a VGA port currently being designed by someone on Discord; cards like the RP2040 and dual-port USB-C are brewing, and we might see a few unexpected designs appear in the future, too. In fact, there was an Ethernet card community project way before an Ethernet card appeared on the Framework store!

Sadly, not all community-driven expansion card designs have reached production. I don’t think this is Framework’s problem – rather, it’s a general “getting hardware from design to reality” problem, something I had to solve for myself, and I still struggle with it at times. It would indeed be cool to see more community-driven expansion cards out there, and given a different set of circumstances, the designs will flourish.

Flaws Mostly At The Edges

Not everything is perfect in Framework land when it comes to USB-C. For instance, the expansion cards are somewhat small, they have a certain thermal envelope, and in the wild, it was found that storage expansion cards controllers might overheat and start throttling – causing read/write performance to drop. Every Framework laptop comes with a screwdriver, however, and there’s a guide on how you can put this screwdriver to good use by adding a thermal pad inside your storage card – bringing the heat down a notch and stopping the card from throttling. That said, it’s not the only card where this could be a problem – the community-driven LTE card, whenever it actually appears, might hit thermal issues too, it’s just that there’s not a lot of space mechanically.

All expansion cards, except the USB-C passthrough card, are basically permanently-plugged-in devices, and they consume power. Each of those cards has a 5.1 kΩ pulldown inside of them, which is detected by the Thunderbolt controller of each USB-C port, and causes the controller to go out of deep sleep mode, enabling the altmode that the card requests. Plus, it switches the internal 5 V power rail to the USB-C port, powering the card’s internals. My guess is that both of these factors are what is causing the expansion card-related power drain that some people report. This drain was mostly, but not fully, negated by firmware updates at some point; yet, some part of it is inevitable.

USB-C charging hasn’t been flawless either. There are power supplies that I found the Framework wouldn’t work with, and I did have to scramble to find a different USB-C PSU at one point, when I thought I already had one which worked. Not unlikely that the PSU was to blame, and, I never updated the BIOS, either, so it’s quite likely that I’m a firmware update away from better compatibility. Also, in certain batches of the mainboards, due to a FET in a charging path having different characteristics than the designed-in one, 15 V charging specifically didn’t work well – precluding the use of certain powerbanks and PSUs. Given that the stock Framework charger operates at 20 V, it makes sense that this failure mode was missed. Thankfully, you can order a replacement FET and swap it, and re-enable the 15 V charging in the EC – remember, the EC has open-source firmware.

A Clear, Open Path Forward

These issues are fun to talk about, but they’re tiny when it comes to using the Framework’s USB-C ports day-to-day. Overall, the USB-C implementation on the Framework laptop is brilliant, and many laptops don’t reach anywhere near the level of functionality that its USB-C ports provide.

The level of openness when talking about design decisions and flaws is unparalleled, too – no other laptop company would’ve shown you where to add a thermal pad, or given you a FET part number to substitute a subpar FET on your mainboard when your USB -C charging is situationally non-functional; much less publish partial schematics and connector information for the DIY community. The USB-C-fostered ecosystem of Framework is seriously impressive to witness, and I can’t wait to see what it brings, both for the Framework userbase, and also influencing other laptops’ and devices’ design decisions indirectly by doing things right, and by using the variety of USB-C modes to its advantage.