大破ログ

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

WRC-1166DSのOpenWrtにおける修正について

WCR-1166DS内部

最近マージされた、WRC-1166DSのfactoryイメージに絡む修正についてです。書くかどうするか少し迷いましたが備忘録も兼ねて書いておくことにしました。

きっかけ

周囲でWCR-1166DSにOpenWrtを導入しようとした人から、factoryイメージを使用した結果文鎮化したということを聞いたのがきっかけです。
調べてみると既にいくつか同様の事例があるようで、サポートがマージされているということは当時問題無かったはずなのに何故だろうと気になって修正作業をすることにしました。
ただし、当初はやるかどうするかそれなりに迷いました。サポート済みの機種ではあることからわざわざ購入するのが若干心理的障壁に。結局は確保したけれども。

原因

過去に既に雑記で書いた通り、WCR-1166DSにおいてファームウェアに使用されているTRX形式のマジックナンバーが特殊なものであることが原因です。標準の 0x48445230 ("HDR0") であれば何も問題無いものの、WCR-1166DSにおいては 0x5C436F74 ("\Cot") が使用されている為に、OpenWrtでブートする際TRX形式であることを認識できず、rootfs領域の検出に失敗してKernelがマウントできずにpanicします。

サポート追加当時

あまりその辺は自分では調べていなかったので、修正を投げ込んだ時に対応して頂いたOpenWrtチームメンバーの人から聞いて知りました。
サポート追加時は、OpenWrtが抱えているTRX用のrootfs検出用ドライバにおいて、WCR-1166DS用に上記のマジックナンバーを検出できるようpatchが追加されており、それにより問題無く機能していました。(ここ
しかし、その後WCR-1166DSが属するramips targetにおいてLinux Kernelのメジャーバージョンが引き上げられた際、そのpatchが見落としか何かで新しいバージョンに引き継がれずに削除され、その結果WCR-1166DS特有のマジックナンバーを検出できなくなり、factoryイメージが正常に機能しなくなる状態に陥りました。(ここ

修正内容

ついでにSPI-NOR Flashのクロックを引き上げてアクセスを高速化したり(sysupgradeが速くなるなどする)、MACアドレスの構成周りをOpenWrt標準の関数を使用するようにしたりする変更も行っています

コミット

上記の変更により、現在はfactoryイメージをメーカーファームウェアのWebUIから投入した場合も、問題無くOpenWrtが起動する状態になっています。21.02リリースについては恐らく今後この修正がbackportされることは無く、次期メジャーリリースから直るものと思われます。

その他

今回の変更に絡んでWSR-2533DHPL (WSR-2533DHP)等でfactoryイメージを追加することができるようになりましたが、今現在作業中の機種が多すぎて時間が取れないため、作業予定は未定です。