戴尔 XPS 15 9570 (2018) 禁用 nvidia GPU

nio*_*sus 8 nvidia graphics dell bumblebee drivers

我最近购买了戴尔 XPS 15 9570 并成功安装了 Ubuntu 18.04。

大多数事情都按预期工作,但存在一些与电源和 nvidia GPU 相关的问题。

目前,我有两个我认为主要的问题:

  1. Nvidia的GPU停留默认情况下启动,甚至当我运行sudo prime-select intel。我可以sudo tee /etc/acpi/bbswitch <<<OFF从终端使用 bbswitch 禁用它。我希望能够在启动时禁用显卡,因为我只在 Linux 下使用笔记本电脑来提高工作效率。
  2. 笔记本电脑在使用交流电源时无法进入睡眠状态,并且bbswitch 报告 GPU 已关闭。使用电池时它会正常进入睡眠状态,但使用交流电源时它会进入睡眠状态,但在再次打开笔记本电脑盖时会挂起,只能选择硬关机。

设置

我在配备 16G RAM、NVidia 1050 TI 显卡和 i7-8750H 处理器的 Dell XPS 15 9570 上运行 Ubuntu 18.04。

按时间顺序排列的系统设置操作

  • 安装 Ubuntu 18.04 使用nouveau.modeset=0可以运行 live image 和第一次安装的系统
  • Additional Drivers面板安装正确的 nvidia 驱动程序。这将安装驱动程序以及nvidia-prime
  • 使用sudo prime-select intel挑英特尔卡。重启。这确保英特尔卡是系统使用的卡。但是,即使未使用该谨慎卡,​​它仍处于开启状态。这是由 报道的cat /proc/acpi/bbswitch。此命令返回0000:01:00 ON表示 GPU 已开启。此外,powertop当我通过 bbswitch 手动关闭 GPU 时,显示放电率约为 20W ,而放电率约为 10W。
  • 安装bbswitch以确保我实际上可以禁用离散卡并且它可以手动使用sudo tee /etc/acpi/bbswitch <<<OFF

我尝试过的事情

  • 尝试安装 bumblebee,因为这应该控制 bbswitch 并在需要时禁用/启用独立 GPU。安装大黄蜂会导致我无法加载系统。我必须通过进入根控制台并清除 bumblebee* 来恢复系统
  • 我已尝试按照bbswitch GitHub 页面上的建议进行修改/etc/modules/以包含 。这不起作用,只有当我离开那里时它才会加载 bbswitch,但随后我需要手动禁用 GPU。bbswitch load_state=0 unload_state=1bbswitch

欢迎任何想法。也请随时向我询问更多详细信息。如此完美的笔记本电脑在 Ubuntu 下遇到这些问题,真是令人沮丧。

Shu*_*Lin 3

在运行 Ubuntu 18.04 的 9750 上,每当我在登录或启动之前使用 bbswitch 关闭 dgpu 时,我的系统就会冻结。

在尝试了许多不同的方法和多次重新启动后,我确定了一个解决方法:安排一个 cron 作业在重新启动时延迟一段时间(60 秒)后激活 bbswitch,以便我可以在 bbswitch 启动之前登录。

在终端中以 root 身份打开 crontab:

sudo crontab -e
Run Code Online (Sandbox Code Playgroud)

添加到计划任务:

@reboot sleep 60 && /sbin/modprobe bbswitch
Run Code Online (Sandbox Code Playgroud)

将 /sbin/modprobe 替换为 modprobe 可执行文件所在的位置,这假设已安装 bbswitch。

还要添加到/etc/modprobe.d/bbswitch.conf:

options bbswitch load_state=0 unload_state=1
Run Code Online (Sandbox Code Playgroud)

这会在加载 bbswitch 时关闭 dgpu,并在卸载 bbswitch 时打开。请参阅此处了解更多详细信息。

对于盖子问题,我必须编辑logind.conf:

sudo nano /etc/systemd/logind.conf
Run Code Online (Sandbox Code Playgroud)

更改以下行:

HandleLidSwitchDocked=ignore
Run Code Online (Sandbox Code Playgroud)

HandleLidSwitchDocked=suspend 
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果您保留默认设置(=忽略),连接外部显示器并合上盖子,计算机在重新打开时不会冻结。使用 =ignore 和外接显示器时,当您合上盖子时,计算机会暂停,但您可以使用鼠标/键盘唤醒外接显示器。


小智 1

这些是我在 Linux 上的处理器上禁用 nvidia GPU 并启用集成 Intel GPU 的说明。这使我的 Dell XPS 15 功耗从 25-30 W 降至 11-12 W。将电池续航时间从 3 小时延长至 9-10 小时。我成功地禁用了 GPU 本身,但它无法正确启动到 Linux,即使我让它正常工作,它也不会让我调整背光。我现在已经解决了所有这些问题并且一切正常。

System Dell XPS 15 9560 9 cell battery
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
Linux version 4.15.0-39-generic (buildd@lgw01-amd64-054) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018
Run Code Online (Sandbox Code Playgroud)

我主要遵循本指南,但必须添加一些调整https://gist.github.com/tomwwright/f88e2ddb344cf99f299935e1312da880

指南如下

# perform a fresh install of Ubuntu 17.10

# upgrade the kernel to v4.13.10
mkdir ~/kernel-v4.13.10
cd ~/kernel-v4.13.10
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.10/linux-headers-4.13.10-041310_4.13.10-041310.201710270531_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.10/linux-headers-4.13.10-041310-generic_4.13.10-041310.201710270531_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13.10/linux-image-4.13.10-041310-generic_4.13.10-041310.201710270531_amd64.deb
sudo dpkg -i *.deb

# configure required kernel parameter (https://github.com/Bumblebee-Project/bbswitch/issues/148)
sudo nano /etc/default/grub
# change this parameter to: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_rev_override=1"
# rebuild the bootloader
sudo update-grub2

# install and configure TLP and PowerTOP
sudo apt-get install tlp tlp-rdw powertop
sudo tlp start
# PowerTOP should be reporting a battery discharge rate of ~8-12W
sudo powertop --auto-tune     # auto-tune parameter will configure some recommended power-saving tweaks

# install Nvidia 384.90 drivers
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt-get install nvidia-384=384.90-0ubuntu3.17.10.1
sudo apt-mark hold nvidia-384   # stop this package being auto-updated during package resolution

# test that the nvidia drivers are working: nvidia-smi should output some GPU stats
nvidia-smi

# PowerTOP should now be reporting a battery discharge rate of ~15-20W
sudo powertop

# install Nvidia Prime: so we can disable the dedicated GPU when we don't want it
sudo apt-get install nvidia-prime
sudo prime-select intel

# REBOOT: when we boot back in, GPU should now be disabled

sudo powertop   # PowerTOP should be reporting ~8-12W dischargehe 
nvidia-smi      # nvidia-smi should complain about missing drivers

sudo prime-select nvidia  # switch back to dedicated graphics
sudo powertop   # PowerTOP should start reporting ~15-20W discharge
nvidia-smi      # nvidia-smi should report GPU info

sudo prime-select intel   # the GOTCHA: prime-select intel doesn't re-disable the graphics card
sudo powertop   # PowerTOP still reporting ~15-20W discharge
nvidia-smi      # nvidia-smi correctly complaining about missing drivers
Run Code Online (Sandbox Code Playgroud)

按照指南进行操作后 1) 运行 powertop 并打开/关闭 nvidia,或者

sudo nano /lib/systemd/system/gpuoff.service
Run Code Online (Sandbox Code Playgroud)

关闭 GPU 电源

/sys/bus/pci/devices/0000\:01\:00.0/power/control
Run Code Online (Sandbox Code Playgroud)

与在 powertop 中禁用 GPU 具有相同的效果

sudo nano /lib/systemd/system/gpuoff.service
sudo systemctl start gpuoff
sudo systemctl enable gpuoff 
#prime-select nvidia
prime-select intel
prime-select query
Run Code Online (Sandbox Code Playgroud)

2) sudo vim /etc/default/grub

#grub now that it works:
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="acpi_backlight=vendor" # < boots
GRUB_CMDLINE_LINUX=""
Run Code Online (Sandbox Code Playgroud)

3) < 这是一个重大修复,可以使其在没有 nomodeset 的情况下正常启动。编辑 /etc/X11/xorg.conf 左右并在第一部分中设置 intel & inactive nvidia 解决了问题。将第一部分设置为:

Section "ServerLayout"
Identifier "layout"
Screen 0 "intel"
Inactive "nvidia"
EndSection
Run Code Online (Sandbox Code Playgroud)

现在要更改背光,我使用“light”命令。我想这是我从 github 某处下载的东西