NVIDIA-PRIME: impossible de passer à Intel

10

Chaque fois que je passe de mon GPU (GTX 1060) à mon IGPU (Intel 530), je ne peux pas démarrer. L'écran de chargement est bloqué avec le message suivant:

[Échec] Impossible de démarrer le démon de persistance NVIDIA. Voir 'systemctl status nvidia-persistenced.service' pour plus de détails.

Cependant, je peux démarrer lorsque je reviens au GPU Nvidia et que le passage à mon igpu sans redémarrage fonctionne temporairement. J'utilise Kubuntu 16.10 et uniquement mon écran d'ordinateur portable interne. C'est la sortie lorsque je passe à mon igpu:

sudo prime-select intel
Info: the current GL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: the current EGL alternatives in use are: ['nvidia-378', 'nvidia-378']
Info: selecting nvidia-378-prime for the intel profile
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378-prime/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

sudo prime-select nvidia
Info: the current GL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: the current EGL alternatives in use are: ['nvidia-378-prime', 'nvidia-378-prime']
Info: selecting nvidia-378 for the nvidia profile
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf (x86_64-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/ld.so.conf to provide /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf (x86_64-linux-gnu_egl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_GL.conf (i386-linux-gnu_gl_conf) in manual mode
update-alternatives: using /usr/lib/nvidia-378/alt_ld.so.conf to provide /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf (i386-linux-gnu_egl_conf) in manual mode

Résultat de lspci -k | grep -EA2 'VGA | 3D'

00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: CLEVO/KAPOK Computer HD Graphics 530
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060] (rev a1)
        Subsystem: CLEVO/KAPOK Computer Device 6a03
        Kernel driver in use: nvidia

J'ai essayé de résoudre ce problème par moi-même pendant plus d'une semaine et je ne sais pas quoi faire. Tout ce que j'ai essayé a échoué.

Pourriez-vous m'aider s'il vous plait?

MISE À JOUR 5.2.2017:

Je l'ai testé à nouveau aujourd'hui et j'ai réalisé que le passage au processeur Intel ne fonctionnait pas du tout avec 375 et 378. La déconnexion gèle l'écran. Alors pourquoi ça a marché une fois? Si j'installe à nouveau tous les pilotes après avoir supprimé les anciens et que j'utilise ensuite des informations Prime-Select (sans redémarrage!), Prime-Select ne met pas à jour les profils Prime -> Il sélectionne l'un des anciens profils non NVIDIA (profils Mesa au lieu de nvidia) et cela fonctionne. Mais dès que je passe à un profil nvidia ou que je redémarre, les profils principaux sont mis à jour et cela ne fonctionne plus. Donc je suppose qu'il y a quelque chose qui ne va pas avec les alternatives EGl pour le GPU Intel? Désolé pour le dérangement.

MISE À JOUR 12.2.2017:

Hier, j'ai modifié le logiciel nvidia-prime et corrigé le bug. Je vais bientôt publier (probablement la semaine prochaine) ma version modifiée et coller un lien ici, mais je rencontre toujours un problème: lorsque j'arrête mon PC après avoir exécuté sudo prime-select intel:

ksmserver plante (j'utilise Kubuntu, ce n'est probablement pas un problème avec Ubuntu)

-> le PC ne peut pas s'éteindre complètement et les anciennes (mauvaises) mises à jour-alternatives pour le GPU Intel sont restaurées

-> Je ne peux pas démarrer.

Cependant, si je cours sudo prime-select intelaprès l'arrêt en mode de récupération, tout fonctionne bien et je peux utiliser le processeur graphique Intel.

MISE À JOUR 17.2.2017:

J'ai posté ma solution de contournement et j'essaie toujours de corriger le bogue dans les référentiels officiels. Cependant, c'est probablement un bogue dans les alternatives de mise à jour, donc je dois poster un rapport de bogue là-bas.

En attendant, profitez de ma solution! J'espère que ça marche aussi pour vous. S'il y a des questions, veuillez laisser un commentaire.

MISE À JOUR 26.2.2017

Comme l'a souligné @whizzzkid, la carte graphique nvidia reste active après l'application de mon patch. Cependant, aujourd'hui, j'ai pu résoudre ce problème. Je mettrai probablement à jour ma réponse pour inclure mon 2ème patch la semaine prochaine. Voici quelques tests que j'ai effectués:

Nvidia: 43-45W

Intel (nvidia activé): 29-31W

Intel (nvidia off): 15-17 W

C11235
la source
Veuillez modifier votre question et ajouter la sortie de lspci -k | grep -EA2 'VGA|3D' la commande du terminal.
Pilot6
Oh, je vois que les 10xx n'en ont pas mà la fin même s'ils sont mobiles.
Pilot6
nvidia-primeNe les supporte probablement pas encore.
Pilot6
Eh bien, la chose intéressante est que cela fonctionne tant que je ne redémarre pas. Je peux utiliser l'igpu si je me déconnecte et me reconnecte. Mais dès que je redémarre, cela ne fonctionne plus. Et le GPU Nvidia fonctionne, et est pris en charge par le pilote.
C11235
1
J'ai utilisé le powertop pour surveiller la consommation d'énergie. Il affiche uniquement la consommation d'énergie si vous utilisez la batterie comme source d'alimentation. Jetez un œil à cette question ou à cette page de manuel pour plus d'informations.
C11235

Réponses:

3

Voici ma correction / solution de contournement pour le bogue:

Si vous souhaitez utiliser bumblebee au lieu de nvidia-prime, jetez un œil à la réponse fournie par @whizzzkid ci-dessous.

Testé avec Kubuntu 16.10 64 bits avec KDE Plasma Version.7.5 et KDE Frameworks Version 5.26.0. Les étapes suivantes fonctionnent pour moi. J'espère qu'ils travailleront aussi pour vous, mais je ne peux pas garantir cela et n'assumer aucune responsabilité s'ils ne le font pas. Mais je suis heureux de vous aider si vous laissez un commentaire.

Dans mon cas, le problème était que l'alternative de mise à jour / usr / lib / nvidia-XYZ-prime / ne fonctionnait pas du tout. Il est censé rediriger les appels vers le pilote intel-mesa, mais pour une raison quelconque, il ne l'a pas fait. C'est donc probablement un bogue dans les alternatives de mise à jour? Je n'ai toujours pas trouvé d'endroit pour signaler un bogue pour les alternatives de mise à jour. Veuillez commenter si vous pouvez m'aider.

J'ai fondamentalement modifié nvidia-prime un peu pour changer les alternatives de mise à jour directement au pilote intel-mesa au lieu de / usr / lib / nvidia-XYZ-prime /.

Important:

Avant d'appliquer l'une de ces étapes, assurez-vous de savoir comment accéder au mode de récupération sur votre PC. Si vous ne pouvez plus démarrer en raison de ce guide, vous pouvez toujours annuler les modifications du mode de récupération avec les commandes de la dernière section de ce guide. Consultez ce site Web pour savoir comment accéder au mode de récupération pour plus d'informations.

Si vous utilisez un système d'exploitation 32 bits , vous devez supprimer toutes les commandes contenant x86_64 à l' étape 4 et dans la section Comment annuler toutes ces modifications .


Étape 1:

Installez mon patch en utilisant une méthode simple fournie par @whizzzkid dans sa réponse ci-dessous:

cd /usr/bin
sudo mv prime-select prime-select.bkup
sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
sudo chmod 755 prime-select

Étape 2:

Appliquez mon deuxième patch pour réduire la consommation d'énergie en mode intel:

Vérifiez la version du pilote nvidia dont vous disposez. Par exemple avec la commande suivante:

$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  378.13  Tue Feb  7 20:10:06 PST 2017
GCC version:  gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

Dans ce cas, nvidia-XYZ est nvidia-378. Voir ce fil Stackoverflow .

Créez un fichier bash contenant le contenu suivant nommé par exemple poweroff.sh

#!/bin/bash
line=$(</etc/prime-discrete)
if [ "$line" == "off" ] 
   then
   rmmod nvidia-drm
   rmmod nvidia-modeset
   rmmod nvidia
   bash -c 'echo OFF > /proc/acpi/bbswitch'
fi 

Créez un deuxième fichier bash contenant le contenu suivant nommé par exemple poweron.sh et remplacez XYZ par votre numéro de version du pilote nvidia.

#!/bin/bash
modprobe nvidia-XYZ
modprobe nvidia-XYZ-modeset
modprobe nvidia-XYZ-drm
modprobe nvidia-XYZ-uvm
echo ON > /proc/acpi/bbswitch

En mode Intel, vous devez exécuter le premier script après vous être connecté avec sudo et le second avant de vous déconnecter avec sudo (sinon votre ordinateur portable se bloquera probablement, comme dans mon cas). Je viens de les exécuter avec sudo bash FILENAME.

Jusqu'à présent, je n'ai pas pu démarrer automatiquement ces scripts en tant que root à la connexion et avant la déconnexion. Cependant, cela pourrait être possible avec upstart, comme l' a souligné @Fiximan . Je pourrais mettre à jour cette réponse à nouveau dans le futur si j'y parviens.


(probablement) Erreurs spécifiques à KDE Plasma:

Il y a toujours un bug que je n'ai pas pu corriger dans KDE Plasma: chaque fois que je passe de Nvidia à Intel après avoir démarré le PC en mode nvidia, ksmserver se bloque et le PC est rendu inutilisable, je dois le désactiver en appuyant sur le bouton d'alimentation pendant environ 5-10 secondes. Il en résulte parfois que les alternatives de mise à jour sont remplacées par nvidia-prime au lieu d'Intel-mesa, ce qui conduit à un écran noir au démarrage .

Si vous êtes affecté par le bogue ksmserver, veuillez contribuer au rapport de bogue officiel sur bugs.kde.org .

Cependant, le problème que le PC ne s'arrête pas peut être évité en sélectionnant toujours le mode Intel avant l'arrêt , même lorsque vous utilisez le mode NVIDIA. Si vous faites cela, tout fonctionne comme il se doit en premier lieu et vous n'avez pas à éteindre votre PC en appuyant longuement sur le bouton d'alimentation, sauf après avoir appliqué ce guide en mode nvidia.

Une solution de contournement simple pour le bogue d'écran noir au démarrage consiste à supprimer complètement les alternatives de mise à jour qui ne fonctionnent pas:

Étape 1:

Vous pouvez accéder à nouveau à votre PC après être entré en mode de récupération, sélectionner le shell de commande racine et exécuter les 2 commandes suivantes:

mount -o remount,rw /
prime-select nvidia

Étape 2:

Exécutez les commandes suivantes:

sudo update-alternatives --remove i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
sudo update-alternatives --remove i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf
sudo update-alternatives --remove x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf
sudo update-alternatives --remove x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf

Comment annuler toutes ces modifications

Exécutez simplement les commandes suivantes:

sudo rm /usr/bin/prime-select
sudo mv /home/YOUR-USERNAME/prime-select.backup /usr/bin/prime-select
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_GL.conf i386-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/i386-linux-gnu_EGL.conf i386-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/alt_ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf x86_64-linux-gnu_gl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
sudo update-alternatives --install /etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf x86_64-linux-gnu_egl_conf /usr/lib/nvidia-XYZ-prime/ld.so.conf 8603
C11235
la source
1
Vérifiez ma réponse ci-dessous.
whizzzkid
Hé mec, merci beaucoup pour ça! Lorsque j'exécute votre script de mise hors tension, mon com se bloque (avant la déconnexion). Y a-t-il une autre solution?
Wboy
Malheureusement, je ne connais aucun autre correctif. Cela fonctionne dans mon cas. Votre problème se produit également dans mon cas, comme je l'ai écrit, mais seulement la première fois. Comme je l'ai écrit, vous devez revenir à Intel avant de vous déconnecter. Ensuite, cette erreur ne se produira pas. (Au moins dans mon cas).
C11235
Salut @ C11235 Merci pour le correctif. Je voudrais vous demander quelque chose: La première fois que j'installe le pilote nvidia par défaut est défini dans nvidia. Alors quand dois-je exécuter le script? et que voulez-vous dire par connexion en tant que root?
Glats
Malheureusement, cette partie de ma réponse était un peu vague. Je voulais dire que vous vous connectez puis exécutez le script en tant que root (par exemple avec sudo). Vous devez exécuter le script lorsque vous venez de vous connecter et que vous êtes déjà passé en mode Intel. Cela désactive complètement temporairement le GPU nvidia. Le second doit être exécuté avant la déconnexion en mode intel.
C11235
2

le patch de @ C11235 fonctionne, maintenant je peux basculer entre nvidia et intel, mais cela ne réduit pas la consommation d'énergie. : - / ce qui signifie que les deux sont toujours en cours d'exécution.

BTW c'est un moyen plus facile de le faire.

cd /usr/bin
sudo mv prime-select prime-select.bkup
sudo wget https://raw.githubusercontent.com/C11235/nvidia-prime-bugfix/master/prime-select
sudo chmod 755 prime-select
whizzzkid
la source
Je vous remercie! Malheureusement, vous avez raison, voir ma question mise à jour. Cela vous dérange si je mets à jour ma réponse pour inclure votre méthode d'installation plus facile?
C11235
@ C11235 oh oui bien sûr. J'ai pu tout comprendre: gist.github.com/whizzzkid/37c0d365f1c7aa555885d102ec61c048 J'utilise 5,8 W en veille en ce moment.
whizzzkid
OK, c'est bien! J'ai vérifié vos instructions et la cause de la réduction de la consommation d'énergie est la même que dans mon cas. J'ai écrit un script qui utilise bbswitch pour désactiver le GPU nvidia si le mode Intel est sélectionné par sélection de choix. Dans mon cas, cela est plus pratique, car j'ai un moniteur externe et utilise presque exclusivement le mode nvidia, c'est pourquoi je voulais utiliser nvidia-prime au lieu de bumblebee. De plus, les performances lors de l'utilisation de nvidia-prime sont censées être meilleures que lors de l'utilisation de bumblebee.
C11235
2

Solution pour ne pas démarrer après le passage à la carte vidéo Intel:
Ajoutez les paramètres de démarrage du noyau:

acpi_osi=! acpi_osi="Windows 2009"

La raison de ce problème: bug # 156341 dans le noyau
Source de la solution: lien

certains plus détaillés, il sera peut-être plus facile à comprendre:

sudo echo -e "GRUB_CMDLINE_LINUX_DEFAULT='acpi_osi=! acpi_osi='Windows 2009''"  | sudo tee -a /etc/default/grub
sudo update-grub
Maxim Akristiniy
la source
Dans sa forme actuelle, votre réponse n'est pas aussi bonne qu'elle pourrait l'être. Pourriez-vous revoir Comment écrire une bonne réponse et envisager d'élargir votre réponse
J. Starnes
cela a réellement fonctionné pour moi, mais la réponse pourrait être améliorée. Je suggérerai l'amélioration
Vladyslav Matviienko
1

Problème possible avec le 2e correctif: dernière commande des invites de script "poweroff"

    bash: /proc/acpi/bbswitch: No such file or directory

Apparemment, lorsque je redémarre en mode Intel (le changement de mode n'entre pas en vigueur jusqu'à ce que je redémarre, je ne sais pas si c'est normal), le module bbswitch n'est même pas chargé. Il n'y a donc pas de fichier bbswitch et aucun moyen de désactiver le GPU nvidia.

J'utilise:

  • Ordinateur portable MSI (GL72 7RDX)
  • GPU intégré: Intel® HD Graphics 630 (Kaby Lake GT2)
  • GPU séparé: Geforce GTX 1050
  • Système d'exploitation: Ubuntu 16.04 lts

Solution à ce problème:

Modifiez le fichier / etc / modules (avec les privilèges root) et ajoutez la ligne

    bbswitch

Maintenant, bbswitch est opérationnel même lorsque je démarre en mode Intel, et le deuxième correctif de C11235 fonctionne très bien.

Hugo
la source