OpenWrt on OpenBlocks 600
OpenBlocks 600のファームウェア更新終了が発表されたから、というわけでもありませんが、眠らせておくのももったいないのでOpenWrtを入れてみました。 ただし、OpenWrtにPowerPCのサポートは入っているものの、OpenBlocks 600に搭載されているPowerPC 405についてはbroken扱いになっている為 (2018年10月現在。2019年5月にremoveされました。)、platformを増やす方向でやってみました。 見よう見まねでやった (見まねにもなっていないところもあります) ので、platform (target) / subtarget / device の切り分けがぐちゃぐちゃです。イメージの作成方法もこれで正しいのか全く分かりません。
OpenBlocks標準のflashcfgではU-Bootイメージしか書き込めないようなので、initramfsのfactoryファームで起動して、そこからsysupgradeでファームウェアを導入します。factoryファームについてはフラッシュROMに書き込んでもいいし、TFTP経由やCFブート (factoryファームをext2フォーマットのCFにuImage.initrd-cfbootの名前で書き込み、ディップスイッチのSW3をonにして起動) のいずれかでいけるはずです。私自身はCFブートで行いました。
直接は関係ない変更も混じってますが、一応公開しておきます。興味のある方は試してみてください。
現状・制限についてメモ代わりに記載しておきます。
- カーネルはU-Bootイメージでないといけませんが、Multii-File Imageでないとdtbを持たせることができなかったので、Multi-File Imageにする必要があります。Multi-File Imageの先頭はカーネル、2つめはramdiskイメージ、3つ目はdtbと決め打ちになっていますので、sysupgradeファームのようにU-Bootイメージの外にファイルシステムのイメージを置く場合もダミーのramdiskイメージが必要になります。
- USBのドライバ (dwc2) がパフォーマンスに影響が出るレベルで割り込みを発生させます。どうも、そういうドライバみたいです。dwc_otgドライバを使えるようにできれば改善するかもしれません。ぷらっとホームが非公式に公開している、 jessie (カーネル 4.1.8) 向けのドライバを新しいカーネルで動くようにするか、Raspberry pi用のものをpowerpcでも動くようにするかが考えられます。現在は、Toshifumi NISHINAGAさんがjessie向けのドライバをカーネル4.19に移植され、OpenWrtでも利用できました。ただし、内蔵CFはうまく認識されていないような気もします (が、ちゃんと確認していません)。
- スループットは低いです。iperf3のベンチで50Mbps弱程度しか出ませんでした。