首页
/ OpenWrt中Huawei NCM调制解调器驱动问题的分析与解决

OpenWrt中Huawei NCM调制解调器驱动问题的分析与解决

2025-05-09 00:35:12作者:秋泉律Samson

在OpenWrt 24.10版本中,用户报告了使用Huawei E3306等NCM调制解调器时出现的接口设置失败问题。本文将深入分析该问题的根源,并提供完整的解决方案。

问题现象

当用户尝试在OpenWrt系统中配置NCM类型的wwan接口时,系统日志显示以下错误信息:

Interface 'wwan_ncm' is setting up now
' does not exist or is not an array/objectifd: wwan_ncm: WARNING: Variable 'huawei
wwan_ncm: Unsupported modem

根本原因分析

经过技术分析,发现问题出在/lib/netifd/proto/ncm.sh脚本的第93行。该行代码负责通过gcom工具从调制解调器获取制造商信息,但在处理返回结果时存在两个关键问题:

  1. 换行符处理不完善:调制解调器返回的文本中包含Windows风格的换行符\r\n,而脚本仅考虑了Linux风格的\n

  2. 空行处理缺陷:某些Huawei调制解调器(如E3372h)会在响应开头返回一个空行,导致awk错误地将回车符^M识别为制造商名称

解决方案

针对上述问题,我们提供两种解决方案:

方案一:简单过滤法

修改/lib/netifd/proto/ncm.sh第93行,添加tr命令过滤特殊字符:

manufacturer=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk 'NF && $0 !~ /AT\+CGMI/ { sub(/\+CGMI: /,""); print tolower($1); exit; }' | tr -d '\r\n')

方案二:全面处理法(推荐)

使用更完善的awk处理方式,同时兼容两种换行符并正确处理空行:

manufacturer=$(gcom -d "$device" -s /etc/gcom/getcardinfo.gcom | awk -v RS='\r?\n' 'NF && $0 !~ /AT\+CGMI/ { sub(/\+CGMI: /,""); print tolower($1); exit; }')

技术背景

NCM(Network Control Model)是USB调制解调器的一种通信协议标准。OpenWrt通过huawei_cdc_ncm内核模块支持Huawei设备的NCM功能。当系统识别到Huawei调制解调器时,会创建wwan0网络接口,然后通过ncm.sh脚本完成后续配置。

影响范围

该问题影响以下设备:

  • Huawei E3306
  • Huawei E3372系列(s/h型号)
  • 其他使用类似通信协议的Huawei调制解调器

验证方法

用户可以通过以下命令验证问题是否解决:

ubus call network.interface.wwan_ncm status | jsonfilter -e '@.up'

返回值为true表示接口已成功启动。

总结

OpenWrt系统中NCM协议支持对Huawei调制解调器的文本响应处理存在不足,导致接口配置失败。通过修改ncm.sh脚本中的文本处理逻辑,可以完美解决这一问题。建议用户采用方案二的修改方式,以获得更好的兼容性。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
197
2.17 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
208
285
pytorchpytorch
Ascend Extension for PyTorch
Python
59
94
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
974
574
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
549
81
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.02 K
399
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
393
27
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
1.2 K
133