
Redmi路由器 AC2100 (以下Redmi AC2100)は中国向け専用のWi-Fi 5ルーターです。路由器というのは「ルーター」の中国語です。
約4年前に購入したXiaomiのRedmi AC2100は、当時だけでなく現在でも神コスパなWi-Fi 5ルーターです。このルーターはおそろしく安価でありながら高速な無線通信と安定した動作を見せたため、非常に良い買い物だと感じていました。しかし、中国版の純正ファームウェアには多くの制限があり、日本国内で市販されているエントリーレベルのルーターと比べても機能が乏しいものでした。Wi-Fi 5というのはWi-Fi 6対応デバイスが増える中では中途半端でした。さらに中国との謎の通信も気になりました。そこで、1回の技適の特例制度の届け出で利用可能な6ヶ月(以内)で、使用を中止することになりました。その後、Redmi AC2100は我が家の四次元押し入れの住人になりほとんど忘れ去られた存在となっていました。
そんな中、約3年半使い続けていたWi-Fiアクセスポイント(AP)が故障し、新しいWi-Fiルーターが届くまでの短期の中継ぎとしてこのRedmi AC2100が再び活躍する機会を得ることとなりました。しかし、再度押し入れにしまう前に、この機会を利用してXiaomi純正ファームウェアをOpenWRTに書き換えてみようと考えました。既に新しいWi-Fiルーターが稼働しているため、たとえこの試みが失敗しても全く問題ありません。もしOpenWRTへの書き換えが成功すれば、今後のWi-Fiルーター購入の際にXiaomiのルーターを再度選択肢に加えることも検討できるでしょう。現在では、Wi-Fi 6対応のXiaomi AX3000Tが神コスパモデルです。また、Wi-Fi 7対応モデルではXiaomi BE3600やBE5000がコスパの良い選択肢です。ただし、現時点ではOpenWRTがこれらのWi-Fi 7モデルに対応していなくて、今後の対応の有無も不明なため、購入するには時期尚早といえます。
今回は、Redmi AC2100をルーターとしてではなく、Wi-Fiアクセスポイント(AP)として使用します。市販されている家庭用ブロードバンドルーターで言うところの「ルーターモード」ではなく「APモード」に設定することを意味します。この設定では、LAN内にインターネット接続を提供している別のルーターが存在することが前提となります。Redmi AC2100背面のLAN1、LAN2、LAN3ポートは、L2スイッチとして動作するため、Redmi AC2100全体では有線と無線を混在させたL2スイッチのような役割を果たします。一般的な家庭用ルーターでは、WANポートにインターネット接続を、LANポートにPCやプリンターなどのデバイスを接続しますが、今回はL2スイッチのような使い方なのでWANポートは使用しません。
設定後の運用時点では、インターネットにつながるルーターやLANのスイッチと接続するためのLANケーブルは、Redmi AC2100のLAN1、LAN2、LAN3のいずれかのポートに接続します。LAN1〜LAN3の空きポートには、PCやネットワーク対応の周辺機器を接続して利用することができます。このように接続することで、Redmi AC2100のネットワーク設定の手間を大幅に省くことができるため、OpenWRTを利用したWi-Fi APの構築は非常に簡単になります。
なお、どうしてもWANポートを使用したい場合は、ブリッジ接続などの追加設定を行うことで利用可能になりますが、設定が複雑になるため、今回は試していません。Xiaomiの純正ファームウエアや市販されている家庭用ブロードバンドルーターの「APモード」ではWANポートを使うことがありますが、それはブリッジ設定です。
Redmi AC2100の背面です。今回は設定用PCやLANとの接続はすべて右側3つのLAN1〜LAN3を使用します。WANポートは使用しません。
ブラウザで https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100 を開き、ファームウエアのファイル2つをダウンロードします。2つのファイルのどちらかを選択するのではなく、カーネルファイルとfootfsファイルの両方が必要です。なお、ページを開くのには時間がかかることがあります。また、Redmi AC2100のファームウエアの対応バージョンを確認し、Redmi AC2100のXiaomi純正ファームウエアのバージョンが合わないなら純正ファームウエアを新しいバージョンに更新するか、必要に応じて古いバージョンにロールバックします。(ファームウエアの確認/更新/ロールバックについては手順/画像はありません)
Redmi AC2100の背面にあるリセット穴に細い棒を差し込んで内部のタクトスイッチを10秒以上長押ししてファクトリーリセットします。Redmi AC2100のようにリセットスイッチが穴の中にあるモデルの場合はスマートフォンのSIMカードトレーをイジェクトさせるためのピンのような直径1mm程度の金属の棒を使います。リセットスイッチを長押ししてファクトリーリセットがかかると筐体上面のLDEインジケーターの光り方が変わります。ファクトリーリセット後はピンを抜いてそのまま2分程度待ちます。
ファクトリーリセットしたらXiaomiのルーターのIPアドレスは192.168.31.1になります。LAN1〜LAN3のどれかにPCを有線接続してPC側のネットワーク設定を行います。PCのIPアドレスを192.168.31.2〜192.168.31.254までのどれか、サブネットマスクを255.255.255.0、デフォルトルートを192.168.31.1にします。DNSは設定不要です。
PCのネットワーク設定完了後、そのPCのブラウザで192.168.31.1を開きます。上の画像のような表示が出ればここまで間違っていません。
「马上体验」(今すぐ試してください)というボタンをクリックします。
Wi-Fiの設定画面が表示されます。上の画像ではSSIDが「Redmi_A205」です。今回はWi-Fiを使わないため変更不要です。その下に新しいWi-FiのPSK(パスワード)を入力します。ここで入力したパスワードがルーターの管理者パスワード(仮)にもなります。今回は「12345678」のような簡単なものにするのが無難です。
画面下部の「下一歩」をクリックします。
2.4GHz帯と5GHz帯のそれぞれでSSIDとPSKが表示されます。この画面はこれで行き止まりです。(次)
PCのブラウザで192.168.31.1にアクセスし直します。
Redmi AC2100(Xiaomiの中国語版共通)のログイン画面が表示されるので先に登録したWi-FiのPSKを入力します。先程「12345678」を登録したならそれです。
Redmi AC2100の管理画面が表示されます。その状態で[F12]キーを押して、ブラウザのデベロッパーツールを表示します。画像はChromeブラウザです。デベロッパーツールの「コンソール」タブを選択します。このブラウザ画面はこのまま閉じません。
別のブラウザ画面で、https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100を開きページを少し下にスクロールし、「Obtain SSH Access using a Web Exploit」というセクションで「Using JavaScript in the web console」タブを表示します。そこにあるJavascriptコードをすべてコピーします。
このJavascriptを使う方法ではブラウザのURLから &stok=*****の文字列を取得・入力する必要はありません。
Redmi AC2100の管理画面を表示しているブラウザに戻ります。デベロッパーツールのコンソール画面にコピーしたJavascriptコードを貼り付けます。
ブラウザから警告と許可を求めるメッセージが出た場合は許可する方向でメッセージに従います。画像では、「貼り付けを許可」と入力するように求められるためそのように入力して[Enter]キーを押します。
貼り付けたコードが表示されます。この時点で貼り付けたコードが実行されていますが、コピペしたコードの最後の行「enableSSH();」の後に改行コードが付いていないためenableSSH();が実行されない状態で停まります。[Enter]キーを押してenableSSH();を実行します。ブラウザの上部にポップアップ小窓が出現し、「Input new SSH password」と表示されるので先程登録した管理者パスワード(上記の例では12345678を入力して「OK」をクリックします。
これで、これまで利用できなかったRedmi AC2100へのSSHログインが可能になります。
PCのターミナルを開き、ssh root@192.168.31.1 でRedmi AC2100にSSH接続します。
ただし、最近のOpenSSHではSHA-1ハッシュアルゴリズムを使用したRSA署名が無効になっているためエラーになることがあります。上の画像の上段では、「no matching host key type found. Their offer: ssh-rsa」と表示され接続に失敗しました。
ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedAlgorithms=+ssh-rsa root@192.168.31.1 のようにすることで回避できます。
パスワードを求められたら前述のパスワード(今回は12345678)を入力して[Enter]を押します。「ARE U OK」というASCII ARTが表示され、root@XiaoQiang:~# が表示されたらSSHログインに成功です。ここで、ターミナル画面は一旦このままにします。(次)
scp openwrt-23.05.3-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp
scp openwrt-23.05.3-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin root@192.168.31.1:/tmp
実行してみると、以下のようにエラーになります。
scp openwrt-23.05.4-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp
Unable to negotiate with 192.168.31.1 port 22: no matching host key type found. Their offer: ssh-rsa
scp: Connection closed
~/.ssh/configに以下の3行を追加します。Host old-host HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa
実行してみると、
$ scp openwrt-23.05.4-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp
ash: /usr/libexec/sftp-server: not found
scp: Connection closed
このようにエラーになることがあります。最近のscpはSFTPプロトコルを使うように変更されていて、Xiaomiのルーター側が対応していないためのようです。これは、-O(大文字のオー)オプションを追加することで対応可能です。
scp -O openwrt-23.05.4-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin root@192.168.31.1:/tmp
scp -O openwrt-23.05.4-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin root@192.168.31.1:/tmp
これでカーネルファイルとrootfsファイルがRedmi AC2100に転送されます。
前述のRedmi AC2100にSSH接続していたターミナルに戻ります。Redmi AC2100で5行のコマンドを実行します。(次)
nvram set uart_en=1 nvram set boot_wait=on nvram set bootdelay=5 nvram set flag_try_sys1_failed=1 nvram commit
/tmpディレクトリに先に転送したファームウエアの、カーネルファイルとrootfsファイルが存在することを確認します。
# cd /tmp # lsファイルリストが表示されるのでその中に openwrt-***-kernel1.bin と openwrt-***-rootfs0.bin が存在すれば問題ありません。
ファームウエアの2ファイルを展開して書き込みます。
# mtd write openwrt-23.05.4-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-kernel1.bin kernel1 # mtd -r write openwrt-23.05.4-ramips-mt7621-xiaomi_redmi-router-ac2100-squashfs-rootfs0.bin rootfs0
コマンド実行後に自動的に再起動するので再起動後安定するまで5分待つということになっています。
これで、Redmi AC2100ルーターへのOpenWRTファームウエアの書き込みは完了です。落ち着いて1つ1つの手順を確実に実行していけば、まったく難しいものではないことがわかりました。
次回は、OpenWRTでWi-Fiの設定を行いWi-Fiアクセスポイントにします。