A few years ago, my main OS was Fedora and so I installed Fedora 31 on my new laptop. However, the touchscreen was not working in Fedora 31.
Thus, this article describes how to properly use the touchscreen on Fedora 31 on Dell XPS 2n 1 7390 machines.
You can find the same problem in Red hat Bugzilla.
In Fedora 32, the touchscreen is well worked.
1. Check Kernel version, after installing Fedora 31
If you installed properly Fedora 31 on your laptop, kernel version of your machine would be
# Check current kernel version
$ uname -a
You need to install
5.4.x version kernel in order to use the touchscreen on Fedora 31 because the fixed patch related to use touchscreen was applied after
5.4.0 version kernel.
The under content is the patch related to use the touchscreen on Dell XPS 13 7390 2 in 1.
The BIOS bug is present on Dell XPS 13 7390 2-in-1:
[ 0.001734] 5 base 4000000000 mask 6000000000 write-combining
4000000000-7fffffffff : PCI Bus 0000:00
4000000000-400fffffff : 0000:00:02.0 (i915)
4010000000-4010000fff : 0000:00:15.0 (intel-lpss-pci)
2. Download Kernel 5.4.x version source code
Kernel version 5.4.x is known to have the touch screen setting. However, I used [torvalds/linux] source because I confirmed that the touch screen works well and proceeded based on this source code.
# Download kernel source code
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ cd linux
$ git checkout master
3. Setting config file
# Copy current kernel config file
$ cp /boot/config-5.3.7-301.fc31.x86_64 .
# Setting config details to build (touchscreen module built-in configuration)
$ make menuconfig
After entering the command, which is
make memuconfig , the following screen will appear.
/, and find the intel_lpss_pci module. (Intel_lpss_pci module is a touch screen module.)
If it looks like the screen above, press
You can see that the intel_lpss_pci module is set to
M (module). However, I want to set this module to built-in and so I changed it by pressing
tab to press
save and press
4. Build Kernel
Build the kernel with the
binrpm-pkg option due to using
rpm command for installation.
$ make prepare
$ make binrpm-pkg -j <the number of cpu core>
$ make help
binrpm-pkg - Build only the binary kernel RPM package
5. Install Kernel
Kernel pkg, which has been built in step 4, is stored in
$ HOME / rpmbuild / RPMS. Change path to this directory and start to install the kernel.
$ cd ~/rpmbuild/RPMS/x86_64/
# Kernel installation.
$ sudo rpm -ivh kernel-5.4.0+-7.x86_64.rpm
# Kernel header installation.
$ sudo rpm -Uvh kernel-headers-5.4.0+-7.x86_64.rpm
Boot the kernel, which is installed in step 5. Check if the kernel version
5.4.0 is properly installed with the following command.
$ uname -a
After the kernel installation, there was a problem of not being able to network after booting.
7. Fixed Network issue
Update the network firmware to the latest file through the following procedure and the network will operate normally.
git clone https://chromium.googlesource.com/chromiumos/third_party/linux-firmware chromiumos-linux-firmware
sudo cp iwlwifi-* /lib/firmware/
sudo ln -s iwlwifi-Qu-c0-hr-b0-50.ucode iwlwifi-Qu-b0-hr-b0-50.ucode