ELECOM WRC-1750GHBK2-I/C

明けましておめでとうございます。そしてサポートまとめ記事書初め。
久しぶりのELECOM機です。もうしばらく前にデバイスのサポート自体はおおよそ完了していたものの、factoryファーム生成コード関連に少々悩ましいところがあり、保留していました。
今回投入し、マージされました。まとめます。

仕様

以前投げ込んだWRC-300GHBK2-Iと同じ、QCA9563を搭載しています。”WPS” 以外のLED色が異なるもののハード面はほぼWRC-300GHBK2-Iと共通であり、WRC-1750GHBK2-I/Cは追加で5GHz帯用のチップを搭載しています。
また、WRC-1750GHBK2-IとWRC-1750GHBK2-Cはハードウェアが共通であり、単一のデバイスとしてサポートを行っています。WRC-1750GHBK-Eも恐らく同一のハードウェアと予想されますが、実機が無く確認できていないため、サポート対象には含めていません。無線機能の使用は、法律の関係上非推奨です。

  • SoC: Qualcomm Atheros QCA9563 (750MHZ, 1C1T)
  • RAM: DDR2 SDRAM 128MB (K4T1G164QG-BCF7)
  • Flash: SPI-NOR 16MB (MX25L12835FMI-10G)
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4 (QCA8337N)
  • UART: 115200bps(QCA8337N側からVcc, RX, GND, TX)

その他ハードウェアやKernel等細かい点の詳細については、雑記ブログにメモしてあるのでそちらを参照。

OpenWrt化

WRC-300GHBK2-Iと同様、メーカーファームにおけるファームウェアアップデートの挙動の関係でsquashfsではなくinitramfsファームを利用してfactoryファームを生成するようにしています。
このため、factoryファームを投入後追加でsysupgradeファームを書き込む必要があります。

WRC-1750GHBK2-I/Cを起動
WRC-1750GHBK2-I/Cに電源ケーブルを接続し、普通に起動
WebUIにアクセス
PCとWRC-1750GHBK2-I/Cを接続し、 http://192.168.2.1/ のファームウェア更新ページにアクセス
factoryファーム投入
OpenWrtのfactoryファームを選択し、アップデートを実行
sysupgrade
factoryファーム (initramfs)でOpenWrtが起動するので、squashfs-sysupgradeファームを用いてsysupgradeを行い、Flashに書き込む
完了
sysupgradeファームの書き込み後再起動され完了

備考

  • factory関連で悩ましい点というのが、既存のWRC-300GHBK2-Iサポート時に一緒に投入したfactory生成コードが非常に長く、読解しずらいところ。initramfsイメージのビルドとsquashfsイメージのビルドは別個であり、initramfsイメージを利用して別用途のファームウェアを生成する場合はsquashfsイメージの既存生成コードが利用できず、新たに追加する量が多くなってしまう。
    WRC-1750GHBK2-I/Cの場合WRC-300GHBK2-Iと同様にメーカーファームではヘッダが一緒にFlashへ書き込まれてしまうため、squashfsイメージを利用した場合rootfsのマウントに失敗してしまう。このためinitramfsイメージを利用してfactoryファームを生成する必要があるが、既存のWRC-300GHBK2-I用コードをどうにか整理したかった。
    結局様々な理由からそのままWRC-300GHBK2-I用コードをWRC-1750GHBK2-I/Cでも利用する形で投入したものの、PRに対応したメンテナ氏から「patchを試してほしい」という提案があり、その結果を反映してメンテナ氏により整理を行って頂いた。感謝。
  • ハードウェア的にほぼ同一であるため、Netfilter Flow Offloadingを使用したNATのスピードはWRC-300GHBK2-Iとほぼ同程度(700Mbps~)。
  • OpenWrt公式ダウンロードサイトでの提供は、1月1日現在既に開始されていることを確認。
  • OpenWrtではWRC-1750GHBK2-Iファームとして提供されるものの、WRC-1750GHBK2-Cに対してもfactoryファーム含め使用可。

色々

WRC-1750GHBK2-I/Cは中古でもそこそこ数が出る(ように感じる)ほか、比較的安価なことも多いのでUSBが必要なければ良いかな、という感じ。用途に応じて、RAM容量とFlash容量でWRC-300GHBK2-Iとこの機種から選ぶのも良さそう。

最後に

今回のWRC-1750GHBK2-I/Cが滑り込み(約40分前)で私としては2018年最後のデバイスサポートになりました。2017年11月に1件だけ投げ込んだあとは全て2018年初頭からであり、2018年の一年に渡ってTwitterやMastodonでアドバイスや情報提供して頂いたり、時には様々な機種を送って頂いたり、多大な応援を頂き本当に感謝です。また、不慣れ無知極まりない私が出したPRにお付き合い頂き、いつも的確な指摘をして下さったOpenWrtプロジェクトメンバー各位、本当にありがとうございました。そして2ch (5ch)の各位も、お叱りや応援など下さり、ありがとうございました。
2019年はまだ今後どうなるか何もわかりませんが、精神的に大きく壊れない程度に、少しずつ頑張っていこうと思います。また、新規のデバイスサポートも自分の知識習得等を主目的として、時間とお金の許す範囲でゆっくり進めていこうと思います。

広告

NEC Aterm WG800HP

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も新し目でまだまだ十分なパワーがあり、好印象。

I-O DATA WN-AG300DGR

I-O DATAのサポート情報でOpenWrtのサポートができそうな機種を調べていた際見つけ、AR934xを搭載していると思われたことから確保して作業したものです。
ath79でサポート追加を行い、マージされました。まとめます。

仕様

初のAR1022搭載機です。SoC自体はほぼAR9342と同一らしく、無線機能のみ若干異なる模様。
2.4GHz帯にSoC内蔵の無線機能を使用し、5GHz帯にはmini PCIeスロットに装着されたAR93x2カードを使用しています。いずれの無線機能も、法的な問題から使用は非推奨です。
なお、openwrt/openwrtのcommit messageにはFlashが8MBと書きましたが、実際には16MBの誤りです。

  • SoC: Atheros AR1022 (535MHz, 1C1T)
  • RAM: DDR2 SDRAM 64MB (W9751G6KB)
  • Flash: SPI-NOR 16MB (MX25L12845EMI-10G)
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4 (AR8327N)
  • USB: USB 2.0 Type-A x1
  • UART: 115200bps(RJ45側からVcc, GND, TX, RX)

その他ハードウェアやKernel等細かい点の詳細については、雑記ブログにメモしてあるのでそちらを参照。

OpenWrt化

以前サポートしたWN-AC1600DGR2等と同じくSenaoによる製造であり、特殊な点は無いためfactoryファームを生成できます。

  • WN-AG300DGRを起動
    WN-AC1600DGR2に電源ケーブルを繋ぎ、普通に起動。
  • WebUIにアクセス
    PCとWN-AG300DGRをLANケーブルで繋いで http://192.168.0.1/にアクセス
  • ファームウェア更新ページへアクセス
    ファームウェアの手動更新ページへアクセス
  • ファーム更新
    WN-AG300DGRのfactoryファームを選択し、アップデートを実行
  • 完了
    Flashの書き込みが完了後再起動され、OpenWrtで起動してくる

備考

  • WN-AC1600DGR2やWN-AC1167DGRと同様、stock firmwareではOSイメージ領域 (Kernel + Rootfs) が “Kernel” として構成されており、ファームウェア更新時にはそこを丸ごと書き換える仕組みのため、factoryファームは問題なく作成できた。
    設定等保存用の “storage” パーティションは使用せずread-only。
  • 5GHz帯用のAR93x2に使用するeepromデータが “ART” パーティション内に存在しなかった。恐らくはmini PCIeカード内で持つなどしていると思われ、デバイス固有のMACアドレスの適用は 10_fix_wifi_mac にて行った。
  • ath79のビルドが公式buildbotで既に開始されているため、downloads.openwrt.org よりダウンロード可能 になると思われる(記事執筆時点ではまだビルドが走っていない)。 2018/12/09確認。
  • NATの速度は、offloadingオフで平均205Mbps前後、Netfilter Flow Offloading使用時で平均650Mbps – 700Mbps前後

色々

しばらくリポジトリでのデバイスサポートのPR処理が止まっていたため保留にしていたものの、再開されたようなので今回この機種を投入。AR1022 (≒AR9342)とはいえOffloading併用でNAT速度は十分に出るうえ、USBポートも搭載しておりまだまだ現役でいけそう。
ただ、中古で出ている数が今一つ少ないように感じられるのが気になる。

BUFFALO WZR-HP-G302H A1A0

以前、東久留米のハードオフでジャンク品を入手したもの。その後ath79への移植を行おうとシリアル (UART)のピンを立てるも読むことができず保留にしていましたが、解決でき作業も完了してマージされました。まとめます。
なお、今回のサポートは “A1A0” バージョンに対するものです。その他バージョンについてはハードウェアを確認できていないほか、”中身が異なる” という情報もあるため非対応としています。また、WZR-HP-G300NH2/WZR-300HPとも別に独立して “WZR-HP-G302H A1A0” としてのサポートです。

仕様

WZR-HP-G450Hと同様、AR7242を搭載する無線機です。

  • SoC: Atheros AR7242 (400MHz, 1C1T)
  • RAM: DDR2 64MB
  • Flash: SPI Flash 32MB (16MB x2)
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4
  • UART: 115200bps(RJ45ポート側からVcc, GND, TX, RX)

その他ハードウェアやKernel等細かい点の詳細については、雑記ブログにメモしてあるのでそちらを参照。

OpenWrt化

こちらはWZR-HP-G450Hとは異なりメーカーファームでのファームチェックをパスできたため、Debugモードを使用する必要はなく直接投入することができます。

  • WZR-HP-G302H A1A0を起動
    電源ケーブルを接続し、通常通り起動。
  • WebUIにアクセス
    PCとWZR-HP-G302H A1A0をLANケーブルで接続し、http://192.168.11.1/ のファームウェア更新ページにアクセス
  • ファーム更新
    WZR-HP-G302H A1A0用のfactoryファームを選択し、アップデートを実行
  • 完了
    ファーム更新後、OpenWrtで起動してくれば完了

備考

  • ハードオフで購入後、何日か後にシリアルのピンを立ててハードウェアを調べようとしたものの、その際一切信号が出力されずコンソールに何も表示されない状態だった。
    • 色々調べたもののその際は何も情報を見つけることができず、一旦作業は保留とした。
    • その後ふとしたきっかけで再度調べ直してみたところ、OpenWrt Wikiに “U-BootによってUARTがデフォルトで潰されており、使用するには設定を変更して有効化する必要がある” という記述を発見。最初に調べた際は見落としていた模様。
    • 記載されている通りU-Bootの環境変数に force_uart=1 を設定したところコンソールにログが出力されるようになり、作業を再開した。
  • これもFlashを2枚搭載していてWZR-HP-G450Hと同じ問題にあたったものの、前述の通りUARTの問題を解決するのに時間が掛かったため、作業再開時には既にFlash 2枚を扱うドライバはマージ済みだった。
  • Kernel 4.14以降のNetfilter Flow Offloadingを雑に試してみたところ、300Mbpsも出なかった(少々記憶は曖昧ではある)。Offloadingをオフの時は200Mbpsを切っていた。
  • ar71xxではWZR-HP-G300NH2のファームで動作する機種の模様。ath79でもar71xxにあるWZR-HP-G300NH2のコードを流用しているものの、mtdパーティションの構成がわずかに違っていた(firmware領域がG302H A1A0では0x30000 (= 192KiB)小さい)。
    OpenWrtで使用する分には、恐らく問題ないとは思われる。ath79のG302Hでは、メーカーファームと同じパーティション構成に設定。
  • USBポート横のLEDは、USBポートにデバイスを接続した際点灯するように設定済み。
  • WZR-HP-G302Hの別のバージョンやWZR-300HPについては、現状所有していないので作業予定は無し。ジャンク等で安く放出されていない限りは、あまり積極的に確保はしない予定。

色々

UART周りの問題によってだいぶ手間取ったものの、最終的にath79へのサポート追加までできたので、何もできず積むだけにならず良かった。
しかしながら備考に書いた通りNATのパフォーマンスは非常に残念で、新し目のサポート済み機種へのリプレースを強く推奨。類似のWZR-300HP等についてもあまり魅力を感じないため、前述の通り積極的に動く予定は無し。factoryファームがスルッと入るのは良いのだが…。

BUFFALO WZR-HP-G450H / BHR-4GRV (ath79)

某氏からごそっと頂いた、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では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程度出るため、まだ何とか使えるかな、という感じ。ただ、とにかく速度を求めるのであれば、そろそろリプレースを考えるのも良さそう。