I-O DATA WN-AC1167GR

久しぶりにサポートまとめ記事連投。
今度はI-O DATA WN-AC1167GRです。WN-AC1167DGRに近い世代の機種ながら、USBポートを搭載せずそれの共有機能を持たないため、型番から “D” が落ちています。
某フリマサイトで900円程度の出品を見つけ、衝動的に購入しました。
初めての要素があったことなどから時間がかかっていましたが、PRを出しマージされました。まとめます。

仕様

私個人が作業してマージされたものとしては初となるMT7620A搭載機です。当初この機種を見かけたときはMT7621Aかと期待していましたが、残念ながら違いました。
2.4GHz帯にはSoC内蔵の無線機能を、5GHz帯にはごく一般的なMT7612Eを搭載し使用する構成です。
なお、どちらの無線機能の使用も法律の関係上非推奨です

  • SoC: MT7620A (580MHz, 1C1T)
  • RAM: DDR2 SDRAM 64MB
  • Flash: SPI Flash 8MB
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4 (MT7530)
  • UART: 57600bps(SoC側からTX, GND, RX, Vcc)

その他の詳細については、雑記を参照。

OpenWrt化

作業開始当初メーカーファームウェアのフォーマットが不明でしたが、解析できたためfactoryファームを用意できました。簡単にインストールすることができます。

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

備考とか

  • WN-AC1167GRのFlash内には “NoUsed” と名付けられたパーティションが存在しており、気になって中のデータを調べたところELECOM機用の各種データ(SSID名等)が格納されていた。後にWRC-1167GHBK2-Iをジャンクで入手して筐体を開けたところ基板がWN-AC1167GRと9割方同一であり、恐らくは設計が流用され、かなり近いレベルで製造されていたものと思われる。
  • この機種では、SoCはFE switchを内蔵するのみのMT7620Aでありながら、追加でRGMIIに単体のMT7530を接続することでGbE対応を行っている。
    この場合のDTSの構成方法については同じ構成と思われる機種が既にOpenWrtのramipsに存在しており、当初はEthernet周辺をそのまま流用して対応させた。しかしながら後でよく見直したところ、どうもMT7620Aが持つ2本目のRGMII(port4と排他利用)が中途半端に構成され、pinmuxでEthernetに結び付けられているにもかかわらず肝心のRGMII自体は有効にされていない状態だった。恐らくは、本来は2本目のRGMIIをMT7530のphy一つを利用してWANとして外に出すものと予想。しかし、実態は使用されていないので、その状態で2本目のRGMII周りの構成は削除して1本目のRGMIIのみでMT7530を使用するように構成した。
  • factoryファームの生成に必要な情報を探るのにかなり手間取った。
    Kernel + Rootfs部分がxor処理されていることは比較的早い段階で気づけたものの、先頭に付加されているヘッダの構造が長らく不明だった。
    ふとしたきっかけでメーカーファーム上でFlash内をひっくり返したところ、ヘッダのチェックを行うコマンドが存在しており、そのコマンドによるファーム展開時に吐き出される情報が非常に参考になり構造が判明した。
    ヘッダに必要な情報が少々多く(ベンダID、デバイスID、Kernel + Rootfsのデータサイズ(hex)、xor処理前のMD5sum)生成に複雑なスクリプトが必要になってしまったものの、一応PRではこれでパスした。
    このヘッダ生成スクリプトは、この機種以外にWN-AC733GR3とWNPR2600Gで利用できることを確認済みであり、ほぼ同じヘッダを持つELECOM WRC-2533GHBK-I, WRC-2533GHBK2-Tでも利用できる可能性がある。

色々

今回はfactoryファームの生成方法を見つけるのに手間取り、UARTを接続してインストールするしかないかと当初考えていたものの、最終的に解決でき簡単にインストールできるように仕上げられたので良かった。
NA(P)T速度としてはおよそ640Mbps前後平均して出ており、妥当なものかなという感じ。この辺りの11AC機はサイクルが早い場合そろそろお役御免になってくる頃かなという感じなので、OpenWrtで再度活用してみるのも良さそう。

広告

ELECOM WRC-2533GST

ミドルレンジのWRC-1167GHBK2-Sに続き、偶然5kで安価に入手できたこの機種についてもサポート作業を行い、マージされました。まとめていきます。

仕様

もはや恒例となったMT7621です。最上位に相応しく、デュアルコアのMT7621Aを搭載しています。
無線については、2.4/5GHzそれぞれにMT7615を1つずつ載せて各4×4を実現しています。ただし、WRC-1167GHBK2-Sと同様に現状ではOpenWrt (mt76)でのサポートは無いため、使用することはできません。

  • SoC: MediaTek MT7621A (880MHz, 2C4T)
  • RAM: DDR3 SDRAM 128MB
  • Flash: SPI Flash 16MB
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4
  • UART: 57600bps(RJ45側からVcc, GND, TX, RX)

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

OpenWrt化

WRC-1167GHBK2-Sと同様に、メーカーファームがOpenWrtベースであったこと、”firmware” パーティションにkernelとrootfsを持つ構造であったため、factoryファームをOpenWrtで用意できました。これにより、簡単に導入できます。

  • WRC-2533GSTを起動
    WRC-2533GSTに電源ケーブルを繋ぎ、普通に起動。
  • WebUIにアクセス
    PCとWRC-2533GSTをLANケーブルで繋いで http://192.168.2.1/にアクセス
  • ファームウェア更新ページへアクセス
    管理用アカウントの設定を要求された場合は適当に設定し、ファームウェアの手動更新ページへアクセス
  • ファーム更新
    WRC-2533GSTのfactoryファームを選択し、アップデートを実行
  • 完了
    Flashの書き込みが完了後再起動され、OpenWrtで起動してくる

備考

  • WRC-2533GSTはメーカーファームが前述のとおりOpenWrtベースでであり、構造としてはKernel + Rootfsをfirmwareとしてまとめている、OpenWrtでよく用いられる手法
    • ただし設定保存用のrootfs_dataパーティションがFlash内の最後に別個で存在
    • 今回もrootfs_dataは使用せず、”user_data” にリネームしたうえでread-onlyに設定
  • アップデート用ファームはヘッダが “ELECOM 機種名 バージョン” 、ファーム末尾にヘッダを除いた部分のmd5チェックサムが付き、さらにそのあと “MT7621_ELECOM_WRC-2533GST” の文字列が付く。
    ヘッダ例:
    ELECOM WRC-2533GST v1.02
    末尾につくMT7621~を除くとWRC-1167GHBK2-Sとほぼ同一だが、md5チェックサムの後にWRC-1167GHBK2-Sでは存在していた \n を意味する 0A が無かった。このため、WRC-1167GHBK2-Sのfactory生成コードをそのまま流用できなかった。
  • メーカーファームでアップデートする際、WRC-1167GHBK2-Sと異なりファームウェアのファイル名は見ていないため、OpenWrtのファイル名のまま投入可。
  • メーカーファームへの書き戻しは、バックアップ済みのfirmwareパーティションをOpenWrtでのfirmwareパーティションにmtd writeするか、もしくは未検証ながらアップデートファームからヘッダと末尾のmd5チェックサム、”MT7621_ELECOM_WRC-2533GST” を除去したものをfirmwareパーティションにmtd writeすることで恐らく可能。
  • Power LEDにRGBの三色が搭載されている。デフォルトではWRC-1167GHBK2-Sと同じくgreenを電源やステータスランプとして使用。
  • MT7621ではHW NATが実装されているため、NATのCPU負荷をかなり抑えることが可能。
  • 2.4/5 GHz LEDはGPIOではなくMT7615にぶら下がっているらしく、現状では使用不可。

色々

今回はfactoryファームの作り方で少々議論。個人的にはWRC-1167GHBK2-Sの際に用意したMakefile内の関数で作らせたかったものの、Flagを立てて分岐させるのはメンテナ氏にとってはあまり好ましくないらしく、別途WRC-xxxxGST用のfactory関数を用意することになった。この関数は、恐らくWRC-1750GSとWRC-1900GSTでも使用可。WRC-1750GSV、WRC-1167GST2についてはまだメーカー公式サイトでアップデートファームが公開されていないため、使用できるか不明。
それ以外には特に問題無し。

写真

基板の半分程度を覆うヒートシンクが印象的。
2.4/5GHzそれぞれでMT7615を搭載するため、WRC-1167GHBK2-Sに比べて実装面積はやや大きめ。それでも空き領域も大きい。

  • 筐体を開けたところ
    IMG_20180724_203711.jpg
  • ヒートシンクを取り外した様子
    IMG_20180724_204303.jpg

I-O DATA WN-AX1167GR

下位版のWN-GX300GRに続き、上位版のWN-AX1167GRについてもサポート作業を行い、upstreamへマージされました。この機種についてもまとめます。
なお、先行してWN-AX1167GRのサポート作業を行っていた某氏よりパッチ案やログ等頂き、それを引き継いで完成させたものです。多謝。
なお、この機種についてはまだリリースバージョン用の openwrt-18.06 branch へは取り込まれないそうです。

仕様

これもMT7621です。シングルコアのMT7621Sを搭載するWN-GX300GRに対し、上位モデルという位置づけからかデュアルコアの “MT7621A” が搭載されています。
また、基板自体はWN-GX300GRと共通のため、SoCとFlash、無線周り以外はほぼ共通です。

  • SoC: MediaTek MT7621A (880MHz, 2C4T)
  • RAM: DDR2 SDRAM 64MB
  • Flash: SPI Flash 16MB
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4
  • UART: 115200bps(RJ45側からVcc, GND, TX, RX)

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

OpenWrt化

WN-GX300GRでは制約によりfactoryファームは断念しましたが、WN-AX1167GRでは若干注意は必要なもののfactoryファームを生成できました。

  • アップデートページへアクセス
    PC側のIPアドレスを192.168.0.0/24のいずれかに設定してWN-AX1167GRと接続し、WN-AX1167GRに電源ケーブルを接続して通常起動。
    起動したら、192.168.0.1 へブラウザでアクセスし、ファームウェア更新ページを開く。OpenWrtのfactoryファームを選択してアップデートを実行する。
  • OpenWrt上でsysupgrade
    “1.” の手順でfactoryファームがFlashに書き込まれた後、OpenWrtで起動してくる。
    SSH等でOpenWrtのコンソールに入り、

    mtd erase firmware

    を実行したうえでWN-AX1167GRのsysupgradeファームを使用してsysupgradeを実行する。
    例:

    sysupgrade openwrt-ramips-mt7621-iodata_wn-ax1167gr-squashfs-sysupgrade.bin
  • 完了
    2分前後掛かるものの、Flashへの書き込みが完了して再起動する。

備考

  • WN-GX300GRと同様に、OpenWrtでのシリアルコンソールのBaudrateは115200bpsに設定。
    理由もGX300GRと同じで、U-BootとOpenWrtのbaud rateを合わせるため。
  • WN-GX300GRでは2つあるOS用パーティション(”Kernel”, “app”)それぞれが4MB弱しか確保されておらず、そのためOpenWrtでfactoryファームを作ろうとすると完全に不足してしまった。それに対してWN-AX1167GRでは7.5MBほど確保できるため、ある程度余裕をもってfactoryファームを生成できる。
    ただしこのfactoryファームの実態はinitramfsファームであり、再起動すると設定は消える。このため、factoryファームを投入後sysupgradeでsysupgradeファームを書き込む必要がある。
  • WN-GX300GRと同様に、OpenWrtでは2つあるOSイメージ用パーティションを結合して1つとして扱うようにした。ただし、メーカーファームでは何故か未使用の領域があり(データは00 or FF)、メーカーファームへ戻すバイナリを作成する際はメーカーファームでの “Kernel” の後ろに 0x20000 、”app” の後ろに 0x10000 の空データを追加して OpenWrt における “firmware” のサイズに合わせる。
    firmware (OpenWrt)
    (0xF30000 = 15,552k)
    Kernel (unused) app (unused)
    0x60000
    – 0x7E0000
    0x7E0000
    – 0x800000
    0x800000
    – 0xF80000
    0xF80000
    – 0xF90000
    0x780000
    (7,680k)
    0x20000
    (128k)
    0x780000
    (7,680k)
    0x10000
    (64k)

    上記を firmware.bin などとし、

    mtd write firmware.bin firmware
    

    とすることでメーカーファームに書き戻すことが可能。
    メーカー公式サイトで公開されているアップデート用ファームでもできそうだけど未検証。

  • MT7621ではHW NATが実装されているため、WN-GX300GRでもNATのCPU負荷をかなり抑えることが可能。
  • WN-AX1167GR2がGRとハード構成が同一であるかは未確認。

雑感

今回はfactoryの作り方や、factoryからsysupgradeした後にU-Bootが起動するパーティションとして2番目を指定した場合ブートが止まってしまうのでは、というメンテナ氏の疑問もあり(ごもっとも)、少々議論したうえで、WN-AX1167GRでは上手くfallbackしてくれるということなどをcommit messageに追加することになった。
その他は特に大きな問題は無し。良かった。

ELECOM WRC-1167GHBK2-S

PRを投げたタイミングがOpenWrt 18.06のリリース準備作業真っ只中で、しばらく中の人からのコメント等動きが無かったのでWN-GX300GR同様リリース後になるかなーと思っていましたが、今日マージされました。

仕様

これもお馴染みのMT7621です。こちらはWN-GX300GRのMT7621Sに対し、デュアルコアの “MT7621A” が搭載されています。
無線については2.4/5GHz両方を1チップのMT7615Dでカバーしています。ただし、現状OpenWrt (MT76)でのサポートは無いため、使用することはできません。(まあどのみち電波法の問題がありますが)

  • SoC: MediaTek MT7621A (880MHz, 2C4T)
  • RAM: DDR3 SDRAM 128MB
  • Flash: SPI Flash 16MB
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4
  • UART: 57600bps(RJ45側からVcc, GND, TX, RX)

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

OpenWrt化

メーカーファームがOpenWrtベースであったこと、”firmware” パーティションにKernelとRootfsを持つ構造であったことから、factoryファームを生成させることができました。このため、簡単にOpenWrtを導入することができます。

  • WRC-1167GHBK2-Sを起動
    WRC-1167GHBK2-Sに電源ケーブルを繋ぎ、普通に起動。
  • WebUIにアクセス
    PCとWRC-1167GHBK2-SをLANケーブルで繋いで http://192.168.2.1/details.htmlにアクセス
  • ファームウェア更新ページへアクセス
    管理用アカウントの設定を要求された場合は適当に設定し、ファームウェアの手動更新ページへアクセス
  • ファーム更新
    WRC-1167GHBK2-Sのfactoryファームを wrc-1167ghbk2-s_v0.00.bin へリネームしたうえで選択し、アップデートを実行
  • 完了
    Flashの書き込みが完了後再起動され、OpenWrtで起動してくる

備考

  • WRC-1167GHBK2-Sはメーカーファームが前述のとおりOpenWrtベースであり、構造としてはKernel + RootfsをfirmwareとしてまとめているOpenWrtでよく用いられる手法
    • ただしRootfsはramfsであり、設定保存用のrootfs_dataパーティションがfirmwareパーティションの後ろに存在
    • rootfs_dataの領域をOpenWrtで使用する場合、factoryファームでOpenWrt化した際に設定を引き継いでしまう可能性があることと、メーカーファームでのアップデートの仕組み上factoryからもう一度書き換える必要が出てくるなど面倒になるので、使用せずread-onlyでそのまま。
  • アップデート用ファームはヘッダが “ELECOM 機種名 バージョン” 、ファーム末尾にヘッダを除いた部分のmd5チェックサムが付くのみの構造。
    ヘッダ例:
    ELECOM WRC-1167GHBK2-S v1.03
  • メーカーファームでアップデートする際、ファームウェアのファイル名も見ているらしくOpenWrtのファイル名のままではエラーになる。
  • メーカーファームへの書き戻しは、バックアップ済みのfirmwareパーティションをOpenWrtでのfirmwareパーティションにmtd writeするか、もしくは未検証ながらアップデートファームからヘッダと末尾のmd5チェックサムを除去したものでfirmwareパーティションにmtd writeすることで恐らく可能。
  • Power LEDにRGBの三色が搭載されている。デフォルトではメーカーファームと同じくgreenを電源やステータスランプとして使用。
  • MT7621ではHW NATが実装されているため、WN-GX300GR同様にNATのCPU負荷をかなり抑えることが可能。

色々

今回PRを出してからWN-GX300GRほど時間は掛からなかったものの、メンテナの方からmtdパーティションのlabelについて指摘があったためそれだけ修正。
無線について何か言われるかなとも思ったものの、そちらはdtsにコメントを置いたのとcommitメッセージ内のspecificationにMT7615Dであることを書いたためか、特に何もなかった。

写真

2.4/5GHz両帯域を1チップでカバーしているためか、基板上の実装面積が小さいうえに基板自体も小さめ。

  • 筐体を開けたところ
    IMG_20180612_194509
  • 基板表側全体
    IMG_20180612_195359
  • SoCとRAM
    IMG_20180612_195534
  • MT7615D
    IMG_20180612_195911

I-O DATA WN-GX300GR

PRを投げたタイミングが丁度OpenWrt 18.06の作業が開始された時期であり、しばらく中の人からのコメント等動きが無かったのでリリース後になるかなーと思っていましたが、今日マージされました。
Tama W06に続き、この機種についてもまとめておきます。

仕様

WSR-1166DHP/DHP2やVR500等でお馴染みのMT7621です。ただし、WN-GX300GRでは上位モデルのWN-AX1167GRに対して下位モデルという位置づけからか、シングルコアの “MT7621S” が搭載されています。

  • SoC: MediaTek MT7621S (880MHz, 1C2T)
  • RAM: DDR2 SDRAM 64MB
  • Flash: SPI Flash 8MB
  • WAN/LAN: 1000Mbps x1 / 1000Mbps x4
  • UART: 115200bps(RJ45側からVcc, GND, TX, RX)

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

OpenWrt化

前回sysupgradeファームのみでOpenWrtを導入できたTama W06に対し、こちらはFlashこそ8MBあるものの、メーカーファームでは各OS領域4MB弱でデュアルイメージを構成しています。そのため、OpenWrtではそれぞれの領域に入りきらないのでfactoryファームは断念しました。
これにより、OpenWrtの導入にはシリアルコンソールの接続が必要になります。

  • TFTPサーバを用意
    PC側のIPアドレスを192.168.99.8に設定してWN-GX300GRと接続、WN-GX300GRのinitramfsファームを uImageWN-GX300GR にリネームしたうえでTFTPディレクトリに置き、TFTPサーバを起動。
  • U-Bootからinitramfsでブートさせる
    WN-GX300GRに電源ケーブルを繋いで起動し、U-Bootの起動方法選択で “1” を選択しTFTPからイメージを取得してRAM上に展開しブートするモードへ。デバイスとサーバのIPアドレス、ファイル名は変更せずEnterキー3回押下でinitramfsイメージをTFTPサーバからダウンロードし、それを使用して自動的にブートが実行される。
  • sysupgradeファームを投入
    initramfsファームでのブートが完了したら、mtd erase firmware を実行してメーカーファームを削除したうえでsysupgradeによりsysupgradeファームを焼き込む。
  • 完了
    2分前後掛かるものの、Flashへの書き込みが完了して再起動する。

備考

  • OpenWrtでのシリアルコンソールのBaudrateは115200bpsに設定。ramipsでよくある57600bpsかと思っていたら、メーカーファームではU-BootもKernelも115200bpsだった。このため、OpenWrt化しても57600bpsではU-BootとOpenWrtで異なってしまうので、115200bpsを採用。
  • OpenWrtでは2つあるOSイメージ用パーティションを結合して1つとして扱うようにしたため、initramfs上でバックアップしたメーカーファームの2つのOS領域 (“Kernel” + “app”) を結合して firmware.bin などとし、
    mtd write firmware.bin firmware
    

    とすることでメーカーファームに書き戻すことが可能。
    メーカー公式サイトで公開されているアップデート用ファームでもできそうだけど未検証。

  • MT7621ではHW NATが実装されているため、WN-GX300GRでもNATのCPU負荷をかなり抑えることが可能。

雑感

今回はPRを出してからマージされるまで時間は掛かったものの(前述のとおりリリース準備のため)、議論を行うことは無くすんなりマージされたので一安心。
上位機種のWN-AX1167GRも某氏からパッチ案等頂いたのである程度組み上げてあるものの、実機が無く検証できないのでどうしたものやら。