關(guān)于黑蘋果下Intel無線網(wǎng)卡無故斷流的修復(fù)

目前太多機(jī)器(我指的是筆記本)選擇將無線網(wǎng)卡焊接在主板上了,而且,網(wǎng)卡的芯片基本上是Intel。這其實(shí)對(duì)大部分人來說并沒什么影響,但是對(duì)于像我這種喜歡使用黑蘋果的人來說,影響就有些大了,至少在去年以前:這個(gè)卡在黑蘋果里是沒法使用的,要想使用無線,要么是搞一塊外接的USB無線網(wǎng)卡,要么是犧牲一塊NVME插槽(如果你的機(jī)器湊巧支持雙NVME的話)來做轉(zhuǎn)接。但是,好的一點(diǎn)是去年一個(gè)國內(nèi)大佬做出了Intel網(wǎng)卡、藍(lán)牙的黑蘋果驅(qū)動(dòng),地址:
OpenIntelWireless

目前,該驅(qū)動(dòng)的穩(wěn)定版為1.3.0,測(cè)試版為2.0.0,經(jīng)過測(cè)試已經(jīng)可以驅(qū)動(dòng)市面上常見的Intel無線網(wǎng)卡。

但是,在我個(gè)人的日常使用中,時(shí)常會(huì)出現(xiàn)掉線,經(jīng)過與原作者Z大溝通以及抓包測(cè)試,目前給的結(jié)論是:密鑰過期了。暫時(shí)不清楚是什么原因造成的。

實(shí)際使用過程中,如果發(fā)生掉線通常重連一下網(wǎng)絡(luò)就可以恢復(fù)正常,所以就萌發(fā)了個(gè)念頭:讓機(jī)器自己隨時(shí)監(jiān)測(cè)是不是與路由器斷開,是的話就自己直接重連,不讓人工參與?有了這個(gè)想法,就弄了下面這個(gè)shell腳本來實(shí)現(xiàn):

## 路由器名稱
routername="OpenWrt"
## 路由器密碼
password="12345678"
## 路由器IP
routerip="192.168.1.1"
## 網(wǎng)卡名稱
netcardname="en1"

play() {
    hour=$(date "+%H")
    if [[ $hour -gt 21 ]] ; then
        echo $1
    elif [[ $hour -lt 8 ]] ; then
        echo $1
    else
        say $1 -r 250
    fi
}

connectAirport() {
    networksetup -setairportpower $4 off
    sleep 2
    play "開始嘗試第一次連接無線網(wǎng)絡(luò),請(qǐng)等待"
    echo "關(guān)閉 Airport"
    networksetup -setairportpower $4 on
    echo "等待2秒后嘗試連接 $1"
    sleep 2
    echo "嘗試連接 $1"
    networksetup -setairportnetwork $4 $1 $2
    echo "等待 5 秒后檢測(cè)連接狀態(tài)"
    sleep 5
    if [[ $(ping -i1 -c1 -t1 $3|grep "100.0% packet loss") == "" ]] ; then
        return
    else
        play "第一次修復(fù)失敗,繼續(xù)嘗試修復(fù)"
        echo "嘗試連接到 $1"
        networksetup -setairportnetwork $4 $1 $2
        echo "等待10秒后檢測(cè)連接狀態(tài)"
        sleep 10
        if [[ $(ping -i1 -c1 -t1 $3|grep "100.0% packet loss") == "" ]] ; then
            return
        else
            play "無法修復(fù),請(qǐng)手動(dòng)處理"
            echo "Can't find $1, Break"
            exit
        fi
    fi
}

echo "開始監(jiān)控網(wǎng)卡狀態(tài)并嘗試修復(fù)"
times=0
while [ 1 ]
do
    if [[ $(ping -i1 -c2 -t2 $routerip|grep " 0 packets received") == "" ]] ; then
        continue    ###網(wǎng)絡(luò)工作正常
    else
        ((times=times+1))
        time=$(date "+%Y-%m-%d %H:%M:%S")
        echo "$time 網(wǎng)絡(luò)第 $times 次斷開"
        play "網(wǎng)絡(luò)已經(jīng)斷開,開始修復(fù)"
        echo $(ping -i1 -c2 -t2 $routerip)
        connectAirport $routername $password $routerip $netcardname;
        play "修復(fù)成功,繼續(xù)監(jiān)控"
    fi
done

將上述代碼保存一下比如~/checkAirport.command,然后在終端執(zhí)行

chmod +x ~/checkAirport.command
~/checkAirport.command

第一條給這個(gè)文件賦上可執(zhí)行權(quán)限,第二條就執(zhí)行它,扔那測(cè)試吧。上述代碼的原理其實(shí)就是不停的發(fā)送ping命令來檢測(cè)是否與指定的路由斷開(間隔1s)如果斷開就嘗試關(guān)閉無線然后重新開啟并嘗試連接指定的路由器。

再說明一下:上述腳本針對(duì)的是AirportItlwm.kext,使用Z大的另一個(gè)驅(qū)動(dòng)itlwm.kext是不存在掉線的問題的,只是不支持接力。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 兼容情況說明: 本機(jī)配置表:電腦型號(hào) :Aspire E1-471G 筆記本電腦操作系統(tǒng) : ...
    Bug2Coder閱讀 20,503評(píng)論 9 7
  • 前言 白蘋果價(jià)格高昂,不是所有人都能接受,黑蘋果因此誕生。 本就為了便宜的黑蘋果,憑什么還要去買因黑蘋果而溢價(jià)達(dá)三...
    thepoy閱讀 53,096評(píng)論 0 2
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,938評(píng)論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn),但是人生放棄了冒險(xiǎn),也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 8,212評(píng)論 0 4

友情鏈接更多精彩內(nèi)容