随身WiFi棒子
这些4G随身WiFi棒子大多是卖内置esim卡的流量赚钱,所以都卖的很便宜(大概10元,早期5元),但性能却不差,有的还自带卡槽可以插自己的卡,有骁龙210,410,还有中兴微三种,本文主要以刷了Linux后的骁龙410的随身WiFi棒子UFI003(UFI001C)展开,如果为了上网,而不是为了折腾着玩,请优先选择旧手机开热点而不是这种WiFi棒子
备份
常在河边走哪有不湿鞋,做一个完整的备份以便不时之需
视频教程:BV1sG4y1E7oG
顺便说一下,基带存在fsg modemst1 modemst2这三个分区里,所以其实备份了这三个分区相当于备份了基带,备份好这三个分区,再用星海备份基带擦除基带写入基带这一波操作,可能会全网通,也可能没信号
至于移动4g用不了,那是硬件只支持一个冷门的频段,用不了也不奇怪了,大多数应该都能很好的支持电信4G,联通可能要操作一下,我没有联通卡不知道,全网通的设备在cpu那面可以看到有一个1cm*0.5cm的长方形射频芯片,大部分是没有的,大部分都只能用电信卡(联通可能也行)
查看sim卡状态
mmcli -m 0
看Status
就可以知道当前卡的状态和信号强度
如果返回error: couldn't find modem
,可以把你全分区备份里的modem分区用7zip解压了放到/lib/firmware/大概可以解决4g用不了的问题
切换esim
切换需要至少几十秒的时间,不要着急,连上了自然有网,可以用上面的那条命令检查卡是否识别到
Debian
echo 0 > /sys/class/leds/sim\:sel/brightness
echo 1 > /sys/class/leds/sim\:sel2/brightness
systemctl restart rmtfs
systemctl restart ModemManager
切回内置将0和1换一下位置
Openwrt
echo 0 > /sys/class/leds/sim\:sel/brightness
echo 255 > /sys/class/leds/sim\:sel2/brightness
/etc/init.d/rmtfs restart
/etc/init.d/modemmanager restart
切回内置将0和255换一下位置
查看emmc(emcp)的寿命
cat /sys/class/mmc_host/mmc0/mmc0\:0001/life_time
返回0x00的话就是看不到,00这个位置的数字就是已用的寿命百分比
debian建新用户
毕竟 root敢死队 是一种很危险的行为,建议日常还是使用sudo而不是直接登录root用户
# 默认有个叫user的普通用户,把它删掉空出1000的uid和gid
userdel user
# 添加用户me 可以改成你喜欢的名字
adduser me
# 把用户me添加到sudu组
usermod -aG sudo me
# 登录测试一下 输入刚刚建的用户名和密码尝试登录吧
login
# 使用sudu切换到root试一下 确保sudu正常工作
sudo su
# 禁用root用户直接登录ssh
sudo sed -i 's/PermitRootLogin yes/# PermitRootLogin yes/g' /etc/ssh/sshd_config
安装zsh 促进体验
sudo apt update
sudo apt install git zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="ys"/g' .zshrc
echo 'export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH' >> .zshrc
zsh
切换usb的otg模式
# 切换成usb主机模式(otg模式)
echo host > /sys/kernel/debug/usb/ci_hdrc.0/role
# 切换为默认的从机模式(接电脑的usb网络共享和adb)
echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role
开机自动切换,将下面的内容加到/etc/rc.local
的exit 0
上面
# usb auto otg
sleep 3
grep 0 /sys/kernel/debug/usb/ci_hdrc.0/device | grep speed
if [ $? -eq 0 ]
then
echo host > /sys/kernel/debug/usb/ci_hdrc.0/role
fi
开机等3秒检查是否连接到电脑,没有连接就切换成主机模式可以用公对公接usb设备
Openwrt开机自动联网,解决WiFi限速
本质上Openwrt开机是不会自动联网的,因为启动网络的时候moden还没启动,因此添加启动项来解决这个问题
# modem auto start time sync
sleep 20
/etc/init.d/network restart
sleep 10
date -s "`mmcli -m 0 --time|grep -E "Time " | awk -F " " '{print $5,$NF}'|awk -F "+" '{print $1,$3}'|awk -F "T" '{print $1,$2}'| awk '{gsub(/^\s+|\s+$/, "");print}'`"
注意了,如果重启网络服务,usb网络共享的mac地址是会变的,所以我们需要给他固定一个值
打开网络,接口,顶部的设备,找到usb0,配置,把它显示的mac地址抄一份填进去保存(注意是半角英文冒号)
修改ap设置,带宽20mhz,信道6,底部开启wmn,wifi可以稳定9mbps
另外有个玄学操作,有概率提升到19mbps:
在高级设置中,无线信号覆盖密度改为正常(默认是禁用)
启动项都删掉换成这个
# modem auto start time sync
sleep 20
/etc/init.d/network restart
uci set wireless.default_radio0.wmm=1
wifi up
sleep 10
date -s "`mmcli -m 0 --time|grep -E "Time " | awk -F " " '{print $5,$NF}'|awk -F "+" '{print $1,$3}'|awk -F "T" '{print $1,$2}'| awk '{gsub(/^\s+|\s+$/, "");print}'`"
uci set wireless.default_radio0.wmm=0
最后我选择手动将Debian配置成一个路由器,折腾了一天,完美的实现了op的所有功能,可以继续往下看
顺带提一下,可以通过开启ipv4转发(下面Ap配置时开了),并且安装v2◯◯◯a让开出来的热点实现透明◯◯,安装看官方文档,换iptable的那步不要做
Debian的Ap配置
adb shell上去nmtui
添加网桥br0
网桥里添加以太网,名称设备usb0
网桥里添加wi-fi,模式选成接入点,这就是ap的信息,名称设备wlan0
安全性选第二个wpa2,不要用wpa3,一直提示密码错误
回到网桥配置中,ipv4配置改为手动,并添加ip地址,填写网关地址(默认是192.168.68.1,下面会告诉你怎么改,也可以先设置成你想要的网段)
移到最下面,确定,返回,退出
如果需要修改网关和分配的ip范围,可以修改/etc/dnsmasq.conf
最后网关和分配ip范围,比如这样,改成192.168.250.1
listen-address=192.168.250.1
dhcp-range=192.168.250.100,192.168.250.254,12h
继续配置Ap,启用试试看,如果失败了,可以adb shell上去修改
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p
nmcli connection up br0
systemctl enable dnsmasq.service
systemctl start dnsmasq.service
nmcli connection show
nmcli connection up usb0
nmcli connection up wlan0
这样就配置好了ap,试一下能不能搜到ap,能的话那就完成了
如果重启后获取不到ip,可以将systemctl start dnsmasq.service
写到/etc/rc.local
中,因为可能br0启动比dnsmasq慢,导致没有ip没法监听
Debian在没连上WiFi的时候自动开Ap
首先按照上面配置Ap
编辑/root/autoap.sh
,写入下面的内容
nmcli connection down wlan0
sleep 30
ip="`ifconfig | grep wlan0 -A 1 | grep inet | awk '{print $2}'`"
if [ ! -n $ip ]
then
echo $ip
else
nmcli connection up wlan0
fi
然后将sh /root/autoap.sh &
加到/etc/rc.local
的exit 0
上面就完成了
开机时会自动停用ap30秒去连接已保存wifi,如果没连上就会打开ap便于配置新的wifi连接
moden的ipv6给Ap共享
首先按照上面配置Ap
安装依赖,可能会问你监听接口,回答br0
apt install ndppd radvd wide-dhcpv6-server
创建文件/etc/NetworkManager/dispatcher.d/dhcpv6
贴进去
#!/usr/bin/env bash
interface=$1
event=$2
if [ "$interface" == "wwan0" ]; then
prefix=$(ip -6 addr show dev wwan0| sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'|head -n 1|cut -f'1-4' -d':')
# just assume prefix length /64 here
echo "get prefix $prefix::/64"|systemd-cat -t ipv6_conf
cp /etc/ndppd.conf.me /etc/ndppd.conf
sed -i "s/REPLACE_PREFIX_HERE/$prefix:2333::\/80/g" /etc/ndppd.conf
cp /etc/radvd.conf.me /etc/radvd.conf
sed -i "s/REPLACE_PREFIX_HERE/$prefix:2333::\/64/g" /etc/radvd.conf
cp /etc/wide-dhcpv6/dhcp6s.conf.me /etc/wide-dhcpv6/dhcp6s.conf
sed -i "s/PREFIX_MIN/$prefix:2333::2000/g" /etc/wide-dhcpv6/dhcp6s.conf
sed -i "s/PREFIX_MAX/$prefix:2333::3000/g" /etc/wide-dhcpv6/dhcp6s.conf
systemctl restart radvd
systemctl restart ndppd
systemctl stop wide-dhcpv6-server
systemctl start wide-dhcpv6-server
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
sleep 30
echo "setting route" |systemd-cat -t ipv6_conf
ip -6 addr add $prefix:2333::1/80 dev br0
ip -6 route add $prefix::/65 dev br0
ip -6 route add $prefix:8000::/65 dev br0
ip -6 route |systemd-cat -t ipv6_conf
fi
然后chmod +x /etc/NetworkManager/dispatcher.d/dhcpv6
还需要创建几个配置文件模板/etc/ndppd.conf.me
proxy wwan0 {
router yes
timeout 500
ttl 30000
rule REPLACE_PREFIX_HERE {
auto
}
}
/etc/radvd.conf.me
interface br0 {
AdvSendAdvert on;
AdvOtherConfigFlag on;
AdvManagedFlag on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
prefix REPLACE_PREFIX_HERE {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr off;
};
};
/etc/wide-dhcpv6/dhcp6s.conf.me
interface br0 {
address-pool pool1 3600;
};
pool pool1 {
range PREFIX_MIN to PREFIX_MAX ;
};
降低发热 调节cpu频率
众所周知,骁龙的基带是真的烫,甚至可以比cpu都烫(比如iPhone12),只连WiFi不插卡的就没有这个问题
默认主频是四核998.4mhz,平时会一直跑在800mhz,但负载只有0.3,导致在插卡长时间工作的时候巨烫,因此将cpu频率减半,降到400mhz,温度就暖暖的一点也不烫了(四核400mhz的温度应该低于双核800mhz)
查看当前支持的频率,不同的内核不一样
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies
将以下内容添加到开机启动项,限制最高频率为400mhz
echo 400000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
修改Debian连上ssh时的提示
编辑/etc/update-motd.d/10-uname
即可修改
比如最后加一个modem信号显示
mmcli -m 0|grep signal|awk '{print $2" "$3" "$4"\n"}'
查看效果run-parts /etc/update-motd.d
Debian启动时从modem同步时间
因为Debian下moden的时间其实是不对的,他显示他是+8时区其实是utc时间,modem启动也巨慢,所以要这样操作一下
sleep 25
date -s "`mmcli -m 0 --time|grep -E "Time " | awk -F " " '{print $5,$NF}'|awk -F "+" '{print $1,$3}'|awk -F "T" '{print $1,$2}'| awk '{gsub(/^\s+|\s+$/, "");print}'`"
date -s "`date -d +8hour '+%Y-%m-%d %H:%M:%S'`"
systemctl start dnsmasq.service
加入/etc/rc.local
的exit 0
上面(最好写在你写的内容的最上面)
led灯控制
在/sys/class/leds/
有三个led,分别是blue,green,red,其他的是控制卡槽等设备的入口,可以修改led的触发器实现不同的功能
查看所有触发器cat /sys/class/leds/green\:internet/trigger
框起来那个就是当前的
比如把绿色灯改为usb网络指示灯echo usb-gadget >/sys/class/leds/green\:internet/trigger
需要永久修改需加入/etc/rc.local
的exit 0
上面
如果咩咩的文章对你有帮助,您可以 请我喝牛奶