Banana Pi BPI-R3を入手したので、ルーターを自作していきます。
最新のR4にしなかったのは、
- Wi-Fi内蔵(R4は別途カード購入しないといけない)
- R4よりは安い
- 10GbEは不要
といった理由です。
続きの記事はこちら↓
アリエクで注文
2025-08-15 に AliExpress で注文しました。
注文したのは以下の品です。
- Banana Pi BPI-R3 Set
- 基板
- 電源アダプタ
- ケース
- ファン
- Wi-Fiケーブル
- Wi-Fiアンテナ
- SFP 2.5GbE (RJ-45) × 2
- Quectel EC25-J(LTEモジュール)
EC25-J だけが先に 2025-08-24 に到着し、残り2つは 2025-08-28 に到着。
価格は 221.85 USD 、32,595 JPY(2025-08-29 現在)。趣味は高くつくねぇ。
また別途、ShopeeでUSB-UART変換基板(FTDI FT232RL)を買っています。こちらはジャンパケーブルと合わせて 128 THB (581 JPY)。
どちらにしろ中国からの輸入物です。
ハードウェア組み立て
組立説明書なんて存在しない世界線なので、自力でやります。
海外通販あるある、箱はいつものごとくボコボコ。一応プチプチは入ってました。
中身はこんな感じでした。(EC25-Jは先に到着していたので写真に入れ忘れました)
メイン基板。
EC25-J。Jとつく通り日本向けのモジュールです(が、当の私はタイに居るので使えるか未知数ですが、周波数とキャリアを調べたら問題はなさそうな感じ)。
M.2 SSDと同じように、斜めにさしてから、ネジで留めます。
このネジが付属していなかったので、わざわざ買いに行きました。
SFPモジュール。こちらはSFP+ではないので注意です。
最後に差し込みます。
ファン。サーマルパッドも2つ付属していました。
一番上の溝、凹んでますね…。まあ実害はないのでいいでしょう。
仮置きすると、こんな感じです。
アンテナ線を基板に繋ぐのが大変なので、先にやっておくべきでした。
8本接続するだけで20分ぐらいかかった気がします。
アンテナ線をつないで、ケースに収めた感じ。
もうカオス。
本来、この基板には5GHzと2.4GHzのWi-Fiアンテナ端子がそれぞれ4つあります。
しかし、LTEモジュールにもアンテナ線を繋がないといけないので、2.4GHz用のWi-Fiは3つだけ接続し、1つをLTEモジュールにまわしています。
LTEモジュールのアンテナ端子は、左から MAIN
GNSS
DIV
と並んでいて、DIVが何かはわかりませんが、GNSSは使わないので、MAINだけにアンテナをつなぎました。
そのLTEモジュールのすぐ横に、UART端子があります。
これをUSB-UART基板につなげていきます。
設定のジャンパピンがUSB-UART基板にあるので、3.3Vにしています。
GND ↔ GND
TX ↔ RX
RX ↔ TX
5Vで接続すると壊れるようです。
常用するものではないので、セットアップが終わったら外します。
SFPモジュールも入れます。
シリアル接続する
PCとUSB-UART基板を接続したら、赤いランプが光り通電します。また、緑のランプは通信があるときに光るようですが、光る基準はよくわかりません。
PC側でも、通信ポートとして認識されるので、接続します。
今回は、 /dev/tty.usbserial-A5069RR4
としてデバイスファイルが出来ているので、
screen /dev/tty.usbserial-A5069RR4
これで接続します。(Macの場合)
Windowsでは、COMポートとして認識されるので、デバイスマネージャーで該当する番号を探して、何かしらのターミナルソフトで接続します。
- ボーレート: 115200
- データビット: 8
- パリティ: なし
- ストップビット: 1
SDカードから起動する
OSはOpenWRTを使います。
Firmware Selectorの画面から、ひとまず SDCARD.IMG.GZ
をダウンロードして、 RufusなどでSDカードに焼き付けます。1
電源アダプタを接続すると、一瞬だけこのようなメニューが表示され、その後SDカードから起動します。
シリアルコンソールを見ていると、この画面でフリーズした?と思うかもしれませんが、
Enterキーを押すとシェルが起動しています。
動作確認
この段階で、WANと書かれているポート(SPFの右にある、1つ独立したポート)がWAN扱いなので、既存のネットワークにつないで動作確認してみます。
Chromebookから管理画面のIPアドレス(初期値 192.168.1.1
)にアクセスすると、正しくアクセスできました。
インターネットにも接続できます(いわゆる二重ルーター状態)。
lan4
が有線接続しているChromebook、 wan
が今現在インターネットにつながっているネットワークです。
Wi-Fi
Wi-Fiも機能しています。
LTE
MultiWAN Managerを使ったフォールバック実験も成功です。
詳細は別記事で書きます。
こちらはWAN側にケーブルが刺さっている状態。
WAN側のケーブルを抜いたら、LTEモジュールでの通信に切り替わります。
次の目標
Banana Pi BPI-R3には、実は4つの起動方法があります。
- NOR (32MB)
- NAND (128MB)
- eMMC (8GB)
- SDカード
Raspberry Piなんかもそうですが、SDカードに激しい読み書きを続けると寿命が縮みます。
eMMCのほうがよっぽどマシなので、次はOpenWRTをeMMCにインストールしてみます。
余談
その1
実はこのセットアップ過程で、意図せずNORメモリのsquashfsをまっさらにしてしまいました。
その際の復旧がまた曲者で…簡単に書くと、
- U-Bootは生きていた
- その先のOS部分がまっさらになった
- MacをTFTPサーバーに仕立てて、U-BootのTFTPメニューから、NOR用のリカバリイメージを焼き付ける
こんなことをしたので、相当な時間がかかりました。
その2
通常、SDカードにOpenWRTを書き込んで、電源をつけるだけで起動するのですが、最初は起動しませんでした。
その1と同じく、NANDも空にしてしまったのかと思い、NORを復旧させたあとNANDのフラッシュを試みたのですが、
* spi-nand0
- device: spi_nand@1
- parent: spi@1100a000
- driver: spi_nand
- type: NAND flash
- block size: 0x20000 bytes
- page size: 0x800 bytes
- OOB size: 64 bytes
- OOB available: 24 bytes
- 0x000000000000-0x000008000000 : "spi-nand0"
- 0x000000000000-0x000000200000 : "bl2"
- 0x000000200000-0x000008000000 : "ubi"
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: ff, ef, aa
Erasing 0x00000000 ... 0x07dfffff (1008 eraseblock(s))
jedec_spi_nor spi_nor@0: unrecognized JEDEC id bytes: 00, ef, aa
ubi0: default fastmap pool size: 50
ubi0: default fastmap WL pool size: 25
ubi0: attaching mtd2
ubi0: scanning is finished
ubi0: empty MTD device detected
ubi0: attached mtd2 (name "ubi", size 126 MiB)
ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
ubi0: good PEBs: 1008, bad PEBs: 0, corrupted PEBs: 0
ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 0
ubi0: available PEBs: 982, total reserved PEBs: 26, PEBs reserved for bad PEB handling: 20
** fs_devread read error - block
Adding partition for mmc@11230000.blk:1 failed
unable to select a mode
Press ENTER to return to menu
NANDが壊れたのかと焦っていたのですが、ChatGPT曰く、もしかしたらSDカードの問題かも、ということだったのでSDカードを取り替えたら、普通に起動しました。
Rufusでは問題なくOSが書き込めていたのでSDカードの問題とは思っていませんでした。
これもあるからSDカードの寿命問題って怖いですね。2
-
Raspberry Pi Imagerで出来ると思って試したのですが、どうもうまくいかずで、Windows機を立ち上げてRufusを使いました。Macユーザーであれば、たぶんbalenaEtcherでも問題ないです。 ↩
-
古のRaspberry Pi 2から使いまわしてきたSDカードなので、本当に寿命かもしれないです。 ↩