ça va ?! 缶

さばかん

USB無線子機 WLI-UC-GNM2 を Ubuntu 17.04 で使う

古いデスクトップPC(Pentium4 3.40GHz)に Lubuntu 17.04 を入れて、息子にあげていたが、やはりインターネットにつなぎたいとのこと。とりあえずイーサネットケーブルを延ばしてつなげてあげていたが、ケーブルが邪魔ということで、無線化を検討。実家に落ちていた Buffalo の WLI-UC-GNM2 という 11n の小さいUSBのWIFIアダプタを使うことにした。

以下そこでハマったことなどのメモ。試したのは Lubuntu 17.04 だが、Ubuntu 17.04 でも同じはず。

1.ひとまずUSBポートにさしてみる。

-> SSID がすぐに一覧表示されて、パスワード入力してつながるかと思いきや、つながらない。。

2.Google に聞きつつ、少し調べてみる。

 

$ lsusb
Bus 001 Device 005: ID 0411:01ee BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070]
・・・

 

製品名含めて、認識されているみたい。Ralink RT3070 というのがドライバーらしい。

RT3070 というのをキーワードにして、検索。ヒットしたのは、どれも古い記事だったり、Mediatek (Ralinkのドライバーの製造元?) のサイトでドライバーをダウンロードしてソースコードをいじって、make && make install するようなものが多い。一応ダウンロードしてみてみるも、かなり古いファイルで対象がカーネルが 2系なので、4系のUbuntu 17.04 で動くとは思えない。。

$ ifconfig
...
wlx106f3f32e1b2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...

wlx106f3f32e1b2 というのが eth0 みたいなのと同じインタフェース名(長いな・・)。

$ dmesg
・・・
[ 580.412597] rt2800usb 1-7:1.0 wlx106f3f32e1b2: renamed from wlan0
[ 580.664638] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 617.020490] ieee80211 phy1: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
[ 617.094985] ieee80211 phy1: rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36
[ 617.508160] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 617.729908] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 618.599832] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 619.523811] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 621.563603] wlx106f3f32e1b2: Trigger new scan to find an IBSS to join
[ 624.737827] wlx106f3f32e1b2: Trigger new scan to find an IBSS to join
[ 626.581246] wlx106f3f32e1b2: Creating new IBSS network, BSSID 62:0a:0a:44:c6:f6
[ 626.628698] IPv6: ADDRCONF(NETDEV_CHANGE): wlx106f3f32e1b2: link becomes ready
[ 626.965547] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 628.623999] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 629.483903] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 630.359909] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 631.308392] IPv6: ADDRCONF(NETDEV_UP): wlx106f3f32e1b2: link is not ready
[ 633.339306] wlx106f3f32e1b2: Trigger new scan to find an IBSS to join
[ 636.457202] wlx106f3f32e1b2: Trigger new scan to find an IBSS to join
[ 638.356810] wlx106f3f32e1b2: Creating new IBSS network, BSSID 8e:c2:a9:ed:d5:d0
・・・

dmesg をみると、 IPv6 系のエラーは一旦無視するとして、BSSID をころころ変えているのが見える。上の例だと、 BSSID 62:0a:0a:44:c6:f6 からBSSID 8e:c2:a9:ed:d5:d0。なんだこりゃ。。

とりあえず、おかしそうな動きをしていることはわかったが、どうすればいいのか不明なので、 Google に質問(笑)。

3. みつかった!
古い記事は不要なので、17.04 とかもキーワードに入れつつ調査したら、以下の記事が。。

i tried to install my Ralink RT3070 wireless driver but i got an error!
https://askubuntu.com/questions/928838/i-tried-to-install-my-ralink-rt3070-wireless-driver-but-i-got-an-error/928926

上記の answer に17.04 系にはRT3070をサポートしているrt2800usbドライバーにバグのあることが示唆。。なんと。。

Ubuntu 17.04/17.10: New feature in NetworkManager stops several WiFi adapters from working (MAC Address Randomization issue)
https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/1681513

該当のバグである上記記事を読むと、NetworkManager の新しいプライバシー機能の影響で、 一部の USB WIFI adapter が動かなくなっている、とのこと。この新しい機能は WIFI につなぐ際に毎回 random MAC アドレスをOS側に伝えるとか。これによって、まちなかのWIFIとかを何度も使う時でも、誰がつないでいるのか特定されづらくする、と。ふむふむ。ダウンサイドは今回のような一部のWIFIアダプターが、MACアドレスを何度も変更されようとすることで、挙動がおかしくなるとかで、結果的にWIFIにつなげられなくなる、と。

で、対処方法は、Jesse という方が #1 で書いているとおりで、

(1)
/etc/NetworkManager/NetworkManager.conf をエディタで開いて、以下の2行を末尾に追記。
[device]
wifi.scan-rand-mac-address=no

(ランダムMACを無効化)

(2) NetworkManager サービスのリブート。

$ sudo service network-manager restart

これだけではだめだったので、「WIFIを有効にする」のチェックを外してから、再度入れたら、ついにつながった。
(この部分は単に、一回OSごとリブートでも同じなはず。)

$ ifconfig
...
wlx106f3f32e1b2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.5 netmask 255.255.255.0 broadcast 192.168.10.255
...


$ ping www.google.com
PING www.google.com (172.217.26.100) 56(84) bytes of data.
64 bytes from kix05s01-in-f4.1e100.net (172.217.26.100): icmp_seq=1 ttl=50 time=15.6 ms
64 bytes from kix05s01-in-f4.1e100.net (172.217.26.100): icmp_seq=2 ttl=50 time=15.7 ms
^C
--- www.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 15.663/15.727/15.792/0.141 ms


OK! つながった。
以上。