WSR-1166DHPのOpenWrt化に苦労した
以前WSR-A2533DHP2をOpenWrt化したけど、A付きのものは公式サポートしていないはずなので公式サポートしているものが欲しいなあと思っていた。『WSR-A2533DHP2をOpenWrt化する』 家に今は使っていないWSR-A2533DHP2がある。以前はメインのルーターだったり、その後は中継機にと使っていたが世代交代が進んで使わなくなった。 …ameblo.jp初めて行くジャンク屋に入ったらルーターやらなんやらがたくさんあったので物色していたら、WSR-2533DHP2があったが3,000円くらいした。ジャンクにそんなお金かけてもナーとこれはスルーした。さらに物色すると化粧箱に入ったWSR-1166DHPを見つけた。本体の上部に何かをぶつけた凹みはあったが、それなりに綺麗だし付属品は全て付いていた。なんなら購入したのであろう家電量販店の保証書まで付いていた……これで330円也。元の持ち主はかなり几帳面だったのだろうな。スペックや扱いの楽さを考えるとWSR-2533DHP2のほうがいいけど、WSR-A2533DHP2をすでに体験しているし別の型番をまた試してみたほうが面白みがあるなと思ったのでこれを試してみることに。簡単にOpenWrt化できるだろうと高を括っていたら、今日ほぼ丸一日使うことになってしまったが、結果的にOpenWrt化できた。なかなか大変だったが……いろいろ試行錯誤しながらだったので時系列順に書くのが難しく、学んだことや遭遇したことをトピックごとに書くことにする。[data-toc]{background:#ffffffd9;border:1px solid var(--color-border-medium-emphasis,#08121a4d);border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:12px 16px}[data-toc] h2,[data-toc] ol,[data-toc] p{margin:0}[data-toc] .toc-header{align-items:center;display:flex;font-weight:700;gap:12px}:is([data-toc] .toc-header) h2{color:var(--color-text-medium-emphasis,#08121abd);font-size:.875em}[data-toc] .toc-empty-message{color:var(--color-text-low-emphasis,#08121a9c);font-weight:400}:is([data-toc] .toc-empty-message) p{font-size:.75em}[data-toc] ol{list-style:none;padding:0}:is([data-toc] ol) .last.collapse a{border:none}:is([data-toc] ol) a{border-bottom:1px solid var(--color-surface-tertiary,#08121a14);display:block;font-size:.75em;padding:6px 0;-webkit-text-decoration:none;text-decoration:none}[data-toc] .h4,[data-toc] a{color:var(--color-text-medium-emphasis,#08121abd)}[data-toc] .h2{font-weight:700}[data-toc] .h3{font-weight:400;margin-left:8px}[data-toc] .h4{font-weight:400;margin-left:16px}[data-toc] [role=button][aria-expanded]{align-items:center;display:flex;font-size:.75em;font-weight:700;gap:4px;justify-content:center;padding:4px 0;text-align:center;-webkit-text-decoration:none;text-decoration:none}[data-toc] [role=button][aria-expanded=true]:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M20.97 14.55c0 .26-.1.51-.29.71a.996.996 0 0 1-1.41 0l-7.29-7.29-7.29 7.29a.996.996 0 1 1-1.41-1.41l7.29-7.29c.78-.78 2.05-.78 2.83 0l7.29 7.29c.19.19.28.44.28.7'/%3E%3C/svg%3E")}[data-toc] [role=button][aria-expanded=false]:after,[data-toc] [role=button][aria-expanded=true]:after{background:var(--object-low-emphasis,#08121a9c);content:"";display:block;height:1rem;mask-size:contain;width:1rem}[data-toc] [role=button][aria-expanded=false]:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M3.05 9.45c0-.26.1-.51.29-.71a.996.996 0 0 1 1.41 0l7.29 7.29 7.29-7.29a.996.996 0 1 1 1.41 1.41l-7.29 7.29c-.78.78-2.05.78-2.83 0l-7.29-7.29c-.18-.19-.28-.44-.28-.7'/%3E%3C/svg%3E")}[data-toc]:has([role=button][aria-expanded=false]) .last:not(.collapse) a{border:none}[data-toc]:has([role=button][aria-expanded=false]) .collapse{display:none}[data-toc]:not(:has([role=button][aria-expanded])):not(:has(.collapse)) .last a{border:none}:is([contenteditable=true],.no-js,#no-js) [data-toc] .collapse{display:revert!important}目次 参考リンク macOSでTFTPサーバーを起動する方法 WSR-1166DHPにTFTPのファイルを読みこませる方法 古いOpenWrtあるいはLEDEにSSHをするとき警告が表示されるのを抑止する方法 WSR-1166DHPでもBuffaloのファームウェアアップデートからファームウェアを上書きしたい sysupgradeを実行したあと4つのLEDが橙色に点灯して起動しないのを解決する目次を開く参考リンクとてもお世話になったWebページへのリンク。いろいろな情報とその情報ソースへのリンクでお世話になった:Buffalo WSR-1166DHP に OpenWrt をインストールしたときのメモ - Qiita【警告】 このページで紹介している代替ファームウェア OpenWrt はよくわかっていない素人がおいそれと手を出していいものではない。生半可な理解ではデバイスをダメにしてしまう危険があるばかりか、法律に抵触してしまう恐れもある。このページで紹介している内容だけを鵜呑み...qiita.comWSR-1166DHPでもBuffaloのファームウェアアップロードから更新できることと、起動しない問題について参考になった:https://okoya.seesaa.net/article/460490117.htmlTFTP周辺を参考にさせてもらった:WSR-1166DHS2へのOpenWrt導入①(インストール編)子どもたちへのネット環境提供時の課題として広告ブロックやフィルタリングについて悩んでいました。長女が小学生になり、タブレット端末を持ち帰ってきたことからちょっと真剣に考え出しました。ルーターにOpenWrtをインストールしてDNSサーバーで...rmwlbpapa.comBuffaloのファームウェアと、ファームウェアへの戻し方……なのだが今回は別の使い方をさせてもらった:wsr-1166dhp openwrtから original recoveryhttps://drive.google.com/file/d/1tqnE25SaWENys0Ri57ngyBL64Ffzhe3v/view?usp=sharing target/linux/ramips/dts/WSR-1166.dtsを編集して、mdt1を書き込み可...f0573.blogspot.comOpenWrtのWSR-1166DHPについて書いてあるWiki:[OpenWrt Wiki] Buffalo WSR-1166DHPopenwrt.orgOpenWrtのファームウェアセレクター:OpenWrt Firmware Selectorfirmware-selector.openwrt.orgmacOSでTFTPサーバーを起動する方法macOSはデフォルトでTFTPサーバーを持っているので以下のコマンドで起動できる:$ sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist起動しているかどうかはlsofで確認できる:$ sudo lsof -i:69起動していなかったら何も表示されない。終了するには以下のコマンドを実行する:$ sudo launchctl unload -F /System/Library/LaunchDaemons/tftp.plistTFTPで配信するファイルは/private/tftpboot に配置する。ディレクトリがroot:wheelになっているので基本的にsudoでmvやcpをすることになる(chownで変更してもいいのかもしれないが)。WSR-1166DHPはlinux.trx-recovery というファイル名で読み込むのでイメージのファイルはこの名前で /private/tftpboot に配置する必要がある。WSR-1166DHPにTFTPのファイルを読みこませる方法macOSのIPアドレスを 192.168.11.2 にしたあと、WSR-1166DHPの背面のスイッチをAUTO + ROUTERにしておき、AOSSのボタンを押しながら電源を入れる。5,6秒以上経ったらAOSSボタンを離すとTFTPのファイルを読みにいく。OpenWrtにすると 192.168.1.1になるのでいちいち11を1に直すのがめんどくさい……古いOpenWrtあるいはLEDEにSSHをするとき警告が表示されるのを抑止する方法以下のコマンドで抑止できるし、ログインできる:$ ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.1.1古いため廃止されたアルゴリズムを使っているせいらしい。SCPでも似たようにする:$ scp -O -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa 送りたいファイルroot@192.168.1.1:/tmpWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! が出たら以下を実行する:$ ssh-keygen -R 192.168.1.1これはSSHではないが、古いOpenWrtやLEDEからsysupgradeを実行するときコマンドに渡すイメージが新しすぎると警告が出てコマンドが失敗する。その場合は-Fで無視するとアップグレードできる。というのをGemini2.5から聞いたので理由はよくわかっていないが、メモリ上で起動しているのだし問題はないだろうと思っている……$ sysupgrade -n -v -F 対象のファイルWSR-1166DHPでもBuffaloのファームウェアアップデートからファームウェアを上書きしたいTFTPサーバーを起動するのが面倒だったので探していたら以下のWebページに書いてある方法でできた(が、後に結局TFTPが必要になった):https://okoya.seesaa.net/article/460490117.html 2. 下記サイトから http://naobsd.org/lede-openwrt/#WSR-1166DHP lede-ramips-mt7621-wsr-1166dhp2-initramfs-factory.bin のファームウエアをダウンロードし、ルーターの純正webから更新 これでopenwrtを「メモリ上」にインストール (この段階ではブラウザからはまだルータにアクセスできません、コンセントを抜くと振り出しに戻るので注意) ただ、ここで紹介されているWebページが消滅していてファイルがダウンロードできない……と思いきや、Internet Archiveに残っていた。このWebページの最新のアーカイブ:LEDE (a.k.a. OpenWrt)web.archive.orgこのWebページの他のアーカイブ:Wayback Machineweb.archive.orgファイルのハッシュ値:$ crc32 lede-ramips-mt7621-wsr-1166dhp-initramfs-factory.bin855753c6$ shasum -a 256 -b lede-ramips-mt7621-wsr-1166dhp-initramfs-factory.bin88cb903fc5d918d5a6bca3ff21f2ce3c070929fe41b9605f2aaf68d59b63adba *lede-ramips-mt7621-wsr-1166dhp-initramfs-factory.binこれをアップロードすると次回起動時にメモリ上のLEDEから起動できる:sysupgradeを実行したあと4つのLEDが橙色に点灯して起動しないのを解決する今回この症状で多大な時間を使った。結果的には解決できてよかったが…… 各種参考サイトにあるようにTFTP経由あるいは管理画面からのアップロードでOpenWrtをメモリ上から起動できるようにしても、sysupgrade後にOpenWrtが起動せず本体の4つあるLEDが全て橙色に点灯する状態になっていた。WSR-1166DHPをOpenWrt化した記事でこの症状が紹介されている例がほとんどなかったため、おかしな個体を引いたか?と思いつつも根気よく調べると以下のページのコメントが目についた:https://okoya.seesaa.net/article/460490117.html 中古で購入したWSR-1166DHPのA0A0でOpenWrt化する際に、mtd erase firmwareとsysupgradeの後に先の方同様に全部赤ランプで起動しない状態になりました。 上手くOpenWrtにできたWSR-1166DHP2と比較して、ubootの変数が違っていたので、 root@OpenWrt:~# fw_setenv bootpartition 0 とすることで、正しく起動するようになりました。 同じ状況かはわかりませんが、情報を共有しておきます。 Posted by at 2022年04月24日 17:09ubootの値を書き換えるといい、というのはわかったが公式の最新のOpenWrtや少し古いLEDEにはfw_setenvが入っていない。uboot-envtoolsのipkをopkgからインストールして、cat /proc/mtdでサイズを確認しecho '/dev/mtd1 0x0000 0x10000 0x10000' > /etc/fw_env.configをしたあと様々なコマンドで書き込もうとしても失敗してしまう……と途方に暮れていたら、以下の記事を見つけた:wsr-1166dhp openwrtから original recoveryhttps://drive.google.com/file/d/1tqnE25SaWENys0Ri57ngyBL64Ffzhe3v/view?usp=sharing target/linux/ramips/dts/WSR-1166.dtsを編集して、mdt1を書き込み可...f0573.blogspot.com target/linux/ramips/dts/WSR-1166.dtsを編集して、mdt1を書き込み可能と,Fw_toolをいれた、ファイル openwrt-ramips-mt7621-wsr-1166-initramfs-kernel.bin をtftpサーバー 192.168.11.2 linux.trx-recoveryに置き、AOSS+電源で起動ん……?mtd1が書き込み可能でfw_toolを入れた……?今一番欲しいものでは……? 起動できないときは、再度、AOSS+電源で起動し root@OpenWrt:~# fw_printenv bootcmd=tftp bootdelay=5 baudrate=57600 ethaddr="00:AA:BB:CC:DD:10" ipaddr=192.168.11.1 serverip=192.168.11.2 bootfile="linux.trx-recovery" bootpartition=1 bootversion=0.08 root@OpenWrt:~# fw_setenv bootpartition 0 にします。一番やりたいことでは……?ということで以下のGoogle Driveからアーカイブをダウンロードした:wsr-1166dhp_backup.tar.gzdrive.google.comファイルのハッシュ値:$ crc32 wsr-1166dhp_backup.tar.gzcb411219$ shasum -a 256 -b wsr-1166dhp_backup.tar.gzdee4c7710faf43d9de9c3ba93d8cf166bbfd3287eaecfc559d126cfbc06286ba *wsr-1166dhp_backup.tar.gzアーカイブを展開するとopenwrt-ramips-mt7621-wsr-1166-initramfs-kernel.bin というファイルがあるので、これをTFTP経由でルーターに読み込ませる。すると、fw_printenvやfw_setenvが使える。以下を実行してbootpartitionの設定を追加する:$ fw_setenv bootpartition 0これを実行したあとは無事にOpenWrtが起動できるようになった。なかなか苦労したがWSR-1166DHPをOpenWrt化することができた。OrangePi R2SのバックアップだったりOpenWrtの実験場だったりに使いたいので、これからこれでいろいろ試すことになると思う。今回、Gemini2.5にかなりいろいろ質問したが、sysupgrade周りとかfw_setenv周りをしつこく聞くとテキトーな返事しかしないし、提示されたコマンドはいい加減だし、すぐに「シリアルポートに繋ぎましょう!」とか言うのでやはり情報が少ないものに対しての問題解決は苦手なのだろうなと思った。この記事を書いたことで多少は賢くなったりするのだろうか。