Skip to content

BMMPX1301

Daigorian edited this page Oct 18, 2026 · 9 revisions

地上デジタル専用のネットワークチューナーです。基板の型番は POE-BR100-YB1。OpenIRD で最初に受信まで到達し、factory イメージでの導入まで実機で確かめた機種です。

ビルド名(BOARD) emma3sep_softbank_poe-br100-yb1
SoC Renesas EMMA3SEP(MIPS32r2 ビッグエンディアン・FPU 無し)
メモリ / フラッシュ DDR3 256MB / NAND 128MB
復調 MaxLinear MXL683(ISDB-T)
その他 Fujitsu MB86H58A(トランスコーダ。OpenIRD は使わない)、Realtek RTL8201FL(Ether PHY)
カーネル Linux 2.6.27.39(GPL の公開ソースから再ビルド。Device Tree は使わない世代)
ブートローダ 純正の U-Boot をそのまま使う(OpenIRD は書き換えない)
B-CAS スロット無し

状態

項目 状態 確かめた内容 日付
カーネル 動作 GPL の 2.6.27.39 を gcc 4.9.4 で再ビルドし、uImage にして NAND から起動。v26.10-rc8 は GitHub Actions がビルドしたもの 2026-10-17
ユーザランド 動作 musl + BusyBox + dropbear。読み取り専用の squashfs に、書き込み可能な層(yaffs2)を unionfs で重ねた root。追加したファイルが電源の入れ直しをまたいで残る 2026-10-13
チューナー 動作 px4_drv 互換のキャラクタデバイス /dev/irdvideo0。v26.10-rc5 で ch27 と ch13(20.6 Mbit/s)を 25 秒ずつ受信し、連続性エラー 0・同期エラー 0。13ch・60ch もロックする。同じ局を開き直すとすぐ使える。v26.10-rc8 でも 13ch・60ch・27ch を 15 秒ずつ受信し、連続性エラー 0 2026-10-17
チューナー(照合) 動作 未改造の recpt1 で録画でき、別の受信機(PX-M1UR)で同時に録った TS とビット単位で一致 2026-10-10
アドオン 動作 ird-addon で導入 → 電源の入れ直しをまたいで保持 → 削除。機器からの HTTPS 取得 2026-10-11
TS サーバ(recpt1 のアドオン) 動作 recpt1 アドオン 1.2.0-77c7bce-3 の HTTP サーバで、別の受信機と同じ局を 12 分間同時に受け、受信量 99.8%・連続性エラー 0。recpt1 のメモリは横ばい 2026-10-17
導入(factory) 動作 純正 2.1.17 r3 の状態から、リリースの factory イメージを openird-fwup で投入。機器が受理 → ブートローダがカーネルと rootfs を書く → OpenIRD が起動。v26.10-rc3(2026-10-13・書かれた 2 つの区画がリリースのカーネル・rootfs と一致)・v26.10-rc5・v26.10-rc8・v26.10-rc9・v26.10-rc10 で確認。書き込み層のアドオンは残った 2026-10-18
最初のログイン 動作 導入の直後に、シリアルを使わず、パスワードなしの ssh root@<機器> で入れる。ログインのたびに、パスワードを設定するよう警告が出る 2026-10-13
導入後の更新 動作 sysupgrade <更新イメージ> で、カーネルと rootfs を照合つきで書いて再起動する。設定とアドオンは残る。コマンドから新しい版の起動まで約 20 秒 2026-10-12
再起動・LED 動作 reboot が効く。前面の LED を点ける(起動が終わると電源が緑、チューナーが使えるようになるとステータスが緑。色は実物で確認) 2026-10-13
純正に戻す 条件つき 純正のカーネルと rootfs のイメージを持っていれば、動いている OpenIRD から書き戻せる(下記) 2026-10-13
設定レイヤ・Web UI 無し 未実装 —

取り出せるのは、スクランブルされたままの TS です。OpenIRD はスクランブル解除を扱いません。

制約

  • 導入すると、元の純正ファームウェアには戻せなくなります。 純正のカーネルと rootfs は上書きされます。OpenIRD は純正のバイナリを配布しません。戻せるのは、純正のカーネルと rootfs のイメージを自分で持っている場合だけです(下の「純正に戻す」)。
  • 導入した直後は、root のパスワードが空で、同じ LAN の誰でも SSH で入れます。 最初にログインして passwd を実行してください。設定した後は、そのパスワードを聞くようになります。telnet は動いていません。
  • 機器に元から入っている 3 つの部品を、起動のたびに使います。 OpenIRD はこれらを配布しません。純正の区画(mtd4・mtd5)を残したまま、読み取り専用で参照します。
    • AV 用サブ CPU のファームウェア(mtd5 の emma3sep_driver_std_op0.mem)
    • それを起動するカーネルモジュール(mtd4 の csd.ko。起動時に 1 度だけ load して外す)
    • 復調器 MXL683 のファームウェア(mtd4 の純正アプリの中にあるものを、実行時に取り出す)
  • TS はヌルパケットを除いたものです。 機器が忙しいときに、まれに 1 パケット欠けることがあります。
  • PAT・PMT・CAT のどれにも載っていない PID は出ません(例: 21ch の 0x0135)。PMT から番組を選ぶ録画・再生には影響しません。
  • recpt1 を HTTP の TS サーバとして使うときは、recpt1 アドオン 1.2.0-77c7bce-4 以降を勧めます(addons-for-oird)。-3 は番組(SID)を指定した接続を閉じるとサーバが落ちることがあり、それより前の版は、長く流すと機器のメモリが足りなくなり、止まります。
  • カーネルと rootfs の区画は、どちらも 1 面しかありません。 起動しないイメージを書くと、戻すにはブートローダの解錠(所有者のパスワード)か、NAND を直接書く手段が要ります。更新(sysupgrade)でフラッシュを書いている間(2 秒ほど)に電源が切れた場合も同じです。
  • カーネルのイメージには大きさの上限があります(uImage で 0x280000 バイト)。超えると起動しません。openird-mkimage が作るときに弾きます。
  • 時計は起動のたびに 1970 年から始まります(時刻合わせをしていない)。
  • 録画や配信をするプログラムは入っていません。 recpt1 などは、アドオンとして後から載せます。

導入

factory イメージを、純正の更新機構(UPnP)に渡します。機器が自分で取りに来て、再起動し、ブートローダが書き込みます。書かれるのはカーネル(mtd2)と rootfs(mtd3)だけで、ほかの区画は残ります。

確かめた条件: 純正ファームウェア 2.1.17 r3 が動いている状態から。投入から OpenIRD の起動まで 2 分ほどです。

  1. factory イメージを用意する。 リリースから openird-<版>-emma3sep-poe-br100-yb1-factory.bin と SHA256SUMS を取り、SHA-256 を照合します。実機で確かめたのは v26.10-rc3・v26.10-rc5・v26.10-rc8・v26.10-rc9・v26.10-rc10 のものです。
  2. 機器に渡す。 PC と機器を同じ LAN につなぎ、リポジトリの openird-fwup を使います。
    uv run host/openird-fwup/openird_fwup.py discover
    uv run host/openird-fwup/openird_fwup.py flash <機器の IP> <factory イメージ> --confirm-flash
    
    --confirm-flash を付けなければ、計画を表示するだけで何も送りません。PC に LAN の口が複数あるときは --serve-ip <PC の IP> を付けます。
  3. 起動を確かめる。 OpenIRD が起動すると、機器は UPnP に出てこなくなります。アドレスは、まず 192.168.1.1 を付け、DHCP で取れたらそれに替わります(DHCP にはホスト名 openird を名乗ります)。
  4. ログインして、パスワードを設定する。 ssh root@<機器の IP> で、パスワードなしで入れます。入ったら passwd を実行してください。設定するまでは、同じ LAN の誰でも root で入れます。 シリアルコンソールは要りません。

OpenIRD を入れた後は、純正の更新機構は使えません。次の版へは、下の「更新」で上げます。

更新

動いている OpenIRD から、sysupgrade で次の版に上げます。カーネルと rootfs を書いて再起動し、設定とアドオンは残ります。

  1. リリースから openird-<版>-emma3sep-poe-br100-yb1-sysupgrade.bin と SHA256SUMS を取り、SHA-256 を照合する。
  2. 機器の /tmp に送る。
    scp -O openird-<版>-emma3sep-poe-br100-yb1-sysupgrade.bin root@<機器の IP>:/tmp/upgrade.bin
    
    -O が要ります(機器に SFTP のサーバが無いため)。
  3. 機器に入って、検査してから更新する。
    sysupgrade -T /tmp/upgrade.bin     # 検査だけ。何も書かない
    sysupgrade /tmp/upgrade.bin        # 更新
    
  • 始めると、動いているものは全部止まり、SSH のセッションも固まります。20 秒ほどで新しい版が起動します。その間、電源を切らないでください。
  • 違う機種のイメージや、壊れたイメージは、検査で断られます。書いた後の照合が合わなければ、元の版に戻して再起動する作りです(この巻き戻しは、実機のフラッシュではまだ起こしていません)。
  • 設定を引き継がずに更新するには sysupgrade -n を使います(書き込み層を空にします。実機ではまだ試していません)。
  • sysupgrade があるのは v26.10-rc3 からです。仕組みは docs/sysupgrade.md。

自分で factory イメージを作る場合

make BOARD=emma3sep_softbank_poe-br100-yb1          # rootfs
make kernel BOARD=emma3sep_softbank_poe-br100-yb1   # カーネル
make factory BOARD=emma3sep_softbank_poe-br100-yb1  # factory イメージ

factory イメージに包むには、更新用の鍵と ZIP パスワードが要ります。OpenIRD はこれらを配布せず、取り出し方も扱いません。 所有者が自分の機器から得た値を、ファイルで渡します(openird-mkimage の README)。公式の factory イメージは、保守者が預けた鍵を使って GitHub Actions が作ります(リリースの作り方)。

純正に戻す

純正のカーネルと rootfs のイメージを、自分で持っている場合だけできます。純正の更新ファイルに入っているものですが、取り出すには更新用の鍵が要ります。OpenIRD は、純正のイメージも鍵も配りません。

動いている OpenIRD から、2 つの区画を書き戻します(2026-10-11 と 2026-10-13 に、2.1.17 のイメージで実施)。

  1. 2 つのイメージを機器の /tmp に送り、チェックサムを照合する。
  2. mtd と BusyBox を /tmp に写し、rootfs から動いているプロセスを止めて、シェルを /tmp の BusyBox に切り替える。やり方は rootfs の更新の手順と同じです。
  3. mtd write <rootfs> /dev/mtd3 → mtd verify、続けて mtd write <カーネル> /dev/mtd2 → mtd verify。
  4. sync して、/tmp の BusyBox で reboot -f(v26.10-rc3 より前の版では reboot が効かないので、電源を入れ直す)。
  • 純正アプリ(mtd4)とファームウェア(mtd5)は、OpenIRD が書き換えないので元のまま残っています。書き戻すカーネルと rootfs は、それと同じ版のものにします。
  • 純正のカーネルは、起動後シリアルに何も出しません。戻ったことは UPnP で確かめます(openird-fwup discover)。
  • 書いた直後の照合は mtd verify で行います。/dev/mtdblockN を読むと、古い内容のキャッシュが混ざって合いません。

ビルド

Linux(WSL2 なら ext4 上)で行います。前提は docs/BUILDING.md。

make BOARD=emma3sep_softbank_poe-br100-yb1          # rootfs(先にこちら)
make kernel BOARD=emma3sep_softbank_poe-br100-yb1   # カーネル
  • 出力は output/<BOARD>/images/rootfs.img(mtd3 用・squashfs 3.1 ビッグエンディアン)と output/<BOARD>/vmlinux.img(mtd2 用・uImage)。
  • GPL のカーネルソースは、make kernel がメーカーの公開 URL から取ります(sha256 で検証)。ファイル名・入手先・sha256 は kernel/build.env にあります。

受信を試す

チューナーは起動時に自動で立ち上がります(/etc/init.d/S30tuner)。イメージに入っている確認用の ird-rec で、すぐ試せます。

ird-rec <ch 13..62> <秒> <file>     # 例: ird-rec 27 6 /tmp/ch27.ts

ロックまでの時間、C/N、パケット数、連続性エラーと同期エラーの数を表示します。

recpt1 を載せてあれば、次のように使えます。

recpt1 --device /dev/irdvideo0 <ch> <秒> <file>     # 録画
recpt1 --http <port> --device /dev/irdvideo0        # TS サーバにする

recpt1 は OpenIRD の一部ではありません。検証用に、上流の recpt1 をこの機種向けにビルドするスクリプト(tools/host/build-recpt1.sh)があります。

区画

mtd 内容 OpenIRD の扱い
0 U-Boot 書かない
1 U-Boot の環境変数・MAC アドレス factory イメージで導入するときに、環境変数の領域だけ書かれる(sysupgrade では触れない)。MAC アドレスは残る
2 カーネル(uImage) 書き換える
3 rootfs(squashfs) 書き換える
4 純正アプリ 残す(起動時に読む)
5 SoC のファームウェア 残す(起動時に読む)
6〜8 初期設定・ログ・アプリ設定 残す
9 汎用の保存領域(yaffs2・64MB。カーネルでの名前は MassStorage)。純正アプリが番組表・局ロゴ・データ放送の保存データを置き、純正の更新機構がファイルの置き場に使う 残す。OpenIRD は、この中の openird ディレクトリだけを使う(openird/overlay が root の書き込み層)
10 不良ブロックの表 残す

関連する文書

Clone this wiki locally