installation report for Debian 10 (buster) on a Dell Inspiron 14 2-in-1

Matteo Semplice <[email protected]> Wed, 27 Nov 2019 01:31:50 +0100
Newsgroups gmane.linux.debian.user.laptop
Message-ID <[email protected]>
Dear all,

as promised, here comes an installation report of Debian Buster on a 
Dell Inspirion 14 2-in-1 laptop in the hope that it may be useful to 
someone else. (By the way, there used to be a website that collected 
these installation reports, but I cannot find it any more... Any ideas 
of where I could publish and keep updated this report?)

The main problem turned out to be a lack of support for the i7-10510U by 
kernels prior to version 5.4, so currently I see no shorter route than 
mine: I have installed normally, booted into console and compiled a new 
kernel from source. Of course the situation may get better when newer 
kernels will become available in the Debian repositories.

* first the SSD drive must be set in AHCI mode (as opposed to RAID) in 
the UEFI-BIOS. Unfortunately, Windows on the first boot sets it to RAID 
and then loads only the drivers for RAID: if one simply changes the 
setting in UEFI, Windows will not be able to boot any more. One possible 
procedure is to set Windows to boot in safe mode, change the UEFI 
setting and then reset the Windows boot. In this way, Windows will find 
the disk in AHCI mode when booting in safe mode and will manage to boot 
and set itself for loading AHCI drivers, so that normal boots will 
succed afterwards. The following links illustrate possible procedures to 
achieve this. (Note: I wonder if entering UEFI before the first boot 
into Windows and change the setting there might avoid this hassle 
altogether)

http://triplescomputers.com/blog/uncategorized/solution-switch-windows-10-from-raidide-to-ahci-operation/

https://samnicholls.net/2016/01/14/how-to-switch-sata-raid-to-ahci-windows-10-xps-13/

Of course if you wish to keep Windows installed (useful e.g. to test the 
hardware...) you'll need to shrink the Windows partition before 
installing Debian.

* remeber that right after the install (Nov 2019), you'll have no 
graphics system and no wifi. It is thus useful and almost mandatory to 
have an USB ethernet adapter, a supported USB WIFI adapter or even just 
an USB cable to use the tethering function of your mobile...

* the installer will want to install the firmware-iwlwifi package. It 
could be useful to have it on a USB stick (in the root directory of the 
stick), but for me the WiFi adapter did not work out-of-the-box, so this 
is kind of useless with the current version (Nov 2019) of kernel/iwlwifi 
module and firmware. Nevertheless it is worth a try, in case newer 
versions bacame available in the Debian repos.

* fire up the Debian 10 installer and follow the usual steps to install 
your favourite tasks and finish it off by installing grub.

* Right after installation the pc will reboot into a terminal or may not 
even complete the boot sequence, but blacklisting intel_lpss_pci should 
do the trick: access the GRUB menu, highlight the "Adavanced options" 
and press "e" to edit the kernel command line, remove "quiet" and add 
"module_blacklist=intellpss_pci", then press F10 to boot. I had also 
success by booting in single core mode (kernel option "nosmp"). In order 
to fix these problems you'll need a recent enough kernel and a patched 
intel_lpsss_pci driver. I have observed different behaviours with 
kernels from different linux-image-amd64 packages (versions from buster, 
buster-backports, experimental), so your milage may vary here, but in 
general it sohuld be getting better and better when new kernel versions 
become available in Debian

* wifi will most likely not be working at this point, so you'll need an 
alternative network connection for the following steps

* fix support for the i7-10510U and Intel UHD-620 graphics
I have found very useful the discussions and instructions at 
https://www.reddit.com/r/Dell/comments/cx0fkc/xps_13_2_in_1_7390_linux_boot_attempt/.
In orderᅵ to have graphics working correctly, after install you need to 
upgrade the kernel to at least version 5.4 (from buster-backports, 
experimental or compiling it from the sources at linux.org). I have 
mainly followed the procedure at section 4.6 of the Debian kernel 
handbook at 
https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official. 
(Note: I have actually cloned a git repo for the kernel and not the 
tarballs since I foresee having to track the most recent kernels for an 
up-to-date support of all the hardware of this machine) At the time of 
writing (kernel 5.4-rc8), you'll need to apply a patch to the 
intel_lpss_pci module.ᅵ The author of the above reddit has also set up a 
git repo with useful code and patches. Have a look at the script 
opt/scripts/build-custom-kernel.sh from 
https://gitlab.com/emrose/xps13-7390_debian.git, but keep in mind that 
it targets an XPS model and an older kernel version. On the Inspiron 14 
2-in-1 I had to apply only the lpss.patch in the directory opt/patches 
of the git repo and the other ones do not seem to be needed.

* nVidia MX230 support
I have currently blacklisted the "nouveau" driver and will look later at 
this issue or at least figure out a way to power off the card

* wifi support
 ᅵ It appears that the backport of the most recent iwlwifi driver is 
still needed with 5.4 (see the procedure in the backport-wireless.sh 
script in the same git repo as above), but on my machine it did not fix 
completely the wifi problem: after patching the driver and downloading 
the new firmware, the wifi card gets recognized and can scan networks, 
but the whole system hangs while trying to connect to a wifi network.

(These issue needs to be tested more thoroughly: could someone point me 
to a guide to setup a wifi connection from the terminal so that I can 
see the output of each command?)

* touchscreen and pen
 ᅵ When using the 5.4 kernel with the lpss patch, the touchscreen works 
both when used with fingers and with the pen (using the PN350M by Dell), 
including pressure sensitivity and one of the buttons. The only issue 
with the button is that, e.g. in xournal++, pressing the upper button on 
the pen changes the tool "eraser" but then touching the screen reverts 
the tool back to "pen". This seems to be a common problem linked to 
libinput and a possible workaround is the following procedure: first 
make contact with the screen, then press the button and start erasing 
without loosing the contact with the screen.

Instead the lower button on the pen does not seem to do anything. (any 
ideas here?)

I have observed that monitor-sensors reports correctly the laptop 
position, so automatic screen and touchpad rotation could be probaly 
achieved e.g. as in https://forums.linuxmint.com/viewtopic.php?t=278448, 
but I have not tested it yet.

* suspend and hibernate: I have tested them with the patched 5.4 kernel 
and they worked out of the box.

Best

 ᅵᅵᅵ Matteo