MC7304 Driver Problem on Debian

Hi,
I bought some USB modem for testing and use it on Industrial Machine.
I’ve found some problem with the modem that have installed the Sierra Wireless MC7304.
I’ve tried to install different Version of the Module/Driver but it doesn’t change.

This is the syslog output that comes out after i’ve plug in the modem:

Jan  8 10:07:45 RIU kernel: [  408.599586] usb 1-2: new high-speed USB device number 4 using ehci_hcd
Jan  8 10:07:46 RIU kernel: [  408.733974] usb 1-2: config 1 has an invalid interface number: 8 but max is 5
Jan  8 10:07:46 RIU kernel: [  408.734013] usb 1-2: config 1 has an invalid interface number: 10 but max is 5
Jan  8 10:07:46 RIU kernel: [  408.734043] usb 1-2: config 1 has an invalid interface number: 11 but max is 5
Jan  8 10:07:46 RIU kernel: [  408.734072] usb 1-2: config 1 has no interface number 1
Jan  8 10:07:46 RIU kernel: [  408.734096] usb 1-2: config 1 has no interface number 4
Jan  8 10:07:46 RIU kernel: [  408.734120] usb 1-2: config 1 has no interface number 5
Jan  8 10:07:46 RIU kernel: [  408.735210] usb 1-2: New USB device found, idVendor=1199, idProduct=68c0
Jan  8 10:07:46 RIU kernel: [  408.735242] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jan  8 10:07:46 RIU kernel: [  408.735269] usb 1-2: Product: MC7304
Jan  8 10:07:46 RIU kernel: [  408.735290] usb 1-2: Manufacturer: Sierra Wireless, Incorporated

As you can see it seems that the driver read some bad value from the chip.

This is the output of the command “usb-devices” that say that in the end the driver was not loaded:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1199 ProdID=68c0 Rev=00.06
S:  Manufacturer=Sierra Wireless, Incorporated
S:  Product=MC7304
C:  #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
/usr/bin/usb-devices: line 79: printf: 0a: invalid number
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
/usr/bin/usb-devices: line 79: printf: 0b: invalid number
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
/usr/bin/usb-devices: line 79: printf: 08: invalid octal number
I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)

The system where i need to install the modem was a Debian 7/7.5 with Kernel 3.2.0-4-486
Thanks to anyone who can help me

Which version of the driver do you use. You can download the latest here:
http://developer.sierrawireless.com/Resources/Resources/AirPrime/Software/USB%20drivers%20Linux%20QMI%20Software.aspx

This is what my dmesg look like on a Ubuntu machine

[252806.408074] usb 1-2: new high-speed USB device number 10 using ehci_hcd
[252806.540924] usb 1-2: config 1 has an invalid interface number: 10 but max is 8
[252806.540933] usb 1-2: config 1 has an invalid interface number: 11 but max is 8
[252806.540940] usb 1-2: config 1 has an invalid interface number: 16 but max is 8
[252806.540947] usb 1-2: config 1 has an invalid interface number: 17 but max is 8
[252806.540954] usb 1-2: config 1 has an invalid interface number: 17 but max is 8
[252806.540961] usb 1-2: config 1 has an invalid interface number: 18 but max is 8
[252806.540968] usb 1-2: config 1 has an invalid interface number: 18 but max is 8
[252806.540974] usb 1-2: config 1 has no interface number 1
[252806.540981] usb 1-2: config 1 has no interface number 4
[252806.540987] usb 1-2: config 1 has no interface number 5
[252806.540993] usb 1-2: config 1 has no interface number 6
[252806.540999] usb 1-2: config 1 has no interface number 7
[252806.541542] usb 1-2: New USB device found, idVendor=1199, idProduct=68c0
[252806.541550] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[252806.541557] usb 1-2: Product: MC7304
[252806.541563] usb 1-2: Manufacturer: Sierra Wireless, Incorporated
[252806.541570] usb 1-2: SerialNumber: 0123456789ABCDEF
[252806.576837] usbcore: registered new interface driver GobiSerial
[252806.577062] USB Serial support registered for GobiSerial
[252806.580270] GobiSerial 1-2:1.0: GobiSerial converter detected
[252806.580531] usb 1-2: GobiSerial converter now attached to ttyUSB0
[252806.582376] GobiSerial 1-2:1.2: GobiSerial converter detected
[252806.582546] usb 1-2: GobiSerial converter now attached to ttyUSB1
[252806.583888] GobiSerial 1-2:1.3: GobiSerial converter detected
[252806.586682] usb 1-2: GobiSerial converter now attached to ttyUSB2
[252806.586751] GobiSerial: 2014-07-21/SWI_2.20:GobiSerial
[252806.626674] GobiNet: 2014-10-09/SWI_2.27
[252806.646504] GobiNet 1-2:1.8: eth2: register 'GobiNet' at usb-0000:00:1d.7-2, GobiNet Ethernet Device, 7e:dc:06:88:00:35
[252808.050542] creating qcqmi2
[252808.054607] usbcore: registered new interface driver snd-usb-audio
[252808.059595] GobiNet 1-2:1.10: eth3: register 'GobiNet' at usb-0000:00:1d.7-2, GobiNet Ethernet Device, 7e:dc:06:88:00:35
[252808.087001] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready
[252808.090296] IPv6: ADDRCONF(NETDEV_UP): eth3: link is not ready
[252809.459189] creating qcqmi3
[252809.459430] usbcore: registered new interface driver GobiNet
[252809.534757] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready
[252809.536851] IPv6: ADDRCONF(NETDEV_UP): eth2: link is not ready

Those warnings are harmless and expected. The reason is that Sierra Wireless use fixed interface numbers to idenitify different functions, instead of doing the consecutive numbering Linux expects.

The warnings are more confusing than helpful in my opinion. But there were some objections to my proposal to remove them a couple of years ago, so I dropped it. See
comments.gmane.org/gmane.linux.usb.general/77868

In any case: You can safely ignore those warnings.

That kernel is too old to support this modem by default. You can eitehr install the Sierra Wireless provided drivers, or upgrade the kernel/system,

I have installed 20 modems on mobile PCs (emergency car information system with stock Intel D2500CC; wheezy 64bit ).

Most important - update to latest FW.

The VID/PID of the MC7xxx when in QMI mode is 1199/68A2
the VID/PID of the MC7304, by default, is 1199/68C0

I have rule - try to use kernel drivers (modules) and try to avoid any 3rd party install (that’s why I doped Huawei ME909u-521).
So new usbid is a part of new Linux module which support MC7304 with QMI thing. That is supported only from Jessie (NOW).

If you want to use Wheezy kernel, only SIERRA module useful. But Sierra module does not interface with usbid 68A2 (it not listed in module code; lsmod sierra). Now it will support QMI and AT interface.

Sierra modem are complete solution, they don’t need any FW to load from kernel. So kernel driver (module) need only serial connection and driver doe’s not do to much (IMHO).

To apply changes to MC7304 you need Windows (with driver installed) or Jessie. Now you have serial connection to modem:
ttyUSB0 - DM port (not useful for me)
ttyUSB1 - NMEA GPS data (needs blindly “echo $GPS_START > /dev/ttyUSB1” to enable data output)
ttyUSB2 - AT port (modem)
plus bunch of other things.

Can see more output with modem-manager-cli “mmcli -m 0” (under Jessie).

Now you can revert modem to old USBid (from root shell):

echo -e ‘AT!ENTERCND=“A710”\r’ > /dev/ttyUSB2
sleep 1
echo -e ‘AT!UDPID=68a2\r’ > /dev/ttyUSB2
sleep 2
echo -e ‘AT!UDUSBCOMP=6\r’ > /dev/ttyUSB2 (by default it is AT!UDUSBCOMP=7; please read 4114486 AirPrime MC73XX-8805 AT Command Reference.pdf )
sleep 2
echo -e ‘AT!RESET\r’ > /dev/ttyUSB2

(echo is faster then minicom way).

I believe that default setting better suites Windows. “AT!UDUSBCOMP=6” better for Linux kernel.

For me it was useful to read AirPrime_MC73xx_USB_Driver_Developers_Guide_Rev1_1.pdf

Bests
Vaidotas
Lithuania