Skip to content

[BUG]Telit FN990A28 支持与qmi/mbim拨号问题 #251

Description

@duceman495

描述问题
Telit FN990A28 支持不完整,有两个问题:

  1. 识别:modem_support.json 只登记了 fn990a40,没有 fn990a28(FN990 家族有 A40/A28 两个型号,AT 命令集和 USB composition 完全相同),导致 FN990A28 的 AT+CGMM 返回 "FN990A28" 归一化后查不到 profile,扫描器报 modem profile not matched。
  2. 拨号:补上 profile 识别成功后,QMI 拨号一直失败。FN990 在 5G SA 下网络自动建立默认 PDU 会话(模组已拿到运营商 IP),quectel-CM-M 再 requestSetupDataCall 新建同配置会话被拒,报 call_end_reason_verbose = 241(INTERFACE_IN_USE_CONFIG_MATCH),无限重试。MBIM 模式同样失败(mbim_set_connect Status=2)。RNDIS 模式(#USBCFG=0 + 自带自动建链)才能通。

Describe the Issue
Telit FN990A28 support is incomplete:

  1. Recognition: modem_support.json only has fn990a40, not fn990a28 (the FN990 family has A40/A28 variants with identical AT command sets and USB compositions), so FN990A28 fails to match → modem profile not matched.
  2. Dialing: after recognition is fixed, QMI dialing keeps failing. On 5G SA the FN990 auto-establishes the default PDU session (modem already has a carrier IP), and quectel-CM-M's requestSetupDataCall is rejected with call_end_reason_verbose = 241 (INTERFACE_IN_USE_CONFIG_MATCH), retrying forever. MBIM mode fails the same way (Status=2). Only RNDIS mode works.

复现方法

  1. 模组保持默认 QMI 组合(AT#USBCFG=1,PID 1bc7:1070)。
  2. QModem 识别到模组(识别修复后 name=fn990a28)并启用拨号(apn=3gnet,force_set_apn=1)。
  3. 观察拨号日志持续报 241,wwan0 无载波、拿不到 IP,接口一直 down。

Steps to Reproduce

  1. Keep the modem in QMI composition (AT#USBCFG=1, PID 1bc7:1070).
  2. After recognition is fixed (name=fn990a28), enable dialing (apn=3gnet, force_set_apn=1).
  3. The dial log keeps showing 241; wwan0 has no carrier and never gets an IP.

期望行为
quectel-CM-M 应检测到已存在的默认 PDU 会话并复用(查询 current settings / 直接把 IP 绑到接口),而不是永远 requestSetupDataCall 新建一条。

Expected Behavior
quectel-CM-M should detect and reuse the already-active default PDU session instead of always issuing a new requestSetupDataCall.


屏幕截图
(无 / N/A)

Screenshots


日志信息
Log Information

模组配置 (Module Configuration)
# uci show qmodem
qmodem.6_1=modem-device
qmodem.6_1.path='/sys/bus/usb/devices/6-1/'
qmodem.6_1.data_interface='usb'
qmodem.6_1.enable_dial='1'
qmodem.6_1.pdp_type='ipv4v6'
qmodem.6_1.metric='11'
qmodem.6_1.name='fn990a28'
qmodem.6_1.manufacturer='telit'
qmodem.6_1.platform='qualcomm'
qmodem.6_1.suggest_pdp_index='1'
qmodem.6_1.at_port='/dev/ttyUSB3'
qmodem.6_1.apn='3gnet'
qmodem.6_1.force_set_apn='1'
qmodem.6_1.modes='mbim' 'rndis' 'qmi' 'ecm'
qmodem.6_1.valid_at_ports='/dev/ttyUSB3' '/dev/ttyUSB4' '/dev/ttyUSB2'
网络配置 (Network Configuration)
# uci show network(QMI 模式下 device 为 wwan0,RNDIS 模式下为 eth2)
network.wan=interface
network.wan.device='eth0'
network.wan.proto='dhcp'
network.6_1=interface
network.6_1.modem_config='6_1'
network.6_1.proto='dhcp'
network.6_1.defaultroute='1'
network.6_1.metric='11'
network.6_1.device='eth2'
network.6_1v6=interface
network.6_1v6.proto='dhcpv6'
network.6_1v6.device='@6_1'
系统日志 (System Logs)
# 识别(修复前报 profile not matched,修复后正常)
modem_scand: slot=6-1 type=usb modem profile not matched     # 修复前
modem_scand: added modem section=6_1 name=fn990a28 type=usb ports=3 valid=3   # 修复后

# QMI 拨号日志 /var/run/qmodem/6_1_dir/dial_log(核心证据,无限重试 241)
requestGetProfile[pdp:1 index:1] 3gnet///0/IPV4V6
requestSetProfile[pdp:1 index:1] 3gnet///0/IPV4
requestRegistrationState2 MCC: 460, MNC: 1, PS: Attached, DataCap: 5G_SA
requestSetupDataCall QMUXResult = 0x1, QMUXError = 0xe
call_end_reason is 1
call_end_reason_type is 2
call_end_reason_verbose is 241
try to requestSetupDataCall 5 second later
requestSetupDataCall QMUXResult = 0x1, QMUXError = 0xe
call_end_reason_verbose is 241
try to requestSetupDataCall 10 second later
...

# AT 侧证据:会话其实已经自动建立、拿到 IP
AT+C5GREG?     -> +C5GREG: 0,1            (5G 已注册回家网)
AT+CGACT?      -> +CGACT: 1,1             (context 1 已激活)
AT+CGCONTRDP=1 -> +CGCONTRDP: 1,1,"3gnet","10.46.243.196", 网关 10.46.243.197, DNS 202.102.224.68
AT+CGACT=0,1   -> ERROR                   (always-on 会话 UE 侧关不掉)

# MBIM 模式(#USBCFG=2)同样失败
mbim_set_connect(onoff=1, sessionID=0)
< Status = 2
< ActivationState = Deactivated (3)
mbim_set_connect:2023 err=0, Status=2
内核日志 (Kernel Logs)
# QMI 模式(0x1070)下接口 2 绑定 qmi_wwan_q
qmi_wwan_q 6-1:1.2: cdc-wdm0: USB WDM device
qmi_wwan_q 6-1:1.2 wwan0: register 'qmi_wwan_q' at usb-xhci-hcd.1.auto-1

# option 驱动绑定串口
option 6-1:1.0: GSM modem (1-port) converter detected  -> ttyUSB0
option 6-1:1.4: GSM modem (1-port) converter detected  -> ttyUSB1
option 6-1:1.5: GSM modem (1-port) converter detected  -> ttyUSB2
option 6-1:1.6: GSM modem (1-port) converter detected  -> ttyUSB3
option 6-1:1.7: GSM modem (1-port) converter detected  -> ttyUSB4
USB设备信息 (USB Devices)
# QMI 模式(默认,#USBCFG=1)
Bus 006 Device 002: ID 1bc7:1070 Telit Wireless Solutions FN990
    |__ Port 001: Dev 002, If 0, Driver=option
    |__ Port 001: Dev 002, If 1, Driver=[none]      (ADB)
    |__ Port 001: Dev 002, If 2, Driver=qmi_wwan_q  (RmNet/QMI)
    |__ Port 001: Dev 002, If 3, Driver=option      (NMEA)
    |__ Port 001: Dev 002, If 4, Driver=option      (MODEM/AT)
    |__ Port 001: Dev 002, If 5, Driver=option      (MODEM)
    |__ Port 001: Dev 002, If 6, Driver=option      (AUX)

# 当前 workaround:RNDIS 模式(#USBCFG=0)
Bus 006 Device 006: ID 1bc7:1072 Telit Wireless Solutions FN990
    |__ Port 001: Dev 006, If 0, Driver=rndis_host
    |__ Port 001: Dev 006, If 1, Driver=rndis_host
    |__ Port 001: Dev 006, If 2, Driver=option
    |__ Port 001: Dev 006, If 3, Driver=[none]
    |__ Port 001: Dev 006, If 4, Driver=option
    |__ Port 001: Dev 006, If 5, Driver=option
    |__ Port 001: Dev 006, If 6, Driver=option
    |__ Port 001: Dev 006, If 7, Driver=option
模组扫描 (Module Scanning)
# /usr/share/qmodem/modem_scan.sh scan
{"code":0,"message":"queued"}

# 扫描结果(logread)
modem_scand: added modem section=6_1 name=fn990a28 type=usb ports=3 valid=3

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions