La carte sans fil PCI de mon ordinateur de bureau recherche toujours les réseaux sans fil disponibles, mais je ne l'utilise que rarement. Puis-je garder la radio éteinte jusqu'à ce que j'en ai besoin?
la source
La carte sans fil PCI de mon ordinateur de bureau recherche toujours les réseaux sans fil disponibles, mais je ne l'utilise que rarement. Puis-je garder la radio éteinte jusqu'à ce que j'en ai besoin?
Il existe au moins deux tâches Upstart qui affectent l'état sans fil par défaut:
/etc/init/rfkill-restore.conf
restaure l'état de blocage progressif de toutes les radios à ce qu'elles étaient lors du dernier arrêt, comme enregistré dans /var/lib/rfkill/saved-state
./etc/init/network-manager.conf
démarre Network Manager qui à son tour restaure son idée de l'état sans fil à partir de /var/lib/NetworkManager/NetworkManager.state
.Si vous regardez ces deux configurations de travail, vous constaterez qu'elles n'ont aucune relation temporelle , ce qui me semble être un défaut de conception. Je suppose que cette condition de course est rarement un problème car elle /etc/init/rfkill-restore.conf
est beaucoup plus simple et a moins de conditions de départ.
Toutes les solutions pour appliquer un défaut sans fil que j'ai vu essayer d'utiliser /etc/rc.local
, y compris la solution «moderne» proposée par @Lekensteyn et @ rubo77. Malheureusement, cette solution ne fonctionne pour moi sur aucun des deux ordinateurs portables que j'ai essayés. Cela n'est pas particulièrement surprenant car /etc/rc.local
il n'y a pas non plus de relation temporelle que je puisse trouver avec /etc/init/rfkill-restore.conf
et /etc/init/network-manager.conf
. Jeter un sommeil prolongé /etc/rc.local
avant d'émettre un rfkill block wifi
est une solution de contournement laide pour ce gâchis de condition de course, mais cela fonctionne si le retard est suffisamment long.
Une meilleure solution serait pour nous d'imposer nos états souhaités dans /var/lib/rfkill/saved-state
et /var/lib/NetworkManager/NetworkManager.state
avant que ces deux tâches Upstart ne soient même autorisées à s'exécuter. Nous pouvons y parvenir en créant notre propre emploi Upstart. En fait, nous aurons besoin de deux fichiers de configuration de travail pour atteindre le timing dont nous avons besoin.
Notre première configuration de travail effectue les modifications de fichiers réelles dont nous avons besoin. Il s'exécutera le plus tôt possible et ne fonctionnera qu'une seule fois. Créez /etc/init/radio-silence.conf
avec ce contenu:
# radio-silence - Ensure radio silence on startup
#
# Override default startup behaviour of radios to ensure they are all
# disabled until the user deliberately enables them. This job requires
# radio-silence-wait to delay start of any services that may depend on
# resources manipulated by this job.
description "Disable all radios by default"
start on local-filesystems
pre-start script
sed -i -re "s/^(.+[[:space:]]+)[01][[:space:]]*\$/\11/" /var/lib/rfkill/saved-state
sed -i -re "s/^(WirelessEnabled=).*\$/\1false/" /var/lib/NetworkManager/NetworkManager.state
end script
Comme je préfère un silence radio total lorsque mon ordinateur portable démarre, je bloque toutes les radios, non seulement sans fil, mais vous pouvez modifier la première sed
dans ce qui précède pour limiter l'impact de ce travail sur les appareils sans fil que vous souhaitez bloquer.
Notre deuxième configuration de tâche est chargée de garantir qu'aucune des tâches rfkill-restore
et network-manager
ne démarrera avant que radio-silence
les modifications de fichiers ne soient terminées. Créez /etc/init/radio-silence-wait.conf
comme suit:
# radio-silence-wait - Helper task for radio-silence
#
# Delays the start of all jobs that may depend on resources manipulated
# by radio-silence job. Avoids the need to modify job configuration of
# those other jobs.
description "Assist radio-silence by delaying jobs it affects"
start on (starting rfkill-restore or starting network-manager)
stop on (started radio-silence or stopped radio-silence)
instance $JOB
normal exit 0 2
task
script
status radio-silence | grep -q "start/running" && exit 0
start radio-silence || true
sleep infinity
end script
Avec cette solution, je ne vois plus de problèmes de condition de course, même si je n'ai pas abordé la course théorique entre rfkill-restore
et network-manager
.
Pour plus de détails sur la façon dont ces travaux fonctionnent ensemble pour atteindre notre objectif temporel, reportez-vous à ma question et réponse, "Comment créer un travail Upstart à exécution unique garanti de se terminer avant le début de deux autres travaux?"
Solution "moderne" utilisant Network Manager: décochez simplement l' option Wireless Enabled dans l'applet Network Manager (KDE: Network Management). La commande nmcli nm wifi off
est équivalente. Continuez à lire si vous activez sporadiquement le Wi-Fi, mais que vous souhaitez le réactiver au redémarrage.
L'état sans fil est mémorisé dans le fichier /var/lib/NetworkManager/NetworkManager.state
. Pour désactiver le Wi-Fi au démarrage, assurez-vous que la clé WirelessEnabled
reste sur false
. Vous pouvez le faire en modifiant le script d'initialisation de Network Manager ou en utilisant l' /etc/rc.local
astuce ci-dessous. La commande dont vous avez besoin est:
sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi
Mettez cela avant exit 0
(comme décrit ci-dessous). La rfkill block wifi
commande est toujours nécessaire en raison d'une course au démarrage de Network Manager (NM). Une fois NM démarré, les modifications apportées au fichier d'état n'ont aucun effet.
(ancienne réponse qui implique la modification du fichier /etc/rc.local
avec une explication de la rfkill
commande)
Un peu hacky, mais ça devrait marcher. Une carte sans fil peut être désactivée à l'aide de la rfkill
commande. Tous les appareils utilisés par rfkill peuvent être affichés en utilisant rfkill list
. Exemple de sortie:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
Hard blocked
dépend d'un paramètre matériel, par exemple un commutateur sans fil sur un ordinateur portable. Soft blocked
peut être contrôlé par le système d'exploitation (Ubuntu).
Comment ça marche? Il n'a pas de page de manuel, l'exécution rfkill
fournit un texte d'aide dans ce cas:
Usage: rfkill [options] command
Options:
--version show version (0.4)
Commands:
help
event
list [IDENTIFIER]
block IDENTIFIER
unblock IDENTIFIER
where IDENTIFIER is the index no. of an rfkill switch or one of:
<idx> all wifi wlan bluetooth uwb ultrawideband wimax wwan gps fm
Ah, maintenant nous arrivons quelque part. Vous devez exécuter en rfkill block wifi
tant que root pour désactiver le périphérique sans fil. (wlan est un alias du wifi, voir le code source de rfkill ).
Maintenant, si vous souhaitez désactiver les fonctions sans fil à boottime, ajoutez la commande à /etc/rc.local en exécutant sudo nano /etc/rc.local
. Utilisez les touches fléchées / page haut / bas pour naviguer jusqu'à la ligne précédente exit 0
et ajouter rfkill block wifi
, de sorte que le fichier se termine comme ceci:
# By default, this script does nothing
rfkill block wifi
exit 0
Une fois terminé, appuyez sur Ctrl+ X, puis sur Ypour l'enregistrer et appuyez sur Enterpour accepter le nom de fichier.
Si vous décidez d'activer l'appareil plus tard, exécutez: sudo rfkill unblock wifi
. N'oubliez pas de supprimer la ligne de /etc/rc.local si vous décidez d'utiliser la carte sans fil.
/etc/rc.local
car le script est exécuté avec les autorisations root. Il est très peu probable que vous puissiez désactiver le wifi sans les autorisations root. Si j'essayerfkill block wifi
ourfkill unblock wifi
, j'obtiens "Impossible d'ouvrir le dispositif de contrôle RFKILL: autorisation refusée".$ rfkill block wifi
fait que l'applet NetworkManager affiche «Le sans fil est désactivé» et$ iwconfig
s'afficheTx-Power=off
.$ rfkill unblock wifi
annule cet effet./etc/rc.local
. Utilisez ceci à la place:/bin/sleep 10 && rfkill block wifi
/var/lib/NetworkManager/NetworkManager.state
fichier qui conserve les paramètres, enWirelessEnabled=false
est un. JeLe moyen le plus simple de désactiver votre carte sans fil est de cliquer avec le bouton droit sur l'indicateur NetworkManager (petite icône en haut à droite sur le panneau) et de décocher le
Enable Wireless
. Cela fait baisser (ifconfig wlan0 down
) l'interface et n'effectue plus l'analyse.la source
Remarque: Si vous utilisez
tlp
, veuillez lire l'intégralité de la réponse.Toutes les réponses à cette question sont maintenant assez anciennes et ne fonctionnent pas sur les nouvelles versions d'Ubuntu qui utilisent systemd. La réponse de Froage a fonctionné pour moi le 14.04 mais ne fonctionne pas le 16.04.
Systemd utilise
systemd-rfkill.service
pour enregistrer l'état du commutateur rfkill pendant l'arrêt et le restaurer à chaque démarrage.Vous devez passer un paramètre de ligne de commande du noyau pour restaurer l'état du commutateur rfkill à chaque démarrage.
/etc/default/grub
avec votre éditeur de texte préféré.systemd.restore_state=1
comme paramètre àGRUB_CMDLINE_LINUX
. Cette ligne devrait maintenant se lireGRUB_CMDLINE_LINUX="systemd.restore_state=1"
. Vous pouvez également l'ajouter àGRUB_CMDLINE_LINUX_DEFAULT
. L'un ou l'autre fonctionne. Voir cette question pour plus de détails.Cela garantira que l'état rfkill sera restauré à chaque démarrage. Assurez-vous de désactiver le bluetooth et le wifi avant de redémarrer.
Problèmes avec
tlp
:Mise à jour: ces problèmes étaient présents
tlp 0.8-1
et sont disponibles dans les référentiels 16.04. Après la mise à jour de l'tlp 0.9-1
utilisation de linrunner ppa, TOUS les problèmes ont été résolus.Réponse originale:
tlp
masque / désactivesystemd-rfkill.service
pour "éviter les conflits et assurer le bon fonctionnement des options de commutation des appareils radio TLP" . ( Source-1 , Source-2 )Cela signifie que passer le paramètre du noyau ne fonctionnera pas pour vous.
Voici un petit extrait (autour de la ligne n ° 195) du fichier de configuration par défaut de tlp (
/etc/default/tlp
).Comme vous pouvez le voir, l'option
RESTORE_DEVICE_STATE_ON_STARTUP
est désactivée par défaut. Mais l'activation de cette option n'aide pas.Même après avoir activé l'option pour
RESTORE_DEVICE_STATE_ON_STARTUP
, désactiver le wifi et le bluetooth (en utilisantrfkill block all
) et continuer à redémarrer, le WiFi est en quelque sorte activé à chaque 2e ou 3e démarrage. Il n'y a aucune garantie qu'au WiFi suivant sera désactivé. Étonnammenttlp
parvient à garder le bluetooth désactivé à chaque démarrage.Il en va de même pour la 2e option de l'extrait
DEVICES_TO_DISABLE_ON_STARTUP
, qui est également désactivée par défaut. L'activer ne fonctionne pas non plus.Network Manger
montre que le WiFi est désactivé maisrfkill list
n'affiche aucun bloc logiciel sur le WiFi.tlp-rdw
ne fonctionnent pas comme prévu.Solution pour les
tlp
utilisateurs:Mise à jour: mise à jour de l'
tlp 0.9-1
utilisation de linrunner ppa.Réponse originale:
L'
DEVICES_TO_DISABLE_ON_STARTUP
activer et le configurer pour désactiver Bluetooth et WiFi peut fonctionner pour vous ( cela a fonctionné pour cette personne ).Cette question ici sur askubuntu. Elle est similaire à une réponse plus ancienne à cette question. Mais veuillez noter que je ne l'ai pas essayé moi-même. Cela peut ou peut ne pas fonctionner.
Autres sources: systemd-rfkill , tlp-configuration
la source
GRUB_CMDLINE_LINUX
etGRUB_CMDLINE_LINUX_DEFAULT
lasudo update-grub
commande (non mentionnée) et je n'ai pas pu la faire fonctionner dans Pop_OS! 19.10 (qui est basé sur Ubuntu 19.10). Selonsystemctl status systemd-rfkill
, ce service est déjà exécuté à chaque démarrage et, comme la valeur par défaut est1
, cet effort ne devrait pas être nécessaire. Sur la base des informations surman systemd-rfkill
, se souvenir de l'état de la radio "au démarrage précoce" devrait être le comportement par défaut, ce qui m'amène à croire que ce composant est en quelque sorte cassé.Personnellement, j'utilise Jupiter l'applet de gestion de l'alimentation pour désactiver la connexion sans fil sur mon ordinateur portable car elle est contrôlée par un bouton spécial. Je ne pense pas que dans le dépôt principal, j'ai dû ajouter un ppa d'Andrew à Webupd8 pour l'obtenir.
J'espère que cela t'aides.
la source
Vous pourriez ajouter
ifconfig wlan0 down
à
/etc/rc.local
, mais d'abord,assurez-vous que, si vous utilisez NetworkManager (j'ai la version 0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3), vous allez dans le menu " Modifier les connexions " -> onglet " Sans fil ", cliquez sur la connexion, cliquez sur " Modifier " et assurez-vous que, dans l' onglet " Sans fil ", la case " Se connecter automatiquement " n'est PAS cochée.
la source
rfkill
.