My Arch Linux Setup on ThinkPad Z13 Gen 1
I have lived without a personal laptop for 3 years. "Thanks to" Covid, I didn't go much traveling. My desktop, smart phone and company laptop provided a good coverage for my daily routines. I didn't find any attractive laptops until I saw Z13 recently and decided to give it a try. Here's a record of my Arch Linux setup on it.
Spec
- Model: ThinkPad Z13 AMD (21D2CTO1WW)
- CPU: AMD Ryzen 7 6850U
- RAM: 32 GB
- Disk: 1TB SSD
- Screen: 13.3 inches WUXGA (1920 x 1200) IPS touchscreen
Installation
Like Imbushuo mentioned in their Z13 Review, out-of-box requires power access and some patience for firmware initialization.
Live USB ISO
Ventoy doesn't work. After selecting the ISO image and pressing enter
in Ventoy, it hangs forever with a black screen. Flashing Arch ISO to
USB drive via dd
works. One issue is that the USB might not
be detected when booting with Arch ISO, leading to a "waiting 30 seconds
for device..." message. Plugging out and in the USB drive resolves
it.
Filesystem, OS, e.t.c
My desktop is an AMD build that runs ZFS on root. Instead of installing my Z13 from scratch, I simply duplicate the desktop to the laptop by:
zfs send | zfs recv
the desktop's datasets to laptop's zpool.- Set up the mountpoints of laptop's datasets.
- Modify the device UUID in
/etc/fstab
and regenerate zpool.cache - Copy
/boot
from desktop to laptop and regenerate the initramfs images.
Till here my laptop boots into my desktop environment successfully:
- ZFS native encryption: The archzfs initcpio hook takes care of loading the encryption key of the zpool with prompts for the passphrase.
- X11
- LightDM
- i3wm w/o any DE
Setup
Annotations:
- Good: It works out of box.
- Good with caveats: It works out of box but needs some tweaking.
- Bad: Something doesn't work and has severe impact on the experience.
Wireless Network (Good)
I connect to WiFi in Live USB ISO with iwctl
and in the
installed system with NetworkManager. There's an issue with suspend but
I found a workaround for it. See the "Power Management - Suspend/Resume"
section for details.
Keyboard (Good)
I use KMonad to port my QMK keyboard layout to a software solution (my kdb config).
TouchPad (Bad)
I can't find the width and Z values in the report of
evtest
. To double check, I run
sudo libinput measure (touchpad-pressue | touch-size) </dev/input/eventX>
and see missing capabilities of those info.
It means palm detection is infeasible and makes the touchpad unusable for me. I disable the TouchPad and switch to the TrackPoint.
Find the TouchPad name by xinput --list
("ELAN06A0:00
04F3:3231 Touchpad" for me), then in ~/.xprofile
1 | xinput disable "ELAN06A0:00 04F3:3231 Touchpad" |
TrackPoint (Good)
As a beginner of TrackPoint, I find a flat acceleration profile more comfortable.
Find the TrackPoint name by xinput --list
("TPPS/2 Elan
TrackPoint" for me), then in ~/.xprofile
:
1 | xinput set-prop "TPPS/2 Elan TrackPoint" "libinput Accel Profile Enabled" 0, 1 |
Increase sensitivity in /etc/udev/rules.d/10-trackpoint.rules:
ACTION=="add", SUBSYSTEM=="input", ATTR{name}=="TPPS/2 Elan TrackPoint", ATTR{device/sensitivity}="255", ATTR{device/press_to_select}="1"
Graphic (Good)
Install mesa
related packages following Arch
Wiki. vaapi offers a better HW decoding coverage than vdpau. Tested
hardware acceleration of mpv, and Youtube videos on Firefox/Chromium by
checking mpv logs or monitoring radeontop
.
Audio (Good)
Tested pipewire-pulse + wireplumber. I load the LoudnessEqualizer of EasyEffects-Presets with the systemd service of EasyEffects daemon. It provides a much more reasonable loudness for laptop speaker and bluetooth headsets.
Camera (Good)
Tested Google Meet on Firefox.
Bluetooth (Good)
Tested two BT headsets WH-1000XM3 and WF-1000XM4. pipewire-pulse + wireplumber works out of box, including the LDAC profile.
Power Management - Suspend/Resume (Good with caveats)
The sleep mode is S2idle. I couldn't find a BIOS entry to switch to S3. Fortunately S2idle works fine. Close/Open of the lid triggers suspends/resumes. It takes about 5s to wake up. I use betterlockscreen for lock screen. Their systemd service is required to lock the screen after resume. I need to change the type of systemd unit from "simple" to "forking" to make it work.
One weird issue is that, after resume, the download speed of WiFi
connection in LAN drops from 300Mbps to 10Mbps (tested by iperf against
two other machines), while the download speed in WAN and the upload
speed in LAN/WAN being normal. It might be related to the negotiation in
the way of laptop -> gateway router -> switch -> machine, but I
don't have much idea. My workaround is deleting and inserting the driver
module ath11k_pci
pre/post sleep, using systemd-suspend-modules.
Power Management - Power Saving (Good)
I use auto-cpufreq to control the CPU frequency. It prevents the CPU being stressed too much when using battery.
User Experience
- The machine is cool and quiet unless it's stressed for certain amount of time. With power saving and hardware acceleration being set up, it's fully cold and silent during net surfing or coding. When watching YouTube videos it becomes warm sometimes (keyboard is still cool) and the fan is noticeable in a not annoying level.
- The battery life is decent. A 7-hour sleep only discharges 2% (94%
to 92%). With 30% brightness and 60% volume, discharge rate in different
scenarios:
- Net surfing with music playing in Clementine: 4 - 7 W
- Watching videos: 8 - 14 W depending on the content
- Z13's keyboard feels good, even though it's not as comfortable as the X1C Gen 6 I used 3 years ago.
- Unable to use the TouchPad is terrifying at first. However, after some practice I find the TrackPoint ok for daily usage. Anyway I don't think Linux's TouchPad experience is comparable to Mac's TrackPad and I interact with Linux via keyboard more often. Maybe it's a good chance to leverage the advantages of the TrackPoint.
Credits
- Thanks imbushuo@twitter for their tweets and review article that attract me to give Z13 a try as my Linux laptop.