経緯
あるところにRakuten回線を契約し、キャンペーンで手に入れた激安モバイルルーターを使用している男がいました。男はしばらく満足そうにしていましたが、1つ難点がありました。モバイルルーターの周波数帯域が2.4GHzしか対応していなかったのです。電子レンジを使用すればZoomが落ち、隣の家のルーターとチャンネルがかぶっているせいで速度が出ない。これを解決するため男は家に余っているラズパイを使いモバイルルーターと余っていた5GHz対応のルーターをブリッジ接続させようとするのでした。(愚策)
使用したもの
- Raspberry Pi 3 Model B+
- microSDカード
- 電源アダプタ
- Rakuten WiFi Pocket R310
- USB2.0 typeA - MicroB ケーブル
- LANケーブル
- 5GHz対応ルーター1
USBテザリングの方法2
USBでRakuten WiFi Pocket R310(以下R310)をラズパイに接続した後、root権限でsystemctl restart networking
コマンドを実行するとテザリングすることが出来ます。OSの起動前に接続しておくと上記のコマンドを入力しなくても認識させる事が出来ます。
本編
以下の説明はラズパイをR310でUSBテザリングさせた状態で説明します。また、ラズパイはSSH接続ではなくキーボードを繋ぎ直接制御しています。設定が面倒なので。
OSのインストール
今回使用したOSは Raspberry Pi OS Lite arm64 (2021-05-28) です3。ダウンロードはこちら。32bit版でも他のリリース日でもRaspberry Pi OS系なら問題ありません。OSのインストールと初期設定の方法は本記事では省略します。
※Raspberry Pi OSを選んだ理由はR310を追加ドライバー無しでUSBテザリングすることができるからです。Ubuntuで試しましたがドライバーが入っていなかった為やめました。
bridge-utilsのインストール
OSのインストールと初期設定が終了したら最初にブリッジ用ソフトウェアであるbridge-utils
のインストールを行います。
sudo apt install bridge-utils
ソフトウェアのインストールが完了したらroot権限で設定ファイルを開き、下記の内容を追記します。
sudo nano /etc/network/interfaces
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
書き込んだら一度OSを再起動させます。その後brctl
コマンドを実行し、ブリッジがちゃんと構成されているか確認します。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 XXXX.XXXXXXXXXXXX no eth0
eth1
これでR310とラズパイのLANポートがブリッジ接続されました。試しにお使いのPCのLANポートをラズパイに接続してみてください。正常に設定できていればPCが有線でインターネットに接続できると思います。正常に稼働していることが確認できたら5Ghz対応Wi-Fiルーターをラズパイに接続して下さい。説明は以上となります。下記の項目はオプションです。
自動再接続
一度R310を取り外してしまうとテザリングが解除されてしまいます。再接続させるために毎回コマンドを入力するのは面倒なので自動化させます。
シェルスクリプトの作成
下記のファイルを新規作成します。
#!/bin/bash
while true
do
if ifconfig | grep -c "eth1" > /dev/null ; then
sleep 3
elif lsusb | grep -c "19d2" > /dev/null ; then
echo restart networking
systemctl restart networking
sleep 1
else
sleep 1
fi
done
実行権限を付与します。
sudo u+x /home/pi/reconnect.sh
root権限で上記のシェルスクリプトを実行すると自動で再接続することが分かると思います。
サービスの作成
下記のサービス定義ファイルを新規作成します。書き込みにはroot権限が必要です。
[Unit]
Description = R310 auto reconnect
[Service]
ExecStart = /home/pi/reconnect.sh
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
サービスが認識されたか確認します。
$ sudo systemctl list-unit-files --type=service | grep R310
認識されていることがわかったらサービスを自動起動の有効化、起動をします。
sudo systemctl enable R310
sudo systemctl start R310
これでUSBテザリングの自動再接続させる為の設定が完了しました。OSを再起動させてサービスがちゃんと起動しているかどうかログを確認することを推奨します。
ブチ切りしたい
ラズパイをシャットダウンさせるためには毎回シャットダウンコマンドを実行しなければなりません。毎回キーボードから入力するのは面倒なので電源ブチ切りしても問題ないようにします。SDカードを書き込み禁止にすることで急な電源の切断によるファイルの破損を防ぎます。
イーサネットの設定を変更
原因は不明ですがSDカードを書き込み禁止にするとイーサネットがeth0
としてちゃんと認識しなくなります。これを防ぐためにカーネルのパラメータを変更します。以下のパラメータをroot権限で追記します。追記する際の注意点がいくつかあります。
- 既に書かれている文は消さないでください。最悪の場合OSが起動しなくなります。
- パラメータは全て1行目に書かれている必要があります。
- パラメータは1つ1つスペースで区切って下さい。
net.ifnames=0 biosdevname=0
SDカード書き込み禁止設定
Raspberry Pi OSの場合、SDカードの書き込み禁止設定は非常に楽です。
ラズパイの設定ツールを開きます。
sudo raspi-config
真っ青な背景のGUIが表示されたと思います。
4 Performance Options
を選択、続いてP3 Overlay File System
を選択します。
Would you like the overlay file system to be enabled?
と聞かれたらyes
と選択。
Would you like the boot partition to be write-protected?
と聞かれたら上記と同様にyes
を選択。
以上で書き込み禁止の設定が完了しました。
設定が完了したらraspi-config
から抜け、OSを再起動させてください。以降はブチ切りしていただいて構いません。
結論
クレードル付きか5GHz対応のモバイルルーター買った方が楽