Difference between revisions of "Dell XPS 15 7590"

From ArchWiki
Jump to navigation Jump to search
(added initial structure)
(Added a script that runs on start up for brightness)
 
(45 intermediate revisions by 14 users not shown)
Line 1: Line 1:
 +
[[Category:Dell]]
 
{{Note|This page refers to the 7590 revision of the XPS 15. Most of it also applies to the Precision 5540.}}
 
{{Note|This page refers to the 7590 revision of the XPS 15. Most of it also applies to the Precision 5540.}}
  
Line 12: Line 13:
 
|-
 
|-
 
| [[#Graphics|Discrete Nvidia Graphics]] || {{Y|Modify}}
 
| [[#Graphics|Discrete Nvidia Graphics]] || {{Y|Modify}}
 +
|-
 +
| [[#Graphics|Backlight]] || {{Y|Modify}}
 
|-
 
|-
 
| [[#Wifi_and_Bluetooth|Wifi]] || {{G|Working}}
 
| [[#Wifi_and_Bluetooth|Wifi]] || {{G|Working}}
Line 35: Line 38:
 
| [[#EFI_firmware_updates|EFI firmware updates]] || {{G|Working}}
 
| [[#EFI_firmware_updates|EFI firmware updates]] || {{G|Working}}
 
|-
 
|-
| [[#Fingerprint_reader|Fingerprint reader]]{{Broken section link}} || {{R|Not working}}
+
| [[#Fingerprint_reader|Fingerprint reader]] || {{R|Not working}}
 
|}
 
|}
  
Line 44: Line 47:
  
 
== UEFI ==
 
== UEFI ==
 +
Before installing it is necessary to modify some UEFI Settings. They can be accessed by pressing the F2 key repeatedly when booting.
 +
* If you will be dual booting alongside an existing Windows installation, Windows will not boot if you just go ahead and make the switch to AHCI as described in the steps below. You must log into you Windows install both before and after that BIOS change [https://triplescomputers.com/blog/uncategorized/solution-switch-windows-10-from-raidide-to-ahci-operation/ to set and then remove a safeboot flag], respectively.
 +
* Under 'System Configuration', change the SATA Mode from the default "RAID" to "AHCI". This will allow Linux to detect the NVME SSD.
 +
* Under 'Secure Boot', disable secure boot to allow Linux to boot.
 +
* Under 'POST Behaviour', change "Fastboot" to "Thorough". This prevents intermittent boot failures.
  
 +
=== Firmware Update ===
 +
 +
Firmware images can be found at [https://www.dell.com/support/home/us/en/04/product-support/product/xps-15-7590-laptop/drivers Dell support page]. Keeping an existing Windows system will make updates of BIOS much simpler. If a clean Arch Linux install is the case in order to install:
 +
 +
* Download the desired firmware from section "Dell XPS 15 7590 System BIOS"
 +
* Save it in {{ic|/boot/EFI/Dell/Bios/}} (this path may vary, depending on your installation)
 +
* Reboot the system, and enter the boot menu by pressing repeatedly {{ic|F12}} on Dell logo
 +
* Choose "Bios Flash Update"
 +
* Select the file previously saved, and start the process
 +
The process will take about five minutes, during which the system will have some reboots and push fans at maximum speed. Finally the system will reboot normally.
  
 
== Power Management ==
 
== Power Management ==
  
 
=== Suspend ===
 
=== Suspend ===
 +
 +
By default, the very inefficient s2idle suspend variant is incorrectly selected. This is probably due to the BIOS. The much more efficient deep variant should be selected instead:
 +
 +
  $ cat /sys/power/mem_sleep
 +
  [s2idle] deep
 +
  $ echo deep|sudo tee /sys/power/mem_sleep
 +
  $ cat /sys/power/mem_sleep
 +
  s2idle [deep]
 +
 +
To make the change permanent add {{ic|1=mem_sleep_default=deep}} to your [[kernel parameters]].
 +
 +
An easy way would be to add {{ic|1=mem_sleep_default=deep}} to the {{ic|1=GRUB_CMDLINE_LINUX_DEFAULT}} entry in /etc/default/grub:
 +
 +
  GRUB_CMDLINE_LINUX_DEFAULT="mem_sleep_default=deep"
 +
 +
Read more regarding the sleep variants on the kernel documentation [https://www.kernel.org/doc/html/v4.18/admin-guide/pm/sleep-states.html].
 +
 +
{{Warning|Some users have reported a problem where the CPUs get stuck in a high power state after resuming from S3 (deep) suspension [https://www.reddit.com/r/Dell/comments/91313h/xps_15_9570_c_state_bug_after_s3_sleep_and_modern/].}}
 +
 
=== Hibernate ===
 
=== Hibernate ===
 
=== Powertop ===
 
=== Powertop ===
Line 56: Line 93:
 
=== kernel modules ===
 
=== kernel modules ===
 
=== NVIDIA Optimus ===
 
=== NVIDIA Optimus ===
 +
==== Manually loading/unloading NVIDIA module ====
 +
 +
{{Note | The section is about manually loading/unloading NVIDIA module without packages unsupported by the model like {{Pkg|bbswitch}}. After manually loaded NVIDIA module you still won't be able to run anything that actually displays something though have the module loaded is a prerequisite to all the things that are related to using the discrete graphic card, since it is mainly related to how the X window system handles the graphic card. However, you would be able to do GPU-related calculations, such like using CUDA or OpenCL. For running programs that do have something to display without launching a new X session, use {{Pkg|bumblebee}}, see [[bumblebee]]. }}
 +
 +
First disable the nouveau modules.
 +
 +
{{hc|/etc/modprobe.d/blacklist.conf|
 +
blacklist nouveau
 +
blacklist rivafb
 +
blacklist nvidiafb
 +
blacklist rivatv
 +
blacklist nv
 +
}}
 +
 +
If the nouveau modules are already loaded, a reboot would be required.
 +
{{Warning | Beware and check your X window system configuration before you reboot. If the discrete GPU is running the X server and you reboot the computer without further configurations on X window system, there could be problems in starting the X server and getting into a GUI.}}
 +
 +
Install {{Pkg|nvidia}}
 +
 +
A script has been written to automate some tedious jobs, run
 +
{{bc|curl https://raw.githubusercontent.com/noxultranonerit/SimpleScripts/master/nvidia_gpu -o gpucli
 +
chmod +x gpucli
 +
}}
 +
to download the script and make it executable. Next run
 +
{{bc|gpucli}}
 +
and follow the instructions.
 +
 +
{{Note|One should investigate the script and learn what the script will do before using it.}}
 +
 +
When unloading the dGPU, a message saying {{ic|module unload failed, run nvidia-smi to check running process and kill them}} may be printed. Most process can be killed with the method described, that is, with {{ic| kill PROCESS_PID}}, or when it doesn't work, with {{ic|kill -9 PROCESS_PID}}.
 +
 +
If you are loading the dGPU in a existing X session, the server would automatically handle the dGPU, leading to unloading failure. In this case you should add
 +
{{hc|/etc/X11/xorg.conf.d/01-noautogpu.conf|
 +
Section "ServerFlags"
 +
Option "AutoAddGPU" "off"
 +
EndSection
 +
}}
 +
 +
Finally, create a service locking NVIDIA GPU on shutdown
 +
{{hc|/etc/systemd/system/disable-nvidia-on-shutdown.service|
 +
[Unit]
 +
Description<nowiki>=</nowiki>Disables Nvidia GPU on OS shutdown
 +
 +
[Service]
 +
Type<nowiki>=</nowiki>oneshot
 +
RemainAfterExit<nowiki>=</nowiki>true
 +
ExecStart<nowiki>=</nowiki>/bin/true
 +
ExecStop<nowiki>=</nowiki>/bin/bash -c "mv /etc/modprobe.d/disable-nvidia.conf.disable /etc/modprobe.d/disable-nvidia.conf <nowiki>||</nowiki> true"
 +
 +
[Install]
 +
WantedBy<nowiki>=</nowiki>multi-user.target}}
 +
 +
Reload systemd daemons and enable the {{ic|disable-nvidia-on-shutdown}} service:
 +
  sudo systemctl daemon-reload
 +
  sudo systemctl enable disable-nvidia-on-shutdown.service
 +
 +
Note that the script aforementioned will not install the systemd service. If you do not want a systemd service installed, make sure to turn off the computer only after you have unloaded the dGPU, i.e. have run {{ic|gpucli --off}} and a success message has been printed.
 +
 +
You will be able to run CUDA after {{ic|gpucli --on}}.
 +
 +
==== Using nvidia-xrun ====
 +
If you want to start a whole X-session with dGPU, install {{aur|nvidia-xrun-git}} (not {{aur|nvidia-xrun-pm}} or {{aur|nvidia-xrun}}).
 +
Consult [[nvidia-xrun]].
 +
 +
=== Backlight ===
 +
 +
If using a desktop environment with an OLED screen, you may notice the backlight does not function. Since on some models the screen is OLED (which do not have physical backlights), you may need to shim the ACPI backlight functions to update Xrandr's "--backlight" option. This is done by monitoring the acpi_video0 levels, and updating the xrandr brightness levels accordingly.
 +
 +
For this to work, you must first install {{Pkg|inotify-tools}} and {{Pkg|bc}}. Then, create the following file:
 +
 +
$ cat /usr/local/bin/xbacklightmon
 +
 +
#!/bin/sh
 +
#use LC_NUMERIC if you are using an European LC, else printf will not work because it expects an comma instead of a decimal point
 +
LC_NUMERIC="en_US.UTF-8"
 +
 +
#Exit with 1 if $DISPLAY env isn't set. Helps when using the start up script below
 +
[ -z "$DISPLAY" ] && exit 1;
 +
 +
# modify this path to the location of your backlight class
 +
path=/sys/class/backlight/intel_backlight
 +
 +
luminance() {
 +
    read -r level < "$path"/actual_brightness
 +
    factor=$((max))
 +
    new_brightness="$(bc -l <<< "scale = 2; $level / $factor")"
 +
    printf '%f\n' $new_brightness
 +
}
 +
 +
read -r max < "$path"/max_brightness
 +
 +
xrandr --output eDP-1 --brightness "$(luminance)"
 +
 +
inotifywait -me modify --format <nowiki>''</nowiki> "$path"/actual_brightness | while read; do
 +
    xrandr --output eDP-1 --brightness "$(luminance)"
 +
done
 +
 +
Then make this file executable and owned by root:
 +
 +
$ chown root:root /usr/local/bin/xbacklightmon
 +
$ chmod 755 /usr/local/bin/xbacklightmon
 +
 +
You may test this by running the file, and using the backlight keys to test if the brightness updates.
 +
 +
 +
To run the script automatically on startup, write the following file:
 +
 +
{{hc|$HOME/.config/systemd/user/xbacklightmon.service|
 +
[Unit]
 +
Description<nowiki>=</nowiki>Ugly fix to be able to control the brightness of OLED screens via keyboard brightness
 +
After<nowiki>=</nowiki>multi-user.target
 +
 +
[Service]
 +
Type<nowiki>=</nowiki>simple
 +
ExecStart<nowiki>=</nowiki>/usr/local/bin/xbacklightmon
 +
Restart<nowiki>=</nowiki>on-failure
 +
RestartSec<nowiki>=</nowiki>1
 +
 +
[Install]
 +
WantedBy<nowiki>=</nowiki>default.target}}
 +
 +
 +
And to enable on startup
 +
{{bc|systemctl --user enable xbacklightmon.service}}
 +
 +
'''Please note:''' If you are using the xf86-video-intel driver, you will need to replace 'eDP-1' in the script above with 'eDP1'
 +
You also have to change the path to 'path=/sys/class/backlight/intel_backlight/' if you are using xf86-video-intel
 +
 +
=== Backlight function keys ===
 +
 +
When using a LCD display device and in a desktop environment (KDE verified) the function key will be working out of the box for the DEs have their own key mapping. However, when in a window manager with modesetting driver (and also int the tty console), the backlight controlling function keys won't be working and will throw out errors like {{ic|ACPI BIOS Error, could not resolve symbol}}.
 +
 +
Usually {{ic|/sys/class/backlight/intel_backlight}} is symlinked to {{ic|/sys/device/pci00/0000:00:02.0/drm/card0/card0-eDP-1/}}, and by changing the value of {{ic|backlight}} file inside the directory the backlight level can be controlled, but the operation needs root previliege. Establishing a udev rule and accordingly a backlight control group will help, but these steps can be done easily with the package {{Pkg|light}}.
 +
 +
Then a mapping of function key to the command, say, {{ic|light -A 3}} and {{ic|light -U 3}} would be in need. {{ic|XF86BrightnessDown}} and {{ic| XF86BrightnessUp}} won't be working. The mapping of the keys can be done with {{Pkg|acpid}}. Install the package, then insert these lines to the {{ic|case "$1" in}} block
 +
 +
{{hc|/etc/acpi/handler.sh|
 +
video/brightnessup) light -A 3 ;;
 +
video/brightnessdown) light -U 3 ;;
 +
}}
 +
 +
start and enable the service:
 +
 +
{{ic|systemctl enable acpid.service}}, {{ic|systemctl start acpid.service}}.
 +
 +
=== Backlight in Wayland ===
 +
 +
The xrandr command does not work with Wayland.
 +
Instead you can use the {{Pkg|icc-brightness}}{{Broken package link|package not found}} tool to control the brightness.
 +
 +
You can find it here: [https://github.com/udifuchs/icc-brightness https://github.com/udifuchs/icc-brightness]
 +
 +
=== Backlight in Sway ===
 +
 +
For {{Pkg|sway}} users you can use {{Aur|redshift-wlr-gamma-control}} to set the brightness. The following command sets the brightness to 75%.
 +
 +
redshift -o -b 0.75 -O 6500k -m wayland -l manual
 +
 +
This may also work for other window managers based on {{Pkg|wlroots}}.
  
 
== Wifi and Bluetooth ==
 
== Wifi and Bluetooth ==
 +
=== WIFI ===
 +
 +
With kernel version 5.2.2 and linux-firmware 20190717.bf13a71-1, WIFI would be working out of the box.
 +
 +
With kernel versions lower than 5.2.0, WIFI will not be working out of the box, a manual installation of drivers in is required in order that the hardware can be recognized correctly. Connect to the internet via a cable or via USB tethering, then consult [https://support.killernetworking.com/knowledge-base/killer-ax1650-in-debian-ubuntu-16-04/ this page]
 +
 +
$ pacman -S git
 +
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
 +
$ cd backport-iwlwifi
 +
$ make defconfig-iwlwifi-public
 +
$ make -j4
 +
$ sudo make install
 +
 +
Additionally, you may need to ensure you have the latest iwlwifi firmware:
 +
 +
$ sudo git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
 +
$ cd linux-firmware
 +
$ sudo cp iwlwifi-* /lib/firmware/
 +
 +
It is basically same with Pacman -Syu and updating the Linux-firmware package, albeit the package version would be newer in the former case.
 +
Reboot.
 +
 +
Kernel versions 5.2.0 and 5.2.1 [https://bbs.archlinux.org/viewtopic.php?id=247705 have issues with getting the WiFi module working ]. However, according to the same post, removing the file {{ic|/lib/firmware/iwlwifi-cc-a0-48.ucode}} will help, which keeps the troublesome firmware verision 48 from being loaded and load the version 46 firmware instead.
 +
 
== Touchpad and Touchscreen ==
 
== Touchpad and Touchscreen ==
 
== Docks ==
 
== Docks ==
Line 66: Line 286:
  
 
== Tips and Tricks ==
 
== Tips and Tricks ==
 +
 +
 +
 +
== Fingerprint reader ==

Latest revision as of 11:53, 18 September 2019

Note: This page refers to the 7590 revision of the XPS 15. Most of it also applies to the Precision 5540.


Device/Functionality Status
Suspend Working
Hibernate Working
Integrated Graphics Working
Discrete Nvidia Graphics Modify
Backlight Modify
Wifi Working
Bluetooth Working
rfkill Working
Audio Working
Touchpad Working
Touchscreen Working
Webcam Working
Card Reader Working
Function/Multimedia Keys Working
Power Management Working
EFI firmware updates Working
Fingerprint reader Not working


This page contains recommendations for running Arch Linux on the Dell XPS 15 7590 (2019).

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: This page is work in progress. (Discuss in Talk:Dell XPS 15 7590#)

UEFI

Before installing it is necessary to modify some UEFI Settings. They can be accessed by pressing the F2 key repeatedly when booting.

  • If you will be dual booting alongside an existing Windows installation, Windows will not boot if you just go ahead and make the switch to AHCI as described in the steps below. You must log into you Windows install both before and after that BIOS change to set and then remove a safeboot flag, respectively.
  • Under 'System Configuration', change the SATA Mode from the default "RAID" to "AHCI". This will allow Linux to detect the NVME SSD.
  • Under 'Secure Boot', disable secure boot to allow Linux to boot.
  • Under 'POST Behaviour', change "Fastboot" to "Thorough". This prevents intermittent boot failures.

Firmware Update

Firmware images can be found at Dell support page. Keeping an existing Windows system will make updates of BIOS much simpler. If a clean Arch Linux install is the case in order to install:

  • Download the desired firmware from section "Dell XPS 15 7590 System BIOS"
  • Save it in /boot/EFI/Dell/Bios/ (this path may vary, depending on your installation)
  • Reboot the system, and enter the boot menu by pressing repeatedly F12 on Dell logo
  • Choose "Bios Flash Update"
  • Select the file previously saved, and start the process

The process will take about five minutes, during which the system will have some reboots and push fans at maximum speed. Finally the system will reboot normally.

Power Management

Suspend

By default, the very inefficient s2idle suspend variant is incorrectly selected. This is probably due to the BIOS. The much more efficient deep variant should be selected instead:

 $ cat /sys/power/mem_sleep 
 [s2idle] deep
 $ echo deep|sudo tee /sys/power/mem_sleep
 $ cat /sys/power/mem_sleep 
 s2idle [deep]

To make the change permanent add mem_sleep_default=deep to your kernel parameters.

An easy way would be to add mem_sleep_default=deep to the GRUB_CMDLINE_LINUX_DEFAULT entry in /etc/default/grub:

 GRUB_CMDLINE_LINUX_DEFAULT="mem_sleep_default=deep"

Read more regarding the sleep variants on the kernel documentation [1].

Warning: Some users have reported a problem where the CPUs get stuck in a high power state after resuming from S3 (deep) suspension [2].

Hibernate

Powertop

Graphics

kernel modules

NVIDIA Optimus

Manually loading/unloading NVIDIA module

Note: The section is about manually loading/unloading NVIDIA module without packages unsupported by the model like bbswitch. After manually loaded NVIDIA module you still won't be able to run anything that actually displays something though have the module loaded is a prerequisite to all the things that are related to using the discrete graphic card, since it is mainly related to how the X window system handles the graphic card. However, you would be able to do GPU-related calculations, such like using CUDA or OpenCL. For running programs that do have something to display without launching a new X session, use bumblebee, see bumblebee.

First disable the nouveau modules.

/etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist nv

If the nouveau modules are already loaded, a reboot would be required.

Warning: Beware and check your X window system configuration before you reboot. If the discrete GPU is running the X server and you reboot the computer without further configurations on X window system, there could be problems in starting the X server and getting into a GUI.

Install nvidia

A script has been written to automate some tedious jobs, run

curl https://raw.githubusercontent.com/noxultranonerit/SimpleScripts/master/nvidia_gpu -o gpucli
chmod +x gpucli

to download the script and make it executable. Next run

gpucli

and follow the instructions.

Note: One should investigate the script and learn what the script will do before using it.

When unloading the dGPU, a message saying module unload failed, run nvidia-smi to check running process and kill them may be printed. Most process can be killed with the method described, that is, with kill PROCESS_PID, or when it doesn't work, with kill -9 PROCESS_PID.

If you are loading the dGPU in a existing X session, the server would automatically handle the dGPU, leading to unloading failure. In this case you should add

/etc/X11/xorg.conf.d/01-noautogpu.conf
Section "ServerFlags"
	Option "AutoAddGPU" "off"
EndSection

Finally, create a service locking NVIDIA GPU on shutdown

/etc/systemd/system/disable-nvidia-on-shutdown.service
[Unit]
Description=Disables Nvidia GPU on OS shutdown

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/bash -c "mv /etc/modprobe.d/disable-nvidia.conf.disable /etc/modprobe.d/disable-nvidia.conf || true"

[Install]
WantedBy=multi-user.target

Reload systemd daemons and enable the disable-nvidia-on-shutdown service:

 sudo systemctl daemon-reload
 sudo systemctl enable disable-nvidia-on-shutdown.service

Note that the script aforementioned will not install the systemd service. If you do not want a systemd service installed, make sure to turn off the computer only after you have unloaded the dGPU, i.e. have run gpucli --off and a success message has been printed.

You will be able to run CUDA after gpucli --on.

Using nvidia-xrun

If you want to start a whole X-session with dGPU, install nvidia-xrun-gitAUR (not nvidia-xrun-pmAUR or nvidia-xrunAUR). Consult nvidia-xrun.

Backlight

If using a desktop environment with an OLED screen, you may notice the backlight does not function. Since on some models the screen is OLED (which do not have physical backlights), you may need to shim the ACPI backlight functions to update Xrandr's "--backlight" option. This is done by monitoring the acpi_video0 levels, and updating the xrandr brightness levels accordingly.

For this to work, you must first install inotify-tools and bc. Then, create the following file:

$ cat /usr/local/bin/xbacklightmon
#!/bin/sh
#use LC_NUMERIC if you are using an European LC, else printf will not work because it expects an comma instead of a decimal point
LC_NUMERIC="en_US.UTF-8"

#Exit with 1 if $DISPLAY env isn't set. Helps when using the start up script below
[ -z "$DISPLAY" ] && exit 1;

# modify this path to the location of your backlight class
path=/sys/class/backlight/intel_backlight

luminance() {
    read -r level < "$path"/actual_brightness
    factor=$((max))
    new_brightness="$(bc -l <<< "scale = 2; $level / $factor")"
    printf '%f\n' $new_brightness
}

read -r max < "$path"/max_brightness

xrandr --output eDP-1 --brightness "$(luminance)"

inotifywait -me modify --format '' "$path"/actual_brightness | while read; do
    xrandr --output eDP-1 --brightness "$(luminance)"
done

Then make this file executable and owned by root:

$ chown root:root /usr/local/bin/xbacklightmon
$ chmod 755 /usr/local/bin/xbacklightmon

You may test this by running the file, and using the backlight keys to test if the brightness updates.


To run the script automatically on startup, write the following file:

$HOME/.config/systemd/user/xbacklightmon.service
 [Unit]
 Description=Ugly fix to be able to control the brightness of OLED screens via keyboard brightness
 After=multi-user.target

 [Service]
 Type=simple
 ExecStart=/usr/local/bin/xbacklightmon
 Restart=on-failure
 RestartSec=1

 [Install]
 WantedBy=default.target


And to enable on startup

systemctl --user enable xbacklightmon.service

Please note: If you are using the xf86-video-intel driver, you will need to replace 'eDP-1' in the script above with 'eDP1' You also have to change the path to 'path=/sys/class/backlight/intel_backlight/' if you are using xf86-video-intel

Backlight function keys

When using a LCD display device and in a desktop environment (KDE verified) the function key will be working out of the box for the DEs have their own key mapping. However, when in a window manager with modesetting driver (and also int the tty console), the backlight controlling function keys won't be working and will throw out errors like ACPI BIOS Error, could not resolve symbol.

Usually /sys/class/backlight/intel_backlight is symlinked to /sys/device/pci00/0000:00:02.0/drm/card0/card0-eDP-1/, and by changing the value of backlight file inside the directory the backlight level can be controlled, but the operation needs root previliege. Establishing a udev rule and accordingly a backlight control group will help, but these steps can be done easily with the package light.

Then a mapping of function key to the command, say, light -A 3 and light -U 3 would be in need. XF86BrightnessDown and XF86BrightnessUp won't be working. The mapping of the keys can be done with acpid. Install the package, then insert these lines to the case "$1" in block

/etc/acpi/handler.sh
video/brightnessup) light -A 3 ;;
video/brightnessdown) light -U 3 ;;

start and enable the service:

systemctl enable acpid.service, systemctl start acpid.service.

Backlight in Wayland

The xrandr command does not work with Wayland. Instead you can use the icc-brightness[broken link: package not found] tool to control the brightness.

You can find it here: https://github.com/udifuchs/icc-brightness

Backlight in Sway

For sway users you can use redshift-wlr-gamma-controlAUR to set the brightness. The following command sets the brightness to 75%.

redshift -o -b 0.75 -O 6500k -m wayland -l manual

This may also work for other window managers based on wlroots.

Wifi and Bluetooth

WIFI

With kernel version 5.2.2 and linux-firmware 20190717.bf13a71-1, WIFI would be working out of the box.

With kernel versions lower than 5.2.0, WIFI will not be working out of the box, a manual installation of drivers in is required in order that the hardware can be recognized correctly. Connect to the internet via a cable or via USB tethering, then consult this page

$ pacman -S git
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
$ cd backport-iwlwifi
$ make defconfig-iwlwifi-public
$ make -j4
$ sudo make install

Additionally, you may need to ensure you have the latest iwlwifi firmware:

$ sudo git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
$ cd linux-firmware
$ sudo cp iwlwifi-* /lib/firmware/

It is basically same with Pacman -Syu and updating the Linux-firmware package, albeit the package version would be newer in the former case. Reboot.

Kernel versions 5.2.0 and 5.2.1 have issues with getting the WiFi module working . However, according to the same post, removing the file /lib/firmware/iwlwifi-cc-a0-48.ucode will help, which keeps the troublesome firmware verision 48 from being loaded and load the version 46 firmware instead.

Touchpad and Touchscreen

Docks

EFI firmware updates

Thermal management

Tips and Tricks

Fingerprint reader