WXR-1900DHPのOpenWrtのインストール

## はじめに

Buffalo社のルータ[WXR-1900DHP](https://www.buffalo.jp/product/detail/wxr-1900dhp.html)を安く手に入れたので
この機器をOpenWrt化するまでのやり方を備忘録を兼ねて記載します。

**2024年5月の最新ファームウェア(Ver2.51)**で、なおかつ**殻割りせず**に導入に成功していますので記事化します。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/a6c818bb-804b-8cf0-37ed-c919cef1bb14.jpeg">

※アンテナなしのせいかACアダプター付きで330円でした

## 背景

OpenWrtの公式サイトには[専用ページ](https://openwrt.org/toh/hwdata/buffalo/buffalo_wxr-1900dhp)があり、TRXファイルが置いてありますが、これのインストールをどう実施するかが問題になります。

![スクリーンショット 2024-05-27 20.34.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/b47aa3da-e96f-e4d7-1170-10d86514cc7e.png)


[DD-WRT OpenWrt 適材適所で両方使いたい人向け @ ウィキ](https://w.atwiki.jp/ddwrt_openwrt/pages/103.html)にも専用ページがあり、すでに色々試した方のサイトがあるのですが、ここで紹介されている方法は基本的にデバッグモード[^1]が必要です。

[^1]: ユーザ名：bufpy、パスワード：otdpopypasswordでログインするモード

例：[wxr1900dhpにOPENWRTを入れてみたときの失敗例と成功例](https://okoya.seesaa.net/article/465149182.html)

しかし、私が持っている機器はすでに最新ファームウェア（2024年5月現在だとver2.51）になっており、このバックドアは塞がれています。[^2]

[^2]: このバックドアはVer2.37で塞がれたようです

色々調査したところ[initramfs image](https://ux.getuploader.com/OpenWrt/download/10)を公開してくれている方がいました。
これを使ってNANDフラッシュに書き込みすることでOpenWrt化に成功したので、手順をここで公開します。

手順１　各種ファイルのダウンロードと配置
手順２　TFTPソフトのインストールと動作確認
手順３　initramfs image起動とバックアップ
手順４　ファームウェアの書き込み

:::note warn
この機種はBroadcomのWiFiチップを使用しており、OpenWrt化すると無線機能が使えなくなる可能性があります。
詳細は[公式の注意](https://openwrt.org/meta/infobox/broadcom_wifi)を参照ください。
:::


## 必要なもの

- PC（Windows）
- WXR-1900DHP（ファームウェアVer2.51）
- LANケーブル

## 手順１　各種ファイルのダウンロードと配置

### ファイルダウンロード

- initramfs image
[ここ](https://ux.getuploader.com/OpenWrt/download/10)からダウンロード[^3]
※作成してくださった有志の方、ありがとうございました

:::note info

もし他の人が配布したものを使用するのが不安な方は[公式Wiki](https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem)を参考に自分でビルドすると同じものが手に入ります。

`make menuconfig`の際に
- Target Systemは`Broadcom BCM47xx/53xx (ARM)`を選択
- Target Imagesは`ramdisk`を選択
- LuCIは1.Collectionsの`luci`を選択

すればOKです。

![スクリーンショット 2025-06-20 10.35.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/16b01298-02c2-4a68-b0c6-af158569029c.png)

こちらで試した時にはビルド完了に1〜2時間くらいかかりました。
initramfsは`openwrt/bin/targets/bcm53xx/generic`に置いてあります。
:::

- TFTPソフト
※今回は[TFTP64](https://pjo2.github.io/tftpd64/)を使いました
- trxファイル
※[OpenWrt公式サイト](https://openwrt.org/toh/hwdata/buffalo/buffalo_wxr-1900dhp)より「`openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx`」をダウンロード

[^3]: 中にはWXR-1900DHPの他にもWZR-600DHP2、WZR-900DHP、WZR-1750DHPのイメージも入っていました。

### ファイルの配置

WXR-19000DHPのinitramfs image(`openwrt-bcm53xx-generic-buffalo_wxr-1900dhp-initramfs-kernel.bin`)を`firmware.ram`に変更し、TFTPのトップディレクトリに配置します。
今回は`C:\ftpfiles`というディレクトリを作成し、そこに配置しました。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/b7fa917b-34a7-3582-9f3a-7fbd416f607e.png">


## TFTPソフトのインストールと動作確認

###  TFTPソフトのインストール

インストーラに従って[TFTP64](https://pjo2.github.io/tftpd64/)をインストールして下さい。
インストールの詳細は[ここ](https://infrastructure-engineer.com/tftp-server-windows-tftpd64-001/)見てもらえればと思います。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/eb5254c9-e148-6be4-2fd9-c6655d9dbb81.png">

### Windowsの諸設定

Windowsファイアウォールを無効化します。これをしないとTFTPの通信がWindowsファイアウォールで止められることがあるためです。

:::note warn
もしセキュリティソフトを入れている方は、その無効化も実施して下さい
:::


`コントロールパネル`＞`システムとセキュリティ`＞`WindowsDefenderファイアウォール`＞`Windows Defenderファイアウォールの有効化と無効化`
よりプライベートネットワークとパブリックネットワークの両方のファイアウォールを無効化します。

![windefend.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/00b2765c-66c2-2fee-0fc1-aa645a0093b5.png)

次にIPアドレス設定変更を行います。

`コントロールパネル`＞`ネットワークとインターネット`＞`ネットワークと共有センター`＞`アダプターの設定の変更`＞`イーサネット`＞`プロパティ`から
- IPアドレスを`192.168.11.2`
- サブネットマスクを`255.255.255.0`
- デフォルトゲートウェイを`192.168.11.1`
に設定します。（DNSサーバの設定を画像では入れていますが、なくても問題なし）

![ipaddress.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/e9d8703c-ca6a-1a06-2f2e-c5c8738959a7.png)

なお、このイーサネットの`プロパティ`はタスクバーの`インターネットアクセス`のアイコンから`アダプターのオプションを変更する`で飛ぶこともできます。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/effef5bc-3987-46cc-70f4-4e04d6633d18.png">


### TFTPソフトの設定

右クリックより`管理者として実行`して、各種設定をしていきます。

GLOBALタブは`TFTP Server`だけチェックがついていればOKです。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/4dda4812-fdf4-0975-7915-724a7177edef.png">


TFTPタブは画像のように設定して下さい。
- `Base Directory`を`firmware.ram`を置いたディレクトリに設定すること
- `Bind TFTP to this address`を`192.168.11.2`に設定すること
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/3ebfae6f-ec28-24ba-43a7-ef821ff96970.png">

設定後は`Browse`ボタンより`firmware.ram`がちゃんと見えるか確認しましょう。

<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/f06d2146-d2ab-1d2c-56c7-1db506a324b7.png">

また`Server interfaces`も`192.168.11.2`に変更します。

なお、この時に再起動するとエラー出ることがありますが、無視でOKです。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/c5521072-c269-8320-16b7-6483bf29e769.png">


### TFTPサーバの動作確認

TFTPサーバが問題なく起動しているか、動作確認する手順です。
TFTPサーバをよく使っている方、動作確認は不要な方は**飛ばしてもらって構いません**が、慣れてない人はここで問題なくTFTPサーバが起動できているか確認した方が良いと思います。

`コントロールパネル`＞`プログラムと機能`＞`Windowsの機能の有効化または無効化`
より`TFTPクライアント`にチェックをつけて下さい。

![tftp-enable.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/18b9c7bb-ab94-8b13-c2ce-aa691e1a47e8.png)

これによりTFTPの**クライアント機能**が有効化されます。

:::note warn
TFTPD64のソフトは**TFTPサーバ機能**なので別です
このソフトはTFTPクライアント機能も付いていますが、ここでは使いません
:::

次にIPアドレスの設定変更を実施します。
`Server interfaces`と`Bind TFTP to this address`を両方`127.0.0.1`に変更します。

コマンドプロンプトより`tftp 127.0.0.1 GET firmware.ram`を実行し、以下の画像のようにアクセスログがあること、正常にダウンロードできることを確認します。

![tftp-test.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/2503a5cf-8ce6-bf36-ca04-e48068289645.png)

TFTPサーバが問題なく動いているようであれば、`Server interfaces`と`Bind TFTP to this address`を両方`192.168.11.2`に変更しておきます。

## initramfs image起動とバックアップ

### イメージからの起動

今回実施するWXR-1900DHPのインストール方法は、Wikiでの「[外部サーバから受信する方法](https://w.atwiki.jp/ddwrt_openwrt/pages/119.html)」になります。
PCとLAN1をLANケーブルで繋いだあと、AOSSボタンを押しながら電源ONするだけで、TFTPクライアントが起動し、ファームウェアを取得しにきます。

画像のようにTFTPサーバにアクセスがあれば成功です。
失敗する場合は設定を見直しましょう。

![access.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/3e6cb49e-4f32-e826-997e-5b40a84b2060.png)

無事にTFTPサーバにアクセスがあった場合は、IPアドレスを`192.168.1.2`に変更します。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/4c1e015b-53b5-7d15-6726-b4dd4766e98c.png">


OpenWrt側は`192.168.1.1`になっているはずなので、ブラウザで`http://192.168.1.1`にログインします。
コマンドプロンプトより`ssh root@192.168.1.1`でもログインできるはずです。

![login.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/f680078b-40bb-3287-c8fe-e051cc787500.png)


### バックアップの取得

起動直後のパーティションは以下のような感じかと思います。

```
root@OpenWrt:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 03000000 00020000 "firmware"
mtd1: 001daba4 00020000 "linux"
mtd2: 02e25440 00020000 "rootfs"
mtd3: 01240000 00020000 "rootfs_data"
mtd4: 05000000 00020000 "failsafe"
mtd5: 00070000 00010000 "boot"
mtd6: 00010000 00010000 "nvram"
root@OpenWrt:~#
```

書き込みの前にバックアップを取得しましょう。
全パーティションを取得することをおすすめします。
取得はGUIで簡単にできます。

![スクリーンショット 2024-05-27 23.33.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/44874970-63a9-0b5e-0b80-d18c73f1c3db.png)


`dd`コマンドを使ってバックアップするでもOKです。

`dd`コマンドで/tmp配下にファイルを作成し、
コマンドプロンプトで`scp`コマンドよりコピーするだけです。

```
dd if=/dev/mtdblock1 of=/tmp/backup1.rom
```

```
scp root@192.168.1.1:/tmp/backup1.rom .
```


## ファームウェアの書き込み

ここからが本番です。

`scp`コマンドよりtrxファイルをルータに送ります。

```
C:\Users\Public\Downloads>scp openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx root@192.168.1.1:/tmp
openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx                                                           100% 7168KB  14.7MB/s   00:00

C:\Users\Public\Downloads>
```


`dd`コマンドを使って書き込みをします。
書き込み先はfirmwareである`mtd0`とfailsafeである`mtd4`です。

:::note 
追記
その後に別のBuffalo機種（WZR-S600DHP）で同様のコマンドを実施しインストールを試しましたが、failsafeへは書き込みしなくてもOpenWrtが起動しました。殻割りしてシリアルコンソールログを見るとfirmwareとfailsafeの比較をして、どちらの領域のファームを立ち上げるか検証しているようなので、この機種では両方の領域に書き込んだ方が良いとは思います。
:::

`mtd erase`はしなくても良いかもしれませんが、一応実施しておきました。

```

C:\Users\Public\Downloads>ssh root@192.168.1.1

BusyBox v1.33.2 (2022-03-26 20:26:07 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 21.02-SNAPSHOT, r0+16541-5cf00adf21
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~#
root@OpenWrt:~# mtd erase /dev/mtd0
Unlocking /dev/mtd0 ...
Erasing /dev/mtd0 ...
root@OpenWrt:~# mtd erase /dev/mtd4
Unlocking /dev/mtd4 ...
Erasing /dev/mtd4 ...
root@OpenWrt:~# dd if=/tmp/openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx of=/dev/mtdblock0
14336+0 records in
14336+0 records out
root@OpenWrt:~# dd if=/tmp/openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx of=/dev/mtdblock4
14336+0 records in
14336+0 records out
root@OpenWrt:~# reboot
root@OpenWrt:~# Connection to 192.168.1.1 closed by remote host.
Connection to 192.168.1.1 closed.

C:\Users\Public\Downloads>
```

以下に`mtd`コマンドのヘルプを置いておきます。
どういうコマンドなのか不安な人は確認して下さい。

<details ><summary>mtdコマンドのヘルプ(折りたたみ)</summary>


```
root@OpenWrt:~# mtd
Usage: mtd [<options> ...] <command> [<arguments> ...] <device>[:<device>...]

The device is in the format of mtdX (eg: mtd4) or its label.
mtd recognizes these commands:
        unlock                  unlock the device
        refresh                 refresh mtd partition
        erase                   erase all data on device
        verify <imagefile>|-    verify <imagefile> (use - for stdin) to device
        write <imagefile>|-     write <imagefile> (use - for stdin) to device
        jffs2write <file>       append <file> to the jffs2 partition on the device
        fixtrx                  fix the checksum in a trx header on first boot
        fixseama                fix the checksum in a seama header on first boot
Following options are available:
        -q                      quiet mode (once: no [w] on writing,
                                           twice: no status messages)
        -n                      write without first erasing the blocks
        -r                      reboot after successful command
        -f                      force write without trx checks
        -e <device>             erase <device> before executing the command
        -d <name>               directory for jffs2write, defaults to "tmp"
        -j <name>               integrate <file> into jffs2 data when writing an image
        -s <number>             skip the first n bytes when appending data to the jffs2 partiton, defaults to "0"
        -p <number>             write beginning at partition offset
        -l <length>             the length of data that we want to dump
        -o offset               offset of the image header in the partition(for fixtrx)
        -c datasize             amount of data to be used for checksum calculation (for fixtrx / fixseama / fixwrg / fixwrgg)

Example: To write linux.trx to mtd4 labeled as linux and reboot afterwards
         mtd -r write linux.trx linux

root@OpenWrt:~#
```

</details>

再起動してもOpenWrtが起動するようになれば**OpenWrt化は完了**です。

:::note info
追記
`dd`コマンドを使って`mtdblock`に書き込みする手順を記載しましたが、これを使用するのは非推奨のようです。詳細は[こちらの記事](https://qiita.com/9hnder/items/35e0cbfb3dc9828d8852#-%E3%81%8A%E3%81%BE%E3%81%91%E3%81%AE%E8%A3%9C%E8%B6%B3mtd%E5%91%A8%E3%82%8A%E3%81%AE%E4%BB%95%E6%A7%98%E7%89%B9%E3%81%AB-mtdblock-%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参照ください。

`mtd`コマンドを使って書き込む場合は以下になります。
```
mtd write /tmp/openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx firmware
mtd write /tmp/openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx failsafe
```

:::

ちなみに、GUIからの更新もあるのですが、trxファイルを指定しても普通のファームが上がってきてしまいます。これはうまくいかなかったということをここに書き残しておきます。

![flash.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/0b0d095f-d5d6-0104-3e1d-46c718311a36.png)


## (参考1) 初期化の方法

設定をミスってログインできなくなった場合のリカバリ方法です。
やり方としてはinitramfs imageで起動し、ファームウェアを再度`mtdblock0`に書き込むだけで初期化できます。

```
dd if=/tmp/openwrt-23.05.0-bcm53xx-generic-buffalo_wxr-1900dhp-squashfs.trx of=/dev/mtdblock0
```

ちなみに、OpenWrtの公式の機能として[Failsafe Mode](https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset)が存在し、これを使えば初期化をせずとも任意の設定を変えることができます。
しかし、こちらで試したところ、**うまくFailsafe Modeに入ることができません**でした。

起動時の電源ON時のランプを見ていると以下の順番でランプが点きます。
1. 4つのランプが全て点灯（一瞬）
2. POWERランプのみ点灯（10秒程度）
3. POWERランプのゆっくり点滅（3秒）
4. POWERランプの早め点滅（10秒程度）
5. POWERランプの点灯(=OpenWrt起動)

3番のPOWERランプゆっくり点灯時に物理ボタン[^4]を押すことでFailsafe Modeに入れるようなのですが、何度やってもダメでした。
有識者の方、コメントでご教授いただけると幸いです。

[^4]: WXR-1900DHPにはAOSSボタン、筐体下部のリセットボタン、USBイジェクトボタンの3つの物理ボタンがあるのですが、どれを押してもダメでした


:::note info
2025/5追記
項番2と3の間のPOWERランプが消えた時にAOSSボタンを連打することで、Failsafe modeに入れるとコメントでご連絡いただきました。筆者の筐体は何度やってもだめだったので、物理的に壊れていたか、どこかの設定（nvramあたり？）をいじりすぎておかしくなっていた可能性があります。
:::


## (参考2) nvramコマンドについて

`nvram`コマンドによりnvramの設定を書き換えることができます。
- 待受時間を変更(`nvram set wait_time=30`)
- 待ち受けるIPアドレスを変更(`nvram set lan_ipaddr=192.168.X.X`)
などなど。

あまり設定変更をし過ぎるとうまくTFTPクライアントが起動しなくなることがあります。TFTPD64にアクセスログが3回出るのですが、3回とも正常に読み込まずにTFTP通信が失敗するような形です。

そういう場合は同じように`dd`コマンドでバックアップしたファイルを書き込むと元に戻せます。
`dd if=/tmp/backup6.rom of=/dev/mtdblock6`

## (参考3) 公式ファームウェアへの戻し方について

書き込み前にバックアップを取っているので、`mtd`コマンドを使って元通りに書き込めば公式ファームウェアに戻ると思います。
ただ、文鎮化するのが怖いのであまり試していません。
（少なくとも`mtd0`に公式ファームウェアをそのまま書き込むだけでは、うまく起動しませんでした。この時もinitramfs imageにより復旧させました。）
できた人がいたら誰か記事化して下さい。

## (2025/5 追記) シリアル接続について

この記事を書いたあと、色々いじっていたらbrickしたので結局殻割りしてシリアル接続を試しました。

殻割りはマイナスドライバー等を使ってこじ開けました。破損無く開けるのは不可能だと思います。

開けると以下の感じです。

![IMG_5714.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/df4780fa-a044-4adb-860e-f26e35299479.jpeg)

![IMG_5715.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395943/71603396-99eb-4421-9262-f17d9fcb0ccf.jpeg)


家にラズパイ3Bがあったので、シリアル接続はそちらを利用し接続しています。（ラズパイの他にはジャンパ線も必要です）
ラズパイがない方は適当なUSB-シリアルケーブルを購入すれば良いと思います。

ラズパイでのシリアル接続方法ですが、簡単に書くと
・ラズパイのシリアルポートの有効化
・ボーレートなどの設定変更
・ピンの接続
になります。


| WXR-1900DHP | ラズパイ3B | 
|:----------:|:----------:|
| GND       | GND（6番PIN） |
| RX       | TX（8番PIN） |
| TX       | RX（10番PIN）|

接続方法の詳細は[Raspberry Piのシリアルポート設定（UART）を理解する](https://toki-blog.com/pi-serial/)をご確認ください。リンク先ではWindowsとラズパイを繋いでいますが、Windows側をWXR-1900DHPにするだけです。

実際に接続した時のログは以下です。

```
root@rasberrypi ~ % cat /dev/serial0

Digital core power voltage set to 1.0V
c_ddr_init: sdram_config=0x014b sdram_ncdl=0x00000320 sdram_refresh=0x0000081c


BUFFALO CFE Version 1.00  [DDRCLK:400]
Decompressing...Decompressing...done
Found a ST compatible (Marconix) serial flash with 16 64KB blocks; total size 1MB
et0: Broadcom BCM47XX 10/100/1000 Mbps Ethernet Controller 6.37.14.62 (r437318)
================================================================================
tmpr  current 36 (2b1)
tmpr  normal_thresh=98   bootable_thresh=115
current 36 < thresh 116,  booting FW...
================================================================================

DDR clock change and Calibrate... [400->800]
Digital core power voltage set to 1.0V
c_ddr_init: sdram_config=0x014b sdram_ncdl=0x00000320 sdram_refresh=0x0000081c

SHMOO VER 1.13

（以降略）
```

これを使えばTFTPのログも見えるため、トラブル時の原因調査が捗るかと思います。

<details ><summary>（参考）CFEで使えるコマンド群(折りたたみ)</summary>

```
CFE>
CFE> help
Available commands:

watchdog            Set watchdog value.
nvram               NVRAM utility.
reboot              Reboot.
test ether          Do an ethernet test, reading packets from the net
phyreg              Do an phy register test, read/write register
mii                 Do an mii register test, read/write register
et                  Broadcom Ethernet utility.
clearmem            Clear memory.
memtest             Test memory.
f                   Fill contents of memory.
e                   Modify contents of memory.
d                   Dump memory.
u                   Disassemble instructions.
flash               Update a flash memory device
batch               Load a batch file into memory and execute it
go                  Verify and boot OS image.
boot                Load an executable file into memory and execute it
load                Load an executable file into memory without executing it
save                Save a region of memory to a remote file via TFTP
ping                Ping a remote IP host.
arp                 Display or modify the ARP Table
ifconfig            Configure the Ethernet interface
show clocks         Show current values of the clocks.
show flash          Display information about a flash device.
show heap           Display information about CFE's heap
show memory         Display the system physical memory map.
show devices        Display information about the installed devices.
help                Obtain help for CFE commands

For more information about a command, enter 'help command-name'
*** command status = 0
CFE>
```

</details>

なお、写真を貼ったようにこの機種は1Gbit(=128MB)のNANDフラッシュメモリ（MX30LF1G08AA-TI）を使っているため、誤操作でbootloaderごと破壊してしまった時の復旧はかなり絶望的かと思います。もしできた方がいたら記事化してください。

（参考）　[インストール方法概説（ウィキ）](https://w.atwiki.jp/ddwrt_openwrt/pages/119.html)の「基板上のflashメモリに直接書き込む」部分

### 終わりに

330円でLinuxサーバが手に入ると思ったらかなりお買い得かと思います。
皆さんも良いOpenWrtハックを。

### そのほかの参考サイト

記事内でリンクしていないけど参考にしたサイトをここに記載しておきます。

[5chのWXR-1900DHPの記事1](https://mao.5ch.net/test/read.cgi/network/1648991070/) ※ここでinitramfs imageを見つけました
[5chのWXR-1900DHPの記事2](https://mao.5ch.net/test/read.cgi/network/1601214762/93-n?v=pc) ※同じように OpenWrt化できなくて困っていた人のコメあり
[DD-WRTまとめwiki](https://w.atwiki.jp/ddwrt/)
[WXR-1900DHP2 への OpenWrt / DD-WRT のインストールメモ](https://qiita.com/9hnder/items/717acf01f8faff0072a6) ※後継機種のインストール手順で、こちらも十分参考になるかと思います