Kablosuz kartın radyosunu varsayılan olarak nasıl kapalı tutabilirim?


11

Masaüstümün PCI kablosuz kartı her zaman kullanılabilir kablosuz ağları tarıyor, ancak bunu nadiren kullanıyorum. İhtiyacım olana kadar telsizi kapalı tutabilir miyim?

Yanıtlar:


4

Varsayılan kablosuz durumu etkileyen en az iki Upstart işi vardır:

  • /etc/init/rfkill-restore.confkaydedildiği gibi tüm telsizler için yumuşak blok durumunu son kapanışta olduklarına geri yükler /var/lib/rfkill/saved-state.
  • /etc/init/network-manager.confdaha sonra kablosuz durum fikrini geri yükleyen Network Manager'ı başlatır /var/lib/NetworkManager/NetworkManager.state.

Bu iki iş konfigürasyonuna bakarsanız, benim için bir tasarım hatası gibi görünen geçici bir ilişkilerinin olmadığını göreceksiniz . Bu yarış koşulunun nadiren bir sorun olduğunu tahmin ediyorum çünkü /etc/init/rfkill-restore.confçok daha basit ve daha az başlangıç ​​koşulu var.

@Lekensteyn ve @ rubo77'nin ortaya çıkardığı "modern" çözüm de /etc/rc.localdahil olmak üzere gördüğüm bir kablosuz bağlantı varsayılanını uygulamaya yönelik tüm çözümler . Ne yazık ki, bu çözüm denediğim iki dizüstü bilgisayarda da işe yaramıyor. Bunun nedeni özellikle şaşırtıcı değildir ayrıca sahip hiçbir zamansal ilişki Ben birine bulabilmesi ve . Bir yarış vermeden önce uzun bir uykuya atmak, bu yarış durumu karmaşası için çirkin bir çözümdür, ancak gecikme yeterince uzunsa işe yarar./etc/rc.local /etc/init/rfkill-restore.conf/etc/init/network-manager.conf/etc/rc.localrfkill block wifi

Bu iki Upstart işinin yürütülmesine izin verilmeden önce/var/lib/rfkill/saved-state ve daha /var/lib/NetworkManager/NetworkManager.state önce arzu ettiğimiz durumları dayatmamız daha iyi bir çözüm olacaktır . Bunu kendi Upstart işimizi oluşturarak başarabiliriz. Aslında, ihtiyacımız olan zamanlamayı elde etmek için iki iş yapılandırma dosyasına ihtiyacımız olacak.

İlk iş yapılandırmamız ihtiyacımız olan gerçek dosya değişikliklerini yapar. Mümkün olduğunca erken çalışır ve yalnızca bir kez çalışır. /etc/init/radio-silence.confBu içerikle oluştur :

# 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

Dizüstü bilgisayarım başlatıldığında toplam radyo sessizliğini tercih ettiğim için , yalnızca kablosuz değil, tüm radyoları yumuşak bir şekilde engelliyorum , ancak sedbu işin etkisini yumuşak engellemek istediğiniz kablosuz cihazlarla sınırlamak için yukarıdaki ilkini değiştirebilirsiniz .

İkinci iş yapılandırma hiçbiri sağlamaktan sorumludur rfkill-restoreve network-managerişler önce başlayacak radio-silencedosya değişiklikleri tamamladı. Aşağıdaki /etc/init/radio-silence-wait.confgibi oluşturun :

# 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

Bu çözümle, rfkill-restoreve arasındaki teorik ırkı ele almamamla birlikte, artık yarış durumu problemlerini görmüyorum network-manager.

Bu işlerin geçici amacımıza ulaşmak için birlikte nasıl çalıştığı hakkında daha fazla ayrıntı için, "Diğer iki iş başlamadan önce tamamlanması garantili tek bir yürütme Upstart işi nasıl oluşturabilirim?"


7

Ağ Yöneticisi'ni kullanarak "modern" çözüm: Ağ Yöneticisi uygulamasındaki Kablosuz Etkin seçeneğinin işaretini kaldırmanız yeterlidir (KDE: Ağ Yönetimi). Komut nmcli nm wifi offeşdeğerdir. Wi-Fi'yi ara sıra etkinleştirirseniz, ancak yeniden başlatma sırasında devre dışı bırakmak istiyorsanız okumaya devam edin.

Kablosuz durumu dosyada hatırlanır /var/lib/NetworkManager/NetworkManager.state. Açılışta Wi-Fi devre dışı bırakmak için, bu anahtar sağlamak WirelessEnabledkalır at false. Bunu, Ağ Yöneticisi'nin başlatma komut dosyasını düzenleyerek veya /etc/rc.localaşağıdaki hileyi kullanarak yapabilirsiniz . İhtiyacınız olan komut:

sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi

Bunu daha önce koyun exit 0(aşağıda açıklandığı gibi). rfkill block wifiKomut hala nedeniyle Ağ Yöneticisi (NM) oluşturması sırasında bir yarış için gereklidir. NM başladıktan sonra, durum dosyasındaki değişikliklerin bir etkisi yoktur.


( komutun /etc/rc.localaçıklamasıyla birlikte dosya düzenlemeyi içeren eski yanıt rfkill)

Biraz kibirli, ama işe yaramalı. Kablosuz kart, rfkillkomut kullanılarak devre dışı bırakılabilir . Rfkill tarafından kullanılan tüm cihazlar kullanılarak gösterilebilir rfkill list. Örnek çıktı:

0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

Hard blockeddonanım ayarına bağlıdır, örneğin dizüstü bilgisayardaki kablosuz anahtar. Soft blockedOS (Ubuntu) tarafından kontrol edilebilir.

O nasıl çalışır? Bir el kitabı yok, çalışan rfkillbu durumda bir yardım metni sağlar:

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, şimdi bir yerlere gidiyoruz. rfkill block wifiKablosuz cihazı devre dışı bırakmak için root olarak çalıştırmanız gerekir . (WLAN WiFi bir takma, bkz kaynak kodu arasında rfkill ).

Şimdi, önyükleme sırasında kablosuz işlevleri devre dışı bırakmak istiyorsanız, komutu çalıştırarak /etc/rc.local dosyasına ekleyin sudo nano /etc/rc.local. Önceki satıra gitmek exit 0ve eklemek için ok tuşlarını / sayfa yukarı / aşağı tuşlarını kullanın rfkill block wifi, böylece dosya şöyle biter:

# By default, this script does nothing

rfkill block wifi
exit 0

İşiniz bittiğinde Ctrl+ Xtuşuna basın Y, kaydetmek için tuşuna basın Enterve dosya adını kabul etmek için tuşuna basın .

Daha sonra cihazı aktif hale getirmek için karar verirseniz, çalıştırın: sudo rfkill unblock wifi. Kablosuz kartı kullanmaya karar verirseniz hattı /etc/rc.local dizininden kaldırmayı unutmayın.


Teşekkürler. Nedenini anlamıyorum, ancak rfkill'in çalışması için sudo kullanmam gerekmiyor gibi görünüyor.
ændrük

1
/etc/rc.localKomut dosyası kök izinleriyle çalıştırıldığı için sudo in'e ihtiyacınız yoktur . Kök izinleri olmadan wifi'yi devre dışı bırakmanız pek olası değildir. Ben denerseniz rfkill block wifiveya rfkill unblock wifi": İzin reddedildi açılamıyor rfkill kontrol cihazı Can", ben olsun.
Lekensteyn

Hem ThinkPad X60 cihazımda hem de PCI kablosuz kartlı masaüstümde çalışırken $ rfkill block wifiNetworkManager uygulamasının "Kablosuz devre dışı" $ iwconfiggörüntülenmesine ve görüntülenmesine neden oluyor Tx-Power=off. $ rfkill unblock wifibu efekti geri alır.
ændrük

1
Bir gecikmeyle çözdüm: Ubuntu 14.04'te wifi'yi devre dışı bırakmadan önce birkaç saniye beklemeniz gerekiyor gibi görünüyor /etc/rc.local. Bunun yerine şunu kullanın:/bin/sleep 10 && rfkill block wifi
rubo77

1
@ rubo77 Burada (Arch Linux, Network Manager 0.9.8.10-3), /var/lib/NetworkManager/NetworkManager.stateayarlara devam eden bir dosya var WirelessEnabled=false, bunlardan biri. Sorunuza mesaj
göndereceğim

1

Kablosuz kartınızı devre dışı bırakmanın en kolay yolu NetworkManager göstergesine (panelin sağ üst köşesindeki küçük simge) sağ tıklamak ve işaretini kaldırmaktır Enable Wireless. Bu ifconfig wlan0 downarabirimi indirir ( ) ve artık tarama yapmaz.


2
Bu menü öğesinin işaretlenmesi varsayılan davranışı etkilemez. Bilgisayarı bir sonraki açışımda kablosuz radyo tekrar etkindir.
ændrük

1
Benim Ubuntu
14.04

1

Not: Kullanırsanız tlp, lütfen tüm cevabı okuyun.

Bu sorunun tüm cevapları şu anda oldukça eski ve systemd kullanan yeni Ubuntu sürümlerinde çalışmıyor. froage'nin yanıtı benim için 14.04'te çalıştı, ancak 16.04'te işe yaramadı.

Systemd, systemd-rfkill.servicekapatma sırasında rfkill anahtar durumunu kaydetmek ve her önyüklemede geri yüklemek için kullanır .

Her önyüklemede rfkill anahtar durumunu geri yüklemek için bir çekirdek komut satırı parametresi geçirmeniz gerekir.

  1. açmak /etc/default/grubtercih metin editörü ile.
  2. systemd.restore_state=1parametre olarak ekle GRUB_CMDLINE_LINUX. Şimdi bu satır okunmalı GRUB_CMDLINE_LINUX="systemd.restore_state=1". Siz de ekleyebilirsiniz GRUB_CMDLINE_LINUX_DEFAULT. İkisi de işe yarıyor. Daha fazla ayrıntı için bu soruya bakın.

Bu, rfkill durumunun her önyüklemede geri yüklenmesini sağlayacaktır. Yeniden başlatmadan önce bluetooth ve wifi'yi kapattığınızdan emin olun.


İle ilgili sorunlar tlp:

Güncelleme: Bu sorunlar tlp 0.8-116.04 depolarda mevcuttu. tlp 0.9-1Linrunner ppa kullanarak güncelleme yapıldıktan sonra , TÜM sorunlar çözüldü.

Orijinal cevap:

tlpmaskeler / devre dışı bıraktığı systemd-rfkill.serviceiçin "önlemek çatışma ve TLP radyo cihazı anahtarlama seçeneklerinin düzgün çalışmasını sağlamak" . ( Kaynak-1 , Kaynak-2 )

Bu, çekirdek parametresini geçmenin sizin için işe yaramayacağı anlamına gelir.

Burada, tlp'nin varsayılan yapılandırma dosyasından ( /etc/default/tlp) küçük bir snippet (satır no. 195) yer almaktadır .

# Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown
# on system startup: 0=disable, 1=enable.
# Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below
#   are ignored when this is enabled!
RESTORE_DEVICE_STATE_ON_STARTUP=0

# Radio devices to disable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
#DEVICES_TO_DISABLE_ON_STARTUP="bluetooth wifi wwan"

# Radio devices to enable on startup: bluetooth, wifi, wwan.
# Separate multiple devices with spaces.
#DEVICES_TO_ENABLE_ON_STARTUP="wifi"
  • Gördüğünüz gibi RESTORE_DEVICE_STATE_ON_STARTUPvarsayılan seçenek devre dışıdır. Ancak bu seçeneği etkinleştirmek yardımcı olmaz.

    RESTORE_DEVICE_STATE_ON_STARTUP Wifi ve bluetooth'u (kullanarak rfkill block all) devre dışı bırakıp yeniden başlatmaya devam etmenizi sağladıktan sonra bile , her iki veya 3. önyüklemede bir şekilde WiFi etkinleştirilir. Bir sonraki önyüklemede WiFi'nin devre dışı bırakılacağının garantisi yoktur. tlpHer önyüklemede bluetooth'u devre dışı bırakmayı şaşırtıcı bir şekilde yönetir.

  • Snippet'teki 2. seçenek için de aynı şey geçerlidir DEVICES_TO_DISABLE_ON_STARTUP, bu da varsayılan olarak devre dışıdır. Etkinleştirmek de işe yaramıyor. Network MangerWiFi'nin devre dışı olduğunu ancak rfkill listWiFi'de herhangi bir yazılım bloğu göstermediğini gösterir.

    Not: Satırı okudum "Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below are ignored when this is enabled!".

    Çatışmalardan kaçınmadan RESTORE_DEVICE_STATE_ON_STARTUPönce devre dışı bıraktım DEVICES_TO_DISABLE_ON_STARTUP.

  • Benzer şekilde, sağlanan diğer seçenekler tlp-rdwbeklendiği gibi çalışmaz.


tlpKullanıcılar için çözüm :

Güncelleme: tlp 0.9-1Linrunner ppa kullanarak güncelleme .

Orijinal Yanıt:

  1. DEVICES_TO_DISABLE_ON_STARTUPBluetooth ve WiFi'yi etkinleştirmek ve etkinleştirmek sizin için işe yarayabilir. ( Bu kişi için çalıştı )

  2. Bu soru burada askubuntu hakkında. Bu sorunun daha eski bir cevabına benzer. Ama lütfen kendim denemediğimi unutmayın. Çalışabilir veya çalışmayabilir.


Diğer kaynaklar: systemd-rfkill , tlp-configuration



Cevabınızı hem modifikasyonları hem de (sözü geçmeyen) komutunu içeren denedim GRUB_CMDLINE_LINUXve Pop_OS'ta çalışamadım! 19.10 (Ubuntu 19.10'a dayanmaktadır). Buna göre , bu hizmet zaten her önyüklemede çalıştırılıyor ve varsayılan değer olduğu için bu çabaya gerek yok. Adresindeki bilgilere dayanarak, "erken önyüklemede" radyo durumunu hatırlamak varsayılan davranış olmalıdır, bu da bu bileşenin bir şekilde bozuk olduğuna inanmamı sağlıyor. GRUB_CMDLINE_LINUX_DEFAULTsudo update-grubsystemctl status systemd-rfkill1man systemd-rfkill
Patrick Dark

0

Şahsen Jupiter'i özel bir düğme tarafından kontrol edildiğinden dizüstü bilgisayarımdaki kablosuz bağlantıyı devre dışı bırakmak için güç yönetimi uygulamasını kullanıyorum. Ben bunu almak için Webupd8 Andrew bir ppa eklemek zorunda ana repo olduğunu sanmıyorum .

Bu yardımcı olur umarım.


0

Ekleyebilirsin

ifconfig wlan0 down

için /etc/rc.local, ama önce,

NetworkManager kullanıyorsanız (0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3 sürümüne sahipseniz) " Bağlantıları Düzenle " -> " Kablosuz " sekmesine gidin, " Düzenle " yi tıklayın ve " Kablosuz " sekmesinde " Otomatik Olarak Bağlan " onay kutusunun işaretli olmadığından emin olun.


1
Bu, arayüzü düşürürken, radyoyu devre dışı bırakmak kadar güç tasarrufu yapmaz rfkill.
gertvdijk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.