Mac
WiFi

カッフェーでWiFiが突然繋がらなくなったときに打つコマンド

僕はスタバやタリーズによく滞在してMacを開いているんですが、
なぜか突然レスポンスが帰ってこなくなり接続できなくなる時があります。
ブラウザで認証用のページにリダイレクトされることもなく、ただstuckしてしまう現象です。
もちろん電波強度は悪いわけではありません。

こういうときは経験上、メニューバーのWi-Fiメニューからwifiをオフにしてonにすると治ります。

ただ毎回手動でやっていると面倒なので、terminalでコマンドで解決できるようにしました。

こんなfunctionを作る

これを.bashrcあたりに追記します。

# ssidを取得するコマンド
alias ssid=$'/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I | awk \'/ SSID/ {print substr($0, index($0, $2))}\''

wifireset ()
{
    ssid=$(ssid)
    networksetup -setairportpower en0 off
    echo 'Re-enabling Wi-Fi...'
    networksetup -setairportpower en0 on
    echo "Reconnecting ${ssid}..."
    networksetup -setairportnetwork en0 "$ssid"
    echo 'Done.'
}

詳細な説明は省きます。使っているコマンドはどれもMac固有のものです。以下でヘルプを見てください。

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --help
networksetup -help

en0の部分はネットワークインターフェース名なので、環境によって異なると思います。ifconfigでそれっぽいinterface名を探して書き換えてください。

使用例

$ wifireset
Re-enabling Wi-Fi...
Reconnecting tullys_Wi-Fi...
Done.

課題

そもそもこのwifiの切れる原因となぜ接続し直すと治るのかがわかっていません。ゲートウェイのセッション数が限界に達した?? いろんなwifi飛びすぎていて物理層で干渉した?? Macがチャネルの変更に追従できなくなった??