自分初のrealtek targetデバイス。
もうだいぶ前に吉川のハードオフで物色していた際、偶然見つけたもの。初対面ではこの機種の詳細を把握していなかったので一度見送り、メーカーサイトで調べたうえでVLANなど対応しているのは良いなと思い後日購入。
当時realtek target(注: 当初はrtl838x target)は姿形全く無く、あくまで普通のスイッチングハブとしての使用しか考えていませんでした。
色々な経緯を辿り偶然にもrealtek targetに属するSoCを搭載することからサポートを投げ込み、マージされました。
なかなか書くタイミングが無く遅くなったものの、まとめていきます。
仕様
Realtek SoCの中でも、スイッチングハブ向けであるRTL8382Mを搭載。SoCの8ポートのほか、RTL8218Bを1つ追加で搭載しもう半分の8ポートを、RTL8214FCでWAN/CONSOLEポートを担当しています。
UARTはボックスヘッダが使用されており、ケーブル側としてMolex 530470410の嵌合相手であるMolex 510210400が使用できます。
- SoC: RTL8382M (500MHz)
- RAM: DDR3 128MiB
- Flash: SPI-NOR 32MiB
- Ethernet: 1000Mbps x17
- UART: J14, 115200bps(リア側から3.3V, GND, RX, TX、Molex 530470410互換)
その他詳細については、雑記を参照。
OpenWrt化
仕様上squashfs形式のイメージを直接使用できないため、initramfs-kernelイメージを使用し2段階で導入します。
- AML2-17GP
- 通常通り電源を接続して起動
- ファームウェア設定ページを開く
- PCをAML2-17GPの "WAN/CONSOLE" ポートに繋いで
http://192.168.1.148
にアクセスし、ファームウェア設定ページ("デュアルイメージ")を開く - 1番目のイメージをアクティブに設定
- パーティション 0 のイメージをアクティブに設定する
- ファームウェア更新
- ファームウェア更新ページを開き、
- アップグレード方式: HTTP"
- アップグレードタイプ: イメージ
- イメージ: アクティブ
- 再起動
- 更新完了後再起動するか聞かれるので、OKを押下して再起動
- sysupgrade実行
- OpenWrtのinitramfsイメージで起動するので、 "WAN/CONSOLE" ポートから "1" ポートに繋ぎ変えたうえでVLAN 100を設定して192.168.1.1にSSHでアクセス、sysupgradeイメージを使用してsysupgradeを実行
- 完了
- Flashへの書き込みが完了後再起動され、OpenWrtで起動する
備考
- AML2-17GPはフロントに "POWER" LEDがあるものの、GPIOには接続されておらず電源線直結であるため、OpenWrtから制御できない。従ってシステムステータスを表示できず、ブート中に点滅させたりできない為、経過時間からブートしたかどうか判断する。
- 上記の導入手順からわかるとおり、OSイメージ2つをFlash内に抱えている。Realtek SoCを搭載するスイッチングハブでは一般的な仕様である模様。
ファームウェア投入時、uImageヘッダに埋め込まれたデータサイズのみFlashに書き込まれる仕様であるため、squashfs形式のイメージを使用した場合、そのデータサイズが示すKernel部分のみ書き込まれRootFSは欠落する。この結果、ブート時にKernelがRootFSを見つけられずpanicしてbootloopを起こすため、一旦initramfsイメージを書き込む必要がある。 - "WAN/CONSOLE" ポートはデフォルトではOpenWrt上で使用可能なポートとして割り当てていないため、必要な場合はネットワークのconfigを修正するなどして割り当てる。
- マージされた時期の関係から、21.02リリースには含まれない。
- フロントに配置されている "RESET" ボタンは、メーカーファームウェアにおいては再起動しか行われず設定初期化はできないが、OpenWrtでは通常のOpenWrtを投入したルータと同様に長押しで設定初期化、短い押下で再起動する。
作業時の色々
- 雑記を見るとわかるとおり、確保した当時realtek target(旧rtl838x target)は存在せず、またRealtek SoCは無線機でもLinuxやOpenWrtでのサポートが無いことから、まずOpenWrtを動かすことなど考えていなかった。ただ、AML2-17GPに設定されていたパスワードを初期化するために開けたところLinuxを使用してはいたので、雑記に恒例のメモはなんとなく書いた。
その後、偶然Forumでスイッチングハブ向けRealtek SoCにおけるOpenWrtサポートについてのtopicを見つけて、本当に偶然にこの機種が該当することに気付いて、試しに作業している方のコードを利用してOpenWrtを動かしてみるなどした。
その縁からその方と一緒にいくらか作業することになり、当時その方のコードがベースとしていたKernel 4.19から、OpenWrt内で移行が進んでいたKernel 5.4への移植をある程度手伝うなどした。今振り返ると、わかる範囲であるものの自分でも驚くほどコード書き直したり整理したりしている。 - 長らくUARTボックスヘッダの仕様が不明で、無理矢理クリップで繋いでアクセスしていたものの、ピン感覚が狭いため非常に面倒だった。
さすがに面倒極まりないのでMastodonで詳しい各位に聞いたところ、 "製造が中国方面であるなら日本圧着端子製造かMolex互換が定番なのでその辺りではないか" という意見や、 "実物のおおよそのサイズからMolex 530470410が近いのでは" という意見があり、その後思い切ってMolex 530470410嵌合相手である510210400 (51021-0400) を千石電商で購入し試したところ、寸分違わずピッタリであった。
なお、ケーブルが細い他コンタクトが小さく扱いが面倒であるため、可能ならば自前で圧着するよりもケーブル圧着済みのものを確保することを推奨。
色々
少々いくつかの問題がありサポート作業に時間がかかり、PRをオープンした後も少し時間を要したものの、マージされたので一安心。
ただしこの機種は、メーカーやブランドの位置付けからして住宅やアパート等向けと思われ、一度設置した後は故障するまでそのままとなることがほとんどとなりそうで、それ故にオークションやフリマ等検索しても見つからないのかもしれない。ハードオフで、しかも2つも見つけて入手できたのは運がよかったのかもしれない。
正直なところ、realtek targetの機種については、これまでルータが主なターゲットであったOpenWrtがスイッチングハブで動くという目新しさ、面白さが自分のモチベーションにかなり直結している。
機能面としては、AML2-17GPではメーカーファームウェアではSSHをサポートしないのでOpenWrtを導入することで利用可能になるほか、ほぼ汎用的なLinuxが利用できることからSoCの極端な負荷にならない範囲で様々なことができるようになる。その他の機種によっては、ネットワーク関連の機能で差別化などの意図からサポートされないものも利用できるようになるなどのメリットもあると思われる。