沃达丰 E3730 无法 usb_modeswitch

沃达丰 E3730 无法 usb_modeswitch

太长了;博士

Vodafone E3730 HSPA Express 数据卡似乎根本无法在 Kubuntu 18.04 LTS 中工作。我怎样才能解决这个问题?


描述

该卡曾经有效。坦率地说,我不记得它是否在 18.04 LTS 或某些早期的 LTS 版本中有效,但它确实有效。在我当前的 KDE Plasma 18.04 LTS 中,保存了曾经可以使用的网络设置。我本以为插入卡后它们就会启动,但事实并非如此;就好像卡不存在一样。

SIM 卡从未被移除,应该仍然可以使用。

从它起作用的那一刻起,我就记得没有任何问题。它可能几乎是开箱即用的。硬件已被识别,我只需设置 APN 等详细信息。


技术细节

此信息印在贴纸上:

沃达丰移动连接
型号:E3730
HSPA Express 数据卡

由选项在欧盟设计由选项 QUALCOMM 3G CDMA
在爱尔兰制造

这是来自lsusb

Bus 001 Device 006: ID 0af0:7301 Option

这是来自usb-devices

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  6 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0af0 ProdID=7301 Rev=00.00
S:  Manufacturer=Option N.V.
S:  Product=Globetrotter HSUPA Modem
S:  SerialNumber=Serial Number
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)

cat /etc/issue:

Ubuntu 18.04.5 LTS \n \l

uname -a:

Linux whatever 4.15.0-121-generic #123-Ubuntu SMP Mon Oct 5 16:16:40 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

研究

该设备的正确驱动程序似乎是option

我学到了什么usb_modeswitch是:

一些新的 USB 设备拥有其专有的板载 Windows 驱动程序,其中大多数是 WWAN 和 WLAN 适配器。首次插入时,它们就像闪存一样,并从那里开始安装 Windows 驱动程序。如果安装了驱动程序,它会使存储设备消失,并出现一个新设备,主要是复合设备(例如带有调制解调器端口)。

在 Linux 上,大多数情况下驱动程序可作为内核模块使用,例如usbserialoption。但是,设备最初usb-storage默认绑定到。usb_modeswitch 然后可以向设备发送提供的批量消息(很可能是大容量存储命令);必须通过分析 Windows 驱动程序的操作来确定此消息。

我确认了软件包usb-modeswitchusb-modeswitch-data已安装。我相信它们应该自动工作。至少当我的卡可以工作时,它们似乎可以工作,而我对此一无所知usb_modeswitch

我注意到该设备甚至不像闪存。在usb-devices(上面)的输出中,它指出Cls=08(stor.),我相信这表明基类 08h(大容量存储);但司机是none。没有出现块设备。

然后我发现这个答案并尝试将其调整为我的硬件。

首先,我创建了一个名为 的空0af0:7301文件/etc/usb_modeswitch.d/。我移除并重新插入该设备。然后usb-device给了我这个:

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  7 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0af0 ProdID=7301 Rev=00.00
S:  Manufacturer=Option N.V.
S:  Product=Globetrotter HSUPA Modem
S:  SerialNumber=Serial Number
C:  #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

该驱动程序是usb-storage,我实际上可以安装一个新创建的块设备(/dev/sr0在我的例子中)并看到它包含一个 Windows 驱动程序。我认为空文件阻止了usb_modeswitch对设备执行任何操作。

接下来我尝试usb_modeswitch手动运行:

sudo usb_modeswitch -v 0x0af0 -p 0x7301 --option-mode
# or
sudo usb_modeswitch -v 0x0af0 -p 0x7301 --option-mode -C 0xff

上述任何命令打印的输出都表明它有效,但输出的唯一变化usb-device是这一行:

I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)

这是我在开始搞乱之前所看到的usb_modeswitch。看来我设法手动重新创建usb_modeswitch自动执行的操作。我的解释是该工具仅部分工作:它能够删除驱动程序(usb-storage更改为none),但不会切换模式(08(stor.)保留)。


问题

如何从这里继续?如何使调制解调器工作?

答案1

太长了;博士

该设备标识为Vendor=0af0, ProdID=7301。创建一个名为0af0:7301in 的文件/etc/usb_modeswitch.d/(或编辑该文件,如果存在)。其内容应该是:

# Option HSO device
TargetClass=0xff
MessageContent="55534243785634120100000080000601000000000000000000000000000000"
NoDriverLoading=1

调查

(请注意,我是提问者,我正在回答我自己的问题。除了 tl;dr 之外,答案实际上是故事的延续。)

这个解释似乎是正确的:usb_modeswitch做得比应有的要少。

为了了解该工具尝试对我的设备执行什么操作(当 中没有0af0:7301文件时/etc/usb_modeswitch.d/),我查阅了apt-file show usb-modeswitch-data。其中一行看起来很有希望:

/usr/share/usb_modeswitch/configPack.tar.gz

是的,这个文件包含许多名为的文件vendorID:productID,其中包括0af0:7301

# Option HSO device
TargetClass=0xff
OptionMode=1

猜测它指定了我已经手动尝试过的选项(在问题中):

usb_modeswitch -v 0x0af0 -p 0x7301 --option-mode -C 0xff

因为硬件过去曾工作过,所以我怀疑当时的文件有所不同。我决定找到这个(或一个)旧文件。

我的主要条目/etc/apt/sources.list是:

deb http://pl.archive.ubuntu.com/ubuntu/ bionic main restricted

pl因为我是波兰人)。我的目的是usb-modeswitch-data在某处找到一些较旧的pl.archive.ubuntu.com。经过一番挖掘,我找到了这个地址:

ftp://pl.archive.ubuntu.com/ubuntu/pool/main/u/usb-modeswitch-data/

并下载了这个文件:

ftp://pl.archive.ubuntu.com/ubuntu/pool/main/u/usb-modeswitch-data/usb-modeswitch-data_20151101.orig.tar.bz2

解压后我发现一个文件0af0:7301与.0af0:7301/usr/share/usb_modeswitch/configPack.tar.gz


解决方案

找到的文件内容为:

# Option HSO device
TargetClass=0xff
MessageContent="55534243785634120100000080000601000000000000000000000000000000"
NoDriverLoading=1

我将文件复制到/etc/usb_modeswitch.d/,删除并重新插入设备。然后usb-devices给了我这个输出:

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#= 10 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
P:  Vendor=0af0 ProdID=7301 Rev=00.00
S:  Manufacturer=Option N.V.
S:  Product=Globetrotter HSUPA Modem
C:  #Ifs=11 Cfg#= 1 Atr=c0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
I:  If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso

该设备被识别为调制解调器,我的旧网络设置尝试启动。但调制解调器无法连接。重新启动操作系统后,情况变为:

T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=02 Dev#=  4 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs=  1
P:  Vendor=0af0 ProdID=7301 Rev=00.00
S:  Manufacturer=Option N.V.
S:  Product=Globetrotter HSUPA Modem
C:  #Ifs=11 Cfg#= 1 Atr=c0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 6 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 7 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso
I:  If#= 8 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 9 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=hso

然后它开始起作用了。option是重启前驱动程序出现问题吗?我不知道。不管怎样,该设备现在可以使用hso,而且看来这是当今正确的驱动程序。


最后的笔记

  • 似乎--option-mode据称适用于所有选项设备并没有真正切换我的设备的模式。明确指定正确的消息似乎至关重要。

  • 这个答案是使用相关设备发布的。

相关内容