OpenWrtに2台目のNEC機が加わりました。
NECのサイトでWG2600HPx以外にLinux機が無いものか探していたところ見つけた機種です。公開されているGPLソースコードにはLinuxのコードが含まれていなかったものの、アップデート用ファームを調べたところOpenWrtベースである様だったので、サポート作業して投げ込みました。まとめます。
仕様
以前投げ込んだWRC-300GHBK2-Iと同じ、QCA9563を搭載しています。2.4Gの無線にはSoC内蔵の無線機能を、5GにはQCA9887を使用。法律の関係上、どちらも使用は非推奨です。
- SoC: Qualcomm Atheros QCA9563 (750MHz, 1C1T)
- RAM: DDR2 SDRAM 64MB (M14D5121632A)
- Flash: SPI-NOR 8MB
- WAN/LAN: 1000Mbps x1 / 1000Mbps x3 (QCA8337)
- UART: 115200bps(SoC側からVcc, GND, NC, TX, RX)
その他ハードウェアやKernel等細かい点の詳細については、雑記ブログにメモしてあるのでそちらを参照。
OpenWrt化
Kernel + Rootfsにxorが施され、そこにヘッダ、末尾に10進数のKernel + Rootfsサイズが付加されるのみであったため、factoryファームを作ることができました。
- WG800HPを起動 WG800HPに電源ケーブルを接続し、普通に起動。
- WebUIにアクセス
http://192.168.10.1/
を開き、ファームウェア更新ページへアクセス。 - ファーム更新 WG800HPのfactoryファームを選択し、アップデートを実行
- 完了 Flashへの書き込みが完了し、OpenWrtで起動してくる。
備考
- NEC機としては珍しくOpenWrtベースなこともあってか、率直な構成。Kernel + Rootfsの領域を
"firmware"
として二重に定義されており、ファームウェアの更新時にはここを丸ごと書き換える挙動。- factoryファームによりOpenWrtを投入した際、メーカーファームでの設定が一部引き継がれてしまっていることがあったような気もする。その場合resetボタンによりリセット可。
- WG800HPが搭載する一部のLEDは、当初どうやっても使用することができなかった。SoCのdtsiを眺めていたところSoCのJTAGを無効化する(=該当ピンをGPIOとして使用できるようにする)設定があり、使用してみたところエラーを吐いて有効にできず。どうもdtsに記述されるレジスタ範囲に誤りがあり、JTAGの有効 / 無効を切り替えるレジスタが範囲外になっていた模様。
size値を修正したところエラーを吐かれずJTAGの無効化ができ、さらには使えなかったLEDが制御できるようになった。 - NAT周りはNetfilter Flow Offloading使用時に700Mbps前後。
- 筐体は恐らくWF800HPと共通。
- 中古では圧倒的にWF800HPの比率が高い。現在でも販売が行われているからだろうか。一方、WG800HPは既に販売終了となっているためかあまり出てこない印象。
- WF800HPはRealtek SoCと推測。
色々
今回はデバイス自体のコードだけでなく、factoryファームを生成するためにxorイメージ生成ツールにも少し変更を加える必要があった。しかしながらC言語についての知識が非常に乏しいためにPRで突っ込まれてしまい、自分の理解もあまり追いついておらず、解決に時間が掛かりメンテナ氏に非常に迷惑をかけてしまった。申し訳ない。
WG800HP自体については、一般的なルータに比べてEthernetポートが1つ少ない4ポートながら、筐体はとても小さいので扱いやすいかな、と。搭載しているSoCも新し目でまだまだ十分なパワーがあり、好印象。