Gegen Internetzensur
Stoppt die Vorratsdatenspeicherung! Jetzt klicken & handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
  • Flickr Photos

    www.flickr.com
18. Jul
Fre

mac@ubuntu:/$ Bluetooth-Switch per Software

Noch so’n Ding; Der Radio-Killswitch funktioniert wie erwartet, die Tastenkombination Fn-F5 auf dem Thinkpad allerdings nicht: Was die schaltet weiß ich nicht. (Beim letzten Mal war’s jedenfalls irgendwie blöde)

Dann habe ich irgendwo sinngemäß folgendes Stückchen Code gesehen:

  1. #!/bin/sh
  2. if [ `cat /proc/acpi/ibm/bluetooth | grep -c enabled` == 1 ]
  3. then
  4.   echo disable > /proc/acpi/ibm/bluetooth
  5. else
  6.   echo enable > /proc/acpi/ibm/bluetooth
  7. fi

(Gibt’s in etlichen Variationen, diese hier kommt von dort)
Allerdings fand ich es etwas blöde, jedes Mal dafür in ein Terminal wechseln zu müssen. Mit ein bissel Fingergeknote und unter Zuhilfenahme von Zenity (apt) gibt es dann jetzt auch folgendes Skript. Vielleicht hilft’s ja mal wem.

  1. #!/bin/sh
  2. # Schaltet den Bluetooth-Status um
  3.  
  4. # Bluetooth-Status holen
  5. DEVICE=/proc/acpi/ibm/bluetooth
  6. BTSTATE=`cat $DEVICE | grep status | awk ‘{print $2}’`
  7.  
  8. # Switchen je nach Status
  9. case "$BTSTATE" in
  10.         enabled)
  11.         TITLE="Bluetooth ist aktiviert"
  12.         QUESTION="Soll Bluetooth nun deaktiviert werden?"
  13. ;;
  14.         disabled)
  15.         TITLE="Bluetooth ist deaktiviert"
  16.         QUESTION="Soll Bluetooth nun aktiviert werden?"
  17. ;;
  18.         *)
  19.         zenity –warning –title="Bluetooth"text="Bluetooth-Status konnte nicht ermittelt werden."
  20.         exit 1
  21. esac
  22.  
  23. # Nachfragen
  24. zenity –question –title="$TITLE"text="$QUESTION"
  25. rc=$?
  26. if [ "${rc}" -eq "1" ]; then
  27.         echo "Abbruch. Keine Änderung."
  28.         exit 2
  29. fi
  30.  
  31. # Status ausgeben
  32. if [ "$BTSTATE" = "enabled" ]
  33.         then
  34.         echo "Deaktiviere Bluetooth."
  35.         BTSTATE="disable"
  36.  
  37.         else
  38.         echo "Aktiviere Bluetooth."
  39.         BTSTATE="enable"
  40. fi
  41.  
  42. # Status ändern
  43. gksu –description "Bluetooth-Umschalter"sh -c ‘echo -n "’$BTSTATE‘" > ‘$DEVICE

Dank gksu kommt nun eine Passworteingabe im Systemfenster und dank Zenity kann auch auf jede andere Form von Konsole verzichtet werden. Das ganze Skript als Starter irgendwo hin, am besten mit einem schönen Icon (bei mir /usr/share/icons/hicolor/48x48/apps/bluetooth.png) und ab die Post.

Die letzte Zeile hat mich übrigens ordentlich Nerven gekostet, ein einfaches gksu echo "guckstu" > /dies/das führt nämlich deswegen nicht zum Erfolg, weil dadurch nur der Befehl echo "guckstu" mit erhöhten Privilegien ausgeführt wird, nicht aber die Umleitung nach /dies/das. Dazu kommt, dass das Auslassen von -- das Tool gksu dazu veranlasst zu glauben, der Parameter -c gehöre ihm, weswegen der Aufruf abbricht (Leider, oder meinetwegen auch zum Glück, ist c keine Option für gksu).

2 Antworten zu „mac@ubuntu:/$ Bluetooth-Switch per Software”

  1. #1~mac

    Geil – danke! :smile:

  2. #2~Handschuh

    Hi,

    hier ist eine allgemeinere Variante Deines Skriptes, welches auch auf nicht IBM-Geräten funktioniert:

    #!/bin/sh
    # Schaltet den Bluetooth-Status um
    
    # Bluetooth-Status holen
    
    BTSTATE=`hciconfig`
    
    if [ -z "$BTSTATE" ] 
      then
        TITLE="Bluetooth ist deaktiviert"
        QUESTION="Soll Bluetooth nun aktiviert werden?"
      else 
        TITLE="Bluetooth ist aktiviert"
        QUESTION="Soll Bluetooth nun deaktiviert werden?"
    fi
    
    # Nachfragen
    zenity --question --title="$TITLE" --text="$QUESTION"
    rc=$?
    if [ "${rc}" -eq "1" ]; then
    echo "Abbruch. Keine Änderung."
    exit 2
    fi
    
    # Status ausgeben
    if [ -z "$BTSTATE" ] 
    then
    echo "Aktiviere Bluetooth."
    gksu --description "Bluetooth-Umschalter" -- sh -c 'modprobe hci_usb ; hciconfig hci0 up'
    else
    echo "Deaktiviere Bluetooth."
    gksu --description "Bluetooth-Umschalter" -- sh -c 'hciconfig hci0 down ; rmmod hci_usb'
    fi