Redmi路由器 AC2100にOpenWRTをインストールする

3Redmi路由器 AC2100にOpenWRTをインストールする

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にOpenWRTをインストールする 1
Redmi AC2100の背面です。今回は設定用PCやLANとの接続はすべて右側3つのLAN1〜LAN3を使用します。WANポートは使用しません。

Redmi路由器 AC2100にOpenWRTをインストールする 2
ブラウザで https://openwrt.org/toh/xiaomi/xiaomi_redmi_router_ac2100 を開き、ファームウエアのファイル2つをダウンロードします。2つのファイルのどちらかを選択するのではなく、カーネルファイルとfootfsファイルの両方が必要です。なお、ページを開くのには時間がかかることがあります。また、Redmi AC2100のファームウエアの対応バージョンを確認し、Redmi AC2100のXiaomi純正ファームウエアのバージョンが合わないなら純正ファームウエアを新しいバージョンに更新するか、必要に応じて古いバージョンにロールバックします。(ファームウエアの確認/更新/ロールバックについては手順/画像はありません)

Redmi路由器 AC2100にOpenWRTをインストールする 3
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を開きます。上の画像のような表示が出ればここまで間違っていません。
「马上体验」(今すぐ試してください)というボタンをクリックします。

Redmi路由器 AC2100にOpenWRTをインストールする 4
Wi-Fiの設定画面が表示されます。上の画像ではSSIDが「Redmi_A205」です。今回はWi-Fiを使わないため変更不要です。その下に新しいWi-FiのPSK(パスワード)を入力します。ここで入力したパスワードがルーターの管理者パスワード(仮)にもなります。今回は「12345678」のような簡単なものにするのが無難です。
画面下部の「下一歩」をクリックします。

Redmi路由器 AC2100にOpenWRTをインストールする 5
2.4GHz帯と5GHz帯のそれぞれでSSIDとPSKが表示されます。この画面はこれで行き止まりです。(次)

Redmi路由器 AC2100にOpenWRTをインストールする 6
PCのブラウザで192.168.31.1にアクセスし直します。
Redmi AC2100(Xiaomiの中国語版共通)のログイン画面が表示されるので先に登録したWi-FiのPSKを入力します。先程「12345678」を登録したならそれです。

Redmi路由器 AC2100にOpenWRTをインストールする 7
Redmi AC2100の管理画面が表示されます。その状態で[F12]キーを押して、ブラウザのデベロッパーツールを表示します。画像はChromeブラウザです。デベロッパーツールの「コンソール」タブを選択します。このブラウザ画面はこのまま閉じません。

Redmi路由器 AC2100にOpenWRTをインストールする 8
別のブラウザ画面で、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にOpenWRTをインストールする 9
Redmi AC2100の管理画面を表示しているブラウザに戻ります。デベロッパーツールのコンソール画面にコピーしたJavascriptコードを貼り付けます。
ブラウザから警告と許可を求めるメッセージが出た場合は許可する方向でメッセージに従います。画像では、「貼り付けを許可」と入力するように求められるためそのように入力して[Enter]キーを押します。

Redmi路由器 AC2100にOpenWRTをインストールする 10
貼り付けたコードが表示されます。この時点で貼り付けたコードが実行されていますが、コピペしたコードの最後の行「enableSSH();」の後に改行コードが付いていないためenableSSH();が実行されない状態で停まります。[Enter]キーを押してenableSSH();を実行します。ブラウザの上部にポップアップ小窓が出現し、「Input new SSH password」と表示されるので先程登録した管理者パスワード(上記の例では12345678を入力して「OK」をクリックします。
これで、これまで利用できなかったRedmi AC2100へのSSHログインが可能になります。

Redmi路由器 AC2100にOpenWRTをインストールする 11
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でファームウエアファイルをRedmi AC2100に転送します。scpなので、内部的にOpenSSHを使用します。つまり、1つ前の手順と同じくSHA-1ハッシュアルゴリズム云々が影響します。OpenWRTのドキュメントでは以下のようになっていますが、これはそのままでは機能しないことがあります。(ドキュメントではファイルのバージョンも違います)
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

Redmi路由器 AC2100にOpenWRTをインストールする 12
実行してみると、

$ 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にOpenWRTをインストールする 13
前述の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.binopenwrt-***-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アクセスポイントにします。

関連記事:

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編

30年前のPC-9801を実用を目指して蘇らせる - OS/2インストール 失敗編

まず結論として、ヤフオクで購入したPC-9801FAにOS/2 Warpをインストールすることは失敗に終わりました。これは、OS/2 Warp V3の動作対象となるハードウェア要件を満たしていなかったためです。OS/2 Warp V3の対象機種は、i486SX以上のプロセッサを搭載したデスクトップ(MATE、Fellow、FINE、CanBe)、ラップトップ(PC-9821Ts)、サーバー(SV-98シリーズ)、PCMCIA2.1に対応し256色表示可能なノートPCとされており、PC-9801シリーズのうちMATE/Fellow以前のPC9801型番シリーズのPC-9801FAは対象機種に含まれていません。そのため、OS/2 WarpがPC-9801FAで動作することは期待薄でした。

OS/2 Warp V3の動作には5.6MB以上のメモリが必要とされています。また、OS/2のファイルシステムであるHPFSを使用する場合、6.6MB以上のメモリが必要で、8MB以上が推奨されています。今回使用するPC-9801FAは13MBに拡張済みなので、この要件をクリアしています。

インストールメディアはフロッピーディスクとCD-ROMの組み合わせで提供されています。したがって、CD-ROMドライブが必須です。PC-9801FAにはCD-ROMドライブが搭載されていませんが、SCSI接続のCD-ROMドライブを所有していたため、この点については問題ありませんでした。なお、CD-ROMからイメージファイルを作成し、BlueSCSIを使用してイメージファイルを仮想CD-ROMドライブとして対応させる方法も可能です。

ハードディスク容量については、最低50MBが必要で、推奨容量は140MB以上となっています。今回はBlueSCSIとSDカードを使用して2GBの仮想ハードディスクを用意し、OS/2用には十分すぎるストレージを確保しました。

事前に入手していた情報によると、OS/2のPC-98向けには非常に厳しいハードウェア要件があり、サードパーティ製の拡張ボードに対するサポートがほとんどないため、基本的に純正構成でなければ動作が難しいことが示唆されていました。したがって、OS/2 Warp V3の対応機種にPC-9801FAが含まれていたとしてもサードパーティのグラフィックアクセラレータカードやハードディスクインターフェースを使用すると動作しない可能性が高かったでしょう。

OS/2は、MicrosoftとIBMにより共同で開発され、MS-DOSの次の世代のOSとして誕生しました。OS/2 Warpは、OS/2のVersion 3以降にあたり、IBMが主体となって開発を進めたシリーズです。OS/2の大きな特徴は、MS-DOSやWindows 3.0、Windows 3.1アプリケーションをマルチタスク環境で安定して動作させる点にあります。(Windowsアプリケーションの動作はWIN-OS/2対応バリアントに限ります) これは、当時としては非常に革新的なもので、MicrosoftのWindowsシステムよりもはるかに高い安定性を提供していました。

OS/2 Warpの競合OSとしては、MicrosoftがIBMとの提携を解消し、自社で開発したWindows NTシリーズ (NT 3.1、3.5、3.51など) がありました。しかし、当時のWindows NTはハードウェア要件が高く、対応アプリケーションも少なく、さらに動作が重く不安定な側面がありました。そのため、軽快さと安定性を求めるユーザーは、高性能なマルチタスクと安定性を提供するOS/2 Warpに魅力を感じていました。なお、コンシューマー市場で圧倒的な支持を得ていたのは、低スペックのPCでも動作可能なMicrosoft Windows 3.1やWindows 95です。(ビジネスユーザーを除きます)

「がとらぼ」の人は、当時Windows 3.1の不安定さに不満を感じ、IBM互換機でOS/2 V2.11およびOS/2 Warp V3を使用していました。サーバー用OSにはFreeBSD 2.0.5以降を採用し、パーソナル用途にはSolarisやWindows NT 4.0を使用するようになりました。Windows NTはバージョン3.5から導入していましたが、当時は対応ソフトウェアが限られていたため、あまり活用していませんでした。

OS/2 Warp Version 3のインストール

OS/2 Warp Version 3のインストールメディアは、フロッピーディスク2枚とインストールCD1枚で構成されており、これを使ってインストールを行います。
まず、インストールCDをPCのCD-ROMドライブにセットし準備します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 1
次に、「インストールディスク」をフロッピーディスクドライブに挿入し、PC-9801を起動します。画面左上に「OS/2」の表示が出た状態がしばらく続き、ディスクの読み込みが行われます。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 2
読み込みが完了すると、この画面が表示されます。メッセージに従い「インストールディスク」を取り出し、代わりに「ディスク1」を挿入してから[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 3
今度は少しグラフィカルな画面で暫く待たされます。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 4
青い背景の画面が表示され、「1. 基本インストール」と「2. 拡張インストール」のどちらかを選択するよう指示されます。OS/2だけを1台のハードディスクにインストールする場合は「基本インストール」で十分ですが、他の条件がある場合には「拡張インストール」を選ぶのが適しています。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 5
「インストール・ドライブの選択」画面に移行します。この画面では「1. このドライブをそのまま受け入れる」か「2. 異なるドライブまたはパーティションを指定する」かの選択を求められます。「このドライブをそのまま受け入れる」という選択肢は、既にOS/2用パーティションが設定されている場合に選ぶものです。ここでは「2. 異なるドライブまたはパーティションを指定する」を選択し、[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 6
「拡張インストール領域設定画面」が表示されます。
この画面では、接続されている複数のハードディスクが一覧表示されており、インストールするディスクを矢印キーで選択し、[Return]キーを押して決定します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 7
「ディスク全体を初期化します」というメッセージが表示されます。ディスク全体ではなく一部の領域でOS/2を使用したい方を悩ませるメッセージですが、他に進む手段がないため[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 8
OS/2用の領域の設定画面が表示されます。
まず「ファイルシステム」を選択します。「FAT」はMS-DOSと同じファイルシステムであり、「HPFS」はOS/2専用のファイルシステムです。OS/2の機能を最大限に活かすためには「HPFS」を選ぶのが良いでしょう。
矢印キーの左右でファイルシステムの種類を選択して[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 9
OS/2に割り当てるディスク容量を指定します。
この画面では、矢印キーで項目を移動し、「確保容量」の項目で容量をメガバイト(MB)単位で指定します。HPFSの最大容量は理論上2TBですが、古いPC環境では16GB以下、特にPC-98環境では4GB以内が無難でしょう。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 10
矢印キーの上下で項目を移動します。「実行」にフォーカスして[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 11
領域作成が完了するとターコイズブルーの背景に黄色という識別しにくい色の組み合わせでメッセージが表示されます。
「ディスク1」のフロッピーディスクを取り出し、「インストールディスク」を挿入して、[Return]キーを押します。

システムが再起動します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 2
読み込みが完了すると、この画面が表示されます。
メッセージに従い「インストールディスク」を取り出し、代わりに「ディスク1」を挿入してから[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 3
今度は少しグラフィカルな画面で暫く待たされます。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 12
既にパーティション設定を行っているので、今回は「1. このドライブをそのまま受け入れる」を選択して[Return]キーを押します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 13
「起動ドライブ名の選択」画面です。
フロッピーディスクがA、Bドライブ、1台目のハードディスクがCドライブになるように設定する場合、「2. はい」を選びます。これはIBM PS/2, AT互換機のDOS,Windowsと同じドライブの並びです。
PC-98+DOSの伝統では、1台目のハードディスクがAドライブになるため、それに慣れている方は「1. いいえ」を選ぶと良いでしょう。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 14
ハードディスクに設定したOS/2用パーティションのフォーマットが行われます。操作はないので待つだけです。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 15
続いてCD-ROMから必要なファイルがハードディスクに転送されます。この処理には10分程度かかります。進行状況はプログレスバーで表示されます。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 16
ファイルの転送が完了すると、フロッピーディスクの取り出しを指示されるため、フロッピーディスクを抜き、[Return]キーを押します。
システムが再起動します。

30年前のPC-9801を蘇らせる - OS/2インストール 失敗編 17
ここで本来であればOSの起動選択画面が表示されるかOS/2が立ち上がり初期設定が始まるはずですが、実際には黒画面のまま何も表示されず、OSの選択メニューも現れずインストール済みの他のOSも起動しません。結果として、OS/2 Warp V3のインストールはここで失敗に終わります。

OS/2をインストールしたハードディスクを取り外すと(BlueSCSIのSDカードからOS/2をインストールした仮想ハードディスクイメージファイルを削除すると)、以前と同様にOSの選択起動メニューが正常に表示され、選択したOSが正しく起動します。したがって、OS/2をインストールしたことにより他のOSが使用不能になり再インストールしなければならないといった事態は発生しないようです。
OS/2が起動しなかった原因は、PC-9801FAがIDEドライブをサポートせず、使用しているSCSIインターフェースがOS/2のサポート外であった可能性が高そうです。

関連記事:
Up