Kartu nirkabel PCI desktop saya selalu memindai jaringan nirkabel yang tersedia, tetapi saya jarang menggunakannya. Dapatkah saya mematikan radio sampai saya membutuhkannya?
sumber
Kartu nirkabel PCI desktop saya selalu memindai jaringan nirkabel yang tersedia, tetapi saya jarang menggunakannya. Dapatkah saya mematikan radio sampai saya membutuhkannya?
Setidaknya ada dua pekerjaan pemula yang mempengaruhi status nirkabel default:
/etc/init/rfkill-restore.conf
mengembalikan status blok lunak untuk semua radio ke kondisi semula, seperti yang dicatat di /var/lib/rfkill/saved-state
./etc/init/network-manager.conf
memulai Network Manager yang pada gilirannya mengembalikan idenya tentang keadaan nirkabel /var/lib/NetworkManager/NetworkManager.state
.Jika Anda melihat dua konfigurasi pekerjaan itu, Anda akan menemukan bahwa mereka tidak memiliki hubungan temporal , yang tampaknya seperti cacat desain bagi saya. Saya menduga kondisi lomba ini jarang menjadi masalah karena /etc/init/rfkill-restore.conf
jauh lebih sederhana dan memiliki kondisi awal yang lebih sedikit.
Semua solusi untuk menegakkan default nirkabel-off yang pernah saya coba coba gunakan /etc/rc.local
, termasuk solusi "modern" yang muncul dengan @Lekensteyn dan @ rubo77. Sayangnya, solusi itu tidak berfungsi untuk saya pada salah satu dari dua laptop yang saya coba. Ini tidak terlalu mengejutkan karena /etc/rc.local
juga tidak memiliki hubungan temporal yang dapat saya temukan untuk salah satu dari /etc/init/rfkill-restore.conf
dan /etc/init/network-manager.conf
. Melempar dalam tidur yang panjang /etc/rc.local
sebelum mengeluarkan suatu rfkill block wifi
solusi buruk untuk kekacauan kondisi balapan ini, tetapi bekerja jika penundaannya cukup lama.
Solusi yang lebih baik bagi kita untuk memaksakan keadaan yang kita inginkan di /var/lib/rfkill/saved-state
dan /var/lib/NetworkManager/NetworkManager.state
sebelum dua pekerjaan pemula itu bahkan diizinkan untuk dijalankan. Kita dapat mencapai ini dengan menciptakan pekerjaan pemula kami sendiri. Pada kenyataannya, kita akan membutuhkan dua file konfigurasi pekerjaan untuk mencapai waktu yang kita butuhkan.
Konfigurasi pekerjaan pertama kami melakukan modifikasi file aktual yang kami butuhkan. Ini akan berjalan sedini mungkin dan hanya akan berjalan sekali. Buat /etc/init/radio-silence.conf
dengan konten ini:
# 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
Karena saya lebih suka keheningan radio total ketika laptop saya mulai, saya soft block semua radio, tidak hanya nirkabel, tetapi Anda dapat memodifikasi yang pertama sed
di atas untuk membatasi dampak pekerjaan ini untuk perangkat nirkabel mana pun yang Anda ingin soft block.
Konfigurasi pekerjaan kedua kami bertanggung jawab untuk memastikan tidak satu pun dari rfkill-restore
dan network-manager
pekerjaan akan dimulai sebelum radio-silence
menyelesaikan modifikasi file. Buat /etc/init/radio-silence-wait.conf
sebagai berikut:
# 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
Dengan solusi ini saya tidak lagi melihat masalah kondisi ras, meskipun saya belum membahas ras teoritis antara rfkill-restore
dan network-manager
.
Untuk perincian lebih lanjut tentang bagaimana pekerjaan ini bekerja bersama untuk mencapai tujuan temporal kami, lihat pertanyaan dan jawaban saya, "Bagaimana cara saya membuat pekerjaan baru dengan eksekusi tunggal yang dijamin selesai sebelum dua pekerjaan lainnya dimulai?"
Solusi "Modern" menggunakan Network Manager: cukup hapus centang pada opsi Wireless Enabled di applet Network Manager (KDE: Network Management). Perintahnya nmcli nm wifi off
setara. Lanjutkan membaca jika Anda mengaktifkan Wi-Fi secara sporadis, tetapi ingin mengembalikannya ke dinonaktifkan saat reboot.
Status nirkabel diingat dalam file /var/lib/NetworkManager/NetworkManager.state
. Untuk menonaktifkan Wi-Fi saat boot, pastikan kunci WirelessEnabled
tetap menyala false
. Anda dapat melakukannya dengan mengedit skrip init Network Manager, atau dengan menggunakan /etc/rc.local
trik di bawah ini. Perintah yang Anda butuhkan adalah:
sed s/^WirelessEnabled=true/WirelessEnabled=false/ -i /var/lib/NetworkManager/NetworkManager.state
rfkill block wifi
Letakkan ini sebelumnya exit 0
(seperti dijelaskan di bawah). The rfkill block wifi
perintah masih diperlukan karena ras dengan startup dari Network Manager (NM). Setelah NM dimulai, perubahan pada file status tidak berpengaruh.
(jawaban lama yang melibatkan pengeditan file /etc/rc.local
dengan penjelasan rfkill
perintah)
Agak macet, tetapi seharusnya bisa. Kartu nirkabel dapat dinonaktifkan menggunakan rfkill
perintah. Semua perangkat yang digunakan oleh rfkill dapat ditampilkan menggunakan rfkill list
. Output sampel:
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
Hard blocked
tergantung pada pengaturan perangkat keras, mis. sakelar nirkabel pada notebook. Soft blocked
dapat dikontrol oleh OS (Ubuntu).
Bagaimana cara kerjanya? Tidak memiliki halaman manual, menjalankan rfkill
menyediakan teks bantuan dalam hal ini:
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, sekarang kita sampai di suatu tempat. Anda harus menjalankan rfkill block wifi
sebagai root untuk menonaktifkan perangkat nirkabel. (wlan adalah alias dari wifi, lihat kode sumber dari rfkill ).
Sekarang, jika Anda ingin menonaktifkan fungsi nirkabel saat boottime, tambahkan perintah ke /etc/rc.local dengan menjalankan sudo nano /etc/rc.local
. Gunakan tombol panah / halaman atas / bawah untuk menavigasi ke baris sebelumnya exit 0
dan menambahkan rfkill block wifi
, sehingga file berakhir seperti ini:
# By default, this script does nothing
rfkill block wifi
exit 0
Setelah selesai, tekan Ctrl+ X, lalu tekan Yuntuk menyimpannya dan tekan Enteruntuk menerima nama file.
Jika Anda memutuskan untuk mengaktifkan perangkat kemudian, jalankan: sudo rfkill unblock wifi
. Jangan lupa untuk menghapus saluran dari /etc/rc.local jika Anda memutuskan untuk menggunakan kartu nirkabel.
/etc/rc.local
karena skrip dijalankan dengan izin root. Sangat tidak mungkin Anda dapat menonaktifkan wifi tanpa izin root. Jika saya mencobarfkill block wifi
ataurfkill unblock wifi
, saya mendapatkan "Tidak dapat membuka perangkat kontrol RFKILL: Izin ditolak".$ rfkill block wifi
menyebabkan applet NetworkManager menampilkan "Nirkabel dinonaktifkan" dan$ iwconfig
untuk ditampilkanTx-Power=off
.$ rfkill unblock wifi
batalkan efek ini./etc/rc.local
. Gunakan ini sebagai gantinya:/bin/sleep 10 && rfkill block wifi
/var/lib/NetworkManager/NetworkManager.state
file yang tetap ada pengaturannya,WirelessEnabled=false
adalah salah satunya. Saya akan memposting pertanyaan Anda ..Cara termudah untuk menonaktifkan kartu nirkabel Anda adalah klik kanan pada indikator NetworkManager (ikon kecil di kanan atas pada panel), dan hapus centang
Enable Wireless
. Ini menurunkan (ifconfig wlan0 down
) antarmuka dan tidak melakukan pemindaian lagi.sumber
Catatan: Jika Anda menggunakan
tlp
, harap baca seluruh jawaban.Semua jawaban untuk pertanyaan ini sudah cukup tua sekarang dan tidak berfungsi pada rilis Ubuntu yang lebih baru yang menggunakan systemd. Jawaban froage bekerja untuk saya pada 14,04 tetapi tidak bekerja pada 16,04.
Systemd menggunakan
systemd-rfkill.service
untuk menyimpan status sakelar rfkill selama shutdown dan mengembalikannya pada setiap boot.Anda harus melewati parameter baris perintah kernel untuk mengembalikan status rfkill switch pada setiap boot.
/etc/default/grub
dengan editor teks pilihan Anda.systemd.restore_state=1
sebagai parameter keGRUB_CMDLINE_LINUX
. Baris itu sekarang harus dibacaGRUB_CMDLINE_LINUX="systemd.restore_state=1"
. Anda dapat menambahkannyaGRUB_CMDLINE_LINUX_DEFAULT
juga. Keduanya bekerja. Lihat pertanyaan ini untuk lebih jelasnya.Ini akan memastikan bahwa status rfkill akan dipulihkan pada setiap boot. Pastikan untuk mematikan bluetooth dan wifi sebelum memulai kembali.
Masalah dengan
tlp
:Pembaruan: Masalah-masalah ini hadir di
tlp 0.8-1
mana tersedia dalam repositori 16,04. Setelah memperbaruitlp 0.9-1
menggunakan linrunner ppa, SEMUA emisi diselesaikan.Jawaban asli:
tlp
mask / nonaktifkansystemd-rfkill.service
untuk "menghindari konflik dan memastikan operasi yang tepat dari opsi peralihan perangkat radio TLP" . ( Sumber-1 , Sumber-2 )Ini berarti melewatkan parameter kernel tidak akan bekerja untuk Anda.
Berikut ini adalah potongan kecil (sekitar baris no. 195) dari file konfigurasi default tlp (
/etc/default/tlp
).Seperti yang Anda lihat opsi untuk
RESTORE_DEVICE_STATE_ON_STARTUP
dinonaktifkan secara default. Tetapi mengaktifkan opsi itu tidak membantu.Bahkan setelah Anda mengaktifkan opsi untuk
RESTORE_DEVICE_STATE_ON_STARTUP
, menonaktifkan wifi dan bluetooth (menggunakanrfkill block all
) dan terus restart, entah bagaimana WiFi diaktifkan pada setiap boot ke-2 atau ke-3. Tidak ada jaminan bahwa pada boot berikutnya WiFi akan dinonaktifkan. Anehnyatlp
mengelola untuk menonaktifkan Bluetooth pada setiap boot.Hal yang sama berlaku untuk opsi ke-2 dalam cuplikan
DEVICES_TO_DISABLE_ON_STARTUP
, yang juga dinonaktifkan secara default. Mengaktifkannya juga tidak berfungsi.Network Manger
menunjukkan bahwa WiFi dinonaktifkan tetapirfkill list
tidak menunjukkan blok lunak pada WiFi.tlp-rdw
tidak berfungsi seperti yang diharapkan.Solusi untuk
tlp
pengguna:Pembaruan: Perbarui untuk
tlp 0.9-1
menggunakan linrunner ppa.Jawaban asli:
Mengaktifkan
DEVICES_TO_DISABLE_ON_STARTUP
dan mengaturnya untuk menonaktifkan Bluetooth dan WiFi dapat bekerja untuk Anda. ( Ini berlaku untuk orang ini )Pertanyaan ini di sini di askubuntu. Ini mirip dengan jawaban yang lebih lama untuk pertanyaan ini. Tetapi harap dicatat bahwa saya belum mencobanya sendiri. Mungkin berhasil atau tidak.
Sumber lain: systemd-rfkill , tlp-configuration
sumber
GRUB_CMDLINE_LINUX
danGRUB_CMDLINE_LINUX_DEFAULT
ditambah perintah (tidak disebutkan)sudo update-grub
dan saya tidak bisa membuatnya bekerja di Pop_OS! 19.10 (yang didasarkan pada Ubuntu 19.10). Menurutnyasystemctl status systemd-rfkill
, layanan ini sudah dijalankan pada setiap boot dan, karena nilai defaultnya1
, tidak perlu ada upaya ini. Berdasarkan info diman systemd-rfkill
, mengingat status radio "saat boot awal" harus menjadi perilaku default, yang membuat saya percaya bahwa komponen ini entah bagaimana rusak.Secara pribadi saya menggunakan Jupiter applet manajemen daya untuk menonaktifkan nirkabel di laptop saya karena dikendalikan oleh tombol khusus. Saya tidak berpikir ada di repo utama saya harus menambahkan ppa dari Andrew di Webupd8 untuk mendapatkannya.
Semoga ini membantu.
sumber
Anda bisa menambahkan
ifconfig wlan0 down
untuk
/etc/rc.local
, tetapi pertama-tama,pastikan bahwa, jika Anda menggunakan NetworkManager (saya memiliki versi 0.8.4 ~ git.20110319t175609.d14809b-0ubuntu3), Anda masuk ke menu " Edit Koneksi " -> tab " Nirkabel ", klik pada koneksi, klik " Edit " , dan pastikan bahwa, di tab " Nirkabel ", kotak centang " Sambungkan Secara Otomatis " TIDAK dicentang.
sumber
rfkill
.