Dell XPS 9310 Fingerprint Reader and Better Power Management under Ubuntu 20.04
Dell XPS 9310 series laptops or other similar models which were released late 2020 may have issues getting the fingerprint reader working under Linux distributions. This is apparently due to closed source device drivers. End of the article, I will be listing some power management configuration which will help reduce heat and extend battery life but at the expense of performance when AC power is disconnected.
Note:
If you have a XPS which came with Ubuntu installation instead of Windows then you can download pre-built ISO from Dell site here https://www.dell.com/support/home/en-au/drivers/osiso/ubt20
Fingerprint reader, howdy face recognition and other hardware features should work out of the box after installation of Dell official iso.
Instructions
Following instructions on getting the fingerprint reader worked for me so noting this down for anyone else having similar problems getting Ubuntu 20.04 based distro working on their XPS. I haven’t tested these settings under PopOS or Linux mint versions which do have 20.04 based derivatives but technically they should work if Ubuntu Linux OEM kernel can be installed on them (official page on oem kernel https://wiki.ubuntu.com/Kernel/OEMKernel).
Make a Bootable Ubuntu
Make a bootable Ubuntu 20.04 USB drive and install Ubuntu using “OEM Install (for manufacturers)” selection under Grub menu.
Make sure you have successfully installed and setup your user accounts under Ubuntu installation before proceeding to next steps.
Getting Fingerprint Reader Configured
Install the base libfprint package
sudo apt install libfprint-2-tod
Download and install the latest proprietary driver from Dell
http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-goodix/
At the time of writing this, latest driver (deb file) is used in the below command. To find out latest driver go to http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-goodix/
curl -sLO http://dell.archive.canonical.com/updates/pool/public/libf/libfprint-2-tod1-goodix/libfprint-2-tod1-goodix_0.0.6-0ubuntu1~somerville1_amd64.deb && sudo dpkg -i libfprint-2-tod1-goodix_0.0.6-0ubuntu1~somerville1_amd64.deb
Restart the computer and then run below command to select “Fingerprint” as an authentication method.
sudo pam-auth-update
Power Management Tweaks
I usually prefer a cooler and long lasting laptop rather than a one that is warm to the touch when using it. I have configured my XPS using below config to run the CPU in a reduced clock speed to reduce heat and power use. In practice, XPS 13 9310 lasts more than 12 hours with the below config with various background apps running (docker with multiple containers, vs code, browser etc).
Steps
We will be using TLP to manage system power use. You will need follow installation steps listed in https://linrunner.de/tlp/installation/ubuntu.html
Once installed use the below configuration within /etc/tlp.conf
For explanation of each config, read the commented out description within tlp.conf or refer to https://linrunner.de/tlp/settings/operation.html
TLP_ENABLE=1
TLP_WARN_LEVEL=3
CPU_SCALING_GOVERNOR_ON_AC=powersave
CPU_SCALING_GOVERNOR_ON_BAT=powersave
CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_MIN_PERF_ON_AC=0
CPU_MAX_PERF_ON_AC=100
CPU_MIN_PERF_ON_BAT=0
CPU_MAX_PERF_ON_BAT=30
CPU_BOOST_ON_AC=1
CPU_BOOST_ON_BAT=0
SCHED_POWERSAVE_ON_AC=0
SCHED_POWERSAVE_ON_BAT=1
PLATFORM_PROFILE_ON_AC=performance
PLATFORM_PROFILE_ON_BAT=low-power
INTEL_GPU_MIN_FREQ_ON_AC=100
INTEL_GPU_MIN_FREQ_ON_BAT=100
INTEL_GPU_MAX_FREQ_ON_AC=1400
INTEL_GPU_MAX_FREQ_ON_BAT=700
INTEL_GPU_BOOST_FREQ_ON_AC=1
INTEL_GPU_BOOST_FREQ_ON_BAT=0
Restart TLP service
sudo service tlp restart