Est-il possible de configurer le partage Internet pour permettre à l'ordinateur de dormir?

9

TL; DR: le partage Internet empêche mon Mac de dormir. Je dois régulièrement mettre le système en veille manuellement. Je veux un moyen de configurer le partage Internet pour arrêter d'empêcher le sommeil.

J'ai un iMac à la maison dans ma chambre trop loin de mon routeur, et je ne peux pas utiliser le sans fil, aussi, la couverture 3G est horrible, j'ai donc activé le partage Internet pour pouvoir utiliser mon iPhone / iPad connecté via mon iMac.

Au travail, je suis sur un réseau d'entreprise et le sans fil est quelque peu boiteux et trop restrictif, j'ai donc activé le partage Internet sur mon MacBook Pro là aussi, afin que mon iPhone puisse accéder à des éléments internes.

Le problème est: lorsque j'appuie sur + + (ou > Veille) aucun ordinateur ne se met en veille comme souhaité; sauf si je désactive d'abord le partage Internet.

À la maison, je veux que l'ordinateur dorme pendant que je dors (économise de l'énergie + plus de silence) et au travail en rentrant, je veux qu'il dorme aussi, donc je n'ai pas à fermer toutes les applications connectées (Adium, Colloquy, etc.) et rouvrir à nouveau le lendemain.

Comment puis-je configurer pmsetou partager Internet pour pouvoir mettre mon ordinateur en veille sans rencontrer ce problème?

Remarque: J'ai déjà utilisé pmsetpour vérifier s'il y avait d'autres raisons et l'infraction pidest toujours com.apple.InternetSharing.

Edit: Je me rends compte que dormir l'ordinateur rendra impossible l'utilisation du partage Internet. Je veux qu'il se mette complètement en veille et je souhaite que le partage Internet soit à nouveau activé uniquement lorsque l'ordinateur se réveille.

Irae Carvalho
la source
Ma sortie pour la commande ci-dessus est DenySystemSleep. Bien que j'ai trouvé la chaîne, je n'ai pas pu l'utiliser sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natpour modifier le comportement. Pourriez-vous développer votre réponse un peu?
Irae Carvalho
Ainsi, par exemple, vous voulez quelque chose qui désactivera le partage, puis dormira. Et quelque chose d'autre qui, automatiquement au réveil, activera le partage.
GEdgar
Exactement! C'est ce dont j'ai besoin
Irae Carvalho

Réponses:

8

J'ai expérimenté l'utilisation de ControlPlane pour obtenir ce que vous voulez. Mon résultat préliminaire est qu'il fera ce que vous voulez.

ControlPlane détecte les modifications de votre système appelées «sources de preuves». Les changements sont évalués avec des «règles» qui définissent un changement de «contexte». Des «actions» sont associées à chaque contexte.

L'une des «sources de preuves» est un événement sommeil / éveil. J'ai donc configuré une règle pour que lors d'un événement de sommeil (par exemple, vous avez cliqué sur sommeil dans le menu Apple), le contexte «Sleepy Time» soit déclenché. Et pour ce contexte, j'ai utilisé l'action «ToggleInternetSharing» pour désactiver.

Après avoir cliqué sur Veille, je reçois une alerte indiquant que le partage Internet est désactivé et après un certain temps (cela semble éternel mais ne dure probablement que 10 ou 20 secondes), le Mac se met en veille.

Et j'ai une deuxième règle pour que lors d'un événement de réveil le contexte 'Waking Up' soit déclenché et cela a pour action d'activer 'ToggleInternetSharing'.

Mes règles et actions:

entrez la description de l'image ici entrez la description de l'image ici

Essayez!

Cela ne fait qu'effleurer la surface de ce que ControlPlane peut faire.

Gilby
la source
Application incroyable! Ça a marché comme sur des roulettes! Merci beaucoup pour l'explication détaillée. De plus, j'ai vérifié que l'application est entièrement gratuite et open source. Pour moi, cela compte comme un avantage en faveur de son utilisation =)
Irae Carvalho
Je connais ControlPlane depuis un certain temps, mais je ne l'ai pas utilisé. Votre question était une excellente raison d'explorer ses capacités - merci pour cela.
Gilby
+1 ici ... Avec OS X Mavericks v10.9.4et fonctionne toujours comme un charme. Merci
OGM
Semble être une excellente application! Malheureusement, le basculement du partage Internet ne fonctionne pas à El Capitan pour le moment (probablement pas à Sierra non plus).
Winterflags
2

Si vous exécutez Lion, InternetSharingverrouille explicitement le SystemSleep. Jettes un coup d'oeil à:

strings /usr/libexec/InternetSharing | grep SystemSleep

Le résultat de cette commande: DenySystemSleep est la preuve qui InternetSharingbloque délibérément la possibilité pour le noyau de se mettre en veille. Il y a une explication simple à cette protection: une fois InternetSharingdéclenché, les clients de ce Mac peuvent l'utiliser comme routeur pour accéder à Internet. Beaucoup de choses peuvent être exécutées automatiquement au-dessus de cette connexion Internet sans aucune connaissance de la personne devant l'écran.

Cette connexion ne doit être interrompue que par l'administrateur du système qui l'a démarrée et non par un comportement automatique du système.

Il s'agit d'un comportement sûr.

Par conséquent, la bonne méthode pour s'assurer InternetSharingest désactivée lorsque le sommeil du Mac consiste à planifier 4 événements dans l'ordre suivant:

InternetSharing off
    system sleep
    system wakeup
InternetSharing on

Il s'agit de la planification offerte par ControlPlane.

dan
la source
Ma sortie pour la commande ci-dessus est DenySystemSleep. Bien que j'ai trouvé la chaîne, je n'ai pas pu l'utiliser sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.natpour modifier le comportement. Pourriez-vous développer votre réponse un peu?
Irae Carvalho
1
Je crois que @ daniel-azuelos signifie démontrer qu'InternetSharing est responsable. La commande qu'il suggère recherche dans le binaire InternetSharing et trouve la chaîne liée au blocage du sommeil. Cela permet de confirmer ce qui est susceptible d'être responsable du blocage du sommeil, mais pas d'obtenir le comportement souhaité.
Graham Miln
1

Il n'est pas pratique d'avoir un Mac avec partage Internet activé pour pouvoir dormir.

La fonction de partage Internet est la version logicielle d'un routeur: elle agit comme une passerelle vers Internet, un serveur DHCP, un pare-feu et un redirecteur DNS. Il fonctionne comme les routeurs que vous pouvez acheter chez votre revendeur local; et c'est gratuit.

Cependant, il y a un inconvénient majeur: si le Mac qui agit comme passerelle est éteint ou endormi, les autres machines ne peuvent pas se connecter.

C'est pourquoi le partage Internet empêche votre machine de se mettre en veille.

Mais je peux partager des fichiers / iTunes / écran quand il est endormi

Oui, vous pouvez partager toutes ces choses et plus encore. Cependant, lorsque vous accédez à ces fichiers, votre Mac se réveille . Cela s'appelle Wake On Demand et Bonjour Sleep Proxy .

Lorsque votre Mac est en veille, il maintient la connexion réseau quelque peu "active"; il écoute les "paquets" Bonjour pour réveiller l'ordinateur. Ceci est géré par le périphérique Airport (la carte réseau) lui-même; pas l'ordinateur. Lorsqu'il reçoit le "paquet de réveil", le Mac se réveille et vous pouvez commencer votre partage de ressources.

Bonjour 1 est un service de découverte de configuration zéro qui utilise les services de nom de domaine multicast (mDNS) qui est un protocole UDP 2 (il est diffusé et ne peut pas être routé) qui est un transport orienté message petit, sans état et minimal.

Fondamentalement, UDP (sur lequel est basé Bonjour) est parfait pour envoyer un message à votre ordinateur pour dire "Réveillez-vous!"

Pour parcourir l'Internt (utiliser un ordinateur derrière la passerelle Mac), vous avez besoin de la pile de protocoles complète basée sur TCP . Il aura besoin de DHCP, NAT, pare-feu, etc. ce qui signifie qu'il devra faire tourner tous ces services avant de permettre aux clients de naviguer sur le Web. Cela introduira une grande latence.

Et pour revenir à une approche plus pragmatique, si votre Mac s'endormait et agissait comme une passerelle, il ne s'endormirait jamais ou serait de haut en bas comme quelqu'un avec un mauvais cas d'insomnie.


1 Bonjour est l'implémentation par Apple du réseau à configuration zéro (zeroconf), un groupe de technologies qui inclut la découverte de service, l'attribution d'adresses et la résolution de noms d'hôte. Bonjour localise les périphériques tels que les imprimantes, les autres ordinateurs et les services que ces périphériques offrent sur un réseau local à l'aide d'enregistrements de service multicast Domain Name System (mDNS).

2 UDP est un protocole de couche de transport orienté message minimal. UDP n'offre aucune garantie au protocole de couche supérieure pour la remise des messages et la couche UDP ne conserve aucun état des messages UDP une fois envoyés. Il est simple, adapté au démarrage ou à d'autres fins sans pile de protocole complète, comme le DHCP et le Trivial File Transfer Protocol.

Allan
la source
Allan, merci pour votre perspicacité. Dans mon cas particulier, je n'utilise le partage Internet qu'à cause d'un MBP que je connecte à mon iMac via Thunderbolt Bridge pour bénéficier de l'Ethernet (100 Mbit au lieu de ~ 30 Mbit Wifi). Je n'utilise pas le partage Internet comme «routeur». Il serait donc pratique pour moi de trouver un moyen via script ou automatisation pour activer / désactiver le partage Internet (ou forcer le sommeil).
Winterflags du
Partage Internet est en train de votre Mac en un routeur - qui est la fonction de base de ce que fait le partage Internet.
Allan
Je comprends, mais je n'en parle pas en termes techniques. Je n'utilise le partage Internet que lors de la connexion du MBP via Thunderbolt Bridge à l'iMac, et cela n'a donc aucun sens de ne jamais mettre l'iMac en veille, qu'il soit connecté ou non. Par conséquent, recherchez une solution de contournement, impliquant peut-être des scripts.
Winterflags
1
Eh bien, vous n'allez pas annuler le partage Internet pour empêcher votre MBP de s'endormir, mais si vous voulez une "solution de contournement", regardez ici: apple.stackexchange.com/questions/2488/…
Allan
Merci - J'ai déjà essayé ces réponses et je n'ai pas pu les faire travailler avec El Capitan (peut-être à cause de SIP), mais je devrai enquêter plus avant.
Winterflags
1

Ré. ControlPlane, cela fonctionne pour moi ...

Deux contextes (tous deux identiques) Les règles Trois actions

CharlesB
la source
0

Lorsque l'unité de gestion de l'alimentation de votre ordinateur met l'appareil en veille, il passe en mode basse consommation. Votre code exécutable moyen sur l'ordinateur ne s'exécute pas de manière normale: l'ordinateur conserve suffisamment de puissance pour rafraîchir la mémoire (si nécessaire) et rien d'autre. Vous ne pourrez pas vous lancer dans l'informatique à usage général pendant que l'ordinateur dort.

Cependant, il existe une bonne alternative à envisager. Au lieu de dormir tout le logement, consultez l'écran Sleep in System Preferences -> Energy Saver. Dans mon cas d'utilisation, j'ai une configuration de coin chaud (que vous pouvez activer System Preferences -> Desktop & Screen Saver -> Screen Saver) de sorte que lorsque je vais déjeuner et que je dois verrouiller mon écran et / ou simplement mettre l'écran en veille, je me déplace vers le bas - coin gauche. Fonctionne bien pour moi, l'ordinateur ne revient pas d'une routine de sommeil et tous les processus de longue durée que j'ai oubliés ne sont pas interrompus. Dans votre cas, cela signifie que votre point d'accès WiFi ne sera pas supprimé.

zwerdlds
la source
1
C'est en effet très utile, j'utilise <kbd> ^ </kbd> + <kbd> ⇧ </kbd> + <kbd> ⏏ </kbd> pour ce faire. Mais ce n'est pas ce que je souhaite. Je n'ai pas besoin de partage Internet pendant que l'ordinateur dort. J'ai besoin de l'ordinateur pour vraiment dormir et même désactiver le partage et le wifi. Éditera ma question pour clarifier. Merci quand même =)
Irae Carvalho
0

Vous pouvez utiliser Power Manager pour mettre votre Mac en veille après des périodes d'inactivité. Power Manager peut annuler les processus et les applications qui bloquent la veille inactive, y compris le partage Internet.

Le guide de l'utilisateur explique comment configurer cela:

Une meilleure inactivité déclenchée par le sommeil

Power Manager offre une alternative. Nous fournissons un sommeil déclenché par l'inactivité. L'inactivité est mesurée différemment du temps d'inactivité; l'inactivité est une mesure plus simple déterminée uniquement par l'activité de l'utilisateur.

Alternativement, la recette suivante montre comment créer un événement Power Manager pour mettre votre Mac en veille après une période d'inactivité .

Power Manager: mise hors tension après une tâche d'inactivité

Avertissement: je travaille pour l'entreprise qui développe Power Manager.

Graham Miln
la source
Ne fonctionnait pas pour moi avec le partage Internet actif. -1 pour avoir perdu une heure de ma vie.
Winterflags
Que vouliez-vous réaliser et qu'est-ce qui n'a pas fonctionné pour vous?
Graham Miln
Identique à l'OP et à votre réponse. J'ai configuré le sommeil d'inactivité, dans l'espoir que cela forcerait le sommeil avec le partage Internet activé dans les Préférences Système> Partage . Ce n'était pas le cas, mais cela activerait le sommeil si le partage Internet était désactivé.
Winterflags
1
Power Manager envoie une demande de mise en veille à macOS. Si vous rencontrez des problèmes de sommeil, comme l'indique l'autre question, les mêmes problèmes de sommeil affecteront également les demandes de sommeil émises par des applications tierces. Bien sûr, je peux me tromper ou tout simplement me tromper dans ma compréhension de votre situation. J'espère que vous pourrez trouver une solution.
Graham Miln
1
macOS sera toujours en veille lorsqu'il est explicitement demandé de dormir - Finder> Apple (menu)> Sleep . Ne pas dormir est un comportement qui suggère des problèmes avec le Mac.
Graham Miln