2

OpenBSD on the Framework Laptop

 3 years ago
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.
neoserver,ios ssh client

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.

Framework Laptop with expansion cards removed

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.

2021-08-06-box-216x162.jpg 2021-08-06-case-216x162.jpg 2021-08-06-keyboard-216x162.jpg

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.

2021-08-06-left_side-216x162.jpg 2021-08-06-bottom-216x162.jpg 2021-08-06-right_side-216x162.jpg

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.

2021-08-06-backlight-327x245.jpg
2021-08-06-power_led-327x245.jpg

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.

2021-08-06-screen-327x245.jpg
2021-08-06-bezel-327x245.jpg

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.

2021-08-06-internals-665x300.jpg

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.

2021-08-06-expansion_cards-216x162.jpg 2021-08-06-card-216x162.jpg 2021-08-06-bluetooth-216x162.jpg

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.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK