You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下使用mmlib-glib初始化蜂窝调制解调器GDBusConnection失败求助

问题:使用libmm-glib访问蜂窝调制解调器时的DBus连接错误

我在Linux环境下使用libmm-glib开发C应用,用于访问蜂窝调制解调器数据。

当尝试基于路径/dev/cdc-wdm0的GFile创建GFileIOStream并初始化GDBusConnection时,g_dbus_connection_new_sync()调用无限挂起,同时抛出错误:

_g_dbus_worker_do_read_cb: error determining bytes needed: Unable to determine message blob length - given blob is malformed

此后调制解调器要么无法访问,要么编号发生变更(例如从org/freedesktop/ModemManager/Modem/2变为3)。

我还尝试初始化新的GIOStream并传入mm_manager_scan_devices_sync(),但出现以下断言错误:

g_dbus_connection_signal_subscribe: assertion 'sender == NULL || (g_dbus_is_name (sender) && (connection->flags & G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION))' failed

代码示例

#include <libmm-glib.h>
#include <gio/gio.h>
//#include <gtk/gtk.h>
#include <stdio.h>
#include <stdbool.h>

GDBusConnection *pConnection;

int main (void)
{
    printf("begin\n");

    GFile * pFile = g_file_new_for_path("/dev/cdc-wdm0");

    GFileIOStream *pStream = g_file_open_readwrite(pFile, NULL, NULL);

    pConnection= g_dbus_connection_new_sync(pStream,
                                            guid, // for server auth.
                                            G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
                                            NULL, // observer
                                            NULL, // cancellable,
                                            NULL);

    pManager = mm_manager_new_sync(pConnection,
                      G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
                      NULL,
                      NULL);

    mm_manager_scan_devices_sync(pManager,
                                 cancellable,
                                 NULL);

    printf("end\n");
    return(0);
}

调制解调器信息(来自mmcli --modem=0输出)

----------------------------------
  General  |                   path: /org/freedesktop/ModemManager1/Modem/0
           |              device id: 
  ----------------------------------
  Hardware |           manufacturer: Telit
           |                  model: LE910C4-NF
           |      firmware revision: 25.21.660  1  [Mar 04 2021 12:00:00]
           |         carrier config: default
           |           h/w revision: 1.30
           |              supported: gsm-umts, lte
           |                current: gsm-umts, lte
           |           equipment id: 0
  ----------------------------------
  System   |                 device: /sys/devices/platform/soc@0/32c00000.bus/32e50000.usb/ci_hdrc.1/usb1/1-1/1-1.2
           |                drivers: qmi_wwan, option
           |                 plugin: telit
           |           primary port: cdc-wdm0
           |                  ports: cdc-wdm0 (qmi), ttyUSB0 (ignored), ttyUSB1 (gps),
           |                         ttyUSB4 (ignored), wwan0 (net)
  ----------------------------------
  Status   |                   lock: sim-pin2
           |         unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (10), sim-puk2 (10)
           |                  state: connected
           |            power state: on
           |            access tech: lte
           |         signal quality: 75% (cached)
  ----------------------------------
  Modes    |              supported: allowed: 3g; preferred: none
           |                         allowed: 4g; preferred: none
           |                         allowed: 3g, 4g; preferred: 4g
           |                         allowed: 3g, 4g; preferred: 3g
           |                current: allowed: 3g, 4g; preferred: 4g
  ----------------------------------
  Bands    |              supported: utran-4, utran-5, utran-2, eutran-2, eutran-4, eutran-5,
           |                         eutran-12, eutran-13, eutran-14, eutran-66, eutran-71
           |                current: utran-4, utran-5, utran-2, eutran-2, eutran-4, eutran-5,
           |                         eutran-12, eutran-13, eutran-14, eutran-66, eutran-71
  ----------------------------------
  IP       |              supported: ipv4, ipv6, ipv4v6
  ----------------------------------
  3GPP     |                   imei: 3
           |          enabled locks: fixed-dialing
           |            operator id: 311480
           |          operator name: VZW
           |           registration: home
  ----------------------------------
  3GPP EPS |    initial bearer path: /org/freedesktop/ModemManager1/Bearer/0
           |     initial bearer apn: super
           | initial bearer ip type: ipv4
  ----------------------------------
  SIM      |       primary sim path: /org/freedesktop/ModemManager1/SIM/0
           |         sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
           |                         slot 2: none
  ----------------------------------
  Bearer   |                  paths: /org/freedesktop/ModemManager1/Bearer/2
           |                         /org/freedesktop/ModemManager1/Bearer/1

内容的提问来源于stack exchange,提问作者sasukenebe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:10:38