REVIEW
LINUX DISTRIBUTION
POP!_OS ON CLEVO LAPTOP

Written: 20190316
Updated: 20190322 (updates are marked)
Updated: 20190410 (Added link to a Linus Tech Tips video, see conclusions)
Updated: 20190415 (Notes on DisplayLink)

Tested on:
OS: Pop!_OS 18.04 LTS NVIDIA
Hardware: Clevo W230ST (Branded as "MySN XMG P303 Pro")

-

INDEX
01. Abstract
02. Stories about Linux Hardware Compability (You can skip this)
03. Installing Pop!_OS on Clevo Laptop
04. Encrypted root
05. Opening a Terminal keyboard shortcut
06. DisplayLink (updated 20190415)
07. Optimus support/woes
08. Remove screen tearing
09. Fixing so that Alt-key can open menus in GNOME Terminal
00. Changing the buttons (and button order) on the windows
11. Fixing normal Alt+Tab functionality
12. Using audio (updated 20190322)
13. Ethernet problems (updated 20190322)
14. Using Steam
15. Using Steam Link
16. OpenGL Development
17. Conclusions (updated 20190322, 20190410)

01. Abstract

So I've had this laptop for a while and I've been looking for a good Linux experience.
It is an MySN XMG P303 Pro that I bought from mysn.de in January 2014.
(Yes, I highly recommend this vendor if you want a Clevo. Very friendly and you can buy spare parts!)

02. Stories about Linux Hardware Compability

In my opinion, when it comes to Linux support, hardware (i.e. laptops) come in three categories:

  1. Hardware specifically built for Linux.

    Everything will just work. Linux, drivers, everything.
    There's not even a thought of the hardware running something else (i.e. Microsoft Windows).

    Examples in this category would be:

  2. Hardware certified for Linux.

    Hardware made to run Microsoft Windows (or something else) but also intended to run Linux well.
    The vendor guarantees a good Linux experience, but there may be some quirks.

    Examples in this category would be:

    You could also checkout Linux Journal's Linux Laptop Buyer's Guide

  3. Hardware not built for Linux.

    As we know, Linux is a Unix-like system originally for x86 hardware.
    The idea was to run something else than Microsoft Windows on your PC.
    This still applies today.

    Hackers acquire hardware (laptops, desktops, servers) that was not really built for Linux and then they run Linux on it. Often it's quite easy. Other hardware can be more of a challenge (i.e. Video Game Consoles).

    So...

    Examples in this category would be:

    These devices require drivers for their onboard components.
    And more often than not, these components only come with custom, closed source, proprietary drivers.
    So when using Linux with hardware like this, some hardware components, may not work (or will be "wonky").
    Especially hardware components like Wi-Fi and GPU.

    The Internet is full of discussions of how to get Linux working on your hardware...

So, with these categories in mind, whenever someone asks me:

"I want to run Linux, what should I get?"

my reply is:

"Get a Raspberry Pi or a Librem, maybe maybe consider a Dell. If you pick anything else you're on your own."

So, this article is a review on how to take a category 3 laptop,
trick Linux into thinking it is a category 2 laptop,
so I can get a category 1 laptop experience...

(Spoiler: I got close.)

03. Installing Pop!_OS on Clevo Laptop

The idea is to use Pop!_OS on a Clevo Laptop.
(If you're trying this on another type of laptop - then you clearly haven't understood this article - you're on your own.)

System76 created their own custom Ubuntu-based Linux distribution for their laptops.
And since their laptops are Clevo based, it should (in theory) run pretty well on my old Clevo.

What makes Pop!_OS special is that it works with NVIDIA GPU right out of the box.

I downloaded the Pop!_OS 18.04 LTS NVIDIA ISO, and put it on a bootable USB-stick (i.e. by using usb-creator-gtk).
Link to Pop!_OS Download

Description below will be less chatty.
Also, I assume you can install Linux/Ubuntu/Pop!_OS yourself, The notes below are post-install touches.

INDEX
04. Encrypted root
05. Opening a Terminal keyboard shortcut
06. DisplayLink
07. Optimus support/woes
08. Remove screen tearing
09. Fixing so that Alt-key can open menus in GNOME Terminal
00. Changing the buttons (and button order) on the windows
11. Fixing normal Alt+Tab functionality
12. Using audio
13. Ethernet problems
14. Using Steam
15. Using Steam Link
16. OpenGL Development
17. Conclusions

04. Encrypted root

I recommend having an encrypted root partition in Pop!_OS, it works just like it does in the Ubuntu Desktop installer.

I have another laptop, with Ubuntu Desktop 18.04 amd64, where the graphical root encryption password "prompt" doesn't always work, But on Pop!_OS 18.04 LTS I've had no problems.

05. Opening a Terminal keyboard shortcut

The default desktop annoyed me by having "Super+T" to open GNOME Terminal instead of "Ctrl+Alt+T" which is more common.

I solved this by adding my own custom keyboard shortcut.

06. DisplayLink

I have a port replicator (Dell D3100) which uses DisplayLink drivers. I tested it and default install worked, but it is unclear how it affects X11 and the GPU support, so I chose not to use it. (I reinstalled Pop!_OS after I tried the DisplayLink drivers.)

Update 20190415:
I have installed Pop!_OS 18.04 LTS on another machine (Dell Latitude E5540) just to try out DisplayLink properly.
DisplayLink works (I'm using 3 1080p monitors) but it is slow, the system is bogged down. When I'm coding web (2-3 gnome-terminals with Vim and another window with Google Chrome) the load climbs up to 3.6 something, just to cater to DisplayLink. If I stay in Vim the load is lower (under 1.0). Many have the same experience and it appears as if the Linux DisplayLink drivers aren't so good at the moment. So, it works, but the rendering appears as if it was lagging. It is unclear to me if this problem is because I'm running Pop!_OS instead of the recommended Ubuntu.
(Drivers tested: DisplayLink 5.1.26)

07. Optimus support/woes

Optimus is always really bad. I cannot recommend Optimus for anything, not even Microsoft Windows.
However, this laptop has Optimus, so it is what it is.

The support after install is that you can't switch on the fly (typical Optimus feature), but you can get full NVIDIA desktop and it is really nice.

You can also switch to the Intel GPU by:

However, I do recommend you stay on NVIDIA, it is more powerful.

The laptop can get warm by always running the NVIDIA GPU, so I recommend using a "Laptop Cooling Pad".
One that runs of USB-power is enough.

08. Remove screen tearing

As you might've noticed there's "tearing" in the graphics, so "NVIDIA PRIME Sync" needs to be activated.
There's a Ubuntu Forum thread (no need to read), this is what you need to do:

$ sudo nano /etc/modprobe.d/nvidia-drm-nomodeset.conf

make sure this line is present/uncommented:

options nvidia-drm modeset=1

Run this command:

$ sudo update-initramfs -u

You can check if "NVIDIA PRIME Sync" is active with:
N = no
Y = yes

$ sudo cat /sys/module/nvidia_drm/parameters/modeset
[sudo] password for username:
Y
$

You're done, try out multimonitor, it should just work and it is very nice.

09. Fixing so that Alt-key can open menus in GNOME Terminal

10. Changing the buttons (and button order) on the windows

I want all my windows to have minimize, maximize and close in the right order.

$ sudo apt install dconf-editor

Then run:

$ dconf-editor

Go to "org/gnome/desktop/wm/preferences"
change "button-layout" to

"appmenu:minimize,maximize,close"

Change to use "Custom value"

11. Fixing normal Alt+Tab functionality

Alt+Tab doesn't switch windows, here's how to make it work:

$ sudo apt install dconf-editor

Then run:

$ dconf-editor

Go to "org/gnome/desktop/wm/keybindings"
Change the value on "switch-applications" from '<Alt>Tab' to '<Super>Tab'
Change the value on "switch-applications-backward" from '<Shift><Alt>Tab' to '<Shift><Super>Tab'
Set the value on "switch-windows" to '<Alt>Tab'
Set the value on "switch-windows-backward" to '<Shift><Alt>Tab'
Close dconf-editor

Optionally (if the changes don't take): Press <Alt>F2, then type r to restart Gnome.

12. Using audio

Audio works well, but I have to switch manually when I connect USB headphones.
For some reason the built-in speakers don't work in firefox or google-chrome, or in mplayer, but they work when you do "Test Speakers".

If you want to control the sound:

Optionally, you can:

$ sudo apt install pavucontrol
$ pavucontrol

Update: 20190322
Super annoying! I've gotten troubles that audio doesn't use the output I want.
I have the laptop connected to an HDMI monitor, the control panel and pavucontrol both see the HDMI speaker, but still I get audio out of the laptop speakers.

I found that the tricks on this page work: system76 - Fix Audio Issues
(Here's a local cache should the page go down, or you are using IPv6 (link above is IPv4 only): system76 - Fix Audio Issues (cached)

I found that if you enter these two commands the audio will route better (from the article):

$ pulseaudio -k
$ pulseaudio --start

13. Ethernet problems

This is where the category 1 "everything works" fails...

I've been having network problems on this laptop, both on Ubuntu and Pop!_Os.
Almost every time, a couple of minutes after I logged in, I lose IPv4 connectivity (but not IPv6 connectivity).
I get it with the onboard wired Ethernet NIC but also with my Dell D3100 port replicator.

Pulling the network cable out, and putting it again, works. It works until I reboot or shutdown the laptop.

Adding an external USB Ethernet NIC (i.e. Lenovo Thinkpad USB 3.0 Ethernet) works.
It might be my network, but I've only gotten these problems with this laptop, no other device.
I've also heard reports that the onboard wired Ethernet NIC is buggy in Linux and needs better drivers.
But it doesn't answer why I get this with my port replicator. (Just coincidence?)

Sometimes it can take a while before this affects me, because I use IPv6 for almost everything.

Update 20190322:
I've recently gotten the same behavior on WiFi.
I'm using: Intel Corporation Wireless 7260 (rev 73) / driver: iwlwifi
AKA: PCI ID 8086:08b1 Subsystem: 8086:4070

If I disable/enable WiFi it works.
I don't know what it means, but it may point to my network/router.
But still, I only get this feature on this particular Laptop and only in Linux.
Other devices (and many of the run Linux) are fine.

14. Using Steam

The best way to install Steam is to do it through the "Pop! Shop".
It is found via the menu (press "Super").

The result is "interesting"

Native Linux games work fine.
Games that work with wine work "so-so".
Steam couldn't find my official Steam controller.
My XBOX 360 works and the "menu button" (officially called "Guide Button") works just as in Microsoft Windows Steam.

Here's a report on how some games worked:

Mega Man Legacy Collection ( wine ) Just gives a white screen, had to use "xkill" to kill it
Ultratron ( Linux ) The game doesn't even start, it just sits in steam menu
FEZ ( Linux ) Works
Rocket League ( Linux ) Works, better than it does in Microsoft Windows
Hammerwatch ( Linux ) Works
PAC-MAN Championship Edition DX+ ( Linux ) Works
Assault Android Cactus i ( Linux ) Works
Civilization Beyond Earth ( Linux ) Weird dark missing textures, optimus problems, terrain detail
Dungeon of the Endless ( Linux ) Crashes Steam on launch, had to use "xkill" to kill it

So, Steam kind of works - not as well as it does in Microsoft Windows - but it kind of works.
I've tried gaming in Linux before and this works pretty same in comparison.
It needs improvement, but the "Linux-only gamer" might enjoy this.

15. Using Steam Link

I also tried sending to Steam Link (RPi 3B+) and here's how it went:

Steam and Steam Link got confused when I had external monitors connected to the laptop.
The official Steam Controller doesn't work.
I get no sound in Steam Link.
XBOX 360 controller works (in menus only?)

FEZ Controller doesn't work, sound appears on host instead of Steam Link device
Mega Man Legacy Collection White screen, had to use xkill
Ultratron Doesn't even start, just sits in steam menu
Hammerwatch Controller doesn't work, sound appears on host instead of Steam Link device
Assault Android Cactus Controller doesn't work, sound appears on host instead of Steam Link device
Jamestown Controller doesn't work, sound appears on host instead of Steam Link device
PAC-MAN Championship Edition DX+ Controller doesn't work, sound appears on host instead of Steam Link device
Rocket League Controller doesn't work, sound appears on host instead of Steam Link device, Graphics botched

So, basically... Steam Link doesn't work at all, it is terrible. There might be some setting or a later version where it will work better.
But when I tried this, it didn't work out of the box.

16. OpenGL Development

I really haven't done much OpenGL development, but you're supposed to use the proper NVIDIA libraries. At the time this article was written the command is:

$ sudo apt install libnvidia-gl-418

(As you understand, that "418" number will change, find out with:

$ apt-cache search libnvidia-gl

You might also be interested in:

$ sudo apt install libglfw3-dev
$ sudo apt install freeglut3-dev

17. Conclusions

Until I get a real Linux laptop (Librem, I'm looking at you)...

...this has actually become my favourite Linux distribution for now.
Even if my laptop isn't perfect, it works better than anything I've used before.

The idea behind Pop!_OS isn't to get a good gaming experience, but to get a good developer's experience.
I mostly code scripts or backend webcode in Vim, but having a laptop that works this well really is a pleasure.

When I press the Super button I get this graphically enhanced experience of all windows showing up minimized.
When applications are minimized or something goes fullscreen (i.e. when I press YouTube to be fullscreen) it looks "nifty".
It is really as they say: Pop!_OS is a macOS experience but in Linux.

With Pop!_OS the GPU accelerated Linux desktop really works.

Update 20190322:
The audio problems I've gotten recently is a bit of a letdown.
I'm still gonna stick with Pop!_OS but the initial infatuation has faded.

Update 20190410:
Linus Tech Tips just made an interesting YouTube video on Linux gaming, Pop!_OS, wine and a software called Lutris (can be found in the Pop!_Shop).