未检测到调制解调器(为什么我必须进行 usb_modeswitch?)

未检测到调制解调器(为什么我必须进行 usb_modeswitch?)

我正在使用 Trisquel 7.0 LTS 和移动宽带 (Net-Setter) 建立连接。

以下状态 (1-4) 显示了不同的条件/情况,以便清楚地理解问题。

状态 1:-

安装 Trisquel 7.0 LTS 后,一切正常。我的调制解调器检测如下(lsusb输出):

$ lsusb
Bus 001 Device 004: ID 12d1:1436 Huawei Technologies Co., Ltd. E173 3G Modem (modem-mode)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

并且它也可以通过 nm-applet 检测或使用nmcli如下方式检测:

$ nmcli dev list
GENERAL.DEVICE:                         ttyUSB2
GENERAL.TYPE:                           gsm
GENERAL.VENDOR:                         HUAWEI Technology
GENERAL.PRODUCT:                        HUAWEI Mobile

状态 2:-

最近跑了一个安装脚本来自 Mobile Partner,它没有正确安装,因此我还运行了卸载脚本不幸的是,尽管卸载了,现在我的调制解调器无法工作(正常检测)。

现在检测和新的(当前)输出发生了变化lsusb

$ lsusb
Bus 001 Device 003: ID 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800/E173 (HSPA modem)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

在这里你可以看到区别是——
早些时候:

Bus 001 Device 004: ID 12d1:1436 华为技术有限公司 E173 3G 调制解调器(调制解调器模式)

现在:

总线 001 设备 003:ID 12d1:1446 华为技术有限公司 1552/E1800/E173(HSPA 调制解调器)

现在 nm-applet 中未检测到调制解调器(nmcli 也未列出)。

那么,如何将设置重置为默认值,因为默认 Trisquel 对我的设备没有问题。换句话说,哪些文件受到此新行为的影响以及如何恢复到之前的情况? (否则我必须重新安装整个操作系统!)


状态3:-

我编写了一个名为 12d1:1446 的文件,/etc/usb_modeswitch.d/其下面是:

默认供应商= 0x12d1
默认产品=0x1446

MessageContent =“55534243123456780000000000000011062000000100000000000000000000”

我通过命令运行它:

sudo usb_modeswitch -I -W -c /etc/usb_modeswitch.d/12d1\:1446

哪个工作正常并且原因lsusb改变了

从:

总线 001 设备 003:ID 12d1:1446 华为技术有限公司 E1552/E1800/E173(HSPA 调制解调器)

回到:

Bus 001 Device 004: ID 12d1:1436 华为技术有限公司 E173 3G 调制解调器(调制解调器模式)

因此它将被网络管理器检测到;我将能够连接。


状态 4:(以下这个答案) --

我已经编写了名为99-mymodem.rules以下内/etc/rules.d​​容的文件:

ACTION=="add", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", RUN+="/home/pandya/usbmode"

/home/pandya/usbmode包含:

#!/bin/bash
sudo usb_modeswitch -I -W -c /etc/usb_modeswitch.d/12d1\:1446

因此,当我插入调制解调器时,99-mymodem.rules运行/home/pandya/usbmode并设法将我的调制解调器检测为:

Bus 001 Device 004: ID 12d1:1436 华为技术有限公司 E173 3G 调制解调器(调制解调器模式)

最终我可以通过网络管理器( )成功连接调制解调器nm-applet


结论:-

然而,目前的情况(状态4) 或者是我正在寻找的东西,但不完全是 (状态1)因为每次插入调制解调器时我们都会通过 udev-rule 和 usb-modeswitch。

换句话说为什么我必须usb_modeswitch现在?(以前没有必要,另外,如果我从 Live DVD 启动并选择尝试操作系统而不安装,调制解调器无需手动即可正常工作usb_modeswitch)。

因此(自从我写了这个问题)我的目标是恢复到状态1

答案1

尝试 udev 规则,每次插入调制解调器时都会启动一个脚本。

ACTION=="add", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="UUUU", RUN+="/home/user/script.sh"

将 XXXX 和 UUUU 替换为供应商和 id 产品,将规则放入 /etc/udev/rules.d/99-yourrule.rules 并重新启动或重新启动 udev。必须工作

答案2

请确保/etc/usb_modeswitch.conf您已在配置文件中设置

DisableSwitching=0

否则,自动模式切换将被全局禁用。

答案3

最后(最终),我发现了导致 usb_mode 自动切换问题的原因。

文件40-usb_modeswitch.rules/lib/udev/rules.d包含:

# 华为,较新的调制解调器
ATTR{idVendor}=="12d1", ATTR{idProduct}=="1446", RUN+="usb_modeswitch '%b/%k'"

因此,我的调制解调器必须自动usb_modeswitch40-usb_modeswitch.rules.

但问题是/usr/sbin/usb_modeswitch&/usr/sbin/usb_modeswitch_dispatcher未设置chmod +x(允许执行文件)。可能安装脚本(有问题所附)已修改属性。

虽然手动sudo usb_modeswitch -I -W -c /etc/usb_modeswitch.d/12d1\:1446(有问题解释)我sudo chmod +x /usr/sbin/usb_modeswitch /usr/sbin/usb_modeswitch_dispatcher仍然没有执行权限。

所以现在我sudo chmod +x /usr/sbin/usb_modeswitch_dispatcher就快完成了!

之后我删除了中所述的所有手动切换过程状态4(参见问题)现在我的调制解调器成功检测为:

Bus 001 Device 004: ID 12d1:1436 华为技术有限公司 E173 3G 调制解调器(调制解调器模式)

换句话说,40-usb_modeswitch.rules工作正常。

最后我又回到了状态1。 [解决了]

答案4

我处理过同样的问题,并且接受的解决方案对我不起作用。如果您有 Raspbian 发行版,这里讨论了一个已知的错误:https://github.com/RPi-Distro/repo/issues/47

解决办法是:

  1. 编辑/lib/udev/rules.d/40-usb_modeswitch.rules
  2. 编辑ATTRS{idVendor}=="12d1", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'",更改'%b/%k''%k'.

在 Raspbian 8 和华为 EC315 上进行测试。

相关内容