
[pkg] Kit Vostro 3700
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [pkg] Kit Vostro 3700
Sinon, pour attendre X, tu as des exemples là: http://forums.archlinux.fr/post62989.html#p62989 

«The following statement is not true. The previous statement is true.» 

Re: [pkg] Kit Vostro 3700
Le démon n'a qu'une seule vraie fonction : start .
Si le fichier /etc/switch == 1 il doit exécuter le code suivant :
Sinon, il doit attendre le démarrage de X, et exécuter :
Puis il doit attendre le DE et envoyer une notification spécifiant que la carte NVidia a bien été stoppé.
J'ai lu dans le wiki qu'il fallait au minimum 3 actions : start, stop et restart. Seule start sert, car il n'y a rien à arrêter ou à redémarrer (il faut reboot (ou en tout cas tuer X) pour faire un changement de carte graphique)
Voici mon daemon à l'heure actuelle :
Il ne fonctionne pas :/
Edit :merci @FoolEcho pour l'attente de X
Si le fichier /etc/switch == 1 il doit exécuter le code suivant :
Code : Tout sélectionner
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
Code : Tout sélectionner
/usr/bin/test_off.sh
J'ai lu dans le wiki qu'il fallait au minimum 3 actions : start, stop et restart. Seule start sert, car il n'y a rien à arrêter ou à redémarrer (il faut reboot (ou en tout cas tuer X) pour faire un changement de carte graphique)
Voici mon daemon à l'heure actuelle :
Code : Tout sélectionner
#!/bin/bash
daemon_name=hybrid-switch
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
start)
stat_busy "Switching to NVidia Card"
if [[ `cat /etc/switch` == "1" ]]
then
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
stat_done
else
(export DISPLAY=":0.0"
while ! xset -q >& /dev/null; do
sleep 2
done
/etc/bin/test_off.sh
sleep 10
notify-send -i /usr/share/icons/default.kde4/48x48/apps/hwinfo.png "<b>Hybrid Switch</b>" "NVidia discrete card shutted down"
) &
ck_status "No"
fi
;;
stop)
echo "Cannot stop this daemon"
exit 1
;;
restart)
echo "Cannot restart this daemon"
exit 1
;;
*)
echo "usage: $0 {start}"
esac
Edit :merci @FoolEcho pour l'attente de X

- benjarobin
- Maître du Kyudo
- Messages : 17576
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [pkg] Kit Vostro 3700
Code : Tout sélectionner
#!/bin/bash
daemon_name=hybrid-switch
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
start)
if [[ `cat /etc/switch` == "1" ]]
then
stat_busy "Switching to NVidia Card"
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
stat_done
else
stat_busy "Shutting down NVidia Card"
(export DISPLAY=":0.0"
export XAUTHORITY="/home/tonuser/.Xauthority"
while ! xset -q >& /dev/null; do
sleep 2
done
/usr/bin/test_off.sh
sleep 10
#Attendre que DE soit demarré... Il faudrait trouvé une solution
notify-send -i /usr/share/icons/default.kde4/48x48/apps/hwinfo.png "<b>Hybrid Switch</b>" "NVidia discrete card shutted down"
) &
#ck_status "No" #???? C'est quoi
stat_done
fi
;;
stop)
#echo "Cannot stop this daemon"
exit 1
;;
restart)
echo "Cannot restart this daemon"
exit 1
;;
*)
echo "usage: $0 {start}"
esac
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [pkg] Kit Vostro 3700
La fonction ck_status permet de définir un message personnalisé au lieu de "done" ou "busy" ou encore "fail" . Je l'ai trouvé dans le daemon d'apache (httpd).
Y'a quand même un problème avec ton daemon, c'est que il faut spécifier le user ... Pas génial pour un package !
Y'a quand même un problème avec ton daemon, c'est que il faut spécifier le user ... Pas génial pour un package !
Re: [pkg] Kit Vostro 3700
J'ai testé ton démon, il fonctionne pour le switch, par contre pour l'extinction ça ne fonctionne pas, un bel écran noir 

- benjarobin
- Maître du Kyudo
- Messages : 17576
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [pkg] Kit Vostro 3700
Ba j'ai juste automatisé ce que tu m'as dis de faire, rien de plus rien de moins
Je pense que tu as oublié de parler du switch des fichier de conf de Xorg

Je pense que tu as oublié de parler du switch des fichier de conf de Xorg
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [pkg] Kit Vostro 3700
Le switch des fichier c'est mon script qui s'en occupe :
Code : Tout sélectionner
#!/bin/bash
if [[ `whoami` != "root" ]]
then
echo "You have to run this script as root"
exit 1
fi
if [[ `cat /etc/switch` == "0" ]] && [[ $1 == "nvidia" ]]
then
echo "Switch config to NVidia GPU..."
echo "1" > /etc/switch
mv /etc/X11/xorg.conf.d/.20-nouveau.conf /etc/X11/xorg.conf.d/20-nouveau.conf
else
if [[ $1 == "nvidia" ]]
then
echo "NVidia GPU config already enabled"
fi
fi
if [[ `cat /etc/switch` == "1" ]] && [[ $1 == "intel" ]]
then
echo "Switch config to Intel IGP..."
echo "0" > /etc/switch
mv //etc/X11/xorg.conf.d/20-nouveau.conf /etc/X11/xorg.conf.d/.20-nouveau.conf
else
if [[ $1 == "intel" ]]
then
echo "Intel IGP config already enabled"
fi
fi
Re: [pkg] Kit Vostro 3700
Bon y'avait une boulette dans mes fichiers de conf (je faisais ça manuellement avant de mettre à jour mon script, mise à jour que j'ai faites juste avant de te poster le script)
Maintenant X démarre, par contre, au chargement de KDE, ça foire. Ca freeze complètement, impossible même de passer sous une console, un bon gros freeze. J'ai pensé que ça venait des 10 secondes, alors j'ai attendu au login une bonne trentaine de secondes, et non ça ne freeze pas, c'est donc bel et bien quand KDE démarre, que ça plante.
Maintenant X démarre, par contre, au chargement de KDE, ça foire. Ca freeze complètement, impossible même de passer sous une console, un bon gros freeze. J'ai pensé que ça venait des 10 secondes, alors j'ai attendu au login une bonne trentaine de secondes, et non ça ne freeze pas, c'est donc bel et bien quand KDE démarre, que ça plante.
Re: [pkg] Kit Vostro 3700
En inversant le sleep 10 (que j'ai passé à 30) et le test_off, KDE se lance correctement. Cependant on ne reçoit pas de notification :/ Je pense que ça vient de cette histoire de .Xautority
PS : je change le nom pour "hybrid-graphics-switch", au cas où il y ai des switch d'autres chose "who knows what"
Code : Tout sélectionner
#!/bin/bash
daemon_name=hybrid-graphics-switch
. /etc/rc.conf
. /etc/rc.d/functions
case "$1" in
start)
if [[ `cat /etc/hybrid-grapgics-switch` == "1" ]]
then
stat_busy "Switching to NVidia Card"
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
echo "IGD" > /sys/kernel/debug/vgaswitcheroo/switch
echo "DIS" > /sys/kernel/debug/vgaswitcheroo/switch
echo "\_SB.PCI0.P0P1.PEGP.MXMX" > /proc/acpi/call
echo "\_SB.PCI0.P0P1.PEGP.MXDS" > /proc/acpi/call
stat_done
else
stat_busy "Shutting down NVidia Card"
(export DISPLAY=":0.0"
export XAUTHORITY="/home/feng/.Xauthority"
while ! xset -q >& /dev/null; do
sleep 2
done
sleep 30
/usr/bin/test_off.sh
#Attendre que DE soit demarré... Il faudrait trouvé une solution
notify-send -i /usr/share/icons/default.kde4/48x48/apps/hwinfo.png "<b>Hybrid Graphics Switch</b>" "NVidia discrete card shutted down"
) &
#ck_status "No" #???? C'est quoi
stat_done
fi
;;
stop)
#echo "Cannot stop this daemon"
exit 1
;;
restart)
echo "Cannot restart this daemon"
exit 1
;;
*)
echo "usage: $0 {start}"
esac
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [pkg] Kit Vostro 3700
Je ne suis pas trop calé administration système, mais pour la notification, pam pourrait servir, non ? (ou alors suggèrer à l'utilisateur de rajouter le script de notification selon sa session: .bash_profile ou script de démarrage selon sa session...)
«The following statement is not true. The previous statement is true.» 

Re: [pkg] Kit Vostro 3700
Yay ! J'ai googlé PAM et je suis tombé la-dessus : http://linux-attitude.fr/post/pam_exec
Je script tout ça et je up
Je script tout ça et je up

Re: [pkg] Kit Vostro 3700
J'ai du mal :/ mon script n'est pas appelé lors de l'ouverture de la session :'(
Re: [pkg] Kit Vostro 3700
Le script en lui-même fonctionne mais pour la notification, il ne veut pas me l'afficher et m'affiche un code d'erreur 134. En exportant le display et le xautority il ne donne plus d'erreur, mais aucune notification ...
Par contre, je n'arrive pas à le faire appeler. Si j'ajoute :
Dans /etc/pam.d/login , ça ne fonctionne pas (le script n'est pas appelé). Par contre si je l'ajoute dans /etc/pam.d/su et que je fais un "su" dans la console, alors le script est appelé comme il se doit. What's wrong ?!!
Par contre, je n'arrive pas à le faire appeler. Si j'ajoute :
Code : Tout sélectionner
session optional pam_exec.so seteuid log=/var/log/hybrid-graphics-switch /usr/local/bin/discrete-card-shutdown
Re: [pkg] Kit Vostro 3700
Visiblement pam.d/login n'est appelé que lors de login via la console... Il y a bien un pam.d/kde mais ça nous ramène à l'inter-opérabilité ...
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [pkg] Kit Vostro 3700
Dommage, le coup paraissait parfait... Il faudrait donc rajouter la règle dans chaque méthode de login ? Pas pratique du tout (j'ai un peu regardé la doc, mais c'est assez... succinct sur le rôle des différents fichiers). Je crains qu'il n'y ait pas vraiment de solution propre à ce problème au niveau système (mais comme je t'ai dit, l'administration système n'est pas mon rayon).Feng a écrit :Visiblement pam.d/login n'est appelé que lors de login via la console

A mon sens, il faut à l'issue de l'installation du paquet que tu avertisses que l'utilisateur désirant avoir la notification (ou savoir quelle carte tourne) passe par ton petit script, quitte à l'installer pour son propre environnement graphique (~/.bash_profile pour la console ou scripts au démarrage avec gnome, kde, etc.)... c'est peut-être moins beau qu'une gestion automatique et centralisée mais c'est propre et facile à mettre en oeuvre... ça reste KISS, en somme.

«The following statement is not true. The previous statement is true.» 

Re: [pkg] Kit Vostro 3700
Il n'y a pas que la notification, il y a l'extinction de la carte dédiée pour sauver de l'énergie :/
Je pense qu'une solution serait de détecter la présence de login, xdm, gdm, kde et/ou de slim dans /etc/pam.d pour y installer la nouvelle règle. Et on affiche un message disant où la nouvelle règle a été insérée, et un message autre si aucun de ces fichier n'a été trouvé. Ce sont les Display Manager les plus utilisés du marché donc ça devrait convenir à 99% des utilisateur. Pour les 1% rien ne nous empêche de fournir la règle dans le message, ainsi que le chemin vers le script.
Je pense qu'une solution serait de détecter la présence de login, xdm, gdm, kde et/ou de slim dans /etc/pam.d pour y installer la nouvelle règle. Et on affiche un message disant où la nouvelle règle a été insérée, et un message autre si aucun de ces fichier n'a été trouvé. Ce sont les Display Manager les plus utilisés du marché donc ça devrait convenir à 99% des utilisateur. Pour les 1% rien ne nous empêche de fournir la règle dans le message, ainsi que le chemin vers le script.
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [pkg] Kit Vostro 3700
kdmFeng a écrit :Je pense qu'une solution serait de détecter la présence de login, xdm, gdm, kde et/ou de slim dans /etc/pam.d pour y installer la nouvelle règle. Et on affiche un message disant où la nouvelle règle a été insérée, et un message autre si aucun de ces fichier n'a été trouvé.
Sauf que dans la philosophie d'Arch, il me semble que ce n'est pas à toi de rajouter ladite règle dans des fichiers existants (c'est pourquoi j'insiste autant sur cet aspect).
Soit il y a moyen de notifier proprement par un fichier de configuration extérieur (ce qui n'a malheureusement pas l'air d'être le cas

«The following statement is not true. The previous statement is true.» 

Re: [pkg] Kit Vostro 3700
non non, kde pas kdm
Rien n'empêche de proposer de faire la manipulation pour lui lors de l'installation du paquet avec un texte expliquant le pourquoi du comment. C'est juste un echo après tout hein ...
Am I wrong ?
Rien n'empêche de proposer de faire la manipulation pour lui lors de l'installation du paquet avec un texte expliquant le pourquoi du comment. C'est juste un echo après tout hein ...
Am I wrong ?
- FoolEcho
- Maître du Kyudo
- Messages : 10711
- Inscription : dim. 15 août 2010, 11:48
- Localisation : Basse-Normandie
Re: [pkg] Kit Vostro 3700
Kdm est le gestionnaire de connexion de kde... ha nan, d'accord, tu parles des fichiers au niveau pam.d.Feng a écrit :non non, kde pas kdm

Tu as tort.Feng a écrit :Rien n'empêche de proposer de faire la manipulation pour lui lors de l'installation du paquet avec un texte expliquant le pourquoi du comment. C'est juste un echo après tout hein ...
Am I wrong ?

Quand pacman t'installe un paquet accompagné de configuration, il t'a déjà dit: "ah tiens, au fait , j'ai bidouillé trois/quatre lignes sur tes fichiers système pour que ce que je viens de t'installer fonctionne" ? Ben moi, jamais (et j'aime Arch pour ça aussi

Par contre, ce qui est acceptable selon moi et que tu fournisses un jeu de fichiers dans /etc/pam.d/ en expliquant pourquoi (par contre faut tester l'impact, je ne sais pas comment pam lit ces fichiers ... au pire tu colles ça dans /etc/skel/ ...

«The following statement is not true. The previous statement is true.» 

Re: [pkg] Kit Vostro 3700
Je vois pas où est le problème du moment qu'on lui PROPOSE et on lui DIT ce qu'on va faire.
Cela dit, c'est toi le guru hein, si tu dis qu'on lui donne juste les infos, ben il se débrouille avec
Le script d'extinction je l'installe du coup ? ou ... ou quoi ?
Cela dit, c'est toi le guru hein, si tu dis qu'on lui donne juste les infos, ben il se débrouille avec

Le script d'extinction je l'installe du coup ? ou ... ou quoi ?