ラズパイに外付けWiFi端末を接続する時の内蔵WiFiの殺し方
ラズパイ内蔵wifiは、
- 内蔵WiFiはアクセスポイントから少し距離が離れただけで不安定になったりする
- 内蔵WiFiを無効にしないままUSB WiFiアダプタを利用しようとすると、内蔵WiFiとUSB WiFiアダプタが同時に同一のアクセスポイントに接続する動作をしてしまう
などの不具合があり、wifi環境によっては内蔵wifiを殺して感度の良いUSBwifiを使った方が安定することがある。
このためmodprobeのブラックリスト機能を使って内蔵wifiを殺してみることとする。
内蔵WiFiを無効にする前に、 ip link show を確認してみる。
pi@raspberrypi:~ $ ip link show
1: lo: 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: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether b8:27:eb:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: wlan0: mtu 1500 qdisc pfifo_fast state DOWN mode DORMANT group default qlen 1000
link/ether b8:27:eb:xx:xx:xx brd ff:ff:ff:ff:ff:ff
4 wlan1: mtu 1500 qdisc pfifo_fast state DOWN mode DORMANT group default qlen 1000
link/ether 00:24:a5:6d:e3:37 brd ff:ff:ff:ff:ff:ff
/etc/modprobe.d/raspi-blacklist.conf に内蔵WiFiを無効にする設定を追記する。
追記内容 brcmfmac と brcmutil は lsmod で確認する。
#wifi
blacklist brcmfmac
blacklist brcmutil
設定を反映させるため再起動
pi@raspberrypi:~ $ sudo reboot
立ち上げ後、ネットワークの中身を確認する。
pi@raspberrypi:~ $ ifconfig
eth0: flags=4099 mtu 1500
ether b8:27:eb:20:54:ac txqueuelen 1000 (イーサネット)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (ローカルループバック)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163 mtu 1500
inet 192.168.0.66 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::762c:d809:853e:9f97 prefixlen 64 scopeid 0x20<link>
ether 00:24:a5:6d:e3:37 txqueuelen 1000 (イーサネット)
RX packets 759 bytes 121877 (119.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 156 bytes 24250 (23.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
pi@raspberrypi:~ $ iwconfig
eth0 no wireless extensions.
lo no wireless extensions.
wlan0 IEEE 802.11 ESSID:"Extender-G-9C58"
Mode:Managed Frequency:2.462 GHz Access Point: 88:57:EE:68:9C:58
Bit Rate=81 Mb/s Tx-Power=20 dBm
Retry short long limit:2 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=59/70 Signal level=-51 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
wlan1が無くなりwlan0のみとなっている。
iwconfigで確認するとUSBタイプのwifi端末に置き換わっている。
---------------------------------------------------------------------------
以下失敗談
当初ifconfigなどのコマンドで殺せないか模索してみたが、再起動すると戻ってしまうとか、networkmanagerだとwifiを認識しないなどうまくいかなかった。
pi@raspberrypi:~ $ sudo ifconfig wlan0 down
で一応殺せるが
pi@raspberrypi:~ $ ifconfig
eth0: flags=4099 mtu 1500
ether b8:27:eb:20:54:ac txqueuelen 1000 (イーサネット)
RX packets 1010344 bytes 234249721 (223.3 MiB)
RX errors 1 dropped 72 overruns 0 frame 0
TX packets 351687 bytes 40529915 (38.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (ローカルループバック)
RX packets 54554 bytes 5567274 (5.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 54554 bytes 5567274 (5.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan1: flags=4163 mtu 1500
inet 192.168.0.69 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::762c:d809:853e:9f97 prefixlen 64 scopeid 0x20<link>
ether 00:24:a5:6d:e3:37 txqueuelen 1000 (イーサネット)
RX packets 14615 bytes 8528432 (8.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3632 bytes 462991 (452.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0が消えている。
しかしこれではリブートすると再びwlan0が生き返る。
これを止めるには何か方法はあるのだろうか。
〇NetworkManagerでの試行
https://go-gadgetgadget.blogspot.com/2016/06/raspberry-pi-jessie.html
ここにnetworkmanagerによる方法が詳しく書いてある。
https://www.sejuku.net/blog/57933
ここが詳しそう。
NetworkManagerのインストールとdhcpcd5の削除を行います。
$ sudo apt-get install -y network-manager
$ sudo apt-get install -y network-manager-gnome
$ sudo apt-get remove -y dhcpcd5
ここで一旦再起動します。まだWi-Fiには接続していません。
https://qiita.com/monamu/items/7ff0aad37055822fc068
インストールと削除
/etc/NetworkManager/NetworkManager.confを編集
/etc/network/interfacesのこれまで試行錯誤した設定をコメントアウト
接続したいWifiを探して
設定する
$ sudo apt-get install -y network-manager
$ sudo apt-get remove -y dhcpcd5
managed=falseをmanaged=trueに変える
managed=true
interfacesは全部「#」でコメントアウトしてしまってよさそう。小心者なので最初はwlan0系だけコメントアウトした。