OS X El Capitan MacBook Pro - Deckel zuklappen und damit WLAN deaktivieren

francwalter

Aktives Mitglied
Thread Starter
Dabei seit
25.04.2008
Beiträge
953
Reaktionspunkte
39
Hallo

gibt es auf dem MacBook Pro (mid 2009, OS 10.11.6) eine Möglichkeit, beim Zuklappen des Deckels das WLAN zu deaktivieren und beim Aufklappen wieder automatisch anzuschalten? Oder beim Aktivieren des Ruhezustands (der ja beim Zuklappen auch getriggert wird)?
Etwa per Skript oder so? Das Ereignis 'Deckel Zu' irgendwie abfangen und auswerten?

In den Einstellungen scheint es nicht zu gehen, jedenfall sehe ich dort allenfalls den (aktiivierten) Schalter:

(Apfelicon) > Systemeinstellungen ... > Energie sparen > Ruhezustand bei Netzwerkzugriff beenden

Der das aber nicht macht, sondern das WLAN anlasst, habe die CheckBox jetzt aber mal deaktiviert.

Ich hab nämlich immer wieder Netzwerkzugriffe im Ruhezustand, bei zugeklapptem Deckel und mitunter wird dann das MacBook recht heiß.
Dabei bräuchte ich das gar nicht, wenn es zugeklappt ist. Ausschalten will ich aber auch nicht, das dauert mir dann beim Booten zu lange.
Derzeit mach ich es händisch, aber das ist mir etwas zu umständlich auf Dauer.

Danke für Tipp

franc

EDIT: den Befehl, das WiFi umzuschalten habe ich zwar schon bei Esche's IT-Blog gefunden:

Code:
networksetup -getairportpower en1 | grep "On" && networksetup -setairportpower en1 off || networksetup -setairportpower en1 on

funktioniert auch (mein WiFi-Adapter heißt en1), aber ich müsste es eben per Deckel auf/zu triggern irgendwie.
Falls das überhaupt geht.
 
Zuletzt bearbeitet:
Eigentlich sollte das Ding im Ruhezustand gar nichts machen. Da ist was faul.
 
Habe das hier gefunden:

If your Mac enters its full sleep state, then your network connections will be disconnected. Your Mac can not be connected to a WiFi network and be asleep at the same time.

You can avoid full sleep by setting your Computer Sleep to Never. Your MacBook will then sleep all the sub-systems possible when idle, but will remain awake enough to maintain a WiFi network connection.

PowerNap is not the same as full sleep. This is a special state controlled by Apple and, for now, available only to Apple's chosen processes.

Vielleicht hilft das ja.
 
Ich habe es auf "Never", weil ich gelegentlich Sachen runterladt, da will ich natürlich nicht, dass "er" plötzlich einschlaft und die Downloads abbrecht.

Aber ich hab jetzt halt ein Shortcut auf ein AS mit Spark (falls mal offline: Spark in Wayback) gemacht:
Code:
do shell script "networksetup -getairportpower en1 | grep 'On' && networksetup -setairportpower en1 off || networksetup -setairportpower en1 on"

Aber das muss ich immer noch händisch betätigen, ich hätt schon gern eine Automation beim Zuklappen des Deckels, weil ich das natürlich dann auch mal vergess, das Kürzel (ctrl+alt+W) zu drücken.
 
Wenn der Mac beim Schliessen des Deckels in den Ruhezustand geht, könnte Dir sowas wie sleepwatcher helfen?
 
Das wäre es genau! Das probiere ich aus, vielen Dank schon mal!

Jedenfalls bleibt der Mac jetzt kühl, wenn das WLAN aus ist im Schlaf.
 
So, jetzt endlich dazu gekommen:
Also ich habe sleepwatcher gemäß der Anleitung im ReadMe.rtf für den lokalen Benutzer eingerichtet und 2 Skripte erstellt bzw. das plist angepasst.

1. /Users/f/.sleep.sh:
Code:
#!/bin/bash

# fcw: 2019-01-25: beim Ruhezustand soll das WLAN ausgeschaltet werden, dazu sleepwatcher verwendet, lauft als Daemon in:
# /Users/f/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist

# wlan aus
networksetup -setairportpower en1 off


2. /Users/f/.wakeup.sh:
Code:
#! /bin/bash

# fcw: 2019-01-25: beim Aufwachen soll das WLAN angeschaltet werden, dazu sleepwatcher verwendet, lauft als Daemon in:
# /Users/f/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist

# 3 x ein Ton spielen
for (( c=1; c<=3; c++ ))
do
  afplay /System/Library/Sounds/Ping.aiff
done

# wlan an
networksetup -setairportpower en1 on


3. /Users/f/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>de.bernhard-baehr.sleepwatcher</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/sbin/sleepwatcher</string>
        <string>-V</string>
        <string>-s ~/.sleep.sh</string>
        <string>-w ~/.wakeup.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

Scheint zu funktionieren :)
Ein Sound (testweise) im .sleep.sh Skript wird nicht abgespielt, das wirft einen Fehler. Brauche ich aber nicht. Deaktiviert ist das WLAN jedenfalls, wie ich beim Aufwecken sehe. Dann kommt der Aufwach-Sound und das WLAN wird aktiviert.

Der Ruhezustand wird ja nicht nur automatisch in den Energieeinstellungen (bei mir im Netzbetrieb deaktiviert) eingeleitet, sondern auch wenn man den Deckel zuklappt (oder über das Apfelmenü).
 
Hm, so zuverlässig ist es nicht.

Anscheinend wird das sleep Ereignis auch gerne mal beim Aufwachen noch mal zusätzlich nachgeholt, was natürlich keinen Sinn ergbit. In der Folge wird das WLAN dann beim Zuklappen schon ausgeschaltet, was immerhin das wichtigste ist. Beim Aufklappen wird es dann aktiviert (durch wakeup.sh) und dann aber gelegentlich gleich wieder deaktiviert.
 
Ich habe das wakeup Skript jetzt ein bisschen geändert, das war mir zu lästig, dass es immer wieder mal doch wieder ausgeschaltet hatte, nachdem es erst eingeschaltet wurde:

Code:
#! /bin/bash

# fcw: 2019-01-25: beim Aufwachen soll das WLAN angeschaltet werden, dazu sleepwatcher verwendet, lauft als Daemon in:
# /Users/f/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist

# wlan gleich an
networksetup -setairportpower en1 on

# 3 x ein Ton spielen
for (( c=1; c<=3; c++ ))
do
  afplay /System/Library/Sounds/Ping.aiff
done

# wlan sicherheitshalber noch mal an, weil oft wieder ausgeschaltet wurde
networksetup -setairportpower en1 on

Also nicht nur das WLAN-Anschalten vor das Tonabspielen verschoben, sondern auch nach den 3 Tönen noch mal den Anschaltbefehlt ausgeführt.
So sollte es jetzt wirklich gehen :)
Übrigens, der Ton (3 x) ist nützlich, so weiß ich, dass das Skript auch lauft. Langfristig vielleicht dann mal deaktivieren den Ton und statt dessen eine Verzögerung setzen (sleep o.ä.).
 
Zuletzt bearbeitet:
Zurück
Oben Unten