J'étais sous Linux Mint 19.2 il y a encore une semaine, avec Bumblebee fonctionnel et un driver Nvidia 390. Tout fonctionnait comme il fallait, optirun, primusrun, etc.
Après 3h de mise à jour, me voilà sous Mint 20. Quelques bricoles à reconfigurer (dont Bumblebee), mais tout fonctionne. Sauf le lancement des jeux Steam avec la carte Nvidia.
Quoi que je fasse, Steam utilise la carte Intel. J'ai tout essayé. Dans les options de lancement des jeux : optirun %command%, primusrun %command%
, avec ou sans LD_PRELOAD
ou d'autres variables. J'ai dû essayer tout ce qui est trouvable sur le net.
Lancer Steam avec optirun steam
, primusrun steam
, vglrun steam
… lance Steam sur la carte Intel.
J'ai même fait un STEAM_RUNTIME=0 steam
… mais ça boucle sur l'écran de connexion, sans erreur ni rien.
En désespoir de cause, j'ai enlevé Bumblebee pour essayer PRIME…
prime-select intel
empêche d'utiliser la carte Nvidia, alors qu'elle est active.
prime-select nvidia
la fait tourner tout le temps, ce qui est bruyant et fait chauffer le PC.
prime-select on-demand
fait planter Cinnamon au démarrage en mode de secours (parce qu'aucun accès à une quelconque accélération graphique, comme si je n'avais aucun pilote installé).
En voulant réinstaller Bumblebee à partir de là, j'ai réussi l'exploit d'éteindre complètement la carte Nvidia, de sorte qu'elle n'apparaissait plus dans lspci. Je suspecte PRIME de la cacher d'une manière ou d'une autre.
Ce qui rendait donc Bumblebee inopérant, puisqu'il ne trouvait pas la carte. Système bloqué.
Une relance de Timeshift et une réinstallation des paquets plus tard, me revoilà au point de départ.
La carte Nvidia est bien utilisée pour tout, sauf pour Steam. Et là, je ne vois pas comment faire. Au pire, je peux passer un profil MESA dans les options de lancement, ce qui lance certains jeux qui demandent un OpenGL > 4. Mais ça reste sur la carte Intel…
Comme le laptop va sur ses 9 ans, que la carte Nvidia (GeForce 610M) n'est pas prise en charge par des pilotes plus récents, je vois pas ce que je peux faire de plus.
Je suis bloqué. Ça me désespère. Certes, je pourrais installer PRIME et essayer un truc avec bbswitch
pour désactiver la carte Nvidia quand je suis sous Intel. Mais comme le offloading ne fonctionne pas, je devrai redémarrer à chaque fois que je veux jouer. Autant redémarrer sous Windows.
Même nvidia-xrun
ne fonctionne pas. J'arrive au mieux à lancer une openbox-session
qui débouche sur un X écran noir complet, pas de curseur.
Bon, ce qui ne fonctionnait pas avec nvidia-xrun
, c'est que Bumblebee met un blacklist dans /lib/modprobe.d/blacklist-nvidia.conf
. Suffit de l'enlever, et on peut lancer une session Openbox.
Steam ne se lance pas à partir du menu, mais j'arrive à le faire démarrer depuis Lutris. Et là, c'est magique, tout fonctionne. Enfin, presque tout, puisque certains jeux ont un fullscreen étrange (on dirait du fenêtré en 800x600, mais en fullscreen avec du noir tout autour…).
Reste donc à modifier nvidia-xrun
ou faire un wrapper pour modifier blacklist-nvidia.conf
dynamiquement.
Il y a un autre souci : le passage de l'X sous Nvidia à l'X sous Intel fait freeze ce dernier en écran noir. Il faut d'abord quitter le premier pour revenir au TTY, avant de switcher. C'est assez mineur en somme.
D'autres problèmes viennent d'Openbox, comme le fait qu'il récupère une liste d'applications à démarrer depuis Cinnamon (et si avoir Conky en double c'est pas gênant, Mailnag plante…), ou que le terminal ne s'ouvre pas…
Bon. Après une erreur de manip, j'ai réussi à émuler une sorte de PRIME offload avec Bumblebee et Steam.
Grosso modo, si l'on supprime le fichier /lib/modprobe.d/blacklist-nvidia.conf
et que l'on redémarre, on se retrouve avec sur la carte Intel, mais avec la possibilité d'utiliser optirun pour lancer Steam sur la carte Nvidia.
Ce serait l'idéal… Mais la carte Nvidia tourne en permanence, et impossible de l'éteindre.
Ça ne marche pas. J'ai tenté de réitérer l'expérience, et ça boot sur la carte Nvidia.
Pareil, j'ai retenté nvidia-xrun openbox-session
avec un script qui enlève le dossier ~/.config/autostart
et qui supprime le fichier blacklist-nvidia.conf
. Ça a fonctionné correctement, jusqu'à la fin de la session X, et au moment de décharger les modules : FATAL: module nvidia is in use
. Pourquoi, comment, aucune idée.
Il est possible que l'on doive faire cela dans un certain ordre :
- Supprimer
blacklist-nvidia.conf
- Lancer la session X
- Pendant que la session est lancée, remettre
blacklist-nvidia.conf
Ou alors il faut fermer Bumblebee. Aucune idée. Ça fait quatre jours que je suis dessus, je commence à fatiguer.
Il fallait fermer Bumblebee.
Ça a l'air de fonctionner. Plus ou moins bien, comme rustine. J'aime pas du tout cette solution, mais elle m'évite d'avoir à redémarrer.
Faut savoir que mon PC est un Asus. Qui va sur ses 9 ans. Qu'il a perdu sa gestion de l'énergie au niveau hardware un an après sa sortie : plus de veille, plus d'hibernation, plus d'extinction. Il peut juste démarrer et redémarrer. J'ai une ligne dans GRUB qui me permet de le laisser sur un écran pour l'éteindre physiquement sans casse.
J'ai aussi un script pour simuler une veille (extinction de tout ce qu'il est possible d'éteindre, CPU au minimum, ventilateur tournant moins vite mais prévenant quand même la surchauffe, etc.).
Donc dans les faits, il reste allumé en permanence, avec une conso électrique assez faible, ce qui me permet de reprendre mon boulot dès le réveil. Donc redémarrer ça signifie fermer tous les logiciels, enregistrer tout mon travail, et me souvenir de rouvrir le navigateur de fichiers et le terminal au bon endroit. Pour ça que j'évite au maximum.