某氏からごそっと頂いた、BUFFALOのQCA/AR機のうちの2台。将来廃止が予定されるar71xxからDTSベースで新設されたath79へ移植するにあたり少々大きい問題があったものの、他の方々により解決されたのでこの2機種についてもサポートの修正/追加を行い、マージされました。まとめます。
仕様
Atheros AR7242を搭載する無線 / 有線機。G450Hでは内部的にPCIeでぶら下がっている無線チップを利用。
2機種とも無線以外は同一の構成。
- SoC: Atheros AR7242 (400MHz, 1C1T)
- RAM: DDR2 SDRAM 64MB
- Flash: SPI Flash 32MB (16MB x2)
- WAN/LAN: 1000Mbps x1 / 1000Mbps x4
- UART: 115200bps(JP1: リセットボタン側からVcc, GND, TX, RX)
また、WZR-450HPは単にWZR-HP-G450Hからのリネーム品であり、ハードウェアは全く同一であるため、WZR-HP-G450Hとして扱いました。
OpenWrt化
ar71xxと同様にfactoryファームを作成したものの、メーカーファームでのファームチェックをパスできなかったため、debugモードのページからの投入を前提としています。
- WZR-HP-G450H / BHR-4GRVを起動
いずれも電源ケーブルを接続して普通に起動 - WebUIのDebugモードにアクセス
http://192.168.11.1/cgi-bin/cgi?req=frm&frm=py-db/firmup.html
にユーザー名:bufpy
、パスワード:otdpopy
を使用してアクセスする
メーカーファームのバージョン1.88以降はDebugモードが削除されているため、その場合は古いバージョンへ更新してから再度行う
注: WZR-450HPでDebugモードが存在するファームウェアはバージョン1.96以前 - ファーム更新
前述のURLのページでBHR-4GRV / WZR-HP-G450Hそれぞれのfactoryファームを選択し、"OK" ボタンを押してファーム更新を実行する - 完了
ファーム更新を実行後、OpenWrtで起動してくれば完了
備考
- WZR-HP-G450HとBHR-4GRVはSPI-NOR Flashを2枚搭載しており、ブート中に仮想的に結合して1つのデバイスに見せかけて扱う必要がある。
- ar71xxではデバイスのmachファイルと同じ場所に置かれている dev-m25p80.c 内の
ath79_register_m25p80_multi()
により結合が行われていたが、ath79ではこれを行える仕組みが存在していなかったため、サポートの修正 / 追加に時間が掛かった。 - 丁度、同様にFlashを2枚搭載しているWZR-HP-AG300Hの移植作業を行う方が現れ、Forum等で議論しつつath79で利用できるドライバの実装等が行われ、最終的にWZR-HP-AG300Hと一緒にマージされた。
- このためath79の他のデバイスでもFlash 2枚を扱うことができるようになり、ath79 targetの設置時からコードが存在はしていたもののFlash部分の定義が抜け落ちており動作しなかったWZR-HP-G450Hの修正と、BHR-4GRVのサポート追加を行った。
- ar71xxではデバイスのmachファイルと同じ場所に置かれている dev-m25p80.c 内の
- ar71xxではBHR-4GRVもWZR-HP-G450Hのファームを使用して動作させることはできていたものの、ath79では独立したデバイスとして追加した。
- 無線機であるWZR-HP-G450Hに対してBHR-4GRVは有線機であり、無線機能のほかLED類など2機種間で名前やその他が異なる、あるいは存在しないものがあり、BHR-4GRVでWZR-HP-G450Hのファームを使用するのはあまり適切ではないかな、と感じたため。
- BHR-4GRVでは存在しないLEDやボタン類、無線の定義を落としたほか、WZR-HP-G450Hでは "security" という名前のLEDをBHR-4GRVでは "vpn" として実態に合わせた。
- この2機種のath79サポートがマージされた後に気付いたが、2機種でMACアドレスを保持している "ART" パーティション内のアドレスも異なっていた。恐らくar71xxでBHR-4GRVにWZR-HP-G450Hのファームを使用した場合、個体本来のMACアドレスではなくOpenWrtによって生成されたランダムなアドレスが使用されていると思われる。
ath79では慌てて修正を行って追加でPRを投げ、それもマージされた。
- USBポート横のLEDは、USBポートにデバイスを接続すると自動的に点灯するよう設定済み
- Kernel 4.14以降のNetfilter Flow Offloadingを利用してNATの速度を雑に計測したところ、BHR-4GRVでは平均445Mbps程度を記録(オフ時は240Mbps程度)。
ath79は現在公式buildbotでビルドされないため、自ビルドが必要。-> source-onlyフラグが削除されて公式buildbotでのビルドが開始され、公式のダウンロードページ (downloads.openwrt.org) での提供が開始されました。
当方のビルドは taiha.net/jenkins に有(自己責任で使用すること)。
色々
今回はFlashを2枚搭載していることがとても大きな障壁となり、作業を進めるのにとても時間が掛かった。ドライバを書く知識や技量も無いため、自分ではほとんど何もできなかったのが残念というか悔しいというか。 今回の2機種(厳密にはWZR-450HPを含めて3機種)に関しては、だいぶ古い型ではあるもののNATがOffloadingを使用して445Mbps程度出るため、まだ何とか使えるかな、という感じ。ただ、とにかく速度を求めるのであれば、そろそろリプレースを考えるのも良さそう。