Japanese notation
はじめに
OpenWrt搭載Wi-Fi7デバイス比較
Wi-Fi7デバイス
-
SinoVoip Banana Pi BPI-R4
価格: 4~6万円程度
用途: オープンソースルーター開発向け
CPU: MediaTek MT7988A (Filogic 880)
メモリ: 4GB or 8GB DDR4
ストレージ: MicroSD(TF) card or 8GB eMMC
WAN: 1G ×1
LAN: 1G ×3
SFP: 10G ×2
USB: USB 3.2 Type-A
OS: OpenWrt -
Linksys Velop WRT Pro 7
価格: 5万5千~6万円程度
用途: ホーム&ビジネス向け
CPU: Qualcomm IPQ9554
メモリ: 1GB DDR4
ストレージ: 8GB eMMC
WAN: 2.5G ×1
LAN: 1G ×4
OS: QSDK 19.07/カーネル 5.4.213(公式OpenWrtインストール不可)
MLO: サポート -
GL.iNet Flint 3 GL-BE9300
https://www.gl-inet.com/campaign/gl-be9300-jp/
価格: 1万5千~3万円程度
用途: 家庭や小規模オフィス向け
CPU: Qualcomm IPQ9554?
メモリ: 1GB DDR4
ストレージ: 8GB eMMC
WAN: 2.5G ×1
WAN/LAN: 2.5G ×1
LAN: 2.5G ×4
USB: USB 3.0 Type-A
OS: QSDK 23.05/カーネル 5.4.213 (公式OpenWrtインストール可?)
MLO: サポート
OpenWrt
デバイス
インストール
ファームウェア
ファームウェアセレクター
-
デバイス用のOpenWrtファームウェアをダウンロード
イメージのダウンロード
SDカードの場合:SDCARD.IMG.GZ
-
インストールされたパッケージ、初回起動時のスクリプトのカスタマイズ
リリースビルド
base-files ca-bundle dnsmasq dropbear firewall4 fitblk fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload kmod-phy-aquantia libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only opkg ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-hwmon-pwmfan kmod-i2c-mux-pca954x kmod-eeprom-at24 kmod-mt7996-firmware kmod-mt7996-233-firmware kmod-rtc-pcf8563 kmod-sfp kmod-usb3 e2fsprogs f2fsck mkf2fs mt7988-wo-firmware luci ttyd luci-app-ttyd openssh-sftp-server i2c-tools ethtool-full kmod-mtk-t7xx modemmanager-rpcd luci-proto-modemmanager pciutils mbim-utils ubus
"snapshot" ビルド
apk-mbedtls base-files ca-bundle dnsmasq dropbear firewall4 fitblk fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload kmod-phy-aquantia libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-hwmon-pwmfan kmod-i2c-mux-pca954x kmod-eeprom-at24 kmod-mt7996-firmware kmod-mt7996-233-firmware kmod-rtc-pcf8563 kmod-sfp kmod-usb3 e2fsprogs f2fsck mkf2fs mt7988-wo-firmware luci ttyd luci-app-ttyd openssh-sftp-server i2c-tools ethtool-full kmod-mtk-t7xx modemmanager-rpcd luci-proto-modemmanager pciutils mbim-utils ubus
初回起動時に実行されるスクリプト (uci-defaults)
※右下設定アイコンクリック
# Beware! This script will be in /rom/etc/uci-defaults/ as part of the image.
# Uncomment lines to apply:
#
# Wi-Fi有効化
wlan_name="OpenWrt"
wlan_password="12345678"
#
# root_password=""
# lan_ip_address="192.168.1.1"
#
# pppoe_username=""
# pppoe_password=""
# log potential errors
exec >/tmp/setup.log 2>&1
if [ -n "$root_password" ]; then
(echo "$root_password"; sleep 1; echo "$root_password") | passwd > /dev/null
fi
# Configure LAN
# More options: https://openwrt.org/docs/guide-user/base-system/basic-networking
if [ -n "$lan_ip_address" ]; then
uci set network.lan.ipaddr="$lan_ip_address"
uci commit network
fi
# Configure WLAN
# More options: https://openwrt.org/docs/guide-user/network/wifi/basic#wi-fi_interfaces
if [ -n "$wlan_name" -a -n "$wlan_password" -a ${#wlan_password} -ge 8 ]; then
uci set wireless.@wifi-device[0].disabled='0'
uci set wireless.@wifi-iface[0].disabled='0'
uci set wireless.@wifi-iface[0].encryption='psk2'
uci set wireless.@wifi-iface[0].ssid="$wlan_name"
uci set wireless.@wifi-iface[0].key="$wlan_password"
# Enable background radar
uci set wireless.default_radio1.background_radar=1
uci set wireless.default_radio2.background_radar=1
uci commit wireless
fi
# Configure PPPoE
# More options: https://openwrt.org/docs/guide-user/network/wan/wan_interface_protocols#protocol_pppoe_ppp_over_ethernet
if [ -n "$pppoe_username" -a "$pppoe_password" ]; then
uci set network.wan.proto=pppoe
uci set network.wan.username="$pppoe_username"
uci set network.wan.password="$pppoe_password"
uci commit network
fi
echo "All done!"
SDカード初期化
diskpart
list disk
select disk *
# clean all (時間掛かる)
clean
Wi-Fi 7
パフォーマンス向上
- ドライバー
firmware/mt7996
-
mt7996_eeprom_233_2i5i6i.bin
/lib/firmware/mediatek/mt7996
OpenWrt24.10ファームウェアでの無線周波数のパフォーマンスを向上
wget -O /tmp/mt7996_eeprom_233_2i5i6i.bin 'https://github.com/openwrt/mt76/raw/refs/heads/master/firmware/mt7996/mt7996_eeprom_233_2i5i6i.bin'
FW_DIR="/lib/firmware/mediatek/mt7996"
if [ -f "$FW_DIR/mt7996_eeprom_233_2i5i6i.bin" ]; then
mv "$FW_DIR/mt7996_eeprom_233_2i5i6i.bin" "$FW_DIR/mt7996_eeprom_233_2i5i6i.bin.bak"
fi
mv /tmp/mt7996_eeprom_233_2i5i6i.bin "$FW_DIR/"
-
mt7996_eeprom_233.bin
/lib/firmware/mediatek/mt7996
wget -O /tmp/mt7996_eeprom_233.bin 'https://github.com/openwrt/mt76/raw/refs/heads/master/firmware/mt7996/mt7996_eeprom_233.bin'
FW_DIR="/lib/firmware/mediatek/mt7996"
if [ -f "$FW_DIR/mt7996_eeprom_233.bin" ]; then
mv "$FW_DIR/mt7996_eeprom_233.bin" "$FW_DIR/mt7996_eeprom_233.bin.bak"
fi
mv /tmp/mt7996_eeprom_233.bin "$FW_DIR/"
ワイヤレスオフロード有効化 (スナップショット)
- SDカード用設定(RAMを2GB以下に制限)
if ! fw_printenv -n bootargs | grep -q 'mem=2048M'; then
new_bootargs="$(fw_printenv -n bootargs) mem=2048M"
fw_setenv bootargs "$new_bootargs"
fi
grep -q '^options mt7996e wed_enable=Y sr_scene_detect=Y' /etc/modules.conf || echo 'options mt7996e wed_enable=Y sr_scene_detect=Y' >> /etc/modules.conf
echo "再起動してください"
# reboot
- 復元
new_bootargs=$(fw_printenv -n bootargs | sed 's/mem=2048M//g')
fw_setenv bootargs $new_bootargs
sed -i '/^options mt7915e wed_enable=Y$/d' /etc/modules.conf
sed -i '/^options mt7996e wed_enable=Y sr_scene_detect=Y$/d' /etc/modules.conf
echo "再起動してください"
# reboot
バックグラウンドレーダー
uci set wireless.default_radio1.background_radar=1
uci set wireless.default_radio2.background_radar=1
uci commit wireless
MLO
MAC80211_MT76_Programming_Guide_V4.10.pdf
#!/bin/sh
SSID='ばなな'
WPA_KEY='password'
COUNTRY='JP'
MLD_ID='42'
# cp /etc/config/wireless /etc/config/wireless.mlo.bak
# rm /etc/config/wireless
# wifi config
uci set wireless.radio0.disabled='0'
uci set wireless.radio1.disabled='0'
uci set wireless.radio2.disabled='0'
uci set wireless.default_radio0.disabled='0'
uci set wireless.default_radio1.disabled='0'
uci set wireless.default_radio2.disabled='0'
# 2.4GHz (radio0)
uci set wireless.radio0.band='2g'
uci set wireless.radio0.channel='11'
uci set wireless.radio0.htmode='HE40'
uci set wireless.radio0.country="$COUNTRY"
uci set wireless.radio0.mlo='1'
uci set wireless.radio0.mld_id="$MLD_ID"
uci set wireless.default_radio0.device='radio0'
uci set wireless.default_radio0.network='lan'
uci set wireless.default_radio0.mode='ap'
uci set wireless.default_radio0.ssid="$SSID"
uci set wireless.default_radio0.encryption='sae'
uci set wireless.default_radio0.key="$WPA_KEY"
uci set wireless.default_radio0.mlo_link_id='0'
# 5GHz (radio1)
uci set wireless.radio1.band='5g'
uci set wireless.radio1.channel='auto'
uci set wireless.radio1.htmode='HE80'
uci set wireless.radio1.country="$COUNTRY"
uci set wireless.radio1.background_radar='1'
uci set wireless.radio1.mlo='1'
uci set wireless.radio1.mld_id="$MLD_ID"
uci set wireless.default_radio1.device='radio1'
uci set wireless.default_radio1.network='lan'
uci set wireless.default_radio1.mode='ap'
uci set wireless.default_radio1.ssid="$SSID"
uci set wireless.default_radio1.encryption='sae'
uci set wireless.default_radio1.key="$WPA_KEY"
uci set wireless.default_radio1.mlo_link_id='1'
# 6GHz (radio2)
uci set wireless.radio2.band='6g'
uci set wireless.radio2.channel='auto'
uci set wireless.radio2.htmode='HE160'
uci set wireless.radio2.country="$COUNTRY"
uci set wireless.radio2.background_radar='1'
uci set wireless.radio2.mlo='1'
uci set wireless.radio2.mld_id="$MLD_ID"
uci set wireless.default_radio2.device='radio2'
uci set wireless.default_radio2.network='lan'
uci set wireless.default_radio2.mode='ap'
uci set wireless.default_radio2.ssid="$SSID"
uci set wireless.default_radio2.encryption='sae'
uci set wireless.default_radio2.key="$WPA_KEY"
uci set wireless.default_radio2.mlo_link_id='2'
uci commit wireless
wifi reload
パーツ
ACアダプター
UCB Type-C PD 20V
-
純正ACアダプター:
12V/5.2A or 19V 3.2A
-
PD 20V: 65Wアダプター
PC-VP-BP143:20V/3.25A,15V/3A,9V/3A,5V/3A
EC-AC8565BK:20V/3.25A,15V/3A,12V/3A,9V/3A,5V/3A
ファン
BPI-R4用ファン確認
- ハードウェアモニタ(hwmon)デバイス一覧
ls -l /sys/class/hwmon/
- ファンPWM値の現在値確認
cat /sys/class/hwmon/hwmon1/pwm1
- ファンPWM制御の状態確認
cat /sys/class/hwmon/hwmon1/pwm1_enable
- サーマルゾーン(温度トリップポイント)の種類確認
cat /sys/class/thermal/thermal_zone0/trip_point_0_type # クリティカル: 100%
cat /sys/class/thermal/thermal_zone0/trip_point_1_type # ホット
cat /sys/class/thermal/thermal_zone0/trip_point_2_type # アクティブ: 50%
cat /sys/class/thermal/thermal_zone0/trip_point_3_type # アクティブ: 30%
cat /sys/class/thermal/thermal_zone0/trip_point_4_type # アクティブ: 0%
- サーマルゾーン(温度トリップポイント)の温度設定確認
cat /sys/class/thermal/thermal_zone0/trip_point_0_temp # 臨界: 125℃
cat /sys/class/thermal/thermal_zone0/trip_point_1_temp # 高: 120℃
cat /sys/class/thermal/thermal_zone0/trip_point_2_temp # 高: 115℃
cat /sys/class/thermal/thermal_zone0/trip_point_3_temp # 中: 85℃
cat /sys/class/thermal/thermal_zone0/trip_point_4_temp # 低: 40℃
BPI-R4用ファンスクリプト
- pwmfan
# /etc/init.d/pwmfan
cat <<'EOF' > /etc/init.d/pwmfan
#!/bin/sh /etc/rc.common
START=99
PIDFILE=/var/run/pwmfan.pid
start() {
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE 2>/dev/null)
if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
echo "Already running"
return 1
else
rm -f $PIDFILE
fi
fi
/usr/bin/pwmfan-loop &
echo $! > $PIDFILE
}
stop() {
if [ -f $PIDFILE ]; then
PID=$(cat $PIDFILE 2>/dev/null)
if [ -n "$PID" ] && kill -0 "$PID" 2>/dev/null; then
kill $PID
fi
rm -f $PIDFILE
fi
}
restart() {
stop
sleep 1
start
}
EOF
chmod 755 /etc/init.d/pwmfan
# /usr/bin/pwmfan-loop
cat <<'EOF' > /usr/bin/pwmfan-loop
#!/bin/sh
CONFIG=pwmfan
SECTION="pwmfan"
get_temp() {
local temp
temp=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null)
[ -z "$temp" ] && temp=0
echo $((temp / 1000))
}
set_pwm() {
local pwm="$1"
echo 1 > /sys/class/hwmon/hwmon1/pwm1_enable
echo $pwm > /sys/class/hwmon/hwmon1/pwm1
}
read_config() {
INTERVAL=$(uci get ${CONFIG}.@${SECTION}[0].interval 2>/dev/null)
[ -z "$INTERVAL" ] && INTERVAL=30
TRIP_TEMP=$(uci get ${CONFIG}.@${SECTION}[0].trip_temp 2>/dev/null)
TRIP_PWM=$(uci get ${CONFIG}.@${SECTION}[0].trip_pwm 2>/dev/null)
MINPWM=$(uci get ${CONFIG}.@${SECTION}[0].minpwm 2>/dev/null)
[ -z "$MINPWM" ] && MINPWM=100
MAXPWM=$(uci get ${CONFIG}.@${SECTION}[0].maxpwm 2>/dev/null)
[ -z "$MAXPWM" ] && MAXPWM=255
if [ -z "$TRIP_TEMP" ] || [ -z "$TRIP_PWM" ]; then
exit 1
fi
case "$INTERVAL" in
''|*[!0-9]*) INTERVAL=30 ;;
esac
}
main_loop() {
read_config
local temp pwm i t p last_pwm=0
set -- $TRIP_TEMP
local trip_count=$#
while true; do
temp=$(get_temp)
pwm=$MINPWM
set -- $TRIP_TEMP
local j=1
for t in $@; do
set -- $TRIP_PWM
p=$(eval "echo \$$j")
[ -z "$p" ] && p=$MINPWM
[ "$temp" -ge "$t" ] && pwm=$p
j=$((j+1))
done
[ "$pwm" -lt "$MINPWM" ] && pwm=$MINPWM
[ "$pwm" -gt "$MAXPWM" ] && pwm=$MAXPWM
if [ "$pwm" != "$last_pwm" ]; then
set_pwm "$pwm"
last_pwm=$pwm
fi
sleep "$INTERVAL"
done
}
main_loop
EOF
chmod 755 /usr/bin/pwmfan-loop
touch /etc/config/pwmfan
uci -q delete pwmfan.@pwmfan[0]
uci -q commit pwmfan
uci -q add pwmfan pwmfan
uci -q set pwmfan.@pwmfan[-1].interval='20'
uci -q set pwmfan.@pwmfan[-1].minpwm='80'
uci -q set pwmfan.@pwmfan[-1].maxpwm='255'
uci -q set pwmfan.@pwmfan[-1].trip_temp='60 70'
uci -q set pwmfan.@pwmfan[-1].trip_pwm='128 255'
uci -q commit pwmfan
/etc/init.d/pwmfan enable
/etc/init.d/pwmfan restart
# /usr/bin/fan-status
cat <<'EOF' > /usr/bin/fan-status
#!/bin/sh
TEMP_RAW=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null)
TEMP_C=$(awk "BEGIN {printf \"%.1f\", $TEMP_RAW/1000}")
PWM=$(cat /sys/class/hwmon/hwmon1/pwm1 2>/dev/null)
PWM_PERCENT=$((PWM * 100 / 255))
echo "========================="
echo " Fan & Temperature Status"
echo "-------------------------"
echo " Temperature : ${TEMP_C} °C"
echo " Fan PWM : ${PWM} (${PWM_PERCENT} %)"
echo "========================="
EOF
chmod 755 /usr/bin/fan-status
fan-status
- 監視
while true; do
fan-status
sleep 20
done
- リムーブ
/etc/init.d/pwmfan stop
/etc/init.d/pwmfan disable
rm -f /etc/init.d/pwmfan
rm -f /usr/bin/pwmfan-loop
rm -f /usr/bin/fan-status
uci -q delete pwmfan.@pwmfan[0]
uci -q commit pwmfan
[ ! -s /etc/config/pwmfan ] && rm -f /etc/config/pwmfan
モデム
SIMカードトレイ
- SIMサイズ: nanoSIM
- SIMカードトレイ:
iPhone5/5S用
Fibocom FM350-GL (14c3:4d75)
-
動作環境
OpenWrt: 24.10.2
ModemManager: 1.22.0
kmod-mtk-t7xx: 6.6.93-r1
14C3:4D75: 81600.0000.00.29.18.16_DO
モード: PCIe
SIM: SIM1に挿入
キャリア: docomo -
MHF4コネクタ (アンテナ端子)
M: プライマリ/送信 (全利用)
M1: 4×4 MIMO
M2: 4×4 MIMO
D/G: ダイバーシティ/受信 (全利用) -
既知の問題
モデムデバイスは、完全に断電してから通電させないと、認識しない
※M.2スロットの3.3 V電源ラインはカーネルから制御できず、PCIeリセットピンも露出していない
PCIeモードでは、ATコマンドは送信出来ない
SIM1の青色LEDは、通信が確立しないと点灯しない -
必要パッケージ
opkg update && opkg install kmod-mtk-t7xx modemmanager-rpcd luci-proto-modemmanager pciutils mbim-utils ubus
- モデムインターフェース作成
# ISP/APN設定変数
WWAN="wwan"
APN="spmode.ne.jp"
ALLOWEDAUTH="chap"
USERNAME="spmode"
PASSWORD="spmode"
ALLOWEDMODE="5G" # SPモードの場合必須
METRIC="100"
IPTYPE="ipv4v6"
LOGLEVEL="ERR"
IP6ASSIGN="64"
MTU="1500"
SIGNALRATE="120"
INIT_EPSBEARER="custom"
AUTO="0"
uci set network.${WWAN}=interface
uci set network.${WWAN}.proto='modemmanager'
uci set network.${WWAN}.apn="${APN}"
uci set network.${WWAN}.allowedauth="${ALLOWEDAUTH}"
uci set network.${WWAN}.allowedmode="${ALLOWEDMODE}"
uci set network.${WWAN}.iptype="${IPTYPE}"
uci set network.${WWAN}.loglevel="${LOGLEVEL}"
uci set network.${WWAN}.metric="${METRIC}"
uci set network.${WWAN}.force_link='1'
uci set network.${WWAN}.ip6assign="${IP6ASSIGN}"
[ -n "$MTU" ] && uci set network.${WWAN}.mtu="${MTU}"
[ -n "$SIGNALRATE" ] && uci set network.${WWAN}.signalrate="${SIGNALRATE}"
uci set network.${WWAN}.auto="${AUTO}"
uci set network.${WWAN}.init_epsbearer="${INIT_EPSBEARER}"
if [ "$INIT_EPSBEARER" = "custom" ]; then
uci set network.${WWAN}.init_apn="${APN}"
uci set network.${WWAN}.init_allowedauth="${ALLOWEDAUTH}"
[ -n "$USERNAME" ] && uci set network.${WWAN}.init_username="${USERNAME}"
[ -n "$PASSWORD" ] && uci set network.${WWAN}.init_password="${PASSWORD}"
uci set network.${WWAN}.init_iptype="${IPTYPE}"
fi
WWAN_IDX=$(uci show network | grep "name='wwan0'" | sed -n "s/network.@device\[\([0-9]\+\)\].*/\1/p")
if [ -n "$WWAN_IDX" ]; then
uci set network.@device[$WWAN_IDX].ipv6='1'
[ -n "$MTU" ] && uci set network.@device[$WWAN_IDX].mtu="${MTU}"
[ -n "$MTU" ] && uci set network.@device[$WWAN_IDX].mtu6="${MTU}"
else
uci add network device
uci set network.@device[-1].name='wwan0'
uci set network.@device[-1].ipv6='1'
[ -n "$MTU" ] && uci set network.@device[-1].mtu="${MTU}"
[ -n "$MTU" ] && uci set network.@device[-1].mtu6="${MTU}"
fi
uci commit network
sync
mount -o remount,ro
echo "Power cycle"
- デバイス確認
lspci
ls -la /dev/ | grep -E "(cdc|wwan)"
- ネットワークインターフェース確認
ip link show
- ベンダーID、プロダクトID確認
ls /sys/class/net/wwan0/device/
cat /sys/class/net/wwan0/device/../../../modalias
cat /sys/class/net/wwan0/device/../../../uevent
- モデム確認
ubus call modemmanager info
ubus call modemmanager dump
mmcli -L
mmcli -m 0
- 使用可能なすべてのオプション
mbimcli --help-all
- バージョン確認
mbimcli --version
- FCCロック確認
mbimcli -d /dev/wwan0mbim0 --intel-query-fcc-lock
mbimcli -d /dev/wwan0mbim0 --set-radio-state=on
- FCCロック解除(必要な場合)
mbimcli -d /dev/wwan0mbim0 --intel-set-fcc-unlock
/etc/ModemManager/fcc.unlock/
dispatcher-fcc-unlock
MODEM="14c3" # 例
mkdir -p /etc/ModemManager/fcc.unlock/
chmod 644 /etc/ModemManager/fcc.unlock/$MODEM
cat <<'EOF' > /etc/ModemManager/fcc.unlock/$MODEM
# <ここにdispatcher-fcc-unlockの該当ソースを貼る>
EOF
/etc/init.d/modemmanager restart
- モデム有効化(enable)
mmcli -m 0 -e
- ラジオ有効化
mbimcli -d /dev/wwan0mbim0 --set-radio-state=on
- ラジオ状態確認
mbimcli -d /dev/wwan0mbim0 --query-radio-state
- デバイス機能確認
mbimcli -d /dev/wwan0mbim0 --query-device-caps
- SIM状態確認
mbimcli -d /dev/wwan0mbim0 --query-subscriber-ready-status
- ネットワーク登録状態確認
mbimcli -d /dev/wwan0mbim0 --query-registration-state
- 信号強度確認
mmcli -m 0 --signal-get
mbimcli -d /dev/wwan0mbim0 --query-signal-state
- APN設定確認
mbimcli -d /dev/wwan0mbim0 --query-provisioned-contexts
- 接続IP情報
mbimcli -d /dev/wwan0mbim0 -p --query-ip-configuration=0
- モデムの詳細情報
root@bpi-r4:~# mmcli -m 0
-----------------------------------
General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----------------------------------
Hardware | manufacturer: generic
| model: MBIM [14C3:4D75]
| firmware revision: 81600.0000.00.29.18.16_DO
| C43
| h/w revision: V1.0.6
| supported: gsm-umts, lte, 5gnr
| current: gsm-umts, lte, 5gnr
| equipment id: XXXXXXXXXXXXXXXX
-----------------------------------
System | device: /sys/devices/platform/soc/11280000.pcie/pci0003:00/0003:00:00.0/0003:01:00.0
| physdev: /sys/devices/platform/soc/11280000.pcie/pci0003:00/0003:00:00.0/0003:01:00.0
| drivers: mtk_t7xx
| plugin: generic
| primary port: wwan0mbim0
| ports: wwan0 (net), wwan0at0 (at), wwan0mbim0 (mbim)
-----------------------------------
Numbers | own: XXXXXXXXXXXX
-----------------------------------
Status | lock: sim-pin2
| unlock retries: sim-pin2 (3)
| state: connected
| power state: on
| access tech: lte, 5gnr
| signal quality: 48% (cached)
-----------------------------------
Modes | supported: allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 3g, 4g; preferred: none
| allowed: 5g; preferred: none
| allowed: 3g, 5g; preferred: none
| allowed: 4g, 5g; preferred: none
| allowed: 3g, 4g, 5g; preferred: none
| current: allowed: 5g; preferred: none
-----------------------------------
IP | supported: ipv4, ipv6, ipv4v6
-----------------------------------
3GPP | imei: XXXXXXXXXXXXXXXX
| enabled locks: fixed-dialing
| operator id: 44010
| operator name: NTT DOCOMO
| registration: home
| packet service state: attached
-----------------------------------
3GPP EPS | ue mode of operation: csps-2
| initial bearer path: /org/freedesktop/ModemManager1/Bearer/4
| initial bearer apn: spmode.ne.jp
| initial bearer ip type: ipv4v6
-----------------------------------
3GPP 5GNR | mico mode: disabled
-----------------------------------
SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
| sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
| slot 2: /org/freedesktop/ModemManager1/SIM/1
-----------------------------------
Bearer | paths: /org/freedesktop/ModemManager1/Bearer/5
root@bpi-r4:~#
Telit LN940 よりは速いが、5Gの速度にしては遅すぎる
RTC
RTC有効化
-
バナナパイR4 RTCが動作しない#15766
LIR2032 (充電式電池)
RTCバッテリーボックス (1.25mm: JST)
opkg install i2c-tools
fw_setenv bootconf_extra mt7988a-bananapi-bpi-r4-rtc
初期設定ツール
デバイスアクセス
デバイスアクセス(UCI)
パワーシェルでアクセス
PowerShellの開始
- キー入力:
Win
+x
>a
>はい
UCI(SSH)アクセス
ssh -o StrictHostKeyChecking=no -oHostKeyAlgorithms=+ssh-rsa root@192.168.1.1
- root@192.168.1.1's password:
初期値:パスワード無し
SSHログイン出来ない場合
-
%USERPROFILE%\.ssh\known_hosts
※Windows隠しファイル
Clear-Content .ssh\known_hosts -Force
OpenSSHのインストールが無い場合
- 機能の確認
※Windows 10 Fall Creators Update(1709)以降標準搭載
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
- 機能のインストール
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
初期設定
パスワード
初期値から変更
passwd
Changing password for root
New password:
任意のパスワード
Retype password:
再入力
passwd: password for root changed by root
exit
タイムゾーン
タイムゾーンを変更
#!/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
NTP
NTPサーバーを変更
#!/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
NTPサーバーを有効
#!/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
SSH
WANからのアクセスを遮断
uci set dropbear.@dropbear[0].Interface='lan'
uci commit dropbear
パッケージ
母国語サポート
LuCiの言語パッケージをインストール
- 対応言語検索
#! /bin/sh
opkg update
opkg list luci-i18n-base\*
- 設定
#! /bin/sh
I18N='ja'
opkg update
opkg install luci-i18n-base-${I18N}
opkg install luci-i18n-firewall-${I18N}
UCI(TTYD)
ブラウザーでUCIにアクセス
#! /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
ファイラー(SFTP)
WinSCPでファイルにアクセス
#! /bin/sh
opkg update
opkg install openssh-sftp-server
クライアント設定(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
opkg update
opkg install irqbalance
uci set irqbalance.irqbalance=irqbalance
uci set irqbalance.irqbalance.enabled='1'
uci commit irqbalance
/etc/init.d/irqbalance start
ネットワーク統計インターフェイス
インストール
#! /bin/sh
I18N='ja'
opkg update
opkg install luci-i18n-statistics-${I18N}
/etc/init.d/collectd enable
/etc/init.d/rpcd restart
- プラグイン検索
#! /bin/sh
opkg update
opkg list collectd-mod\*
追加テーマ
インストール
#! /bin/sh
opkg update
opkg install luci-theme-openwrt
opkg install luci-theme-material
AdGuard Home
インストール
#!/bin/ash
# Check version
TMP_DIR="/tmp/aios"
ADGUARD_URL="https://github.com/AdguardTeam/AdGuardHome"
mkdir -p "$TMP_DIR"
echo -e "\033[1;34m[INFO]\033[0;39m Downloading AdGuardHome list"
if wget --no-check-certificate -O "$TMP_DIR/AdGuardHome_list" "$ADGUARD_URL"; then
latest_ver=$(grep -o -E "AdGuard Home v[0-9]+\.[0-9]+(\.[0-9]+)?" "$TMP_DIR/AdGuardHome_list" | head -n1 | grep -o -E "v[0-9]+\.[0-9]+(\.[0-9]+)?")
if [ -n "$latest_ver" ]; then
cp /etc/config/network /etc/config/network.AG.bak
cp /etc/config/dhcp /etc/config/dhcp.AG.bak
cp /etc/config/firewall /etc/config/firewall.AG.bak
echo -e "\033[1;33mInstall Version: ${latest_ver}\033[0-39m"
read -p "Press any key to continue..."
else
echo -e "\033[1;31m[ERROR]\033[0;39m Failed to parse version information from AdGuardHome list."
fi
else
echo -e "\033[1;31m[ERROR]\033[0;39m Failed to download AdGuardHome list from $ADGUARD_URL."
fi
rm -rf "$TMP_DIR"
# Install
opkg update
opkg install ca-bundle
mkdir -p /etc/AdGuardHome
# Automatic architecture determination
ARCH=$(uname -m)
case "$ARCH" in
aarch64|arm64) AGH_BIN="AdGuardHome_linux_arm64";;
armv7l) AGH_BIN="AdGuardHome_linux_armv7";;
armv6l) AGH_BIN="AdGuardHome_linux_armv6";;
armv5l) AGH_BIN="AdGuardHome_linux_armv5";;
x86_64|amd64) AGH_BIN="AdGuardHome_linux_amd64";;
i386|i686) AGH_BIN="AdGuardHome_linux_386";;
mips) AGH_BIN="AdGuardHome_linux_mipsle";;
mips64) AGH_BIN="AdGuardHome_linux_mips64le";;
*) echo "[ERROR] Unsupported architecture: $ARCH"; exit 1;;
esac
AGH_TAR="${AGH_BIN}.tar.gz"
AGH_URL="https://github.com/AdguardTeam/AdGuardHome/releases/download/${latest_ver}/${AGH_TAR}"
wget --no-check-certificate -O "/etc/AdGuardHome/${AGH_TAR}" "$AGH_URL"
tar -xzvf "/etc/AdGuardHome/${AGH_TAR}" -C /etc/
rm -rf "/etc/AdGuardHome/${AGH_TAR}"
chmod +x /etc/AdGuardHome/AdGuardHome
/etc/AdGuardHome/AdGuardHome -s install
/etc/init.d/AdGuardHome enable
/etc/init.d/AdGuardHome start
NET_ADDR=$(/sbin/ip -o -4 addr list br-lan | awk 'NR==1{ split($4, ip_addr, "/"); print ip_addr[1] }')
NET_ADDR6=$(/sbin/ip -o -6 addr list br-lan scope global | awk 'NR==1{ split($4, ip_addr, "/"); print ip_addr[1] }')
echo "Router IPv4 : ""${NET_ADDR}"
echo "Router IPv6 : ""${NET_ADDR6}"
uci set dhcp.@dnsmasq[0].noresolv="0"
uci set dhcp.@dnsmasq[0].cachesize="1000"
uci set dhcp.@dnsmasq[0].rebind_protection='0'
uci set dhcp.@dnsmasq[0].port="54"
uci -q delete dhcp.@dnsmasq[0].server
uci add_list dhcp.@dnsmasq[0].server="${NET_ADDR}"
uci -q delete dhcp.lan.dhcp_option
uci -q delete dhcp.lan.dns
uci add_list dhcp.lan.dhcp_option='6,'"${NET_ADDR}"
uci add_list dhcp.lan.dhcp_option='3,'"${NET_ADDR}"
for OUTPUT in $(ip -o -6 addr list br-lan scope global | awk '{ split($4, ip_addr, "/"); print ip_addr[1] }')
do
echo "Adding $OUTPUT to IPV6 DNS"
uci add_list dhcp.lan.dns=$OUTPUT
done
uci commit dhcp
/etc/init.d/dnsmasq restart
uci set firewall.adguardhome_dns_53='redirect'
uci set firewall.adguardhome_dns_53.src='lan'
uci set firewall.adguardhome_dns_53.proto='tcp udp'
uci set firewall.adguardhome_dns_53.src_dport='53'
uci set firewall.adguardhome_dns_53.target='DNAT'
uci set firewall.adguardhome_dns_53.name='Adguard Home'
uci set firewall.adguardhome_dns_53.dest='lan'
uci set firewall.adguardhome_dns_53.dest_port='53'
uci set firewall.adguardhome_dns_53.family="any"
uci commit firewall
/etc/init.d/firewall restart
- AdGuardHOMEログイン
http://192.168.2.1:3000/
BEがまともに動くまで暫定
Wi-Fi 6: usteer + 802.11r/k/v による高速ローミング構成
設定
SSID='ばなな'
WIFI_KEY='password'
COUNTRY='JP'
LANGUAGE='ja'
MOBILITY_DOMAIN='1234'
opkg update && opkg install "luci-i18n-usteer-$LANGUAGE"
# 2.4GHz
uci set wireless.radio0.band='2g'
uci set wireless.radio0.channel='auto'
uci set wireless.radio0.htmode='HE40'
uci set wireless.radio0.country="$COUNTRY"
uci set wireless.radio0.txpower='10'
uci set wireless.radio0_ap=wifi-iface
uci set wireless.radio0_ap.device='radio0'
uci set wireless.radio0_ap.network='lan'
uci set wireless.radio0_ap.mode='ap'
uci set wireless.radio0_ap.ssid="$SSID"
uci set wireless.radio0_ap.encryption='sae'
uci set wireless.radio0_ap.key="$WIFI_KEY"
uci set wireless.radio0_ap.isolate='1'
uci set wireless.radio0_ap.ocv='1'
uci set wireless.radio0_ap.ieee80211r='1'
uci set wireless.radio0_ap.mobility_domain="$MOBILITY_DOMAIN"
uci set wireless.radio0_ap.ft_over_ds='1'
uci set wireless.radio0_ap.nasid='ap1-2g'
uci set wireless.radio0_ap.usteer_min_snr='30'
uci set wireless.radio0_ap.ieee80211k='1'
uci set wireless.radio0_ap.ieee80211v='1'
# 5GHz
uci set wireless.radio1.band='5g'
uci set wireless.radio1.channel='auto'
uci set wireless.radio1.htmode='HE80'
uci set wireless.radio1.country="$COUNTRY"
uci set wireless.radio1_ap=wifi-iface
uci set wireless.radio1_ap.device='radio1'
uci set wireless.radio1_ap.network='lan'
uci set wireless.radio1_ap.mode='ap'
uci set wireless.radio1_ap.ssid="$SSID"
uci set wireless.radio1_ap.encryption='sae'
uci set wireless.radio1_ap.key="$WIFI_KEY"
uci set wireless.radio1_ap.isolate='1'
uci set wireless.radio1_ap.background_radar='1'
uci set wireless.radio1_ap.ocv='1'
uci set wireless.radio1_ap.ieee80211r='1'
uci set wireless.radio1_ap.mobility_domain="$MOBILITY_DOMAIN"
uci set wireless.radio1_ap.ft_over_ds='1'
uci set wireless.radio1_ap.ft_psk_generate_local='1'
uci set wireless.radio1_ap.nasid='ap1-5g'
uci set wireless.radio1_ap.usteer_min_snr='20'
uci set wireless.radio1_ap.ieee80211k='1'
uci set wireless.radio1_ap.ieee80211v='1'
# 6GHz
uci set wireless.radio2.band='6g'
uci set wireless.radio2.channel='auto'
uci set wireless.radio2.htmode='HE160'
uci set wireless.radio2.country="$COUNTRY"
uci set wireless.radio2_ap=wifi-iface
uci set wireless.radio2_ap.device='radio2'
uci set wireless.radio2_ap.network='lan'
uci set wireless.radio2_ap.mode='ap'
uci set wireless.radio2_ap.ssid="$SSID"
uci set wireless.radio2_ap.encryption='sae'
uci set wireless.radio2_ap.key="$WIFI_KEY"
uci set wireless.radio2_ap.isolate='1'
uci set wireless.radio2_ap.background_radar='1'
uci set wireless.radio2_ap.ocv='1'
uci set wireless.radio2_ap.ieee80211r='1'
uci set wireless.radio2_ap.mobility_domain="$MOBILITY_DOMAIN"
uci set wireless.radio2_ap.ft_over_ds='1'
uci set wireless.radio2_ap.ft_psk_generate_local='1'
uci set wireless.radio2_ap.nasid='ap1-6g'
uci set wireless.radio2_ap.usteer_min_snr='15'
uci set wireless.radio2_ap.ieee80211k='1'
uci set wireless.radio2_ap.ieee80211v='1'
# usteer
uci set usteer.@usteer[0].band_steering='1'
uci set usteer.@usteer[0].load_balancing='1'
uci set usteer.@usteer[0].sta_block_timeout='300'
uci set usteer.@usteer[0].min_snr='20'
uci set usteer.@usteer[0].max_snr='80'
uci set usteer.@usteer[0].signal_diff_threshold='10'
uci commit
wifi reload
トラブル
初期化
ファクトリーリセット(初期化)
リセット
# 要注意
firstboot && reboot now
This will erase all settings and remove any installed packages. Are you sure? [N/y]
y
デバイスリセットボタン
デバイスのリセットボタンを10秒押し続ける