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への接続に成功できました。

4 comments:

  1. 初めまして。ちょうど2.4GHzか5.0Ghzかで困っていたところでした。更に初心者であって、airportに何らかの方法でパスを通しておいて...というのはどうやったら良いのでしょうか。

    ReplyDelete
  2. http://qiita.com/isaoshimizu/items/f868e9264512958fa638
    コマンドラインからAirportを使うにはこれで良いらしい…

    ReplyDelete
  3. alias airport=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport
    ↑を使用すれば略できますよ

    ReplyDelete
  4. 初めまして。私も5GHzに固定したくて,ここへたどり着きました。この通りにやってみましたが,Wi-Fiを切にしてから,また入りにすると,やはり2.4GHzをつかんでしまいます。
    $ airport -c44
    を実行すると,
    root required to change channel
    と出ますが,?です。何が悪いのでしょうか?
    教えていただけたら幸いです。

    ReplyDelete

DroidKaigi 2020 中止のうらばなし

既に公表されているとおり 、2/20,21の DroidKaigi 2020は中止になってしまいました。 実行委員のひとりとして多少なりともDroidKaigi 2020の準備に関わった立場から、今回の中止に関して感じたことを簡単に備忘も兼ねて書いておきます。 私のDroi...