Sierra Wireless EM7455 dysfunctional

Hans-Peter Jansen hpj at urpla.net
Thu Oct 13 10:10:07 UTC 2016


Hi Dan,

thank you for you quick response. Unfortunately, I'm lacking in this respect.
Sorry. The only way to gain access on this system is remote, and I'll have 
to arrange with the my friend for not getting in the way of each other..

On Freitag, 7. Oktober 2016 15:46:56 Dan Williams wrote:
> On Fri, 2016-10-07 at 21:12 +0200, Hans-Peter Jansen wrote:
> > [line wrapping disabled intentionally in order to improve
> > readability]
> > 
> > Hi,
> >  
> > in a Lenovo X1 Carbon Type FB20, using openSUSE 42.1, the EM7455 is 
> > unavailable, although:
> >  * a Linux 4.8 kernel is installed 
> >    (build here: https://build.opensuse.org/project/monitor/home:frisp
> > ete:Kernel-current)
> >  * libmbim-1.14.0, libqmi-1.16.0, and ModemManager-1.6.0 are
> > installed 
> >    (from the same repo)
> 
> What user/group are MM and the mbim proxy running as, and do you have
> anything like SELinux or AppArmor of something like that enabled?

openSUSE doesn't use SELinux (by default), AppArmor is deactivated for the 
last days:

~# rcapparmor status
apparmor module is loaded.
0 profiles are loaded.
0 profiles are in enforce mode.
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
apparmor.service - LSB: AppArmor initialization
   Loaded: loaded (/etc/init.d/boot.apparmor)
   Active: inactive (dead)

The processes in question are running as root:

root       707  0.0  0.0 418752  9676 ?        Ssl  10:03   0:00 /usr/sbin/ModemManager
root      1102 99.9  0.0 189112  4972 ?        Rl   10:03   7:21 /usr/lib/mbim-proxy

mbim-proxy is spinning like hell:

[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0
[pid  1102] stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2335, ...}) = 0

Stopping MM and killing mbim-proxy with SIGKILL is the only way to stop this.

> Can you run "sudo mbimcli -p -d /dev/cdc-wdm0 --query-device-caps"?

~# mbimcli -p -d /dev/cdc-wdm0 --query-device-caps
error: couldn't open the MbimDevice: Transaction timed out

This triggers another instance of mbim-proxy to spin.

The device acually exists:

~# l /dev/cdc-wdm0
crw------- 1 root root 180, 176 13. Okt 10:03 /dev/cdc-wdm0

Btw, the modem did show up yesterday once or twice, but we tried to reproduce
this today (disable all other network connections, kill switch, etc.), but
failed. 

The system is running a 4.8.1 kernel now. Here's the offending device with
some interesting logs:

2016-10-13T11:02:58.068689+02:00 x1carbon kernel: [    5.396078] usb 1-2: config 1 has an invalid interface number: 12 but max is 1
2016-10-13T11:02:58.068691+02:00 x1carbon kernel: [    5.396079] usb 1-2: config 1 has an invalid interface number: 13 but max is 1
2016-10-13T11:02:58.068692+02:00 x1carbon kernel: [    5.396079] usb 1-2: config 1 has an invalid interface number: 13 but max is 1
2016-10-13T11:02:58.068692+02:00 x1carbon kernel: [    5.396080] usb 1-2: config 1 has no interface number 0
2016-10-13T11:02:58.068692+02:00 x1carbon kernel: [    5.396080] usb 1-2: config 1 has no interface number 1
2016-10-13T11:02:58.068693+02:00 x1carbon kernel: [    5.397249] usb 1-2: New USB device found, idVendor=1199, idProduct=9079
2016-10-13T11:02:58.068693+02:00 x1carbon kernel: [    5.397250] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
2016-10-13T11:02:58.068694+02:00 x1carbon kernel: [    5.397250] usb 1-2: Product: Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
2016-10-13T11:02:58.068696+02:00 x1carbon kernel: [    5.397251] usb 1-2: Manufacturer: Sierra Wireless, Incorporated
2016-10-13T11:02:58.068697+02:00 x1carbon kernel: [    5.397251] usb 1-2: SerialNumber: LF62830495041014

Again, as shown from usb-devices:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  7 Spd=480 MxCh= 0
D:  Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1199 ProdID=9079 Rev=00.06
S:  Manufacturer=Sierra Wireless, Incorporated
S:  Product=Sierra Wireless EM7455 Qualcomm Snapdragon X7 LTE-A
S:  SerialNumber=LF62830495041014
C:  #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=12 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=qmi_wwan
I:  If#=13 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=qmi_wwan

I'm not that deep into the usb protocol but obviously, the kernel doesn't
accept the interface numbers 12 and 13. Question is: are these valid numbers
and the kernel is wrong, and how do we handle this mismatch? a quirk?
I can very well imagine, that this situation results in actual behavior in
such a way, that the device isn't setup properly, and hence not responding
in an expected way.

Cheers,
Pete


More information about the ModemManager-devel mailing list