2016年4月3日日曜日

ubuntuにWN-AC433UKを認識させてWiFiする件

WN-AC433UKを買ってみた。
http://www.iodata.jp/product/network/adp/wn-ac433u/
どうもドコモ光のルーターのWiFiの受信がPCだけ弱かったので。

しかしUbuntu15.04のPCに挿してもうごかね
ドライバーの追加をやっても検出しない。

ここであきらめようかとも思ったが
しつこく考えてみた。

まず分かったのはドライバーはmt7610u_wifi_sta_v3002_dpo_20130916で
http://www.mediatek.com/en/downloads1/downloads/mt7610u-usb/
にあるということ。もし切れてたら
http://www.mediatek.com/en/downloads1/downloads/
でMT-7610UのLINUX向けをヒントに探してくれ
要するにIODATAは自前でチップを作ってなくてMEDIATEKのMT-7610Uというチップセット
をWN-AC433UKに使っているってこと。

でこれを解凍して使おうとしたが、コンパイルに失敗する。
で更に調査

ここからの書き換えは
http://qnighy.hatenablog.com/entry/2015/02/05/155016
のとおりでOKだが更に
 -Wno-error=date-time
のフラグをGCCに追加してできた。

列記する
\common\rtusb_dev_id.cの45行目



USB_DEVICE_ID rtusb_dev_id[] = {
#ifdef MT76x0
    +{USB_DEVICE(0x2019,0xAB31)}, /* GW-450D */
    +{USB_DEVICE(0x04BB,0x0951)}, /* WN-AC433UK */
    {USB_DEVICE(0x148F,0x7610)}, /* MT7610U */
    {USB_DEVICE(0x0E8D,0x7610)}, /* MT7610U */
    {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7630, 0xff, 0x2, 0xff)}, /* MT7630U */
    {USB_DEVICE_AND_INTERFACE_INFO(0x0E8D, 0x7650, 0xff, 0x2, 0xff)}, /* MT7650U */
#endif
    { }/* Terminating entry */
};  

\conf\RT2870STA.datの7行目
ChannelGeography=1
-SSID=11n-AP
+SSID=
NetworkType=Infra
WirelessMode=5
EfuseBufferMode=0
 
\conf\RT2870STA.datの22行目

 WmmCapable=1
AckPolicy=0;0;0;0
-AuthMode=OPEN
+AuthMode=WPA2PSK
-EncrypType=NONE
+EncrypType=AES
WPAPSK=
DefaultKeyID=1


\include\os\rt_linux.hの280行目
typedef struct _OS_FS_INFO_
{
    -int                fsuid;
    +kuid_t                    fsuid;
    -int                fsgid;
    +kgid_t                    fsgid;
    mm_segment_t    fs;
} OS_FS_INFO;

\os\linux\config.mkの26行目
# Support Wpa_Supplicant
# i.e. wpa_supplicant -Dralink
-HAS_WPA_SUPPLICANT=n
+HAS_WPA_SUPPLICANT=y


# Support Native WpaSupplicant for Network Maganger
# i.e. wpa_supplicant -Dwext
-HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y




\os\linux\config.mkの216行目
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld

-WFLAGS := -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs
+WFLAGS := -g -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -Wno-error=date-time
WFLAGS += -DSYSTEM_LOG_SUPPORT -DRT28xx_MODE=$(RT28xx_MODE) -DCHIPSET=$(MODULE) -DRESOURCE_PRE_ALLOC -DENHANCED_STAT_DISPLAY
#WFLAGS += -DFPGA_MODE
WFLAGS += -I$(RT28xx_DIR)/include


\os\linux\config.mkの663行目

ifeq ($(HAS_CSO_SUPPORT), y)
WFLAGS += -DCONFIG_CSO_SUPPORT -DCONFIG_TSO_SUPPORT
endif

CHIPSET_DAT = 2860
CHIPSET_DAT = 2870
endif

ここまでやってなんとか認識した。ドライバーのインストールは通常の
makeでOKを確認したあとで
sudo make install
でできた。

一応このファイルを
 https://github.com/kokawa2003/WN-AC433UK-ubuntu-driver
に置いておく。
興味のある人はみて改造してください。
DKMS対応は気が向いたらやります。

なお5Gの方の電波は拾えてない。
理由は不明 場所が悪いのか?