查看sim卡状态
看Status
就可以知道当前卡的状态和信号强度 如果返回error: couldn't find modem
,可以把你全分区备份里的modem分区用7zip解压了放到/lib/firmware/大概可以解决4g用不了的问题
切换esim 切换需要至少几十秒的时间,不要着急,连上了自然有网,可以用上面的那条命令检查卡是否识别到
Debian
1 2 3 4 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
1 2 3 4 echo 0 > /sys/ class /leds/ sim\:sel/brightness echo 255 > /sys/ class /leds/ sim\:sel2/brightness/etc/i nit.d/rmtfs restart/etc/i nit.d/modemmanager restart
切回内置将0和255换一下位置
查看emmc(emcp)的寿命 1 cat /sys/ class /mmc_host/mm c0/mmc0\:0001/ life_time
返回0x00的话就是看不到,00这个位置的数字就是已用的寿命百分比
debian建新用户 毕竟 root敢死队 是一种很危险的行为,建议日常还是使用sudo而不是直接登录root用户
1 2 3 4 5 6 7 8 9 10 11 12 userdel user adduser me usermod -aG sudo me login sudo su sudo sed -i 's/PermitRootLogin yes/
安装zsh 促进体验 1 2 3 4 5 6 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模式 在切换为host模式时,插入小米的qc3.0充电头可能带来巨大发热(原因未知)
1 2 3 4 echo host > /sys/ kernel/debug/u sb/ci_hdrc.0/ role echo gadget > /sys/ kernel/debug/u sb/ci_hdrc.0/ role
开机自动切换,将下面的内容加到/etc/rc.local
的exit 0
上面
1 2 3 4 5 6 7 # usb auto otg sleep 3 grep 0 /sys/ kernel/debug/u sb/ci_hdrc.0/ device | grep speedif [ $? -eq 0 ] then echo host > /sys/ kernel/debug/u sb/ci_hdrc.0/ role fi
开机等3秒检查是否连接到电脑,没有连接就切换成主机模式可以用公对公接usb设备
Openwrt开机自动联网,解决WiFi限速 本质上Openwrt开机是不会自动联网的,因为启动网络的时候moden还没启动,因此添加启动项来解决这个问题
1 2 3 4 5 sleep 20 /etc/init.d/network restartsleep 10date -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: 在高级设置中,无线信号覆盖密度改为正常(默认是禁用) 启动项都删掉换成这个
1 2 3 4 5 6 7 8 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
信道选择2.4G,旁边填写6或8 安全性选第二个wpa2,不要用wpa3,会一直提示密码错误 回到网桥配置中,ipv4配置改为手动,并添加ip地址,填入网关的地址,默认是192.168.68.1,下面会告诉你怎么改,也可以设置成你想要的网段,那个叫网关地址的必须空着 ipv6配置成忽略(不然下面的ipv6配置不会生效) 移到最下面,确定,返回,退出
如果需要修改网关和分配的ip范围,可以修改/etc/dnsmasq.conf
最后网关和分配ip范围,比如这样,改成192.168.250.1
1 2 3 4 domain =lanlocal =/lan/listen-address =192.168 .250.1 dhcp-range =192.168 .250.100 ,192.168 .250.254 ,12 h
上面加的两行可以使其可以解析局域网的主机名 另外还需要修改/etc/hosts
,在第一行加上192.168.250.1 你的主机名
保证解析的可以被其他设备访问,主机名在/etc/hostname
也是可以修改的
继续配置Ap,启用试试看,如果失败了,可以adb shell上去修改,以下命令请在adb shell下一行行运行(因为网会断)
1 2 3 4 5 6 7 8 9 10 11 12 13 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.proxy_ndp=1" >> /etc/sysctl.conf echo "net.ipv6.conf.all.accept_ra=2" >> /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 systemctl enable dnsmasq.service systemctl start dnsmasq.service
这样就配置好了ap,试一下能不能搜到ap,能的话那就完成了如果重启后获取不到ip,可以多运行几次dnsmasq.service
那两行,后面就没有问题了
Debian在没连上WiFi的时候自动开Ap 首先按照上面配置Ap 编辑/root/autoap.sh
,写入下面的内容
1 2 3 4 5 6 7 8 9 #!/bin/sh nmcli connection down wlan0sleep 30 ip="`ifconfig | grep wlan0 -A 1 | grep inet | awk '{print $2 }'`" if [ ! -z "$ip " ]; then echo $ip else nmcli connection up wlan0fi
然后将sh /root/autoap.sh &
加到/etc/rc.local
的exit 0
上面就完成了 开机时会自动停用ap30秒去连接已保存wifi,如果没连上就会打开ap便于配置新的wifi连接
moden的ipv6给Ap共享 首先按照上面配置Ap,特别是ipv6
那几行一定要配置,不然有ip没网 安装依赖,可能会问你监听接口,回答br0
1 apt install ndppd radvd wide-dhcpv6-server
创建文件/etc/NetworkManager/dispatcher.d/dhcpv6
贴进去
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #!/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':' ) 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 10 systemctl restart dnsmasq sleep 10 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_conffi
然后chmod +x /etc/NetworkManager/dispatcher.d/dhcpv6
还需要创建几个配置文件模板/etc/ndppd.conf.me
1 2 3 4 5 6 7 8 proxy wwan0 { router yes timeout 500 ttl 30000 rule REPLACE_PREFIX_HERE { auto } }
/etc/radvd.conf.me
1 2 3 4 5 6 7 8 9 10 11 12 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
1 2 3 4 5 6 7 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) 查看当前支持的频率,不同的内核不一样
1 cat /sys/ devices/system/ cpu/cpufreq/ policy0/scaling_available_frequencies
将以下内容添加到开机启动项,限制最高频率为400mhz
1 echo 400000 > /sys/ devices/system/ cpu/cpufreq/ policy0/scaling_max_freq
另外还有一种直白明了的办法,安装sudo apt-get install cpufrequtils
修改/etc/init.d/cpufrequtils
来实现设置频率最高频率为600mhz
1 2 MAX_SPEED ="600" MIN_SPEED ="0"
修改Debian连上ssh时的提示 编辑/etc/update-motd.d/10-uname
即可修改 比如最后加一个modem信号显示
1 mmcli -m 0 |grep signal|awk '{print $2 " " $3 " " $4 "\n" }'
查看效果run-parts /etc/update-motd.d
Debian启动时从modem同步时间 因为Debian下moden的时间其实是不对的,他显示他是+8时区其实是utc时间,modem启动也巨慢,所以要这样操作一下
1 2 3 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
上面
Debian远程桌面 1 2 3 4 5 6 7 8 9 10 sudo apt install xrdp sudo apt install lxde-core sudo apt install fonts-noto-cjk sudo apt-get install chromium sudo apt-get install chromium
然后用微软的远程桌面客户端连上去就可以用了
Debian Btrfs修改压缩率 使用更高的压缩率可以减少空间占用,但占用更多的cpu 本着emmc慢成狗cpu十分富裕,可以考虑采用更高的压缩率,默认3,可以设置1到15,不建议大于8 修改/etc/fstab
将其中zstd
改为zstd:6
即可将压缩等级改为6 为了避免修改错误,导致无法开机,可以先在下面这条命令上做修改,并运行进行挂载测试(比配置中的多了一个remount的选项)
1 sudo mount -o remount,defaults,noatime,compress=zstd:6 ,commit=120 /dev/mmcblk0p14 /
可以使用这条命令对根分区进行压缩,系统占用大约700m左右,压缩从3调成6可以把占用从2g降到1.4g
1 sudo btrfs file system defragment -r -v -czstd /
固件 咩咩按照上面配置好并备份了一份rootfs在这 咩咩云 可以先一键刷入其他必要的东西,再按键进9008刷这个rootfs会比较快(不用9008直接解压改成rootfs.img和一键放一起也能刷) 至于密码是什么嘛,自己adb shell
上去用passwd root
改吧 配置好了自动切换usb,自动切换连wifi还是开热点,以及透明◯◯服务在2017端口
贴一个咩咩的Debian的/etc/rc.local
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #!/bin/ sh sleep 5 grep 0 /sys/ kernel/debug/u sb/ci_hdrc.0/ device | grep speedif [ $? -eq 0 ] then echo host > /sys/ kernel/debug/u sb/ci_hdrc.0/ role echo usb-host >/sys/ class /leds/g reen\:internet/trigger #echo timer > /sys/ class /leds/g reen\:internet/trigger #echo 1 > /sys/ class /leds/g reen\:internet/delay_on #echo 1999 > /sys/ class /leds/g reen\:internet/delay_offelse echo usb-gadget >/sys/ class /leds/g reen\:internet/trigger fi 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'`" bash /etc/ NetworkManager/dispatcher.d/ dhcpv6 wwan0 &
补充一下nftables的转发规则
1 2 3 4 nft add table ip6 nat nft flush table ip6 nat nft add chain ip6 nat postrouting '{ type nat hook postrouting priority 100; }' nft add rule ip6 nat postrouting ip6 saddr "$prefix ::/64" ip6 daddr != "$prefix ::/64" counter masquerade
重启后wlan0没起来,检查是nmtui新建WiFi的时候WiFi密码没保存成功。解决方法: 在/etc/NetworkManaget/systen-connections/你的WiFi配置名.nmconnection
文件中,key-mgmt
行下加入一行: psk=你的WiFi密码
,保存后执行nmcli c reload
即可立即生效。
转自https://zyyme.com/msm8916-wifi.html
备忘使用