Linksys E8450 への OpenWrt 導入で苦しんだ

## TL;DR

Linksys E8450 に OpenWrt 23.5.0x をインストールしたが正常に動作せず、対応方法を見つけられずに苦しんでいたが、[Installer 1.1.3](https://github.com/dangowrt/owrt-ubi-installer/releases/tag/v1.1.3) を導入した上で [OpenWrt 24.10.0-rc2](https://firmware-selector.openwrt.org/?version=24.10.0-rc2&target=mediatek%2Fmt7622&id=linksys_e8450-ubi) をインストールしたら解決した。🥳

:::note info  
2025/2/6 追記:

2025/2/6 にリリースされた [24.10.0](https://firmware-selector.openwrt.org/?version=24.10.0&target=mediatek%2Fmt7622&id=linksys_e8450-ubi) でも wireless device が正常に動作することを確認しました。🎉

もしアップグレード後に Wi-Fi を有効にできない場合は、一旦ルーターを再起動してください。  
:::

## どのようなトラブルが発生したか

OpenWrt をインストールした Linksys E8450 が 1 年以上 trouble-free で安定して動作しているので、追加で 1 台購入し、それにも OpenWrt をインストールした。🤩

結果、以下のような問題が発生した。😵‍💫

1. 5GHz の wireless device のドライバが load されないため、5GHz 帯が使えない
   ![Generic_unknown](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566576/04457f87-5888-92b6-a049-9afefd0dd3b3.png)
2. 再起動ごとに、wan ポートの MAC アドレスが変わる
3. `System running in recovery (initramfs) mode.` という表示が消えない
   ![System_running_in_recovery_mode](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/566576/b0b2b685-57df-dbb2-ed56-e3efc3971d7f.png)

## 5GHz wireless device driver への対応

### 1. 状況確認

[ここのアドバイス](https://github.com/openwrt/openwrt/issues/14207#issuecomment-1963086215)を参考にして、`dmesg | grep mt7915` を実行したところ、以下のような結果になった。  
👉 `mediatek/mt7915_eeprom.bin` が見つからないと言っている。🤔

```shell
root@OpenWrt:~# dmesg | grep mt7915
[    7.096443] mt7915e 0000:01:00.0: assign IRQ: got 146
[    7.101568] mt7915e 0000:01:00.0: enabling device (0000 -> 0002)
[    7.107694] mt7915e 0000:01:00.0: enabling bus mastering
[    7.331489] mt7915e 0000:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20220929104113a
[    7.491192] mt7915e 0000:01:00.0: WM Firmware Version: ____000000, Build Time: 20220929104145
[    7.546041] mt7915e 0000:01:00.0: WA Firmware Version: DEV_000000, Build Time: 20220929104205
[    7.662607] mt7915e 0000:01:00.0: eeprom load fail, use default bin
[    7.669081] mt7915e 0000:01:00.0: Direct firmware load for mediatek/mt7915_eeprom.bin failed with error -2
[    7.678756] mt7915e 0000:01:00.0: Falling back to sysfs fallback for: mediatek/mt7915_eeprom.bin
[    7.695690] mt7915e: probe of 0000:01:00.0 failed with error -12
```

### 2. ドライバのインストール

そこで以下のコードを実行して、 `mt7915_eeprom.bin` をインストールした。

```shell
opkg update
opkg install kmod-mt76
opkg install kmod-mt7915-firmware kmod-mt7915e

wget -O /tmp/mt7915_eeprom.bin \
  https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/mediatek/mt7915_eeprom.bin

mkdir -p /lib/firmware/mediatek/
cp /tmp/mt7915_eeprom.bin /lib/firmware/mediatek/

chmod 644 /lib/firmware/mediatek/mt7915_eeprom.bin
```

### 3. /etc/config/wireless の修正

wireless device driver をインストールしたら、次は `/etc/config/wireless` の `'radio1'` の部分を以下のように修正する必要がある。  
(👉 修正するのは、 `option path` 。)

```conf:/etc/config/wireless
config wifi-device 'radio1'
	option type 'mac80211'
	option path '1a143000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
	option cell_density '0'
	option country 'JP'
	option htmode 'HE40'
	option band '5g'
	option channel 'auto'
	option disabled '1'
```

どこから `'1a143000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'` が出てきたかは[ここ](https://github.com/openwrt/openwrt/issues/13701#issuecomment-1769311718)を参照。  
`cat /etc/board.json` を実行すると確認できる。

## それでも問題は解決しない 😵‍💫

1. 5GHz 帯は使えるようになったが、1 号機と比べると速度も安定性も劣る。  
   正常に動作していないことを痛感する。😵‍💫

2. wan ポートの MAC アドレスが、再起動ごとに変わることについては、同じ問題に遭遇している人を見つけることができなかった。😵

3. Linksys E8450 で `recovery mode` の表示が消えない件については、 Reddit の[ここ](https://www.reddit.com/r/openwrt/comments/10dx08g/linksys_e8450_flash_cant_get_past_recovery/)や[ここ](https://www.reddit.com/r/openwrt/comments/10teigd/belkin_rt3200_stuck_in_recovery_mode_and_wont/)にスレッドがあるが、AC アダプタを抜いて再度起動したら recovery mode から抜け出せた。  
   (背面の電源スイッチの On/Off ではダメだった。😵‍💫)

## Installer 1.1.3 と OpenWrt 24.10.0-rc2 で解決 🥳

何か解決方法がないか、OpenWrt.org の [Linksys E8450 ページ](https://openwrt.org/toh/linksys/e8450)を見ていると、OpenWrt 24.10 がリリース予定であることに気が付いた。

調べてみると確認時点で [OpenWrt 24.10.0-rc2 までリリースされている](https://openwrt.org/releases/24.10/start)。

それまでに週末と平日夜でかなり時間を費やしていたので、ダメもとで [Installer 1.1.3](https://github.com/dangowrt/owrt-ubi-installer/releases/tag/v1.1.3) と [OpenWrt 24.10.0-rc2](https://firmware-selector.openwrt.org/?version=24.10.0-rc2&target=mediatek%2Fmt7622&id=linksys_e8450-ubi) をインストールしてみたところ、今までの問題がすべて解決した。😮

> 👉 ちなみに Reddit の[この記事](https://www.reddit.com/r/openwrt/comments/1b9lpo6/rt3200_important_updateinfo/)によると、24.10.x にアップグレードした後、  
> `echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling\_governor` の実行が必要。  
> これを実行しないと消費電力が増えてしまうらしい。

なんにせよ、1 号機と同じ速度と安定性で、2 号機が使えるようになってとても嬉しい。🥳

## 参考ページ

https://openwrt.org/toh/linksys/e8450

https://github.com/openwrt/openwrt/issues/14207

https://github.com/openwrt/openwrt/issues/13701

https://www.reddit.com/r/openwrt/comments/1b9lpo6/rt3200_important_updateinfo/

https://www.reddit.com/r/openwrt/comments/10dx08g/linksys_e8450_flash_cant_get_past_recovery/

https://www.reddit.com/r/openwrt/comments/10teigd/belkin_rt3200_stuck_in_recovery_mode_and_wont/