Japanese notation
はじめに
記事について
Linksys WRT32X OpenWrt初期設定・運用ガイドです
インストールから各種設定、チューニングなどをまとめています
初心者対応構成
- スクリプトでの自動設定
-
UCI (ttyd)、Webコンソール (LuCi)、ファイラー (SFTP)にて比較作業がおススメ
OpenWrt
メーカー
デバイス
WRT32X
Wi-Fi
比較表
| 項目 | radio0 (5GHz) | radio1 (2.4GHz) | radio2 (5GHz/2.4GHz) |
|---|---|---|---|
| チップセット | 88W8964 | 88W8964 | 88W8897 |
| 接続 | PCIe | PCIe | SDIO/MMC |
| ドライバ | mwlwifi | mwlwifi | mwifiex_sdio |
| MIMO | 3x3 | 3x3 | 1x1 |
| 最大幅 | VHT160 | HT40 | VHT80 |
| 最大速度 | 2165 Mbps | 450 Mbps | 433 Mbps |
| 実測最大 | 1170 Mbps | 450 Mbps | 433 Mbps |
| DFS対応 | W53/W56 | - | W53/W56 |
| 最大TX Power | 30 dBm | 30 dBm | 21 dBm (制限) |
| Beamforming | SU/MU TX/RX | SU/MU TX/RX | SU RX |
| Bluetooth | - | - | 88W9136 |
Wi-Fi/Bluetooth構成
PCIe Bus
├── 0000:01:00.0 → radio0 (Marvell 88W8964, 5GHz, 3x3)
└── 0000:02:00.0 → radio1 (Marvell 88W8964, 2.4GHz, 3x3)
SDIO/MMC Bus (mmc0:0001)
├── mmc0:0001:1 → radio2 (Marvell 88W8897, 5GHz/2.4GHz, 1x1)
└── mmc0:0001:2 → Bluetooth (Marvell 88W9136, BT 4.x)
├── ドライバ: btmrvl_sdio
├── ファームウェア: sd8887_uapsta.bin
└── プロトコル: RFCOMM, BNEP, HIDP
The UCI system
LuCI web interface
ファームウェア
フラッシュ&インストールシステム
デバイスアクセス
SSH(UCI)
コンソールでアクセス
-
パワーシェル起動:キー入力:
Win+x>a>はい -
コンソールログイン (パワーシェル)
※192.168.1.1以外の場合、以下の形式で入力後にワンライナーを入力下さい
$ip="192.168.*.*"
- コンソールログイン (192.168.1.1用)
万能型ワンライナー
if(!$ip){$ip="192.168.1.1"}; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL -o GlobalKnownHostsFile=NUL -o HostKeyAlgorithms=+ssh-rsa -tt root@$ip
LuCi (GUI)
初期設定
パスワード
初期値から変更
passwd
Changing password for root
New password:
任意のパスワード
Retype password:
再入力
passwd: password for root changed by root
exit
ホストネーム
ホストネーム(openwrt)を変更
#!/bin/sh
HOSTNAME="openwrt" # デバイス名
uci set system.@system[0].hostname=${HOSTNAME}
uci commit system
/etc/init.d/system reload
NTP
NTPサーバーを変更
#!/bin/sh
NTP="jp.pool.ntp.org"
uci delete system.ntp.server
uci -q batch <<EOF
add_list system.ntp.server="0.${NTP}"
add_list system.ntp.server="1.${NTP}"
add_list system.ntp.server="2.${NTP}"
add_list system.ntp.server="3.${NTP}"
set system.ntp.enable_server='1'
set system.ntp.use_dhcp='0'
set system.ntp.interface='lan'
commit system
EOF
/etc/init.d/sysntpd restart
SSH
WANからのアクセスを遮断
uci set dropbear.@dropbear[0].Interface='lan'
uci commit dropbear
LED
ネットワークアクセスで点灯点滅
#! /bin/sh
uci add system led
uci set system.@led[-1].name='wan'
uci set system.@led[-1].sysfs='green:status'
uci set system.@led[-1].trigger='netdev'
uci set system.@led[-1].dev='wan'
uci set system.@led[-1].mode='link tx rx'
uci add system led
uci set system.@led[-1].name='br-lan'
uci set system.@led[-1].sysfs='blue:wps'
uci set system.@led[-1].trigger='netdev'
uci set system.@led[-1].dev='br-lan'
uci set system.@led[-1].mode='link tx rx'
uci commit system
/etc/init.d/led reload
パッケージ
固有設定
アドバンスドリブートをインストール
#!/bin/sh
I18N="ja"
PKGS="luci-i18n-advanced-reboot-${I18N}"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
/etc/init.d/rpcd restart
kmod-leds-pca963xをインストール
#! /bin/sh
PKGS="kmod-leds-pca963x kmod-leds-gpio"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
母国語サポート
LuCiの言語パッケージをインストール
- 対応言語検索
#! /bin/sh
PATTERN="luci-i18n-base*"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg list $PATTERN
command -v apk && apk search $PATTERN
- 設定
#! /bin/sh
I18N="ja"
PKGS="luci-i18n-base-${I18N} luci-i18n-opkg-${I18N} luci-i18n-firewall-${I18N} luci-i18n-package-manager-${I18N} luci-i18n-attendedsysupgrade-${I18N}"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
UCI(TTYD)
ブラウザーでUCIにアクセス
#! /bin/sh
I18N="ja"
PKGS="luci-i18n-ttyd-${I18N}"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
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
ファイラー
ブラウザでファイルにアクセス
mkdir -p /tmp/aios && wget -q -O /tmp/aios/install-filebrowser.sh https://raw.githubusercontent.com/site-u2023/aios/main/install-filebrowser.sh && sh /tmp/aios/install-filebrowser.sh
-
管理画面
192.168.1.1:8080 -
設定
# ポート変更
uci set filebrowser.config.port=9090
# ルートディレクトリ変更
uci set filebrowser.config.root=/mnt/storage
# ユーザーネーム及びパスワード変更
uci set filebrowser.config.username='root'
uci set filebrowser.config.password='password'
uci commit filebrowser
# 設定確認
uci show filebrowser
# サービス再起動
service filebrowser restart
# 既存DBをリセットしてUCI値で上書きしたいとき
rm /etc/filebrowser/filebrowser.db
service filebrowser restart
- 使用方法
filebrowser_main.sh: 自動判定 (インストールまたはリムーブ)
filebrowser_main.sh install: インストール
filebrowser_main.sh remove: リムーブ
filebrowser_main.sh status: 状態確認
WinSCPでファイルにアクセス
#! /bin/sh
PKGS="openssh-sftp-server"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
クライアント設定(Windows)
- 手動インストール
- ダウンロード:WinSCP
- 自動インストール
- キー入力:
Win+x>a>はい - 最新版ソフトウェアのインストール
- キー入力:
$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 - パスワード:
設定したパスワード -
ログインをクリック
- ホスト名:
- セッション
CPU負荷分散
インストール
#! /bin/sh
PKGS="irqbalance"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
uci set irqbalance.irqbalance=irqbalance
uci set irqbalance.irqbalance.enabled='1'
uci commit irqbalance
/etc/init.d/irqbalance start
ネットワーク統計インターフェイス
インストール
#! /bin/sh
I18N="ja"
PKGS="luci-i18n-statistics-${I18N}"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
/etc/init.d/collectd enable
/etc/init.d/rpcd restart
- プラグイン検索
#! /bin/sh
PATTERN="collectd-mod\*"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg list $PATTERN
command -v apk && apk search $PATTERN
追加テーマ
インストール
#! /bin/sh
PKGS="luci-theme-openwrt luci-theme-material"
UPDATE="${UPDATE:-$(command -v opkg && opkg update >&2; command -v apk && apk update >&2; echo 1)}"
command -v opkg && opkg install $PKGS
command -v apk && apk add $PKGS
AdGuard Home
インストール
- インストール及びリムーブ
mkdir -p /tmp && wget --no-check-certificate -O /tmp/adguardhome.sh "https://site-u.pages.dev/www/custom-scripts/adguardhome.sh" && chmod +x /tmp/adguardhome.sh && sh /tmp/adguardhome.sh
- 管理画面ログイン
http://192.168.1.1:8000/
既知の問題
トラブル
2.4GHz帯(radio1)でLuCIの「モード」欄が空白になる
-
インターフェースは802.11nまでしか対応していない
-
対策
uci set wireless.radio1.htmode='HT40'
uci commit wireless
wifi reload
リージョンコードが合わない
参考:
WRT3200ACM 5GHz DFSが動作しない(および回避策) #9956
OpenWrt/LEDE で mwlwifi を構築する
-
WRT32X及びWRT3200ACは日本未発売
※日本のリージョンコード製品は存在しない -
mwlwifiはMarvellが意図的にリージョンロックを実装
※米国の電波法違反を防ぐ為 -
option country 'JP'ではDFS帯域が動作しない
※'US'にする必要がある -
対策
CH="固定" #149-161ch以外を利用
COUNTRY="US"
uci set wireless.radio0.channel=${CH}
uci set wireless.radio0.country='${COUNTRY}'
uci commit wireless
mwifiex_sdioドライバはBSS動後の設定変更を受け付けない
-
radio2の
再起動を修正
※wifi down → 3秒待機 → wifi up -
対策
#!/bin/sh
WIRELESS_JS="/www/luci-static/resources/view/network/wireless.js"
cp "$WIRELESS_JS" "${WIRELESS_JS}.backup"
sed -i "s|fs.exec('/sbin/wifi',\['up',s\])|s.startsWith('radio2') ? Promise.all([fs.exec('/sbin/wifi',['down',s]),new Promise(r=>setTimeout(r,3000))]).then(()=>fs.exec('/sbin/wifi',['up',s])) : fs.exec('/sbin/wifi',['up',s])|g" "$WIRELESS_JS"
/etc/init.d/uhttpd restart
/etc/init.d/rpcd restart
echo "修正完了"
radio2のtxpowerエラーを回避させる
-
txpower_US.binが存在しないエラーを消す
※エラーは消えるが、送信出力は0のまま
txpower_US.bin -
対策
cd /tmp
wget https://raw.githubusercontent.com/murata-wireless/nxp-linux-calibration/refs/heads/master/murata/files/1ZM/txpower_US.bin
mkdir -p /lib/firmware/nxp
cp txpower_US.bin /lib/firmware/nxp/rgpower_US.bin
wifi down radio2
sleep 3
wifi up radio2
iw dev phy2-ap0 info | grep txpower
初期化
ファクトリーリセット(初期化)
リセット
# 要注意
firstboot && reboot now
This will erase all settings and remove any installed packages. Are you sure? [N/y]
y
デバイスリセットボタン
デバイスのリセットボタンを10秒(LEDが点滅するまで)押し続ける
あとがき
プチノスタルジーで衝動買い
基本性能が良いので古さを感じさせないね
ACでも1Gフルで出る(2コア使って使用率半分強)




