gay robot noises

System76's Lemur Pro 10: A review

A pretty good piece of hardware, unless you're very sensitive to coil whine.
date:
1168 words
VISCID FREEDOM

I'm one of those people that actually, genuinely enjoys using Linux. While macOS has its appeals, I like the idea of a computer setup that you can just tinker with as much as you want, and macOS very much isn't that. (And the less that's said about Windows as a desktop OS, the better.) Unfortunately, Linux hardware compatibility with laptops is always a bit of a game, due to the fact that hardware manufacturers are far more likely to cooperate with Windows; while there are some lines that have good reputations, such as the Lenovo ThinkPad, even they can have some weird issues. My personal favorite is that the T14s second generation has a trackpoint with a shitty driver that makes it randomly jump around... but only the version with an AMD processor.

Anyway, System76 is a laptop manufacturer that targets Linux first and foremost. Their machines come with Pop!_OS, a Linux distro that's currently GNOME-based, and their tools for hacking on their firmware are all open source, as is the firmware itself. Since my old T450s was showing its age, I decided to get one of their Lemur Pro models. I've had it fow a few months now, and here are my thoughts.

Note that this is not a review of Pop!_OS; I put NixOS on it immediately, so I never really used it. Similarly, I'm not going to be benchmarking anything; you can look up the specs yourself.

NixOS support

I was worried that the firmware flashing tool they use would be annoying to get working, since NixOS is always kind of fiddly with dependencies and something that talks to hardware is even worse. But it turns out NixOS has built-in support! Just do

hardware.system76.enableAll = true;

and you'll get the firmware updater and everything. Getting a dev environment to compile the firmware myself was a bit more complicated, but that's a separate blog post.

Build quality

The laptop itself is metal, feels pretty nice to the touch. I've heard some reports from Reddit users that it starts to show its age surprisingly quickly, with the keyboard becoming discolored within a year or two of usage and the 'system76' logo on the lid falling off (since it's just vinyl stickers, not engraved). I've noticed a rice-sized bit of the corner has worn its paint off, although that's not nearly enough for me to care.

I do know that all of System76's laptops are made by Clevo, who then sells them to S76 for branding and such. And I think Clevo's hardware is known to be kind of meh in quality.

Speakers

The speakers in this thing are, well... really fucking bad. I'm sorry, but they are. It's like listening to my phone on speakerphone. No bass, downward-firing, all that stuff. You can ameliorate it somewhat with EasyEffects to apply EQ to bump up the bass, but there's only so much you can do. Even compared to the T450s, which isn't anything special, they're noticeably worse.

Of course, if you use headphones or plug in speakers or whatever it's all perfectly fine. It's just the speakers themselves that are low quality.

Ports

USB-C charging is nice. But I don't understand why they have one USB-C and one barrel instead of one USB-C and one power-only USB-C. It's a bit of a pain that I can't charge this and use another USB-C device at the same time without using the barrel connector.

Keyboard

It's alright to type on. Like one of the MacBook 'chiclet' keyboards. It's not as satisfying as a real keyboard, but it gets the job done.

One annoyance is that the function keys send the function keys by default, and there's no 'fn lock' mechanism to toggle this. It also has Ctrl in the bottom-left and not Fn, which is backwards from what I'm used to. Fortunately, the firmware is open-source, so you can fix that!

A full 'how to flash firmware' tutorial is beyond the scope of this review, but the repo for the embedded controller firmware repo has instructions. The keymap I use, which puts the function keys on the normal layer and swaps Fn and Ctrl, is just:

#include <board/keymap.h>

uint16_t __code KEYMAP[KM_LAY][KM_OUT][KM_IN] = {
LAYOUT(
    K_ESC, K_TOUCHPAD, K_DISPLAY_TOGGLE, K_MUTE, K_KBD_BKL, K_VOLUME_DOWN, K_VOLUME_UP, K_DISPLAY_MODE, K_BRIGHTNESS_DOWN, K_BRIGHTNESS_UP, K_CAMERA_TOGGLE, K_AIRPLANE_MODE, K_SUSPEND, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
    K_TICK, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP,
    K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
    K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
    K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_N, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT,
    KT_FN, K_LEFT_CTRL, K_LEFT_SUPER, K_LEFT_ALT, K_SPACE, K_RIGHT_ALT, K_RIGHT_CTRL, K_PGUP, K_UP, K_PGDN,
    K_LEFT, K_DOWN, K_RIGHT
),
LAYOUT(
    K_ESC, K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, K_HOME, K_END, K_PRINT_SCREEN, K_DEL,
    K_PLAY_PAUSE, K_FAN_TOGGLE, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9, K_0, K_MINUS, K_EQUALS, K_BKSP,
    K_TAB, K_Q, K_W, K_E, K_R, K_T, K_Y, K_U, K_I, K_O, K_P, K_BRACE_OPEN, K_BRACE_CLOSE, K_BACKSLASH,
    K_CAPS, K_A, K_S, K_D, K_F, K_G, K_H, K_J, K_K, K_L, K_SEMICOLON, K_QUOTE, K_ENTER,
    K_LEFT_SHIFT, K_Z, K_X, K_C, K_V, K_B, K_N, K_M, K_COMMA, K_PERIOD, K_SLASH, K_RIGHT_SHIFT,
    KT_FNL, K_LEFT_CTRL, K_LEFT_SUPER, K_LEFT_ALT, K_KBD_BKL, K_RIGHT_ALT, K_APP, K_PGUP, K_UP, K_PGDN,
    K_LEFT, K_DOWN, K_RIGHT
)
};

Also, it's really nice that I can just do that. While there's no way you could port QMK to it,

Coil whine

This is probably one that's very me-specific. I have significantly-better high-frequency perception than most people; I know that my girlfriend's induction cooker can drive me nuts with a high-pitched whine that she can't hear at all. I'm also very fiddly with sounds in general; for example, a lot of the time I can't work if there's music playing that I don't control.

Unfortunately, I think all of the motherboards for this model have coil whine. My initial motherboard only had noticeable whine when pushed above 4GHz, but when I got the replacement I started hearing whine even at lower clock speeds. The whine seems to come both from the CPU and from the display connector, and turning the display off (as in disabling it entirely, not just setting the brightness to 0) can trigger it as well.

The flip side is, again, this is something I'm very sensitive to. I asked my girlfriend to listen while I basically forced the worst case scenario to happen, and she said she could only barely hear it. If I'm listening to music, typing, or doing anywhere that's not a basically silent room, then it's not noticeable at all.

Overall

If it wasn't for the coil whine and my lingering concerns about the build quality, this would be great. If you're not as sensitive to coil whine as me (because you can't hear it or you just don't care), I'd totally get one. If you are... maybe not. Hard to say.

// α-5/h