ラズパイに外付けWiFi端末を接続する時の内蔵WiFiの殺し方


ラズパイ内蔵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系だけコメントアウトした。