È ansible configurare la Condivisione Internet per consentire al computer di dormire?

TL: La condivisione di Internet sta impedendo al mio Mac di dormire. Ho bisogno di dormire manualmente il sistema su base regolare. Voglio un modo per configurare la Condivisione Internet per impedire il sonno.

Ho un iMac in casa nella mia camera da letto troppo lontano dal mio router, e non posso usare la copertura 3G wireless, anche qui è terribile, quindi ho abilitato la condivisione di Internet in modo da poter utilizzare il mio iPhone / iPad collegato attraverso il mio iMac.

Al lavoro sono in una networking aziendale e la connessione wireless è un po 'zoppa e troppo restrittiva, quindi ho anche abilitato Internet Sharing sul mio MacBook Pro, in modo che il mio iPhone possa raggiungere roba interna.

Il problema è: quando colpisco + + (o > Sleep) nessuno computer va a dormire come desidera; ovvero se non faccio prima distriggersre la condivisione di Internet.

A casa voglio che il computer dormi mentre dormo (salva potenza + più silenzio) e al lavoro quando vado a casa voglio che dormi troppo, quindi non devo chiudere tutte le applicazioni connesse (Adium, Colloquy, ecc.) E riapriremo di nuovo il giorno successivo.

Come posso configurare il pmset o la condivisione di Internet in modo da poter dormire il mio computer senza eseguire questo problema?

Nota: ho già usato pmset per verificare se esistessero altre ragioni e che il peggioramento del pid è sempre com.apple.InternetSharing .

Modifica: mi rendo conto che dormire il computer renderà imansible utilizzare la condivisione di Internet. Voglio che dormi completamente e voglio che la condivisione di Internet sia di nuovo solo quando il computer si risveglia.

Ho sperimentato l'utilizzo di ControlPlane per get quello che vuoi. Il mio risultato preliminare è che farà quello che vuoi.

ControlPlane rileva le modifiche apportte al sistema chiamato "fonte prove". Le modifiche vengono valutate con 'regole' che definiscono una modifica in 'context'. Associati ad each context sono "azioni".

Una delle "prove" è un evento di sonno / veglia. Quindi ho configurato una regola in modo che in un evento di sonno (ad esempio, hai fatto clic sul dormire nel menu Apple), viene triggersto il context "Sleepy Time". E per questo context ho usato l'azione 'ToggleInternetSharing' per spegnere.

Dopo aver fatto clic su Sleep, ho un avviso che dice che la condivisione di Internet è distriggersta e dopo un po 'di tempo (sembra per sempre, ma è probabilmente solo 10 o 20 secondi) il Mac va a dormire.

E ho una seconda regola in modo che in un evento di risveglio viene triggersto il context "Sveglia" e questo ha l'azione per impostare 'ToggleInternetSharing'.

Le mie regole e azioni:

immettere qui la descrizione dell'immagineimmettere qui la descrizione dell'immagine

Provalo!

Questo è solo graffiare la superficie di ciò che ControlPlane può fare.

Se si sta eseguendo Lion, InternetSharing chiude esplicitamente SystemSleep . Dai un'occhiata a:

 strings /usr/libexec/InternetSharing | grep SystemSleep 

L'output di questo command: DenySystemSleep è la prova che InternetSharing blocca intenzionalmente la possibilità del kernel di andare a dormire. C'è una semplice spiegazione a questa protezione: una volta che InternetSharing viene licenziato, i client di questo Mac possono usarlo come router per accedere a Internet. Un sacco di cose possono essere automaticamente in esecuzione in cima a questa connettività Internet senza alcuna conoscenza della persona davanti allo schermo.

Questa connessione dovrebbe essere interrotta solo dall'amministratore del sistema che lo ha avviato e non da alcun comportmento del sistema automatico.

Questo è un comportmento sicuro.

Quindi il metodo corretto per garantire che InternetSharing è distriggersto quando il sonno Mac pianifica 4 events nel seguente ordine:

 InternetSharing off system sleep system wakeup InternetSharing on 

Questa è la programmazione offerta da ControlPlane .

Non è pratico avere un Mac con la condivisione di Internet abilitato a dormire.

La funzionalità Condivisione Internet è la versione software di un router: Funziona come gateway per Internet, un server DHCP, un firewall e un forwarder DNS. Funzioni proprio come i router che puoi acquistare dal tuo rivenditore locale; ed è gratuito.

Tuttavia, c'è un enorme inconveniente: se il Mac che funge da gateway è spento o addormentato, le altre macchine non possono essere in linea.

Questo è il motivo per cui la condivisione di Internet impedisce alla macchina di dormire.

Ma posso condividere file / iTunes / Screen quando dorme

Sì, puoi condividere tutte quelle cose e altro. Tuttavia, quando si accede a questi file il Mac si sveglia . Questo è chiamato Wake On Demand e Bonjour Sleep Proxy .

Quando il Mac è addormentato, mantiene la connessione di networking in qualche modo "in diretta"; sta ascoltando i pacchetti Bonjour per svegliare il computer. Questo viene gestito dal dispositivo Airport (l'adattatore di networking) stesso; non il computer. Quando riceve il "pacchetto di risveglio" il Mac si sveglia e si può iniziare la condivisione delle risorse.

Bonjour 1 è un servizio di scoperta a zero configurazioni che utilizza il servizio di dominio multicast (mDNS) che è un protocollo UDP 2 (è trasmesso e non può essere instradato), che è un piccolo, senza asteritto e un minimo di trasporto orientato ai messaggi.

Fondamentalmente, UDP (basato su Bonjour) è perfetto per submit un messaggio al computer per dire "sveglia!"

Per cercare l'Internt (utilizzare un computer dietro il gateway Mac), è necessario lo stack completo di protocollo basato su TCP . Avrà bisogno di DHCP, NAT, firewall, ecc., Il che significa che dovrà eseguire tutti questi servizi prima di consentire ai clienti di navigare sul web. Questo introdurrà una grande quantità di latenza.

E tornando ad un approccio più pragmatico, se il tuo Mac è andato a dormire e ha agito come un gateway, non sarebbe mai andare a dormire o sarebbe in su e in basso come qualcuno con un cattivo caso di insonnia.


1 Bonjour è l'implementazione di reti di configuration zero (zeroconf) di Apple, un gruppo di tecnologie che includono la scoperta dei servizi, l'assegnazione degli indirizzi e la risoluzione di un hostname. Bonjour individua dispositivi come printingnti, altri computer ei servizi che questi dispositivi offrono su una networking locale utilizzando i record di servizio multicast Domain Name System (mDNS).

2 UDP è un protocollo minimo del livello di trasporto orientato ai messaggi. UDP non fornisce alcuna garanzia al protocollo di livello superiore per la consegna dei messaggi e lo strato UDP non mantiene uno stato di messaggi UDP una volta inviati. È semplice, adatto per il bootstrap o per altri scopi senza uno stack di protocollo completo, ad esempio DHCP e Trivial File Transfer Protocol.

Quando l'unità di gestione dell'alimentazione del computer rende il dispositivo dorme, entra in modalità a bassa potenza. Il codice eseguibile medio sul computer non viene eseguito nel modo normale: il computer mantiene abbastanza potenza per aggiornare la memory (se necessario) e poco altro. Non sarai in grado di impegnarsi in un computer informatico generale mentre il computer dorme.

Tuttavia, c'è una buona alternativa che si dovrebbe guardare. Invece di dormire l'intera unità, controllare il sonno del display in System Preferences -> Energy Saver . Nel mio caso di utilizzo, ho un setup a caldo angolo (che puoi abilitare in System Preferences -> Desktop & Screen Saver -> Screen Saver ) in modo che quando andrò a pranzo e ho bisogno di bloccare il mio schermo e / o basta mettere il display a dormire, mi muovo nell'angolo in basso a sinistra. Funziona bene per me, il computer non ritorna da un sonno-routine e tutti i processi a lungo trascorso ho dimenticato non sono interrotti. Nel tuo caso, questo significa che il tuo hotspot WiFi non verrà eliminato.

È ansible utilizzare Power Manager per mettere il proprio Mac in discesa dopo periodi di inattività. Power Manager può sopprimere i processi e le applicazioni che bloccano il sonno inattivo, incluso Internet Sharing.

La guida utente cammina attraverso l'impostazione:

Un sonno migliore di inattività triggersto

Power Manager offre un'alternativa. Forniamo un sonno innescato da inattività. L'inattività viene misurata diversamente dal tempo di inattività; l'inattività è una misurazione più semplice determinata esclusivamente dall'attività dell'utente.

In alternativa, la seguente ricetta mostra come creare un evento Power Manager per mettere il tuo Mac a dormire dopo un periodo di inattività .

Power Manager: spegne dopo l'attività di inattività

Disclaimer: Io lavoro per la società che sviluppa Power Manager.