मैं डिफ़ॉल्ट रूप से वायरलेस कार्ड के रेडियो को कैसे चालू रख सकता हूं?


11

मेरे डेस्कटॉप का PCI वायरलेस कार्ड हमेशा उपलब्ध वायरलेस नेटवर्क के लिए स्कैन कर रहा है, लेकिन मैं केवल इसका उपयोग शायद ही कभी करता हूं। क्या मैं रेडियो को तब तक बंद रख सकता हूं जब तक मुझे इसकी आवश्यकता नहीं है?

जवाबों:


4

डिफ़ॉल्ट वायरलेस स्थिति को प्रभावित करने वाले कम से कम दो अपस्टार्ट कार्य हैं:

  • /etc/init/rfkill-restore.confसभी रेडियों के लिए नरम ब्लॉक की स्थिति को पुनर्स्थापित करता है जो वे पिछले शटडाउन में थे, जैसा कि दर्ज किया गया था /var/lib/rfkill/saved-state
  • /etc/init/network-manager.confनेटवर्क मैनेजर शुरू करता है जो बदले में वायरलेस राज्य के अपने विचार को पुनर्स्थापित करता है /var/lib/NetworkManager/NetworkManager.state

यदि आप उन दो नौकरी विन्यासों को देखते हैं, तो आप पाएंगे कि उनका कोई लौकिक संबंध नहीं है , जो मुझे एक डिजाइन दोष की तरह लगता है। मुझे लगता है कि इस दौड़ की स्थिति शायद ही कभी एक समस्या है क्योंकि /etc/init/rfkill-restore.confबहुत सरल है और कम शुरुआत की स्थिति है।

वायरलेस-ऑफ़ डिफ़ॉल्ट को लागू करने के सभी समाधान जिन्हें मैंने देखा है /etc/rc.local, "आधुनिक" समाधान का उपयोग करने की कोशिश करता है , जिसमें @Lekensteyn और @ rubo77 के साथ आया था। दुर्भाग्य से, वह समाधान मेरे लिए उन दो लैपटॉपों पर काम नहीं करता है, जिन्हें मैंने कोशिश की है। यह विशेष रूप से आश्चर्य की बात नहीं है क्योंकि इसका कोई अस्थायी संबंध /etc/rc.local भी नहीं है जो मैं /etc/init/rfkill-restore.confऔर दोनों में से किसी को भी पा सकता हूं /etc/init/network-manager.conf/etc/rc.localजारी करने से पहले एक लंबी नींद में फेंकना rfkill block wifiइस दौड़ की स्थिति की गड़बड़ी के लिए एक बदसूरत काम है, लेकिन यह काम करता है अगर देरी काफी लंबी है।

एक बेहतर समाधान यह होगा कि हम अपने वांछित राज्यों को थोपें /var/lib/rfkill/saved-stateऔर /var/lib/NetworkManager/NetworkManager.state इससे पहले कि दो उपस्टार्ट नौकरियों को चलाने की अनुमति दी जाए। हम अपना खुद का Upstart जॉब बनाकर इसे हासिल कर सकते हैं। वास्तविक समय में, हमें अपनी जरूरत के समय को प्राप्त करने के लिए दो नौकरी विन्यास फाइलों की आवश्यकता होगी।

हमारा पहला काम कॉन्फ़िगरेशन वास्तविक फ़ाइल संशोधनों की आवश्यकता है जो हमें चाहिए। यह यथाशीघ्र चलेगा और केवल एक बार ही चलेगा। /etc/init/radio-silence.confइस सामग्री के साथ बनाएँ :

# 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

जब मैं अपना लैपटॉप शुरू करता हूं तो मैं कुल रेडियो सन्नाटा पसंद करता हूं, मैं सभी रेडियो को नरम कर देता हूं , न केवल वायरलेस, बल्कि आप sedइस ब्लॉक के प्रभाव को सीमित करने के लिए उपरोक्त में से पहला संशोधित कर सकते हैं जो कि उन वायरलेस डिवाइसों को जो आप सॉफ्ट ब्लॉक की इच्छा रखते हैं।

हमारी दूसरी नौकरी कॉन्फ़िगरेशन यह सुनिश्चित करने के लिए ज़िम्मेदार है कि फ़ाइल संशोधनों को पूरा करने से पहले rfkill-restoreऔर न ही network-managerनौकरी शुरू होगी radio-silence/etc/init/radio-silence-wait.confनिम्नानुसार बनाएँ :

# 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

इस समाधान के साथ मैं अब रेस की स्थिति की समस्याओं को नहीं देख रहा हूं, हालांकि मैंने rfkill-restoreऔर के बीच सैद्धांतिक दौड़ को संबोधित नहीं किया है network-manager

हमारे अस्थायी लक्ष्य को प्राप्त करने के लिए ये नौकरियां एक साथ कैसे काम करती हैं, इस बारे में अधिक जानकारी के लिए, मेरे प्रश्न और उत्तर को देखें, "मैं दो अन्य नौकरियों के शुरू होने से पहले एक एकल-निष्पादन अपस्टार्ट नौकरी को कैसे पूरा करने की गारंटी देता हूं?"


7

नेटवर्क प्रबंधक का उपयोग करके "आधुनिक" समाधान: बस नेटवर्क प्रबंधक एप्लेट (KDE: नेटवर्क प्रबंधन) पर वायरलेस सक्षम विकल्प को अनचेक करें । आज्ञा nmcli nm wifi offबराबर है। यदि आप छिटपुट रूप से वाई-फाई सक्षम करते हैं, तो पढ़ना जारी रखें, लेकिन रिबूट पर अक्षम करने के लिए इसे वापस करना चाहेंगे।

फ़ाइल में वायरलेस स्थिति को याद किया जाता है /var/lib/NetworkManager/NetworkManager.state। बूट पर वाई-फाई को अक्षम करने के लिए, सुनिश्चित करें कि कुंजी पर WirelessEnabledरहता है false। आप ऐसा कर सकते हैं कि नेटवर्क मैनेजर की init स्क्रिप्ट को संपादित करके, या /etc/rc.localनीचे दिए गए ट्रिक का उपयोग करके । आपके लिए आवश्यक कमांड है:

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

इसे पहले डालें exit 0(जैसा कि नीचे वर्णित है)। rfkill block wifiआदेश अभी भी नेटवर्क प्रबंधक (समुद्री मील दूर) के स्टार्टअप के साथ एक दौड़ के कारण की जरूरत है। एक बार NM शुरू हो जाने के बाद, राज्य फ़ाइल में परिवर्तन का कोई प्रभाव नहीं पड़ता है।


(पुराना उत्तर जिसमें कमांड /etc/rc.localकी व्याख्या के साथ संपादन फ़ाइल शामिल है rfkill)

थोड़ा हैकी, लेकिन यह काम करना चाहिए। एक वायरलेस कार्ड को rfkillकमांड का उपयोग करके अक्षम किया जा सकता है । Rfkill द्वारा उपयोग किए जाने वाले सभी उपकरणों का उपयोग करके दिखाया जा सकता है rfkill list। नमूना उत्पादन:

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

Hard blockedएक हार्डवेयर सेटिंग पर निर्भर है, उदाहरण के लिए एक नोटबुक पर एक वायरलेस स्विच। Soft blockedओएस (उबंटू) द्वारा नियंत्रित किया जा सकता है।

यह कैसे काम करता है? इसके पास एक मैनपेज नहीं है, rfkillइस मामले में रनिंग एक सहायता पाठ प्रदान करता है:

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

आह, अब हम कहीं मिलते हैं। आपको rfkill block wifiवायरलेस डिवाइस को अक्षम करने के लिए रूट के रूप में चलाने की आवश्यकता है। (wlan wifi का एक उपनाम है, rfkill का सोर्स कोड देखें )।

अब, यदि आप वायरलेस फ़ंक्शन को बूटटाइम पर अक्षम करना चाहते हैं, तो कमांड को /etc/rc.local पर चलाकर जोड़ें sudo nano /etc/rc.local। पहले exit 0और जोड़ने के लिए लाइन पर जाने के लिए एरो कीज़ / पेज अप / डाउन कीज़ का उपयोग करें rfkill block wifi, ताकि फाइल इस तरह से समाप्त हो जाए:

# By default, this script does nothing

rfkill block wifi
exit 0

समाप्त होने पर, Ctrl+ दबाएं X, फिर Yइसे सहेजने के Enterलिए दबाएं और फ़ाइल नाम स्वीकार करने के लिए दबाएं ।

यदि आप बाद में डिवाइस को सक्रिय करने का निर्णय लेते हैं, तो दौड़ें sudo rfkill unblock wifi:। यदि आप वायरलेस कार्ड का उपयोग करने का निर्णय लेते हैं तो /etc/rc.local से लाइन हटाना न भूलें।


धन्यवाद। मुझे समझ में क्यों नहीं आता है, लेकिन ऐसा लगता है कि मुझे काम करने के लिए rfkill के लिए sudo का उपयोग करने की आवश्यकता नहीं है।
ændrük

1
आपको sudo की आवश्यकता नहीं है /etc/rc.localक्योंकि स्क्रिप्ट रूट अनुमतियों के साथ चलाई जाती है। यह बहुत संभावना नहीं है कि आप रूट अनुमतियों के बिना वाईफाई को अक्षम कर सकते हैं। अगर मैं कोशिश करता हूं rfkill block wifiया rfkill unblock wifi, मुझे "RFKILL कंट्रोल डिवाइस नहीं खोल सकता: अनुमति से वंचित"।
लेकेन्स्टाइन

दोनों मेरे ThinkPad X60 और एक पीसीआई वायरलेस कार्ड के साथ अपने डेस्कटॉप पर चल रहा है $ rfkill block wifiका कारण बनता है NetworkManager प्रदर्शित करने के लिए "वायरलेस अक्षम है" और एप्लेट $ iwconfigप्रदर्शित करने के लिए Tx-Power=off$ rfkill unblock wifiइस प्रभाव को समाप्त करता है।
ændrük

1
मैंने इसे देरी से हल किया: यह उबंटू 14.04 में ऐसा लगता है कि आपको वाईफाई को निष्क्रिय करने से पहले कुछ सेकंड इंतजार करना होगा /etc/rc.local। इसकी जगह इसका इस्तेमाल करें:/bin/sleep 10 && rfkill block wifi
रुबो 7

1
@ rubo77 यहां (आर्क लिनक्स, नेटवर्क मैनेजर 0.9.8.10-3), एक /var/lib/NetworkManager/NetworkManager.stateफाइल मौजूद है जो सेटिंग्स को बनाए रखती है , WirelessEnabled=falseउनमें से एक है। मैं आपके प्रश्न पर पोस्ट करूंगा ..
लेकेनस्टीन

1

अपने वायरलेस कार्ड को अक्षम करने का सबसे आसान तरीका नेटवर्क मैनजर इंडिकेटर पर राइट-क्लिक करना है (पैनल पर टॉप-राइट पर छोटा आइकन), और इसे अनटिक करें Enable Wireless। यह ifconfig wlan0 downइंटरफ़ेस को नीचे लाता है ( यह अब स्कैनिंग नहीं करता है।


2
इस मेनू आइटम की जाँच करने से डिफ़ॉल्ट व्यवहार प्रभावित नहीं होता है। अगली बार जब मैं कंप्यूटर चालू करता हूं, तो वायरलेस रेडियो फिर से सक्रिय होता है।
ændrük

1
मेरे Ubuntu 14.04 पर यह रिबूट के बाद वांछित के रूप में बंद रहता है अगर मैं इसे नेटवर्क मैनेजर एप्लेट में बदल देता हूं
rubo77

1

नोट: यदि आप उपयोग करते हैं tlp, तो कृपया पूरा उत्तर पढ़ें।

इस प्रश्न के सभी उत्तर अभी बहुत पुराने हैं और नए उबंटू रिलीज पर काम नहीं करते हैं जो सिस्टमड का उपयोग करते हैं। फ्रॉज का जवाब मेरे लिए 14.04 पर काम किया, लेकिन 16.04 पर काम नहीं करता है।

सिस्टमड systemd-rfkill.serviceशटडाउन के दौरान rfkill स्विच स्थिति को बचाने और इसे हर बूट पर पुनर्स्थापित करने के लिए उपयोग करता है।

आपको हर बूट पर rfkill स्विच स्थिति को पुनर्स्थापित करने के लिए एक कर्नेल कमांड लाइन पैरामीटर पास करना होगा।

  1. /etc/default/grubअपने पसंदीदा पाठ संपादक के साथ खोलें ।
  2. के लिए systemd.restore_state=1एक पैरामीटर के रूप में जोड़ें GRUB_CMDLINE_LINUX। वह पंक्ति अब पढ़नी चाहिए GRUB_CMDLINE_LINUX="systemd.restore_state=1"। आप इसे भी जोड़ सकते हैं GRUB_CMDLINE_LINUX_DEFAULT। दोनों में से कोई भी काम करता है। अधिक विवरण के लिए यह प्रश्न देखें।

यह सुनिश्चित करेगा कि rfkill राज्य प्रत्येक बूट पर बहाल हो जाए। पुनः आरंभ करने से पहले ब्लूटूथ और वाईफाई बंद करना सुनिश्चित करें।


इस मुद्दे के साथ tlp:

अद्यतन: ये समस्याएँ मौजूद थीं tlp 0.8-1जिसमें 16.04 रिपॉजिटरी में उपलब्ध है। tlp 0.9-1लाइनरनर ppa का उपयोग करने के लिए अद्यतन करने के बाद , सभी आइसूज़ हल किए गए थे।

मूल उत्तर:

tlpमास्क / अक्षमता "संघर्ष से बचने और TLP के रेडियो उपकरण स्विचिंग विकल्पों के उचित संचालन का आश्वासन देता systemd-rfkill.serviceहै " । ( स्रोत -1 , स्रोत -2 )

इसका मतलब है कि कर्नेल पैरामीटर पास करना आपके लिए काम नहीं करेगा।

यहाँ tlp की डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल ( /etc/default/tlp) से थोड़ा स्निपेट (पंक्ति संख्या 195 के आसपास ) है।

# 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"
  • जैसा कि आप RESTORE_DEVICE_STATE_ON_STARTUPडिफ़ॉल्ट रूप से अक्षम करने का विकल्प देख सकते हैं । लेकिन उस विकल्प को सक्षम करने से मदद नहीं मिलती है।

    आपके द्वारा ऑप्शन सक्षम करने के बाद भी RESTORE_DEVICE_STATE_ON_STARTUP , वाईफाई और ब्लूटूथ को अक्षम करें (उपयोग करके rfkill block all) और रीस्टार्ट करते रहें, किसी भी तरह वाईफाई हर 2 या 3 जी बूट पर सक्षम हो जाए। इसमें कोई गारंटी नहीं है कि अगले बूट पर वाईफाई अक्षम हो जाएगा। आश्चर्यजनक रूप tlpसे हर बूट पर ब्लूटूथ को अक्षम रखने का प्रबंधन करता है।

  • वही स्निपेट में 2 वें विकल्प के लिए जाता है DEVICES_TO_DISABLE_ON_STARTUP, जो डिफ़ॉल्ट रूप से अक्षम भी है। इसे सक्षम करने से भी काम नहीं होता है। Network Mangerदिखाता है कि WiFi अक्षम है लेकिन rfkill listWiFi पर कोई सॉफ्ट-ब्लॉक नहीं दिखाता है।

    नोट: मैंने लाइन पढ़ी है "Hint: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below are ignored when this is enabled!"

    संघर्षों से बचने के लिए RESTORE_DEVICE_STATE_ON_STARTUPसक्षम DEVICES_TO_DISABLE_ON_STARTUPकरने से पहले मैं अक्षम हो गया ।

  • इसी प्रकार उपलब्ध कराए गए अन्य विकल्प tlp-rdwअपेक्षा के अनुरूप काम नहीं करते हैं।


tlpउपयोगकर्ताओं के लिए समाधान :

अपडेट: tlp 0.9-1लाइनरनर ppa का उपयोग करने के लिए अद्यतन ।

मूल उत्तर:

  1. DEVICES_TO_DISABLE_ON_STARTUPब्लूटूथ और वाईफाई को निष्क्रिय करने के लिए इसे सक्षम और सेट करना आपके लिए काम कर सकता है। ( इस व्यक्ति के लिए यह काम किया है )

  2. यह सवाल पूछने के लिए यहाँ है। यह इस प्रश्न के पुराने उत्तर के समान है। लेकिन कृपया ध्यान दें कि मैंने खुद इसकी कोशिश नहीं की है। यह काम कर भी सकता है और नहीं भी।


अन्य स्रोत: systemd-rfkill , tlp- कॉन्फ़िगरेशन



मैंने आपके उत्तर की कोशिश की जिसमें दोनों GRUB_CMDLINE_LINUXऔर GRUB_CMDLINE_LINUX_DEFAULT(एक साथ) sudo update-grubकमांड के संशोधनों को शामिल किया गया और मैं इसे Pop_OS में काम करने के लिए नहीं मिला! 19.10 (जो उबंटू 19.10 पर आधारित है)। इसके अनुसार systemctl status systemd-rfkill, यह सेवा पहले से ही प्रत्येक बूट पर चलाई जा रही है और, चूंकि डिफ़ॉल्ट मान है 1, इसलिए इस प्रयास की कोई आवश्यकता नहीं होनी चाहिए। सूचना के आधार पर man systemd-rfkill, रेडियो स्टेट को "शुरुआती बूट में" याद रखना डिफ़ॉल्ट व्यवहार होना चाहिए, जो मुझे विश्वास दिलाता है कि यह घटक किसी तरह टूट गया है।
पैट्रिक डार्क

0

व्यक्तिगत तौर पर मैं का उपयोग बृहस्पति ऊर्जा प्रबंधन एप्लेट अपने लैपटॉप पर वायरलेस निष्क्रिय करने के लिए के रूप में यह एक विशेष बटन द्वारा नियंत्रित है। मुझे नहीं लगता कि मुझे इसे प्राप्त करने के लिए Webupd8 में एंड्रयू से एक ppa जोड़ना था मुख्य रेपो में है।

उम्मीद है की यह मदद करेगा।


0

आप जोड़ सकते हैं

ifconfig wlan0 down

से /etc/rc.local, लेकिन पहले,

सुनिश्चित करें कि, यदि आप NetworkManager का उपयोग कर रहे हैं (मेरे पास संस्करण 0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3 है), तो आप " कनेक्शन संपादित करें " मेनू पर जाएँ -> " वायरलेस " टैब, कनेक्शन पर क्लिक करें, " संपादित करें " पर क्लिक करें , और सुनिश्चित करें कि, " वायरलेस " टैब में, " स्वचालित रूप से कनेक्ट करें " चेकबॉक्स की जाँच नहीं की जाती है।


1
हालांकि यह इंटरफ़ेस को नीचे लाएगा, यह रेडियो का उपयोग करने को अक्षम करने की उतनी शक्ति नहीं बचाएगा rfkill
gertvdijk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.