カテゴリー: mediatek

WSR-2533DHP2 進捗報告

長らくRTL8367Sがどうにもできずに放置に近い状態になってしまっていたが、TL-R600VPN v4でRTL8367Sに再会したのをきっかけに作業を行い、だいぶ進捗を出せたので記録として。

WSR-2533DHP2仕様

  • SoC: MediaTek MT7622B
    • ARM Cortex-A53 (aarch64)
    • 1.35GHz, 2C2T
  • RAM: DDR3 256MiB
  • Flash: NAND 128MiB
  • Ethernet: 10/100/1000
    • Realtek RTL8367S
  • WLAN: 2.4/5GHz 4T4R
    • 2.4GHz: SoC (MT7622B)
    • 5GHz: MT7615

OpenWrtと絡めた雑感

targetが成熟途中
MT7622はmediatek targetの “mt7622” subtargetに属するが、mediatek target全体としてまだramipsやar71xx/ath79のような程度の成熟度合いには遠い印象。ウォッチしていると、既存デバイスのDTSの内容がコロコロ変わる。
イーサネットスイッチのノードでcompatibleの関連付けが全く違うものに変更されたときは愕然とした。(たぶん計画段階とは違うものをボードの正式版で載せた為だろう)
RTL8367Sスイッチのサポートが無くて厳しい
WSR-2533DHP2は上記仕様のとおりRTL8367Sスイッチを搭載する。このスイッチはSoCなどコントローラとの接続において、RGMIIやSGMIIのほか、2.5Gbpsでの通信が可能なHSGMIIに対応する。OpenWrtでは、このスイッチをサポートするドライバが記事を書いた時点で存在していない。
サポートを追加するpatchは投げられているが、reviewに対してauthorの反応が無く、マージされるか非常に怪しい。(また、そのpatchではRGMIIのサポートしか追加されていないためWSR-2533DHP2では不足)
RTL8367Sスイッチを搭載するデバイスが他になくて色々厳しい
正確には、WSR-2533DHP2のサポート作業を始めた当初は同じと思われるノードが記述されていたが、後になってMediaTek MT753xに変更された。現状他にRTL8367S系のスイッチを搭載するボードはOpenWrt内に存在せず、ネットワーク周りの構成が参考にできない。

サポート作業進捗状況

項目 状態 備考
Kernelバージョン 5.4 4.19では、MT7622のイーサネット周辺の実装に問題があるようで、大量のbackportが必要となりconflictを起こしやすいため。Kernel 5.4では修正済みの模様であることから、そちらのみを使用。作業開始当初は4.14だったことを考えると、遠くまで来たものだ。
initramfsでのブート OK
NAND Flashの認識 OK Kernel 5.4ではraw NANDのサポートの有効化に必要なconfigが変更されており、なかなかNAND Flashの認識を有効化できず手間取った。
MT7622 GMACの認識/動作 OK 上記の通り、修正が行われた状態のため見た範囲では動作に問題無し。2.5GbpsのHSGMIIでもしっかり動作。
RTL8367S
  • 認識: OK
  • HSGMII: OK
  • VLAN: OK
TP-Link TL-R600VPN v4を最近購入し、それのGPLソースコードを基にOpenWrtに既存のRTL8367Bドライバ (RTL8367RB, RTL8367R-VB) へRTL8367Sのサポートを追加した。ベースとしては、前述の既に投げられているRGMIIのみのpatchと、以前やり取りして行われたhauke氏による追加の改変を利用した。
sysupgradeでのブート WIP

当初KernelのみTRXに押し込みRootFSはUBIで持たせることを考えたが、Kernelをブートできずエラーも無しに止まってしまうためTRXにすべて押し込むことでブートはできるようになった。
ただし、Flashからブートした場合RTL8367Sのprobeに失敗する。RESET線か電源線の問題と予想。
SoC内蔵無線機能の認識 保留 いずれやる必要はあるが、優先度は低く、他に重要な問題が上記の通り在るので後回し。

以上。引き続き頑張る。

余談: NATをLAN -> WANで計測したところ、Netfilter Flow Offloadingの有無にかかわらず750Mbps超出ていた。その状態でもCPUのidleは平均63%ほどだった。(Flow Offloadingが機能していないような気もする?)