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 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 would not 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, 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 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 miniscule 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.
they are pretty committed to the ecosystem too, they gave out a gripload of the mainboards out to folks and everyone started cobbling thier own computers together. I for one am in love with the usb-c cartridge system and im currently cramming an sdr into the formfactor
Since you mention the problem with finding the right charger — USB-PD can be a little odd, for sure. Going to leave this here since some reader may find it interesting: https://www.amazon.com/gp/product/B08MQ7HMPY/ . I live in an RV and prefer to go straight to battery when I can, and this guy is the best one so far I’ve found as a ‘consumer unit’ (not a raw board, though there’s plenty of those around) that will do the full wattage the Framework will take DC->DC. Won’t do it on a 12V supply though, you’ll need to feed it 24V.
I’d love to see some more lab style tools have support for framework mainboards.
USB-C charging is situationally non-functional
Are you referring to the fact that for PD and QC, whenever you plug something new into some chargers and power supplies, they temporarily turn everything off to renegotiate power draw to all devices to balance out the total current draw? I know it’s necessary, but it can be problematic if you have something plugged in that requires constant power and this hiccup can cause some devices to reset. I’m not sure if the Framework PCs do this, but it seems like it would suck if you plug in something into the laptop and suddenly one of your ports turns off and back on.
Turning things off and back on has been a staple of personal computing.
Ok. Thanks.
This has been a helpful series, but the disclaimer at the top of this does perhaps somewhat explain why sections of this series have read slightly like a fanboy infomercial for USB-C. I think it would have been helpful to preface the series with it. I’ve appreciated the series but at times the tone has been a bit strong.
That said, neat laptop! I know some thinkpads had hot-swappable expansions (a section which would take CD/DVD/HD/Battery IIRC) but this takes the idea of expansion cards to a much better place. It’s what I’d have wanted in a laptop 20 years ago.
If I’m honest, it’s not what I’d want in a daily driver laptop now; the thought of a laptop where they’d messed up the thermals makes me break out in sweats; that’s fine for a hobby device, but not for something you need to rely on to keep your business going. It suggests to me that they’re lacking experience and makes me worried what else might be wrong.
I’m not really sure why USB-C makes this work better than PCMCIA or PCI-E. other than the chargers, all this was possible with those? Would be very helpful to have a follow up article to explore that more.
I really hope they learn from and improve this version, and that the project keeps going. Ongoing support is vital for a project like this to work.
I guess there’s a few reasons to use USB-C: PCMCIA is at this point, a dead technology. It doesn’t have the bandwidth for modern peripherals. The follow-up, Express Card, never really took off, and although Expresscard 2.0 allowed access to a PCIe lane, it doesn’t seem to have ever been used.
Direct access to PCIe would be useful, but it’s designed as internal port, that’s only rarely swapped. Mechanically, it’s quite fragile.
USB-C is designed for devices to be plugged and unplugged many times (and hot-plugged), so mechanically it’s up to the job. It’s becoming ubiquitous, so there’s already a wide range of devices that could be plugged into it, and via Thunderbolt, it offers connection to PCIe. Also, as you noted, it allows for quite a lot of power to flow in either direction. Another benefit is that as they’re ‘just’ USB-C devices, you can plug the expansions into anything else with a USB-C port and have them work (assuming OS support). They’re basically just USB peripherals, in a form factor that allows them to fit into sockets on the Framework.
Framework could have come up with their own connector (or perhaps updated ExpressCard), but using a connector that’s already widespread and cheap makes much more sense.
(PS, as I understand it, the thermal problem is only with some third party expansions, the official Framework ones all work fine.)
ExpressCard 1.0 is basically a combination of a USB 2.0 port and a PCIe 1.0 x1 slot. ExpressCard 2.0 had USB 3.0 and either PCIe 1.0 x1 or PCIe 2.0 x1.
What ExpressCard should have had from the start is the 54mm wide cards using a full width connector with the extra width devoted 100% to additional PCIe lanes while the 34mm width would be one lane.
Also, making PCIe 2.0 optional for ExpressCard 2.0 was really stupid. It should have been required to be PCIe 2.0.
I’d like to see an ExpressCard 3.0 that bundles USB-C with PCIe 3.0 or 4.0, with x1 in the 34mm and x4 in the 54mm width. It should be possible to make the slot compatible with all prior ExpressCard 1.0 and 2.0 devices, and 34mm ExpressCard 3.0 devices backwards compatible unless they’re tapping into the USB-C connection. Might be possible via some electronic magic to have such cards able to connect to and downgrade their speed to the USB 3.0 and 2.0 in the prior versions.
For anyone to do anything with this they’d have to obtain all the rights to it from the USBIF, which took it over after the PCMCIA folded in 2010. USBIF last revised the ExpressCard specification in 2009 and removed it from their website in 2018. So apparently they don’t care about it anymore.
In my experience, USB-C isn’t up to the job, mechanically. Gave my autistic daughter a Dell laptop in 2020 with a barrel jack. Never failed, not even when I added in a generic non-Dell adapter. Upgraded her to a Dell USB-C laptop in 2022 and I’ve had to replace six (!!) adapters (at $35 a pop!) in seven months because she isn’t extremely careful pulling out the plug. Even put on one of those magnetic tip adapters and I’m now on the third one of those. She’s gotten better about it but I am still uncertain, because a thin metal shell in a flat rectangle configuration levered at the end of a three-pound laptop lifting and pushing laterally seems to me to be a very precarious design. I just don’t understand how that could have passed QA. It’s getting so expensive, I may have to lock her laptop in a cabinet, run extension cords, and treat it like a desktop.
Meanwhile, the 2020 barrel jack is still going strong as my daily driver. Typing on it now. I have the opportunity to take her 2022 laptop when she upgrades thanks to an autism scholarship, but I think I don’t want it, just because of that issue. I’m not exactly kind to my laptops, either.
I wish a Thunderbolt-style connector had caught on; My iPhone charger has yet to break after four years of abuse. A strong metal tab instead of a thin metal socket that has to fit inside another socket. (And on that note, one socket is enough to collect junk inside it; USB-C gives us two.)
Have you considered modding the USB-C connector to make the removal more robust? Get some Sugru and mold it so it creates a large square (right angle) base against the laptop, then the pullout angle will be much reduced and the “wings” will lever the connector out much more squarely. Think of a trapezoidal shape with the large side toward the laptop and the USB-C connector encased. Just make sure to put some plastic wrap on the laptop to ensure an easy release after molding.
Oh, totally agree PCMCIA is dead now, but in it’s time it was supposed to be all this; it just never got far as far as I know? I’ve owned a few cards, but they were never something I swapped in as I needed; I basically just used it to add an SD reader to a laptop without one (Or maybe that was an expresscard?).
I suppose the benefit in USB-C is that there’s plenty of peripherals or adaptors in USB-C format already, so it’s far easier to make a thing in the framework format. And the framework dongles are usable to anyone with a USB-C port. Whereas the market for PCMCIA cards was always tiny?
Agreed, particularly as practically the only, if not the only time this series has anything but fanboy level of praise for the wonders of USB-C is this article…
>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.
That right there is the big problem for USB-C, it has still got some flaws on the Framework (what a shocker being a really quite daft overly complex spec) but most other devices are worse… Yet how are you to know this? Making USB-C kinda crummy at best.
Don’t get me wrong I do like the Framework myself, I think its a very neat idea to have such customisable parts with that wide variety in the IO. I even think using USB-C is for them the right choice right now, flawed as it is. As they are not the big business machine IBM(lenovo)/DELL type producers that could make a simpler and better more streamlined and unified spec with good connectors for these modules become ubiquitous enough, so they have to use what currently exists. But none of that makes USB-C anything but a problem child that could have been so much better.
Just to be clear the thermal issues are specifically with some of the more complex expansion cards. The laptop itself and all the simple port adapter cards are rock solid. It’s your call what to spend your money on of course but it’s not like Dell/HP/Sony etcetera have never messed up a thermal design.
Seems like a metal (aluminum – though copper would be prettier and work better) could pull a lot of heat out of one – though of course it’d be a lot more expensive to manufacture.
I have a framework laptop and i love it. I love the modular I/O and future potential
I also liked the framework concept from the beginning and how usb-c really enabled a high performance expansion port. But the most revealing part of the article is not the potential but how hard it will be to take any prototype over the last mile into product. It reminds me of the moto mods that I also genuinely like the potential of.
For my part, I regret that Framework is not that much committed to opensource (ie:Coreboot) and opensource OS and (at least) linux friendly components (wifi/touchpad etc…).
When you see most of the complain from people, you see that repair-ability and tinkering is not their , let’s say business”.
“Can we a nvidia card?”
“Can it be tinier? ”
“How to game on a Framework?”
So why focusing on microsoft?
I am on the market to buy a new laptop the as long as Framework thinks Windows first, I am not sure to buy their product.
Wait….this is windows only? I can put Ubuntu on my acer all-in-one and me and the rest of the family love it. Kids draw and play games.
We use the same os in every room of the house so my 3 and 5 year old know how to get to what they want.
Makes me think there is something more to this story – did microsoft invest in this project?
Linux runs fine on framework. I’ve been using manjaro is the primary/only os on my 11th gen since they came out. Can’t recall having to do any tinkering to make it work.
Some people got pissy when FW released a hardware version specifically for Chromebooks that seemed to have some less-open concessions to google included.
I was under the impression all the hardware in a framework was either already in the mainline kernels or at least well supported by the FOSS OS. They certainly recommend some Linux Distro on their own website. And I know it was announced that the embedded controller that handles most of the hardware is now FOSS software, so while I don’t know if anybody has yet got coreboot working on its, I wouldn’t call it fair to say they are not committed to open-source.
Its like folks complaining that there are a few bits for Steamdeck hardware support (most notable the alsa config bits for the sound card) that are currently only in SteamOS and haven’t yet at least left Valve. Oh now how terrible, but at the same time there are projects funded by Valve, releases they have made etc – There is always going to be something, especially for such new hardware with smaller teams behind it that isn’t what you wish it was, or takes longer than you would like to be opened up, but the overall philosophy so far at least does seem to be pushing that way for both.
It is all supported by Linux. The BIOS is not open source (i.e. CoreBoot, but they’re supposedly working on that), there’s firmware blobs for the wifi, that’s what the guy is referring to. Standard stuff, though.
Framework thinks “Windows First” because “Linux first, and every single piece of hardware must completely open” is a much, much smaller market share, like it or not. I, for one (despite being Linux-only, pretty much), am glad they went that route so they could make some $ and stay in business. The Framework is way overpriced for what it is, compared to a ‘typical’ laptop of the same specs. But it is not typical — when the 13th gen mainboards come out, I’ll upgrade mine from 11th, and there actually is a decent resale market for the old mainboard (if I don’t end up using it for some project myself), and I’ll have upgraded for _way_ cheaper than getting a whole new laptop. If they didn’t make enough $ to stay in business, that wouldn’t be possible.
Also being ‘fully’ open with things like Wi-Fi is tricky for RF regulator compliance etc – some of this stuff has blobs because it is the way to be functional legally and relatively easily. So pushing for Entirely blob free is often counterproductive for the basic functionality.
Looking at their website I’d not say they were Windows First – they clearly advertise support for various Linux Distro and Windoze pretty even handedly. Which is the right move really – support or at least allow your users to use their purchase any which way they want to. I’d not want to run Windows again myself, but I’m fully on board with making it possible to run the stuff.
I’d have to check with the compliance company we use at work but pretty sure they are just looking at near/far fields and not firmware. So they wouldn’t know whether it’s open or closed just if you are staying quiet when you are supposed to
Bother, annoying reply system. The post below now repeated here in the correct spot I hope…
I’m not 100% how it work(ed) but its something about the fitness for sale and actually passing those tests that makes a blob system easier to pass – not that you 100% can’t have other methods. Fortunately I haven’t ever had to bash my head against the stupid leagalse documents and no doubt many pointless tests to bring products to market so I’m no expert. But there is or at least has been something in the regulations somewhere that made that an issue for some projects I’ve looked at in the past as they tried to make it into a product.
p.s
Maybe a bigger issue for cellular networking than Wi-Fi but I’m sure I’ve seen such things mentioned in both
I’m not 100% how it work(ed) but its something about the fitness for sale and actually passing those tests that makes a blob system easier to pass – not that you 100% can’t have other methods. Fortunately I haven’t ever had to bash my head against the stupid leagalse documents and no doubt many pointless tests to bring products to market so I’m no expert. But there is or at least has been something in the regulations somewhere that made that an issue for some projects I’ve looked at in the past as they tried to make it into a product.
It would be pretty neat if the next version had a copper pad (with an appropriate coating to protect against corrosion) in each expansion bay, tied into the laptop’s thermal management with heat spreaders