最近、暖房の風が直接当たる場所にpi 3を置いているためか、夏によくあったusbが暴走する問題が再発してます。そこで放熱を助けるために間に電源付USBハブを入れて直接本体からの熱をUSBデバイスに伝えないようにしてみました。効果は絶大で、特にwifiアダプタの動作が大幅に安定しました。
ところが問題が一つ発生してしまいました。今まではpi 3内蔵wifiがwlan0だったのが、hubを通すとなぜか外部wifiアダプタがwlan0になってしました。このpiはwifi拡張機として使っているため、wlan0とwlan1の設定を入れ替えるのは結構めんどくさいんですよね。というわけで、内蔵wifiをwlan0に固定するのが今日の目的です。
まずは現在のネットワークアダプタ名がどうなっているかを確認しましょう。
sudo ifconfig
これがその出力結果です。
wlan0 Link encap:Ethernet HWaddr 00:13:ef:6b:19:cb inet addr:192.168.2.171 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fd00:b893:aabe:0:e32c:3dab:515:c4e3/64 Scope:Global ... wlan1 Link encap:Ethernet HWaddr b8:27:eb:48:76:23 inet addr:172.24.1.1 Bcast:172.24.1.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 ...
このwlan0とwlan1は入れ替わってしまったことが、Macアドレスから判明しました。おそらくusbハブを追加したことによってハードウェアをスキャンして名前付けする順番が変わってしまったのでしょう。
でも大丈夫。アダプタの名前を固定にするには、次のファイルで設定します。このファイルでハードウェアの条件にマッチするものに名前を付けることが出来ます。
/etc/udev/rules.d/70-persistent-net.rules
私はemacs使いですが、エディタは好きなのを使ってください。
sudo emacs -nw /etc/udev/rules.d/70-persistent-net.rules
次の行を追加します。Macアドレスの部分は各自編集してください。
# wlan0 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:27:eb:48:76:23", ATTR{type}=="1", NAME="wlan0" # wlan1 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:13:ef:6b:19:cb", ATTR{type}=="1", NAME="wlan1"
セーブ、そしてpiをリブートします。これで名前が元通りになったはずです。一応確認のためにifconfigで結果を見てみましょう。
wlan0 Link encap:Ethernet HWaddr b8:27:eb:48:76:23 inet addr:192.168.2.10 Bcast:192.168.2.255 Mask:255.255.255.0 ... wlan1 Link encap:Ethernet HWaddr 00:13:ef:6b:19:cb inet addr:172.24.1.1 Bcast:172.24.1.255 Mask:255.255.255.0 ...
目的通りに名前が入れ替わっていることがMacアドレスから分かります。
なお、/etc/udev/rules.d/70-persistent-net.rulesは、普通のDebian系のLinuxでは起動時に自動生成されるものですが、Raspberry Piの公式サイトから直接ダウンロードしたRaspbianでは自動生成しない設定になっています。他のディストリビューションだと既に存在している場合があります。その場合は、一応バックアップを取ってから編集してください。