我正在使用pi監視功率計。使用Edimax EW-7811UN USB適配器通過WiFi連接將數據傳輸到PC。當Wifi連接斷開(通宵關閉或搖晃的連接)時,USB適配器仍保持禁用狀態。 >
我正在使用pi監視功率計。使用Edimax EW-7811UN USB適配器通過WiFi連接將數據傳輸到PC。當Wifi連接斷開(通宵關閉或搖晃的連接)時,USB適配器仍保持禁用狀態。 >
嗯,有一個非常簡單的解決方案:
/etc/ifplugd/action.d /
並重命名 ifupdown
文件到 ifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
僅此而已。通過關閉/打開AP進行測試;您應該會看到Raspberry Pi正確地重新連接。
我更喜歡禁用大多數網絡自動配置和連接管理守護程序,然後自己處理。這是一個(bash)腳本,只要網絡存在,您就不會斷開連接,只要您沒有故障的wifi驅動程序或電源問題即可;想法是每隔N秒對路由器執行一次ping操作,如果失敗,則重新連接:
#!/ bin / bash#確保我們還沒有在`ps h -o pid -C $ what`中為p運行base = $ 0`;如果[$ p!= $$];然後退出0 fidone#源配置。 /etc/wifi.confexec 1> / dev / nullexec 2>> $ logecho $(date)未設置check_interval的> $ log#,我們冒0睡眠=忙碌loopif [! “ $ check_interval”];然後回顯“未設置檢查間隔!” >> $ log exit 1fistartWifi(){dhclient -v -r#確保killall dhclient iwconfig $ wlan essid $ essid dhclient -v $ wlan} ifconfig $ eth downifconfig $ wlan upstartWifiwhile [1];做ping -c 1 $ router_ip &等待$!如果[$? != 0];然後回顯$(date)“嘗試重新啟動...” >> $ log startWifi sleep 1 else sleep $ check_interval fidone
因此, /etc/wifi.conf
在這種情況下,可能包含:
router_ip = 192.168.0.1log = / var / log / wifi.logwlan = wlan0eth = eth0essid = someNetworkcheck_interval = 5
所有這些都假定為開放的未加密網絡(否則,您將必須添加適當的命令)。我已經在包括pi在內的各種linux機器上使用了這種方法,並且可以完美地工作。
一個體面的檢查間隔是3-5秒;即使它定期進入睡眠狀態(pi仍然不能這樣做),它也可以無限期保持在線狀態。此活動完全不會對系統資源產生任何重大影響。
您絕對需要先禁用網絡自動配置 ,。包括 ifplugd
和其他網絡守護程序,否則會干擾您的工作:
我實際上使用了 apt-get remove ifplugd
。
要在啟動時開始聯網(因為我使用了無頭的pi),我將其設置為在 /etc/rc.local :
wifi_mod =`lsmod | grep 8192cu`if [“ $ wifi_mod”];然後回顯“正在啟動wifi ...” / usr / bin / nice -n -10 / usr / local / bin / wifi &else迴聲“正在啟動以太網...” / sbin / ifconfig eth0向上/ sbin / dhclient eth0fi
/ usr / local / bin / wifi
是腳本。如果您不知道 nice
是什麼意思,請閱讀 man nice
。
if
的要點是如果將我的wifi加密狗插入pi,此時內核將加載8192cu模塊-因此wifi應該啟動。如果不是,則假定已插入以太網並且應該使用該以太網(如果不是,則dhclient只會出現錯誤,並且無法訪問網絡)。
要使其正常工作,您可能必須
因此,這會在啟動時將無頭的pi引入網絡並保持在那裡。如果您想要一種無需登錄即可在運行時切換到eth的方法,則可以使用 udev規則進行一些操作,以拔出wifi加密狗。
我最近偶然發現了一個控制台應用程序,該應用程序將所有無線配置都整理了出來。 您也可以使用此工具配置LAN接口。
sudo apt-get install wicd-curses
它將安裝許多其他軟件包並在後台運行自己的守護程序,但這肯定使配置所有內容變得更加容易。如果您收到消息說未檢測到網絡,請使用
sudo wicd-curses
按 P
(必須為大寫字母,所以請使用[SHIFT] p),然後在無線接口字段中鍵入wlan0,然後按F10鍵保存。
R
刷新列表。
您可能必須按 C
才能連接到接入點。如果連接了有線,很可能會殺死LAN接口並啟用無線功能。 p>
我測試了拔出WiFi適配器並將其重新插入的過程。這大約需要60到90秒,但它將重新連接到WiFi(我認為必須拔掉LAN)
希望它有幫助!
不需要額外的腳本即可解決。
在/ etc / network / interfaces中放置:
allow-hotplug wlan0iface wlan0 inet manualwpa-roam / etc / wpa_supplicant / wpa_supplicant.confiface默認inet dhcp
漫遊允許界面自愈。
嘗試 netcfg
。沒有關於您正在使用的發行版的更多詳細信息,我無法提供更多詳細信息,但是它應該可以滿足您的要求。
另一種解決方案,摘錄自 this。
首先配置wifi設置: sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
添加類似部分:
network = {ssid =“ MyNetworkName” psk =“ MyPaz0rdz” key_mgmt = WPA-PSK}
然後使用 sudo進行網絡設置vi /etc/dhcpcd.conf
:
接口wlan0通知192.168.1.200#wifi卡的靜態IP靜態路由器= 192.168.1.254#路由器的ipstatic domain_name_servers = 192.168.1.254#您的dns,通常是=您的路由器
然後在某個地方創建此腳本文件,例如在 /home/pi/reconnect.sh
中並將其賦予 + x
權限以執行。
#!/ bin / bashrouter =`ip路由| awk'/ default / {print $ 3}'`/ bin / ping -q -c1 $ router > / dev / nullif [$? -eq 0]則為true#echo“ Network OK” else echo“ Network down,fix ...”#ifdown --force wlan0#sleep 5 / bin / kill -9`pidof wpa_supplicant` / sbin / ifup --force wlan0 / sbin / ip route通過$ router dev wlan0添加默認值/ bin / mount -a echo“ wlan0 at`date`” fi
重新連接,然後以 sudo su
並使用 crontab -e
編輯root的crontab。
在此文件的末尾添加以下行:
* / 10 * * * * / home / pi / reconnect.sh
這意味著:“每10分鐘執行一次該腳本(以root身份執行)”-注意開頭沒有* /的腳本將“在10分鐘時執行現在,如果您已建立連接,則腳本將退出並且什麼也不會發生。如果您無法ping通路由器,則腳本將嘗試使用wpa_supplicant重新連接到它。
請注意,從cron腳本(在這種情況下,僅當斷開連接時)回顯的所有內容都將通過電子郵件發送到root。因此,如果您已經配置了郵件別名和後記,那麼當您的pi的wifi連接斷開時,您將收到一封電子郵件,然後由於該腳本而再次成功返回。
這對我有用,於2017年3月30日使用Raspbian Jessie:
http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi- on-a-raspberrypi /