https://wiki.archlinux.org/api.php?action=feedcontributions&user=Kstensbo&feedformat=atomArchWiki - User contributions [en]2024-03-29T06:07:25ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Iwd&diff=731082Iwd2022-05-30T12:47:29Z<p>Kstensbo: /* eduroam */ Add note on EAP-PEAP-ServerDomainMask configuration variable not necessarily needed for eduroam networks.</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Wireless networking]]<br />
[[Category:Network configuration]]<br />
[[ja:Iwd]]<br />
[[pt:Iwd]]<br />
[[ru:Iwd]]<br />
[[zh-hans:Iwd]]<br />
{{Related articles start}}<br />
{{Related|Network configuration}}<br />
{{Related|Wireless network configuration}}<br />
{{Related|wpa_supplicant}}<br />
{{Related articles end}}<br />
[https://iwd.wiki.kernel.org/ iwd] (iNet wireless daemon) is a wireless daemon for Linux written by Intel. The core goal of the project is to optimize resource utilization by not depending on any external libraries and instead utilizing features provided by the Linux Kernel to the maximum extent possible.<br />
<br />
iwd can work in standalone mode or in combination with comprehensive network managers like [[ConnMan]], [[systemd-networkd]] and [[NetworkManager#Using iwd as the Wi-Fi backend|NetworkManager]].<br />
<br />
{{Note|Do not follow the instructions on this page when using iwd via a [[network manager]] unless it is explicitly stated otherwise in that network manager's article.}}<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|iwd}} package.<br />
<br />
== Usage ==<br />
<br />
The {{Pkg|iwd}} package provides the client program {{ic|iwctl}}, the daemon {{ic|iwd}} and the Wi-Fi monitoring tool {{ic|iwmon}}.<br />
<br />
[[Start/enable]] {{ic|iwd.service}} so it can be controlled using the {{ic|iwctl}} command.<br />
<br />
=== iwctl ===<br />
<br />
{{Note|As of version 1.23, only root and members of the {{ic|netdev}} or the {{ic|wheel}} [[user group]] are allowed to interact with ''iwd''. In order to use ''iwctl'', you need to [[Users and groups#Group management|add your user to one of those groups]].}}<br />
<br />
To get an interactive prompt do:<br />
<br />
$ iwctl<br />
<br />
The interactive prompt is then displayed with a prefix of {{ic|[iwd]#}}.<br />
<br />
{{Tip|<br />
* In the {{ic|iwctl}} prompt you can auto-complete commands and device names by hitting {{ic|Tab}}.<br />
* To exit the interactive prompt, send [[Wikipedia:EOF character|EOF]] by pressing {{ic|Ctrl+d}}.<br />
* You can use all commands as command line arguments without entering an interactive prompt. For example: {{ic|iwctl device wlan0 show}}.<br />
}}<br />
<br />
To list all available commands:<br />
<br />
[iwd]# help<br />
<br />
==== Connect to a network ====<br />
<br />
First, if you do not know your wireless device name, list all Wi-Fi devices:<br />
<br />
[iwd]# device list<br />
<br />
Then, to initiate a scan for networks (note that this command will not output anything):<br />
<br />
[iwd]# station ''device'' scan<br />
<br />
You can then list all available networks:<br />
<br />
[iwd]# station ''device'' get-networks<br />
<br />
Finally, to connect to a network:<br />
<br />
[iwd]# station ''device'' connect ''SSID''<br />
<br />
{{Tip|The user interface supports autocomplete, by typing {{ic|station }} and {{ic|Tab}} {{ic|Tab}}, the available devices are displayed, type the first letters of the device and {{ic|Tab}} to complete. The same way, type {{ic|connect }} and {{ic|Tab}} {{ic|Tab}} in order to have the list of available networks displayed. Then, type the first letters of the chosen network followed by {{ic|Tab}} in order to complete the command.}} <br />
<br />
If a passphrase is required, you will be prompted to enter it. Alternatively, you can supply it as a command line argument:<br />
<br />
$ iwctl --passphrase ''passphrase'' station ''device'' connect ''SSID''<br />
<br />
{{Note|<br />
* {{ic|iwd}} automatically stores network passphrases in the {{ic|/var/lib/iwd}} directory and uses them to auto-connect in the future. See [[#Network configuration]].<br />
* To connect to a network with spaces in the SSID, the network name should be double quoted when connecting.<br />
* iwd only supports PSK pass-phrases from 8 to 63 ASCII-encoded characters. The following error message will be given if the requirements are not met: {{ic|PMK generation failed. Ensure Crypto Engine is properly configured}}.<br />
}}<br />
<br />
==== Connect to a network using WPS/WSC ====<br />
<br />
If your network is configured such that you can connect to it by pressing a button ([[Wikipedia:Wi-Fi Protected Setup]]), check first that your network device is also capable of using this setup procedure.<br />
<br />
[iwd]# wsc list<br />
<br />
Then, provided that your device appeared in the above list,<br />
<br />
[iwd]# wsc ''device'' push-button<br />
<br />
and push the button on your router. The procedure works also if the button was pushed beforehand, less than 2 minutes earlier.<br />
<br />
If your network requires to validate a PIN number to connect that way, check the {{ic|help}} command output to see how to provide the right options to the {{ic|wsc}} command.<br />
<br />
==== Disconnect from a network ====<br />
<br />
To disconnect from a network:<br />
<br />
[iwd]# station ''device'' disconnect<br />
<br />
==== Show device and connection information ====<br />
<br />
To display the details of a WiFi device, like MAC address:<br />
<br />
[iwd]# device ''device'' show<br />
<br />
To display the connection state, including the connected network of a Wi-Fi device:<br />
<br />
[iwd]# station ''device'' show<br />
<br />
==== Manage known networks ====<br />
<br />
To list networks you have connected to previously:<br />
<br />
[iwd]# known-networks list<br />
<br />
To forget a known network:<br />
<br />
[iwd]# known-networks ''SSID'' forget<br />
<br />
== Network configuration ==<br />
<br />
By default, ''iwd'' stores the network configuration in the directory {{ic|/var/lib/iwd}}. The configuration file is named as {{ic|''network''.''type''}}, where ''network'' is the network SSID and ''.type'' is the network type, either ''.open'', ''.psk'' or ''.8021x''. The file is used to store the encrypted {{ic|PreSharedKey}} and optionally the cleartext {{ic|Passphrase}} and can also be created by the user without invoking {{ic|iwctl}}. The file can be used for other configuration pertaining to that network SSID as well. For more settings, see {{man|5|iwd.network}}.<br />
<br />
{{Note|In string values, including identities and passwords, certain characters may be backslash-escaped. Leading spaces, \n, \r, and literal backslashes must be escaped. See {{man|5|iwd.network}}.}}<br />
<br />
=== WPA-PSK ===<br />
<br />
A minimal example file to connect to a WPA-PSK or WPA2-PSK secured network with SSID "spaceship" and passphrase "test1234":<br />
<br />
{{hc|/var/lib/iwd/spaceship.psk|2=<br />
[Security]<br />
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295}}<br />
<br />
{{Note|The SSID of the network is used as a filename only when it contains only alphanumeric characters or one of {{ic|- _}}. If it contains any other characters, the name will instead be an {{ic|1==}}-character followed by the hex-encoded version of the SSID.<br />
}}<br />
<br />
To calculate the pre-shared key from the passphrase, one of these two methods can be used:<br />
* Enter the passphrase in cleartext in the configuration file:<br />
{{hc|/var/lib/iwd/spaceship.psk|2=<br />
[Security]<br />
Passphrase=test1234}}<br />
The pre-shared key will be appended to the file at the first connect:<br />
{{hc|/var/lib/iwd/spaceship.psk|2=<br />
[Security]<br />
Passphrase=test1234<br />
PreSharedKey=aafb192ce2da24d8c7805c956136f45dd612103f086034c402ed266355297295}}<br />
<br />
* Or the pre-shared key can be calculated from the SSID and the passphrase using ''wpa_passphrase'' (from {{Pkg|wpa_supplicant}}) or {{AUR|wpa-psk}}. See [[wpa_supplicant#Connecting with wpa_passphrase]] for more details.<br />
<br />
=== WPA Enterprise ===<br />
<br />
==== EAP-PWD ====<br />
<br />
For connecting to a EAP-PWD protected enterprise access point you need to create a file called: {{ic|''essid''.8021x}} in the {{ic|/var/lib/iwd}} directory with the following content:<br />
<br />
{{hc|/var/lib/iwd/''essid''.8021x|2=<br />
[Security]<br />
EAP-Method=PWD<br />
EAP-Identity=''your_enterprise_email''<br />
EAP-Password=''your_password''<br />
<br />
[Settings]<br />
AutoConnect=True<br />
}}<br />
<br />
If you do not want autoconnect to the AP you can set the option to False and connect manually to the access point via {{ic|iwctl}}. The same applies to the password, if you do not want to store it plaintext leave the option out of the file and just connect to the enterprise AP.<br />
<br />
==== EAP-PEAP ====<br />
<br />
Like EAP-PWD, you also need to create a {{ic|''essid''.8021x}} file in the directory. Before you proceed to write the configuration file, this is also a good time to find out which CA certificate your organization uses. This is an example configuration file that uses MSCHAPv2 password authentication:<br />
<br />
{{hc|/var/lib/iwd/''essid''.8021x|2=<br />
[Security]<br />
EAP-Method=PEAP<br />
EAP-Identity=anonymous@realm.edu<br />
EAP-PEAP-CACert=/path/to/root.crt<br />
EAP-PEAP-ServerDomainMask=radius.realm.edu<br />
EAP-PEAP-Phase2-Method=MSCHAPV2<br />
EAP-PEAP-Phase2-Identity=johndoe@realm.edu<br />
EAP-PEAP-Phase2-Password=hunter2<br />
<br />
[Settings]<br />
AutoConnect=true<br />
}}<br />
<br />
MsCHAPv2 passwords can also be stored as a encrypted hash. The correct md4 hash can be calculated with:<br />
<br />
$ iconv -t utf16le | openssl md4<br />
<br />
Insert an EOF after your password by pressing {{ic|Ctrl+d}}, do not hit {{ic|Enter}}. The resulting hash needs to be stored inside the {{ic|EAP-PEAP-Phase2-Password-Hash}} key.<br />
<br />
{{Tip|If you are planning on using ''eduroam'', see also [[#eduroam]].}}<br />
<br />
==== TTLS-PAP ====<br />
<br />
Like EAP-PWD, you also need to create a {{ic|''essid''.8021x}} file in the directory. Before you proceed to write the configuration file, this is also a good time to find out which CA certificate your organization uses. This is an example configuration file that uses PAP password authentication:<br />
<br />
{{hc|/var/lib/iwd/''essid''.8021x|2=<br />
[Security]<br />
EAP-Method=TTLS<br />
EAP-Identity=anonymous@uni-test.de<br />
EAP-TTLS-CACert=cert.pem<br />
EAP-TTLS-ServerDomainMask=*.uni-test.de<br />
EAP-TTLS-Phase2-Method=Tunneled-PAP<br />
EAP-TTLS-Phase2-Identity=user<br />
EAP-TTLS-Phase2-Password=password<br />
<br />
[Settings]<br />
AutoConnect=true<br />
}}<br />
<br />
==== eduroam ====<br />
<br />
eduroam offers a [https://cat.eduroam.org/ configuration assistant tool (CAT)], which unfortunately does not support iwd. However, the installer, which you can download by clicking on the download button then selecting your university, is just a Python script. It is easy to extract the necessary configuration options, including the certificate and server domain mask.<br />
<br />
The following table contains a mapping of iwd configuration options to eduroam CAT install script variables.<br />
<br />
{| class="wikitable<br />
! Iwd Configuration Option !! CAT Script Variable<br />
|-<br />
| file name || one of {{ic|Config.ssids}}<br />
|-<br />
| {{ic|EAP-Method}} || {{ic|Config.eap_outer}}<br />
|-<br />
| {{ic|EAP-Identity}} || {{ic|Config.anonymous_identity}}<br />
|-<br />
| {{ic|EAP-PEAP-CACert}} || {{ic|Config.CA}}<br />
|-<br />
| {{ic|EAP-PEAP-ServerDomainMask}} || one of {{ic|Config.servers}}<br />
|-<br />
| {{ic|EAP-PEAP-Phase2-Method}} || {{ic|Config.eap_inner}}<br />
|-<br />
| {{ic|EAP-PEAP-Phase2-Identity}} || username@{{ic|Config.user_realm}}<br />
|}<br />
<br />
{{Note|<br />
* {{ic|EAP-Identity}} may not be required by your eduroam provider, in which case you might have to use {{ic|anonymous@''Config.user_realm''}} in this field.<br />
* If your {{ic|EAP-PEAP-ServerDomainMask}} starts with {{ic|DNS:}}, use only the part after {{ic|DNS:}}.<br />
* {{ic|EAP-PEAP-ServerDomainMask}} may not be required, even if the server is present in the CAT install script. If you are experiencing authentication problems when attempting to connect to eduroam, try removing the {{ic|EAP-PEAP-ServerDomainMask}} variable from the configuration file entirely.<br />
}}<br />
<br />
==== Other cases ====<br />
<br />
More example tests can be [https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/autotests found in the test cases] of the upstream repository.<br />
<br />
== Optional configuration ==<br />
<br />
File {{ic|/etc/iwd/main.conf}} can be used for main configuration. See {{man|5|iwd.config}}.<br />
<br />
=== Disable auto-connect for a particular network ===<br />
<br />
Create / edit file {{ic|/var/lib/iwd/''network''.''type''}}. Add the following section to it:<br />
<br />
{{hc|/var/lib/iwd/spaceship.psk (for example)|2=<br />
[Settings]<br />
AutoConnect=false<br />
}}<br />
<br />
=== Disable periodic scan for available networks ===<br />
<br />
By default when {{ic|iwd}} is in disconnected state, it periodically scans for available networks. To disable periodic scan (so as to always scan manually), create / edit file {{ic|/etc/iwd/main.conf}} and add the following section to it:<br />
<br />
{{hc|/etc/iwd/main.conf|2=<br />
[Scan]<br />
DisablePeriodicScan=true<br />
}}<br />
<br />
=== Enable built-in network configuration ===<br />
<br />
Since version 0.19, iwd can assign IP address(es) and set up routes using a built-in DHCP client or with static configuration. It is a good alternative to [[Network configuration#DHCP|standalone DHCP clients]].<br />
<br />
To activate iwd's network configuration feature, create/edit {{ic|/etc/iwd/main.conf}} and add the following section to it:<br />
<br />
{{hc|/etc/iwd/main.conf|2=<br />
[General]<br />
EnableNetworkConfiguration=true<br />
}}<br />
<br />
There is also ability to set route metric with {{ic|RoutePriorityOffset}}:<br />
<br />
{{hc|/etc/iwd/main.conf|2=<br />
[Network]<br />
RoutePriorityOffset=300<br />
}}<br />
<br />
==== IPv6 support ====<br />
<br />
Since version 1.10, iwd supports IPv6, but it is disabled by default. To enable it, add the following to the configuration file:<br />
<br />
{{hc|/etc/iwd/main.conf|2=<br />
[Network]<br />
EnableIPv6=true<br />
}}<br />
<br />
This setting is required whether you want to use DHCPv6 or static IPv6 configuration. It can also be set on a per-network basis.<br />
<br />
==== Setting static IP address in network configuration ====<br />
<br />
Add the following section to {{ic|/var/lib/iwd/''network''.''type''}} file. For example:<br />
<br />
{{hc|/var/lib/iwd/spaceship.psk|2=<br />
[IPv4]<br />
Address=192.168.1.10<br />
Netmask=255.255.255.0<br />
Gateway=192.168.1.1<br />
Broadcast=192.168.1.255<br />
DNS=192.168.1.1<br />
}}<br />
<br />
==== Select DNS manager ====<br />
<br />
At the moment, iwd supports two DNS managers—[[systemd-resolved]] and [[resolvconf]].<br />
<br />
Add the following section to {{ic|/etc/iwd/main.conf}} for {{ic|systemd-resolved}}:<br />
<br />
{{hc|/etc/iwd/main.conf|2=<br />
[Network]<br />
NameResolvingService=systemd<br />
}}<br />
<br />
For {{ic|resolvconf}}:<br />
<br />
{{hc|/etc/iwd/main.conf|2=<br />
[Network]<br />
NameResolvingService=resolvconf<br />
}}<br />
<br />
{{Note|If not specified, [[systemd-resolved]] is used as default.}}<br />
<br />
=== Allow any user to read status information ===<br />
<br />
If you want to allow any user to read the status information, but not modify the settings, you can create the following [[D-Bus]] configuration file:<br />
<br />
{{hc|/etc/dbus-1/system.d/iwd-allow-read.conf|<nowiki><br />
<!-- Allow any user to read iwd status information. Overrides some part<br />
of /usr/share/dbus-1/system.d/iwd-dbus.conf. --><br />
<br />
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"<br />
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd"><br />
<busconfig><br />
<br />
<policy context="default"><br />
<deny send_destination="net.connman.iwd"/><br />
<allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="GetAll" /><br />
<allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.Properties" send_member="Get" /><br />
<allow send_destination="net.connman.iwd" send_interface="org.freedesktop.DBus.ObjectManager" send_member="GetManagedObjects" /><br />
<allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="RegisterSignalLevelAgent" /><br />
<allow send_destination="net.connman.iwd" send_interface="net.connman.iwd.Device" send_member="UnregisterSignalLevelAgent" /><br />
</policy><br />
<br />
</busconfig><br />
</nowiki>}}<br />
<br />
== Troubleshooting ==<br />
<br />
=== Verbose TLS debugging ===<br />
<br />
This can be useful, if you have trouble setting up MSCHAPv2 or TTLS. You can set the following [[environment variable]] via a [[drop-in snippet]]:<br />
<br />
{{hc|/etc/systemd/system/iwd.service.d/tls-debug.conf|2=<br />
[Service]<br />
Environment=IWD_TLS_DEBUG=TRUE<br />
}}<br />
<br />
Check the iwd logs afterwards by running {{ic|journalctl -u iwd.service}} as root.<br />
<br />
=== Restarting iwd.service after boot ===<br />
<br />
On some machines, it is reported that {{ic|iwd.service}} has to be restarted to work after boot. See {{Bug|63912}} and [https://bbs.archlinux.org/viewtopic.php?id=251432 thread 251432]. This probably occurs because the Linux kernel and services start too early and ''iwd'' starts before wireless network card powers on. As a workaround, [[extend the unit]] to add a delay:<br />
<br />
[Service]<br />
ExecStartPre=/usr/bin/sleep 2<br />
<br />
Then [[reload]] the ''systemd'' manager configuration.<br />
<br />
=== Connect issues after reboot ===<br />
<br />
A low entropy pool can cause connection problems in particular noticeable after reboot. See [[Random number generation]] for suggestions to increase the entropy pool.<br />
<br />
=== Wireless device is not renamed by udev ===<br />
<br />
Since version 1.0, iwd disables predictable renaming of wireless device. It installs the following systemd network link configuration file which prevents udev from renaming the interface to {{ic|wlp#s#}}:<br />
<br />
{{hc|1=/usr/lib/systemd/network/80-iwd.link|2=<br />
[Match]<br />
Type=wlan<br />
<br />
[Link]<br />
NamePolicy=keep kernel<br />
}}<br />
<br />
As a result the wireless link name {{ic|wlan#}} is kept after boot. This resolved a race condition between ''iwd'' and [[udev]] on interface renaming as explained in [https://iwd.wiki.kernel.org/interface_lifecycle#udev_interface_renaming iwd udev interface renaming].<br />
<br />
If this results in issues try masking it with:<br />
<br />
# ln -s /dev/null /etc/systemd/network/80-iwd.link<br />
<br />
=== No DHCP in AP mode ===<br />
<br />
Clients may not receive an IP address via DHCP when connecting to ''iwd'' in AP mode. It is therefore necessary to enable network configuration by ''iwd'' on managed interfaces:<br />
<br />
{{hc|1=/etc/iwd/main.conf|2=<br />
[General]<br />
EnableNetworkConfiguration=True<br />
}}<br />
<br />
The mentioned file has to be created if it does not already exist.<br />
<br />
=== Wifi keeps disconnecting due to iwd crash ===<br />
<br />
Some users experience disconnections with WiFi, re-connecting continuously but stabilizing eventually and managing to connect. <br />
<br />
Users report crashes ([https://bbs.archlinux.org/viewtopic.php?id=273965]) of {{ic|iwd.service}} in their [[journal]]. <br />
<br />
The core issue is having multiple conflicting services for managing their network connections. Check that you do not have [[enable]]d them at the same time to fix this issue.<br />
<br />
=== Error loading client private key ===<br />
<br />
To load key files ''iwd'' requires the {{ic|pkcs8_key_parser}} [[kernel module]]. While on boot it gets loaded by {{man|8|systemd-modules-load.service}} using {{ic|/usr/lib/modules-load.d/pkcs8.conf}}, that will not be the case if {{Pkg|iwd}} has just been installed.<br />
<br />
If messages such as {{ic|Error loading client private key ''/path/to/key''}} show up in the [[journal]] when trying to connect to WPA Enterprise networks, manually load the module:<br />
<br />
# modprobe pkcs8_key_parser<br />
<br />
== See also ==<br />
<br />
* [https://iwd.wiki.kernel.org/gettingstarted Getting Started with iwd]<br />
* [https://iwd.wiki.kernel.org/networkconfigurationsettings Network Configuration Settings]<br />
* [https://git.kernel.org/pub/scm/network/wireless/iwd.git/tree/autotests More Examples for WPA Enterprise]<br />
* [https://bbs.archlinux.org/viewtopic.php?id=237074 The IWD thread on the Arch Linux Forums]<br />
* [https://www.youtube.com/watch?v=F2Q86cphKDo 2017 Update on new WiFi daemon for Linux by Marcel Holtmann - YouTube]<br />
* [https://www.youtube.com/watch?v=QIqT2obSPDk The New Wi-Fi Experience for Linux - Marcel Holtmann, Intel - YouTube]<br />
* [https://iwd.wiki.kernel.org/ap_mode How to set up a simple access point with iwd]</div>Kstensbohttps://wiki.archlinux.org/index.php?title=Dell_XPS_13_(9360)&diff=473398Dell XPS 13 (9360)2017-04-10T08:11:27Z<p>Kstensbo: /* USB-C Compatibility Chart */ Updated Dell DA200 compatibility to 'working' as it works for me out-of-the-box.</p>
<hr />
<div>[[Category:Dell]]<br />
[[ja:Dell XPS 13 (9360)]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' || '''Modules'''<br />
|-<br />
| Video || {{G|Working}} || i915<br />
|-<br />
| Wireless || {{G|Working}} || ath10k<br />
|-<br />
| Bluetooth || {{G|Working}}|| btusb<br />
|-<br />
| Audio || {{G|Working}} || snd_hda_intel<br />
|-<br />
| Touchpad || {{G|Working}} || hid_multitouch (mousedev)<br />
|-<br />
| Webcam || {{G|Working}} || uvcvideo<br />
|-<br />
| USB-C / Thunderbolt 3 || {{G|Working}} || ?<br />
|-<br />
| Wireless switch || {{G|Working}} || intel_hid<br />
|-<br />
| Function/Multimedia Keys || {{G|Working}} || ?<br />
|}<br />
<br />
The Dell XPS 13 Late 2016 (9360) is the fourth-generation model of the XPS 13 line. The laptop is available since October in both a standard edition with Windows installed as well as a Developer Edition with Ubuntu installed. There is no hardware difference between them. Just like the older versions ([[Dell XPS 13 (9333)]], [[Dell XPS 13 (9343)]] and [[Dell XPS 13 (9350)]]) it is available in different hardware configurations. This fourth gen model includes Intel's Kaby Lake CPU and configurable with up to 16GB LPDDR 1866 MHz RAM and a 1TB PCI SSD. It will now also be available in Rose Gold. Prior to previous information it won't be available with LPDDR 2133 MHz RAM.<br />
<br />
The installation process for Arch on the XPS 13 does not differ from any other PC. For installation help, please see the [[Installation guide]] and [[UEFI]]. This page covers the current status of hardware support on Arch, as well as post-installation recommendations.<br />
<br />
As of kernel 4.5, the Intel Kaby Lake architecture is supported.<br />
<br />
<br />
== Content adaptive brightness control ==<br />
In the XPS 13 the display panels (both FHD and QHD+) come with adaptive brightness embedded in the panel firmware, this "content adaptive brightness control" (usually referred to as CABC or DBC) will adjust the screen brightness depending on the content displayed on the screen and will generally be found undesirable, especially for Linux users who are likely to be switching between dark and light screen content. Dell has issued a fix for this however it is only available to run in Windows and for the QHD+ model of the laptop so this precaution should be taken before installing Linux, the FHD model of the XPS 13 (9360) cannot be fixed. This is not a problem with the panel but rather a problem with the way the panels are configured for the XPS 13, as the same panel exists in the Dell's Latitude 13 7000 series (e7370) FHD model but with CABC disabled. The fix is available directly from [http://www.dell.com/support/home/de/de/debsdt1/Drivers/DriversDetails?driverId=20JWV&fileId=3574543510&osCode=WT64A&productCode=xps-13-9360-laptop&languageCode=ge&categoryId=AP Dell].<br />
<br />
== NVM Express SSD ==<br />
=== NVME Power Saving Patch ===<br />
<br />
Andy Lutomirski has created a patchset which fixes powersaving for NVME devices in linux. Currently, this patch is not merged into mainline yet. Until it lands in mainline kernel use the AUR or repository linked below. <br />
{{App|Linux-nvme|Mainline linux kernel patched with Andy's patch for NVME powersaving APST.|https://github.com/damige/linux-nvme|{{AUR|linux-nvme}}}} (check out [http://linuxnvme.damige.net/] for compiled packages)<br />
<br />
This patch is now in mainline (4.11rc1), so it is a matter of time before the standard kernel can be used instead.<br />
<br />
== Video ==<br />
The video should work with the {{ic|i915}} driver of the current {{Pkg|linux}} kernel. Consult [[Intel graphics]] for a detailed installation and configuration guide as well as for [[Intel graphics#Troubleshooting|Troubleshooting]].<br />
<br />
=== Module-based Powersaving Options ===<br />
For the HD 620 graphics card the following modules are working: (see [[Intel graphics#Module-based Powersaving Options]])<br />
modeset=1 enable_rc6=1 enable_fbc=1 <br />
The first argument is to enable modesetting if it's not set by default. The second argument is needed to active power-saving C-States. Higher values than 1 are not available for kaby lake CPUs. The third argument is for frame buffer compression power savings. These values should work well!<br />
<br />
enable_guc_loading=1 enable_guc_submission=1<br />
These arguments are used to enable GuC updates. GuC is a small proprietary binary blob released by intel to update the GuC binary in faster intervals than the kernel release does. It is used for graphics workload scheduling on the various graphics parallel engines. More details at (https://01.org/linuxgraphics/downloads/firmware). The GuC binary for kaby lake is included since firmware release linux-firmware 20170217 in the official repository.<br />
<br />
enable_huc=1<br />
HuC is also an binary blob from intel. It's designed to offload some of the media functions from the CPU to GPU. More details at (https://01.org/linuxgraphics/downloads/firmware). The vanilla kernel doesn't load it at the moment! Patches to load HuC have to find their way into the i915 kernel graphic stack before this option will work. Maybe working for kernel 4.10 or 4.11.<br />
<br />
enable_psr=1 disable_power_well=0 OR enable_psr=2 <br />
Enable psr level 2 is working, while level 1 has a lot of problems. Setting it on level 2 doesn't give much energy saving at the moment. It's said that 'disable_power_well=0 enable_psr=1' is working in this combination.<br />
<br />
NOT WORKING: semaphores=1 <br />
The semaphore option is NOT working for kaby lake CPUs and won't enable even if you set the option to 1.<br />
<br />
=== Blank screen issue after booting ===<br />
If using "late start" [[KMS]] (the default) and the screen goes blank when loading modules, it may help to add {{ic|i915}} and {{ic|intel_agp}} to the initramfs or using a special [[kernel parameter]]. Consult [[Intel graphics#Blank screen during boot, when "Loading modules"]] for more information about the kernel parameter way and have a look at [[Kernel mode setting#Early KMS start]] for a guide on how to setup the modules for the initramfs.<br />
<br />
== Wireless ==<br />
<br />
The Killer 1535 Wirless Adapter is functional and the ath10k firmware is included in recent linux kernel versions. The connection speed reported by iw is limited to 1-6Mbits/s. However this is just the output being wrong. The real connection speed is not limited to this value.<br />
<br />
Some users are experiencing issues, where the connection is dropped under heavy load but reconnects within a brief moment. This might not be noticed during browsing at all but becomes apparent in online games. There is no know solution so far.<br />
<br />
== Bluetooth ==<br />
<br />
After following the instructions given at [[Bluetooth]] tethering of internet connections via phone works immediately.<br />
<br />
<br />
== Thunderbolt 3 / USB 3.1 ==<br />
<br />
The USB-C port supports Thunderbolt 3, Displayport-over-USB-C and USB power delivery as well as USB 3.1.<br />
<br />
=== Ethernet repeatedly disconnects/reconnects with Dell USB-C adapter (DA200) ===<br />
<br />
Use of a power management package (such as [[TLP]]) may cause the ethernet adapter to repeatedly disconnect and reconnect. If this happens, disable/blacklist USB autosuspend for the ethernet adapter. (On my laptop, this is the device <tt>Bus 004 Device 007: ID 0bda:8153 Realtek Semiconductor Corp</tt> in the output of <tt>lsusb</tt>.)<br />
<br />
Also disabling or reducing power of wifi may help: http://en.community.dell.com/support-forums/network-internet-wireless/f/3324/t/19995423<br />
<br />
=== USB-C Compatibility Chart ===<br />
{| class="wikitable"<br />
| '''Device''' || '''Ports''' || '''Status'''<br />
|-<br />
| [http://www.apple.com/uk/shop/product/MJ1K2ZM/A/usb-c-digital-av-multiport-adapter Apple USB-C Digital AV Multiport Adapter] || USB-C, USB-A, HDMI || {{R|Not Working}}<br />
|-<br />
| [http://www.apple.com/uk/shop/product/MJ262B/A/apple-29w-usb-c-power-adapter?fnode=8b Apple 29W USB-C Power Adapter] || USB-C Power || {{R|Not Working}}<br />
|-<br />
| [https://www.amazon.co.uk/gp/product/B01H3K387Q/ref=oh_aui_search_detailpage?ie=UTF8&psc=1 Aukey USB C Hub HDMI 4 Port] || USB-C, 4xUSB-A, HDMI || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B012DT6KW2 Dell DA200] || USB-A, Ethernet, HDMI, VGA || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B01FN1YK92 Dell WD15 130W] || 3xUSB-A 3.0, 2xUSB-A 2.0, Ethernet, HDMI, Mini DisplayPort, VGA, Line Out, Line In || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B01ANR4CYE StarTech.com tb32dp2 - Thunderbolt 3 Adapter] || 2 x DP (4 K, 60 Hz) || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/dp/B01C316EIK Cable Matters USB-C Multiport Adapter] || 4K HDMI or VGA, USB 3.0, Gigabit Ethernet || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/Juiced-BizHUB-Multiport-Ethernet-Delivery/dp/B01J391C3W Juiced Systems BizHUB USB-C Multiport Gigabit HDMI Hub] || 4K@30Hz HDMI, 3x USB 3.0, Gigabit Ethernet, USB-C Power, SD, Micro-SD || {{G|Working}}<br />
|-<br />
| [https://www.amazon.com/Anker-Adapter-Supports-Macbook-Chromebook/dp/B01MYUCWOK/ Anker USB-C to HDMI Adapter] || 4K@60Hz HDMI || {{G|Working}}<br />
|-<br />
| [http://www.pct-max.com.tw/cht/products.php?index=289 PCT UHC304] || HDMI (4K@30Hz, 2K@60Hz), Gigabit Ethernet, USB-A, USB-C || {{G|Working}}<br />
|}<br />
<br />
=== Thunderbolt Firmware updates ===<br />
The thunderbolt controller in the laptop has an embedded firmware. The laptop ships with firmware version NVM 18, and the most recent available version from Dell's website is NVM 21. If encountering compatibility problems with Thunderbolt accessories, the firmware may need to be updated. Dell maintains a [https://github.com/dell/thunderbolt-nvm-linux Github repository] explaining the process to update the firmware, but unfortunately, does not provide the updated payload files. These can be extracted from the Windows firmware update files. Mainline support for the firmware update process is pending the inclusion of [https://github.com/01org/thunderbolt-software-kernel-tree/tree/networking these patches] into the Linux kernel. The thunderbolt-icm kernel module is available in the AUR {{AUR|thunderbolt-icm-dkms-git}}.<br />
<br />
== SATA controller ==<br />
When the SATA-controller is set to {{ic|RAID On}} in Bios, the hard disk (at least the SSD) is not recognized. Set to {{ic|Off}} or {{ic|AHCI}} ({{ic|AHCI}} is recommended) before attempting to install Arch.<br />
<br />
== Touchpad ==<br />
The touchpad has no explicit buttons. The buttons are built into the pads surface. There is a small line printed on the pad separating left from right click button. The pad has a '''middle button''' built in! (works with libinput without any configuration): To issue a middle click, simply press on the middle area right between the virtual left and click buttons - so on the small printed separator line.<br />
<br />
=== Remove psmouse errors from dmesg ===<br />
<br />
If {{ic|<nowiki>dmesg | grep -i psmouse</nowiki>}} returns an error, but your touchpad still works, then it might be a good idea to disable {{ic|psmouse}}. First create a config file:<br />
<br />
# nano /etc/modprobe.d/modprobe.conf<br />
<br />
blacklist psmouse<br />
<br />
Then add this file to {{ic|/etc/mkinitcpio.conf}}:<br />
<br />
...<br />
FILES="/etc/modprobe.d/modprobe.conf"<br />
...<br />
<br />
Rebuild your initial ramdisk image (see [[Mkinitcpio#Image creation and activation]]).<br />
<br />
== Touchscreen ==<br />
The touchscreen works without additional configuration. The bug resulting in a disabled touchscreen after resume was fixed with kernel 4.8.5.<br />
<br />
=== Gestures ===<br />
Refer to [[libinput#Gestures]] for information about the current development state and available methods.<br />
<br />
=== Scrolling in Firefox ===<br />
See [[Firefox/Tweaks#Pixel-perfect trackpad scrolling]]. This enables both touchscreen scrolling and high-res trackpad scrolling.<br />
<br />
== Keyboard Backlight ==<br />
By default, the keyboard backlight turns off after 10 seconds of inactivity. Some users might find this too short and annoying.<br />
The delay can be increased (or decreased) by editing this file:<br />
/sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/stop_timeout<br />
<br />
You can also change the brightness (0-2) by editing the following file. This is identical to pressing F10 on your keyboard:<br />
/sys/devices/platform/dell-laptop/leds/dell\:\:kbd_backlight/brightness<br />
<br />
== Hidden Keyboard Keys ==<br />
There are additional Fn+<Key> (sequences) that are not marked at all on the keyboard but underlying hardware generates them anyway. Here they are (if you find more add them to the table below):<br />
{| class="wikitable"<br />
|+ Hidden Fn Keys<br />
! Fn+<Key> !! Resulting key (sequence)<br />
|-<br />
| Fn+Ins || XF86Sleep<br />
|-<br />
| Fn+Super_L || Super_R<br />
|-<br />
| Fn+B || Pause<br />
|-<br />
| Fn+R || Print<br />
|-<br />
| Fn+S || Scroll_Lock<br />
|-<br />
| Fn+A / D / E / F / G / T / Q / W || XF86Launch3<br />
|}<br />
<br />
== Firmware Updates ==<br />
Dell provides firmware updates via {{aur|fwupd}}. See [[Flashing BIOS from Linux#fwupd]]. Please note if you have used a bind mount partition for /boot, you will not be able to use the fwupd utility; Instead format a USB as FAT32 and put the bios update .exe on. Reboot into the one-time-boot menu and update the BIOS flash through there.<br />
<br />
Alternatively, the BIOS update can be downloaded from the Dell website, and placed in a location accessible to the firmware. This could be the '/boot' folder, or a FAT32 formatted USB stick. Then restart your laptop and hit F12 while starting. In the boot menu choose firmware update and select the new file!<br />
<br />
== Troubleshooting ==<br />
<br />
=== EFISTUB does not boot ===<br />
The BIOS does not pass any boot parameters to the kernel. Use a UEFI [[boot loader]] instead.<br />
<br />
=== Not waking from suspend ===<br />
Update the BIOS to 1.0.7 to patch this issue.<br />
<br />
=== Power Drain after waking from standby ===<br />
<br />
Some users recognised ~2W more power consumption after waking up from standby. Go to the UEFI Firmware Settings (tap the F2 key when the Dell logo appears) and uncheck the 'Enable Thunderbolt Boot Support'. You may use {{Pkg|powertop}} or {{AUR|powerstat-git}} to reproduce and check this behaviour yourself. <br />
<br />
=== Popping Sound on headphones/external speakers ===<br />
<br />
Power saving being enabled on the audio chip will cause the hissing and popping to appear. <br />
<br />
Have a look at [[Advanced Linux Sound Architecture/Troubleshooting#Pops when starting and stopping playback]] and [[Advanced Linux Sound Architecture/Troubleshooting#Popping sound after resuming from suspension]].<br />
<br />
If you are using {{Pkg|tlp}}, it will activate power saving by default when on battery. Edit {{ic|/etc/default/tlp}} and disable it.<br />
<br />
=== Coil Whine ===<br />
<br />
Unfortunately Dell still did not fix this issue and the sound for my model was very loud. The issue seems to be connected to the graphic card. For some users, it is possible to reduce it a lot by activating frame buffer compression "enable_fbc=1" [[Intel graphics#Module-based Powersaving Options]]. The coil whine will then start again under heavy graphic load. For the touchscreen model, this may be very often, due to the high resolution screen. In a similar vein, the display can be run at a lower resolution, again reducing the load on the graphics card.<br />
<br />
=== Freezing after waking from suspend ===<br />
<br />
Installing {{aur|xf86-video-intel-git}} is [https://bbs.archlinux.org/viewtopic.php?pid=1698282#p1698282 reported] to fix this.<br />
<br />
=== Continuous hissing sound with headphones ===<br />
<br />
Open alsamixer and set "Headphone Mic Boost" gain to 10 dB (See discussion on [https://www.reddit.com/r/Dell/comments/4j1zz4/headphones_have_static_noise_with_ubuntu_1604_on/ reddit]). Note that this does reduce the volume slightly.<br />
<br />
You may also run the equivalent command:<br />
<br />
$ amixer -c PCH cset 'name=Headphone Mic Boost Volume' 1<br />
<br />
== See Also == <br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=217865 Arch Forum thread for Dell XPS 13 (9360)]<br />
* [http://topics-cdn.dell.com/pdf/xps-13-9360-laptop_Service%20Manual_en-us.pdf Service Manual for Dell XPS 13 (9360)]</div>Kstensbo