A Developer's Experience: Framework 13 AMD 7040 Series
All the initial problems you may run into ;)
7 months ago I pre-ordered the very laptop I am writing this article on.
A few days ago, it finally came in the mail.
This will be a few of my thoughts and struggles as I’ve gotten it setup the past few nights, and what my overall feelings are.
A quick note, this might sound like a super long rant. I tried to write down every random problem I ran into just to share with others who are looking to get into this new piece of hardware. I really love what framework is doing, and a lot of these problems aren’t on them, its AMD + Linux for some of my gripes, and some are just on me.
The only real knock I can give framework on all of this, is having so many fixes in so many places. They should make a single document for post install of Ubuntu + Fedora that has all of these things, instead of so many nested steps on generic guides covering all of their laptop versions.
I have already seen members in their official form miss steps because these red footnotes are nested in other guides.
With that said, let’s get started.
Building it
Super fast setup process. This was the most fun part. The motherboard is already installed, and you only need to install the ram and ssd modules with the DIY build. The bezel pops on with magnets, and the keyboard has a connector to attach.
After that, you flip it over and tighten the screws. I thought I got a bad build, because the right side of my keyboard wouldn’t flatten until screwing it in.
Turns out this is by design so you can lift it easier, and it’s mentioned on the install guide, I was just overly eager to move ahead before catching that part!
Update: I opened the keyboard again to check something else, and then red lights started flashing on the side. Turns out this is due to a switch triggered by a piece of foam underneath the laptop keyboard, pressing down on a certain area of the motherboard.
Source: https://community.frame.work/t/blinking-red-led-on-side/16662/10?u=zach1
Thanks to this, I was able to notice it and move the foam slightly, and tighten the screws again. Definitely an odd choice, the reasoning framework gives, is so you don’t disconnect the motherboard while the system is on and input cover is off, but the foam can get moved slightly and the switch won’t trigger.
The build quality and ability to swap ports at any time is amazing. One thing I can’t stand on my mac is the keyboard getting dirty over time. With this I can take it off and spray air out of it, instead of into it, like on a Mac.
I do wish they had a way to fit 3 ports on each side, like the upcoming 16in version, but 4 is good enough, and I have two extra ports on my desk in case I need them.
Custom Kernel on Ubuntu
After installing Ubuntu, you have to swap out the kernel and update grub, not really a big deal and it’s pretty straight forward if you are already a software dev. For regular people however, I can see this stuff starting to get complicated, in which case, I recommend just using Windows.
Windows works great. I know because I have already installed Windows, Ubuntu, and Fedora as you will see later in this post…
Fingerprint Sensor issues
This wasted hours of my time. The Install guide is a bit janky in my opinion.
Instead of 2 guides like this:
How to Install Ubuntu
How to setup 7040 series boards on Ubuntu
They chose to intertwine the “How to install Ubuntu” with the amd instructions as red footnotes under 2 steps.
When I booted into Ubuntu and attempted to use the fingerprint sensor, I got an error, which they had a work around for.
It turns out that some of their fingerprint sensors received a crappy firmware update from the manufacturer, out of their control, before shipping these.
It works in Windows, but not Linux on this version. The solution is a newer firmware, or a downgrade from what I could tell by reading the forums.
It seemed simple enough… Use the fwupd tool to update it.
Unfortunately for me, these 2-3 simple commands that are supposed to first, list your devices, and then install a new firmware, didn’t work, and didn’t work in a super annoying way.
It would tell me a usb device is busy (I was sure to unplug all ports from the framework) and then just hang. That device ID matched the fingerprint reader. So I didn’t see how to disconnect that without being unable to do an update. The daemon for fwupd froze up so bad that a reboot gets stuck for 5 minutes until that service dies.
So after wasting an hour, I decided to install Fedora. (LOL)
Why? Because framework mentioned Fedora 39 having better support, and no need for a custom kernel.
Surely, the fwupd stuff would work there?
Nope, the same exact problem with it claiming some usb device was busy and I could not upgrade the firmware.
Finally, I decided to install windows 11 (LOL)
At this point, I made the iso, didn’t put a product key in, and booted it.
Went and downloaded the Framework driver bundle.
Thankfully I had a compatible usb c → ethernet dongle, because wifi doesn’t work in windows out of the box on this new chipset, so that I could download the bundle!
IT WORKED
Sure enough, the windows driver bundle put the sensor on a working firmware.
I re-installed Ubuntu because I didn’t think to dual boot at the time, and the sensor worked perfectly.
Problem solved, never give up.
Trackpad Gestures….
Coming from a Mac it’s just insane that Framework, but really, Linux in general, has such poor support.
One huge annoyance is that I can no longer two finger swipe back and forth in a web browser. These little things stack up and make it very hard to use as a primary machine once you are used to such high quality gesture recognition.
In addition I have to press much harder to click on the trackpad, and tap to click just doesn’t work as well as a Mac.
Above everything, the trackpad gesture issues are the biggest problem I have been facing on my way to daily driving linux.
Update: I learned that a “new” window manager, called Wayland, is supported by firefox and chrome, but it isn’t on by default in Ubuntu 22.04.3 for firefox.
I was able to enable it and now I can swipe back and forth. Strangely enough, system freezes happen more frequently for the first 10-15 minutes after booting and having the browser open, then they are happening rarely again. A known issue that will be fixed soon in an upcoming kernel according to the framework team.
Fractional Scaling…. still an issue in 2023
For modern apps not using Wayland…. full gesture support, fractional scaling, etc doesn’t work.
After fixing firefox, I noticed Slack was incredibly fuzzy…. it doesn’t use Wayland. The only option seem to be spending hours trying to find how to enable every random app, or disable fractional scaling and have a hard time reading stuff because it’s a bit small.
I was able to go back to 100%, and then increase the gnome font scaling to 1.5 as a middle ground for now.
Super bright fingerprint light
I started using this to write this post at night, and I like things dark. I am able to turn off the keyboard light, enable dark mode, yet this fingerprint sensor has a bright light that cannot be turned off.
I reached out in the forums about this and it seems there should be a way, but it’s not supported on AMD devices as of this writing: https://community.frame.work/t/amd-turn-off-fingerprint-reader-light/37753/4
If I am on an airplane at night I don’t want to be distracted by light coming from my keyboard area.
Wifi 6E is (mostly) broken
Last thing I tried, was a speed test… Then I realized, this laptop isn’t using the 6ghz band on my router. I own a Pixel 6a, iPhone 15 pro, and a couple other things with 6ghz support, which all work fine.
For some reason Ubuntu just says 2.4, and 5ghz are available. Framework support requested that I send them proof and some other stuff, but I honestly wonder if any of them have had a chance to test the 6ghz band in linux.
Don’t really have time after my exhaustion of all the other issues to send them a detailed report on that just yet, haha.
Update: Turns out, this was due to having band steering on in my router.
Pixel devices, iPhone 15’s, etc, all can use 6ghz with this setting on, but not the framework, it seems to… steer itself, to 5ghz haha.
After turning it off, it likes to go onto 2.4GHZ even when I’m close to the router… very frustrating to have such crappy speeds because the wifi firmware is so bad.
When band steering is off and you are 1 inch from the router, it will sometimes negotiate a 6ghz connection, even when it manages to, the speeds are absolute crap, for some reason this wifi card really sucks in linux. A small pixel 6a right next to it can do 1gigabit in a speed test while this laptop is lucky to get 300 down.
Disconnect and reconnect, and sometimes you will get 5 ghz, or 2.4, when every other device I have from this next test location has a -60dbm 5ghz connection. Very weird and I hope AMD is working on it.
More fingerprint issues
1Password has official support for fingerprint readers in Linux, however it doesn’t work and I am working with them to find out why.
Update: The framework team made a new fingerprint guide and at the bottom is a command you must run to enable the fingerprint reader for these other tasks. NOW it works with 1Password!
Docker problems
I have a project running in a VS Code dev container. I noticed that a local app started hanging, loads forever in the browser through the forwarded port.
This seems to happen after leaving the lid closed for a while and then coming back. Simply re-opening the dev container seems to solve it, and the http requests go through again.
Freezes
A known problem in the current kernel, sometimes the system freezes for 1-15s at a time, but it seems to be happening less often the longer you have kept the device on since a restart, and a new kernel is on the way with fixes I hope.
Gaming
It can run games, but woah, do the fans spin up. I was able to briefly run Rocket League on windows at the native resolution of the display, it quickly dropped to around 30fps with a lot of drops, so you would definitely want to use AMD FSR compatible games, or drop the render resolution to 1080p or lower.
Update:
I found a setting in the bios about game mode on the GPU and enabled it. Starting rocket league again, it’s able to nearly lock 60fps at the screen’s native resolution.
I also went and connected it via hdmi while on battery to a 1080p display, and it runs games great at this resolution, the fans aren’t even that loud!
Performance
Overall performance seems on par with Apple Silicon. I only have an M1 machine to compare, but the fan stays off most of the time, if I do an intense compile or package installation, it barely spins up. In games at high resolution, it is full blast though.
Battery Test
The first night as I am writing this, I did some coding work, had it on performance mode, had it sitting with the lid closed during the day, and started out with a 90% charge limit that I set in the BIOS.
I closed the lid at 16% and in the morning I opened it at….
8% (after around 10 hours)
Not bad! I think this is close to Mac level but not quite all the way there.
Definitely solid enough that you can leave the laptop unplugged and closed during the day between breaks and other things and it is going to save most of the power!
You need to make sure certain ports are not in the rear slots for sleep to work well.
As for usage when it’s on:
Running on ubuntu power saver, it does last longer, but I’ll give you an example of how much performance is being lost.
I ran a yarn install (packages for an app)
It took 45s on power saver, and the battery estimates were closer to 10 hours at full.
Put it back on performance, ran this again,
15s to run this command.
Which is the speed I was hoping to get out of a 10 hour battery life, but it is estimating about half that on performance with my workload.
I feel for people running performance stuff on the older frameworks with the smaller battery!
Conclusion
Posted another updated here about how good it has been since dealing with all these things:
I actually like the device, I promise. It just has a lot of issues, some of them are to be expected, but also there’s a bit more than I was expecting, considering how long the wait for this was, and how some small things like a fingerprint light can’t be turned off.
The repair-ability and durability feel amazing though. You can’t understand just how solid it is until you hold it, and just how easy it is to take it apart to clean or upgrade things.
It’s also very light for how modular it is.
I just wish the software support for stuff like trackpad gestures could match the Mac one day, it just kills my wrist and fingers to have to do things in a less efficient way than I am used to doing on a Mac.
One reason I use a Magic Trackpad on the max tracking speed setting, is due to how I can move anywhere on screen, swipe back and forth, with minimal wrist movement.
I have high hopes for Framework’s future and will be using it as a secondary device on side projects for the time being.
I also want to be clear, I love being on the bleeding edge and working through problems, it’s how I learn more stuff even though it can be frustrating at times. I will try to help the framework team by testing stuff fast and often as this system matures.
Thx for the write up. Really good insight, as I´m planning to buy a Framework soon. And installing Fedora and Windows 11 - that´s just so funny and so Linux :-). Take care!
Thanks for this. Teething problems are to be expected; I get them with new ThinkPads too.
I am waiting for mine, batch 4, but I will be using KDE Plasma with Wayland and fractional scaling, and it avoids X11 apps being blurry (optionally) by letting them see the actual screen resolution and deal with it. It might be really small, or if the X app is smart enough it will look great. It won't be blurry. I think this is a better choice than Gnome. Also, Plasma lets you set trackpad scroll speed; Gnome still does not expose this setting, even though the underlying libinput library offers it.
It is incredible that Ubuntu Firefox does not enable wayland by default still, Fedora did this ages ago. I hope this is fixed in 23.10. It is an easy thing to fix, but if you don't know to fix it, you get bad trackpad support.
I was intrigued that Framework advises you can use the standard Fedora kernel, because the Fedora kernel is a stock kernel but more recent (although Ubuntu 23.10 is shipping with same kernel version that Fedora has now, so if it works in Fedora, it should also work in Ubuntu 23.10 unless an Ubuntu configuration breaks it).