社区讨论LinuxDo 最新
用 R28S 做双地区 Wi-Fi Calling 自动切换
giffgaff 发过封号邮件之后,我就顺手办了 T-Mobile。结果没想到 giffgaff 到期之后又没封,正好又看到 140 块的 R28S,就想着拿它折腾一下一台设备挂两个号码,每天按时段轮流拉起 Wi-Fi Calling。 首先是 R28S。官方 FriendlyWrt 镜像默认的网络中断和软中断分配不太理想,大流量和透明代理场景下容易出现部分 CPU 先跑满,所以先做一点简单调优: IRQ 48 固定到 CPU1 echo 1 /proc/irq/48/smp affinity list eth0…
内容摘要
作者:#madwind
板块:#开发调优
giffgaff 发过封号邮件之后,我就顺手办了 T-Mobile。结果没想到 giffgaff 到期之后又没封,正好又看到 140 块的 R28S,就想着拿它折腾一下一台设备挂两个号码,每天按时段轮流拉起 Wi-Fi Calling。
首先是 R28S。官方 FriendlyWrt 镜像默认的网络中断和软中断分配不太理想,大流量和透明代理场景下容易出现部分 CPU 先跑满,所以先做一点简单调优:
# IRQ 48 固定到 CPU1
echo 1 > /proc/irq/48/smp_affinity_list
# eth0 RX 分配到 CPU0/2/3
echo d > /sys/class/net/eth0/queues/rx-0/rps_cpus
# eth1 RX 分配到 CPU1/2/3
echo e > /sys/class/net/eth1/queues/rx-0/rps_cpus
# 关闭 eth0 RFS
echo 0 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
# 关闭 eth1 RFS
echo 0 > /sys/class/net/eth1/queues/rx-0/rps_flow_cnt
# 关闭全局 RFS
sysctl -w net.core.rps_sock_flow_entries=0
# 开启 eth1 SG / TSO / GSO
ethtool -K eth1 sg on tso on gso on
接下来才是 Wi-Fi Calling。
iOS 快捷指令没办法主动切换 AP。如果有两个地区要分别拉 Wi-Fi Calling,正常思路基本就得准备两套设备;而且 iPhone 黑屏以后,Wi-Fi 也不一定会立刻主动重连。
所以我的思路是把这部分放到 R28S 上处理:
按时段开关 AP,并劫持对应 AP 的流量到指定透明代理。
R28S 本身自带 Wi-Fi,刚好可以直接拿来做 AP,不需要再额外接无线设备(虽然信号孱弱, 实测2.4G channel 6 可以打开, 其它channel甚至有可能无法启动)不同 SSID 可以直接对应不同地区和出口,比如 giffgaff 对应 UK,T-Mobile 对应 US;切换 AP 本身就等于切换整套网络环境,配置会简单很多。
主动从 DNS 学习 loc 相关 IP,并针对这部分流量走 MITM。
iOS 快捷指令只负责“唤醒 + 开关卡”。
检测到 Wi-Fi 断开时,创建一个 1 分钟后的闹钟,再延迟 10 秒关闭,利用闹钟强制亮屏,让手机重新连接 Wi-Fi;检测到 Wi-Fi 已连接后,再打开或关闭对应的 SIM。
这样组合下来,基本就能做到:不同时间段自动切换 AP、出口和对应 SIM,让两个号码轮流保持 Wi-Fi Calling 在线。
刚来论坛也不是很清楚项目分享规定, 看着好像要填很多东西, 就不放链接了, 思路很简单, 丢给AI做一个也很快
iOS 26.6.1 暂时也没敢升 26.6.2 有没有试过wloc的大佬说一句能不能升
资讯来源
LinuxDo