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


12

我有一个运行良好的中兴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

网络图标附近。

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

我可以隔离的线/var/log/syslog

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

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

这里/var/log/syslog可以找到更多行 。


更新1-十二月06 2015

正如一种成员指出的那样,尝试了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

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


更新2-十二月06 2015

以root身份执行,

systemctl restart network-manager.service

屏幕(端子)上无输出。

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


更新3-2015年12月6日

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

请在此处查看日志。


更新4-十二月06 2015

再次以root身份执行,

systemctl restart network-manager.service

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


更新5-十二月06 2015

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

尝试连接。没运气。

一些网络通过以太网连接进行连接和断开连接。

其次是sudo systemctl restart network-manager.service

调制解调器插入并插入。

尝试再次连接。无法连接。

日志在这里


更新6-十二月06 2015

已执行

sudo killall ModemManager; sudo ModemManager --debug 2>&1 | tee /tmp/modem.log.txt

export NM_PPP_DEBUG=1
sudo NetworkManager --no-daemon 2>&1 | tee /tmp/nm.log.txt

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

上面的命令与Wiki中的命令有些不同。

日志文件在这里


更新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

sudo NM_PPP_DEBUG=1 /usr/sbin/NetworkManager --log-level=debug --no-daemon > /tmp/nm.log.txt

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

日志文件在这里


更新8-十二月08 2015

更新的日志集在这里


更新9-十二月08 2015

测试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日志和syslog 。

测试2

与Ubuntu 14.04 64位DVD相同的测试。

日志可以在这里找到。


更新10-十二月09 2015

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

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

主要推测:这种情况可能与相应用户的用户组有关。

但正如这里所指出的,

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

但正如我们所发现的

$ groups masroor
masroor : masroor adm dialout cdrom sudo dip plugdev lpadmin sambashare family wireshark

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

现在,问题可能归结为以上两点,

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

更新11-十二月09 2015

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. 试图连接。不成功。

syslog文件在这里


更新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
    
  4. 软断开电缆连接,并尝试使用调制解调器进行连接。不成功。

  5. 弹出调制解调器。

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

syslog文件和创建的规则文件在此处


更新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'"
    
  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
    
  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
    
  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'"
    
  2. 已执行sudo udevadm control --reload

  3. 插入调制解调器。

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

    Bus 001 Device 008: ID 19d2:1232 ZTE WCDMA Technologies MSM
    
  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文件,带有时间戳的输出和提到的规则文件。

现在,您可能需要将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
    
  6. 建立移动宽带连接后即可轻松连接。

  7. 弹出调制解调器。

  8. 安装了最新的USB_ModeSwitch。

    diff 40-usb_modeswitch.rules /lib/udev/rules.d/40-usb_modeswitch.rules
    

    现在按预期返回NULL。

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

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

    $ lsusb
    Bus 001 Device 008: ID 19d2:2003 ZTE WCDMA Technologies MSM
    
  11. 可以随时连接。

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

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


更新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
    
  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中,但在我的笔记本电脑上可以正常工作。


1
过去,我遇到了类似的问题,最终不得不禁用DHCP并使用来自电池公司的网关地址号和使用Google的DNS服务器。这是两三年前,我不记得需要的确切步骤,也不知道这是否是相同的问题,但是错误几乎是逐字记录的。希望我能提供更多帮助。
KGIII

1
@KGIII我想尝试一下。只是一个空闲查询,如果它与DHCP有关,它将如何在Windows中工作?DHCP服务器分配地址时有什么区别吗?此外,同一台Linux计算机(调制解调器无法连接到其中)与以太网DHCP一起工作。无论如何,一个现实生活中的实验将值得一千次闲聊。
Masroor,2015年

猜想 Windows以不同的方式处理网络,并且可能已经配置为处理这种特定的硬件或硬件类型。到目前为止,我对Windows的关注并不多,因此我可能不是最好的信息来源。
KGIII 2015年

@KGIII我尝试设置地址。不幸的是,可用于移动宽带连接的仅有的两个选项是两种类型的自动(PPP)。因此,这是一条封闭的道路。不管怎么说,还是要谢谢你。
Masroor

1
只是为了消除内核造成的问题,您可以尝试从kernel.ubuntu.com/~kernel-ppa/mainline安装4.0和4.1内核并进行测试吗?
muru

Answers:


4

加载ofono程序包可能很好,但是显然您的调制解调器型号ZTE MF193E不在ZTE列表中。将其与其他中兴调制解调器(例如MF190J)进行比较,该调制解调器可能需要相同的特殊udev规则,才能usb_modeswitch在插入加密狗时运行,并实现您可以以root用户的udev身份
/lib/udev/rules.d/40-usb_modeswitch.rules
通过以下两个向文件添加新规则行,例如,靠近# ZTE MF190J注释的地方:

# ZTE MF193E
ATTR{idVendor}=="19d2", ATTR{idProduct}=="2003", RUN+="usb_modeswitch '%b/%k'"

加上一个空白行,因此看起来令人愉悦。

在那之后重新启动可能是明智的选择,只是发现它们都像魔术一样工作:-)

或不。如您所知,这对我来说是很深的工作,但是如果仍然无法解决问题,则需要另一个ModemManager调试日志,以进行另一个疯狂的猜测。

编辑:

我现在正在查看modemmanager.txt中的两行:

[mm-broadband-bearer.c:1254] connect(): Launching 3GPP connection attempt with APN 'WAP'

[mm-broadband-bearer.c:994] parse_pdp_list(): Found PDP context with CID 1 and PDP type ipv4 for APN 'wap'

我猜第一个是指您的宽带设置,而第二个是指内部绑定到“ PDP上下文”(无论是什么)。从外观上看,调制解调器提供了9个替代上下文,其中一个包含apn='WAP',但满足ModemManager不区分大小写的匹配条件。

大小写不同可能是导致后续问题的原因:例如,ppp需要'wap'配置(而不是'WAP')并且找不到它,或者远程端期望apn='WAP',但是会被阻塞。

通过将配置更改为使用“ wap”而不是“ WAP”,可以轻松测试(可能排除)第一个选项。您可能以前曾尝试过此方法,但那时没有安装该ofono软件包,因此尽管更可能使用第二种方法,但另一个测试也不会受到影响。

假定存在可从调制解调器获得的大写“ PDP上下文”匹配,第二种选择也是一个问题。谷歌搜索此问题,似乎不区分大小写的匹配在(显然相关的)规范“ 3GPP TS 23.003 9.1章”中是正确的,并且ModemManager在去年11月对此进行了补丁(其版本为mm-1-4,我可以聚集)。因此,在这种情况下,没有告知您的调制解调器,它期望区分大小写的匹配,而ModemManager不幸的是直接使用区分大小写的匹配,而不是作为后备。

解决第二个问题的一种解决方案当然是使用不同的解决方案ModemManager:在此修补程序之前查找并安装一个版本,或者(有足够的业余时间)自行滚动ModemManager。但是,两者都不是一时兴起的事情,因此也许我们需要四处浏览以获取更多证据,证明这是(现在)问题所在,并在可能的情况下找到其他解决方法。或有些运气,一个知道某事的人会降临...

编辑2

是的,由于依赖关系,版本回滚并不容易。自己动手也不是一件容易的事。

两个可能有用的工具:命令mmcli和(http://m2msupport.net/m2msupport/module-tester/)。

我认为问题在于ModemManager选择apn ='wap'的PDP上下文1,而应该选择apn ='WAP'的PDP上下文9。也许可以使用这些工具之一来解决。要么能够在连接期间强制选择9,要么从调制解调器中删除宣传模块测试器工具能够具有的“ wap”错误上下文。

调制解调器测试器工具似乎是浏览器中的Java工具,因此您需要将浏览器设置为知道Java的位置,并且需要知道该Java。然后,请探索这种方法;我自己没有使用过,但是看到屏幕截图,我猜想它将以“数据调用”选项卡显示PDP上下文,您首先要注意其中显示的所有内容,然后将“ wap”条目编辑为将“ wap” apn标签扭曲为“ wap1”和“ wap2”(以便在查找“ WAP”时“隐藏”它们)。然后保存并关闭,然后再次处理加密狗。拿起日志;看来syslog现在足够了,以防万一它仍然拒绝播放。

mmcli命令在这个故事中似乎也很有用。确实man mmcli要阅读有关它的内容,但我在那里没有看到有关PDP上下文的任何信息。

编辑3

好决定!从DVD进行测试。这就告诉我们,我在使用APN时走错了路,而这一切都在于使ppp出现。至少,那是我的新树。

首先,我们注意到pppd的版本有所不同(从2.4.5到2.4.6),但这可能不是问题,因为那时在加密狗上的每个人都将在此游览中。

嗯,ppp;我需要激发我对上千年的回忆:-)。不幸的是,我今天很忙,但是下次我有空的时候我会打基础,看看你走了多远。我要研究的第一个后巷是:1)用户是否在正确的组中?2)凭证正确吗?3)ppp / chat配置文件mod正确吗?ppp调试日志出现在nm.txt中(根据几天前的记录),但是也应该有一种方法要求它提供更详细的日志记录。

编辑4

确保/etc/ppp/pap-secrets/etc/ppp/chap-secrets具有分组dipchgrp根据需要使用)和模式740(或-rw-r-----)(chmod根据需要使用)。我没有。

编辑5

这个怎么样的树,则:工作比较wvdial系统日志与非工作日志,似乎是出于某种原因wvdial使用ttyUSB3,同时非工作ModemManager不断使用ttyUSB1。我不知道这是否是在所有显著,但显然却ttyUSB1ttyUSB3作为AT能够调制解调器皆响应。

因此,作为测试,也许您可​​以进行编辑/etc/wvdial.conf,使其[Dialer Defaults]包含以下行:

Modem = /dev/ttyUSB1

一个测试,ttyUSB3另一个测试 都以root身份运行;只是看看是否有其他行为。特别是,如果使用ttyUSB1是一个问题,而使用ttyUSB3则不是,那么最好研究一下如何使ModemManager也使用ttyUSB3。对于其他测试结果,我会说我们将回到在ppp土地上追逐雪貂。

编辑6

我认为可以忽略dmesg日志;在所有日志中都是这样。新的系统日志仅显示ttyUSB3测试,但是如果NetworkManager可以坚决使用ttyUSB3并忽略ttyUSB1(对于此调制解调器),也许我们可以假设生活会变得更好。

我还发现了(https://bugs.launchpad.net/ubuntu/+source/modemmanager/+bug/819784)尤其是帖子#10令人不安:-(

中似乎适用的udev规则/lib/udev/rules.d/77-mm-zte-port-types.rules不适用,但据推测应该去哪里。而且,对于101年前的udev魔术只有非常初步的了解,我无论如何都会考虑质疑它的第四行,它说:

SUBSYSTEM!="tty", GOTO="mm_zte_port_types_end"

我认为该行需要一个缩写#,以便被注释掉。详细而言,我对该文件的读取是,该文件要求调用状态为SUBSYSTEM ==“ tty”和SUBSYSTEMS =“ usb”,以便使用良好的位(包括“ 2003”产品规则)并至少用于测试,跳过“ tty”过滤应该是安全的。我现在没有什么比这更好的了。

编辑7

在使用我最喜欢的搜索引擎花费了一些时间之后,我稍微相信ttyUSB的选择是这里的根本问题。我指向的udev规则还可以,您应该还原该编辑。

但是,我开始认为,针对该文件末尾的产品ID为“ 2003”的配置规则具有误导性。从日志中,我发现产品ID“ 2003”实际上是加密狗的存储设备端,而调制解调器端的产品ID为“ 1232”。您可以通过在文件中复制产品ID为“ 1232”的两个“ 2003”规则来进行测试/lib/udev/rules.d/77-mm-zte-port-types.rules

ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1232", ENV{.MM_USBIFNUM}=="03", ENV{ID_MM_ZTE_PORT_TYPE_MODEM}="1"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1232", ENV{.MM_USBIFNUM}=="01", ENV{ID_MM_ZTE_PORT_TYPE_AUX}="1"

或更好的方法是,在其旁边添加一个新文件,例如,名为78-ralph.rules,但是您还需要在其周围添加SUBSYSTEM和SUBSYSTEMS保护。

然后,拔出加密狗,运行udevadm control --reload(或重新启动),然后插入加密狗。然后再进行一次syslog捕获,除非它现在起作用了。

但是,有效的问题是ModemManager在进行libmm-plugin-zte.so预探测时会丢弃该插件,并最终使用通用的调制解调器处理程序。如果我对产品ID的判断正确,那可能就是原因;该预探测将查找ID_MM_ZTE_PORT_TYPE_MODEM归因,而产品ID“ 1232”(在补丁之前)则缺少此归因,导致zte插件被丢弃。

编辑8

syslog日志是有点短; 缺少ModemManager无法安装zte插件的开头。但是,很明显,无论如何都使用了通用调制解调器插件。现在,也许usb_modeswitch我早先给您的规则也是错误的。当我以为它 “ 2003” 切换时,它决定切换 “ 2003”。但是,(我应该看着面前的)那种认为它转移一个产品ID,而不是它。无论如何,日志显示了这种情况。因此,请将该规则更改为改为使用“ 1232”,然后重试。man usb_modeswitch

如果没有别的,至少我必须学习一些有关udev的知识。

编辑9

好。问题仍然是(或也是)ModemManager在预探测时丢弃了ZTE插件。15.10的ModemManager调试日志(日志集“ debuglogs *”)全部说明了由于供应商ID /产品ID测试导致ZTE插件被丢弃的故事。

求助,卢克!我借此机会简要了解了ModemManager的源代码,它表明该插件为不包含19d2 / 2003的vid / pid表...但是,我没有找到该表源,因此我无法不验证。

也许这里有时间问题。例如,当设备为19d2 / 1232时,ModemManager运行预探测。这种想法与观察结果一致,即拥有78毫米的zte-port-types-RALPH.rules udev规则使ModemManager在设备上更快乐。但是,当设备切换到19d2 / 2003时,为什么它不满意并使用该插件呢?

也许需要更多日志:-)在调试ModemManager时,以及udevadm monitor --e |& tee udevadm.log在插入设备时捕获命令(在另一个终端中)。我从(https://wiki.ubuntu.com/DebuggingUdev)获得了该命令

进行两次:一次不78-mm-zte-port-types-RALPH.rules使用规则,一次使用规则...两次都从新重启。即

  1. 设置/lib/udev/rules.d是否包含*-RALPH.rules文件
  2. 拉出设备
  3. 重启
  4. 设置ModemManager进行调试和设置udevadm捕获
  5. 插入设备并等待一分钟
  6. 打包日志文件
  7. 从1开始重复下一个测试

该日志记录应该告诉您ZTE插件的放置位置,据我所知,它还将告诉udev事件处理。

编辑10

(我几乎快要束手无策了,但是我还剩下一两个呼吸:-)

首先,所有udev装饰似乎都按预期完成,在几个属性中仅带有几个问号。特别是,78-*-RALPH.rules应该将其丢弃;这没有用。

我想我可以从中读出一些信息,但是我不确定该如何解决。基本上,如我所见,当插入加密狗时,会有一系列udev事件。关注与ttyUSB1相关的事件,发生一个“早期”事件:

KERNEL[3867.310990] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.1 (usb)

这将导致usb_serial驱动程序被加载并/dev/ttyUSB1出现。这尤其会导致另一个事件:

KERNEL[3867.435102] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.1/ttyUSB1/tty/ttyUSB1 (tty)

我认为这也会触发ModemManager。您必须去syslog查看证据,因为日志之间没有严格的关联。该事件带有时间戳3867.435102,并在标记了内核日志行之后立即syslog显示其最近的后续ModemManager日志行3867.437412

按照我的想法,ModemManager不应触发,而应在随后的ttyUSB1事件之后触发:

UDEV  [3867.580427] add      /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.1/ttyUSB1/tty/ttyUSB1 (tty)

附加了ZTE属性。

在MM日志中,我们将在标记的行上1449934745.363291,这显然是“实时”时间戳,而不是“内核时间”戳。

ModemManager然后在它的预探测(1449934745.450398即87ms后)完成,以内核时间而言,这将接近3867.524519上面的“良好” UDEV事件报告之前的55ms。

请注意,在中syslogModemManager会提交ttyUSB1未设置其属性的投诉,并且可能与发生在中的“标记”有关80-mm-candidate.rules。根据该文件中的注释,该标记似乎是试图完全解决此问题的尝试,但如果是这样,则在这种情况下似乎不起作用。

解决此问题的一种可能是将“ tty”规则80-mm-candidate.rules更改为:

ENV{.ID_PORT}=="?*", SUBSYSTEM=="tty", ENV{ID_MM_CANDIDATE}="1"

在我看来,这将确保ID_MM_CANDIDATE设置延迟到设置ZTE属性之前。的.ID_PORT设置是一个的效果60-serial.rules规则(称为60-persistent-serial.rules前),和加入的条件下将标记的规则是简单的,它有一个值。

条件并非完全是ZTE属性,只是为了使规则更通用。更具体的一步是ENV{.MM_USBIFNUM}="?*"取而代之,因为此处的分配发生在77-mm-zte-port-types.rules

总的来说,我对udev规则排序不是很确定,也不太确定这真的ModemManager不会因为动作太快而停止。但是,如果没有,则将80-mm-candidate.rules几乎没有功能,或者可能全部归结为“改进”,ModemManager从15.04开始。

编辑21

叹。可能无关紧要,但您可能需要检查7-zte-mutil_port_device.rules文件;那是其他实验的残余吗?无论如何,这里不相关。

目前仍然几乎是第二之间515.558184516.381549在那里ModemManager热切地和错误地争夺/dev/ttyUSB1,并同时抱怨它没有被建立,通过预先探测和丢弃中兴插件却还在继续。换句话说,规则补丁不会ModemManager等待。

我想您还测试了使用ENV{.MM_USBIFNUM}="?*"而不是ENV{.ID_PORT}=="?*"

实际上,要确认设置ENV{ID_MM_CANDIDATE}=1是否重要,您应该暂时离开80-mm-candidate.rules,然后查看中的syslog,然后ModemManager忽略/dev/ttyUSB1。我怀疑“不是”。

然后,好吧,也许您可​​以使用工作版本,例如14.04,并且如果需要,可以在virtualbox中运行15.10,除非当然所有的东西都已经在virtualbox中。

我认为我现在需要宣布失败。


不幸的是,它没有用。请查看我的问题中的日志。
Masroor,2015年

嗯 此日志表明它正在调制解调器级别启动,但在ppp级别失败。您能否介意同时发生nm.txt日志和syslog,以获取插入/插入手势。顺便说一句,我想当您插入调制解调器时它也不在电缆上。
拉尔夫·隆奎斯特(RalphRönnquist)2015年

更新了相同的.zip文件,其中包括两个以上的日志。我指出进行测试时(软)断开电缆连接。虽然电缆以前从来都不是问题。以前,在旅行前购买数据包之后,我总是在连接电缆的情况下在家用计算机(PC)中测试调制解调器,然后在笔记本电脑中使用调制解调器。再次感谢您的询问,确定它没有任何危害。
Masroor 2015年

注意我在答案中的编辑:下一个疯狂的猜测。干杯。
拉尔夫·朗奎斯特(RalphRönnquist),2015年

尝试使用许多APN字符串(小写/大写),所有内容。没运气。挫折感即将到来。
Masroor

1

调制解调器已在Ubuntu 16.04中开始运行。此版本仍处于开发阶段,但可以在我的笔记本电脑上正常工作。

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


0

看了一眼之后,看来这不是第一次对付这条龙了。这是在12.10和13.04之前的一个错误,也许该错误从未得到修复,或者新的补丁破坏了之前可以正常运行的功能。

希望,如果我正确阅读了您的技术规格,则需要向您指出这个方向(MF190J):

3G调制解调器(ZTE MF190J)仍需要手动调整。


不幸的是(?)usb_modeswitch此设备的规则已在标准规则集中。
拉尔夫·隆奎斯特(RalphRönnquist),2015年

-2

您是否尝试过:

 rfkill list up

然后制作此脚本并运行它:

 #/bin/sh

     Case [!$] in
        /bin/sh
        networkname="true"
        networkname="the ip adr type in here"
        nmcli nm networkname --force-yes
        resolve.conf the ip adr type in here
     endl

这样可以很好地工作。


我应该输入哪个IP地址?这是PPP连接。
Masroor 2015年

1
-1用于编写复杂的脚本,其中只包含不正确的语法。.您还知道sh实际上与之链接dash吗?
heemayl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.