使用Pixel1(Verizon)USB共享网络,Ubuntu Xenial下如何编程查询蜂窝信号强度?
当然可行!你的Pixel 1通过USB共享网络时,手机的蜂窝调制解调器会被Ubuntu系统识别为一个移动宽带设备,完全可以通过工具或编程方式获取信号强度。下面是几种实用的方法,适配你的Verizon+Ubuntu Xenial环境:
方法1:用
mmcli(最推荐的标准工具) ModemManager是Linux下管理移动宽带设备的官方服务,mmcli是它的命令行接口,能直接读取专业的蜂窝信号参数:
- 先安装工具包:
sudo apt update && sudo apt install modemmanager mmcli - 重启服务确保识别到你的Pixel:
sudo systemctl restart ModemManager - 列出已识别的调制解调器,找到你的设备路径(类似
/org/freedesktop/ModemManager1/Modem/0):mmcli -L - 查询信号强度(替换成你找到的设备路径):
输出里会包含0-100%的直观信号强度,还有Verizon LTE网络特有的RSRP、RSRQ等专业参数,足够满足大部分需求。mmcli -m /org/freedesktop/ModemManager1/Modem/0 --signal
方法2:直接发送AT命令(底层方式)
如果ModemManager识别有问题,还可以直接和手机的调制解调器串口通信,发送AT指令查询:
- 先找到Pixel对应的串口设备,通常是
/dev/ttyACM*(Pixel系列常用ACM前缀):ls /dev/ttyACM* - 安装
screen工具连接串口:sudo apt install screen - 连接设备(以
/dev/ttyACM0为例,波特率用115200):screen /dev/ttyACM0 115200 - 发送AT指令查询:
- 基础信号查询:
AT+CSQ,返回+CSQ: <rssi>,<ber>,其中<rssi>0-31对应信号强度(31最强,对应-51dBm;0对应-113dBm) - LTE专业参数:
AT+QCSQ,返回RSRP、RSRQ、SINR等更精准的4G信号指标,适配Verizon网络
- 基础信号查询:
- 退出
screen按Ctrl+A再按K,确认退出即可。
方法3:编程实现(Python示例)
如果你要把信号查询集成到自己的程序里,这里有个基于mmcli的Python脚本示例:
import subprocess import json def get_verizon_signal_strength(): try: # 获取调制解调器路径 list_result = subprocess.check_output(["mmcli", "-L"], text=True) modem_path = list_result.strip().split()[-1] if not modem_path.startswith("/org/"): return "未识别到调制解调器" # 查询信号数据(JSON格式方便解析) signal_result = subprocess.check_output( ["mmcli", "-m", modem_path, "--signal", "-J"], text=True ) signal_data = json.loads(signal_result) strength_percent = signal_data["modem"]["signal"]["strength"]["value"] return f"Verizon蜂窝信号强度:{strength_percent}%" except Exception as e: return f"查询失败:{str(e)}" if __name__ == "__main__": print(get_verizon_signal_strength())
额外注意事项
- 如果你用Ubuntu Xenial默认的ModemManager版本识别不到Pixel 1,可以添加PPA更新到新版本:
sudo add-apt-repository ppa:aleksander-m/modemmanager sudo apt update && sudo apt upgrade modemmanager - 访问串口设备可能需要权限,把当前用户加入
dialout组:
注销重新登录后生效。sudo usermod -aG dialout $USER
内容的提问来源于stack exchange,提问作者allyourcode
相关产品推荐
相关产品推荐

