ELECOM WRC-1750GS/GSV

Twitterで投票取った結果、WRC-1750GHBKと同数で並んだこと、個人的にあまり難も無くサポートできそうでやろうということになった機種。GSVについても偶然ヤフオクで安価な出品があり、衝動的に確保して作業しました。
マージされサポートとなったのでまとめます。GS/GSVどちらもハードウェア的にほぼ同一であるため、この記事に書いていきます。

仕様

既にサポート済みのWRC-1900GST, WRC-2533GST/GST2と基本的にほとんど同じです。無線にはMT7615を2つ搭載して2.4/5GHz帯それぞれをカバーしています。SoCはMT7621A。
法律の関係上、無線機能の使用は非推奨です。

  • SoC: MT7621A (880MHz, 2C4T)
  • RAM: DDR3 128MiB
  • Flash: SPI-NOR 16MiB
  • WAN/LAN: 1000Mbps/1000Mbps x4
  • UART: J4, 57600bps(RJ45側から3.3V, GND, TX, RX)

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

OpenWrt化

この機種もWRC-1900GST, WRC-2533GST/GST2と同一のファームウェアフォーマットであるため、factoryイメージの生成を行えています。

WRC-1750GS(またはWRC-1750GSV)を起動
通常通り電源を接続して起動。ルータモードを前提とする
WebUIからファームウェア更新ページを開く
PCとWRC-1750GS(またはWRC-1750GSV)を繋いで http://192.168.2.1 にアクセスし、ファームウェア更新ページを開く
ファームウェア更新
WRC-1750GSまたはWRC-1750GSVそれぞれに合わせたOpenWrtのfactoryイメージを選択し、アップデートを実行
完了
Flashへの書き込みが完了後再起動され、OpenWrtで起動する

備考

この機種も変な癖は特にないのであまり書くことが無い。

  • メーカーファームに戻す際は、公式サイトで公開されているアップデート用ファームウェアの先頭32byte(= 0x20、ヘッダ部分)を削って firmware パーティションに mtd コマンドで書き込む

作業時の色々

  • 今回も既存のWRC-1900GST, WRC-2533GST/GST2用factory生成コードを使い回せたので、やはり楽。
  • 当初WRC-1750GS/GSVはハードウェアが同一であり、mtdパーティションのレイアウトなども一部名前が異なるのみで全く同じであることから、デバイスサポートとしては単一のものとしてfactoryイメージをGS/GSVそれぞれのものを用意するつもりでいた。PRを出した際、メーカーが明確に分けているならばOpenWrtでも分けた方が良いのではという指摘を受け、確かにと感じたので最終的にGSとGSVで別個の独立したサポートとなった。
  • もしかしたら個体によっても違うかもしれないが、今回確保した個体ではWRC-1750GSが BC:5C:4C、WRC-1750GSVが 04:AB:18 のMAC Adrress Block Large (MA-L, ≒OUI)であった。

色々

今回は前述したGS/GSVの分離など多少の議論はあったものの、特段大きい問題などは無くマージされたので一安心。この2機種は既に販売終了になっているものの、市場に一定数出ていると思われ、最近中古でポツポツと出てくるようになっているので活用してみるのに良さそうか。
WRC-1750GST2についてはまだ確保していないため、そのうち入手できたらサポート作業を行います。
余談: 同じく最近安価に中古が出てくるようになったWRC-1167GS2-BやWRC-1167GST2も既にPRはオープンしているものの、”needs reviewers” ラベルが付けられたまま止まってしまっておりなんとも。

ELECOM WRC-2533GST2

前にどこかで聞いたような型番。以前サポートして記事を書いたWRC-2533GSTの後継機です。知り合いの伝手で偶然入手でき、サポート作業を行いました。まとめていきます。

仕様

基本的に、ハードウェアとしては2か所を除いてWRC-2533GSTとほぼ同一です。無線には2.4/5GHz帯それぞれにMT7615を搭載し、SoCはMT7621A。
FlashとRAMはそれぞれWRC-2533GSTから倍増となっています。OpenWrtで使う分には多いに越したことは無いけれども、IPv6関連だけでそんなに必要になるものなんだろうか。
法律の関係上、無線機能の使用は非推奨です

  • SoC: MT7621A (880MHz, 2C4T)
  • RAM: DDR3 256MiB
  • Flash: SPI-NOR 32MiB
  • WAN/LAN: 1000Mbps/1000Mbps x4
  • UART: J4, 57600bps(RJ45側から3.3V, GND, TX, RX)

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

OpenWrt化

既にOpenWrtでサポートされているWRC-2533GSTやWRC-1900GSTと同一のファームウェア形式を採用しているため、factoryイメージを用意できています。この為、容易にインストールできます。

WRC-2533GST2を起動
通常通り電源を接続して起動。ルータモードを前提とする
WebUIからファームウェア更新ページを開く
PCとWRC-2533GST2を繋いで http://192.168.2.1 にアクセスし、ファームウェア更新ページを開く
ファームウェア更新
OpenWrtのfactoryイメージを選択し、アップデートを実行
完了
Flashへの書き込みが完了後再起動され、OpenWrtで起動する

備考

変な癖は特にないのであまり書くことが無い。

  • メーカーファームに戻す際は、公式サイトで公開されているアップデート用ファームウェアの先頭32byte(ヘッダ部分)を削って firmware パーティションに mtd コマンドで書き込む

作業時の色々

  • 前述の通り、既存のWRC-2533GSTやWRC-1900GSTと同一のファームウェア形式であったことから生成用のコードを使い回すことができ、その辺がやはり楽だった。
  • 基本的にWRC-2533GSTとほぼ同一のハードウェアであることからWRC-2533GST, WRC-1900GSTとコードを共通化できたが、WRC-2533GST, WRC-1900GSTのサポートを行ったのがしばらく前である関係上今現在のOpenWrtの状況に何点かそぐわない箇所があったため、先にそれらを更新したうえでWRC-2533GST2のサポートを載せる形にした。
    具体的にはSPIの最大クロック上昇やMT7615のサポート追加など。
    ただし、FlashのサイズがWRC-2533GST2とそれ以外で異なる関係上、その辺は他から分離するなどした。
  • サポート作業開始当初、MT7615のドライバが存在する openwrt/mt76 内でMT7615におけるLEDのサポートに問題があり、この機種の2.4GHz, 5GHzのLED 2つが点灯させられない状況が生じていた。その関係でしばらく様子見で保留したが、少しして修正が行われたバージョンまで引き上げられたため再開して投げ込んだ。

色々

今回も大きなトラブル無く無事ゴール。今後何かあった時の為の付き合いは続くけれども。サポートを取り込んでもらうべくPRを開いたとき、対応したOpenWrtのメンバーの方から “含まれるcommitのうち一つは二つに分離するけど、それ以外特段言うことないから後でマージするよ” と言われ短時間でクローズされたのは少々吹き出してしまった。普段何かしら突っ込まれることが多いので。今回は既存のコードに乗っかる部分が大きく、新規のコードがあまり多くなかった故かもしれない。

BUFFALO WSR-2533DHPL

BUFFALOのramips機としては自分初。PRをオープンしてからramips/mt7621の5.4引き上げなど挟んだ関係でしばらく掛かりましたが、マージされました。所謂 “2533” 機であり、上位寄りに位置するこの機種です。まとめていきます。
なお、このサポートはあくまでWSR-2533DHPLのものです。WSR-2533DHPL-Cについてはほぼ同一のハードウェアと推測されますが、実機を確認していない為断言はできず、DHPLのファームウェアの使用は推奨しません。
2020/05/25 追記: コメントくださった方によりWSR-2533DHPもほぼ同一であることが確認できた為、WSR-2533DHPについてもこのDHPLのサポートに含まれる形でサポート扱いとなりました。DHPL用の各ファームウェアを使用します。
ramips: add alternative name for Buffalo WSR-2533DHP · openwrt/openwrt@7b01567

仕様

SoCにはMT7621Aを搭載し、無線には2.4/5GHz帯でそれぞれにMT7615Nを搭載する、言ってしまえば奇をてらったところは無い一般的な構成です。
法律の関係上無線機能の使用は非推奨です

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

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

OpenWrt化

メーカーファームにおけるフォーマットの問題から、factoryイメージはありません。BUFFALO機で良く知られた、ブート時にAOSSボタンを押してイメージをロードさせる方法を利用します。

TFTPサーバを用意
PCのIPアドレスを 192.168.11.2 に設定の上、WSR-2533DHPLのinitramfsイメージを “linux.trx-recovery” にリネームしTFTPサーバを起動する
WSR-2533DHPLをブート
AOSSボタンを押しながら電源ボタンを押してWSR-2533DHPLをブート
10秒前後AOSSボタンを押し続けると、自動的にリネームされたinitramfsイメージがTFTPサーバからダウンロードされ、それを使用してブートされる
sysupgradeを実行
ブートされたinitramfsイメージ上でWSR-2533DHPLのsysupgradeイメージをwgetやscp等でWSR-2533DHPL上の/tmp/等に置き、sysupgradeを実行してFlashに書き込む

例:

sysupgrade openwrt-ramips-mt7621-buffalo_wsr-2533dhpl-squashfs-sysupgrade.bin

完了
1分から2分ほどで書き込みが完了して再起動され、OpenWrtで起動してくる

備考

  • Flashは16MiBのものを搭載しているが、OSイメージを2つ抱えている関係上KernelとRootFS、ユーザー領域で実際に使用できるサイズは7.75MiBほど。
  • 前述のとおりこの機種が属するramips/mt7621はPRをオープン後にKernel 5.4に切り替えられており、その際MT7530スイッチのドライバがLinux Kernelの持つDSAドライバに変更された。これに起因し、現状OpenWrtの設定システムではこの機種のVLANを自由に設定することはできない。
    ip コマンドなどを用い、手動で構成することは可能である模様。)
  • 2つあるOSイメージ用パーティションのうち、実使用は確認した範囲では1つ目 (bank1) のみと思われる。2つ目 (bank2) はあくまでバックアップとして使用され、bank1のOSイメージが壊れている際にbank2からbank1に書き戻される。bank1が正常である限りはそのまま1つ目からブートされ、bank1とbank2がどちらも正常かつ異なるイメージである場合、bank1からbank2へのコピーが行われる。
  • もし将来的にメーカーファームに戻す可能性がある場合、上記のOpenWrtインストール手順でinitramfsイメージでブートした際に、sysupgrade実行前に “firmware” パーティションの中身をddコマンドでバックアップしておくと良い。実際に戻す際は、そのバックアップをmtdコマンドを用いて “firmware” パーティションに書き込む。バックアップしていなくても、メーカーファームを展開し暗号化を復号したファイルを書き込むことでも恐らく可能。

作業時の色々

  • factoryイメージを用意できない理由は雑記に書いたとおりであり、メーカーファームから投入する場合TRX形式のMagic Numberに特定のものを必要とする。ただし、それを使用した場合OpenWrtのシステムが正しくRootFSを検出できないためブートに失敗しブートループを引き起こす。このMagic Numberはメーカーファームにおいてのみ必要であってU-Bootによるブートには不要であり、コードの改変量を低減するためにMagic Numberに絡んだ変更が不要なfactoryイメージ無しとした。

色々

今回も時間は掛ったが、マージされたので一安心。実のところ、作業に用いた手持ちの個体はPCIe周りで恐らく落としてしまった際に発生した問題から、mt7621 subtargetが5.4に引き上げられた際のPCIeドライバのバグを踏むなどして大変なことになった。この問題は、通常使用ではこの機種においてはまず発生しない。

I-O DATA WN-DX1167R / WN-AX1167GR2

分けようかと思ったけど、内部構成似通ってるので1つの記事にしました。
去年9月末にPRをオープンして4か月と少し、やっとマージされました。I-O DATAで現在ミドルレンジ付近を担うこの2機種です。まとめていきます。

仕様

2機種とも、一つ世代が古く以前記事を書いたWN-AX1167GRと同じくMT7621Aを搭載しています。しかしそれ以外の内部構造は、この2機種ともWN-AX1167GRとは大きく異なり、全体的にイマドキな構成になった、という印象を受けます。
何より、どちらも128MiBのNAND Flashを搭載しているのが一番の衝撃。(まさか国内メーカーがこの価格帯で搭載してくるとは)
無線はいずれもMT7615Dを搭載し、2.4/5GHz両バンドを1チップでカバーしています。ただし、法律の関係上使用は非推奨です

WN-DX1167R

  • SoC: MT7621A (880MHz, 2C4T)
  • RAM: DDR3 128MiB
  • Flash: NAND 128MiB
  • WAN/LAN: 1000Mbps x1/100Mbps x4
  • UART: J5, 57600bps(SoC側からVcc, TX, RX, NC, GND)

WN-AX1167GR2

  • SoC: MT7621A (880MHz, 2C4T)
  • RAM: DDR3 128MiB
  • Flash: NAND 128MiB
  • WAN/LAN: 1000Mbps x1/1000Mbps x4
  • UART: J5, 57600bps(SoC側からVcc, TX, RX, NC, GND)

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

注意事項

※2020/04/29 追記

本記事の2機種は、Snapshotファームウェアでの使用は全く推奨できません。ハードウェアに複数の特殊な点が存在し、それに起因してOpenWrtにおいてバグを踏んだりするなどしてブート不能に陥る事態を度々起こしているほか、特定の状況下でそうなった場合復旧が非常に困難であるためです。
将来の20.xリリースに含まれることが予想されるため、それまで待つことを強く推奨します。

詳解

ブートに関して
WN-AX1167GR2, WN-DX1167Rは、上記仕様の通りNAND Flashを搭載している。ブート時、ここからKernelを読みだすのはU-Bootが直接行っているのではなく、 “Z-LOADER” がU-Bootから実行され、それがNAND Flashからの読み出しとLZMA圧縮されたKernelの展開及び実行を行っている。
この時、U-Bootは通常のMT7621機と異なり、よくある1~4などのメニューは表示されず、その他中断できるタイミングも無くZ-LOADERが呼び出され実行が移ってしまう。また、Z-LOADERもFlash内の特定箇所にある debugflag が無効である場合、中断を許容せずそのままKernelの展開と実行に移ってしまう。 debugflag はデフォルトで無効化され出荷されているため、Kernelの開始前にブートを止めることは一切不可能ということである。
この点はもし何らかのトラブルが生じてKernelがブートできなくなった場合、即座に復旧不能となることを意味するため、それを防ぐためにOpenWrtにおいては debugflag を有効化するように構成している。しかしながら、その有効化を行うのはどうしても “最初にブートされるOpenWrtが正常にブートを完了し、次のOpenWrtファームウェアへのsysupgradeが実行される” 際である。つまり、最初にブートされるOpenWrtファームウェアに何らかの問題が存在し、正常にブートせず止まってしまう、あるいはブートループとなる場合、debugflag を有効化することができず、復旧手段が無いまま文鎮となるということである。
OpenWrtにおいて、この2機種のサポートがマージされた後複数の原因により何度かこの “最初にブートされるOpenWrtファームウェアに問題がありブートが止まる” 問題を起こしており、現状では日々何らかの変更が行われるSnapshotファームウェアを使用することは全く推奨できない。
PCIeの問題
ramips/mt7621 subtargetがKernel 5.4に引き上げられた際、MT7621のPCIe関連のドライバがOpenWrtで抱えていたものからLinux Kernelに存在するものへ切り替えられた。この際、OpenWrt内に存在するほとんどの機種では全く問題は無かったが、WN-AX1167GR2, WN-DX1167Rの2機種ではPCIe周辺でハングしてブートが止まる問題が発生した。この2機種では無線にMT7615Dを搭載し、2.4/5GHz帯の両方を1チップでカバーしている。このMT7615Dはほとんどの類似機種ではMT7621の1番目のスロット (pcie0) に接続されているが、この2機種においては2番目のスロット (pcie1) に接続されている。この1番目と2番目のスロットは同一のphyによって提供されるものであるが、ドライバ側のバグにより、1番目のスロットが未使用である場合に2番目の有無にかかわらずphyの電源が切断されてしまい、2番目のスロットの処理が停止してハングするというものだった。
OpenWrtのMLで報告が上がってLinux Kernel側のドライバを担当した人へも報告が行き、しばらくして修正が行われた。(ramips: mt7621: backport more pcie driver fixes · openwrt/openwrt@51c6b14)
Kernelサイズの問題
ramips/mt7621 subtargetがKernel 5.4に引き上げられた際、それまでのKernel 4.14のファームウェアと比較してKernelサイズが肥大化した。これに起因し、OpenWrtに存在する多くのMT7621機でU-BootがLZMAを展開する際にエラーとなる、あるいはエラーにならないまでも展開が不完全となって後部のデータが欠落し、Kernelがブート中にDeviceTreeのノードを見つけられずpanicしてブートが停止するという問題が発生した。これにはWSR-1166DHPほか国内メーカーの複数の機種も含まれ、また本記事の2機種も例外ではなかった。
WSR-1166DHPほか国内メーカーのMT7621機はおおよそ修正を行ってマージされたほか、WN-AX1167GR2, WN-DX1167Rについてもsysupgradeファームウェアの修正を行ってマージされた。しかしながら、修正作業中に確認した際正常に機能したinitramfsファームウェアについてもこの問題が存在することが後から判明し、現在修正作業中
2020/05/25 追記: initramfsファームウェアの修正を行い、マージ済み。公式ビルドで正常にブートできることを確認済み。
(ramips: fix initramfs image for I-O DATA mt7621 devices · openwrt/openwrt@0a05d71)

OpenWrt化

initramfsイメージを使用してインストールできるようになっているものの、Flash内部にOSイメージを2つ持つ構成であるため2段階でのインストールが必要です。

WN-DX1167R(またはWN-AX1167GR2)を起動
電源ケーブルを繋ぎ、普通に起動
WebUIにアクセス
PCとWN-DX1167R(またはWN-AX1167GR2)をLANケーブルで接続し、 http://192.168.0.1/ へアクセスしてファームウェア更新ページへ移動する
ファームウェア更新
機種に合わせたOpenWrt initramfsイメージを選択し、アップデートを実行
sysupgradeを実行
上の手順を実行後再起動されOpenWrtで起動してくるので、そこでさらにそれぞれの機種のsysupgradeイメージを用い再度ファームウェアの更新を行う。これを行わないとinitramfsイメージでブートした状態であるため、変更した設定などが保存されない。
完了
Flashへのsysupgradeイメージの書き込みが完了後再起動され、OpenWrtで起動してくる

備考

  • sysupgradeを行う際、 debugflag をチェックして無効になっている様であれば有効化するように構成した。これにより、もし何らかの原因によりKernelがブートしなくなっても筐体を開けてUARTを接続し復旧することが可能になる。
  • メーカーファームでは前述のとおり2つOSイメージのパーティションをFlash内に持っており、ファームウェアの更新が行われる度にその時起動していたのとは別のもう一方へ切り替えられ、交互に使用される。OpenWrtでは例外はあるものの基本的に片方のみを使用する必要があるため、1つ目のパーティションに固定した。sysupgradeが行われる際、debugflag と同様にブートするパーティションの指定を行う bootnum の値もチェックし、もし 2 が設定されている場合は 1 へ変更する。
  • 繰り返しになるが、OSイメージのパーティションが2つ存在する関係上、OpenWrtがKernel, RootFS, ユーザー領域で使用できるサイズは合計で 50MiB (0x3200000) ほど。

作業時の色々

  • 両機種ともメーカーファームではMSTCが手を加えたuImage形式のヘッダがKernelに付加されている。このヘッダに関しては、5ch方面で先にWN-AX2033GRの作業をされていた方がGPLソースコードの開示請求を行い、それによって提供され公開されたコードにより知ることができた。某氏に非常に感謝。
  • 当初このuImageはinitramfs, sysupgradeどちらのイメージでも使用することを考えたが、しかしながらその場合OpenWrtのmkimage周りに改変が必要になることから、Cの知識も怪しく悩ましく感じた。
    その後色々調べていると、この改変済みuImageが必須であるのはメーカーファームによるチェックのみでU-Bootは通常のuImageでも特に問題無く起動できることがわかり、またgzipが作成したアーカイブ末尾にこの改変済みuImageに必要なファイルサイズとCRC32値を吐き出すことを知り、これを最終的に利用して済ませることができた。
  • mkimageに手は加えず、別途firmware-utilsに何らかを追加して加工することも考えたが、加工を行う必要があるのがinitramfsイメージのみであり、それだけのためにfirmware-utilsを追加するのもな、と考えてしまい、gzipを利用する方法を採った節もある。

色々

時間は掛ったが、やっとマージされひとまずホッとした。そしてだいぶ肩の荷も降りた。
この2機種はMT7621A搭載機としては比較的実売価格が安価であり、なおかつ同様なELECOM WRC-1167GHBK2-Sが製造終了となったため、今後新品での継続的な入手性ではこちらが優位。Flash容量も大きく、活用できる範囲はだいぶ大きいと思われる。

I-O DATA WNPR2600G

かなり久しぶりのサポートまとめ、そして今更感もあるWNPR2600Gについてです。後回しにしたら忘れていました。
以前安価に出品があったものを購入し、サポートした機種です。PRをオープン後すったもんだでだいぶかかったものの、マージされ(てい)ました。まとめていきます。
記事の大体の体裁も忘れたので過去記事見ながら書いてる

仕様

“PLANT” ブランドに位置し比較的安価ながらも、I-O DATAの11ac機で当時最上位として、MT7621Aを搭載し無線には2.4/5GHzそれぞれでMT7615を1つずつ搭載しています。
ただし、どちらの無線機能の使用も法律の関係上非推奨です

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

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

OpenWrt化

メーカーファームのフォーマットがWN-AC1167GRなどとほぼ同じであったため、factoryファームを用意できています。そのため、簡単にインストールすることが可能です。

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

作業時の色々

さすがに間が開きすぎていてあまり覚えてない…

  • PRをオープンしてからマージされるまでそこそこ掛かってしまった。PRをオープン後にOpenWrtの全体でスタイルの整理/統一やその他色々な変更が発生するなどし、結構な回数それに合わせるなどの変更を行った。

色々

PRをオープンしてから時間は掛ったものの、なんとかマージされたので良し。
この機種は既にディスコンになっているものの、性能としてはある程度上位寄りに位置するため、今後さらに後継へ移行、あるいはそれよりも後にその時一般化したさらに上の規格の機種へ変更する、というときの活用がメインになりそうかな、とぼんやり。
以前WN-AC1167GRの作業時に作成したfactory生成コードがずっと使い回せており、非常に満足。