Saya lebih suka menonaktifkan sebagian besar konfigurasi jaringan otomatis dan hal-hal daemon manajemen koneksi dan menanganinya sendiri. Berikut ini skrip (bash) yang akan menjaga koneksi selama jaringan masih ada dan Anda tidak memiliki driver wifi yang bermasalah atau masalah daya; idenya adalah melakukan ping ke router setiap N detik, dan jika itu gagal, sambungkan kembali:
#!/bin/bash
# make sure we aren't running already
what=`basename $0`
for p in `ps h -o pid -C $what`; do
if [ $p != $$ ]; then
exit 0
fi
done
# source configuration
. /etc/wifi.conf
exec 1> /dev/null
exec 2>> $log
echo $(date) > $log
# without check_interval set, we risk a 0 sleep = busy loop
if [ ! "$check_interval" ]; then
echo "No check interval set!" >> $log
exit 1
fi
startWifi () {
dhclient -v -r
# make really sure
killall dhclient
iwconfig $wlan essid $essid
dhclient -v $wlan
}
ifconfig $eth down
ifconfig $wlan up
startWifi
while [ 1 ]; do
ping -c 1 $router_ip & wait $!
if [ $? != 0 ]; then
echo $(date)" attempting restart..." >> $log
startWifi
sleep 1
else sleep $check_interval
fi
done
Jadi, /etc/wifi.conf
dalam hal ini mungkin mengandung:
router_ip=192.168.0.1
log=/var/log/wifi.log
wlan=wlan0
eth=eth0
essid=someNetwork
check_interval=5
Ini semua menganggap jaringan terbuka tidak terenkripsi (jika tidak, Anda harus menambahkan perintah yang sesuai). Saya telah menggunakan pendekatan ini pada berbagai mesin linux, termasuk pi, dan ia bekerja dengan sempurna; itu akan membuat sistem online tanpa batas, bahkan jika secara berkala pergi tidur (yang pi tidak bisa tetap).
Interval pemeriksaan yang layak adalah 3-5 detik; kegiatan ini tidak akan berdampak signifikan terhadap sumber daya sistem sama sekali.
Anda benar-benar perlu menonaktifkan konfigurasi jaringan terlebih dahulu ,. termasuk ifplugd
dan daemon jaringan lainnya, atau ini akan mengganggu upaya Anda:
Bagaimana saya bisa menonaktifkan jaringan yang dikonfigurasi otomatis pada Raspbian?
Saya sebenarnya digunakan apt-get remove ifplugd
.
Untuk memulai jaringan saat boot (karena saya menggunakan pi headless), saya memiliki set ini untuk dijalankan pada raspbian dari /etc/rc.local
:
wifi_mod=`lsmod | grep 8192cu`
if [ "$wifi_mod" ]; then
echo "Starting wifi..."
/usr/bin/nice -n -10 /usr/local/bin/wifi &
else
echo "Starting ethernet..."
/sbin/ifconfig eth0 up
/sbin/dhclient eth0
fi
/usr/local/bin/wifi
adalah skrip. Jika Anda tidak tahu untuk apa nice
, baca man nice
.
Intinya if
adalah bahwa jika dongle wifi saya dicolokkan ke pi, modul 8192cu akan dimuat oleh kernel pada saat ini - jadi wifi harus dimulai. Jika tidak, maka diasumsikan bahwa ethernet dicolokkan dan harus digunakan (jika tidak, dhclient hanya akan omong kosong dan tidak ada akses jaringan).
Agar ini berfungsi, Anda mungkin harus melakukannya
Jadi, ini mendapatkan pi tanpa kepala ke jaringan saat boot dan menyimpannya di sana. Jika Anda ingin cara untuk beralih ke eth saat berjalan tanpa masuk, Anda bisa melakukan sesuatu dengan aturan udev untuk menarik dongle wifi keluar.
rc.local
. Rotasi log WRT, yaitu pertanyaan terpisah yang berhubungan dengan file log secara umum (tetapi lihatman logrotate
). Sekarang skrip itu akan mengecam (menimpa) log sebelumnya jika ada dengan jalur yang sama, bukan ditambahkan. Untuk debugging saya kadang-kadang digunakanwifi.$$.log
dalam file wifi.conf, sehingga log terakhir adalah (tidak mungkin) untuk musnah dan saya dapat membandingkan satu sesi dengan yang lain setelah saya men-tweak sesuatu.$$
adalah pid dari proses "wifi".Nah, ada solusi yang sangat sederhana:
/etc/ifplugd/action.d/
dan ganti namaifupdown
file menjadiifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
Itu saja. Uji ini dengan mematikan / menggunakan AP Anda; Anda harus melihat bahwa Raspberry Pi Anda terhubung kembali dengan benar.
sumber
action_wpa -> ../../wpa_supplicant/action_wpa.sh
, jadi mungkin ini adalah default sekarang?dhcpcd
distro berbasis, untuk menjalankan ini pada RPI3 Anda perluapt-get install rcconf
dan beralih daridhcpcd
kenetworking
Baru-baru ini saya menemukan aplikasi konsol yang menyortir semua konfigurasi nirkabel. Anda juga dapat menggunakan alat ini untuk mengkonfigurasi antarmuka LAN.
Ini akan menginstal beberapa paket lain dan menjalankan daemonnya sendiri di latar belakang, tetapi tentu saja membuat semuanya lebih mudah. Jalankan dengan
Jika Anda menerima pesan yang mengatakan tidak ada jaringan yang terdeteksi, tekan
P
(harus huruf besar, jadi gunakan [SHIFT] p) dan ketik wlan0 di bidang antarmuka nirkabel dan tekan F10 untuk menyimpan.R
untuk menyegarkan daftar.Anda mungkin harus menekan
C
untuk menghubungkan ke titik akses. Jika Anda menggunakan kabel, kemungkinan besar akan mematikan antarmuka LAN dan memunculkan nirkabel.Itu juga mengelola koneksi sehingga akan menyambung kembali ke titik akses nirkabel yang dikonfigurasi jika putus karena alasan apa pun.
Saya diuji memasukkan adaptor WiFi dan memasangnya kembali. Butuh sekitar 60 ~ 90 detik tetapi itu akan terhubung kembali ke WiFi (saya pikir LAN harus dicabut meskipun)
Semoga ini bisa membantu!
sumber
wicd
wicd-curses
, RPi 3 saya mulai membeku secara acak. Tidak pernah membeku sebelumnya dan pembekuan menghilang segera setelah saya mencopotnya. Waspadalah!Ini dapat diselesaikan tanpa skrip tambahan.
Di / etc / network / interfaces put:
allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Roaming memungkinkan antarmuka untuk sembuh sendiri.
sumber
netcfg
Coba
netcfg
. Tanpa perincian lebih lanjut tentang distribusi mana yang Anda gunakan, saya tidak dapat memberikan lebih banyak perincian lagi, tetapi harus melakukan apa yang Anda inginkan.sumber
Solusi lain, seperti yang diekstrak dari yang ini .
Pertama-tama konfigurasikan pengaturan wifi Anda:
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
menambahkan bagian seperti ini:Kemudian pengaturan jaringan Anda dengan
sudo vi /etc/dhcpcd.conf
:Kemudian buat file skrip ini di suatu tempat, misalnya di
/home/pi/reconnect.sh
dan berikan+x
izin untuk dieksekusi.Kemudian login sebagai root dengan
sudo su
dan edit crontab root dengancrontab -e
.Di akhir file ini tambahkan baris ini:
10 * * * * /home/pi/reconnect.sh
Itu berarti: "jalankan script itu setiap 10 menit (sebagai root)"
Sekarang, jika Anda memiliki koneksi maka skrip akan keluar dan tidak ada yang terjadi. Jika Anda tidak dapat melakukan ping router, maka skrip akan mencoba menyambung kembali menggunakan wpa_supplicant.
Perhatikan bahwa segala sesuatu yang digaungkan dari skrip cron (dalam hal ini hanya saat terputus) akan diemail ke root. Jadi jika Anda telah mengonfigurasi alias email dan catatan tambahan Anda, maka Anda akan menerima email setiap kali koneksi wifi pi Anda turun dan kemudian berhasil kembali lagi berkat skripnya.
sumber
Ini berhasil bagi saya, menggunakan Raspian Jessie pada 30 Maret 2014:
http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi-on-a-raspberrypi/
sumber