如何使用 usb.modeswtich 将我的 4G 适配器从大容量存储模式转变为调制解调器模式?

1 usb networking usb-modem 4g

运行 Ubuntu 20.04.2 LTS

我的华为 E3372 4G 适配器无法在 Ubuntu 上正常工作。当我插入它时,我可以看到该driver.exe文件可用(我安装了 wine,以便我可以运行 .exe 文件)并且它似乎安装正确。

但我仍然看不到我的连接,并且在使用时lsusb我注意到设备已被识别,但处于“大容量存储模式”。

我知道 usb.modeswitch 可以帮助我改变这一点,但我不明白在阅读冲突的信息后我应该做什么。

我找不到适用于我的 Ubuntu 版本的最新答案

我是一个完整的 linux 和 ubuntu 菜鸟,但我可以按照说明进行操作。我只是无法在网上找到此问题的有效解决方案。我尝试的一切似乎都不起作用。

谢谢

更新#1

非常有帮助的社区成员@heynnema,谢谢你

这是不同的调制解调器,但型号完全相同,Huawei E3372h lsusb 输出:

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 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 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 009 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 008 Device 004: ID 03f0:3841 HP, Inc 
Bus 008 Device 005: ID 1a2c:2124 China Resource Semico Co., Ltd 
Bus 008 Device 017: ID 1a40:0201 Terminus Technology Inc. FE 2.1     7-port Hub
Bus 008 Device 019: ID 12d1:14db Huawei Technologies Co., Ltd.     E353/E3131
Bus 008 Device 016: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 008 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub""
Run Code Online (Sandbox Code Playgroud)

规则。文件仅包含以下内容:

# Huawei E3372
ATTR{idVendor}=="12d1", ATTR{idProduct}=="14db",     
Run Code Online (Sandbox Code Playgroud)

RUN+="usb_modeswitch '/%k'"

更新#2

# Huawei E3372
ATTR{idVendor}=="12d1", ATTR{idProduct}=="14db", RUN+="usb_modeswitch '/%k'"
Run Code Online (Sandbox Code Playgroud)

hey*_*ema 5

如果我们查看/lib/udev/rules.d/40-usb_modeswitch.rules,我们会看到华为通信设备的以下规则......

# Generic entry for most Huawei devices, excluding Android phones
ATTRS{idVendor}=="12d1", ATTRS{manufacturer}!="Android", ATTR{bInterfaceNumber}=="00", ATTR{bInterfaceClass}=="08", RUN+="usb_modeswitch '%b/%k'"

# Huawei ME909u-521 (MBIM, dummy config)
ATTR{idVendor}=="12d1", ATTR{idProduct}=="1573", RUN+="usb_modeswitch '/%k'"

# Huawei ME906, ME909 (MBIM, dummy config)
ATTR{idVendor}=="12d1", ATTR{idProduct}=="15c1", RUN+="usb_modeswitch '/%k'"
Run Code Online (Sandbox Code Playgroud)

未看到您的特定华为 E3372 设备。

将华为设备插入 USB 端口后,执行此操作,lsusb | grep -i 12d1您会发现包含 的输出12d1:xxxx,这就是我们关心的xxxx数字。

注意:如果xxxx是 1573 或 15c1,则在此停止。您的系统应该已经识别您的华为设备。

我们需要在/etc/udev/rules.d/41-huawei_e3372.rules中创建一个新的 .rules 文件,其中包含:

# Huawei E3372
ATTR{idVendor}=="12d1", ATTR{idProduct}=="xxxx", RUN+="usb_modeswitch '/%k'"
Run Code Online (Sandbox Code Playgroud)

并将 xxxx 更改为我们从之前的lsusb命令中获得的数字。

完成后该文件应如下所示...

-rw-r--r-- 1 root root 42K Apr  2 15:46 41-huawei_e3372.rules
Run Code Online (Sandbox Code Playgroud)

chmod或者chown如果需要的话。

您可能需要重新启动,但如果您只是尝试移除/插入华为设备,它可能会在不重新启动的情况下看到它。你完成了。

注意:请参阅man usb_modeswitch_dispatcher参考资料 获取更多信息。