USB 调制解调器尝试连接时出现“ip-config-unavailable”错误

Mas*_*oor 13 network-manager networking modem usb-modem mobile-broadband

我有一个中兴 MF-193E 调制解调器,它以前运行良好。当我一年多前购买这款调制解调器时,它开箱即用。现在,随着 Ubuntu 版本的不断进步,对我来说事情变得越来越困难。

这个调制解调器甚至可以在几个月前使用 Ubuntu 15.04(64 位)。现在,在 Ubuntu 15.10(64 位)中,它无法连接。

我已经建立了移动宽带连接。我已经为 APN 尝试了各种字符串,但这以前不是问题。

(调制解调器在 Windows 10 中工作正常,因此,这根本不是硬件问题。此外,调制解调器管理器 GUI 可以很好地检测到此设备。可以毫无问题地发送和接收 SMS。)

当我插入调制解调器时,它被检测到,Unity 中会显示一个带有调制解调器名称的 CD 图标。几秒钟后,我收到一个消息框

Mobile Broadband Network: you are registered on the home network
Run Code Online (Sandbox Code Playgroud)

靠近网络图标。

当我尝试连接时,网络管理器小程序中的无线图标启动了这些离心运动,但最终无法连接,并且一条消息告诉我我处于离线状态。

我可以隔离的线路/var/log/syslog是这样的,

NetworkManager[628]: <info>  (ttyUSB1): device state change: ip-config
> -> failed (reason 'ip-config-unavailable') [70 120 5]
Run Code Online (Sandbox Code Playgroud)

不过,我不确定这是否相关。

/var/log/syslog可以在此处找到更多行 。


更新 1 - 2015 年 12 月 6 日

正如一位成员所指出的那样,尝试了nf_conntrack_pptp模块方法。

执行了以下命令,

$ lsmod | grep nf_conntrack_pptp | wc -l
0

$ sudo modprobe nf_conntrack_pptp
lsmod | grep nf_conntrack_pptp
nf_conntrack_pptp      20480  0
nf_conntrack_proto_gre    16384  1 nf_conntrack_pptp
nf_conntrack          106496  2 nf_conntrack_proto_gre,nf_conntrack_pptp
Run Code Online (Sandbox Code Playgroud)

然后尝试了我的调制解调器,同样失败。日志中也没有明显的变化。


更新 2 - 2015 年 12 月 6 日

以root身份执行,

systemctl restart network-manager.service
Run Code Online (Sandbox Code Playgroud)

屏幕(终端)上没有输出。

可以在此处找到从上述点到尝试使用调制解调器连接的相应日志。


更新 3 - 2015 年 12 月 6 日

安装ofono,然后再次尝试调制解调器。

请在此处查看日志。


更新 4 - 2015 年 12 月 6 日

再次以 root 身份执行,

systemctl restart network-manager.service
Run Code Online (Sandbox Code Playgroud)

可以在此处找到从上述点到尝试使用调制解调器连接的相应日志。


更新 5 - 2015 年 12 月 6 日

将所有“拒绝”更改为“允许” /etc/dbus-1/system.d/nm-dispatcher.conf

尝试连接。没运气。

一些网络连接和断开以太网连接。

紧随其后sudo systemctl restart network-manager.service

调制解调器拔出并插入。

再次尝试连接。不连接。

日志在这里


更新 6 - 2015 年 12 月 6 日

已执行

sudo killall ModemManager; sudo ModemManager --debug 2>&1 | tee /tmp/modem.log.txt
Run Code Online (Sandbox Code Playgroud)

export NM_PPP_DEBUG=1
sudo NetworkManager --no-daemon 2>&1 | tee /tmp/nm.log.txt
Run Code Online (Sandbox Code Playgroud)

mm-test.py由于多个错误而无法运行。确实在指定的位置找到了文件。从https://github.com/openshine/ModemManager/blob/master/test/mm-test.py得到这个。

以上命令与维基中的命令有些不同。

日志文件在这里


更新 7 - 2015 年 12 月 7 日

再次执行(在建议更改/lib/udev/rules.d/40-usb_modeswitch.rules并重新启动后)

sudo killall ModemManager; sudo ModemManager --debug 2>&1 | tee /tmp/modem.log.txt
Run Code Online (Sandbox Code Playgroud)

sudo NM_PPP_DEBUG=1 /usr/sbin/NetworkManager --log-level=debug --no-daemon > /tmp/nm.log.txt
Run Code Online (Sandbox Code Playgroud)

/var/log/syslog被包括在内。

日志文件在这里


更新 8 - 2015 年 12 月 8 日

更新的日志集在这里


更新 9 - 2015 年 12 月 8 日

测试 1

  1. 这次是从 Ubuntu 14.04 32 位 DVD 启动计算机。电脑一开机,就开始抓MM日志。

  2. 插入调制解调器。lsusb显示它被识别为 19d2:1232 设备,需要切换到 19d2:2003 设备。由于安装 usb-modeswitch 需要重新启动机器(因此会丢失 DVD 运行的安装),我准备了一个自定义开关文件并从命令行切换调制解调器(sudo usb_modeswitch -I -c 19d2:2003 )。

  3. 切换完成后,我被告知我已打开Mobile Broadband Network并且网络管理器菜单中出现了一个新的宽带连接。

  4. 我以通常的方式设置了上述连接(APN名称不是问题),并且连接自动建立。

  5. 我断开并弹出调制解调器。

  6. 停止捕获 MM 日志。

可以在此处找到会话开始到调制解调器弹出的完整 MM 日志和系统日志。

测试 2

使用 Ubuntu 14.04 64 位 DVD 进行相同测试。

日志可以在这里找到。


更新 10 - 2015 年 12 月 9 日

这次测试wvdial发现,如果wvdial以root身份运行,我们就成功连接了。

wvdialconf以日志和系统日志对应的是这里

初步猜想:情况可能与对应用户的用户组有关。

但正如这里所指出的,

使用所有这些工具,要建立拨号连接,用户必须是“dip”和“dialout”组的成员,因此将所有应该通过拨号连接的用户放入这些组。

但是我们可以发现,

$ groups masroor
masroor : masroor adm dialout cdrom sudo dip plugdev lpadmin sambashare family wireshark
Run Code Online (Sandbox Code Playgroud)

因此,用户已经是指定组的成员。

现在,也许问题归结为以下任一点,

  1. 用户需要是哪个附加组?
  2. 我们如何以 root 身份运行移动宽带连接设置过程?(安全问题?)

更新 11 - 2015 年 12 月 9 日

wvdial与USB3工作,它与USB1工作。

请在此处找到系统日志。

还包括dmesg | grep tty > /tmp/dmesg.tty.txt. 但是看到文件开头附近的那四行了吗?


更新 12 - 2015 年 12 月 10 日

  1. 注释掉第 4 ( SUBSYSTEM!="tty", GOTO="mm_zte_port_types_end")行/lib/udev/rules.d/77-mm-zte-port-types.rules

  2. 重新启动了我的机器。软断开电缆并插入调制解调器。

  3. 尝试连接。不成功。

系统日志文件在这里


更新 13 - 2015 年 12 月 10 日

出于绝望,为了查看是否有一些本地更改影响了连接,使用 Ubuntu 15.04 和 15.10 DVD 测试了机器。

  1. 使用 Xubuntu 15.04 64 位 DVD 启动机器。连接成功了。
  2. 使用 Ubuntu 15.10 64 位 DVD 启动机器。连接失败,就像以前一样。

15.04 和 15.10 之间发生了什么?

太令人沮丧了。


更新 14 - 2015 年 12 月 10 日

  1. /lib/udev/rules.d/78-mm-zte-port-types-RALPH.rules按照答案中的说明创建了一个新文件。

  2. 重新启动我的机器(或执行sudo udevadm control --reload,实际上都尝试了)。插入调制解调器。

  3. 调制解调器被识别。

    $ lsusb
    Bus 001 Device 005: ID 19d2:2003 ZTE WCDMA Technologies MSM
    
    Run Code Online (Sandbox Code Playgroud)
  4. 软断开电缆并尝试使用调制解调器连接。不成功。

  5. 弹出调制解调器。

机器挂了一次,是随机事件吗?我的机器通常不会一年挂一次。

系统日志文件和创建的规则文件在这里


更新 15 - 2015 年 12 月 11 日

  1. 将以下行添加到/lib/udev/rules.d/40-usb_modeswitch.rules.

    # ZTE MF193E
    ATTR{idVendor}=="19d2", ATTR{idProduct}=="1232", RUN+="usb_modeswitch '%b/%k'"
    
    Run Code Online (Sandbox Code Playgroud)
  2. /lib/udev/rules.d/78-mm-zte-port-types-RALPH.rules保持文件完好无损。

  3. 重新启动了我的机器。插入调制解调器。

  4. 调制解调器被识别。

    Bus 001 Device 005: ID 19d2:2003 ZTE WCDMA Technologies MSM
    
    Run Code Online (Sandbox Code Playgroud)
  5. 软断开电缆并尝试连接。不成功。

  6. 弹出调制解调器。

  7. 已删除/lib/udev/rules.d/78-mm-zte-port-types-RALPH.rules

  8. 重新启动并再次尝试整个过程。又失败了。

syslog 文件(完整,我没有冒遗漏任何重要部分的风险)和提到的规则文件 (40) 在这里


更新 16 - 2015 年 12 月 11 日

  1. 只留下一个 1232 规则 /lib/udev/rules.d/40-usb_modeswitch.rules,删除另一个。

  2. 执行sudo udevadm control --reload

  3. 插入调制解调器。

  4. 调制解调器被识别。

    Bus 001 Device 005: ID 19d2:2003 ZTE WCDMA Technologies MSM
    
    Run Code Online (Sandbox Code Playgroud)
  5. 软断开电缆并尝试连接。不成功。

  6. 弹出调制解调器。

但是我们上面不是测试了默认系统吗?你是不是想离开/lib/udev/rules.d/78-mm-zte-port-types-RALPH.rules原地吗?

syslog 文件(完整,我没有冒遗漏任何重要部分的风险)和提到的规则文件 (40) 在这里


更新 17 - 2015 年 12 月 11 日

  1. 注释掉了 1232 规则 /lib/udev/rules.d/40-usb_modeswitch.rules,为 2003 增加了一个。

    # ZTE MFxxx
    # Added on December 11 2015
    ATTR{idVendor}=="19d2", ATTR{idProduct}=="2003", RUN+="usb_modeswitch '%b/%k'"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 执行sudo udevadm control --reload

  3. 插入调制解调器。

  4. 调制解调器被识别为1232设备。我没有尝试连接(据我所知,除非切换发生在 2003 年,否则它不会注册到宽带网络)

    Bus 001 Device 008: ID 19d2:1232 ZTE WCDMA Technologies MSM
    
    Run Code Online (Sandbox Code Playgroud)
  5. 弹出调制解调器。

syslog 文件和提到的规则文件 (40) 在这里


更新 18 - 2015 年 12 月 11 日

  1. 将所有规则文件置于其原始形式。

  2. lsusb使用 shell 脚本每隔一秒观察一次输出。在时间戳文件中捕获的输出。

  3. 插入调制解调器。(调制解调器首先出现在文件中 lssuboutouput.Fri Dec 11 16:56:29 BDT 2015.txt)。正如我们从捕获中发现的那样,很明显它从 1232 设备切换到 2003 设备。

  4. 尝试连接。不成功。

  5. 弹出调制解调器。

系统日志文件、时间戳lsusb输出和提到的规则文件在这里

现在,您可能希望将 syslog 输出与时间戳相匹配。


更新 19 - 2015 年 12 月 11 日

以完全新的方向执行此测试,希望我可以隔离问题。

  1. 保存在便携式媒体/lib/udev/rules.d/40-usb-media-players.rules/lib/udev/rules.d/77-mm-zte-port-types.rules(从Ubuntu 15.10的机器)。

  2. 使用 Xubuntu 15.04 64 位 DVD 启动机器。

  3. 执行diff 77-mm-zte-port-types.rules /lib/udev/rules.d/77-mm-zte-port-types.rules > diff15.10and15.04_77-mm.txt。第一个文件来自 15.10 保存的文件。

    检查 diff 文件显示没有idProduct1232 或 2003。

  4. 执行diff 40-usb_modeswitch.rules /lib/udev/rules.d/40-usb_modeswitch.rules > diff15.10and15.04_40-usb.txt。同样,第一个文件来自 15.10 保存的文件。

    同样,对 diff 文件的检查显示没有idProduct1232 或 2003。

  5. 插入调制解调器。调制解调器被识别为调制解调器。

    $ lsusb
    Bus 001 Device 008: ID 19d2:2003 ZTE WCDMA Technologies MSM
    
    Run Code Online (Sandbox Code Playgroud)
  6. 设置移动宽带连接后可以轻松连接。

  7. 弹出调制解调器。

  8. 安装了最新的 USB_ModeSwitch。

    diff 40-usb_modeswitch.rules /lib/udev/rules.d/40-usb_modeswitch.rules
    
    Run Code Online (Sandbox Code Playgroud)

    现在按预期返回 NULL。

  9. 执行sudo udevadm control --reload-rules

  10. 插入调制解调器。调制解调器被识别为调制解调器。

    $ lsusb
    Bus 001 Device 008: ID 19d2:2003 ZTE WCDMA Technologies MSM
    
    Run Code Online (Sandbox Code Playgroud)
  11. 可以轻松连接。

我可以尝试将 MM 和 NM 升级到 Ubuntu 15.10 的版本,只是为了看看它在哪里中断。我实际上尝试过但由于无休止的依赖问题而放弃了。

上面提到的所有差异文件都在这里


更新 20 - 2015 年 12 月 12 日

测试 1

  1. /lib/udev/rules在原来的条件。

  2. 此会话中尚未插入调制解调器设备。

  3. 设置 ModemManager 用于调试和设置 udevadm 捕获。

    sudo udevadm monitor --e |& tee udevadm.update20.WITHOUT78.log
    sudo killall ModemManager; sudo ModemManager --debug 2>&1 | tee MM.update20.WITHOUT78.log
    
    Run Code Online (Sandbox Code Playgroud)
  4. 插入调制解调器并等到它说它已在宽带网络中注册。

  5. 尝试连接失败。

  6. 弹出调制解调器。

  7. 打包日志文件。

测试 2

重复上述测试 /lib/udev/rules.d/78-mm-zte-port-types-RALPH.rules到位。

日志文件名是不言自明的。

以上所有日志文件加上 syslog 和 78 条规则文件都 在这里

我希望所有日志文件都带有时间戳,使匹配更容易。


更新 21 - 2015 年 12 月 15 日

  1. 按照建议更改规则文件。
  2. 重新启动了我的机器。
  3. 插入调制解调器并尝试连接。这没用。

规则文件和syslog这里


更新 22 - 2015 年 12 月 16 日

正如一条评论中所建议的,从http://kernel.ubuntu.com/~kernel-ppa/mainline/安装了各种内核,并在每个内核 启动后尝试使用调制解调器进行连接。

  1. 4.2.8-040208-通用,失败。

  2. 4.1.15-040115-通用,失败。

  3. 4.0.9-040009-通用,失败。

因此,也许我们可以排除内核问题。


更新 23 - 2016 年 2 月 16 日

调制解调器已开始在 Ubuntu 16.04 中运行。此版本仍为 Alpha 1,但在我的笔记本电脑上运行良好。

Mas*_*oor 2

调制解调器已在 Ubuntu 16.04 中开始运行。该版本仍处于开发阶段,但在我的笔记本电脑上运行良好。

我希望我能提供更多关于它如何开始运作的技术细节。