Hacker News new | ask | show | jobs
by dhekir 1893 days ago
Every single laptop my company bought me in the last 10 years (3+) had kernel/driver issues, especially with Ubuntu, since the kernel version was usually lower than that from other distros, like Fedora.

This includes mostly graphics driver issues (either simply Nvidia, or hybrids, or some exotic protocols such as DisplayLink), but also touchpad, power/suspend issues (e.g. wake-up failure), lack of fingerprint or smartcard reader drivers... Without mentioning certain manufacturers forcing you to use Windows simply to update docking station firmware drivers (like Dell does).

I still favor Linux whenever I can, but there is a real issue in several models, especially bleeding-edge powerful laptops from brands favored by businesses. Linux certification does improve things, but it often omits "optional" components such as fingerprint readers.

Overall, about 1-2 years after the new laptop model has been released, almost everything works fine, but when you're among the first users, some amount of time will be spent in forums trying to find solutions and workarounds for such issues.

5 comments

I can live without the fingerprint reader.

It’s the lack of hibernate that really sucks. I got my 2013 MBA battery replaced. Leave it unplugged for 10 hours. 1% battery drop.

XPS 17 on Pop OS LTS with kernel 5.8. I have to shut down if I want battery left.

On XPS 13 (2017) I watched this break due to a firmware update from Dell (something to do with sleep states)

Before the update: Windows sleep was strange, it would sleep but drain battery like crazy. Linux sleep was perfect, I could have the laptop sleeping for days.

After the update: Linux sleep started showing the exact problem as Windows now.

I did not dive much further because I switched jobs and got a ThinkPad at the new one which works perfect.

Windows/MS was the people behind the mess Todo with bios sleep states and lack of support in Linux. That was resolved ages ago though.
> I can live without the fingerprint reader.

Semi on topic: I don't have one either but I would really like to, simply because then I could have a stronger account password.

Having to frequently use sudo restricts the length/complexity of the password since a longer one would simply be a pain in the ass to use. With a fingerprint reader this problem wouldn't exist.

Had the same problem with mine. You need to change the sleep mode. You need to change sleep to mem_sleep_default=deep
I found it much more difficult. I had to move my swap partition into the LUKS partition so it was encrypted, resize it to be much bigger than the default then figure our how to have the RESUME=disk-uuid boot flag enabled for EFI boot. I got it working but it was quite time consuming.
This was the method I found but it didn’t work for me and I gave up.
We see that kind of issue frequently and in the majority of cases it is not a Linux fault, but manufacturer firmware.

It is such a frequent issue I wrote an article 10 years ago that is still extremely relevant with simple instructions to enable a kernel work-around [0].

Specifically the problem is the ACPI DSDT (Differentiated System Description Table) - which is actually byte-code installed by the device manufacturer (but executed by the host OS) that handles device power states and enablement.

The problem is almost always DSDT methods are written to conditionally configure system hardware optimally ONLY when the host OS is a version of Windows as declared by the host OS's ACPI OSI (Operating System Identification).

When Linux boots only a minimal configuration is applied which very often has never been tested and thus devices fail to work reliably, especially for suspend/resume, in interesting ways.

Fortunately, Linux has a WORKAROUND that allows passing a 'fake' OSI on the kernel command-line in the form:

  acpi_osi=! "acpi_osi=Windows XXXX"
The first instance (=!) clears all built-in kernel OSIs to avoid confusion. The second string sets the 'best' and only OSI value which has been found in the DSDT of that PC.

That can be discovered from a Linux boot using:

  sudo strings /sys/firmware/acpi/tables/DSDT | grep -i 'windows ' | sort
E.g: on my Lenovo E495 (AMD Ryzen 7 3700U) I have:

  Microsoft Windows NT
  Windows 2001
  Windows 2001.1
  Windows 2001 SP1
  Windows 2001 SP2
  Windows 2001 SP3
  Windows 2006
  Windows 2006 SP1
  Windows 2009
  Windows 2009
  Windows 2012
  Windows 2013
  Windows 2015
  Windows 2015
  Windows 2016
So, on the basis that "Windows 2016" is the 'latest' and likely the OSI expected to enable all features optimally I use that. On Debian/Ubuntu I therefore have:

  /etc/default/grub.d/local.cfg

  GRUB_CMDLINE_LINUX="acpi_osi=! \"acpi_osi=Windows 2016\" "

Notice the escaped quote-marks inside the shell string since the argument contains a space.

(some folks might prefer to edit the package-shipped /etc/default/grub but I prefer to leave that virgin to avoid package-upgrade prompts when that file is replaced.)

After:

  sudo update-grub

  /boot/grub/grub.cfg
will have the acpi_osi= entries added to all the "linux ..." command lines

E.g:

  $ grep acpi_osi= /boot/grub/grub.cfg
  linux   /vmlinuz-5.12.0-rc5+ root=/dev/mapper/ELLOE000-rootfs ro acpi_osi=! "acpi_osi=Windows 2016" systemd.unified_cgroup_hierarchy=1 nosplash

[0] https://iam.tj/prototype/enhancements/Windows-acpi_osi.html
As mentioned by AnssiH, this hasn't been true for a long time - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... was merged in 2007. I wrote up the reasoning back in 2008 at https://mjg59.livejournal.com/85923.html, but since then Linux should always have been behaving identically to the most recent version of Windows as far as OSI responses go.
most features of my laptop don't work reliably (MSI GS65) if I don't use the acpi_osi line, why would that be in that case ? I'm on archlinux with pretty much always the latest kernel
What argument are you providing? In some cases if you pretend to be an older version of Windows then things will work better, since it's possible for the kernel to end up pretending to be a new version of Windows without all the relevant semantic changes in the drivers having been made.
No, I have to set it to the latest version (I think? I have acpi_osi="Windows 2019") for things to work correctly
That sounds out of date. Linux has reported itself as Windows via ACPI OSI and actually reports FALSE for "Linux" OSI query for well over a decade now.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

https://www.kernel.org/doc/Documentation/firmware-guide/acpi...

most features of my laptop don't work reliably (MSI GS65) if I don't use the acpi_osi line, why would that be in that case ? I'm on archlinux with pretty much always the latest kernel
Just tried this on my AMD laptop with an American megatrends bios and it won't boot at all - just freezes while initializing the efi framebuffer device.

Clearly in some cases the manufacturers overrides for Linux are required...

Pop OS doesn’t use grub :(
This is a kernel parameter, so just set it in whatever bootloader Pop OS uses..
Ok. Linux 5.10 actually seemed to improve the power issue but my sound and mic breaks which I need for meetings.
I'd recommend buying one of the new Laptops with actual, official LVFS support by the vendor. My new (Tiger Lake) Dell XPS 13 for example even has support for the fingerprint reader, face unlock etc. by default, and the new ThinkPads and many other High-End models come with Linux support and Linux pre-installed nowadays. They also have a proper hibernation toggle (Linux/Windows mode) in the BIOS so it "just works".
Indeed I too have a new XPS and I was pleasantly surprised that everything works fine. Also Linux updates for Bulbasaur are quite regular visitors.
I have a tiger lake XPS 13 as well and have been unable to get S3 deep sleep to work. Have you?
Are you somehow explicitly testing S3? S3 is obsolete on new hardware — it was replaced by S0ix. The kernel and userspace are supposed to be able to handle this.
>about 1-2 years after the new laptop model has been released, almost everything works fine

It depends on the category of device and what feature you want. I recently got an X1 Tablet (the 2-in-1 version of the X1 Carbon), and it barely works on Linux; there's a veritable zoo of inscrutable bugs that render the device very annoying to use (for example, Plasma's night mode disables when you re-attach the keyboard). It's clear that the FOSS ecosystem as a whole places little priority on touchscreeny things, either on the device end or the software end; the overlap between people hackish enough to fix weird bugs and people who find 2-in-1 tablets compelling enough to hack on is evidently smaller than with normal laptops.

This matches my experience with a 2-in-1 Thinkpad. Obscure bugs (WiFi driver periodically crashing when Thunderbolt is connected) still there after 2 years now.

I think the best bet is going with as much of a run off the mill device as possible. In my experience a separate tablet works much better than a 2-in-1 compromise anyway. When your sole input device is a touchscreen, UX is (unsurprisingly) massively better with a touch-first UI compared to a mouse-first UI.

The problem isn't the "compromise" - the problem is there is no touch-first UI on Linux. That's the point. I can detach the screen and use it as a "seperate tablet", but it still sucks.

Android, on the other hand, is strictly improved by the addition of a hardware keyboard.

> there is no touch-first UI on Linux

If you’re still looking, you could check out JingOS. I haven’t tried it personally but it seems to be basically an iPadOS desktop environment for Linux.

No thanks; it's a closed source GPL-violating fork of Plasma Mobile with heavy (and sketchy) marketing.
Pro tip: Canonical provides recent kernels for all LTS releases. it's a meta package with rolling updates. 1 apt command and you're set. Full support.

On ubuntu 18.04 or before you could/should do this : sudo apt-get install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04

Starting with 20.04 it's by default so you don't even need it IIRC.

No complaints on my Thinkpads.