NetworkManager と Realtek Wi-Fiでうまくいかない
しばらく点けっぱなしにしてた Arch Linux マシーンを再起動したら Wi-Fi 自動接続してくれなくなった。パッケージをアップグレードしたので、毎度のローリング・リリースに纏わる問題か。ともかくNetworkManagerを使うのが我的本流(?)なので、wicdとかにせず解決しておきたい、と思った。
こういう事は以前にもあったのだが、OS再インストールとかでうやむやになっていたような気が…。ネットワークって難しいし。
アイコン(nm-applet)をクリックすると表示されるはずのWi-Fiネットワークの利用可能一覧が表示されない。けれど、”非表示Wi-Fiネットワークに接続…” からならプロファイルを選べるし、あるいは、”nmcli connection up <profile name>” でとりあえず繋がった。
しかしこのままでは起動時に自動接続してくれない。せっかくの NetworkManager なのだからいちいち手動でつなぐっていうのはなしにしたい。
そこで /etc/NetworkManager/system-connection 下にあるプロファイルファイルの [connect] セクションに autoconnect=true と直接書き加えてみたのだけれど、だめだった。
そこでやっとログを覗いてみたら、ログイン後から先程手動接続するまでの間に、
<warn> [1474950733.7129] device (wlp0sxxxxxx): set-hw-addr: new MAC address D2:CF:56:xx:xx:xx not successfully set (scanning) <info> [1474950733.7132] device (wlp0sxxxxxx): supplicant interface state: inactive -> disabled <info> [1474950733.7137] device (wlp0sxxxxxx): supplicant interface state: disabled -> inactive
という行の繰り返しが大半を占めている。つなごうとしてつながらない感じなんだろうか。
使っている無線LAN子機は Planex の GW-USSuper300。台座のマグネットで金属にバチンと貼り付けて使えるやつ。
$ lsusb ---- Bus 001 Device 003: ID 2019:4901 PLANEX GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU]
使われているのは Realtek RTL8191SU とでた。
アップグレードされたものは networkmanager 1.4.1dev+33+gc87b89b-1 。ネットで調べると 1.4.x の不具合対象としてRealtekとBroadcomが引っかかってくる。
ドライバ不具合とかが原因かも知れないけれど、結局、NetworkManager のバージョンアップが原因でこうなったからダウングレードすればいいじゃんということで、キャッシュを漁ってみると 1.2.5 というパッケージファイルが見つかったのでダウングレードした。
$ ls -1 /var/cache/pacman/pkg/networkmanager-* ---- /var/cache/pacman/pkg/networkmanager-1.2.2-1-x86_64.pkg.tar.xz /var/cache/pacman/pkg/networkmanager-1.2.5dev+5+g99e34d7-1-x86_64.pkg.tar.xz /var/cache/pacman/pkg/networkmanager-1.4.1dev+33+gc87b89b-1-x86_64.pkg.tar.xz ---- $ sudo pacman -U /var/cache/pacman/pkg/networkmanager-1.2.5dev+5+g99e34d7-1-x86_64.pkg.tar.xz
“extra/networkmanager 1.4.1dev+33+gc87b89b-1” を “1.2.5dev+5+g99e34d7-1” にダウングレード。
これで再起動してみたら、元通り、なんの問題もなく自動的につながってくれた。
これでしばらく様子をみることにしよう。
でも pacman -Syu とやってアップグレードかけると候補にまた NetworkManager があがってしまう。これじゃあ同じことの繰り返しになるので /etc/pacman.conf に “IgnorePkg = networkmanager” と追記しておいた。こうしておくとパッケージ更新を無視してくれると ArchWiki にかいてあった。
… という、結局ダウングレードっていうオチ。でもダウングレードとか今まであんまやってなかったなと思って、その備忘メモとして。