Raspberry Pi 3 Model Bの内蔵WiFiは、個体差があるかもしれませんが割と貧弱なものなので、代わりにいつも外付けのUSB WiFiアダプタ(ELECOM WDC-150SU2MBK)を使っています。
(以前、内蔵WiFiが貧弱なことに気付かないでルーターが壊れてしまったかと思い、ルーターを買い換えてしまいました😭)
今回の記事では、Raspberry Pi 3の内蔵WiFiを無効にする方法と、USB WiFiアダプタを利用してアクセスポイントに接続する方法を紹介します。
(2017/05/10 修正) ifconfig
コマンドの代わりに ip
コマンドを利用するようにしました。
内蔵WiFiを無効にしてUSB WiFiアダプタを利用する理由
- 内蔵WiFiはアクセスポイントから少し距離が離れただけで不安定になったりする
- 内蔵WiFiを無効にしないままUSB WiFiアダプタを利用しようとすると、内蔵WiFiとUSB WiFiアダプタが同時に同一のアクセスポイントに接続する動作をしてしまう
- Zeroconfを用いたSSH接続(例:
ssh pi@raspberrypi.local
)などする場合に、内蔵WiFi経由で繋がる可能性もあり、USB WiFiアダプタ経由で繋がるか怪しくなる - 内蔵WiFiを利用している分、無駄な電流(実測値0.02A前後)が流れることになる
- Zeroconfを用いたSSH接続(例:
無効化設定なし(内蔵WiFi + USB WiFiアダプタ) | 無効化設定あり(USB WiFiアダプタのみ) |
---|---|
動作環境
- Raspberry Pi 3 Model B
- Raspbian Jessie Lite 2017-04-10
- イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリに
ssh
という名前で空のファイルを作成
- イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリに
- Raspbian Jessie Lite 2017-04-10
- USB WiFiアダプタ: ELECOM WDC-150SU2MBK
- Raspbian上で追加のドライバが不要
- 安価(700〜800円程度)
- チャンネル 2.4GHz : 1~13ch
- 内蔵WiFiよりもちゃんと電波が飛び、安定している印象です
内蔵WiFiを無効にする
ELECOM WDC-150SU2MBKをRaspberry Piに挿入していない状態から始めていきます。
まず、有線LANでSSH接続をします(Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続するなどを参照)
内蔵WiFiを無効にする前に、 ip link show
を確認してみます
pi@raspberrypi:~ $ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <NO-CARRIER,BROADCAST,MULTICAST,UP> 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
wlan0
があるはずです(ない場合は、お持ちのボードが実はRaspberry Pi 2 Model Bなどだったりするかもしれません。2であっても同様の設定でWDC-150SU2MBKを利用できます)
以下のコマンドをRaspbian上で実行し、 /etc/modprobe.d/raspi-blacklist.conf
に内蔵WiFiを無効にする設定を追記します
cat << EOF | sudo tee -a /etc/modprobe.d/raspi-blacklist.conf
#wifi
blacklist brcmfmac
blacklist brcmutil
EOF
ここで ip link show
してもまだ wlan0
が出てきますので、再起動をします
pi@raspberrypi:~ $ sudo reboot
再度、有線LANでSSH接続し、 ip link show
で wlan0
がないことを確認してみましょう
pi@raspberrypi:~ $ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
WDC-150SU2MBKをRaspberry Piに挿入
いったんシャットダウンをします
pi@raspberrypi:~ $ sudo halt
WDC-150SU2MBKをRaspberry Piに挿入し、再度電源を投入します。
有線LANでSSH接続し、 ip link show
を確認します
pi@raspberrypi:~ $ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
link/ether bc:5c:4c:xx:xx:xx brd ff:ff:ff:ff:ff:ff
wlan0
がまた出てきましたが、link/etherの右に書いてあるMACアドレスが先ほどのものと異なっているはずです。
MACアドレスの先頭6桁はベンダー識別子となっており、 b8:27:eb
がRaspberry Pi Foundationの識別子、 bc:5c:4c
がELECOMの識別子となっています(https://mac.uic.jp/ で確認できます)
b8:27:eb |
bc:5c:4c |
---|---|
SSIDとパスフレーズを設定する
内蔵WiFiもですが、WDC-150SU2MBKは2.4GHz帯のみ利用できます。
ルーターのデフォルトの設定では、2.4GHz帯のSSIDにはgやGといった文字が含まれていることが多いです。
(ssid)
, (passphrase)
を置き換えて以下のコマンドをRaspbian上で実行します
sudo sh -c 'wpa_passphrase (ssid) (passphrase) | grep -v "#psk=" >> /etc/wpa_supplicant/wpa_supplicant.conf'
パスフレーズがない場合は、Life with IT - Raspberry Pi 3でパスフレーズなしのWi-Fiアクセスポイントに接続する設定(Raspbian Jessie Lite)を見て設定してください(自己責任でお願いします)
WiFi経由の接続に切り替える
再起動をし、有線LANのケーブルを抜きます
pi@raspberrypi:~ $ sudo reboot
PCとRaspberry Piが同じネットワークに繋がっていて、適切に設定されていればZeroconfを用いるかRaspberry Piに割り当てられたIPアドレスを調べるなどしてSSH接続ができるはずです
$ ssh pi@raspberrypi.local
参考サイト
Raspberry Pi 公式フォーラム - How to disable the Pi3's WLAN & Bluetooth ?