Dell XPS 15 (9560)

来自 ArchWiki

本文或章节不符合笔记本电脑页面指南

原因:硬件表格需要调整,缺少功能键表格(在Talk:Dell XPS 15 (9560)中讨论)
注意: 本页面指的是 XPS 15 的 9560 版本。其中大部分也适用于 Precision 5520 和 XPS 15 9570。
硬件 PCI/USB ID 工作状态?
GPU (Intel)
GPU (NVIDIA)
无线
蓝牙
音频
触摸板
网络摄像头
读卡器
指纹识别器

本页面包含在 Dell XPS 15 9560(2016 年末)上运行 Arch Linux 的建议。通过一些配置,几乎所有硬件都得到良好支持。例外情况是指纹识别器、部分用户在从挂起恢复时遇到的偶尔锁死问题,以及 NVIDIA 闭源驱动程序中不支持 PRIME 渲染卸载到独立显卡。

安装

在安装之前,需要修改一些 UEFI 设置。可以通过在启动时重复按 F2 键来访问它们。

  • 将 SATA 模式从默认的 RAID 更改为 AHCI。这将允许 Linux 检测到 NVMe SSD。如果与现有 Windows 安装双启动,则 Windows 在更改后将无法启动,但这可以在不重新安装的情况下修复
  • POST 行为中将快速启动更改为彻底。这可以防止间歇性启动失败。
  • 禁用安全启动

Arch Linux 的安装可以正常进行。有关更多信息,请参阅安装指南

电源管理

挂起和休眠

挂起和休眠功能开箱即用,但一些用户报告说从挂起恢复时偶尔会发生系统卡死,这种情况在 4.10 以后的内核上更为常见。

挂起功能键未印在键盘上,但实际上映射到 Fn+Insert

风扇和温度监控与控制

许多温度计可以使用 lm_sensors 读取。

可以使用 i8kutils-gitAUR 中的 i8kctl 监控风扇转速。此笔记本电脑不在支持列表中,因此有必要加载带有 force=1 模块选项的 i8k 内核模块。请参阅内核模块#设置模块选项。也可以手动控制风扇转速(风险自负),但是手动控制仅提供部分可能的转速(0rpm、2500rpm、4800rpm),而不是固件自动控制中的(0rpm、2500rpm、3200rpm、3700rpm、4800rpm 和 5100rpm)。请参阅风扇转速控制#Dell 笔记本电脑

内置风扇模式也可以通过编辑 bios 中的设置直接控制。libsmbios 软件包提供了许多用于读取和修改计算机上某些设置的工具。smbios-thermal-ctl 命令可以与 --set-thermal-mode 标志一起使用,以在性能底部散热安静平衡模式之间更改风扇。例如

# smbios-thermal-ctl --set-thermal-mode quiet

这会将风扇模式更改为安静模式,这将使风扇曲线不那么激进。

可以使用 nvidia-smi 实用程序监控独立 NVIDIA GPU 上的温度计,该实用程序是 nvidia-utils 的一部分。

传感器内核模块和配置

值得研究的一个途径是使用原生内核模块 dell-smm-hwmon

$ modinfo dell-smm-hwmon | grep '^description'
description:    Dell laptop SMM BIOS hwmon driver

如果模块未加载,请尝试在运行 modprobe 时传递选项 ignore_dmi=1

# modprobe dell-smm-hwmon ignore_dmi=1

成功加载后,您应该在内核日志和/或 dmesg 中看到以下内容

185:[    9.806060] dell_smm_hwmon: not running on a supported Dell system.
186:[    9.806061] dell_smm_hwmon: vendor=Dell Inc., model=XPS 15 9550, version=x.y.z

现在 sensors 命令应该能够显示一些有用的数据

$ sensors -f
dell_smm-virtual-0
Adapter: Virtual device
Processor Fan: 2490 RPM
Video Fan:     2501 RPM
CPU:           +105.8°F
Ambient:       +109.4°F
Ambient:       +104.0°F
Other:         +104.0°F

您可以通过将以下内容添加到 /etc/modprobe.d/dell.conf 来使这些设置永久生效

options dell-smm-hwmon ignore_dmi=1

并通过使 HWMON_MODULES 变量在 /etc/conf.d/lm_sensors 中显示如下

HWMON_MODULES="coretemp dell-smm-hwmon"

节能

禁用独立显卡

bbswitch 方法

独立 NVIDIA GTX 1050 GPU 默认开启,并且无法在 UEFI 设置中禁用。即使在空闲时,它也会消耗大量电量(约 7W)。要在不使用时禁用它,需要安装 bbswitchbumblebee,将 acpi_rev_override=1 添加到内核参数启用 bumblebeed.service,然后重启(您可能需要重启两次才能让固件注意到 acpi_rev_override)。

$ cat /proc/acpi/bbswitch
OFF

# dmesg | grep bbswitch
[    4.253642] bbswitch: loading out-of-tree module taints kernel.
[    4.253833] bbswitch: version 0.8
[    4.254093] bbswitch: Found integrated VGA device 0000:00:02.0: \_SB_.PCI0.GFX0
[    4.254163] bbswitch: Found discrete VGA device 0000:01:00.0: \_SB_.PCI0.PEG0.PEGP
[    4.254225] bbswitch: detected an Optimus _DSM function
[    4.254282] bbswitch: Succesfully loaded. Discrete card 0000:01:00.0 is on
[    4.256651] bbswitch: disabling discrete graphics

acpi_call 方法

以下是一组替代步骤,不需要 bbswitchbumblebee

标准节能配置

最好安装一个工具来调整常用设置以节省电量。请参阅电源管理#用户空间工具

禁用/自动挂起触摸屏

可以在 UEFI 设置中禁用触摸屏,从而显着节省电量。如果需要触摸屏,可以通过 TLP 将其置于自动挂起状态,方法是在 tlp 配置文件中将 04f3:24a1 添加到 USB_WHITELIST。必须将 USB_AUTOSUSPEND 设置为 1 才能使其生效。这将使触摸屏保持启用状态以供使用,并将消耗更少的电池电量。

启用 NVMe APST

从 linux 4.11 开始,NVMe APST 受到支持并默认启用,允许 NVMe SSD 在空闲时切换到较低的功耗状态,从而实现显着的节能效果。请参阅固态硬盘/NVMe#允许驱动器进入低功耗状态 (APST)。根据具体的 SSD,可能还需要调整 nvme_core 模块的 default_ps_max_latency_us 参数,以使 ASPT 工作。例如,东芝 THNSN5512GPUK 就需要这样做。

为 i915 内核模块启用节能特性

将以下选项传递给 i915 内核模块可以显着节省电量:enable_fbc=1 enable_psr=1 disable_power_well=0。一些使用高清雾面屏的用户报告说,这些参数会导致屏幕闪烁。帧缓冲压缩 (enable_fbc=1) 从内核 4.11 开始默认启用。

Wi-Fi 和蓝牙

对于配备 Intel 8265 Wi-Fi 网卡的 Precision 5520,iwlwifi 内核模块的 power_save 选项可以从 1 设置为 5,从而有可能节省电量。请参阅内核模块#设置模块选项。蓝牙和 Wi-Fi 可以使用 rfkill 单独禁用。请参阅无线网络配置#Rfkill 注意事项

降低 intel CPU 和 GPU 电压

可以降低 CPU 和集成 intel GPU 的供电电压,以降低其功耗。通常可以在不引起任何不稳定的情况下进行一些降低,具体取决于特定系统。通常,不稳定的第一个迹象出现在挂起、恢复以及负载和空闲之间的转换期间,而不是在长时间高负载期间。请参阅 intel-undervoltlinux-intel-undervolt-toolAUR,它们可以自动化每次启动/恢复时降压的过程。

图形

集成的 Intel HD 630 GPU 开箱即用。您可以选择安装 xf86-video-intel,但这不再推荐,因为内置的内核模式设置驱动程序更可靠。如果您不想使用独立 NVIDIA GPU,则无需额外设置。否则,有几个选项。所有显示输出都连接到集成 GPU,因此无需设置来自独立 GPU 的输出。可能需要编译自定义内核,如#节能中所述。

仅使用 Intel 显卡

请参阅上面的#禁用独立显卡

使用 PRIME 渲染卸载的开源驱动

通过此设置,可以默认使用集成 GPU,并通过使用 DRI_PRIME 环境变量将 GPU 密集型应用程序卸载到独立 GPU。有关详细信息,请参阅 PRIME。请注意,开源 NVIDIA 驱动程序 Nouveau 目前不支持 Pascal GPU(如 GTX 1050)上的电源管理,因此使用此驱动程序的性能非常差。请参阅Nouveau#电源管理

使用 Bumblebee 的闭源驱动

通过此设置,默认使用集成 GPU,但某些应用程序可以使用 optirunprimusrun 启动器在独立 GPU 上渲染。有关详细说明,请参阅 Bumblebee。缺少适当的垂直同步支持意味着使用此方法在独立 GPU 上渲染的应用程序会出现画面撕裂。由于在独立 GPU 和集成 GPU 之间低效地移动数据而引入了一些开销,但 NVIDIA GPU 的性能比使用 Nouveau 时要好得多。

使用 PRIME 输出卸载的闭源驱动

使用此设置,独立显卡用于所有渲染,集成显卡仅用于显示渲染输出。在轻度使用期间,功耗要高得多,因为独立显卡无法禁用。图形密集型应用程序的性能明显优于 Bumblebee,并且由于 PRIME Synchronization,垂直同步有效,因此消除了画面撕裂。删除 bumblebee,并按照 NVIDIA OptimusNVIDIA READMEPRIME Synchronization 线程中的说明进行操作,使用 PCI:1:0:0 作为 BusID。将 modeset=1 参数添加到 nvidia_drm 内核模块(在启动时,而不是使用 modprobe)以启用 PRIME 同步并消除画面撕裂(请参阅 Kernel modules#Setting module options)。

触摸板

Synaptics 触控板的基本功能开箱即用。

根据哪个软件包处理您的触控板输入,扩展功能的方法有所不同。

libinput 驱动程序配置

libinput 的完整文档似乎非常适用于此触控板。虽然该驱动程序已经包含处理高级多点触控事件(如滑动和捏合手势)的逻辑,但桌面环境或窗口管理器可能尚未为所有这些事件实现操作。

要使某些三指和四指手势工作,您可能需要使用 libinput-gestures 的文档并安装 libinput-gesturesAUR 软件包。

Synaptics 驱动程序配置

您可以使用 synclient 列出触控板的功能并在会话期间更改它们。

配置中键

触控板底部有一个很大的点击区域,可以禁用或配置为 1、2 或 3 个按钮。例如,要将触控板的大部分区域视为“按钮 1”,但将中间下部区域(中键)和右下部区域(右键)视为单独的按钮,请创建内容为如下的 /etc/X11/xorg.conf.d/50-synaptics.conf 文件

Section "InputClass"
   Identifier "touchpad catchall"
   Driver "synaptics"
   MatchIsTouchpad "on"
   # enable clik zone and configure 3 buttons on bottom
   Option "ClickPad" "1"
   Option "SoftButtonAreas" "60% 0 82% 0 40% 60% 82% 0"
   # other commons options than you may want to configure
   # scroll with two fingers (enabled vertically, disabled horizontally)
   Option "VertTwoFingerScroll" "1"
   Option "HorizTwoFingerScroll" "0"
   # enable tap as click: 1 finger -> left button, 2 fingers -> right, 3 fingers -> middle
   Option "TapButton1" "1"
   Option "TapButton2" "3"
   Option "TapButton3" "2"
   # idem but for click with 1,2,3 fingers. Use "0" to disable.
   Option "ClickFinger1" "1"
   Option "ClickFinger2" "3"
   Option "ClickFinger3" "2"
   # palm detection. These parameters somehow works, YMMV.
   Option "PalmDetect" "1"
   Option "PalmMinWidth" "10"
   Option "PalmMinZ" "200"
EndSection

随着 synaptics 最近被弃用,可以使用现有的 GUI(例如,GNOME Tweak Tool)来更改行为。使用 gnome-tweaks,在“键盘和鼠标”部分,“鼠标点击模拟”默认设置为“手指”。将其更改为“区域”选项,该选项使用触控板的右下角进行右键单击,可以解决此问题。

Thunderbolt 扩展坞

TB16

如果 BIOS 中禁用了 Thunderbolt 安全性,或者使用 bolt 临时授权或永久注册已激活 Thunderbolt 安全性的 Thunderbolt 设备,则 TB16 工作正常。戴尔 TB16 页面上详细介绍了各种怪癖。

戴尔扩展坞

某些戴尔扩展坞(使用 D6000 测试)会遇到显示器周期性断开连接的情况。重新拔插扩展坞会导致显示器恢复工作,但显示器会再次断开连接。更永久的解决方法是注释掉 PulseAudio 配置中的以下行

/etc/pulse/default.pa
### Automatically suspend sinks/sources that become idle for too long
load-module module-suspend-on-idle

可以在此处找到关于此问题的讨论,包括关于修复的讨论。

固件

工具化

固件更新由戴尔提供,可以使用 fwupd 安装。

手动

或者,可以在 戴尔支持页面上找到固件映像,文件名为 XPS_15_9560_X.Y.Z.exe。为了安装

  • 从“Dell XPS 15 9560 System BIOS”部分下载所需的固件
  • 将其保存在 /boot/EFI/Dell/Bios/ 中(此路径可能因您的安装而异)或保存到 FAT32 格式的 USB 驱动器
  • 重启系统,并在戴尔徽标出现时反复按 F12 进入启动菜单
  • 选择“Bios Flash Update”
  • 选择之前保存的文件,然后开始该过程

该过程将持续约五分钟,在此期间系统将重启几次并将风扇推至最大速度。最后,系统将正常重启。

指纹识别器

指纹读取器是 Validity/Synaptics 型号,USB ID 为 138a:0091。目前有一个可用的驱动程序原型,能够捕获指纹,但由于匹配算法的实现方式,直接与 libfprint 集成的可能性不大。 [1]

还有一些人正在为各种其他相关的读取器开发驱动程序。根据他们的说法,为该型号实现驱动程序应该相当容易,因为进出设备的所有流量似乎都没有加密。尽管如此,138a:0091 超出了该项目的范围。 [2]

故障排除

Xorg 启动时冻结

如果 Xorg 在启动后立即冻结,甚至在打印任何日志之前,并且您尝试使用 Intel 显卡且 NVIDIA 显卡已禁用,则需要添加内核参数 acpi_rev_override=1,如上面的 #Disable discrete GPU 中所述。

音频 / 耳机

如果通过耳机插孔的音频输出突然停止工作,并且重启计算机没有帮助,请尝试挂起/恢复。可能需要在挂起之前拔下耳机,然后在计算机完全唤醒后重新插入(基于 AskUbuntu 回答和 Arch 用户的经验)。如果即使在挂起/恢复技巧和插拔电缆后耳机音频似乎仍然永久丢失,则 $ alsactl restore 可以将其恢复。最后建议尝试的操作是启动到 Windows 并连接耳机后静音/取消静音音频。

如果通过扬声器/耳机的音量很小,您可能需要重启到 Windows 并在 Windows 中增大音量。然后重启到 Linux,您的扬声器/耳机应该会更响亮...

系统日志中的 PCIe 总线错误

如果您有 NVMe 磁盘,并且取决于您的 BIOS 版本(即使是 2017 年 10 月的 1.5.0 版本),您可能会有很多系统错误日志,例如

Nov 25 22:36:08 xxxxx kernel: pcieport 0000:00:1c.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=00e0(Transmitter ID)
Nov 25 22:36:08 xxxxx kernel: pcieport 0000:00:1c.0:   device [8086:a110] error status/mask=00001000/00002000
Nov 25 22:36:08 xxxxx kernel: pcieport 0000:00:1c.0:    [12] Replay Timer Timeout

可以使用内核启动选项 pcie_aspm=off 来纠正此问题,该选项似乎对功耗的影响极小甚至没有影响。如果这不起作用,请尝试 pci=nommconf(有关说明,请参阅 此处)。

lspci 导致 CPU 锁定

NVIDIA/nouveau 驱动程序可能会导致任何运行 lspci、启动 X 服务器或以其他方式探测显卡的操作导致至少一个 CPU 核心锁定,并且似乎完全锁定 PCIe 访问,例如对 NVMe SSD 的访问。内核参数 nouveau.modeset=0 可能会解决此问题。这也与启动时 X 冻结有关(某些机器可能需要运行两次 lspci/startx,以便在 nouveau 被处理后它们冻结);在这种情况下,解决方案也是设置 acpi_rev_override=1[3]

普遍的缓慢和卡顿

如果您遇到整体性能和响应能力大幅下降的情况,可能是由于 CPU 卡在 800Mhz 的频率上被节流。这种情况也发生在其他类似的 XPS 型号(如 XPS15 9550)上,可能是由于使用了非 OEM 电源适配器。要检查,请运行 watch -n1 'lscpu | grep MHz' 并执行一些任务。如果 CPU 频率一直卡在 800Mhz,那么您就遇到了这个问题。

要修复,有三种选择

  1. 无需重启,即时修复:读取并将控制此节流的寄存器设置回最大频率,有关如何操作,请参阅 Lenovo ThinkPad T480#CPU stuck at minimum frequency这个 superuser 问题
  2. 断开电源适配器和电池,然后按住电源按钮 5-30 秒
  3. 耗尽电池电量,断开电源适配器,然后按住电源按钮 5-30 秒

重启后,再次运行相同的命令来检查 CPU 频率,它应该恢复正常。 [4]

在启动时(POST),连接到 USB-C 端口的设备无法工作

在某些情况下,当连接到 USB-C 端口的设备出现问题时,可能会发生这种情况

  • 无法使用外接键盘进入 BIOS 启动菜单或 BIOS 设置。
  • 无法处理启动加载程序菜单。
  • 无法从外部 USB 存储启动。

这是由戴尔固件默认情况下在 POST 期间未初始化它们引起的。但是可以在 BIOS 设置中启用它(System Configuration > Thunderbolt Adapter Configuration > Enable Thunderbolt Adapter Boot Support)。

内核 6.4.11 和 6.1.46LTS 中 Card Reader 的 rtsx 驱动程序中的错误阻止启动

内核 6.4.11 和 6.1.46LTS 中引入了与读卡器 rtsx 驱动程序相关的回归,随后阻止系统识别 NVMe 驱动器并正常启动。

一种解决方法是将有问题的驱动程序(rtsx_pcirtsx_pci_sdmmc列入黑名单,然后重新生成 initramfs,直到内核问题得到修复。

这将禁用读卡器,系统将正常启动。

有关更多详细信息,请参阅 FS#79439

外部链接