Sunday, January 20, 2013

Mac(Mountain Lion)のWi-Fiで5GHz帯を優先して使いたい

年明け早々、MacBookAirを買いました。Macを買うのは17年ぶりです。
Mountain LionとかいうOSで、昔の知識はほとんど役に立ちません。
初心者同然です。

そして、早速、トラブりました。

スターバックスなどで、公衆無線LANに接続しようとすると、2.4GHzのアクセスポイントばかり繋ぎに行ってしまい、なかなか5GHzのアクセスポイントを捕まえてくれないのです。
2.4GHz帯は都市部では無茶苦茶混雑しているので、可能な限り利用するのは避けたいものです。

初心者なりに色々調べた結果、次のような事がわかりました。

  • MacOS上では2.4GHzと5GHzを選択する事はできない。
    • docomo Wi-Fiau Wi-Fi SPOTのように、同じ名前のSSIDで2.4GHzと5GHzの両方のAPがある時は、ほとんどの場合、2.4GHzのAPに繋がってしまう
  • optionを押しながらメニューバーのAirMacアイコンをクリックすると、SSID毎にチャネルや周波数が表示されるので、とりあえずどのAPに繋がっているのかはわかる。
    • ただし複数のAPが同じSSIDを使っている場合は、そのうちの一つしか表示されない。
    • また、Wi-Fi Diagnosticという隠しユーティリティを起動することができる。全てのAPのチャネルとMacアドレスを表示してくれたり、ノイズの状況をグラフ表示してくれたりして、それなりに便利。Wi-Fi Diagnosticについては、「那覇レポート: Mountain Lion新機能Wi-Fi Diagnosticsツール」に詳しい。
  • /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport という隠しコマンドがある。AirPort Utilityとは似て非なるもので、Wi-Fi Diagnosticのコマンドライン版のようなもの。引数無しで起動すればオプションが表示されるので、それを見れば、使い方は大体わかる。
    • 次のようなオプションがある。
      • -c数字, --channel=数字 チャネルを指定する
      • -z, --disassociate 全てのネットワークから切断する
      • -I, --getinfo 接続中のネットワークの情報を表示する
      • -s,--scan APの一覧を表示する
      • -x,--xml XML形式で出力する
      • -P,--psk パスフレーズからPSKを生成する
    • -cや-zを使うには、管理者権限が必要。

という訳で、aiport -s で接続したいチャネルを調べて、airport -c で指定すれば5GHzなチャネルに接続できそうです。

早速、某所のスターバックスに行ったときに試してみました。目標はdocomo Wi-Fiの5GHz APへの接続です。

airportに何らかの方法(略)でパスを通しておいて、まずは接続状況を調べます。

$ airport -I
     agrCtlRSSI: -75
     agrExtRSSI: 0
    agrCtlNoise: -90
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 36
        maxRate: 54
lastAssocStatus: 0
    802.11 auth: open
      link auth: none
          BSSID: XX:XX:XX:XX:XX:XX
           SSID: docomo
            MCS: -1
        channel: 1

となりました。チャネル番号は1〜14が2.4GHz、36〜140が5GHzですから、見事に2.4GHzなAPを掴んでしまっています(先述のように、optionを押しながらAirMacアイコンをクリックしても、チャネル番号を確認できます)

そこで、5GHzなAPを探します。
スキャンすると…

$ airport -s| grep docomo
                          docomo XX:XX:XX:XX:XX:XX -70  1       N  JP WEP
                          docomo YY:YY:YY:YY:YY:YY -75  36      N  JP WEP


という結果でした。2つ並んだ数値の、右側の値がチャネル番号です。
このスタバに設置されているdocomo Wi-Fiは、チャネル1(2.4GHz)とチャネル36(5GHz)を使っている事がわかりました。
そこで、

$ sudo airport -c36

を実行してみると…



となりました。もちろん、airport -Iでも同じ結果になっています。
という訳で、少々手間はかかりますが、無事に5GHzなAPへの接続に成功できました。

DroidKaigi 2016 うらばなし

 2/18, 19の2日間で、DroidKaigi 2016の2日間が終わりました。  講演された皆様からも聴講された皆様からも大変にご好評だったようです。立ち上げから関わった者としては嬉しい限りです。  私はDroidKaigi 2016は準備を手伝っただけで、当日は参加...