HP LT4211 Support

Hi All,

I have a USB LTE board with a HP TL4211 module fitted and i'm trying to get it working but i just can't get it to show up under modemmanager

I can see it as usb0 but it doesn't seem to respond in any useful way

All i really want is a 4G failover, i've tried using the "table of hardware" but that seems to be one of the most convoluted UI's i've ever used

Please Help!!!

Please show the output of cat /sys/kernel/debug/usb/devices

are you sure it isn't something else, rebranded ?

what's the PID and VID ?

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.10
S:  Manufacturer=Linux 5.10.127 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:01:00.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.10 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=2109 ProdID=3431 Rev= 4.21
S:  Product=USB2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=148f ProdID=5370 Rev= 1.01
S:  Manufacturer=Ralink
S:  Product=802.11 n WLAN
S:  SerialNumber=1.0
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=450mA
I:* If#= 0 Alt= 0 #EPs= 7 Cls=ff(vend.) Sub=ff Prot=ff Driver=rt2800usb
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=01 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#= 17 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  3
P:  Vendor=03f0 ProdID=911d Rev= 2.32
S:  Manufacturer=Hewlett-Packard
S:  Product=HP lt4211 Gobi 4G Module
C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E:  Ad=83(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=
E:  Ad=89(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
C:* #Ifs= 2 Cfg#= 2 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
E:  Ad=82(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
C:  #Ifs= 3 Cfg#= 3 Atr=a0 MxPwr=500mA
A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
I:  If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=
I:  If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:  If#= 2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=32ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 4
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.10
S:  Manufacturer=Linux 5.10.127 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:01:00.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=ff(vend.) Sub=ff Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=0b95 ProdID=1790 Rev= 1.00
S:  Manufacturer=ASIX Elec. Corp.
S:  Product=AX88179
S:  SerialNumber=0000249B138BF2
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=496mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=00 Driver=ax88179_178a
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=128ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

This is the output from lsusb

Bus 001 Device 017: ID 03f0:911d Hewlett-Packard HP lt4211 Gobi 4G Module

at least there's plenty of hits on google for "03f0:911d"

i came across something about "usb-modeswitch" which is meant to change how the device is recognised, but i've no idea how or what to do with that

modeswitch is available for openwrt too, install it, see if the modem is recognized, and "altered"

I've installed modeswitch, nothing appears to have changed, does it require configuration?

I really am new to these depths in unix based systems :frowning:

I suggest to install qmi, mbim and option drivers and a terminal program like picocom.
Then you should check if modeswitch will be able to switch this modem from Cfg#2 (ECM) to Cfg#1 (QMI) or Cfg#3 (MBIM).

1 Like

if not, you might have to do some hands on, to get the modeswitch config right.

1 Like

How do i do that?

I've installed modeswitch, but i have no idea how to use it, i've tried usb-modeswitch -h from the cmdline but it just says "not found"

It looks like this modem cannot be switched using the common procedures, see https://www.draisberghof.de/usb_modeswitch/bb/viewtopic.php?t=2782

I suggest to uninstall MM and try using this modem in ECM as shown here:

So i've figured out how to fire modeswitch "usbmode -l" and it's giving the following output

Found device: 03f0:911d (Manufacturer: "Hewlett-Packard", Product: "HP lt4211 Gobi 4G Module", Serial: "")

Am i right in thinking that it's using serial and does this mean it can switch the device?

See this response on modeswitch site:

the firmware of this card does not accept configuration changes. It may be intentionally factory locked to config #2 otherwise it is a firmware bug.

That's fair enough, i can repurpose the card elsewhere,

I'll just grab another card (if i can figure out which are supported)

Thank you for all your help

Chris

if you get it to work on some other Linux box/dist, it should be doable in OpenWRT too.

Looks mostly like a bug. The device disconnects whenever the bConfiguration value is changed. Which makes it impossible to change it from detault, since every reconnect will place it into default again.

It would be good to have this behaviour verified before we dismiss it as implossible. @AneticsUk - could you please try the

echo 3 >/sys/bus/usb/devices/x-y/bConfigurationValue

as shown in that thread? You have to replace "x-y" with the actual bus and port values where your modem is connected. You can find these values e.g in the dmesg output when the modem is plugged in. Here it would be "1-2" for example:

usb 1-2: new high-speed USB device number 16 using xhci_hcd

And then show us the dmesg output when you do the echo. If the firmware isn't buggy, then you should be able to switch directly from cfg #2 to cfg #3 without an USB dsiconnect. Or from cfg #2 to cfg #0 (unconfigured) and then to cfg #3, all without the modem showing up as a new device in the log.

Some of the problem is caused by Linux preferring Class functions, ending up with cfg #2 instead of #1 as default. But this fact is somehow promising too. It means that Linux does manage to switch configs. Once.... The problem is that we don't have any tools affecting the choice. It will be 2. But if we're lucky, then the issue isn't the number of times this happens but how early. If so, then a properly configured usb-modeswitch should be able to work around that. I.e usb-modeswitch should be configured to auto-select the wanted configuration immediately after connect.

But if the firmware cannot change from the initial configuration at all, then I guess we'll have to add a new quirk. Not entirely sure what that would look like. Let's exhaust the other alternatives first...

(I was thinking that we could re-use the recent fix for the rtl8156 devices. But that will not prevent the config from being changed twice, so I guess it won't work any better than usb-modeswitch does)

2 Likes

I'm a bit sceptic about direct switching to another Cfg#, so I would first unconfigure with
echo 0 >/sys/bus/usb/devices/x-y/bConfigurationValue or
echo -1 >/sys/bus/usb/devices/x-y/bConfigurationValue

then
echo 1 >/sys/bus/usb/devices/x-y/bConfigurationValue or
echo 3 >/sys/bus/usb/devices/x-y/bConfigurationValue

@bmork do you think it will make sense to connect it under Windows to get AT command port working and then try to switch the configuration through AT command [that I don't know for this modem]?

Uncertain. We don't know shit about this modem. It doesn't look like it's eve known by the option or qmi_wwan drivers. Probably because no one has been able to switch it to a mode where that mattered. Which is one reason we'd prefer cfg #3 as it is. cfg #1 requires some additional work.

2 Likes