mac のWiFi接続で 2.4Ghz を強制してみた
CoreWLANで 同一SSIDで 2.4 / 5 GHz が飛んでいる場合に、2.4GHz に接続をしてみた。
人が多い時に、あきらかに5GHzが使われて、2GHz帯が空いてそうなので、一度接続してみたいなと思って。
接続しようにもMacが5GHzを使うので、選択できないなと。CoreWLANを読んでたら、明示的につなげそうだったので、繋いでみた。
// // main.m // WiFi-testing // // Created by takuya on 20171130. // Copyright © 2017年 takuya. All rights reserved. // #import <Foundation/Foundation.h> #import <CoreWLAN/CoreWLAN.h> int main(int argc, const char * argv[]) { @autoreleasepool { CWWiFiClient *cw = [CWWiFiClient sharedWiFiClient]; CWInterface *ci = cw.interface; NSSet *set = [ci scanForNetworksWithName:@"00_MCD-FREE-WIFI" error:NULL]; // 2,4GHz is wlanChannel.channelBand == 1 NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"wlanChannel.channelBand == 1 ",set]; CWNetwork *target = [[set filteredSetUsingPredicate:pred2] anyObject]; printf("\nThe target is %s\n", [target.bssid UTF8String]); for (CWNetwork *i in set) { printf("%25s %8s %s % 5ld % 5ld % 5ld % 5lddBm \n", [i.ssid UTF8String], //2=>5Ghz 1=>2.4Ghz ((i.wlanChannel.channelBand==kCWChannelBand5GHz)? "5GHz" : "2.4GHz"), [i.bssid UTF8String], i.rssiValue, i.wlanChannel.channelWidth, i.wlanChannel.channelNumber, i.noiseMeasurement ); } [ci disassociate]; [ci setPower:YES error:NULL]; [ci disassociate]; [ci setWLANChannel:target.wlanChannel error:NULL]; //チャンネルのデフォルトを2.4GHzにする [ci associateToNetwork:target password:NULL error:NULL]; } return 0; }
一応つながる
しかし、すぐに5Ghzにされる。
しかし、接続中に、Macに2.4GHz → 5GHz にされてしまう。
同一SSIDで5GHzが飛んでたらそっちへつなぎ替えるプロセスが居るらしい。どれだ。。。
なんな、launchd から起動されているDAEMONを止めないとダメっぽいぞ。