LoginSignup
0
0

OpenWrt NCP-HG100

Last updated at Posted at 2024-02-22

編集中
:warning:Japanese notation

はじめに

初心者対応構成

  • スクリプトでの自動設定
  • UCIとLuCi及びWinSCPにて比較しながら作業がおススメ

PowerShellSSHアクセス

ssh root@192.168.1.1
ssh root@192.168.1.1のショートカット作成(デスクトップ)
powershell
$DESKTOP = ([Environment]::GetFolderPath("Desktop") + "\192.168.1.1.lnk")
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$DESKTOP")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$Shortcut.Arguments = '-windowstyle hidden -ExecutionPolicy RemoteSigned "Start-Process ssh root@192.168.1.1"'
$Shortcut.IconLocation = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,0"
$Shortcut.WorkingDirectory = "."
$Shortcut.Save()

  • 強制的に貼り付け
  • yes

SSHログイン出来ない場合:exclamation:

known_hostsクリア

  • C:\Users\yourusername\.ssh\known_hosts ※Windows隠しファイル
powershell
Clear-Content .ssh\known_hosts -Force


OpenSSHのインストール
※Windows 10 Fall Creators Update(1709)以降標準搭載

  • 機能の確認
powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

  • 機能のインストール
powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


前提条件

  • 接続方法: シリアル接続

ファームウェアについて

デバイスについて

NCP-HG100/Cellular

ncp-hg100.png

ハードウェア仕様

  • SoC : Qualcomm IPQ4019
  • RAM : DDR3 512 MiB (H5TC4G63EFR)
  • Flash : eMMC 4 GiB (THGBMNG5D1LBAIT)
  • WLAN : 2.4/5 GHz 2T2R (IPQ4019)
  • Ethernet : 10/100/1000 Mbps x2
    • Transceiver : Qualcomm QCA8072
  • WWAN : Telit LN940A9
  • Z-Wave : Silicon Labs ZM5101
  • Bluetooth : Qualcomm CSR8811
  • Audio DAC : Realtek ALC5629
  • Audio Amp. : Realtek ALC1304
  • Voice Input Processor : Conexant CX20924
  • Micro Controller Unit : Nuvoton MINI54FDE
    • RGB LED, Fan, Temp. sensors
  • Touch Sensor : Cypress CY8C4014LQI
  • RGB LED driver : TI LP55231 (2x)
  • LEDs/Keys : 11x, 6x
  • UART : through-hole on PCB
    • J1: 3.3V, TX, RX, GND from tri-angle marking
    • 115200n8
  • Power : 12 VDC, 2.5 A

OpenWrt化手順

OpenWrt化

以下参考

snqpshot

sysupgrade -v /tmp/openwrt-ipq40xx-generic-sony_ncp-hg100-cellular-squashfs-sysupgrade.bin

23.05.2

sysupgrade -n /tmp/openwrt-23.05.2-ipq40xx-generic-sony_ncp-hg100-cellular-squashfs-sysupgrade

USBインストール
以下参考

CPUパフォーマンス

time sh -c 'dd if=/dev/zero bs=1M count=100 | md5sum'

100+0 records in
100+0 records out
2f282b84e7e608d5852449ed940bfc51 -
real 0m 0.58s
user 0m 0.50s
sys 0m 0.20s

ストレージの拡張

opkg update && opkg install cfdisk resize2fs
cfdisk /dev/mmcblk0

/dev/mmcblk0p17

Rsize
New size: 3.4G

Write
Are you sure you want to write the partition table to disk?

yes

Quit

reboot

resize2fs /dev/mmcblk0p17

速度測定

hdparm -t --direct /dev/mmcblk0p17

USB2.0化

NCP-HG100 LTEモデムクラッシュのソフト的な対処

echo -n "2-1" > /sys/bus/usb/drivers/usb/unbind
devmem 0x08a0c2c0 32 0x830E0002

レジスタ

opkg update
opkg install i2c-tools

i2cdetect -l
# i2c-1   i2c             QUP I2C adapter                         I2C adapter

i2cdetect -y 1
# Warning: Can't use SMBus Quick Write command, will skip some addresses
#      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
# 00:                                                 
# 10:                                                 
# 20:                                                 
# 30: -- -- UU UU -- -- -- --                         
# 40:                                                 
# 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
# 60:                                                 
# 70:

タッチセンサー

i2cset -y 1 0x14 0xf 1

外周LED

# (nop?, 分岐引っ掛かっても無さげ)
i2cset -y 1 0x15 0x00 0x00
# 波: blue+lightblue
i2cset -y 1 0x15 0x00 0x10
# 特殊ワイプ (中): blue->lightblue
i2cset -y 1 0x15 0x00 0x20
# ワイプ (速): blue->lightblue
i2cset -y 1 0x15 0x00 0x30
# 交互 (速): blue->lightblue
i2cset -y 1 0x15 0x00 0x40
# 点灯: yellow->blue
i2cset -y 1 0x15 0x00 0x50 
# 点滅: yellow
i2cset -y 1 0x15 0x00 0x60
# 点灯: red
i2cset -y 1 0x15 0x00 0x70
# 点灯: yellow
i2cset -y 1 0x15 0x00 0x80
# 点滅 (遅): blue 
i2cset -y 1 0x15 0x00 0x90
# 点灯:blue
i2cset -y 1 0x15 0x00 0xa0
# 消灯
i2cset -y 1 0x15 0x00 0xB0
# 点滅 (速): white 
i2cset -y 1 0x15 0x00 0xC0
# 点滅 (速): red 
i2cset -y 1 0x15 0x00 0xD0
# 交互: white->lightblue
i2cset -y 1 0x15 0x00 0xE0
# (nop?, 分岐引っ掛かっても無さげ)
i2cset -y 1 0x15 0x00 0xF0

参考設定

LED色確認ツール
#! /bin/sh
{
while :
do
    echo -e " \033[1;37mi2cset -y 1 0x15 0x00\033[0;39m"
    echo -e " \033[1;37mLED Register Value --------------------------\033[0;39m"
    echo -e " \033[0;37m[0]\033[0;39m 0xb0 Off"
    echo -e " \033[7;40m[l]\033[0;39m 0xc0 Flash: white"
    echo -e " \033[0;44m[2]\033[0;39m 0xa0 Light:blue"
    echo -e " \033[5;44m[3]\033[0;39m 0x90 Flash: blue"
    echo -e " \033[0;44m[4]\033[0;39m 0x50 Light: yellow->blue"
    echo -e " \033[0;43m[5]\033[0;39m 0x80 Light:yellow"
    echo -e " \033[5;43m[6]\033[0;39m 0x60 Flash: yellow"
    echo -e " \033[0;41m[7]\033[0;39m 0x70 Light: red"
    echo -e " \033[5;41m[8]\033[0;39m 0xd0 Flash: red"
    echo -e " \033[4;46m[9]\033[0;39m 0x20 Special Wipe: blue->lightblue"
    echo -e " \033[7;40m[a]\033[0;39m 0xe0 Alternate: white<>lightblue"
    echo -e " \033[4;46m[b]\033[0;39m 0x10 Wave: lightblue<>blue"
    echo -e " \033[4;46m[c]\033[0;39m 0x30 Wipe: blue<>lightblue"
    echo -e " \033[4;46m[d]\033[0;39m 0x40 Alternate: blue<>lightblue"
    echo -e " \033[7;36m[q]\033[0;39m Quit"
    echo -e " \033[1;37m-----------------------------------------------------\033[0;39m"
  read -p " Please select key: " num
  case "${num}" in
    "0" ) i2cset -y 1 0x15 0x00 0xb0 ;;
    "1" ) i2cset -y 1 0x15 0x00 0xc0 ;;
    "2" ) i2cset -y 1 0x15 0x00 0xa0 ;;
    "3" ) i2cset -y 1 0x15 0x00 0x90 ;;
    "4" ) i2cset -y 1 0x15 0x00 0x50 ;;
    "5" ) i2cset -y 1 0x15 0x00 0x80 ;;
    "6" ) i2cset -y 1 0x15 0x00 0x60 ;;
    "7" ) i2cset -y 1 0x15 0x00 0x70 ;;
    "8" ) i2cset -y 1 0x15 0x00 0xd0 ;;
    "9" ) i2cset -y 1 0x15 0x00 0x20 ;;
    "a" ) i2cset -y 1 0x15 0x00 0xe0 ;;
    "b" ) i2cset -y 1 0x15 0x00 0x10 ;;
    "c" ) i2cset -y 1 0x15 0x00 0x30 ;;
    "d" ) i2cset -y 1 0x15 0x00 0x40 ;;
    "q" ) exit 0 ;;
  esac
 done
}

LED P

概要:
外周LEDをサービスと連動して時間で変更する

※ワンポイント:update不要なら最初に#を入力

opkg update
opkg install opkg install i2c-tools

#! /bin/sh

mkdir -p /etc/config-software/
cat << "EOF" > /etc/config-software/led_p_new.sh
#! /bin/sh

SWITCH="$1"
if [ -z $1 ]; then
    SWITCH="on"
fi

TIME1="00:00:00"
TIME2="08:00:00"
TIME3="12:00:00"
TIME4="16:00:00"
TIME5="20:00:00"
TIME6="23:59:59"

DATE=`date +%s`
DATE1=`date -d ${TIME1} +%s`
DATE2=`date -d ${TIME2} +%s`
DATE3=`date -d ${TIME3} +%s`
DATE4=`date -d ${TIME4} +%s`
DATE5=`date -d ${TIME5} +%s`
DATE6=`date -d ${TIME6} +%s`

ZOON1="late night"
ZOON2="morning"
ZOON3="day"
ZOON4="evening"
ZOON5="night"

LED1='i2cset -y 1 0x15 0x00 0xb0' # off
LED2='i2cset -y 1 0x15 0x00 0xa0' # blue
LED3='i2cset -y 1 0x15 0x00 0x20' # sky blue
LED4='i2cset -y 1 0x15 0x00 0x80' # yellow
LED5='i2cset -y 1 0x15 0x00 0x70' # red

CRON1=`echo ${TIME1} | sed 's/:/ /g' | awk '{ print $1,$2 }' | sed 's/\(.*\) \(.*\)/\2 \1/g'`
CRON2=`echo ${TIME2} | sed 's/:/ /g' | awk '{ print $1,$2 }' | sed 's/\(.*\) \(.*\)/\2 \1/g'`
CRON3=`echo ${TIME3} | sed 's/:/ /g' | awk '{ print $1,$2 }' | sed 's/\(.*\) \(.*\)/\2 \1/g'`
CRON4=`echo ${TIME4} | sed 's/:/ /g' | awk '{ print $1,$2 }' | sed 's/\(.*\) \(.*\)/\2 \1/g'`
CRON5=`echo ${TIME5} | sed 's/:/ /g' | awk '{ print $1,$2 }' | sed 's/\(.*\) \(.*\)/\2 \1/g'`

function _LEDTIME() {
    if [[ ${DATE} -ge ${DATE1} && ${DATE} -lt ${DATE2} ]]; then
    `${LED1}`
    elif [[ ${DATE} -ge ${DATE2} && ${DATE} -lt ${DATE3} ]]; then
    `${LED2}`
    elif [[ ${DATE} -ge ${DATE3} && ${DATE} -lt ${DATE4} ]]; then
    `${LED3}`
    elif [[ ${DATE} -ge ${DATE4} && ${DATE} -lt ${DATE5} ]]; then
    `${LED4}`
    elif [[ ${DATE} -ge ${DATE5} && ${DATE} -lt ${DATE6} ]]; then
    `${LED5}`
    fi
    return 0
}

function _ERASE() {
    sed -i "/${ZOON1}/d" /etc/crontabs/root
    sed -i "/${ZOON2}/d" /etc/crontabs/root
    sed -i "/${ZOON3}/d" /etc/crontabs/root
    sed -i "/${ZOON4}/d" /etc/crontabs/root
    sed -i "/${ZOON5}/d" /etc/crontabs/root
    /etc/init.d/cron restart
    return 0
}

function _WRITE() {
    echo "${CRON1} * * * ${LED1} # ${ZOON1}" >> /etc/crontabs/root
    echo "${CRON2} * * * ${LED2} # ${ZOON2}" >> /etc/crontabs/root
    echo "${CRON3} * * * ${LED3} # ${ZOON3}" >> /etc/crontabs/root
    echo "${CRON4} * * * ${LED4} # ${ZOON4}" >> /etc/crontabs/root
    echo "${CRON5} * * * ${LED5} # ${ZOON5}" >> /etc/crontabs/root
    /etc/init.d/cron restart
    return 0
}

if [ ${SWITCH} = on ]; then
    _LEDTIME
    _ERASE
    _WRITE
elif [ ${SWITCH} = re ]; then
    _LEDTIME
elif [ ${SWITCH} = of ]; then
    _ERASE
fi
EOF


cat << "EOF" > /etc/init.d/led_p_new
#!/bin/sh /etc/rc.common

i2cset -y 1 0x14 0xf 1

START=96
STOP=01

start() {
        i2cset -y 1 0x15 0x00 0xc0
        sleep 3s
		sh /etc/config-software/led_p_new.sh on
        logger "led:start"
        exit 0
}
restart() {
        i2cset -y 1 0x15 0x00 0xe0
        sleep 3s
		sh /etc/config-software/led_p_new.sh re
        logger "led:restart"
        exit 0
}
stop() {
		sh /etc/config-software/led_p_new.sh of
        logger "led:stop"
        exit 0
}
EOF
chmod +x /etc/init.d/led_p_new

service led_p_new enable
service led_p_new start

サービス開始及び停止

# 有効
service led_p_new enable
# 開始
service led_p_new start
# 停止
service led_p_new stop
# 無効
service led_p_new disable

スクリプト実行時間計測

time sh /etc/config-software/led_p_new.sh

削除

service led_p_new stop
service led_p_new disable
rm -rf /etc/config-software/led_p_new.sh
rm -rf /etc/init.d/led_p_new


ZZDFS
#! /bin/ash

cat << "EOF" > /etc/init.d/zzdfs
#! /bin/sh

cat << "EOF" > /etc/init.d/zzdfs
#!/bin/sh /etc/rc.common

INTERVAL=5    # check interval (min)
FB_BAND=40    # fallback band
FB_CHANNEL=36 # fallback channel

START=99
STOP=01
     
start() {
    sleep 1m 15s
    mkdir -p /tmp/config-software/
    RADIO=`uci show wireless | grep "band='5g'" | cut -d'.' -f2 | awk '{ print $1 }'`
    CHS=`echo ${RADIO} | wc -w`
    if [ ${CHS} = 2 ];then
        RADIO=`echo ${RADIO}| awk '{print $2}'`
    fi
    CH=`echo ${RADIO} | grep -o "[0-9]*"`
    echo $(iw dev | awk '/Interface/{print $2}' | grep ${CH}) > /tmp/config-software/dev
    echo ${INTERVAL} > /tmp/config-software/interval
    echo ${RADIO} > /tmp/config-software/radio
    echo ${FB_BAND} > /tmp/config-software/fb_band
    echo ${FB_CHANNEL} > /tmp/config-software/fb_channel
    logger "ZZDFS: Start"
    sed -i "/zzdfs.sh/d" /etc/crontabs/root
    echo "*/${INTERVAL} * * * * sh /etc/config-software/zzdfs.sh # ZZDFS" >> /etc/crontabs/root
    service cron restart
    exit 0
}
restart() {
    exit 0
}
stop() {
    logger "ZZDFS: Stop"
    sed -i "/zzdfs.sh/d" /etc/crontabs/root
    service cron restart
    rm -rf /tmp/config-software
    exit 0
}
EOF
chmod +x /etc/init.d/zzdfs


mkdir -p /etc/config-software/
cat << "EOF" > /etc/config-software/zzdfs.sh
#! /bin/sh

read DEV < /tmp/config-software/dev
iwinfo ${DEV} info 2>&1 | grep -q 'No such wireless device'
if [ $? = 0 ]; then
    read RADIO < /tmp/config-software/radio
    WIFI=`uci get wireless.${RADIO}.disabled`
    if [ "${WIFI}" != 1 ]; then 
        logger "ZZDFS: ZZDFS_On"
        sed -i "/zzdfs.sh/d" /etc/crontabs/root
        /etc/init.d/cron restart
        read INTERVAL < /tmp/config-software/interval
        read FB_CHANNEL < /tmp/config-software/fb_channel
        read FB_BAND < /tmp/config-software/fb_band
        CHANNEL=$(uci get wireless.${RADIO}.channel | tee /tmp/config-software/channel)
        HTMODE=$(uci get wireless.${RADIO}.htmode | tee /tmp/config-software/htmode)
        MODE=`echo ${HTMODE} | grep -o "[A-Z]*"`
        uci set wireless.${RADIO}.channel=${FB_CHANNEL}
        uci set wireless.${RADIO}.htmode=${MODE}${FB_BAND}
        uci commit wireless
        wifi reload ${RADIO}
        i2cset -y 1 0x15 0x00 0xe0
        sleep 30m
        logger "ZZDFS: ZZDFS_Off"
        uci set wireless.${RADIO}.channel=${CHANNEL}
        uci set wireless.${RADIO}.htmode=${HTMODE}
        uci commit wireless
        wifi reload  ${RADIO}
        sleep 1m 10s
        echo "*/${INTERVAL} * * * * sh /etc/config-software/zzdfs.sh # ZZDFS" >> /etc/crontabs/root
        service cron restart
        service led_p_new start
    else
        logger "ZZDFS: ${RADIO}_Disable"
    fi
fi    
EOF


cat <<"EOF" > /usr/bin/zzdfst
#! /bin/sh
read INTERVAL < /tmp/config-software/interval
if [ -n "$1" ]; then
    logger "ZZDFS: Interval_Change"
	description_INTERVAL="$1"
	sed -i -e "s/INTERVAL=${INTERVAL}/INTERVAL=${description_INTERVAL}/g" /etc/init.d/zzdfs
    echo ${description_INTERVAL} > /tmp/config-software/interval
    sed -i "/zzdfs.sh/d" /etc/crontabs/root
    echo "*/${description_INTERVAL} * * * * sh /etc/config-software/zzdfs.sh # DFS ZZDFS" >> /etc/crontabs/root
    service cron restart
    echo " Set time: ${description_INTERVAL} min"
	exit 0
else
	while :
	do
        logger "ZZDFS: Interval_Change"
		echo -e " \033[1;37mInterval time setting\033[0;39m"
        echo -e " \033[1;37mNow Interval: ${INTERVAL} min\033[0;39m"
        read -p " Interval time change (y or q): " input_CHANGE
        if [ "${input_CHANGE}" = "q" ]; then
            exit 0
        fi
		read -p " Interval time (min): " input_INTERVAL
		read -p " Please select key [y or q]: " num
		case "${num}" in
		"y" ) sed -i -e "s/INTERVAL=${INTERVAL}/INTERVAL=${input_INTERVAL}/g" /etc/init.d/zzdfs
              echo ${input_INTERVAL} > /tmp/config-software/interval
              sed -i "/zzdfs.sh/d" /etc/crontabs/root
              echo "*/${input_INTERVAL} * * * * sh /etc/config-software/zzdfs.sh # ZZDFS" >> /etc/crontabs/root
              service cron restart
			  echo " Set time: ${input_INTERVAL} min"
		      exit 0 ;;
	    "q" ) exit 0 ;;
	    esac
    done
fi
EOF
chmod +x /usr/bin/zzdfst


cat <<"EOF" > /usr/bin/zzdfsl
#!/bin/sh
echo -e "\033[1;36mZZDFS\033[0;39m"
echo -e "\033[1;36mLOG ------------------------------------\033[0;39m"
echo -e "\033[1;37mLOG:\033[0;39m"
exec logread | grep "ZZDFS" | awk '{ print $1,$2,$3,$4,$5,$9 }' | tail -n 10
echo -e "\033[1;37mDISABLED:\033[0;39m"
exec logread | grep "DFS->disabled" | awk '{ print $1,$2,$3,$4,$5,$11 }' | tail -n 1
echo -e "\033[1;37mENABLED:\033[0;39m"
exec logread | grep "DFS->ENABLED" | awk '{ print $1,$2,$3,$4,$5,$11 }' | tail -n 1
echo -e "\033[1;36mINFORMATION ----------------------------\033[0;39m"
read INTERVAL < /tmp/config-software/interval
echo -e "\033[1;37mInterval: ${INTERVAL}min\033[0;39m"
read FB_BAND < /tmp/config-software/fb_band
read FB_CHANNEL < /tmp/config-software/fb_channel
read RADIO < /tmp/config-software/radio
HTMODE=$(uci get wireless.${RADIO}.htmode)
MODE=`echo ${HTMODE} | grep -o "[A-Z]*"`
read RADIO < /tmp/config-software/radio
CHANNEL=$(uci get wireless.${RADIO}.channel)
HTMODE=$(uci get wireless.${RADIO}.htmode)
WIFI=`uci get wireless.${RADIO}.disabled` 2>/dev/null
if [ "${WIFI}" != 1 ]; then
    echo -e "\033[1;37mWi-Fi 5G ${RADIO} ENABLE\033[0;39m"   
else
    echo -e "\033[1;37mWi-Fi 5G ${RADIO} DISABLE\033[0;39m"
fi
echo -e "\033[1;37mWi-Fi 5G Channel/ Htmode: ${CHANNEL}Ch/ ${HTMODE}\033[0;39m"
echo -e "\033[1;37mFALLBACK Channel/ Htmode: ${FB_CHANNEL}Ch/ ${MODE}${FB_BAND}\033[0;39m"
echo -e "\033[1;36m----------------------------------------\033[0;39m"
EOF
chmod +x /usr/bin/zzdfsl


service zzdfs enable
service zzdfs start

zzdfsl




モデムモジュール

モデム用LuCi

luci-app-3ginfo-lite
luci-app-modemband
uci-app-sms-tool-js
internet-detector-mod-modem-restart

キャリア基地局

キャリアバンド

  • NTTドコモ: 1,3,19,21,28
  • au (沖縄セルラー、UQ WiMAX含む): 1,11,18,26,28,41
  • ソフトバンク (旧ワイモバイル、WCP含む): 1,3,8,41 (※WCP)

キャリア基地局

  • cellmapper
    • 左サイドバーを展開 > Providerにjapanと入力 > 該当キャリア選択

設定

モデムモジュール設定
grep -q IceG_repo /etc/opkg/customfeeds.conf || echo 'src/gz IceG_repo https://github.com/4IceG/Modem-extras/raw/main/myrepo' >> /etc/opkg/customfeeds.conf
wget https://github.com/4IceG/Modem-extras/raw/main/myrepo/IceG-repo.pub -O /tmp/IceG-repo.pub
opkg-key add /tmp/IceG-repo.pub
opkg update
opkg install kmod-usb-serial
opkg install kmod-usb-serial-option
opkg install kmod-usb-net-qmi-wwan
opkg install kmod-usb-net-cdc-mbim
opkg install kmod-usb-net-cdc-ether
opkg install usbutils
opkg install qmi-utils
opkg install screen
# opkg install minicom
# opkg install picocom 
opkg install luci-proto-qmi
opkg install luci-app-3ginfo-lite
opkg install luci-app-modemband
opkg install mbim-utils
opkg install kmod-usb-net-cdc-mbim
opkg install luci-proto-mbim
opkg install umbim
opkg install modemmanager
opkg install luci-proto-modemmanager	
opkg install usb-modeswitch
opkg install sms-tool
opkg install luci-app-sms-tool	
opkg install luci-app-sms-tool-js
mkdir -p /etc/config-software
# custom feed (log viewer, cpu status, cpu perf, temp status, Internet detector, disk info)
wget --no-check-certificate -O /etc/config-software/pacage_list https://github.com/gSpotx2f/packages-openwrt/raw/master/current/
PACAGE_LIST=`cat  /etc/config-software/pacage_list |sed -ne '/ <script type/,/<\/script>/p' |sed -e 's/<[^>]*>//g'`
#echo $PACAGE_LIST
INTERNET_DETECTOR=`echo ${PACAGE_LIST} | awk '{print substr($0,index($0,"current/internet-detector_1") ,39)}'`
#echo $INTERNET_DETECTOR
wget --no-check-certificate -O /tmp/internet-detector_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/${INTERNET_DETECTOR}
opkg install /tmp/internet-detector_all.ipk
rm /tmp/internet-detector_all.ipk
/etc/init.d/internet-detector enable

LUCI_APP_INTERNET_DETECTER_V=`echo ${PACAGE_LIST} | awk '{print substr($0,index($0,"current/luci-app-internet-detector") ,48)}'`
#echo $LUCI_APP_INTERNET_DETECTER_V
wget --no-check-certificate -O /tmp/luci-app-internet-detector_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/${LUCI_APP_INTERNET_DETECTER_V}
opkg install /tmp/luci-app-internet-detector_all.ipk
rm /tmp/luci-app-internet-detector_all.ipk

INTERNET_DETECTOR_MODEM=`echo ${PACAGE_LIST} | awk '{print substr($0,index($0,"current/internet-detector") ,49)}'`
wget --no-check-certificate -O /tmp/internet-detector-mod-modem-restart_all.ipk https://github.com/gSpotx2f/packages-openwrt/raw/master/${INTERNET_DETECTOR_MODEM}
opkg install /tmp/internet-detector-mod-modem-restart_all.ipk
rm /tmp/internet-detector-mod-modem-restart_all.ipk
/etc/init.d/internet-detector restart

reboot

※luci-app-sms-toolがうまく入らない時はリムーブし再起動後入れなおす

  • デバイス確認
ls -l /dev/cdc-wdm0

lsusb && lsusb -t

  • デバイス検出確認
grep 1bc7 /sys/bus/usb/devices/*/idVendor

  • デバイス検出
echo 1 > /sys/bus/usb/devices/1-1.1/bConfigurationValue

  • ネットワークインターフェイス制御チャンネル確認
qmicli --device=/dev/cdc-wdm0 --device-open-proxy --wda-get-data-format

  • IPタイプ確認
qmicli --device=/dev/cdc-wdm0 --get-expected-data-format

Raw-IP を使用するように qmi_wwan ドライバーを変更

  • ネットワーク インターフェイスを無効
ip link set dev wwan0 down

  • Raw-IP サポートをトリガー
echo Y > /sys/class/net/wwan0/qmi/raw_ip

  • ネットワーク インターフェイスを再度有効
ip link set dev wwan0 up

  • ATコマンド開始
AT
screen /dev/ttyUSB2 115200

screen :
開始: screen /dev/ttyUSB2 115200
終了: Ctrl+a k y
minicom:
開始: minicom -D /dev/ttyUSB2
終了: Ctrl+a q
picocom:
開始: picocom -b 115200 /dev/ttyUSB2
終了: Ctrl+a Ctrl+x

  • エコーバック有効化
    ※大文字入力
AT
ATE1

  • 各情報取得
AT
ATI

  • USBタイプ確認
AT^USBTYPE?

  • モード確認
AT
AT^SETMODE?

Telit Ln940 (Foxconn T77W676):
 Normal Mode=0 (1bc7:1900) MBIM
 Extension Mode=1 (1bc7:1901) MBIM + Serial port
 Legacy Mode=2 (1bc7:1900) QMI + Serial port
HP Lt4220:
 Normal Mode=0 (03f0:0857) MBIM
 Extension Mode=1 (03f0:0a57) MBIM + Serial port
 Legacy Mode=2 (03f0:0857) QMI + Serial port

Linux で libmbim とドライバー cdc_mbim を使用して、MBIM インターフェイス経由で簡単なデータ接続をセットアップするにはどうすればよいですか?

  • モード1変更 MBIM + Serial port
AT
AT^SETMODE= 1

  • バージョン確認
AT
AT^VERSION?

  • キャリアデータ確認
  • ※10秒以上かかる
AT+COPS=?

  • キャリアデータ設定 (docomo)
AT+COPS=0,2,"44010",7

au: AT+COPS=0,2,"44051",7
SoftBank: AT+COPS=0,2,"44020",7
Rakuten: AT+COPS=0,2,"44110",7
UQ: AT+COPS=0,2,"44110",7

  • 自局電話番号確認
AT+CNUM

  • ATコマンド終了
    Ctrl+a k y

  • 登録キャリアデータ確認

qmicli -d /dev/cdc-wdm0 --pdc-list-configs=software

  • 登録キャリアデータ変更 (docomo)
CARRIERDATA='F3D782~'
qmicli -p -d /dev/cdc-wdm0 --pdc-activate-config="software,${CARRIERDATA}"

  • 登録プロファイル確認
qmicli -d /dev/cdc-wdm0 --wds-get-profile-list=3gpp

Rakuten: qmicli -d /dev/cdc-wdm0 --wds-modify-profile=3gpp,1,apn=rakuten.jp,pdp-type=IPV4V6,auth=CHAP,username=,password=,no-roaming=yes

UQ: qmicli -d /dev/cdc-wdm0 --wds-modify-profile=3gpp,1,apn=uqmobile.jp,pdp-type=IP,auth=CHAP,username=uq@uqmobile.jp,password=uq

削除 (リスト1): qmicli -d /dev/cdc-wdm0 --wds-delete-profile=3gpp,1
削除 (リスト2): qmicli -d /dev/cdc-wdm0 --wds-delete-profile=3gpp,2

  • プロファイル登録 (docomo)
qmicli -d /dev/cdc-wdm0 --wds-modify-profile=3gpp,1,apn=spmode.ne.jp,pdp-type=IPV4V6,auth=CHAP,username=spmode,password=spmode,no-roaming=yes

reboot

# インターフェース (docomo)
WWAN="lte"
ZOON_NO='1'
uci set network.lte=interface
uci set network.lte.proto='modemmanager'
uci set network.lte.device='/sys/devices/platform/soc/8af8800.usb3/8a00000.dwc3/xhci-uci set hcd.0.auto/usb2/2-1'
uci set network.${wwan}.apn='spmode.ne.jp'
uci set network.${wwan}.auth='chap'
uci set network.${wwan}.allowedmode='4g'
uci set network.${wwan}.username='spmode'
uci set network.${wwan}.password='spmode'
uci set network.${wwan}.iptype='ipv4v6'
uci set network.${wwan}.loglevel='ERR'
uci set network.${wwan}.auto='0' #ブート時に開始されていません
uci del_list firewall.@zone[${ZOON_NO}].network='wwan'
uci add_list firewall.@zone[${ZOON_NO}].network='wwan'
uci commit network
uci commit firewall

# 3ginfo
uci set 3ginfo.@3ginfo[0]=3ginfo
uci set 3ginfo.@3ginfo[0].network='wwan'
uci set 3ginfo.@3ginfo[0].device='/dev/ttyUSB2'
uci commit 3ginfo

# modemband
MODEM_ID="1bc7:1901" #モード2の場合: 1bc71900
uci set modemband.@modemband[0]=modemband
uci set modemband.@modemband[0].iface='wwan'
uci set modemband.@modemband[0].modemid=${MODEM_ID} #モデムID
uci set modemband.@modemband[0].set_port='/dev/ttyUSB2'
uci commit modemband

# sms_tool
PNUMBER='81'
uci set sms_tool_js.@sms_tool_js[0]=sms_tool_js
uci set sms_tool_js.@sms_tool_js[0].pnumber=${PNUMBER}
uci set sms_tool_js.@sms_tool_js[0].readport='/dev/ttyUSB2'
uci set sms_tool_js.@sms_tool_js[0].sendport='/dev/ttyUSB2'
uci set sms_tool_js.@sms_tool_js[0].ussdport='/dev/ttyUSB2'
uci set sms_tool_js.@sms_tool_js[0].atport='/dev/ttyUSB2'
uci commit sms_tool_js

 reboot
 
  • 接続確認
ifconfig wwan0

qmicli -d /dev/cdc-wdm0 -p --dms-get-ids

qmicli -d /dev/cdc-wdm0 --nas-get-system-selection-preference

qmicli -d /dev/cdc-wdm0 --device-open-proxy --uim-get-card-status

qmicli -d /dev/cdc-wdm0 --nas-get-rf-band-info

qmicli -d /dev/cdc-wdm0 --wds-get-current-settings

qmicli -d /dev/cdc-wdm0 --wds-get-packet-statistics

  • SMS確認
sms_tool -d /dev/ttyUSB2 -j recv

  • PING IPV4
ping -4 -I wwan0 one.one.one.one

  • PING IPV6
ping -6 -I wwan0 one.one.one.one

mbimcli - -help-all

mmcli -L

トラブル

sed -i "/exit 0/d" /etc/rc.local
echo "/sbin/uqmi -d /dev/cdc-wdm0 --set-device-operating-mode offline" >> /etc/rc.local 
echo "/sbin/uqmi -d /dev/cdc-wdm0 --set-device-operating-mode reset" >> /etc/rc.local 
echo "/bin/sleep 20" >> /etc/rc.local 
echo "/sbin/uqmi -d /dev/cdc-wdm0 --set-device-operating-mode online" >> /etc/rc.local 
echo "/sbin/uqmi -d /dev/cdc-wdm0 --set-autoconnect enabled" >> /etc/rc.local 
echo "/sbin/uqmi -d /dev/cdc-wdm0 --network-register" >> /etc/rc.local 
echo "exit 0" >> /etc/rc.local 

  • opkg updateエラー対策
# wget-nossl削除
opkg remove wget-nossl


Interface
 MODEMMANAGER
modemmanager.png

3ginfo-lite
3ginfo1.png
LTE Bands Configuration
band.png
ブロードバンドスピードテスト
wwan3.png

新規設定用 オールインワンスクリプト 初心者対応

デバイス更新

ダウンロードサイト

SSH
wget /tmp/openwrt-23.05.2-ipq40xx-generic-sony_ncp-hg100-cellular-squashfs-sysupgrade.bin https://downloads.openwrt.org/releases/23.05.2/targets/ipq40xx/generic/openwrt-23.05.2-ipq40xx-generic-sony_ncp-hg100-cellular-squashfs-sysupgrade.bin
sysupgrade -v /tmp/openwrt-23.05.2-ipq40xx-generic-sony_ncp-hg100-cellular-squashfs-sysupgrade.bin

Attended Sysupgrade

opkg update
luci-app-attendedsysupgrade
opkg install auc

純正ファームウェアリカバリ

以下参考

#!/bin/sh
echo -en '\x00' | dd of=/dev/mmcblk0p2 bs=1 count=1 seek=28 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p2 bs=1 count=1 seek=48 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p2 bs=1 count=1 seek=68 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p2 bs=1 count=1 seek=88 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p2 bs=1 count=1 seek=108 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p7 bs=1 count=1 seek=28 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p7 bs=1 count=1 seek=48 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p7 bs=1 count=1 seek=68 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p7 bs=1 count=1 seek=88 conv=notrunc
echo -en '\x00' | dd of=/dev/mmcblk0p7 bs=1 count=1 seek=108 conv=notrunc

シリアルコンソール
setenv bootargs 
saveenv

参考

あとがき

先輩方の記事で十分事足りるので、正直だいぶ手抜きな備忘録となった
未使用品も格安で手に入る
シリアル接続は初心者の方には少し敷居が高いと感じるかもしれませんが、
初めてチャレンジしたが、一度やってみると思った程難しくは無かった

参考資料(感謝:relaxed:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0