Hybrid graphics plus docks equals the limits of laptop Linux
If you’ve got a discrete GPU as well as integrated graphics, and you want to run Linux, you’d best pick one master.
Not that it is ever likely to happen, but if the fabled Year of the Linux desktop were ever to begin to occur, its momentum would more than likely crash against laptops with hybrid graphics.
These are devices that pack a discrete GPU, usually Nvidia, and couple it with the standard laptop-style integrated graphics. It’s a best of both worlds approach that relies on the integrated graphics silicon to save power, and the kicking in of the discrete GPU when workloads demand it.
That’s the theory anyway.
In recent weeks, a pair of laptops with such display technology landed in ZDNet’s South Pacific outpost, the Gigabyte Aero 15 OLED and the Lenovo ThinkPad X1 Extreme Gen 2.
Both laptops have 9th generation Intel CPUs, NVMe-based storage, and 15.6-inch screens. But the Gigabyte has a tasty 4K OLED display along with a beefy Nvidia GeForce RTX 2070, and 8GB of RAM, while the ThinkPad has a HD-capable screen with a GeForce GTX 1650, and 16GB of memory.
With a flashy rainbow-lit keyboard, the Aero comes across as a gaming machine that could get away with a few productivity and creative applications.
However, the Aero has a massive drawback: its fan. If you love the sound of industrial whirring, this is the laptop for you, but for everyone else, this laptop sounds like it is always prepared for take-off, but it never proceeds down a runway, opting instead to suck up dust.
The ThinkPad is the opposite — it’s pitched as a bland enterprise device, but with the same sort of silicon, it would run a few games if needed, but is without the ray-tracing capability of the Gigabyte.
Now all of this is fine and dandy if you run Windows and run between the rails the vendors want you to stay between.
But if you run Linux, this is not the case.
Getting the ThinkPad up and running as my new work device has been a world of pain. This is compared to a venerable ThinkPad Carbon that has become slightly too thin for the resource-sucking world of 2019.
Fedora is my work distribution of choice, and it was not a glorious process. Firstly, the OS detects the Nvidia chipset, and attempts to load the open source nouveau drivers, which will crash because they don’t play well with hybrid graphics, and to add that extra sharp edge to an already dull pain, you do not know when it may happen. So you could make it through the entire process in one piece, or the graphics stack may crap out at the most inconvenient times during the installation process.
Once that stage has been navigated — and the proprietary Nvidia drivers installed, or you may just run off the integrated Intel drivers — you’ll probably want to add a second screen.
This is where the real fun starts, and is the crux of the problem.
For the ThinkPad, it turns out that the external HDMI port is attached to the Nvidia chipset, so you’ll need that GPU running to use it. Currently in the Linux world, running both the chipsets at the same time and having the same capacity as other operating systems more fantasy than reality, and you’ll need to decide which chipset you want before you log into the device.
Some utilities exist to do this more easily, but essentially they are just replacing driver lines in X11 configurations — Wayland is not an option because Nvidia is being used, and the GPU giant has been dragging its feet with Linux for a long, long time.
Another potential solution could be the dock that arrived with the ThinkPad. Although DisplayLink supplies drivers for Linux, they are extremely laggy when used with more than one display, and you need to use the integrated graphics driver because Nvidia doesn’t play nicely with that either.
On the ThinkPad, one external screen connected to the dock is fine but we found the laptop display can be ridden with artefacts in its upper portions, and two external screens pushes it beyond its limits. The DisplayManager process associated with the DisplayLink drivers chews up CPU, and simply cannot keep up with both screens — this is despite the ThinkPad having more than enough grunt to handle the task.
The only way we found that connecting multiple external monitors would work, was to have the Nvidia chipset switched on and running the displays, and connecting the monitors directly into the laptop via USB-C or HDMI — this allowed three external displays to be connected without issues or lag.
In the end, using the dock was simply not a workable solution.
As it currently stands, the choice is either to plug a monitor in via the HDMI/USB-C ports and use the Nvidia driver and cop the extra battery usage, or use the dock with one external display and the integrated Intel graphics and put up with weird artefacts.
I’ve chosen the former, and while it is very much a first-world problem, it is still a problem that demonstrates the limits of desktop Linux.
By contrast, none of this was experienced on the Aero running Windows 10, even though it did not come with a dock and has only an HDMI port.
Since this piece was written from an office full of Dell USB3 docks powering multiple monitors, we tested it with both machines. The Aero was completely fine with it, but the ThinkPad did not handle the dock, and after my previous wrestling with docks, I did not want to head down another dock-powered rabbit hole.
This isn’t a case of blaming Linux, clearly Windows is much better supported and Nvidia is well behind on providing proper support for Linux, but it shows where the usability of Linux starts to run out.
Quite simply, Linux and docks do not mix when it comes to powering displays.
For best results, always connect the displays directly to the device, and in my case, be prepared to cop the hit to the battery.