太长了;博士
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 上,大多数情况下驱动程序可作为内核模块使用,例如
usbserial
或option
。但是,设备最初usb-storage
默认绑定到。usb_modeswitch
然后可以向设备发送提供的批量消息(很可能是大容量存储命令);必须通过分析 Windows 驱动程序的操作来确定此消息。
我确认了软件包usb-modeswitch
并usb-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:7301
in 的文件/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
据称适用于所有选项设备并没有真正切换我的设备的模式。明确指定正确的消息似乎至关重要。这个答案是使用相关设备发布的。