As a follow-up to my previous post, I thought I’d write about my experience using Arch Linux, the Blade Stealth 2019, and an eGPU docking setup as my daily driver for about three weeks now. After telling one of my friends about the hell I’d been going through, he remarked that it seemed like all the issues that I was complaining about had their roots in the hardware I’d chosen. I don’t disagree - the Blade Stealth 2019 is far from a perfect laptop - but it made me seriously have some second thoughts about my purchase. More on that later.
It’s not too much of a surprise to me, but using Arch is amazing. I have had it installed on my XPS 13 9350 since I got it 3-4 years ago, and the amount of power and customization that it affords me is top notch. Not much else will be said.
I’ll list below some of the software that I’m using aside from what’s in my
neofetch from last time.
- Terminal: Konsole
- Web Browser: Firefox
- File Browser: Dolphin
- Music Player: deadbeef
- Text Editor: Neovim
- Image Viewer: qimgv
- PDF/Document Viewer: llpp
- Video Player: mpv
- Shell: zsh
- AUR Manager: yay
Some other tools that I absolutely recommend if you use any sort of Linux machine ever:
- youtube-dl: does what it says on the tin, also works for other sites
- ncdu: shows disk usage in any directory in the terminal
- autofs: automatically mounts network shares as you browse to them
- maim & ffcast: screen capture and recorder, respectively
- yadm: Yet Another Dotfiles Manager
I installed Steam, which works just fine (if you launch it with built-in runtimes), Steam Play/Proton works phenomenally, and it also maps my Switch Pro controller to an Xbox 360-style controller mapping for all the games I’ve tried.
I’ve also installed Lutris, which allows me to play Magic Arena pretty well.
Some Software Issues
A few bugs I ran into in my daily use:
- Dolphin has issues when reading from network shares. To remedy this, I needed to add
cache=noneto my CIFS mount.
- Dolphin also passes files mounted via SMB to programs prepended with
smb://as if it expects them to handle the network protocol (see this bug on mpv). To get around this, I mount my share with
- I wanted to use KWin without window borders, and do a sort of soft-tiling window management thing. To do this and still enable me to use a mouse to close windows, I set up the Active Window Control Plasmoid, which places min/max/close buttons in my widget bar. Unfortunately, it seems like this plasmoid just makes plasmashell segfault randomly.
¯\_(ツ)_/¯So I mapped Ctrl+Shift+Q to close windows (muh i3), and in KWin Meta+PgUp maximizes, and Meta+PgDn minimizes.
100Hz Once and For All
I got pretty sick of Kwin’s compositor running at 60fps on my 100Hz monitor pretty fast.
After much experimenting, and much anger, I ended up enabling
ForceFullCompositionPipeline despite my unwillingness to last time. This allows me to force the tearing prevention at the driver level, meaning that KWin’s compositor won’t try and vsync
and lock to 60Hz when it sees my lower refresh rate monitor.
Here’s my new setup:
- Launch KWin with
__GL_YIELD="USLEEP"(instead of KWIN_TRIPLE_BUFFER)
- Disable vsync in the Kwin compositor.
This lets me keep desktop effects and transparency, run Kwin at >60 FPS, and still use multiple monitors with different refresh rates.
Unfortunately, it means I have to tradeoff a bit of gaming performance. I tested some games out, and it doesn’t seem too bad, though, so I may just learn to live with the hit.
Speaking of testing, to determine how well this setup would work for gaming, I downloaded Unigine’s Superposition benchmark and ran some tests:
The score is the four digit number after
v1.0. To my not-surprise, the best performance was:
- One monitor (g-sync)
- ForceFullCompositionPipeline Off
- Compositing Disabled
- G-Sync Enabled
At a score of 9292.
My current setup, compositor enabled (suppose I am running a game in a window while doing other things) takes a pretty big, expected hit - all the way down to the lowest score of the bunch, 8212.
Disabling the compositor (keeping my current setup, but just playing a game in full screen, for example) brings the score up to 8884. Not bad, and actually not terribly far from 9143, which is multi-monitor compositor disabled, FFCP disabled.
So in my tests, getting my desktop set up the way I wanted it required me to enable FFCP and take a slight performance hit.
I would say that actually, the worst part of this setup is the laptop itself. Many of the problems that seemed minor annoyances at first have made themselves manifest.
While actually pretty respectable, considering this thing has a MX150 in it (that may or not be being disabled when in Intel mode, gotta look into that), something seems off about my battery life. I ran a D&D session today, starting at 10:15ish AM, at about 50% brightness, and pretty much only had 5ish Firefox tabs open.
By about 3:30, I was at 10%.
That’s about 5 hours of battery life. Seems… suboptimal. I’ll need to look into how much power this thing is actually drawing (yes, the CPU governor was set to
powersave, I checked).
Also, my PD USB-C battery doesn’t seem to charge this thing, even at a trickle, which also seems very lame.
I thought my results were really strange. NotebookCheck reports that this thing can get 9.5hrs while browsing the web.
So, after running
powertop and experimenting with
bbswitch, I can confirm that my test above had the MX150 (the dGPU) engaged. Turns out the method that
optimus-manager was using when I copied from it was nouveau switching,
which doesn’t actually power off the chip.
bbswitch actually does power the chip off, (it makes an ACPI call to shut it off) and so all that was required was for me to replace:
in my intel config with (and my nvidia config with the opposite of):
modprobe bbswitch tee /proc/acpi/bbswitch <<<OFF
and finally stopping use of nouveau for anything altogether with
Wow, what a difference!
- With the MX150 engaged,
powertopreports an idle power draw of ~7-10W.
- Without it,
powertopreports an idle power draw of ~3-5W, pretty much doubling my battery life to what looks like around 9-10 hours (without actually testing).
This laptop is actually starting to feel usable.
Finally, I’m not exactly sure what it was, but I tried my PD battery again, and it appears to be charging, at least on Intel graphics!
To help remind myself and/or quickly tell which mode I was in, I made
echo $profile to a
Then, using kargos, I created a small plasmoid to show the status of things:
#!/bin/bash echo "nadeko " echo "---" echo "Current Profile: $(cat /home/gabe/.gabe/gpuswitch/current_profile)" echo "dGPU Status: $(cat /proc/acpi/bbswitch | cut -d ' ' -f 2 -)" echo "eGPU Status: $(if lspci | grep -q "GP104"; then echo "connected"; else echo "disconnected"; fi)" echo "CPU Governor: $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)"
Which ends up looking quite nice.
Oof, I did not expect to be complaining about this. Yes, it’s an “ultrabook”. Yes, it’s super thin and light, etc. But man, either I’m spoiled by my work X1 Carbon’s comparative highway of key travel, or this thing just feels bad to type on. It’s not just that, either. It feels downright unresponsive for the small amount of travel these keys have. I can swear that I’d hit a key, and it just doesn’t register.
On the plus side, Razer keyboard drivers might make mainline soon, complete with some lighting support!
I can deal with noise, usually. But the Blade whines under load. High-pitched and loud. My previous setup was watercooled, again, so I don’t know how much I’m just not used to it, but it’s a minor annoyance that becomes a tad bit bigger when using a microphone.
Surprisingly, the most seamless part of this whole thing is how well the Node eGPU enclosure just… works. I flip it on, plug it in, and it just gets detected right away.
Where do I go from here?
I think I’ll try and stick with the Blade for a bit longer (it’s a bit tough seeing all these new laptop reveals at CES). If it becomes just unbearable, I’ll consider picking up another XPS or Thinkpad. I think I have the software portion mostly under control, so I can always just swap drives into a new machine, for the most part.
I will update this space if anything changes, or if I have more performance benchmarks to post!