大破ログ

日々大破、それと側転少々。PC関連その他、気になったことなどをつらつらと。

メインブログをWordPress.comからはてなに移行

WordPress(というかWordPress.com)が何年か前から見た目のみ重視したアップデートを繰り返し、技術系ブログ用途としてはかなり不適格になっており、記事の執筆/編集中にイライラする頻度がここ数年上がりっぱなしであったことから、本腰を入れてはてなに移行することにしました。
例:

  • コードベースではなく外観ベース(WYSIWYG)のエディタをデフォルトで表示する
    • 少し前からコードベースのエディタを一度選んでも次回以降また外観ベースに戻るようになった
  • 勝手にHTMLタグを増殖させる
    • 括弧 < >が存在する場合、勝手にHTMLタグと解釈して閉じタグを追加したりその他にも勝手にタグを追加する
      • もしコードブロック中に存在していても同様の挙動をする
  • あまりに大量かつ不快なカテゴリ(陰謀論系含む)の多い広告
    • 無料プランではサイト所有者による制御は一切不可

Windows Live Space時代にブログに興味を持ち、当時は鉄道関連中心に書き始め、Live Spaceのクローズが決まった際は公式から移行先として案内されたWordPressへ移行しました。
そこから幾年、ついに長きに渡って使い続けたWordPressを捨てる(といっても年数長くなったのもあり、いきなり消してしまうとマズいので新ブログへのリンクは残す)こととなりました。

一応既に記事は全てこのブログにコピー済みであり、古い記事はまだフォーマットの乱れが残っているものの、気が向いたときに整備していく予定です。
その際、今となっては記事が存在する必要性が低く、整備が面倒だと思った場合は非公開にしたり、削除する可能性もあります。

また、ブログを始めた当時は鉄道関連とPC関連を扱うつもりだったことから "鉄PCブログ" と命名したものの、結局生活の変化などもあり鉄道関連を扱う機会は急減して今はほとんど無くなったことから、このブログではサイト名を変更し "大破ログ" としました。

とにもかくにも、引き続き色々と書き散らしていくので、今後もよろしくお願いします。

雑記も移行しなければ...

Fortinet FortiGate 50E

FortiGate 50E内部

ヤフオクにて漁っていた際にネットワークアダプタの情報がMarvellのものであることに気付いて衝動的に確保し、多少苦しみながらも解決して投げ込み、マージされました。

まとめていきます。

仕様

大半の機種でFortiSOCまたはIntel CPUを搭載するFortiGateとしてはかなり珍しく、Marvellの汎用SoCである88F6820を搭載しています。
そしてRAMが大きい上、個人的に初となる128MiBのSPI-NOR Flashを搭載。(これまで見たことのあるSPI-NORは64MiBが最大)
さらにはイーサネットポートを合計7ポートも搭載。

  • SoC: Marvell Armada 385 88F6820
  • RAM: DDR3 2048MiB (MT41K512M8DA-107 x4)
  • Flash: SPI-NOR 128MiB (MX66L1G45GMI-10G)
  • WAN/LAN: 1000Mbps x2/1000Mbps x5
  • USB: USB 3.0 Type-A x1
  • UART: "CONSOLE", 所謂Ciscoケーブル互換

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

OpenWrt化

ブートローダが主に復旧用としてファームウェア投入機能を持つ為、それを利用してinitramfsイメージを踏み台とする
なお、 "FG-50E" と称する

FG-50Eのブートメニューを表示させる
電源を接続してブートする途中、 Please wait for OS to boot, or press any key to display configuration menu と表示されたタイミングで適当なキーを押下し、ブートメニューに入る
TFTPサーバを用意
ブートメニュー上で [R]: Review TFTP parameters. を選択してTFTP関連の情報を表示し、それに従ってTFTPサーバを用意する
なお、PCはTFTP関連情報内に示されるポートに接続する
また、OpenWrtのinitramfsイメージは "image.out" にリネームの上TFTPフォルダに配置する
TFTPでinitramfsイメージをダウンロード
ブートメニュー上で [T]: Initiate TFTP firmware transfer. を選択してTFTPを実行し、initramfsイメージをサーバからダウンロードする
initramfsイメージを実行
TFTPサーバからのダウンロードが完了後 Save as Default firmware/Backup firmware/Run image without saving:[D/B/R]? と表示されたら R キーを押下し、Flashには書き込まず実行する
メーカーファームウェアをバックアップ
もし将来的にメーカーファームウェアに書き戻す可能性がある場合など、必要であればメーカーファームウェアをバックアップする
dd を用い、/proc/mtd を確認の上 "firmware-info", "kernel", "rootfs" を最低限取り出し、scp等でPCに転送し保管する
例)
root@OpenWrt:/# mkdir /tmp/mtd
root@OpenWrt:/# cd /tmp/mtd
root@OpenWrt:/tmp/mtd# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 001c0000 00010000 "u-boot"
mtd1: 00010000 00010000 "firmware-info"
mtd2: 00010000 00010000 "dtb"
mtd3: 00010000 00010000 "u-boot-env"
mtd4: 00010000 00010000 "board-info"
mtd5: 00600000 00010000 "kernel"
mtd6: 01800000 00010000 "rootfs"
mtd7: 00600000 00010000 "kn2"
mtd8: 01800000 00010000 "rfs2"
mtd9: 01200000 00010000 "part1"
mtd10: 01200000 00010000 "part2"
mtd11: 01e00000 00010000 "config"
root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock1 of=mtd1_firmware-info.bin
128+0 records in
128+0 records out
root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock5 of=mtd5_kernel.bin
12288+0 records in
12288+0 records out
root@OpenWrt:/tmp/mtd# dd if=/dev/mtdblock6 of=mtd6_rootfs.bin
49152+0 records in
49152+0 records out
バックアップをデバイスに書き戻す際は、mtd コマンドを用いて書き込む
mtd write <backup image> <target partition>
例)
mtd write mtd1_firmware-info.bin firmware-info
mtd verify mtd1_firmware-info.bin firmware-info    # 書き込まれたデータが元データと一致するか検証
OpenWrt上でsysupgradeを実行
scpなどを用いてsysupgradeイメージをデバイス上にアップロード(またはダウンロード)し、sysupgradeを実行する
完了
Flashへの書き込みが完了後再起動され、OpenWrtで起動する
この時メーカーファームウェアで起動してしまう場合は、ブートメニューに入ったうえで [B]: Boot with backup firmware and set as default. を選択し、デフォルトのOSイメージをOpenWrtを書き込んだ1番目の方に切り替える

備考

  • フロントのWAN1/2の "SPEED" LED(緑)とLAN1~5の "SPEED" LED(緑/橙)はOpenWrtにおいては100/1000Mそれぞれのリンク速度による取り扱いを行うことができない為、代わりに速度問わずリンクが確立された場合点灯するように構成した。
    Linux Kernel及びOpenWrtにおいて、ネットワークデバイスのリンク速度に従ってLEDを制御するトリガが存在しないことが理由。
    2023/07/29追記: 後日薄っすらと気になる記憶があり確認したところ、Ethernet PHYのリンク状態でLEDを制御するトリガがLinux Kernelに存在していることに気付き、それを使用してメーカー公式ファームウェアと同じ挙動をさせる変更を投げ、マージされた。

  • WAN1, WAN2ポートはデフォルトでブリッジを構成している為、上流が1系統である場合はどちらに接続しても問題無い。
    ただし、それぞれで別系統のWANを利用する場合、ブリッジを解除しそれぞれにOpenWrtの仮想インターフェースを割り当て直す。

  • OpenWrtのサポートにおいては、Flash内に2組存在するOSイメージ領域のうち1つ目の最小限を利用するよう構成しており、もう片方のメーカーファームウェアに対しての影響は恐らく無いと思われる。
    この為、ブートメニューにおいて [B]: Boot with backup firmware ~ を選択することで、必要に応じてOpenWrtとメーカーファームウェアを切り替えてブートできる。

  • 中古などで入手する場合、本機種のDCジャックは特殊であり通常の丸形プラグを持つACアダプタを使用できない為、基本的にはACアダプタが付属するものの選択を推奨。
    なお、嵌合するプラグはMolex 5557-02Rであり、自作することは可能()。

作業時の色々

  • 現状FortinetからGPLソースコードは提供されておらず、基本的にはメーカーファームウェアのDeviceTreeのほか、実機上で試行錯誤を重ねてサポートを詰めていった。

  • ブートローダ自体はU-Bootであるものの、それ自体では中断プロンプトが出ず連続して実行されるFortiGate用プログラムないしはU-Boot内の改変部において中断プロンプトが表示される。それによって現れるブートメニューで受け付けるイメージ形式はU-BootのものではNGで、その形式の特定に少々時間を要した。
    最終的に、本来ヘッダ内にはkernelやrootfs, DTB, その他データ等のoffset/lengthに加え様々な情報が付加されるようであるものの、そのうちkernelとrootfsのoffset/lengthのみでチェックを通せることが判明し、その形式をOpenWrtでのビルド時に生成するようにした。

  • 上記のTFTPで渡すイメージ形式に加えて、Flash内からブートする際に必要となるファームウェア情報が格納される場所の特定にも少々時間を要した。
    TFTPで渡すイメージにはヘッダが必要であるものの、実際にFlash内のファームウェア領域に書き込まれるファームウェアではヘッダが削除されており、単体のzImageとなっている。しかし一方で、ブートローダによってFlash内からブートされる際、明らかにどこかに格納されたサイズ値を用いてkernelを読み込んでいるログが出ており、FlashからOpenWrtをブートするにはそれがどこに存在しているかを探し当てる必要に迫られた。
    Flash内でファームウェア情報らしきものが存在する領域は早々に特定していたものの、ではその内のどれがKernelのサイズ値であるかということを特定するのに手間取った。結局のところ、あちこちの値に何とはなしにビットシフトを掛けていた時に偶然ブートローダが読み出すサイズの16進数値に見えるものが出現し、確認した結果 0x200 (512 bytes) をブロックサイズとしたブロック数が格納されていることを特定した。なお、kernelだけではなくrootfsのブロック数も格納されていた。

  • SoCのCPUが2C2Tであること、1GHzを超えるクロックであることなどからパワーがあり、サポート作業中の計測では LAN→WANの単純NATにおいて900Mbps超を記録し、負荷時のCPU使用率は 50%前後であった。

色々

日本国内でのOpenWrt目的としては貴重な有線機であること、上記の通り厄介な点はいくつかあったものの技術的興味は大きかったことなどから、ヤフオクで落札し届いた翌日からひたすら弄り回してサポート作業を進め、作業開始から4日ほどで大まかにOpenWrtで動作するところまでこぎつけることができた。
上述の通りSoCにパワーがあり、RAMが多く、イーサネットポート数が多く、USB 3.0ポートを搭載する上に中古ではライセンス切れの個体などが安価に数が出ている為、選択肢として良いように思える。個人的にはコンソールポートを搭載しているのもGood。

BUFFALO WXR-5950AX12

WXR-5950AX12内部

某氏から提供頂いて3年弱。
ipq807x targetが一度追加されたものの削除され、1年以上開いてから再度追加されるなどしてようやくデバイスが扱える状態となり、サポートを行って投げマージされました。
まとめていきます。

仕様

個人的に初となる10GbE対応機。AQR113Cにより提供されています。

法律の関係上、無線機能の使用は非推奨です。

  • SoC: IPQ8074A (max. 2.2GHz, 4C4T)
  • RAM: DDR3 1024MiB (NT5CC256M16ER-EK x2)
  • Flash: RAW NAND 256MiB (W29N02GZBIBA)
  • WAN/LAN: 10000Mbps/10000Mbps + 1000Mbps x3
  • UART: J7, 115200bps(丸マークから3.3V, GND, TX, RX)

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

OpenWrt化

WXR-2533DHP同様、initramfsイメージを経由して導入する方法です。

TFTPサーバを用意
TFTPサーバを 192.168.11.10 で用意し、initramfsイメージを "WXR-5950AX12-initramfs.uImage" にリネームの上TFTPフォルダに配置する
AOSSボタンを押しながらWXR-5950AX12を起動
AOSSボタンを押しながらWXR-5950AX12の電源を投入して起動すると、少ししてinitramfsイメージがTFTPで読み出され、それを使用して自動的にブートされる
OpenWrt上でsysupgradeを実行
WXR-5950AX12に接続してscpなどを用いてsysupgradeイメージをデバイス上にアップロード(またはダウンロード)し、sysupgradeを実行する
完了
Flashへの書き込みが完了後再起動され、OpenWrtで起動する

備考

  • この機種のサポートにおいて、Flashパーティション情報をLinux Kernelに渡す方法はQualcommのsmemを利用した。その関係上、各パーティションは基本的にread-onlyフラグが立っておらずデフォルトで書き換え可能の状態となっている為、誤って書き込んだり消去したりしないよう十分注意する。
  • 10GbE対応のポート2つについては、1Gbpsまではテストしているもののそれを超える速度については手元に検証環境が無いため、未テスト。
  • メーカーファームに戻す際は、ダウンロードした公式ファームウェアを一部加工の上Flashに書き込む必要がある。 手順についてはサポートコミットを参照。
  • WXR-6000AX12S, B, Pについては現状所有しておらず互換性を確認できない為、それらは未サポート。

作業時の色々

  • 冒頭にも書いた通り、この機種が属するipq807x targetは2020年2月末に突然ポンと投入されたものの、デバイスは追加されず何も動きが無いまま時間だけが流れ、その後その時点では難ありとして2022年1月に一旦targetが削除された。理由としては、サポートを実現するにも大量のpatchを投入する必要が生じることなど。
    それから1年、それまでからも継続して主にForumなどでipq806x target等を主に扱っている方々が中心になって上流のLinux Kernelを含めた改善を進め、今年(2023年)1月に再度ipq807x targetが追加され、同時にいくつかのデバイスのサポートもマージされた。
    WXR-5950AX12もサポート作業を一から作り直して投げ込み、マージされた。

  • WXR-5950AX12はaarch64のIPQ8074Aを搭載しているものの、メーカーファームウェアは何故か32bit Kernelを使用している。その為、もしかしたら64bitのKernelはブートできないのではないかと危惧していたものの、上記の通りipq807x targetが復活してからサポート作業を行ったところ、あっさりと64bit Kernelをブートでき、特に問題も無かった。

  • この機種はメーカーファームウェアにおいて、Flash内のファームウェアパーティションファームウェアデータのMD5ハッシュを格納している。このハッシュは現状どこから取られたものであるか不明であり、OpenWrtのサポートに際して不安であった。 ただ、ブート時にこのハッシュのチェックは行われるものの、Flash内に2つあるOSイメージの各ハッシュを文字列として比較するのみであり、特にハッシュに基づいたデータの整合性の確認は行われなかった為、OpenWrtにおいてはダミーの文字列を投げ込むことで対処することとした。

  • WXR-5950AX12は某氏より提供頂いた2020年3月頃にGPLソースコードのリクエストは送ったものの、結局記事執筆時点でも未公開のまま。サポート作業に際してハードウェア仕様について参考にできないし、待つにしてもいつになるか全くわからないので、諦めて実機で色々ひっくり返して情報を集め、コードを詰めて投げ込んだ。

色々

苦節(?)3年、ようやくマージまで到達し、やっと肩の荷が下りた。
BUFFALO特有のAOSSボタンを利用したファームウェア投入はやはり便利であるものの、Flash内部でのファームウェア取り扱いがWXR-2533DHP同様にやはり一手間必要であった。
また、メーカーファームウェアではネットワーク周りの構成が一部未定義となっている箇所があり(おそらくブートローダかどこかで構成される)、各所の情報を基に書き起こす必要が出てくるなどしたものの、技術的な知見となったので良し。

APRESIA ApresiaLightGS120GT-SS

ApresiaLightGS120GT-SS内部

Panasonic機に続いて、OpenWrtでは初となるAPRESIA機。
通常OpenWrtのサポート作業に用いるデバイスは中古で調達するものの、ApresiaLightGSシリーズについては中古で出てくることがごく稀で、あまり高価ではなかったことから結局新品で調達。
ファームウェアの構造に絡んで面倒な点が出ていたことから長らく保留にしていたものの、他機種に絡んで投げ込まれた変更により解決したのでこの機種も投げ込みました。
まとめていきます。

仕様

基本的には16+1ポートのAML2-17GPと似た構成であるものの、SFPポートの有無などで差異があります。

  • SoC: RTL8382M (1C1T, 500MHz)
  • RAM: DDR3 256MiB
  • Flash: SPI-NOR 32MiB
  • Ethernet: TP → 1000Mbps x20, SFP → 1000Mbps x4(TP 4ポートとコンボ)
  • UART: J6, 115200bps(三角マークから3.3V, TX, RX, GND)

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

OpenWrt化

factoryイメージは存在するのもの、投入時に一点のみ注意が必要です。

BSH-G24MBを起動
通常通り電源を接続して起動
ファームウェア設定ページを開く
公式のユーザーズガイドに従ってPCからApresiaLightGS120GT-SSのWebUIにログインし、ファームウェアページを開く
起動イメージを確認して必要なら変更して再起動
"稼働中イメージ" を確認し、"イメージ2" であるなら次の手順へ、"イメージ1" であるなら "次回起動イメージ" を "イメージ2" 設定の上再起動
factoryイメージをリネームしたうえで投入
"次回起動イメージ" を "イメージ1" に設定の上、ファームウェア更新においてfactoryイメージを選択して更新実施 更新が完了後は再起動する
完了
OpenWrtで起動する

備考

  • ApresiaLightGSシリーズはFlash内にOS用パーティションを2組持っており、ファームウェア更新時にはその時ブートに使用していない方のパーティションに書き込まれる。OpenWrtでは1つ目のパーティションからのブートしか想定していない為、公式ファームウェアを2番目のパーティションからブートした状態でOpenWrtのfactoryイメージを1つ目のパーティションに書き込ませる必要がある。
  • フロントのポートLEDを除いたシステム系LEDは "PWR" と "LOOP" の2つが存在しているものの、実際にはそれら2つの中間にもう1つ未使用のLEDが存在している(ただし筐体側に穴が無し)。これについては "green:unused" という名前で定義してあり、OpenWrt上で操作することは可能。
  • ポート17-20においてSFP側を使用している際は "17F" - "20F" が本来点灯/点滅する。ただしOpenWrtにおいては現状TP/SFPどちらを使用していても "17" - "20" が点灯/点滅する。
  • SFPポートは使用可能。 ApresiaLightGSシリーズにおいては、未サポートのRTL8218FBを搭載するPanasonic Switch-M*eG PN28xx0Kシリーズとは異なり、SFPはRTL8214FCによって提供されている。このチップは既にOpenWrtでサポートされており、SFPについても問題なく機能する。
  • 小型ONUはおそらく使用不可。
    ApresiaLightGS120GT-SSにおいても、Switch-M8eG PN28080Kと同様にSFPポートの設計上の電力供給能力上限が不明であり、通常のSX/LXなSFPモジュールが要求する1Wを超えて1.5Wを要求する小型ONUは、現状ではおそらくエラーとなり使用できない。
  • SFPポートに挿入されたモジュールの詳細については、 ethtool -m <port> を実行することで確認できる。(例: ethtool -m lan17
    公式ビルドのethtoolでは生の16進数値を表示するのみである為、テキストに置き換えた表示が必要である場合は "ethtool" を削除の上 "ethtool-full" をインストールする。
  • 型番が近似のPoEモデルが存在するものの、そちらについては現状入手しておらず互換性が確認できていない為、未サポート。また、それを含むApresiaLightGSシリーズの他機種は現時点では入手予定は無し。

作業時の色々

  • ApresiaLightGSシリーズにおいては、製造したCAMEO特有と思しきヘッダがファームウェアに付されており、ブート毎にU-Boot(というよりはU-Bootにより実行されるプログラム?)によりチェックされる。このヘッダの取り扱いに長らく難儀していて、投げ込みを保留していた。
    その後、同じくCAMEOにより製造され、同じヘッダを持つD-Link DGS-1210シリーズが他の人により投げ込まれ、その際ヘッダを含めたファームウェアの生成周りが解決されたので、ApresiaLightGS120GT-SSも同じ構造に落とし込んで投げ込んだ。
  • 上記の通り、初回導入時に1組目のパーティションに合わせる必要があるのが手間であり、誤って2組目に投入してしまった場合トラブルになることから、この機種のPRをオープンした際はそれを解決する為の変更も一緒に投げ込んでいた。
    ただ、両方を併せてとなるとOpenWrtチームメンバーその他によるレビュー等に時間を要することが予想された為、ひとまずApresiaLightGS120GT-SS単体を優先する提案を受けてその通りに変更し、マージされた。

色々

時間は掛ったものの、なんとかマージまで到達したので一安心。初回導入時の手間を減らす変更については受け入れられるかどうか微妙なところであり、ひとまず期待半分でいく予定。
先行してマージされたSwitch-M*eG PN28xx0K (16/24/48)と異なりSFPポートも機能すること、Switch-M8eG PN28080KよりもTP/SFPともにポート数が多いことなどから、その点で色々と活用しやすい機種に思える。
ちなみに、DGS-1210シリーズのRealtek SoCを搭載するハードウェアリビジョンと基板がほぼ同じである模様。

ELECOM WRC-2533GHBK2-T

WRC-2533GHBK2-T内部

今回は既にサポート済みであるWRC-2533GHBK-Iの近似となるこの機種。
サポートがマージされて以降も諸々の作業を優先して記事を後回しにしていましたが、さすがに書くことにしました。
まとめていきます。

仕様

これもサポート済みのWRC-2533GHBK-IやWRC-2533GST(2)と同様に、MT7621AとMT7615 2つを搭載する構成です。 法律の関係上、無線機能の使用は非推奨です

  • SoC: MediaTek MT7621A (880MHz, 2C4T)
  • RAM: DDR3 128 MiB
  • Flash: SPI-NOR 16 MiB (MX25L12835F)
  • WAN/LAN: 1000Mbps/1000Mbps x4
  • UART: J4, 57600bps(SoC側から 3.3V, RX, GND, TX)

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

OpenWrt化

基本的にWRC-2533GHBK-Iと同じヘッダである為、問題なくfactoryイメージを生成できています。 ルータモードに設定されていることを前提とします。

WRC-2533GHBK2-Tをブート
WRC-2533GHBK2-Tに電源ケーブルを接続し、通常通り起動
WebUIを開き、ファームウェアアップデートページに移動
http://192.168.2.1/ にアクセスし、ファームウェアアップデートページを開く
アップデート実行
OpenWrtのfactoryイメージを選択し、 "適用" ボタンをクリックしてファームウェアアップデートを実行
完了
OpenWrtで起動してくれば完了

備考

これもそんなにクセは無い機種なのであまり書くこと無し。

作業時の色々

  • 前述の通り、Flash内部のパーティションは異なるもののハードウェア自体はWRC-2533GHBK-Iと共通であり、それ故共通部分をWRC-2533GHBK-Iのdtsからdtsiに分離してWRC-2533GHBK2-Tからも読み込むようにした。

色々

この機種についてはあまり変更度合いは大きくないものの、OpenWrtのチームメンバーが忙しいタイミングだったのかマージされるまで少々時間を要した。
上で触れたとおりWRC-2533GHBK-Iと比べてファームウェアパーティションが小さくなっており、比較的早いうちにファームウェアサイズの限界が来そうな予感がする。MT7621機である故に残念。

Sony NCP-HG100/Cellular

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-M24eG PN28240K内部

少し前にサポートされた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化

だいぶ複雑で長い手順を執る必要がある為、ここには掲載しません。各サポートのコミット内に記載されている手順を参照してください。

備考

  • 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-MeG PN28xx0Kに類似のシリーズとして、使用可能温度範囲を高めたSwitch-MeGi 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は時々中古で出てくることはあるものの、基本的には稀で入手性は低め。