这篇文章上次修改于 675 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

总述

最近折腾了好几次高通410的随身WIFI棒子,因此记录下折腾过程,方面后续查找使用记录

开启9008模式

目前有不少板子,进入9008模式的方法各不相同,记录下我手上所有类型的开启方法:

sp970-B-v11

苏宁uz801

其他

ufi003 & ufi103s_v03 & ufi001b

应该都是按住板子上按钮即可,这几个好像都差不多能直接进,如果不是可以去酷安或者网上搜一下有没有开启方式

前期准备

软件

软件下载,地址转载自

重点是vivo9008drivers.exe、MiKo_Pro.7z和QualcommPremiumTool.7z

vivo9008drivers.exe用于windows支持9008驱动

miko和qpt都是用于备份,防止棒子变砖等各种问题救援恢复的

不过我目前只用过miko恢复就是了,有问题直接miko全盘恢复一遍,再重新进行刷机流程就行

切卡

有些设备切换SIM卡需要密码,一般有以下几种可能:

  • UFIadmin88888
  • L100
  • az952#
  • XBX888

不确定刷成openstick前切卡有没有用,反正我每次刷机前都已经切成卡槽的卡,不过刷完之后能用不能用还是得看兼容性

debian包下载

openstick debian刷机包下载,有些bug

另一个版本的openstick debian刷机包及openwrt刷机包

备份

MiKo备份

MiKo备份出来的是一个binary文件,其中包含整机的所有分区镜像,可用于救砖。

首先运行miko.exe安装Miko,安装完成后先不要运行,进入Miko安装目录,找到miko_service_tool_pro_v5.3_fix.exe,去掉后缀变成miko_service_tool_pro_v5.3_fix,然后将Loader.exe复制到MiKo安装目录,最后运行Loader即可启动Miko。

将棒子进入9008模式后按照下图操作生成备份,备份时间可能较长。

img

读取完成后复制到安全的位置保存即可,如果读取不到分区表请检查驱动是否装好、接触是否良好、机身是否没有指示灯闪烁。

MiKo恢复

打开MiKo,将棒子置于9008模式,并按下图操作恢复:

img

QPT 备份

Qualcomm Premium Tool 备份出来的是所有分区的小镜像,也用于提取部分分区。

首先关闭电脑声音,打开注册机文件夹中的注册机.exe,点击主界面中的Generate Key,在跳出的另存为界面中将.key文件随便保存到哪,然后退出注册机。

打开QualcommPremiumTool.exe,在主界面中点击HelpActivate,导入刚才导出的Key文件即可。

将棒子进入9008模式,按照下图操作生成备份,备份时间可能较长。

img

读取完成后复制到安全的位置保存即可,如果读取不到分区表请检查驱动是否装好、接触是否良好、机身是否没有指示灯闪烁。

ADB开启

目前手上的棒子基本都直接开启了adb,插上电脑之后

adb reboot bootloader

即可进入fastboot模式

好像有一款是没开启adb的?不过应该也是搜一下对应型号就能从网上找到开启办法,之后如果想起来再改吧

刷机

openstick折腾简单教程

  • 如果你的设备之前刷过base.zip,则可以将设备置于fastboot模式后从第4步开始。
  • ufi001b/c之外的版型请使用更为通用的base-generic.zip,然后使用本机型的boot.img替换debian.zip中的boot.img
  1. 解压base.zip压缩包。
  2. 将你的设备置于fastboot模式
  3. 执行其中的flash.bat
  4. 当完成后解压<系统名称>.zip压缩包。
  5. 执行其中的flash.bat
  6. enjoy!

基本就是按照上面教程给的里的内容,先刷入base,然后刷入debian即可,linux下换成执行.sh脚本

Debian换源

这里以清华源为例。如果你装了https://github.com/OpenStick/OpenStick 版本的debian安装包,需要先安装apt install apt-transport-https ca-certificates,更新一下,因为他里面的包太老,直接换清华源会因为证书问题而无法使用,如果已经先把源换掉了,可以直接下载最新的包离线安装,另外里面可能还没有vi,vim,nano等常用编辑器,可以选择adb pull 再push 回去

vi /etc/apt/sources.list

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

禁用mobian源

mv /etc/apt/sources.list.d/mobian.list /etc/apt/sources.list.d/mobian.list.bak

mobian源已经寄了,更新时会报404

debian切卡

刷完后如果你的棒子型号是支持sim卡的,则应该是能直接使用,如果不行,也有可能是因为默认使用的sim卡不对,此时可以参考下面的内容进行切卡

查看sim卡状态

mmcli -m 0

切换esim

首先 openstick debian 下会有两个这样的设备(实际上是把切卡的 GPIO 抽象成灯泡了),可以用 cat 看它是关闭(0)还是开启(1),其中 en 结尾的是外置卡槽,sel 结尾的是 eSIM

也有可能是反过来的,根据实际情况进行切换吧

切换需要至少几十秒的时间,不要着急,连上了自然有网,可以用上面的那条命令检查卡是否识别到

Debian

echo 0 > /sys/class/leds/sim\:en/brightness
echo 1 > /sys/class/leds/sim\:sel/brightness
systemctl restart rmtfs
systemctl restart ModemManager

另外有些棒子可能切卡之后 Modem 还起不来,可以参考这里给 SIM 卡部分重新上电 (我没遇到过)

systemctl stop ModemManager
qmicli -d /dev/wwan0qmi0 --uim-sim-power-off=1 && qmicli -d /dev/wwan0qmi0 --uim-sim-power-on=1
systemctl start ModemManager

网络共享

此时刷完的debian,如果sim卡能用,则万事大吉,反之,如果兼容有问题,sim卡不识别,不能上网等等,这是就会是一个不能联网的棒子,还需要继续配置让他上网

WIFI

OpenStick版本的debian 是无法rndis与wifi热点共存的, 这里给了解决办法

不过这不重要,因为如果家里有无线网,则可以通过nmtui工具直接加入无线网,然后也可以进行联网了,进行软件更新及服务等操作,不涉及wifi热点

不过因为这个棒子的硬件比较垃圾,wifi有可能无法加入先进的wifi6网络,或者因为天线等问题,导致网络波动情况大,这时就不得不使用USB共享网络了

USB共享网络

openstick的adb,rndis使用的是里的gc工具

不过openstick里的gc应该是特别版本,如果用github上的gc编译,会需要修改启动脚本

重要的软件位置,gc在/usr/bin 下,rndis配置脚本在 /usr/sbin/

root@openstick:~# ls /usr/bin/gc -l
-rwxr-xr-x 1 root root 39472 Apr  5 18:18 /usr/bin/gc
root@openstick:~# ls /usr/sbin/mobian-usb-gadget -l
-rwxr-xr-x 1 root root 723 Apr  5 18:28 /usr/sbin/mobian-usb-gadget

编辑gc

修改前记得备份

cp /usr/bin/gc /usr/bin/gc.bak
cp /usr/sbin/mobian-usb-gadget /usr/sbin/mobian-usb-gadget.bak

rndis和adb在linux下显示的id和名字都是直接编译在gc里的,所以刷了相同地包的seies等都是一模一样的,如下:

lsusb
Bus 001 Device 005: ID 18d1:d001 Google Inc. Nexus 4 (fastboot)
adb devices
0123456789 device

如果只有1个设备还好,如果有多个设备且插在同一个主机上,adb直接废了,因此需要修改gc让每个设备都独一无二

为了保证gc可用性,可以通过vim 进行二进制模式编辑,修改完直接保存,保证不会因编译https://github.com/HandsomeMod/gc 里的gc而产生问题

vim -b /usr/bin/gc
进入二进制编辑
:%!xxd
完成后恢复
:%!xxd -r
退出并保存
:wq

二进制内容:

000060a0: 3078 6430 3031 0000 3078 3138 6431 0000  0xd001..0x18d1..
000060b0: 4861 6e64 736f 6d65 5465 6368 0000 0000  HandsomeTech....
000060c0: 4861 6e64 736f 6d65 4d6f 6420 4465 7669  HandsomeMod Devi
000060d0: 6365 0000 0000 0000 3031 3233 3435 3637  ce......01234567
000060e0: 3839 0000 0000 0000 2d68 0000 0000 0000  89......-h......

使用/搜索19d2,定位后直接修改中间的16进制内容

3078 对应 0x ,6430 3031 即是d001 ,3138 6431对应18d1 ,HandsomeTech和HandsomeMod Device可按喜好修改,将字母转换成对应的16进制,进行修改即可, 01234567890修改为自定义series number

最后使用%!xxd -r转化回去,再:wq保存即可

举例我修改后的内容

000060a0: 3078 3035 3336 0000 3078 3139 6432 0000  0x0536..0x19d2..
000060b0: 5269 6e53 7469 636b 5465 6368 0000 0000  RinStickTech....
000060c0: 5269 6e53 7469 636b 4d6f 6420 4465 7669  RinStickMod Devi
000060d0: 6365 0000 0000 0000 3230 3233 3034 3036  ce......20230406
000060e0: 3031 0000 0000 0000 2d68 0000 0000 0000  01......-h......

修改脚本

原版脚本内容

#!/bin/sh

CONFIGFS=/sys/kernel/config/usb_gadget/g1

setup() {
    # Remove All Gadgets If Gadget Exist
    [ -d $CONFIGFS ] && gc -c

    # Setiing Up Rndis
    gc -a rndis
    sleep 1

    # Setting Up Adbd
    gc -a ffs
    mkdir -p /dev/usb-ffs/adb

    # in offical version of gc name will be ffs.x
    mount -t functionfs adb /dev/usb-ffs/adb

    # Fire Up Adbd
    adbd -D &
    # (hack) wait adbd setup
    sleep 1

    # Enable Gadget
    gc -e

}

reset() {
    echo "Removing the USB gadget..."

    # Remove USB gadget
    if [ -d $CONFIGFS ]; then
        echo "Removing gadget configuration..."
        gc -c
    fi
}

case "$1" in
    reset) reset ;;
    setup) setup ;;
    *) ;;
esac

gc -a rndis即为添加rndis网络共享

gc -a ffs为添加adb

gc -e为让配置生效

如果想要添加ecm模式,可以在gc -a rndis后添加gc -a ecm 即可

!!!

警告:如果需要修改启动脚本,一定要先测试脚本里所有gc命令是否能正常使用!!!

另外,进行gc -c 之前务必确认自己还有办法对openstick进行访问!!!

如果丢失了所有能访问openstick的方法,且重启后也不能恢复,估计就只能9008重装了!!!

dhcp修改

nmtui可以直接通过界面修改usb网卡等配置

如果nmtui用不了,且提示

root@openstick:/# nmtui
TERM environment variable needs set.

设置TERM环境变量即可

export TERM=linux

修改完usb网卡ip地址后,还需要修改dhcp配置,方便usb共享网络后客户端能自动配置ip地址

openstick的dhcp配置用的是dnsmasq,修改/etc/dnsmasq.conf文件末尾的配置即可

附上我使用usb共享网络进行上网的配置:

nmcli con show USB
ipv4.addresses:                         10.88.90.5/30
ipv4.gateway:                           10.88.90.6

root@openstick:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.88.90.6      0.0.0.0         UG    1500   0        0 usb0
10.88.90.4      0.0.0.0         255.255.255.252 U     1500   0        0 usb0
root@openstick:~# 
root@openstick:~# tail -2 /etc/dnsmasq.conf 
listen-address=10.88.90.5/30
dhcp-range=10.88.90.6,10.88.90.6,12h

主机:

iptables -P FORWARD ACCEPT 
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING  -s 10.88.90.4/30 -o enp1s0  -j MASQUERADE 

允许转发与配置MASQUERADE

路由器

增加10.88.90.4/30网关为主机ip 的路由

然后可以进行apt update

其他

暂时想不到别的,后面有什么再补