NetBSD系Aterm(WR8750N, WR9500N, WG600HP等)でのOpenWrtについて

表題に挙げたようなNetBSD系のAterm機については、現在OpenWrt公式では一切サポートされていません。その為、OpenWrt公式のダウンロードサイトを探しても、対応するファームウェアは存在しません。それらの機種のおおよそのサポート作業は終了していますが、完全な私的サポートとして扱っており、今後OpenWrtの公式リポジトリでPRをオープンしたり、パッチを送るなどする予定は全くありません。
これらの機種は非常に特殊な点が多く、OpenWrtを導入するには失敗すると文鎮化を招きかねない操作を多数要します。その為、ハードウェア構成や、シリアルコンソールやmtdの扱い方、ブートローダについての知識等が十分でない方には、OpenWrtの導入は全くお勧めできません。
また、既にこれらの機種に対する私自身のモチベーションは低下しており、今後これらの機種へのOpenWrt導入についての体系的な記事を書く予定はありません。OpenWrtの導入に必要な操作などは既にこのメインのブログと雑記ブログ、一部は私のTwitterアカウントのつぶやきに散在しており、前提知識と併せ、それらを参照することで十分OpenWrtの導入を為せるものと考えています。
裏返して言えば、その前提知識を持ち、情報の収集を行うなど自分自身である程度こなせる場合のみ行ってほしいということでもあります。

Sony NCP-HG100/Cellular

某氏が先行して作業されていたものを引き継ぎ、ようやくマージに到達しました。
今回は、後述する通りドライバの不足などから一部機能を除いたサポートです。まとめていきます。

仕様

IPQ4019を搭載し、NCP-HG100/Cellularの持つ様々な機能に対応する為、他に様々なICが搭載されています。
法律の関係上、無線機能の使用は非推奨です

  • SoC: IPQ4019
  • RAM: DDR3 512MiB
  • Flash: eMMC 4GB
  • WAN/LAN: 1000Mbps/1000Mbps x2 (QCA8072)
  • UART: J1, 115200bps(三角マーク側から3.3V, TX, RX, GND)

その他の詳細については、雑記やこのブログの進捗報告を参照。

OpenWrt化

U-Bootがデフォルトでブート時に使用するコマンドは、セキュアブートに対応したKernelが必要と思われ、OpenWrtのKernelはブートに失敗することからU-Bootの環境変数の書き換えが必要です。
UARTのスルーホールにピンを立てる場合は、筐体を閉じた際に干渉するのを防ぐ為L字ピンの使用を推奨。

TFTPサーバを準備
192.168.132.100でTFTPサーバを用意し、NCP-HG100/Cellularのinitramfsイメージを C0A88401.imgのファイル名でTFTPディレクトリ内に配置
U-Bootのコンソールに入る
NCP-HG100/Cellularに電源を接続し、シリアルコンソールに Hit any key to stop autoboot: と表示されたタイミングでいずれかのキーを押下しブートを停止させる
U-Bootのブート用コマンドを設定
以下を入力してブート用コマンドを設定する

setenv bootcmd "mmc read 0x84000000 0x2e22 0x4000 && bootm 0x84000000"
saveenv

initramfsイメージでブート
以下を実行してinitramfsイメージでブートする

tftpboot && bootm

sysupgradeイメージをNCP-HG100/Cellularにダウンロードしsysupgrade
wgetやscp等を用いてsysupgradeイメージをデバイス上にダウンロードし、それを用いてsysupgradeを行う
必要である場合、sysupgrade実行前にddでeMMCのパーティションをバックアップする
完了
sysupgradeが完了し、OpenWrtが起動してくれば完了

備考

  • 本機種はNuvoton MINI54FDEをMCUとして搭載しているが、現状ドライバが存在しない為これを制御することができない。このことから、MCUが管理する以下の機能はユーザーが利用することはできない
    • RGB LED(筐体外周)
    • 冷却ファン
    • 温度センサ(2か所)

    このうち、冷却ファンについてはデフォルトで自動制御されており、計測された温度に従って回転したり停止したりする模様

  • IPQ4019のオーディオ関連機能やオーディオ関連ICのドライバは現状存在しない為、それらが提供する機能は利用不可
  • BluetoothやZWaveは、それらを提供する各ICのドライバが現状存在しない為、利用不可
  • 筐体上面に存在する各ボタンについてはタッチセンサICが介在しており、このICはNCP-HG100/Cellular起動直後はブート中の状態を抜けておらずボタンを利用することができない状態にある
    i2csetを用いてブート完了の状態に遷移させることで、ボタンが利用可能になる

    opkg update
    opkg install i2c-tools
    i2cset -y 1 0x14 0xf 1
    

  • 本機種ではKernel+RootFSのOSイメージを2つ持っており、OpenWrtにおいては1つ目のみ使用する
  • SONY公式サイトでは “/Cellular” モデル以外に “/WLAN” モデルの存在が示されているものの、市場に実在するかが曖昧であり、後者の実機を確保しておらず互換性が不明であることから、今回のサポートは “/Cellular” モデルに限定したものとした
  • サポートのマージ時点で既にOpenWrt 22.03.0がリリース済みである為、今後OpenWrt 22.03シリーズに含まれることはない
    次のメジャーリリースからサポートされると思われる

作業時の色々

  • 作業ついでに学習も兼ねて外周のRGB LED等を制御しているMCUのドライバを試しに書いてみるなどしたものの、あくまで学習程度のレベルである為今回サポートを投げ込むにあたっては含めなかった
    既にこの機種に対する意欲も低下しつつあるため、今後そのドライバを改善したり投げ込む可能性は低い
  • 本機種のサポートがマージされた直後、IPQ40xxが持つ内部スイッチ機能に対するDSA (Distributed Switch Architecture) サポートがマージされ、それに対応する状態に変換されなかったNCP-HG100/Cellularを含む多くの機種はまとめて無効化されてしまった
    急ぎ修正を行って投げ込み、マージされたことで再度NCP-HG100/Cellularのビルドが有効化された

色々

色々あって作業が長期に渡ってしまったが、マージされて一安心。並行してWSR-2533DHP2の作業を行うなどしていた時期もあり、進みがかなり遅くなったりしていた。
本機種はサウンド関連等使用できない機能は多々あるものの、ルータとしての基本的な動作のほかUSBポートもあることから、それらを活用できる機種として良さそう。
上で少し触れたとおり、この機種に対するモチベーションは低下気味であることから、今後の改善はあまり積極的には手を付けないことが予想される為、必要であれば誰かが行うことに若干期待。必要な保守はします。

Panasonic Switch-M24eG PN28240K (+16/48)

少し前にサポートされたSwitch-M8eG PN28080Kに続くPanasonic機。
最初にSwitch-M24eG PN28240Kを確保して作業していたものの、諸事情によりSwitch-M8eG PN28080Kを先に投げ込みマージされていました。今回同シリーズの残り3機種もサポート作業を行って投げ込み、マージされました。
まとめていきます。
(多少の差異はあるものの、3機種とも似通っている為1つの記事にまとめます。)

仕様

16ポートのSwitch-M16eG PN28160Kと24ポートのSwitch-M24eG PN28240KはRTL8382Mを、48ポートのSwitch-M48eG PN282480KはRTL8393Mを搭載しています。

Switch-M16eG PN28160K
  • SoC: RTL8382M (1C1T, 500MHz)
  • RAM: DDR3 128MiB
  • Flash: SPI-NOR 32MiB
  • Ethernet: TP → 1000Mbps x16, SFP → 1000Mbps x2(TP 2ポートとコンボ)
  • RS-232C: 9600bps(RJ45, 所謂Ciscoケーブル互換)
Switch-M24eG PN28240K
  • SoC: RTL8382M (1C1T, 500MHz)
  • RAM: DDR3 128MiB
  • Flash: SPI-NOR 32MiB
  • Ethernet: TP → 1000Mbps x24, SFP → 1000Mbps x2(TP 2ポートとコンボ)
  • RS-232C: 9600bps(RJ45, 所謂Ciscoケーブル互換)
Switch-M48eG PN28480K
  • SoC: RTL8393M (1C2T, 700MHz)
  • RAM: DDR3 128MiB
  • Flash: SPI-NOR 32MiB
  • Ethernet: TP → 1000Mbps x48, SFP → 1000Mbps x4(TP 4ポートとコンボ)
  • RS-232C: 9600bps(RJ45, 所謂Ciscoケーブル互換)

その他詳細については、雑記を参照。

OpenWrt化

だいぶ複雑で長い手順を執る必要がある為、ここには掲載しません。各サポートのコミット内に記載されている手順を参照してください。
realtek: add support for Panasonic Switch-M16eG PN28160K · openwrt/openwrt@e83ab24
realtek: add support for Panasonic Switch-M24eG PN28240K · openwrt/openwrt@e83ab24
realtek: add support for Panasonic Switch-M48eG PN28480K · openwrt/openwrt@e83ab24

備考

  • Switch-M*eGには旧モデルである “PN28xx0” が存在するが、そちらはPN28xx0Kと異なりBroadcomベースのハードウェアであり、今回のサポートと互換は無く、今後OpenWrtにおいてサポートされることも無い。
    PN28xx0は筐体フロント部分が本体と同色の緑で塗装されており、一方でPN28xx0Kはフロント部分のみ黒色に塗装されているため、そこで見分けることが可能。
  • フロント正面左側にある “LED DISPLAY” ボタンは、特段の機能を割り当てていない。その為、押しても再起動や設定の初期化は行えない。シリアルコンソールは表に直接出ているので、そちらからコマンドで実施などする。
    なお、 “LED DISPLAY” ボタンはブート時にfailsafeに入る為に使用することは可能。
  • SFPポートは現状使用不可
    今回の3機種では、2または4つのSFPポートは全てRTL8218FBチップに接続されている。

    Switch-M16eG PN28160K
    Switch-M24eG PN28240K
    ┌───────────────────┐  ┌───────────────┐
    │   PN28240K only   │  │               │
    │         ┌────────────┤    RTL8382M   ├──────────┐
    │         │         │  │     (SoC)     │          │
    │ ┌───────┴───────┐ │  └┬─┬─┬─┬─┬─┬─┬─┬┘  ┌───────┴───────┐
    │ │               │ │   │ │ │ │ │ │ │ │   │               │  SFP
    │ │   RTL8218B    │ │   │ │ │ │ │ │ │ │   │   RTL8218FB   ├─────┐
    │ │   (Switch)    │ │   │ │ │ │ │ │ │ │   │    (Switch)   ├──┐  │
    │ └┬─┬─┬─┬─┬─┬─┬─┬┘ │   │ │ │ │ │ │ │ │   └┬─┬─┬─┬─┬─┬─┬─┬┘  │  │
    │  │ │ │ │ │ │ │ │  │   │ │ │ │ │ │ │ │    │ │ │ │ │ │ │ │   │  │
    │  │ │ │ │ │ │ │ │  │   │ │ │ │ │ │ │ │    │ │ │ │ │ │ │ │   │  │
    │                   │
    │  P1     -      P8 │16:P1     -      P8   P9     -     P16  15 16
    └───────────────────┘24:P9     -      P16 P17     -     P24  23 24
    
    
    Switch-M48eG PN28480K
                          ┌───────────────┐
                          │               │
            ┌─────────────┤   RTL8393M    ├─────────┐
            │             │     (SoC)     │         │
            │             └───┬───────────┘         │
            │                 │             ┌───────┴───────┐    SFP
    ┌───────┴───────┐ ┌───────┴───────┐     │               ├───────────┐
    │               │ │               │     │               ├────────┐  │
    │   RTL8218B    │ │   RTL8218B    │.....│   RTL8218FB   ├─────┐  │  │
    │   (Switch)    │ │   (Switch)    │(+3x)│    (Switch)   ├──┐  │  │  │
    └┬─┬─┬─┬─┬─┬─┬─┬┘ └┬─┬─┬─┬─┬─┬─┬─┬┘     └┬─┬─┬─┬─┬─┬─┬─┬┘  │  │  │  │
     │ │ │ │ │ │ │ │   │ │ │ │ │ │ │ │       │ │ │ │ │ │ │ │   │  │  │  │
     │ │ │ │ │ │ │ │   │ │ │ │ │ │ │ │       │ │ │ │ │ │ │ │   │  │  │  │
    
     P1     -      P8  P9     -      P16    P41     -     P48  45 46 47 48
    

    上記の図においてそれぞれ右側にあるRTL8218FBチップは、現状realtek targetのPHYドライバにおいてサポートされておらず、3機種ともコンボポートのRJ45ポート側についてはほかのチップ向けのサポートによって動作するものの、SFPポートは正しく初期化されず、またSFPポートを持っているという情報も認識されていない為切り替えて使用することができない状態にある。
    現在このチップのサポート追加の作業を進めており、おおよそ問題無く動作する状態まで到達済み。ただし他の方からのpatch等を待っている状況の為、OpenWrt公式への投げ込みは未定。

  • Switch-M48eG PN28480Kは筐体にファンを2つ搭載しており(制御は一体的)、停止することはできず速度のHigh/Lowの切り替えのみを行うことができる。
    このファンについては、メーカーファームウェアにおいてはユーザーによる手動での切り替えのみがサポートされ、計測された温度に従っての自動制御は行われない。一方でOpenWrtにおいては、基板上のSoC/Systemの2か所の温度をもとにして自動的に制御されるように構成した。
    SoC温度が45℃、またはシステム温度が40℃に到達して4秒程度継続するとファン速度がLowからHighへと遷移し、SoC温度とシステム温度の両方が前述の温度をそれぞれ下回るとHighからLowへ遷移する。
    また、安全の為SoC温度が55℃に到達して1秒程度またはシステム温度が50℃に到達して2秒程度継続すると、緊急状態としてLinux Kernelが自動的に再起動されるように構成した。
  • Switch-M*eG PN28xx0Kに類似のシリーズとして、使用可能温度範囲を高めたSwitch-M*eGi PN28xx0iシリーズが存在する。そちらはハードウェア的にはほぼ同一と思われるものの、実機を所有しておらず確認できない為今回のサポートの対象とはしていない。
  • OpenWrtのリリース版については、記事執筆時点で22.03シリーズにはbackportされていない為、22.03シリーズの次のメジャーリリースから含まれると思われる。

作業時の色々

  • 元々はSwitch-M8eG PN28080Kよりも先にSwitch-M24eG PN28240Kを確保して作業を進めていたものの、前述のとおりRTL8218FBに関しての問題がある為、PN28240Kはチップのサポートと共に投げ込みたいと思って保留とし、先にRTL8218FBを搭載しないSwitch-M8eG PN28080Kを投げ込んだ。
    ただし、作業を進めるにあたってSFPサポートが無くてもデバイスサポートが公式リポジトリに存在していた方が何かと便利であることから、RTL8218FBサポートは保留としてSwitch-M24eG PN28240Kと、加えて16, 48ポートの各モデルも先にデバイスサポートのみ投げ込んでしまうこととした。

色々

何度か書いた通り、この3機種についてはRTL8218FBの問題がありサポート投げ込みを見送っていたものの、転換して投げ込みマージされた。
PRをオープンした後、ネットワーク周りやSwitch-M48eG PN28480Kでの温度管理などについて議論があり少々時間を要したものの、無事完了したのでヨシ。
先行してマージされたSwitch-M8eG PN28080K同様、この3機種においてもコンソールポートが搭載されていて非常に扱いやすいため、導入手順は若干手間ではあるものの個人的に好みの機種。
中古ではSwitch-M24eG PN28240Kの数が多く、なおかつ安価であることが多いのでおすすめ。Switch-M16eG PN28160Kは中古で出てくる数が少なく価格も中古のPN28240K比で高くなりがちで、筐体サイズもPN28240Kと変わらないことからOpenWrt目的での確保は少々微妙。Switch-M48eG PN28480Kは時々中古で出てくることはあるものの、基本的には稀で入手性は低め。

ELECOM WRC-X3200GST3

サポート投げ込みではWSR-2533DHP2に続いて2機種目となるMT7622 (ARM)搭載機。去年4月頃に某氏より提供頂いてサポート作業を始め、1年以上経ちようやくマージされました。
まとめていきます。

仕様

中心的なハードウェア構成自体はWSR-2533DHP2と似通っており、SoCにはaarch64のMT7622Bを(mips(el)のMT7621ではない)、無線部についてはWi-Fi 6 (11ax)対応である為MT7915を搭載しています。
法律の関係上、無線機能の使用は非推奨です

  • SoC: MT7622B
  • RAM: DDR3 512MiB
  • Flash: SPI-NAND 128MiB
  • WAN/LAN: 1000Mbps/1000Mbps x4 (MT7531)
  • UART: J19, 115200bps(DCジャック側から3.3V, GND, TX, RX)

その他の詳細については、雑記を参照。

OpenWrt化

この機種においてもramips targetで既にサポートされているWRC-*GS/GSV/GSTシリーズと同様のファームウェア形式である為、factoryイメージを作ることができ、容易に導入することが可能です。

WRC-X3200GST3を起動
電源ケーブルを繋ぎ、通常通りWRC-X3200GST3を起動
WebUIにアクセス
WRC-X3200GST3の設定用WebUIを開き、ファームウェア更新ページへ移動
ファーム更新
WRC-X3200GST3のfactoryイメージを選択し、アップデートを実行
完了
Flashへの書き込みが完了後再起動され、OpenWrtで起動してくる

備考

この機種においても特段の癖は無し。

  • mediatek targetに既存で、なおかつ海外においてはMT7622搭載機として人気があるらしいE8450と異なり、非UBI版とUBI版でサポートを分けずにUBI版の1つのみとした。また、UBI版ではあるもののブートローダ (U-Boot)置き換えを前提とせず、メーカー出荷時のブートローダで使用することを前提としたサポート。
    理由としてはブートローダを置き換えたくないという一点が非常に大きく、もし置き換えた場合は、リリース版ファームウェアをWebUIから投入するテストが必要な際などにわざわざブートローダ等大規模な書き換え作業が必要となり、作業を誤って文鎮化させるリスクが高くなる。
    その他、一つの機種に対するサポートが複数あるとユーザー側を混乱させるかもしれないという理由もあるにはある。
  • メーカーファームウェアに書き戻す際は、公式からダウンロードしたものからヘッダを除去した上で6MiB丁度と残りに分割の上、それぞれkernelパーティションとubiパーティションに書き込む。
  • Flashは上記の通り128MiBであるものの、NAND特有のbadblock取り扱いに必要な領域や、その他の情報が保管される領域などである程度の容量が取られており、最終的にOpenWrtにおいて自由に使用できる容量はさほど大きくは無い。
  • OpenWrt 22.03用ブランチが切られた後のマージであった為、当該リリースには含まれず、次のメジャーリリース以降からサポートされる見込み。

作業時の色々

  • この機種においては、以前サポートをOpenWrtメンバーのhauke氏と共に投げ込んだWSR-2533DHP2のRTL8367Sと異なり、サポート済みであるMT7531を搭載している為、特に難なくネットワーク周りを動作させ作業を進めることができた。
  • 前述の通りramips targetで既にサポートされているWRC-*GS/GSV/GSTシリーズと同様のファームウェア形式を採っている為、factoryイメージ生成用コードを流用でき、その辺りは容易に仕立てることができた。
  • この機種においてはSPI-NORではなくSPI-NANDをFlashとして搭載している為badblockの発生を考慮する必要があり、PRを投げた後もしばらくはその辺りの対応で指摘をいくつか受けたり、修正が必要になるなどした。

色々

今回はおおよそのサポート自体はそれほど時間を要さず終えたものの、細かな調整や修正等によってマージされるまでにそれなりの時間を要した。特に、OpenWrt内におけるドライバの仕様変更に伴って2回ほど書き換えが必要になった個所もあった。
MT7622については、今回この機種を提供頂いた某氏から、WSR-2533DHP2におけるWireguard等の使用などでだいぶ優秀な実績を聞いており、その選択肢に今回加えられたのでその時々の中古価格などから選ぶと良いと思われる。あと

Panasonic Switch-M8eG PN28080K

恐らくOpenWrt全体で見ても初となると思われるPanasonic機。
自分の中ではAML2-17GPから始まったスイッチングハブ向けRealtek SoCにおけるOpenWrtの利用について、他に該当するデバイスが無いかあちらこちらをひっくり返した際に見つけ、強く興味を惹かれた機種です。
マージされたものの、色々あった関係で記事を後回しにしていたら忘れかけていました。
まとめていきます。

仕様

これまでマージされたAML2-17GP、BSH-G24MBよりも少ない8ポート(+SFP 1ポート)の機種です。それ故にSoCも前述の2機種と異なるRTL8380Mを搭載。

  • SoC: RTL8380M (500MHz)
  • RAM: DDR3 128MiB
  • Flash: SPI-NOR 32MiB
  • Ethernet: TP → 1000Mbps x8, SFP → 1000Mbps x1
  • RS-232C: 9600bps(RJ45, 所謂Ciscoケーブル互換)

その他詳細については、雑記を参照。

OpenWrt化

だいぶ複雑で長い手順を執る必要がある為、ここには掲載しません。コミット内に記載されている手順を参照してください。
realtek: add support for Panasonic Switch-M8eG PN28080K · openwrt/openwrt@e83ab24

備考

  • Switch-M8eGには旧モデルである “PN28080” が存在するが、そちらはPN28080Kと異なりBroadcomベースのハードウェアであり、今回のサポートと互換は無く、今後OpenWrtにおいてサポートされることも無い。
    PN28080は筐体フロント部分が本体と同色の緑で塗装されており、一方でPN28080Kはフロント部分のみ黒色に塗装されているため、そこで見分けることが可能。
  • フロント正面左側にある “LED DISPLAY” ボタンは、特段の機能を割り当てていない。その為、押しても再起動や設定の初期化は行えない。シリアルコンソールは表に直接出ているので、そちらからコマンドで実施などする。
    なお、 “LED DISPLAY” ボタンはブート時にfailsafeに入る為に使用することは可能。
  • SFPポートにおいては、NTT等の小型ONUは恐らく使用できない
    NTTによって公開されている小型ONUの 仕様書 を参照すると、以下の通りの仕様となっていることが読み取れる。
    (DDMについては仕様書内に記載が無い為、外部Wiki を参照)

    DDM
    00
    Options
    0200
    SFF-8472 Compliance
    00

    上記から、小型ONUは

    • DDM (Digital Diagnostic Monitoring) 非対応
    • Power Level II(1,500mW)を要求
    • SFF-8472コンプライアンス情報無し

    であることがわかる。
    Linux Kernelにおいては、SFPポートにおけるデフォルトの電源供給能力は1,000mWに設定されており、これを超える電力 (Power Level) を要求するSFPモジュールが挿入された際、

    • SFPモジュールがSFF-8472コンプライアンス情報を提供しているかDDMをサポートしている → 1,000mWまでの供給に制限してモジュールを動作する
    • SFPモジュールがSFF-8472コンプライアンス情報を提供せずDDMもサポートしない → 完全に非対応モジュールとして扱い認識を失敗させ使用不可とする

    という挙動をする。(ここ
    Panasonic Switch-M8eG PN28080Kについては、SFPポートにおける仕様上の最大供給電力についての情報が得られておらず、デフォルトの1,000mWから供給能力設定を引き上げられていない。
    そのことから、前述の通り小型ONUの要求電力が1,500mWでSwitch-M8eG側の供給能力1,000mWを超過し、なおかつ小型ONU側がSFF-8472コンプライアンス情報もDDMも提供しない為、Linux Kernelにおいては完全に非対応のモジュールとして扱われ、使用不可となることが予想される。
    なお、DeviceTreeに変更を加えて動作させることは恐らく可能であるものの、設計上の電力供給能力がもし不足する場合は電子回路に過負荷を掛ける恐れがあることから、あまり推奨しない。故障等を引き起こすことを認識した上で、完全に自己責任として行うこと。

  • SFPモジュールは、現状Cisco GLC-SX-MMと10GtekのGLC-SX-MMD互換モジュールが動作することを手元で確認。
  • OpenWrtのリリース版については、22.03シリーズからサポートされる。

作業時の色々

  • 元々はSwitch-M8eG PN28080Kよりも先にSwitch-M24eG PN28240Kを確保して作業を進めていたものの、そちらにはOpenWrtのrealtek target(旧rtl838x target)において未だサポートが存在しないRTL8218FBが搭載されており、TP/SFPのコンボポートを正常に動作させる(特にSFP側)にはドライバにRTL8218FBサポートを追加する必要があることから、その作業が不要なSwitch-M8eG PN28080Kを先にOpenWrtに投げ込んだ。
  • 前項の通り当初はSwitch-M24eG PN28240Kを先に作業していたものの、後からSwitch-M8eG PN28080Kも確保して作業を開始し、両機種においてハードウェアに共通点がある程度存在することから、構成情報を記述するDeviceTreeにおいても共通使用するファイルを用意することとした。この共通ファイルについては何度かOpenWrtのチームメンバーなどとpatchを投げ込んだ際にやり取りして改善を重ね、最初に投げ込んでからそれなりに経過してようやくマージされた

色々

前述の通り、最初に投げ込んでから色々あった結果マージまでにだいぶ時間を要したものの、なんとかマージされ一安心。
家庭向けルータではもちろんのこと、安価帯のスイッチングハブでは搭載しないことが多いシリアルコンソールのポートを搭載していることからネットワークが不通となっても設定が行うことができる為、このSwitch-M*eG PN28xx0Kシリーズは個人的にお気に入りだったりします。ただ、Flash内にファイルシステムが存在しているなどして扱いに若干面倒な点はあるけれども。
シリーズ内の16, 24, 48ポートの他機種は現在作業中であり、おおよそはSFPポートを含めて動作する状態まで到達しています。が、realtek targetのKernelバージョン引き揚げ作業やその他の関係上、それぞれのサポートを投げ込むにはまだしばらく掛かります。

I-O DATA BSH-G24MB

自分が作業した中で2機種目のrealtek機サポート。
AML2-17GPで関わり始め、その後国内メーカー機からRealtek SoCを搭載するものを探し回った結果見つけた機種。
ステータスLED周りで若干気になる点があるなどして少し保留にしていたものの、今回マージされました。
まとめていきます。

仕様

先にマージされたAML2-17GPよりも多い24ポート搭載機であり、SoCは同じRTL8382Mを搭載しています。Flash容量は半減。

  • SoC: RTL8382M (500MHz)
  • RAM: DDR3 128MiB
  • Flash: SPI-NOR 16MiB
  • Ethernet: 1000Mbps x24
  • UART: JP2, 115200bps(リア側から3.3V, TX, RX, GND)

その他詳細については、雑記を参照。

OpenWrt化

AML2-17GPと異なり、この機種においては直接sysupgradeイメージを投入することが可能です。

BSH-G24MBを起動してDHCPが機能しているネットワークに接続
通常通り電源を接続して起動し、DHCPサーバによりIPアドレスが配布されているネットワークに適当なポートを接続する
ファームウェア設定ページを開く
PCからBSH-G24MBのWebUIにログインし、ファームウェア更新ページを開く
sysupgradeイメージをリネームしたうえで投入
WebUIが求めるファイル名 “bsh-g24mb_v100.image” に変更したうえで選択し、”適用” ボタンを押下してアップデートを実行
完了
Flashへの書き込みが完了後再起動され、OpenWrtで起動する

備考

  • 基板上のUARTはピンヘッダが最初から立っており、筐体も開けやすいことから比較的接続は容易。
  • 仕様で書いた通りFlashは16MBであり、その中でOSイメージを2つ持つ構造となっている為、1つあたりは 0x6B0000(6.69MiB弱)しか使用することができない。
    しかしながらこのサイズではOpenWrtでは若干厳しい為、メーカーファームウェアでは使用されていない2つ目の領域を1つ目と統合して 0xD60000(13.375MiB)を確保した。
  • 上記に絡んで、メーカーファームウェアのWebUIから投入する際に、ファームウェアサイズが大きい場合にはエラーとなるか、あるいは全体を書き込むことができず正常にブートできなくなる可能性もある。
    その場合、比較的接続が容易なUARTを用いて投入を行うことを推奨。ただし、電源内蔵タイプである為、感電には十分に注意すること

作業時の色々

  • 上でも書いた通りステータスLEDで若干気になる点はあったほか、搭載するFlashのサイズが小さい点がきになる機種ではあるものの、それ以外は特段癖は無いので比較的スムーズに作業を進められた。
    ステータスLEDが接続されているGPIOピンはGPIOとして使用することができるほか、RTL8382Mがハードウェア的に制御するステータスLED専用ピンとしても使用することが可能なものであり、メーカーファームウェアでは後者で構成されていた。しかしながらOpenWrtではハードウェア制御を適切に扱えるドライバが存在しない為、レジスタを切り替えてGPIOとして扱うように構成した。

色々

今回は丁度realtek targetにおいてKernelバージョンの引き上げなど様々な変更が入ってくる時期に当たったため、しばらく保留にするなどした関係上おおよその作業完了からPRをオープンするまでそれなりに時間を要した。しかし、PRをオープン後はそこまで時間を要さずマージされたので一安心。
上記の通りFlash容量が小さくメーカーファームにおけるファームウェアの最大サイズが小さい関係上、WebUIから投入できるサイズが若干厳しいので、その点が若干残念かなと思うところ。
なお、今のところはBSH-G08MやBSH-G16MB等、シリーズ内他機種のサポート予定はありません。