Dell XPS 15 (9570)

出自 ArchWiki

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

原因: 硬件表格缺少一些 ID,功能键表格应该合并。辅助功能章节缺失。(在Talk:Dell XPS 15 (9570)中讨论)

本文或本节需要扩充。

原因: 本页面远未完成。一些未提及的项目可能与Dell XPS 15 (9560)相同。其中大部分也适用于 Precision 5530(在Talk:Dell XPS 15 (9570)中讨论)
硬件 PCI/USB ID 工作状态?
触摸板 06CB:7A13
键盘
GPU (Intel) 8086:3e9b
GPU (NVIDIA) 10de:1c8c
网络摄像头 0c45:671d
蓝牙 0cf3:e301
SD 卡读卡器 10ec:525a
音频 8086:a348
Wi-Fi 168c:003e
指纹识别器 27c6:5395
TPM

安装

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

  • 将 SATA 模式从默认的“RAID”更改为“AHCI”。这将允许 Linux 检测到 NVMe SSD。如果与现有的 Windows 安装双启动,Windows 在更改后将无法启动,但是这可以在不重新安装的情况下修复
  • 在“POST 行为”中将快速启动更改为“完全”。这可以防止间歇性启动失败。
  • 禁用安全启动以允许 Linux 启动。或者,您可以选择设置安全启动,使其与 Linux 一起工作,您可以利用其潜在的安全优势。

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

注意: 许多 Dell XPS UEFI 不支持直接将内核行选项传递给内核,这将导致启动冻结。请改用引导加载程序或 Arch-EFIBoot[1]

固件

有两种主要方法来更新 UEFI 固件

  • 通过运行 Linux 会话使用 fwupd
  • 通过 UEFI:固件镜像可以在 戴尔支持页面 上找到,文件名为 XPS_15_9570_X.Y.Z.exe
    • 从“Dell XPS 15 9570 System BIOS”部分下载所需的固件
    • 将其保存在 /boot/EFI/Dell/Bios/ 中(此路径可能因您的安装而异)
    • 重启系统,并在戴尔徽标上反复按 F12 进入启动菜单
    • 选择“Bios Flash Update”(BIOS 刷新更新)
    • 选择先前保存的文件,然后开始该过程
该过程将大约需要五分钟,在此期间系统将进行一些重启并将风扇推至最大速度。最后,系统将正常重启。

功能键

按键 可见?1 标记?2 效果
Fn+Esc 启用 Fn 锁定
Fn+F1 XF86AudioMute
Fn+F2 XF86AudioLowerVolume
Fn+F3 XF86AudioRaiseVolume
Fn+F4 XF86AudioPrev
Fn+F5 XF86AudioPlay
Fn+F6 XF86AudioNext
Fn+F7 请参阅 #未标记的按键绑定
Fn+F8 输入 Super+p
Fn+F9 XF86Search
Fn+F10 启用/禁用键盘背光
Fn+F11 XF86MonBrightnessDown
Fn+F12 XF86MonBrightnessUp
Fn+Print 3 XF86RFKill,将硬性阻止 Wi-Fi 并软性阻止蓝牙。再次按下以禁用
Fn+Ins 3 XF86Sleep,请参阅 #未标记的按键绑定
Fn+RCtrl 菜单
Fn+Up PageUp
Fn+Down PageDown
Fn+Left 首页
Fn+Right End
  1. 该按键对 xev 和类似工具可见
  2. 物理按键上有一个符号,描述其功能
  3. systemd-logind 默认处理此项

未标记的按键绑定

BIOS 处理几个按键绑定

按键 效果
Fn+F7 不引人注目的模式。必须在 BIOS 中启用才能工作。停用所有 LED 并关闭显示和声音。再次按下以禁用。
Fn+Ins 挂起设备。无法禁用/配置

电源管理

挂起

请参阅 电源管理/挂起和休眠#更改挂起方法

休眠

开箱即用,请参阅 电源管理/挂起和休眠

Powertop

powertop 在管理功耗方面非常有效。运行 powertop --auto-tune 并比较功耗变化(笔记本电脑必须拔下电源并使用电池供电)。powertop --auto-tune 可以在每次启动时运行。

请参阅 Powertop#应用设置

显卡

集成的 Intel 显卡开箱即用。

集成 Intel 显卡的不同选项

建议使用 TLP 以节省一些电量。但是,可以为 Intel 显卡激活更多选项,以节省电量或防止屏幕闪烁。

将以下行添加到

/etc/modprobe.d/i915.conf
options i915 enable_fbc=1 disable_power_well=0 fastboot=1 enable_psr=0

一些指南建议使用 enable_guc=3 选项,但是该选项出现了一些问题。在将其添加到 /etc/modprobe.d/i915.conf 之前,请先在启动前将其作为命令行选项尝试。

内核模块

已知 nouveau 模块会导致内核崩溃和冻结。

一种缓解这种情况的方法是将 nomodeset 添加到内核选项。但是,最好使用黑名单方法完全禁用它(推荐)

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

NVIDIA Optimus

请参阅 NVIDIA Optimus#可用方法

在不使用时禁用 NVIDIA 显卡

另一个好的选择是禁用默认的 NVIDIA 显卡,仅在使用 PRIME 进行计算卸载时启用它。

注意: 这种替代方案将笔记本电脑的功耗从大约 13W 大幅降低到 6/7W。

可以使用 NVIDIA 专有驱动程序使其工作,并且可能有多种方法使其工作。请参阅 [2]

  • 安装 nvidianvidia-prime。这应该会拉取所有必需的软件包。
  • 创建以下文件并添加以下内容,以允许 GPU 在启动时断电
/etc/tmpfiles.d/nvidia_pm.conf
w /sys/bus/pci/devices/0000:01:00.0/power/control - - - - auto
  • 需要将几个模块列入黑名单,以防止它们在启动时加载。将以下内容添加到
/etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist nv
blacklist nvidia
blacklist nvidia-drm
blacklist nvidia-modeset
blacklist nvidia-uvm
blacklist ipmi_msghandler
blacklist ipmi_devintf
  • 创建以下文件
/etc/modprobe.d/disable-nvidia.conf
install nvidia /bin/false
  • 如果您正在使用 TLP,您可能需要通过在 TLP 配置文件中添加/取消注释以下行来将独立 NVIDIA 显卡列入黑名单
RUNTIME_PM_DENYLIST="01:00.0"

使用 lspci 仔细检查地址。

  • 为了启用和禁用显卡,创建以下 2 个脚本
enableGPU.sh
#!/bin/sh
# allow to load nvidia module
if [ ! -f /etc/modprobe.d/disable-nvidia.conf ]; then
	printf "File /etc/modprobe.d/disable-nvidia.conf does not exist.\n"
	printf "Is the GPU already enabled ?\n"
	exit 1
fi
printf "Allowing to load NVIDIA modules...\n"
mv /etc/modprobe.d/disable-nvidia.conf /etc/modprobe.d/disable-nvidia.conf.disable
printf "Changing power control...\n"
# remove NVIDIA card (currently in power/control = auto)
echo -n 1 > /sys/bus/pci/devices/0000\:01\:00.0/remove
sleep 1
# change PCIe power control
echo -n on > /sys/bus/pci/devices/0000\:00\:01.0/power/control
sleep 1
# rescan for NVIDIA card (defaults to power/control = on)
printf "Rescanning....."
echo -n 1 > /sys/bus/pci/rescan
if [ -x "$(command -v nvidia-smi)" ]; then
	printf "\n"
	nvidia-smi
fi
printf "\nNVIDIA CARD IS NOW ENABLED.\n"
disableGPU.sh
#!/bin/sh
printf "Unloading NVIDIA modules...\n"
modprobe -r nvidia_drm
modprobe -r nvidia_uvm
modprobe -r nvidia_modeset
modprobe -r nvidia
printf "Changing power control...\n"
# change NVIDIA card power control
echo -n auto > /sys/bus/pci/devices/0000\:01\:00.0/power/control
sleep 1
# change PCIe power control
echo -n auto > /sys/bus/pci/devices/0000\:00\:01.0/power/control
sleep 1
# lock system from loading nvidia module
if [ -f /etc/modprobe.d/disable-nvidia.conf.disable ]; then
	mv /etc/modprobe.d/disable-nvidia.conf.disable /etc/modprobe.d/disable-nvidia.conf
	printf "\nNVIDIA CARD IS NOW DISABLED.\n"
else
	printf "\nFile /etc/modprobe.d/disable-nvidia.conf.disable does not exist.\n"
	printf "Is the GPU already disabled ?\n"
fi
  • 如果在关机时未禁用显卡,则即使已列入黑名单,模块也会在下次启动时再次加载。因此,我们需要创建一个服务,在关机时关闭 NVIDIA 显卡。创建以下文件
/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
  • 重启

重启后,仔细检查 nvidia 模块是否未加载

$ lsmod | grep nvidia

现在您可以通过运行上述脚本 enableGPU.sh 来启用 NVIDIA 显卡。该脚本将验证 NVIDIA 显卡是否已启用。最后,您可以运行带有 prime-run 的命令

$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics 630 (Coffeelake 3x8 GT2)
$ prime-run glxinfo | grep "OpenGL renderer"
OpenGL renderer string: GeForce GTX 1050 Ti with Max-Q Design/PCIe/SSE2

使用 disableGPU.sh 禁用显卡以降低功耗。

故障排除

xbacklight

为了使 xbacklight 工作并且不与 NVIDIA Optimus 冲突

/etc/X11/xorg.conf.d/20-intel.conf
Section "Device"
	Identifier  "Intel Graphics"
        Driver      "intel"
        Option      "Backlight"  "intel_backlight"
EndSection

NVRM: Failed to enable MSI; falling back to PCIe virtual-wire interrupts

有时在挂起/恢复后会发生这种情况。GPU 可以在没有 MSI 的情况下正常工作 [3]。您可以通过在 /etc/modprobe.d/nvidia.conf 中添加以下内容来禁用 MSI

options nvidia NVreg_EnableMSI=0

使用 nvidia 模块从挂起恢复时卡死

如果您的系统每次从挂起恢复时都卡死,并且在 dmesg 的输出中出现以下两行

[   42.447364] pci 0000:01:00.0: Refused to change power state, currently in D3
[   46.896493] pci 0000:01:00.0: Refused to change power state, currently in D3

您需要将以下内容添加到您的 内核命令行

nouveau.blacklist=0 acpi_osi=! acpi_osi=\"Windows 2015\" mem_sleep_default=deep

请参阅 NVIDIA 错误编号:2589324,戴尔解决方案

Wi-Fi 和蓝牙

这些开箱即用,但您可能需要更新固件以获得更好的稳定性。对于蓝牙,请确保您已按照 蓝牙 wiki 页面安装了所有内容。

故障排除

ath10k 模块在挂起后崩溃

您可能会注意到在挂起/恢复后驱动程序崩溃,这在大多数情况下似乎不会影响正在运行的系统,崩溃转储类似于

kernel: WARNING: CPU: 6 PID: 27936 at drivers/net/wireless/ath/ath10k/mac.c:5746 ath10k_bss_info_changed+0xf96/0x1120 [ath10k_core]
kernel: Modules linked in: uhid algif_hash cmac rfcomm fuse ccm ipt_MASQUERADE nf_conntrack_netlink nfnetlink xfrm_user xfrm_algo iptable_nat nf_nat_ipv4>
kernel:  snd_hda_intel dcdbas x86_pkg_temp_thermal dell_smm_hwmon snd_hda_codec intel_powerclamp cfg80211 kvm_intel snd_hda_core input_leds snd_hwdep snd>
kernel:  vfio_mdev mdev vfio_iommu_type1 vfio kvm irqbypass intel_gtt i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm agpga>
kernel: CPU: 6 PID: 27936 Comm: kworker/u24:42 Tainted: G     U  W  OE     5.0.4-arch1-1-ARCH #1
kernel: Hardware name: Dell Inc. XPS 15 9570/0HWTMH, BIOS 1.8.1 02/01/2019
kernel: Workqueue: events_unbound async_run_entry_fn
kernel: RIP: 0010:ath10k_bss_info_changed+0xf96/0x1120 [ath10k_core]
kernel: Code: 24 8b 95 78 01 00 00 85 c0 0f 85 a7 00 00 00 89 d1 be 10 00 00 00 48 c7 c2 c0 b2 fa c0 4c 89 c7 e8 bf 68 00 00 e9 a5 f1 ff ff <0f> 0b 4c 89>
kernel: RSP: 0000:ffffb7a45422fcd0 EFLAGS: 00010282
kernel: RAX: 00000000fffffffe RBX: ffff98f6d44815a0 RCX: 0000000000000000
kernel: RDX: ffff98f6d4481938 RSI: ffffb7a45422fcf0 RDI: ffff98f6d81df418
kernel: RBP: ffff98f6d81df418 R08: 0000000000000001 R09: 0000000000000000
kernel: R10: 000000000000001f R11: 0000000000000000 R12: 0000000000000020
kernel: R13: ffff98f6d81df420 R14: ffff98f6d4482598 R15: ffff98f6d44815a0
kernel: FS:  0000000000000000(0000) GS:ffff98f6dc380000(0000) knlGS:0000000000000000
179 94%
kernel:  process_one_work+0x1eb/0x410
kernel:  worker_thread+0x2d/0x3d0
kernel:  ? process_one_work+0x410/0x410
kernel:  kthread+0x112/0x130
kernel:  ? kthread_park+0x80/0x80
kernel:  ret_from_fork+0x35/0x40
kernel: ---[ end trace 09ae3e174c178f98 ]---

在某些内核中已修补,而在其他内核中未修补(哪些?),相关链接

Wi-Fi 每 1-2 小时部分失去网络连接

对于某些 Wi-Fi 路由器,网络连接可能会部分丢失,而网络状态没有任何明显变化。现有连接(例如 ssh 会话、Zoom 视频通话)保持工作,但加载新网页甚至 ping 网关都不再工作。重启网络可以解决问题,但这会在 1-2 小时后再次出现。

可以通过降级 Wi-Fi 网卡固件来彻底解决此问题,如此论坛帖子中的帖子 #17 中所述。为了避免每次升级 linux-firmware 时重复降级,请参阅 pacman#跳过要安装到系统的文件

蓝牙消失(挂起后?)

可能与之前的稳定性问题有关,有时适配器似乎完全消失。正如此处 报道(感谢 w.v.w.),您可以通过手动升级固件(升级到比 linux-firmware 中的更新的版本)来解决此问题

1. 仔细检查适配器(例如 QCA6174,如下所示)

$ lspci | grep Network
3b:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)

2. 确认硬件和当前固件版本(例如 hw3.2,固件 RM.4.4.1.c3-00013-QCARMSWPZ-1,如下所示)

# journalctl -b --grep='ath10k.*(firmware|qca)'
kernel: ath10k_pci 0000:3b:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 1a56:1535
kernel: ath10k_pci 0000:3b:00.0: firmware ver RM.4.4.1.c3-00013-QCARMSWPZ-1 api 6 features wowlan,ignore-otp,no-4addr-pad,raw-mode,mfp crc32 fc0096a8

3. 按照 https://wireless.wiki.kernel.org/en/users/Drivers/ath10k/firmware[死链接 2024-10-12 ⓘ] 上的说明进行操作

例如,对于上述适配器,从 https://github.com/kvalo/ath10k-firmware/tree/master/QCA6174/hw3.0[死链接 2024-07-30 ⓘ] 下载最新的固件,并

$ cd /lib/firmware/ath10k/QCA6174/hw3.0
# cp firmware-6.bin firmware-6.bin.bak
# cp ~/Downloads/firmware-6.bin_RM.4.4.1.c3-00013-QCARMSWPZ-1 firmware-6.bin

或者 rmmod ath10k_core ath10k_pci && modprobe ath10k_pci (作为 root 用户)(可能不起作用,请检查 dmesg)或重启。

ath10k-fixer

针对上述某些问题的一种可能的解决方法是在 ath10k_pci 内核模块崩溃时重新加载它

# modprobe -r ath10k_pci && modprobe ath10k_pci

此解决方法由 ath10k-fixerAUR 守护程序自动化。

触摸板和触摸屏

Wacom 触摸屏和 Synaptics 触摸板

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SYNA2393:00 06CB:7A13 Touchpad            id=16   [slave  pointer  (2)]
⎜   ↳ Wacom HID 488F Finger                     id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
[truncated]

两者都是 i2c 设备

$ udevadm info /dev/input/mouse3 # touchscreen
P: /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-10/i2c-WCOM488F:00/0018:056A:488F.0006/input/input47/mouse3
N: input/mouse3
L: 0
E: DEVPATH=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-10/i2c-WCOM488F:00/0018:056A:488F.0006/input/input47/mouse3
E: DEVNAME=/dev/input/mouse3
E: MAJOR=13
E: MINOR=35
E: SUBSYSTEM=input
E: USEC_INITIALIZED=5501073
E: ID_INPUT=1
E: ID_INPUT_TOUCHSCREEN=1
E: ID_PATH=pci-0000:00:15.0-platform-i2c_designware.0
E: ID_PATH_TAG=pci-0000_00_15_0-platform-i2c_designware_0
$ udevadm info /dev/input/mouse6 # touchpad
P: /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-11/i2c-SYNA2393:00/0018:06CB:7A13.0007/input/input38/mouse6
N: input/mouse6
L: 0
S: input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-mouse
E: DEVPATH=/devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-11/i2c-SYNA2393:00/0018:06CB:7A13.0007/input/input38/mouse6
E: DEVNAME=/dev/input/mouse6
E: MAJOR=13
E: MINOR=38
E: SUBSYSTEM=input
E: USEC_INITIALIZED=4683741
E: ID_INPUT=1
E: ID_INPUT_TOUCHPAD=1
E: ID_SERIAL=noserial
E: ID_PATH=pci-0000:00:15.1-platform-i2c_designware.1
E: ID_PATH_TAG=pci-0000_00_15_1-platform-i2c_designware_1
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-mouse

如果您遇到触摸板问题,可能值得禁用 psmouse

Thunderbolt 扩展坞

TB16

如果 Thunderbolt 安全性在 BIOS 中禁用,或者使用 bolt 临时授权或永久注册已激活 Thunderbolt 安全性的 Thunderbolt 设备,则 TB16 工作正常。有关各种怪癖,请参阅 Dell TB16 页面。

Caldigit TS3 Plus

如果 Thunderbolt 安全性在 BIOS 中禁用,或者使用 bolt 临时授权或永久注册已激活 Thunderbolt 安全性的 Thunderbolt 设备,则 TS3 Plus 工作正常。存在一个问题,如果拔下 USB 端口然后重新插入,USB 端口将无法工作。这可以通过重启进入 UEFI 并使用 BIOS 辅助枚举(非原生或自动切换)来修复,您可能需要禁用自动切换,应用,然后选择 BIOS 辅助,然后再次应用。

散热管理

9570 的散热设计很差,主要是因为在原始系统设计中使用了更高端的芯片,而没有补偿额外的热量。这影响到许多方面

  1. 性能:在较高温度下,CPU 核心会降频以避免损坏。在最好的情况下,您的系统不会像它能够运行的那样快,而在最坏的情况下(并且很常见),比更便宜的芯片更慢,并且性能迟缓。
  2. 电池续航不必要地缩短。
  3. 系统寿命:在持续高温下运行会对设备寿命产生负面影响。
  4. 用户不适:令人不舒服的热量和令人不舒服的风扇噪音。

幸运的是,所有这些都可以得到显着改善,使您的系统强大而安静地运行。

诊断

即使在使用率相当低的情况下,您也可能会有很多像这样的 dmesg 输出(适用于所有 CPU)

kernel: CPU8: Package temperature above threshold, cpu clock throttled (total events = 8451)
kernel: CPU8: Package temperature/speed normal

使用 lm_sensors 并进行一些 压力测试(使用 stressmprime)以查看不同负载下 CPU 核心温度和风扇速度的情况。

降压

请参阅 wiki 上的 CPU 降压。降低热量并延长电池寿命。

警告: BIOS 1.16.0 及更高版本会干扰降压。有关更多信息和可能的解决方法,请参阅 此问题

/etc/intel-undervolt.conf 的可能配置

  1. i9-8950HK*(上次更新时间 2019-03-30)
undervolt 0 'CPU' -140
undervolt 1 'GPU' -75
* Tested extensively for moderate use.  Was not stress tested for > 24 hours.  Anecdotal reports of up to -200.

这比更换硅脂的影响要小,但更容易做到。

更换硅脂和散热垫

通过用亚马逊上提供的更好的选项替换戴尔使用的导热硅脂,并添加一些额外的散热垫,可以进行显着改进。这听起来可能让人感到难以承受,但非常值得付出努力,尤其是对于较新的 CPU。如果您自己无法做到这一点,请考虑寻找可以为您完成此项工作的商店/技术人员。请参阅以下文章以及下面的用户评论以获取更多信息

结果

根据上述 UltraBookReview 文章的作者

降压似乎可以将最大负载下的温度降低 7-10C,而更换硅脂似乎可以将温度降低 4-10C,具体取决于您最初的硅脂工作和使用的硅脂。

根据 此论坛帖子,需要低得多/更柔和的风扇速度来维持相同的温度,并且在相似负载下温度低几度。风扇开启的频率更低,持续时间更短。节流不太普遍且不太严重。

指纹识别器

指纹识别器缺少 Linux 驱动程序。

Goodix 不会直接提供它们,正如他们在论坛上所说,并且经常将责任归咎于 设备制造商

尽管如此,Goodix 声明(2020-04-30)他们正在与戴尔合作,为 XPS 9570 在 2020 年下半年提供 Linux 支持

还有一些人在 逆向工程驱动程序