OpenBSD on the Framework Laptop
source link: https://jcs.org/2021/08/06/framework
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Framework is a new company offering a laptop that is designed to be repairable and upgradeable, both in terms of internal components like the screen and motherboard, and in pluggable expansion cards.
Table of Contents
Hardware
While many classic ThinkPad owners will probably say “so what?” to a repairable and upgradeable laptop, doing so in an ultrabook-style thin and light laptop in 2021 is fairly novel. Each new ThinkPad I’ve used lately has become less and less repairable and upgradeable, with RAM and WiFi cards now being soldered to the motherboard.
The Framework Laptop became available for pre-order in May and was offered in two configurations of essentially the same device: a pre-built option and a DIY option that can be purchased without RAM, an SSD, a WiFi card, or a Windows license.
Both configurations offer the same 13.5” 3:2 aspect ratio screen and various Intel CPU options. I opted for the Intel i7-1185G7 processor, although in retrospect I’m not really sure why. I’ve usually chosen an i5 processor for better battery life and lower heat output since most of what I do is not CPU-intensive, but perhaps in the rush to place a pre-order as soon as I could, I was not considering those issues.
The laptop weighs 2.8 lbs and is 11.6” wide, 9” tall, and 0.6” inches thick. It has basically two USB-C ports on each side, although they are recessed about 1.5” to accommodate the expansion cards which are just various USB-C dongles in uniform cases. Framework offers USB-C, USB-A, HDMI, and DisplayPort connector cards, along with a MicroSD card reader and 250GB and 1TB storage devices. Currently all of the cards desired must be purchased with the laptop at the time of ordering, and they are not yet available for sale separately.
In between the two expansion slots on the left side is an LED for charging status and a 3.5mm headphone jack to the right of the slots. On the right side of the laptop is another LED for charging, if charging via USB-C connection on that side.
There are two downward-firing speakers and a fan exhaust on the bottom.
The speakers sound excellent and have a sufficient amount of bass (but not
overpowering like the new MacBook Air).
The fan is inaudible at idle, but can get very loud at full speed when doing a
high amount of CPU and disk activity such as a git clone
.
It makes a little click/squeak when turning on, and in some cases can come on
and turn off every few seconds which makes it kind of annoying in a very quiet
room. There is no audible coil whine from any of the components.
The keyboard deck has a power button with integrated fingerprint reader in the upper-right corner. Unfortunately it also contains a white LED ring around it that is very bright and does not dim with the keyboard backlight, nor does it turn off when the fingerprint reader is disabled in the BIOS. Since the button is so close to the screen, it remains in my field of view and is very annoying in a dark room. Framework have confirmed that the light is controllable via the EC, so this can be something that could be disabled or dimmed in a future firmware update.
The keyboard has 1.5mm of key travel with a pronounced but quiet tactile. It reminds me of the MacBook Pro 2015 keyboard but with slightly more tactile. I wish the arrow keys were an inverted T, however. The keyboard has 3 levels of backlight (plus off) adjustable with Fn+Space. The surface of the keys is somewhat rough and matte.
The 13.5” non-touch screen has a 3:2 aspect ratio and a 2256x1504 resolution, which is high enough to use 1.5x scaling. It is reportedly a >400 nit screen, and most of the time in my office I’m using it at about 30% brightness.
The screen lid is quite bendy, and has a lot of wobble on its hinge although the hinge itself doesn’t seem to wobble and is quite tight. This means that it doesn’t wobble in response to typing or moving things on my desk, which is what I was concerned about, but does wobble excessively when making screen angle adjustments. The lid can be mostly opened all the way with one hand and will open fully to 180 degrees. Centered on the back of the lid is the Framework logo in black, with “Framework” branding written on the front of the hinge in glossy black against the matte black plastic making it very discreet in most lighting.
The screen bezel is sufficiently thin, but still has space for a 1080p webcam with a physical cut-off switch (showing a red strip when disabled) next to the microphone which also has its own cut-off switch. The bezel is held on magnetically to make it easier to upgrade or change. If you’re wondering like I was, the square to the left is an ambient light sensor (though it is not exposed as a standard ACPI ALS device) and the one on the right is the actual camera. There is no Windows Hello IR camera.
The Windows Precision Touchpad is made by PixArt. Its surface is not quite as smooth as I would like but is not bad, although the click mechanism is somewhat loud and hollow sounding which makes it seem cheap.
Assembly
Since I purchased the DIY version, mine came with the 32GB of Crucial RAM that I ordered, along with an Intel AX210 WiFi card (which I swapped out for an AX201 due to OpenBSD compatibility) in separate packaging.
The Framework Laptop includes a screwdriver in the box with a removable Torx and Phillips bit on one end, and a spudger on the other. All of the screws on the laptop, from the captive ones on the bottom that release the keyboard deck (rather than the bottom casing coming off as on most laptops) to the internal screws on the WiFi card, SSD, and other internal components, can be removed with the same Torx bit.
Installation of the RAM and the Samsung 980 Pro 1TB NVMe SSD that I already had were very simple. Installing the WiFi card took a minute or two due to the custom bracket that is supposed to be installed over the antenna connectors, but is oriented differently when temporarily installed from the factory. All of the component locations on the motherboard have QR codes which direct one to URLs on the Framework website for instructions.
Expansion Cards
I initially installed USB-C and USB-A expansion cards on the left side, and a USB-C and 1TB storage card on the right which will be used for backups.
I like that the expansion cards keep the ports a good distance from each other and that there can be USB-C charging ports on either side. I’ve often run into problems with the two USB-C ports on my MacBook Air being too close to each other and with them both on the left side, I can’t opt to charge on the right side if I happen to be sitting with the wall outlet on that side of me.
Framework has an Expansion Card Developer Program to support 3rd party expansion cards and they’ve also made available the schematics and case designs for their existing cards. I miss the days of funky PCMCIA cards which brought so much expandability to laptops without needing dongles.
In the future I’d like to make a simple 3D-printed case for the Creative BT-W3 Bluetooth adapter and maybe one for the Logitech mouse dongle, allowing them to be plugged in without sticking out.
Firmware
The Framework Laptop has an InsydeH2O BIOS that is accessible upon pressing
F2
.
Secure Boot must be disabled in the BIOS menu to boot OpenBSD, and CSM/Legacy
booting is not supported.
I opted to disable the fingerprint reader and Hyperthreading.
Battery
I don’t usually publish battery life estimates for laptops because power usage on modern laptops can vary wildly with screen brightness and CPU load, whether it’s constantly Turbo boosting, etc. The Framework Laptop has a 55 Watt-hour battery and it idles around 9 Watts with the screen at 25% brightness and connected to WiFi.
OpenBSD Support Log
2021-08-04: Initial boot of OpenBSD-current showed a strange issue once
inteldrm
took over from efifb
.
The screen would go blank and then the backlight would flicker off and on every
second or so with the screen still black.
Recompiling the kernel with DRMDEBUG
enabled showed that it was having trouble
training the eDP panel properly, although enabling debugging caused it to print
messages to the console during the whole process, introducing enough delay that
it could complete the training properly.
Eventually I found that by switching between X and the console a few times, the
screen would train and work properly, but after an xset dpms force off
, or
trying to resume from S3, this workaround does not usually work.
I’m still trying to debug this, but I can’t reproduce it in Linux with the same
DRM code that we have in OpenBSD (based on Linux 5.10.56).
I also started having stability issues with the machine randomly powering off
which was extremely frustrating, but I eventually tracked it down to the
touchpad as the culprit.
Since OpenBSD does not yet have a Tiger Lake GPIO interrupt driver, the touchpad
is working in polling mode (via ihidev
).
At some point this goes haywire (minutes to hours) and touching the touchpad
results in the machine instantly powering off.
I’m making a guess that the EC is crashing while trying to interface with the
touchpad.
By disabling the dwiic
i2c driver, the touchpad becomes available
through the legacy PS/2 interface, allowing it to work through the pms
mouse
driver.
However, after a day of using this legacy configuration, the same power-offs
would randomly happen when touching the touchpad.
There is a BIOS option to disable this legacy interface, which I did, and am now
running without a working touchpad until I can write a GPIO driver.
Aside from the display driver issue, I’ve experienced a few other issues with the laptop that seem related to the EC, such as keyboard input in the EFI bootloader dropping keys and being very sluggish (this happened only once), USB-C ports refusing to accept power for charging until the system is powered off and back on again (I’ve had this happen a number of times), and it not restarting when instructed to by the kernel/ACPI (a few times). I’m sure all of these issues will work themselves out over time through future firmware/EC updates.
Current OpenBSD Support Summary
Status is relative to OpenBSD-current as of 2021-08-05.
Component
Works?
Notes
Audio
Yes
Intel audio with Realtek ALC295 codec and supported by azalia
. Microphone can be disabled by toggling the physical switch on the screen bezel.
Battery status
Yes
55Whr battery, status available through acpibat
.
Bluetooth
No
Usually provided by the wireless card, but OpenBSD does not support Bluetooth.
Fingerprint sensor
Yes
Goodix via USB, reportedly supported by libfprint. Can be disabled in the BIOS.
Keyboard backlight
Yes
Supported natively by the EC. Three levels of adjustment can be toggled with Fn+Space.
Hibernation
Yes
Can be triggered by ZZZ
.
Micro-SD card reader
Yes
The Framework Micro-SD expansion card attaches via USB and works fine. An inserted card sticks out about 2mm from the edge.
SSD
Yes
M.2 2280 socket; I used a Samsung 980 Pro NVMe drive supported by nvme
.
Suspend / resume
Yes
Can be triggered by zzz
or closing the lid.
Touchpad
Mostly
Pixart I2C, supported by imt
. A GPIO driver is needed to make it work in interrupt (non-polling) mode.
USB
Yes
The 4 USB-C ports work fine, though I’ve had a few occasions where Power Delivery charging did not work until the laptop was powered off and back on again.
Video
Mostly
inteldrm
supports accelerated video, DPMS, gamma control, and integrated backlight control, though the integrated eDP panel has issues coming up. HDMI output through the HDMI expansion card did not work nor did it work through other USB-C docks/dongles.
Webcam
Yes
1080p USB camera, supported by the uvideo
driver when the kern.video.record
sysctl is enabled. Can be disabled in the BIOS or by the switch on the bezel which will detach the USB device.
Wireless
Yes
M.2 socket; I used a Intel AX201 802.11ax wireless card supported by iwx
. The Intel AX210 card sold by Framework is not yet supported by iwx
.
Conclusion
Framework has done well with their future-thinking design and prioritizing repairability and upgradeability. Whether the company, replacement parts, and future motherboard/processor upgrades will be around in five or ten years to make good on their promises remains to be seen, but I feel like we’ll never get there unless consumers support the company in the beginning.
My concern before receiving my laptop was that reviewers and consumers would be expected to look past a lot of faults just because it was repairable and upgradeable, as can been seen with modular phones and other devices. However, I feel that the Framework Laptop is a well-executed product that can stand on its own right now and any future upgradeability is just icing on the cake.
I hope the expansion card idea takes off and 3rd party developers create some really interesting things.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK