OpenWrt ELECOM WRH-300CR

:flag_jp: Japanese notation

![OpenWrt_icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/cc2e83af-44dd-e98a-97c2-36e53597df85.png)

# はじめに
::: note
### 初心者対応構成
- スクリプトでの自動設定
- [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
### 検証環境
- Windows11 バージョン24H2
:::

::: note
### トピック
<details><summary>SDカードスロット</summary>

---

</details>

<details><summary>USB</summary>

---

</details>
:::

# デバイス
:::note
### ELECOM WRH-300CR

<details><summary>デバイスホームページ</summary>

[WRH-300CRBK](https://www.elecom.co.jp/products/WRH-300CRBK.html)

[WRH-300CRWH](https://www.elecom.co.jp/products/WRH-300CRWH.html)

---

</details>

:::

# OpenWrt
:::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)

<details><summary>仕様</summary>

[Techdata](https://openwrt.org/toh/hwdata/elecom/elecom_wrh-300cr)

---

</details>

<details><summary>The UCI system</summary>

---
</details>

<details><summary>LuCI web interface</summary>

![WHR-300CR.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/9b557389-d611-4b3c-8078-650e95477ae1.png)

---
</details>

:::

# インストール
::: note
### ファームウェア


[デバイス用のOpenWrtファームウェアをダウンロード](https://firmware-selector.openwrt.org/?version=24.10.1&target=ramips%2Fmt7620&id=elecom_wrh-300cr)

イメージのダウンロード > **FACTORY** をダウンロード

インストールされたパッケージ、初回起動時のスクリプトのカスタマイズ

<details><summary>インストールされたパッケージ</summary>


リリースビルド
```
base-files ca-bundle dnsmasq dropbear firewall4 fstools kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload kmod-rt2800-soc libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only opkg ppp ppp-mod-pppoe procd-ujail swconfig uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-usb2 kmod-usb-ohci luci
```
"snapshot" ビルド
```
apk-mbedtls base-files ca-bundle dnsmasq dropbear firewall4 fstools kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload kmod-rt2800-soc libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail swconfig uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-usb2 kmod-usb-ohci luci
```

---
</details>

<details><summary>初回起動時に実行されるスクリプト (uci-defaults)</summary>

```

```
---
</details>

### 管理画面
<details><summary>フラッシュ</summary>

http://192.168.2.1
ファームウェアの更新からFACTORY.binをフラッシュ

---
</details>
:::

::: note
### all in one scripts
![aios.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/69e87faf-fb43-4c0f-b523-00fe1b2c9809.png)
- [GitHub](https://github.com/site-u2023/aios)
- [Qiita](https://qiita.com/site_u/items/bd331296ce535ed7a69e)
- [旧板](https://qiita.com/site_u/items/c6a50aa6dea965b5a774)
:::

# デバイスアクセス
::: note
### デバイスアクセス（UCI）
<details><summary>パワーシェルでアクセス</summary>

#### [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 -oHostKeyAlgorithms=+ssh-rsa root@192.168.1.1
```
- root@192.168.1.1's password:`初期値：パスワード無し`

<details><summary>SSHログイン出来ない場合:exclamation:</summary>

  - `%USERPROFILE%\.ssh\known_hosts` ※Windows隠しファイル
```powershell:powershell
Clear-Content .ssh\known_hosts -Force 
```

</details>

<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
```
---

</details>
:::

::: note
### [LuCi](https://openwrt.org/jp/doc/howto/firstlogin#login_to_webui)

<details><summary>ブラウザーでアクセス</summary>

- [openwrt.lan](http://openwrt.lan) or [(192.168.1.1)](http://192.168.1.1)
  - ユーザー名：`root`
  - パスワード：`パスワード`
</details>
:::

# 初期設定
:::note
### [パスワード](https://openwrt.org/jp/doc/howto/firstlogin#telnet_%E3%81%A7%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3)

<details><summary>初期値から変更</summary>

```bash
passwd
```
`Changing password for root`
`New password:`
```bash:passwd:入力モード
任意のパスワード
```
`Retype password:`
```bash:passwd:入力モード
再入力
```
`passwd: password for root changed by root`
```bash
exit
```
</details>
:::

:::note
### ホストネーム

<details><summary>ホストネーム（openwrt）を変更</summary>

```sh
#!/bin/sh
HOSTNAME='openwrt' # デバイス名
uci set system.@system[0].hostname=${HOSTNAME}
uci commit system
/etc/init.d/sysntpd restart
```
</details>
:::

:::note
### [タイムゾーン](https://openwrt.org/docs/guide-user/base-system/system_configuration)

<details><summary>タイムゾーンを変更</summary>

- [timezones.conf.xml](https://git.openwrt.org/?p=openwrt/svn-archive/archive.git;a=blob;f=net/freeswitch/files/etc.minimal/autoload_configs/timezones.conf.xml;hb=refs/heads/packages_12.09)

```sh
#!/bin/sh
TIMEZONE='JST-9'
ZONENAME='Asia/Tokyo'
uci set system.@system[0].timezone=${TIMEZONE}
uci set system.@system[0].zonename=${ZONENAME}
uci commit system
/etc/init.d/sysntpd restart
```
</details>
:::

:::note
### [NTP](https://openwrt.org/docs/guide-user/services/ntp/client-server)

<details><summary>NTPサーバーを変更</summary>

- [NTP POOL PROJECT](https://www.ntppool.org/ja/)

```sh
#!/bin/sh
POOL='jp'
uci delete system.ntp.server
uci add_list system.ntp.server=0.${POOL}.pool.ntp.org
uci add_list system.ntp.server=1.${POOL}.ppl.ntp.org
uci add_list system.ntp.server=2.${POOL}.pool.ntp.org 
uci add_list system.ntp.server=3.${POOL}.pool.ntp.org
uci commit system
/etc/init.d/sysntpd restart
```

</details>

<details><summary>NTPサーバーを有効</summary>

```sh
#!/bin/sh
uci set system.ntp.enable_server='1' # NTPサーバー有効
uci set system.ntp.use_dhcp='0'
uci set system.ntp.interface='lan'
uci commit system
/etc/init.d/sysntpd restart
```
</details>
:::

::: note
### [SSH](https://openwrt.org/docs/guide-user/base-system/dropbear)

<details><summary>WANからのアクセスを遮断</summary>

```sh
uci set dropbear.@dropbear[0].Interface='lan'
uci commit dropbear
```
</details>
:::

# [パッケージ](https://openwrt.org/packages/start)
:::note
### [母国語サポート](https://openwrt.org/docs/guide-user/luci/luci.essentials#native_language_support)

<details><summary>LuCiの言語パッケージをインストール</summary>

- 対応言語検索
```sh
#! /bin/sh
opkg update
opkg list luci-i18n-base\*
```

- 設定
```sh
#! /bin/sh
I18N='ja'
opkg update
opkg install luci-i18n-base-${I18N}
opkg install luci-i18n-firewall-${I18N}
```
</details>
:::

:::note
### [UCI（TTYD）](https://github.com/tsl0922/ttyd/blob/main/README.md)

<details><summary>ブラウザーでUCIにアクセス</summary>

```sh
#! /bin/sh
I18N='ja'
opkg update
opkg install luci-i18n-ttyd-${I18N}
uci set ttyd.@ttyd[0].ipv6='1'
uci set ttyd.@ttyd[0].command='/bin/login -f root' #自動ログイン
uci commit ttyd
/etc/init.d/rpcd restart
```

- [openwrt.lan:7681](http://openwrt.lan:7681) or [(192.168.1.1:7681)](http://192.168.1.1:7681)
</details>
:::

:::note
### [ファイラー（SFTP）](https://openwrt.org/docs/guide-user/services/nas/sftp.server)

<details><summary>WinSCPでファイルにアクセス</summary>

```sh
#! /bin/sh
opkg update
opkg install openssh-sftp-server
```

クライアント設定（Windows）
- 手動インストール
  - ダウンロード：[WinSCP](https://winscp.net/eng/download.php)
- 自動インストール
  - キー入力：`Win`+`x` > `a` > `はい`
  - 最新版ソフトウェアのインストール
```powershell:powershell:クライアントPC
$psVersion = $PSVersionTable.PSVersion.Major
$LINKS = Invoke-WebRequest "https://winscp.net/eng/download.php"
$LINKS_VERSION = $LINKS.Links | Where-Object {$_.href -like "*WinSCP-*-Setup.exe*"} | Select-Object -ExpandProperty href
$VERSION = ($LINKS_VERSION -split '/')[-2] -replace "WinSCP-([0-9]+\.[0-9]+\.[0-9]+).*", '$1'
Write-Host "Version to install: $VERSION"
$downloadUrl = "https://jaist.dl.sourceforge.net/project/winscp/WinSCP/$VERSION/WinSCP-$VERSION-Setup.exe?viasf=1"
Write-Host "Downloading from: $downloadUrl"
$ONAMAE = (whoami).Split('\')[1]
$destinationPath = "C:\Users\$ONAMAE\Downloads\WinSCP-$VERSION-Setup.exe"
Invoke-WebRequest -Uri $downloadUrl -OutFile $destinationPath
Write-Host "Installing WinSCP..."
Start-Process -FilePath $destinationPath -ArgumentList "/VERYSILENT /NORESTART" -Wait
Invoke-Expression "C:\Users\$ONAMAE\AppData\Local\Programs\WinSCP\WinSCP.exe"
```
- `警告` > `強制的に貼り付け`

- WinSCP設定
  - セッション
    - ホスト名：`192.168.1.1`
    - ユーザー名：`root`
    - パスワード：`設定したパスワード`
    - `ログイン`をクリック

</details>

:::

::: note
### [BusyBoxフルバージョン](https://en.wikipedia.org/wiki/BusyBox)

<details><summary>インストール</summary>

[OpenWrtバージョン](https://busybox.net/downloads/BusyBox.html)

```sh
#!/bin/sh
opkg update
opkg install coreutils
```
</details>
:::

:::note
### [CPU負荷分散](https://openwrt.org/docs/guide-user/services/irqbalance)

<details><summary>インストール</summary>

```sh
#! /bin/sh
opkg update
opkg install irqbalance
uci set irqbalance.irqbalance=irqbalance
uci set irqbalance.irqbalance.enabled='1'
uci commit irqbalance
/etc/init.d/irqbalance start
```
</details>
:::

::: note
### [ネットワーク統計インターフェイス](https://openwrt.org/docs/guide-user/luci/luci_app_statistics)

<details><summary>インストール</summary>

```sh
#! /bin/sh
I18N='ja'
opkg update
opkg install luci-i18n-statistics-${I18N}
/etc/init.d/collectd enable
/etc/init.d/rpcd restart
```

- プラグイン検索
```sh
#! /bin/sh
opkg update
opkg list collectd-mod\*
```
</details>
:::

:::note
### [追加テーマ](https://openwrt.org/docs/guide-user/luci/luci.themes)

<details><summary>インストール</summary>

```sh
#! /bin/sh
opkg update
opkg install luci-theme-openwrt
opkg install luci-theme-material
```
</details>
:::


# トラブル
:::note warn
### 既知の問題

<details><summary></summary>


---

</details>

:::

# 初期化
:::note alert

### [ファクトリーリセット(初期化)](https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset#soft_factory_reset)

<details><summary>リセット</summary>

```bash
# 要注意
firstboot && reboot now
```

`This will erase all settings and remove any installed packages. Are you sure? [N/y]`

```bash:初期化:入力モード
y
```
[デバイスリセットボタン](https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset#reset_button)
デバイスのリセットボタンを10秒押し続ける

</details>

:::

# あとがき
個人的にとても気に入りました！
長さはラズパイZEROと同等です
小さくて、Wi-FiとRJ45 があり、しかもUSBとSDカードスロットまである
フラッシュ8MB、メモリー64MBあるから、24.10が入る👍
リセットボタンがあるのが何気に助かる