OpenWrt WSR-6000AX8

:warning:Japanese notation
![OpenWrt_icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/00cb7976-bf5f-1c85-4544-6cbbc043b497.png)

# はじめに
::: note
### 初心者対応構成
- Windowsからの導入手順
- スクリプトでの自動設定
- [UCI (ttyd)](https://openwrt.org/docs/guide-user/base-system/uci)、[Webコンソール (LuCi)](https://openwrt.org/docs/guide-user/luci/start)、[ファイラー (SFTP)](https://openwrt.org/docs/guide-user/services/nas/sftp.server)にて比較作業がおススメ:exclamation:
:::

::: note
### デバイスアクセス
#### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)の開始
- キー入力：**`Win`+`x` > `a` > `はい`**

#### [UCI（SSH）アクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)
```powershell:powershell:初期設定用
ssh -o StrictHostKeyChecking=no root@192.168.1.1
```
- root@192.168.1.1's password:`初期値：パスワード無し`

<details><summary>OpenSSHのインストールが無い場合:exclamation:</summary>

- 機能の確認
※Windows 10 Fall Creators Update(1709)以降標準搭載
```powershell:powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
```
- 機能のインストール
```powershell:powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
```
---

:::

::: note
### 掲示板
バージョン23.05.3対応済み
※未検証（保守のみ）

:::

:::note alert
### 既知の問題
- **非公式ファームウェア**
- [Buffalo WSR-6000AX8 のサポートを追加 #13107](https://github.com/openwrt/openwrt/pull/13107)
公式とバージョンは同じでも非公式ファームウェアなので本家には無い不具合が発生するかもしれません
- [MT7981及びMT7986ではCPU周波数スケーリングはサポートされていません](https://forum.openwrt.org/t/openwrt-support-for-banana-pi-bpi-r3/154294/98)
- WiFiアップロードで通信途絶
  - [最高速度でダウンロードしようとすると接続が切断される](https://forum.banana-pi.org/t/bpr3-loses-connection-after-trying-to-download-anything-at-max-speed/15834)
  - [Mt798x-wmac 18000000.wifi: Message xxxxxxxx (seq 5)](https://forum.openwrt.org/t/mt798x-wmac-18000000-wifi-message-xxxxxxxx-seq-5-timeout/175163/2)
:::

# ファームウェアについて
:::note
### [OpenWrt Project へようこそ](https://openwrt.org/start)
![320.logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/b680feca-c6f1-4b68-4516-7001887217f7.png)
- [The UCI system](https://openwrt.org/docs/guide-user/base-system/uci)
![uci.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/a670c6de-3571-1c89-e3de-535623be130d.png)
- [LuCI web interface](https://openwrt.org/docs/guide-user/luci/start)
![WSR-6000AX8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/2dea4846-aeb8-fec6-5d95-aaa215f7bdcf.png)

- [23.05系列 非公式ファームウェア (Buffalo WSR-6000AX8など)](https://qiita.com/ssyysy2021/items/f510f1f8cd34ec987586)
- [非公式ビルドファームウェア、パッチ](https://github.com/ssyysy2021/openwrt_files/tree/main)
- [インストール方法](https://github.com/ssyysy2021/openwrt_files/tree/main/openwrt-23.05.3_bin/buffalo_wsr-6000ax8)

:::

# デバイスについて
:::note
### WSR-6000AX8ラインナップ
- 型番について
  末尾なし：通常型番
  [/D] : 特定販売店向け@通常型番と同等品
  [/N] : アマゾン向け@通常型番と同等品
- [WSR-6000AX8-MB](https://www.buffalo.jp/product/detail/wsr-6000ax8-mb.html)
![WSR-6000AX8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/cf624acd-598b-84ad-15b2-7ac0080aeb9b.png)
- [WSR-6000AX8-CG](https://www.buffalo.jp/product/detail/wsr-6000ax8-cg.html)
![WSR-6000AX8-CG__0101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/6bdbaa14-cb1c-758d-8e95-4d9f67f7bb4c.png)

- ハードウェア仕様
ARMv8 Cortex-A53 (64-bit)
  - CPU          : 1.6 GHz ×4
  - RAM          :  512 MB
  - Flash Memory :  128 MB
  - WiFi         : 6 (ax)
  - Ethernet     : 2.5 Gbps x1 / 1 Gbps x3
  - USB          : -
  - Power        : DC 12 V / 2 A
- [MediaTek MT7986B](https://www.mediatek.jp/products/home-networking/mediatek-filogic-830)
:::

# [OpenWrt化手順：Flash instruction using initramfs image: ](https://github.com/ssyysy2021/openwrt_files/tree/main/openwrt-23.05.0-rc1_bin/buffalo_wsr-6000ax8#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%96%B9%E6%B3%95)
::: note
### 事前準備
- スクリプト: [buffalo](https://github.com/site-u2023/buffalo/tree/main)
- ディレクトリ: `C:\openwrt`

`警告` > `強制的に貼り付け`
```powershell:powershell
Set-ExecutionPolicy Unrestricted
New-Item C:\openwrt -ItemType Directory -Force 
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/site-u2023/buffalo/main/wsr-6000ax8.ps1" -OutFile "C:\openwrt\wsr-6000ax8.ps1"
C:\openwrt\wsr-6000ax8.ps1

```
:::
::: note alert
デバイスをインターネット回線から物理的切断（ONU・HGWからLAN線を外す）
:::
:::note
### 1. TFTPサーバーを立てる (192.168.11.2/24)

```powershell:powershell: 192.168.11.10
C:\openwrt\ip\192-168-11-10.ps1

```

```powershell:powershell
& "C:\openwrt\Serva\Serva64.exe"

```
Servaが起動
- `I'm a "Community" user`を選択
  - 7 Secs待つ
    - `許可`

※IPアドレス拾わない場合、ストックファームウェアのデバイスを起動し安定させてから、Servaを起動させる
:::

:::note
### 2. TFTPサーバーのトップディレクトリに ??-initramfs-kernel.bin を linux.ubi-recovery として置く

:::

:::note
### 3. AOSSボタンを押しながらルーターの電源を接続し、TFTPダウンロードが開始されるまで押したままにする
デバイス(WSR-6000AX8)のAOSSボタンを押しながら電源に接続
TFTPダウンロードが開始されるまで**押したまま**にする
※10数秒程度でログが出る
- 以下2行のログを確認しServaを閉じる
  - `[**/** **:**:**.***] TFTP Inf: Read file <linux.ubi-recovery>. Mode octet`
  - `[**/** **:**:**.***] TFTP Inf: <linux.ubi-recovery>: sent blks=5393 blkSz=1468, Total 7916412 bytes in 2s, err recovery=0 `
- ルーターが自動で再起動
:::
::: note warn
<details><summary>※うまくいかない場合、以下からServaを起動させ再度実行</summary>

```powershell:powershell
& "C:\openwrt\Serva\Serva64.exe"

```

- `I am"Community" user`を選択
- `左上アイコン`をダブルクリック
- `TFTP`タブを選択
  - Service Up/Down
     - `TFTP Server`にチェック
  - THTP Server IP address 
    - `192.168.11.10`になっている事を確認
  - THTP Server root directory
    - `Browse`をクリック
      `C:\openwrt\tftpdroot\linux.ubi-recovery`を指定
      - `Select`をクリック
  - `OK`をクリック

</details>
:::
:::note
### 4. TFTPダウンロードが終了するとカーネルが起動するので 192.168.1.x/24 のマシンからSCPで ??-squashfs-sysupgrade.bin をターゲット(root@192.168.1.1:/tmp)にコピーする

```powershell:powershell: 192.168.1.2
C:\openwrt\ip\192-168-1-2.ps1

```

```powershell:powershell
scp -r C:\openwrt\buffalo\openwrt-mediatek-filogic-buffalo_wsr-6000ax8-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/openwrt-mediatek-filogic-buffalo_wsr-6000ax8-squashfs-sysupgrade.bin

```
:::

:::note
### 5. SSHで root@192.168.1.1 にログインする
```powershell:powershell
ssh -o StrictHostKeyChecking=no root@192.168.1.1

```

:::

:::note warn

### 公開されているメーカーファームウェアを使用して元のファームウェアに戻すことが可能になったのでバックアップは必須ではなくなった

<details><summary>6. 後でメーカーファームウェアに戻したい場合はここで ubi パーティション(/dev/mtd5) のバックアップを取る (取得後ルーター外に転送するのを忘れずに)</summary>

- tmpフォルダで作業
```bash
cat /proc/mtd # 確認
dd if=/dev/mtd5 of=/tmp/mtd5.firmware

```
Windowsのダウンロードフォルダにファイルを保存
- TeraTerm
  - ファイル
    - CCH SCP
    - 点線の下段
      From:`/tmp/mtd5.firmware`
      To:`C:\Users\%username%\Downloads`
    - Receive
※ ダウンロードフォルダに格納
</details>
:::

:::note alert
 **絶対に電源は抜かない事**
:::
::: note
### 7. sysupgrade -n /tmp/??-squashfs-sysupgrade.bin を実行する (自動で再起動する)

```powershell:SSH
sysupgrade /tmp/openwrt-mediatek-filogic-buffalo_wsr-6000ax8-squashfs-sysupgrade.bin

```
- SSHが自動終了
- LEDが消灯し、ルーターが再起動
:::

::: note
### 8. あとはお好きにどうぞ
- **OpenWrt化完了**
:::

::: note alert
デバイスをインターネット回線に物理的接続（ONU・HGWからLAN線に繋ぐ）
:::

::: note
### クライアントPCをDHCPにする

```powershell:powershell: DHCP
C:\openwrt\ip\dhcp.ps1
Set-ExecutionPolicy Restricted

```
:::

# [新規設定用 オールインワンスクリプト 初心者対応](https://qiita.com/site_u/items/c6a50aa6dea965b5a774)
::: note
### [スクリプトセレクター](https://qiita.com/site_u/items/c6a50aa6dea965b5a774#%E6%96%B0%E8%A6%8F%E8%A8%AD%E5%AE%9A%E7%94%A8-%E3%82%AA%E3%83%BC%E3%83%AB%E3%82%A4%E3%83%B3%E3%83%AF%E3%83%B3%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88-%E5%88%9D%E5%BF%83%E8%80%85%E5%AF%BE%E5%BF%9C)

![config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/ebcf1227-8809-3fad-ba47-5e44a04ccac6.png)

:::

## デバイス更新
:::note alert
### アップグレード
[ダウンロードサイト](https://github.com/ssyysy2021/openwrt_files/tree/main/openwrt-23.05.3_bin/buffalo_wsr-6000ax8)
- SYSUPGRADE
```bash:ダウンロードしたファイル名に合わせリネーム
--

```
:::

# メーカーファームウェアの復元方法
:::note warn


### 事前準備
以下をダウンロード
- [WSR-6000AX8シリーズ ファームウェア (Windows) Ver.1.02](https://www.buffalo.jp/support/download/detail/?dl_contents_id=62385)
※所定のダウンロードフォルダ（.\Downloads\wsr6000ax8-102.exe）に保存必須

### メーカーファームウェアを buffalo-enc で復号し `sysupgrade -F -n` で書き込む
`警告` > `強制的に貼り付け`

```powershell:powershell
& ".\Downloads\wsr6000ax8-102.exe"
New-Item C:\openwrt\ -ItemType Directory -Force
Invoke-WebRequest -Uri "https://github.com/musashino205/firmware-wintools/releases/download/0.6.5.2/firmware-wintools_0.6.5.2.zip" -OutFile "C:\openwrt\firmware-wintools.zip"
Expand-Archive -Path C:\openwrt\firmware-wintools.zip -DestinationPath C:\openwrt\ -Force
Remove-item C:\openwrt\firmware-wintools.zip
C:\openwrt\firmware-wintools\firmware-wintools.exe buffalo-enc -i C:\BUFFALO\wsr6000ax8-102\wsr_6000ax8_jp_102 -o C:\BUFFALO\wsr6000ax8-102\wsr_6000ax8_jp_102.bin \ -d -k Buffalo -O 0xc8 -l
scp -r C:\BUFFALO\wsr6000ax8-102\wsr_6000ax8_jp_102.bin root@192.168.1.1:/tmp/wsr_6000ax8_jp_102.bin

```
![wsr-6000ax8_複合化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/eff8d672-1e3b-3f47-9c10-69af0192fbe4.png)

```powershell:powershell
ssh root@192.168.1.1

```
`yes`

<details><summary>※SSHログイン出来ない場合、以下を削除（隠しファイル）</summary>

`C:\Users\yourusername\.ssh\known_hosts`

```powershell:powershell
Clear-Content .ssh\known_hosts -Force

```
---
</details>

- 確認
```sh:SSH
hexdump -n 64 -v -C /tmp/wsr_6000ax8_jp_102.bin

```
![wxr-6000ax8_after_bin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/d454f7dd-d8aa-8802-7b0a-f488c9d01e05.png)

- メーカーファームウェア復元
```sh:SSH
sysupgrade -F -n /tmp/wsr_6000ax8_jp_102.bin

```

- 自動再起動
:::

::: note alert
 **絶対に電源は抜かない事**
:::

:::  note
### 数分待つ
- [`192.168.11.1`](http://192.168.11.1/)でログイン
:::

# あとがき
令和5年7月現在、デバイスは中古市場ではまだまだ高い
安く手に入ったので検証してみました

WiFiでベンチマークするとアップロードでネットワークが落ちる、が自動復旧する
この辺がヒントか

IPV6（OCNバーチャルコネクトの為V4はmapでファイアーウォールを使う）は800超えてもCPU負荷無し
※ハードウェア フローオフロード要チェック
NIC接続はWXR-5950AX12より速い（WiFi接続は同等）

書き換えなくても、まんまsysupgradeだった
再起動したらストックファーム
チョー簡単でした
感謝です

# 参考資料（感謝:relaxed:）