0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Banana Pi BPI-R3で自作ルーターを作った(#1 組み立て〜動作確認編)

Last updated at Posted at 2025-08-30

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 現在)。趣味は高くつくねぇ。

Screenshot_20250829-042934.png
Screenshot_20250829-043001.png

また別途、ShopeeでUSB-UART変換基板(FTDI FT232RL)を買っています。こちらはジャンパケーブルと合わせて 128 THB (581 JPY)。

PXL_20250828_140001602.jpg

どちらにしろ中国からの輸入物です。

ハードウェア組み立て

組立説明書なんて存在しない世界線なので、自力でやります。

PXL_20250828_103849262.jpg

海外通販あるある、箱はいつものごとくボコボコ。一応プチプチは入ってました。

PXL_20250828_104246519.jpg

中身はこんな感じでした。(EC25-Jは先に到着していたので写真に入れ忘れました)

PXL_20250828_104449156.jpg

メイン基板。

PXL_20250828_104623087.jpg

EC25-J。Jとつく通り日本向けのモジュールです(が、当の私はタイに居るので使えるか未知数ですが、周波数とキャリアを調べたら問題はなさそうな感じ)。

PXL_20250828_111622932.jpg

M.2 SSDと同じように、斜めにさしてから、ネジで留めます。
このネジが付属していなかったので、わざわざ買いに行きました。

PXL_20250828_105756147.jpg

SFPモジュール。こちらはSFP+ではないので注意です。
最後に差し込みます。

PXL_20250828_130828369.jpg

ファン。サーマルパッドも2つ付属していました。
一番上の溝、凹んでますね…。まあ実害はないのでいいでしょう。

PXL_20250828_131728016.jpg

仮置きすると、こんな感じです。
アンテナ線を基板に繋ぐのが大変なので、先にやっておくべきでした。
8本接続するだけで20分ぐらいかかった気がします。

PXL_20250828_135739741.jpg

アンテナ線をつないで、ケースに収めた感じ。
もうカオス。

本来、この基板には5GHzと2.4GHzのWi-Fiアンテナ端子がそれぞれ4つあります。
しかし、LTEモジュールにもアンテナ線を繋がないといけないので、2.4GHz用のWi-Fiは3つだけ接続し、1つをLTEモジュールにまわしています。

LTEモジュールのアンテナ端子は、左から MAIN GNSS DIV と並んでいて、DIVが何かはわかりませんが、GNSSは使わないので、MAINだけにアンテナをつなぎました。

PXL_20250828_140420030.jpg

そのLTEモジュールのすぐ横に、UART端子があります。
これをUSB-UART基板につなげていきます。
設定のジャンパピンがUSB-UART基板にあるので、3.3Vにしています。

GND ↔ GND
 TX ↔ RX
 RX ↔ TX

5Vで接続すると壊れるようです。

常用するものではないので、セットアップが終わったら外します。

PXL_20250828_140540624.jpg

SFPモジュールも入れます。

シリアル接続する

PXL_20250828_141833979.jpg

PCとUSB-UART基板を接続したら、赤いランプが光り通電します。また、緑のランプは通信があるときに光るようですが、光る基準はよくわかりません。

screen1.png

PC側でも、通信ポートとして認識されるので、接続します。
今回は、 /dev/tty.usbserial-A5069RR4 としてデバイスファイルが出来ているので、

screen /dev/tty.usbserial-A5069RR4

これで接続します。(Macの場合)

Windowsでは、COMポートとして認識されるので、デバイスマネージャーで該当する番号を探して、何かしらのターミナルソフトで接続します。

  • ボーレート: 115200
  • データビット: 8
  • パリティ: なし
  • ストップビット: 1

SDカードから起動する

OSはOpenWRTを使います。

openwrt-download.png

Firmware Selectorの画面から、ひとまず SDCARD.IMG.GZ をダウンロードして、 RufusなどでSDカードに焼き付けます。1

screen2.png

電源アダプタを接続すると、一瞬だけこのようなメニューが表示され、その後SDカードから起動します。

screen3.png

シリアルコンソールを見ていると、この画面でフリーズした?と思うかもしれませんが、

screen4.png

Enterキーを押すとシェルが起動しています。

動作確認

この段階で、WANと書かれているポート(SPFの右にある、1つ独立したポート)がWAN扱いなので、既存のネットワークにつないで動作確認してみます。

Screenshot 2025-08-29 04.20.22.png

Chromebookから管理画面のIPアドレス(初期値 192.168.1.1)にアクセスすると、正しくアクセスできました。
インターネットにも接続できます(いわゆる二重ルーター状態)。

Screenshot 2025-08-29 05.28.11.png

lan4 が有線接続しているChromebook、 wan が今現在インターネットにつながっているネットワークです。

Wi-Fi

Screenshot 2025-08-29 05.35.49.png
Screenshot_20250829-053334.png
Screenshot_20250829-053459.png

Wi-Fiも機能しています。

LTE

MultiWAN Managerを使ったフォールバック実験も成功です。
詳細は別記事で書きます。

Screenshot_20250829-061357.png

こちらはWAN側にケーブルが刺さっている状態。

Screenshot_20250829-061443.png

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

  1. Raspberry Pi Imagerで出来ると思って試したのですが、どうもうまくいかずで、Windows機を立ち上げてRufusを使いました。Macユーザーであれば、たぶんbalenaEtcherでも問題ないです。

  2. 古のRaspberry Pi 2から使いまわしてきたSDカードなので、本当に寿命かもしれないです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?