Netgear 340u

David McCullough david.mccullough at accelecon.com
Fri Apr 25 04:44:50 PDT 2014


Hi all,

I am probably coming into this a bit late so forgive me if this has all
been solved already.  We have been running the 340u for quite a while under
linux using libqmi with these changes.

1. The 340u in default modem boots in Windows mode.  I am pretty sure this
   is MBIM only.  So if you want to use qmi commands you need to switch it.
   You can do this one of 2 ways.

   For a non-permanent switch,  change the value of bConfigurationValue
   from 2 to 1 and the modem will reset and come back with more traditional
   interface arrangement.  It is possible to do this using udev commands.

   You can also use the 340u password protected AT commands once you have
   done this to permanently select mode 6 (IIRC) to always have the AT and
   QMI interfaces present.

2. Apply this patch to your kernel if it is not already applied to get all
   the interfaces for use with the modem in QMI mode.  This patch is against
   linux-3.10

Cheers,
Davidm

diff --git a/linux-3.10/drivers/net/usb/qmi_wwan.c b/linux-3.10/drivers/net/usb/qmi_wwan.c
index fb252c7..fddcfe0 100644
--- a/linux-3.10/drivers/net/usb/qmi_wwan.c
+++ b/linux-3.10/drivers/net/usb/qmi_wwan.c
@@ -580,6 +580,7 @@ static const struct usb_device_id products[] = {
 	{QMI_FIXED_INTF(0x1199, 0x68a2, 8)},	/* Sierra Wireless MC7710 in QMI mode */
 	{QMI_FIXED_INTF(0x1199, 0x68a2, 19)},	/* Sierra Wireless MC7710 in QMI mode */
 	{QMI_FIXED_INTF(0x1199, 0x901c, 8)},    /* Sierra Wireless EM7700 */
+	{QMI_FIXED_INTF(0x1199, 0x9051, 8)},    /* Sierra Wireless MC7700 */
 	{QMI_FIXED_INTF(0x1bbb, 0x011e, 4)},	/* Telekom Speedstick LTE II (Alcatel One Touch L100V LTE) */
 	{QMI_FIXED_INTF(0x2357, 0x0201, 4)},	/* TP-LINK HSUPA Modem MA180 */
 	{QMI_FIXED_INTF(0x1bc7, 0x1200, 5)},	/* Telit LE920 */
diff --git a/linux-3.10/drivers/usb/serial/sierra.c b/linux-3.10/drivers/usb/serial/sierra.c
index 8894665..16e40c4 100644
--- a/linux-3.10/drivers/usb/serial/sierra.c
+++ b/linux-3.10/drivers/usb/serial/sierra.c
@@ -288,6 +288,12 @@ static const struct usb_device_id id_table[] = {
 	{ USB_DEVICE_AND_INTERFACE_INFO(0x0F3D, 0x68AA, 0xFF, 0xFF, 0xFF),
 	  .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
 	},
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x9051, 0xFF, 0xFF, 0xFF),
+	  .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
+	},
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x1199, 0x9051, 0xFF, 0x00, 0x00),
+	  .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
+	},
 	{ USB_DEVICE(0x0f3d, 0x68A3), 	/* Airprime/Sierra Wireless Direct IP modems */
 	  .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist
 	},


Aleksander Morgado wrote the following:
> On Fri, Apr 25, 2014 at 10:39 AM, Noah Taber <noahtaber at gmail.com> wrote:
> > Regarding ifup:
> >
> > Running before dhclient:
> >
> > $ sudo ifup wwan0
> > Ignoring unknown interface wwan0=wwan0.
> >
> > $ sudo dhclient -v wwan0
> > Internet Systems Consortium DHCP Client 4.2.2
> > Copyright 2004-2011 Internet Systems Consortium.
> > All rights reserved.
> > For info, please visit https://www.isc.org/software/dhcp/
> >
> > Listening on LPF/wwan0/a2:f6:ca:73:53:81
> > Sending on   LPF/wwan0/a2:f6:ca:73:53:81
> > Sending on   Socket/fallback
> > DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 4
> > DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 6
> > DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 11...
> >
> > Running after dhclient:
> >
> > $ sudo ifup wwan0
> > Ignoring unknown interface wwan0=wwan0.
> >
> 
> Not sure what happened here; did you double check that the network
> interface generated is called "wwan0"? (e.g. looking at dmesg output).
> 
> 
> >
> > Per your requested commands.  These commands were run WITHOUT the linux
> > patch on the netgear website.  If you would like me to apply the linux
> > patch, please let me know:
> >
> 
> No no, forget about that patch.
> 
> > $ sudo qmicli -d /dev/cdc-wdm0 --get-service-version-info
> > [/dev/cdc-wdm0] Supported versions:
> > ctl (1.5)
> > wds (1.16)
> > dms (1.13)
> > nas (1.25)
> > qos (1.3)
> > wms (1.8)
> > pds (1.13)
> > auth (1.2)
> > at (1.2)
> > voice (2.1)
> > cat2 (2.11)
> > uim (1.12)
> > pbm (1.4)
> > loc (2.0)
> > sar (1.0)
> > ims (1.0)
> > ts (1.0)
> > tmd (1.0)
> > wda (1.0)
> > csvt (1.0)
> > cat (2.11)
> > unknown [0xf0] (1.0)
> 
> Ok.
> 
> > $ sudo qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status
> > [/dev/cdc-wdm0] PIN status retrieved successfully
> > [/dev/cdc-wdm0] PIN1:
> > Status: disabled
> > Verify: 3
> > Unblock: 10
> > [/dev/cdc-wdm0] PIN2:
> > Status: enabled-not-verified
> > Verify: 3
> > Unblock: 10
> >
> 
> Ok.
> 
> > $ sudo qmicli -d /dev/cdc-wdm0 --nas-get-serving-system
> > [/dev/cdc-wdm0] Successfully got serving system:
> > Registration state: 'registered'
> > CS: 'attached'
> > PS: 'attached'
> > Selected network: '3gpp'
> > Radio interfaces: '1'
> > [0]: 'lte'
> > Roaming status: 'off'
> > Data service capabilities: '1'
> > [0]: 'lte'
> > Current PLMN:
> > MCC: '310'
> > MNC: '410'
> > Description: 'AT&T'
> > Roaming indicators: '1'
> > [0]: 'off' (lte)
> > 3GPP time zone offset: '-600' minutes
> > 3GPP daylight saving time adjustment: '0' hours
> > 3GPP location area code: '65534'
> > 3GPP cell ID: '128005384'
> > Detailed status:
> > Status: 'available'
> > Capability: 'cs-ps'
> > HDR Status: 'power-save'
> > HDR Hybrid: 'yes'
> > Forbidden: 'no'
> > LTE tracking area code: '34052'
> > Full operator code info:
> > MCC: '310'
> > MNC: '410'
> > MNC with PCS digit: 'yes'
> >
> 
> Ok.
> 
> > $ sudo qmicli -d /dev/cdc-wdm0 --nas-get-home-network
> > [/dev/cdc-wdm0] Successfully got home network:
> > Home network:
> > MCC: '310'
> > MNC: '410'
> > Description: 'AT&T'
> >
> 
> Ok.
> 
> > $ sudo qmicli -d /dev/cdc-wdm0 --wds-get-packet-service-status
> > [/dev/cdc-wdm0] Connection status: 'disconnected'
> >
> 
> Ok.
> 
> >
> > $ sudo qmicli -d /dev/cdc-wdm0 --wds-start-network=broadcast
> > --client-no-release-cid --verbose
> > [24 Apr 2014, 22:22:46] [Debug] QMI Device at '/dev/cdc-wdm0' ready
> > [24 Apr 2014, 22:22:46] [Debug] [/dev/cdc-wdm0] Assuming service 'wds' is
> > supported...
> > [24 Apr 2014, 22:22:46] [Debug] [/dev/cdc-wdm0] Allocating new client ID...
> > [24 Apr 2014, 22:22:46] [Debug] [/dev/cdc-wdm0] Sent message...
> > <<<<<< RAW:
> > <<<<<<   length = 16
> > <<<<<<   data   = 01:0F:00:00:00:00:00:01:22:00:04:00:01:01:00:01
> >
> > [24 Apr 2014, 22:22:46] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
> > <<<<<< QMUX:
> > <<<<<<   length  = 15
> > <<<<<<   flags   = 0x00
> > <<<<<<   service = "ctl"
> > <<<<<<   client  = 0
> > <<<<<< QMI:
> > <<<<<<   flags       = "none"
> > <<<<<<   transaction = 1
> > <<<<<<   tlv_length  = 4
> > <<<<<<   message     = "Allocate CID" (0x0022)
> > <<<<<< TLV:
> > <<<<<<   type       = "Service" (0x01)
> > <<<<<<   length     = 1
> > <<<<<<   value      = 01
> > <<<<<<   translated = wds
> >
> > [24 Apr 2014, 22:22:47] [Debug] [/dev/cdc-wdm0] Received message...
> >>>>>>> RAW:
> >>>>>>>   length = 24
> >>>>>>>   data   =
> >>>>>>> 01:17:00:80:00:00:01:01:22:00:0C:00:02:04:00:00:00:00:00:01:02:00:01:03
> >
> > [24 Apr 2014, 22:22:47] [Debug] [/dev/cdc-wdm0] Received message
> > (translated)...
> >>>>>>> QMUX:
> >>>>>>>   length  = 23
> >>>>>>>   flags   = 0x80
> >>>>>>>   service = "ctl"
> >>>>>>>   client  = 0
> >>>>>>> QMI:
> >>>>>>>   flags       = "response"
> >>>>>>>   transaction = 1
> >>>>>>>   tlv_length  = 12
> >>>>>>>   message     = "Allocate CID" (0x0022)
> >>>>>>> TLV:
> >>>>>>>   type       = "Result" (0x02)
> >>>>>>>   length     = 4
> >>>>>>>   value      = 00:00:00:00
> >>>>>>>   translated = SUCCESS
> >>>>>>> TLV:
> >>>>>>>   type       = "Allocation Info" (0x01)
> >>>>>>>   length     = 2
> >>>>>>>   value      = 01:03
> >>>>>>>   translated = [ service = 'wds' cid = '3' ]
> >
> > [24 Apr 2014, 22:22:47] [Debug] [/dev/cdc-wdm0] Registered 'wds' (version
> > unknown) client with ID '3'
> > [24 Apr 2014, 22:22:47] [Debug] Asynchronously starting network...
> > [24 Apr 2014, 22:22:47] [Debug] [/dev/cdc-wdm0] Sent message...
> > <<<<<< RAW:
> > <<<<<<   length = 25
> > <<<<<<   data   =
> > 01:18:00:00:01:03:00:01:00:20:00:0C:00:14:09:00:62:72:6F:61:64:63:61:73:74
> >
> > [24 Apr 2014, 22:22:47] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
> > <<<<<< QMUX:
> > <<<<<<   length  = 24
> > <<<<<<   flags   = 0x00
> > <<<<<<   service = "wds"
> > <<<<<<   client  = 3
> > <<<<<< QMI:
> > <<<<<<   flags       = "none"
> > <<<<<<   transaction = 1
> > <<<<<<   tlv_length  = 12
> > <<<<<<   message     = "Start Network" (0x0020)
> > <<<<<< TLV:
> > <<<<<<   type       = "APN" (0x14)
> > <<<<<<   length     = 9
> > <<<<<<   value      = 62:72:6F:61:64:63:61:73:74
> > <<<<<<   translated = broadcast
> >
> > [24 Apr 2014, 22:22:48] [Debug] [/dev/cdc-wdm0] Received message...
> >>>>>>> RAW:
> >>>>>>>   length = 32
> >>>>>>>   data   =
> >>>>>>> 01:1F:00:80:01:03:02:01:00:20:00:13:00:02:04:00:01:00:0E:00:10:02:00:0C:00:11:04:00:00:00:00:00
> >
> > [24 Apr 2014, 22:22:48] [Debug] [/dev/cdc-wdm0] Received message
> > (translated)...
> >>>>>>> QMUX:
> >>>>>>>   length  = 31
> >>>>>>>   flags   = 0x80
> >>>>>>>   service = "wds"
> >>>>>>>   client  = 3
> >>>>>>> QMI:
> >>>>>>>   flags       = "response"
> >>>>>>>   transaction = 1
> >>>>>>>   tlv_length  = 19
> >>>>>>>   message     = "Start Network" (0x0020)
> >>>>>>> TLV:
> >>>>>>>   type       = "Result" (0x02)
> >>>>>>>   length     = 4
> >>>>>>>   value      = 01:00:0E:00
> >>>>>>>   translated = FAILURE: CallFailed
> >>>>>>> TLV:
> >>>>>>>   type       = "Call End Reason" (0x10)
> >>>>>>>   length     = 2
> >>>>>>>   value      = 0C:00
> >>>>>>>   translated = (null)
> >>>>>>> TLV:
> >>>>>>>   type       = "Verbose Call End Reason" (0x11)
> >>>>>>>   length     = 4
> >>>>>>>   value      = 00:00:00:00
> >>>>>>>   translated = [ type = '(null)' reason = '0' ]
> >
> > error: couldn't start network: QMI protocol error (14): 'CallFailed'
> > call end reason (12): (null)
> > verbose call end reason (0,0): [(null)] (null)
> > [/dev/cdc-wdm0] Client ID not released:
> > Service: 'wds'
> >    CID: '3'
> > [24 Apr 2014, 22:22:48] [Debug] [/dev/cdc-wdm0] Unregistered 'wds' client
> > with ID '3'
> > [24 Apr 2014, 22:22:48] [Debug] Client released
> >
> 
> 
> Wait, is 'broadcast' really your APN?  That is not in the m-b-p-d for AT&T, see:
> https://git.gnome.org/browse/mobile-broadband-provider-info/tree/serviceproviders.xml#n12322
> 
> Can you retry with e.g. "Broadband" as APN?
> 
> $ qmicli -d /dev/cdc-wdm0 --wds-start-network=Broadband
> --client-no-release-cid --verbose
> 
> 
> Or better, use the APN that you're supposed to use with your data plan :)
> 
> 
> -- 
> Aleksander
> https://aleksander.es
> _______________________________________________
> libqmi-devel mailing list
> libqmi-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libqmi-devel

-- 
David McCullough,  david.mccullough at accelecon.com,   Ph: 0410 560 763


More information about the libqmi-devel mailing list