Introduction
Following my previous post in this serie, New laptop part 0: Discovering the FrameWork laptop, the goal of this post is to explain the steps I had to go through after installing EndeavourOS (a gnu/linux distribution based on Archlinux) on the FrameWork laptop and all the small things I had to tweak. It isn’t 100% perfect and finished, but I’ll try to update this page (or link a new entry) if I improve the following information.
Before going into all the details, I wanted to thank the EndeavourOS community, Archlinux wiki and FrameWork communities where I found all those informations in a way or another.
Installation
As said in my previous post, I just went through the GUI installer to install EndeavourOS, selected full encryption for the hard drive and let it ran. See the official documentation for help.
Post installation
Let’s start by installing vim to edit all the configuration with a real editor :).
sudo pacman -S vim
If you look for a complete out of the box vim config, I suggest spf13 vim config.
Brightness
The brightness keys (via fn+F7/8) did not work out of the box (while others do work fine). To fix this, I edited the file /etc/modprobe.d/framework-als-deactivate.conf
and added:
blacklist hid_sensor_hub
HiDPI
I had to change the default HiDPI setting as the screen resolution is so high (2256x1504). To do so, edit the ~/.Xresources
file, and add:
Xft.dpi: 120
Fixing Old OpenGL driver (i965)
I had issue with software running with openGL driver. Namely chromium and lagrange (a gemini browser).
TLDR; from archlinux wiki:
In Mesa 20.0, a new OpenGL driver, Iris, is promoted to be the default for Gen8+. Certain applications run faster with it. You may disable it and revert to use the old i965 driver by setting the MESA_LOADER_DRIVER_OVERRIDE=i965 environment variable before starting any OpenGL application. This setting does not affect Vulkan applications. – https://wiki.archlinux.org/title/Intel_graphics#Old_OpenGL_driver_(i965)
I’m going the per application road, so I need to create a <application>.desktop
file in ~/.local/share/applications/
(and create the directory if doesn’t exist).
For Chromium, there is already an existing /usr/share/applications/chromium.desktop
file, so copy it in the ~/.local/share/applications/
directory and then edit it. Change all exec
lines (3 times in my case) from
Exec=/usr/bin/chromium %U
to
Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/chromium %U
For Lagrange, copy /usr/share/applications/fi.skyjake.Lagrange.desktop
to ~/.local/share/applications/fi.skyjake.Lagrange.desktop
and edit the Exec
line to be:
Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/lagrange %U
The complete file for lagrange:
[Desktop Entry]
Name=Lagrange
Comment=A Beautiful Gemini Client
Categories=Network;
Exec=env MESA_LOADER_DRIVER_OVERRIDE=i965 /usr/bin/lagrange %U
Terminal=false
Type=Application
StartupWMClass=lagrange
Icon=fi.skyjake.Lagrange
MimeType=x-scheme-handler/gemini;x-scheme-handler/gopher;x-scheme-handler/spartan;
fingerprint
To add support for the fingerprint reader, first install fprintd:
pacman -S fprintd
Then, to enable sudo via fingerprint, edit /etc/pam.d/sudo
, and add:
auth sufficient pam_fprintd.so
above
auth include system-login
If you don’t want to use the fingerprint for a sudo command, use ctrl+c
and then enter your password.
For lightdm, edit /etc/pam.d/lightdm
and add at the top:
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth sufficient pam_fprintd.so
This allow to use either password or the fingerprint. To activate the fingerprint, enter a empty password, and then use the fingerprint :). Using only the second line will require the fingerprint and won’t allow password alternative (which I wanted).
Fan management
So far, I have only followed the archlinux wiki installation steps. I haven’t pushed much the CPU yet and the few times the fan went on it was loud but ok. I need more testing on this when I’ll daily drive completely this laptop.
Install thermald
and dptfxtract-bin
:
pacman -S thermald
yay -S dptfxtract-bin
And then configure thermald and start the service.
sudo dptfxtract-bin
sudo cp /etc/thermald/thermal-conf.xml.auto /etc/thermald/thermal.conf.xml
sudo systemctl enable themarld.service
sudo systemctl start themarld.service
Bluetooth
Install the necessary software:
sudo pacman -S bluez bluez-utils blueman
Add yourself to the lp
group in case you need bluetooth tethering.
Connect the external bluetooth device using the GUI blueman-applet
.
Sounds from laptop to bluetooth (and inverse) works without any additional configuration.
Autostart bluetooth:
sudo systemctl enable bluetooth.service
# start if now if you want:
sudo systemctl start bluetooth.service
Autostart blueman applet in the i3 config (or use your own autostart process):
exec --no-startup-id blueman-applet
Bluetooth is disabled by default though and I only activate it on demand via the blueman-applet.
Sound
Sound speaker works out of the box, switching from speaker to jack port works also. Pipewire is really awesome :). Microphone works also out of the box and the kill switch is a nice touch on the framework laptop :).
Switching sound between bluetooth and “local” works also very smoothly and quickly.
Don’t care
I didn’t even try to use the ambient light sensor. I prefer changing it myself when needed. Could be used with iio-sensor-proxy
apparently.
Conclusion and next steps
That’s it for this post, I still need to manage the hibernation, but hopefully there will be a new post later that fix the missing things :). Next post will be about additional software installation needed to make this laptop a full working workstation :).