tl;dr
Vodafone E3730 HSPA Express Data Card seems not to work at all in Kubuntu 18.04 LTS. How to fix this?
Description
The card used to work. Frankly I don't remember if it worked in 18.04 LTS or in some earlier LTS version, but it did. In my current KDE Plasma in 18.04 LTS there are saved network settings that used to work. I expected them to kick in as soon as I insert the card but no; it's as if the card isn't there.
The SIM card was never removed and it should still work.
From the time it worked I remember no problems whatsoever. It probably worked almost out of the box. The hardware was recognized and I only had to set details like APN.
Technical details
This information is printed on a sticker:
Vodafone Mobile Connect
Model: E3730
HSPA Express Data CardDesigned in E.U. by Option
Made in Ireland by Option
QUALCOMM 3G CDMA
This is from lsusb
:
Bus 001 Device 006: ID 0af0:7301 Option
And this is from 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
Research
It seems the right driver for the device is option
.
I learnt what usb_modeswitch
is:
Several new USB devices have their proprietary Windows drivers onboard, most of them WWAN and WLAN dongles. When plugged in for the first time, they act like a flash storage and start installing the Windows driver from there. If the driver is installed, it makes the storage device disappear and a new device, mainly composite (e.g. with modem ports), shows up.
On Linux, in most cases the drivers are available as kernel modules, such as
usbserial
oroption
. However, the device initially binds tousb-storage
by default.usb_modeswitch
can then send a provided bulk message (most likely a mass storage command) to the device; this message has to be determined by analyzing the actions of the Windows driver.
I confirmed the packages usb-modeswitch
and usb-modeswitch-data
are installed. I believe they should work automatically. At least they seemingly used to work when my card used to work, without me knowing anything about usb_modeswitch
.
I noticed the device does not even act like a flash storage. In the output of usb-devices
(above) it states Cls=08(stor.)
, which I believe indicates Base Class 08h (Mass Storage); but the driver is none
. No block device appears.
Then I found this answer and tried to adjust it to my hardware.
At first I created an empty file named 0af0:7301
in /etc/usb_modeswitch.d/
. I removed and re-inserted the device. Then usb-device
gave me this:
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
The driver was usb-storage
and I could actually mount a newly created block device (/dev/sr0
in my case) and see it contains a Windows driver. I think the empty file had prevented usb_modeswitch
from doing anything to the device.
Next I tried to run usb_modeswitch
manually:
sudo usb_modeswitch -v 0x0af0 -p 0x7301 --option-mode
# or
sudo usb_modeswitch -v 0x0af0 -p 0x7301 --option-mode -C 0xff
Any of the above commands printed output suggesting it worked, but the only change in the output of usb-device
was in this line:
I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
This is what I had seen before I started to mess with usb_modeswitch
. It seems I managed to manually recreate what usb_modeswitch
had been doing automatically. My interpretation is the tool works only partially: it is able to remove the driver (usb-storage
changes to none
) but it doesn't switch the mode (08(stor.)
remains).
Question
How to proceed from here? How to make the modem work?