Brauche Hilfe: Script für vgaswitcheroo tut nicht

chris1308

Moderator i.R.
Registriert
23 Jan. 2011
Beiträge
3.668
Hallo,

ich verzweifle etwas:
Ich versuche mittels vgaswitcheroo bei fedora ein Umschalten der Grafik zu ermöglichen, kenne mich aber nicht sehr gut in Linux aus.
Mein Ausführen des letzten Scripts passiert leider garnix.
Vielleicht gibt es einen Experten, der mir hilft?

Vorgegangen bin ich nach dieser Anleitung:
http://asusm51ta-with-linux.blogspot.de/

Zuerst:

sudo yum install wget gxmessage libnotify-bin

Dann nacheinander:

wget -P /home/"$USER"/.local/share/icons/ http://lh4.ggpht.com/_Dw3SC8gD9Jk/S-MGVcEfaiI/AAAAAAAAAIA/Pguy_uSeqSk/s800/hardware_down.png
wget -P /home/"$USER"/.local/share/icons/ http://lh5.ggpht.com/_Dw3SC8gD9Jk/S-MGVSO0JbI/AAAAAAAAAIE/_mdAnW7UiCQ/s800/hardware_up.png
wget -P /home/"$USER"/.local/share/icons/ http://lh4.ggpht.com/_Dw3SC8gD9Jk/TNbQXzK6hrI/AAAAAAAAAJ8/YlqK46MusuE/s800/hardware.png
wget -P /home/"$USER"/.local/share/icons/ http:
//lh5.ggpht.com/_Dw3SC8gD9Jk/S41DjuMt_MI/AAAAAAAAAF4/5pQm2-dX6Sg/s800/switch_before_shutdown.png

okay, soweit, so gut.

Danach weiter im terminal:

sudo gedit /etc/fstab

dort habe ich eingefügt:

none /sys/kernel/debug debugfs defaults 0 0

Wieder im terminal:

sudo gedit /etc/rc.d/rc.
local

Und eingefügt (christopher ist mein username):

chown christopher /sys/kernel/debug/vgaswitcheroo/switch
echo OFF > /sys/kernel/debug/vgaswitcheroo/
switch
 
Danach habe ich eine Datei mit dem Namen switch_between_cards.sh angelegt und folgendem Inhalt:

Code:
#!/bin/bash
# "switch_between_cards.sh" script by RM, with useful changes from LoLL
# version 20101107

pci_integrated=$(lspci | grep VGA | sed -n '1p' | cut -f 1 -d " ")
pci_discrete=$(lspci | grep VGA | sed -n '2p' | cut -f 1 -d " ")

integrated=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_integrated | grep -o -P ':.:...:')
discrete=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_discrete | grep -o -P ':.:...:')

name_integrated=$(lspci | grep VGA | sed -n '1p' | sed -e "s/.* VGA compatible controller[ :]*//g" | sed -e "s/ Corporation//g" | sed -e "s/ Technologies Inc//g" | sed -e 's/\[[0-9]*\]: //g' | sed -e 's/\[[0-9:a-z]*\]//g' | sed -e 's/(rev [a-z0-9]*)//g' | sed -e "s/ Integrated Graphics Controller//g")

name_discrete=$(lspci | grep VGA | sed -n '2p' | sed -e "s/.* VGA compatible controller[ :]*//g" | sed -e "s/ Corporation//g" | sed -e "s/ Technologies Inc//g" | sed -e 's/\[[0-9]*\]: //g' | sed -e 's/\[[0-9:a-z]*\]//g' | sed -e 's/(rev [a-z0-9]*)//g' | sed -e "s/ Integrated Graphics Controller//g")

if [ "$integrated" = ":+:Pwr:" ]
then
 integrated_condition="(*) - Power ON"
elif [ "$integrated" = ": :Pwr:" ]
then
 integrated_condition="( ) - Power ON"
elif [ "$integrated" = ": :Off:" ]
then
 integrated_condition="( ) - Power OFF"
fi

if [ "$discrete" = ":+:Pwr:" ]
then
 discrete_condition="(*) - Power ON"
elif [ "$discrete" = ": :Pwr:" ]
then
 discrete_condition="( ) - Power ON"
elif [ "$discrete" = ": :Off:" ]
then
 discrete_condition="( ) - Power OFF"
fi

gxmessage -center \
          -buttons "_Cancel":1,"switch to _Integrated":101,"switch to _Discrete":102 \
          -wrap \
          -title "Choose Hybrid Graphic Card" \
"Choose Hybrid Graphic Card
=================
Integrated: $integrated_condition : $name_integrated
Discrete: $discrete_condition : $name_discrete"


whichCard=$?

case "$whichCard" in

1)
 echo "Exit"
;;
101)
 if [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Pwr:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "switching to $name_integrated"
  echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
 elif [ "$integrated" == ": :Pwr:" ] && [ "$discrete" == ":+:Pwr:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "switching to $name_integrated"
  echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
  if [ "$DESKTOP_SESSION" = "openbox" ]
  then
   killall -u "$USER"
  elif [ "$DESKTOP_SESSION" = "gnome" ]
  then
   gnome-session-save --logout
  fi
 elif [ "$integrated" == ": :Off:" ] && [ "$discrete" == ":+:Pwr:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "switching to $name_integrated"
  echo ON > /sys/kernel/debug/vgaswitcheroo/switch
  echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
  if [ "$DESKTOP_SESSION" = "openbox" ]
  then
   killall -u "$USER"
  elif [ "$DESKTOP_SESSION" = "gnome" ]
  then
   gnome-session-save --logout
  fi
 elif [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Off:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "already switched to $name_integrated"  
 fi
;;
102)
 if [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Pwr:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "switching to $name_discrete"
  echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
  if [ "$DESKTOP_SESSION" = "openbox" ]
  then
   killall -u "$USER"
  elif [ "$DESKTOP_SESSION" = "gnome" ]
  then
   gnome-session-save --logout
  fi
 elif [ "$integrated" == ": :Pwr:" ] && [ "$discrete" == ":+:Pwr:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "switching to $name_discrete"
  echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
 elif [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Off:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "switching to $name_discrete"  
  echo ON > /sys/kernel/debug/vgaswitcheroo/switch
  echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
  if [ "$DESKTOP_SESSION" = "openbox" ]
  then
   killall -u "$USER"
  elif [ "$DESKTOP_SESSION" = "gnome" ]
  then
   gnome-session-save --logout
  fi
 elif [ "$integrated" == ": :Off:" ] && [ "$discrete" == ":+:Pwr:" ]
 then
  notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "already switched to $name_discrete"  
 fi
;;
esac

Gruß
Christopher
 
Zuletzt bearbeitet:
Welches Fedora nutzt du denn? Die Anleitung ist ja nun schon ziemlich alt...
 
Ja, ich nutze fedora 17.
Aber was hat sich den da ändern könne, was das Script behindert.
 
Mach mal um den Code [ Code] [ /code] .. ohne die Leerzeichen.

Was für ein Fehler kommt beim Ausführen?

Grüße
 
Ich komme nach dem Ausführen zu den Auswahlfenster:
Choose Hybrid Graphic Card
=================
Integrated: ( ) - Power ON : Intel Mobile 4 Series Chipset
Discrete: ( ) - Power ON : ATI Mobility Radeon HD 3650

dann drücke ich auf den Button discrete und nichts passiert

Kann es sein, das hier ein Problem vor liegt bzw. das unter fedora nicht tut?
Code:
gnome-session-save --logout
 
Zuletzt bearbeitet:
Was ich dir anbieten kann:

Was das debuggen wesentlich einfacher macht, ich komm mal per SSH bei dir drauf?!

Mein Vorschlag, damit du siehst was ich da tue, wir machen das per Teamviewer, dann geh ich von dir ausm Lan via putty (ssh) auf die Kiste und dann schauen wir mal.

Was du aber schon mal machen kannst, vielleicht reicht das schon:

Terminal auf, in den Pfad gehen wo das script liegt, und nen ./NAMEDESSCRIPTS (./ müssen sein).

Dann sollten auf der Konsole ggf. Errormeldungen kommen.

Grüße
 
Meinst du das so eingeben:
Code:
[christopher@ThinkpadT500 Vorlagen]$ '/home/christopher/Vorlagen/switch_between_cards.sh' /NAMEDESSCRIPTS
 
Ne:
Code:
#cd /home/christopher/Vorlagen/
#./switch_between_cards.sh

Alternativ:
Code:
#/bin/bash -x /home/christopher/Vorlagen/switch_between_cards.sh

(# symbolisch als prompt, also nicht mit eintippen)
Grüße
 
Achso, jetzt kappiere ich es erst.
NAMEDESSCRIPTS = Man sollte auch lesen.
Allerdings führe ich auf diese Weise bereits das script aus, ohne Fehlermeldungen.

Ich werde einfach mal nächste Woche auf dein Angebot mit der Verbindung zurückkommen, nur momentan habe ich keinen richtigen Internetzugang (nur übers Handy) und da wird das denke ich hacklig.

Trotzdem rießen Dank für deine Hilfe bisher.
 
Jo PM mich einfach an dann machen wa das "fix"

Grüße
 
Wir bruachen nur nen Windows PC mit Teamviewer + Putty.

So kannst du jeden Schritt von mir beobachten und siehst was ich tue.

Grüße
 
Wow, ich habe jetzt einfach mal Ubuntu getestet und das tut!
Allerdings nicht das Script, sondern die manuellen Befehle:
Zuerst muss ich immer root werden:
Code:
sudo -i
danach kann ich den Status auch problemlos erfragen (ging unter fedora auch):
Code:
cat /sys/kernel/debug/vgaswitcheroo/switch
Nun laufen leider beim Start immer beide, also wird in der Dokcing auf ATI getauscht:
Code:
echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
Und dann die Intel ausgeschaltet:
Code:
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

Nach einem Logout hat alles geklappt.

Nun hätte ich aber eine Frage:
Ich hätte gerne, sodass die ATI beim Start schon die aktive ist, dass Ubuntu, bevor es einen X-Server startet, die Intel ausschaltet und auf die ATI umschaltet.
Geht das?

Gruß
Christopher

P.S.: Cooles Gefühl, wenn man es zum laufen gebracht hat
 
Hehe ja sowas ist geil ;))

Damit hab ich halt gerechnet, das das Script an kleinen Stellen auf Fedora angepasst werden muss .. das ist, wenn man das Gerät vor der Nase (teamviwer + putty) hat kein PRoblem :))

Schreib dies einfach die in /etc/rc.local.

Die wird, üblicherweise, zwischen dem letzten Daemon und kdm/gdm gestartet. Sollte also passen.

Grüße
 
Muss ich dazu irgendwelche Dateirechte ändern oder kann ich einfach die beiden Zeilen reinschreiben?
 
WENN die Datei da ist einfach die 2 Zeilen da reinschreiben.

Unter Fedora zb muss man die Datei anlegen, ich weiß nicht wies unter Ubuntu aussieht.

"normalerweise" sollte sie da sein.

Grüße
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben