2016年4月18日月曜日

I-O DataのWN-AC433UAをArch Linuxで使う

(追記:2017年4月19日)最近のカーネルでは、この記事のドライバでは問題がありそうです。新たに記事を起こしましたので、ご参照ください。

WiFi APの構築をしています。NCUで。

当初はVyOSを使おうとしていたんですが、IntelのNCUではbootできませんでした。あと、内蔵Wi-FiモジュールはLinux Kernel 4.2以上が必要ということで、3であるVyOSは対象から除外することとなりました。それでいろいろ苦労しております。

そのあたりは後述するとして、この際LinuxはArch Linuxにしようと決めました。理由はただひとつ、どんどん新しくなるからセキュリティ対応も早かろうと。

Wi-FiのAPなので、アンテナが外部に出ていたほうがなにかと便利と思い、I-O DataのWN-AC433UAがなんだか在庫があるということで、何も考えずに注文して届いたわけですが、当然Arch Linuxでは認識できないわけです。動いたという報告が見当たらなくて、しばらく途方に暮れていたのですが、日をあらためて調べ直すと、チップセットは「Realtek RTL8811AU」とのこと。つまり、このカーネルモジュールを入れればよいということになります。

すると簡単に、AURとして「rtl8812au_rtl8821au-dkms-git」があることがわかりました。名前はあれですが、RTL8811AUもサポートすると書かれています。

そうくればあとは簡単です。

とりあえず、AURの環境が準備されていなかったので、こちらの手続きにしたがって、yaourtでAURのパッケージコンパイルとインストールができるようにします。

そして、linux-headers、dkms、rtl8812au_rtl8821au-dkms-gitをインストールすることになります。最初はカーネルモジュールだけ入れて、dkmsが必要と言われてdkms、linux-headersがないと言われてlinux-headersを入れたのですが、この逆がよいのではないかと思います。

sudo yaourt -S linux-headers dkms
sudo yaourt -S rtl8812au_rtl8821au-dkms-git
dkmsを使うのは初めてだったので再起動してしまったのですが、そうしなくてもなんとかなるんだろうとは思います。

これでdkms statusすると
$ dkms status
rtl8812au_rtl8821au, 4.3.22_beta.r9.928e27f, 4.5.0-1-ARCH, x86_64: installed
と、カーネルに組み込まれていることがわかります。そこでおもむろにWN-AC433UAをUSBポートに挿し、lsusbすると
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 8087:0a2a Intel Corp.
Bus 001 Device 004: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 002: ID 04bb:0953 I-O Data Device, Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
こんな感じで見えるようになりました。ip linkすると、
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4: wlp0s20u1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether yy:yy:yy:yy:yy:yy brd ff:ff:ff:ff:ff:ff
ちゃんとデバイスが生えています。よかった。

まだ通信テストができていませんが、それはこれから。