android wifi hotspot channel

手上有一隻歐洲地區的手機開啟 2.4G wifi hotspot 之後,有時我的 hTC eye 能發現 hotspot 有時不能,而且不能的機會超過80%

後來拿了兩隻歐洲地區的手機透過 wifi analyzer 分析

原來是因為這歐規的手機可以使用的 2.4G channel 是 ch1-ch13

台灣手機只支援 ch1-ch11

所以當歐規手機啟動 wifi hotspot 並且選擇 ch13 的時候,就會導致 hTC eye 找不到 hotspot

而且因為台灣 wifi 預設都不會使用 ch13,所以那隻歐規手機做 ACS 的時候特別容易選到 ch13

所以針對這個問題可以朝向「讓 wifi hotspot 頻道選擇非 ch13 」來解決

找了些或許可以動的地方大概是:

  1. hotspot APP: 但是看了 Android API 發現沒有設定 channel 的參數,所以不行
  2. /system/bin/netd: 寫入 /data/misc/wifi/hostapd.conf 的時候寫入 chanlist:1-11,但是我那隻歐規機是 MTK  chipset,實際測試起來 MTK hostapd 並沒有實做 chanlist,所以不行
  3. 改 kernel 裡面 wifi module 設定的範圍,把 {81, BAND_2G4, CHNL_SPAN_5, 1, 13, FALSE} 改成 {81, BAND_2G4, CHNL_SPAN_5, 1, 11, FALSE}。這個方法實測起來可行,但是會需要修改 kernel 風險比較高,並且 OTA boot.img 代價就是 9MB
  4. /system/bin/hostapd: 再執行完 ACS(hostapd_drv_do_acs) 的時候判斷如果選出來的頻道是 ch13, 就重新賦值為 ch6。我那隻歐規機使用的 MTK-ACS 只有提供出第一好的頻道,沒有提供出第二好的頻道。否則原本想要修改成如果頻道選到 ch13 的話就改用第二順位的頻道

 

 

發表留言