[PATCH 0/3] Enabling IPv6 on Qualcomm MDM9x00 chipsets

Dan Williams dcbw at redhat.com
Wed Nov 27 09:14:58 PST 2013


On Wed, 2013-11-27 at 12:54 +0100, Bjørn Mork wrote:
> I have tried to get IPv6 going on the Sierra Wireless MC7710 from time
> to time ever since I got it in April 2012. I had some success with a
> Huawei E392 using the same MDM9200 chipset, so I expected IPv6 to just
> work on the MC7710.  But it didn't.  It should be noted that I had
> access to multiple E392 modems at that time, and only some of them
> would connect to an IPv6 APN.  The others showed symptoms similar to
> the MC7710: PDP type IPV6 or IPV4V6 can be configured, but any
> connection attempt would fail.
> 
> Then, in July this year, another frustrated MC7710 user continued the
> old thread I initially started on Sierra's forums, and managed to
> describe the problem a lot better (with a lot less side tracking...):
> http://forum.sierrawireless.com/viewtopic.php?f=117&t=6126&p=30599&hilit=ipv6#p29460
> 
> The discussion following documented the fact that there exists a
> "magic" AT command enabling IPv6 support in the MC7710. This turned
> out to be the problem.  IPv6 support was disabled. Unfortunately
> the actual command is not documented in any publically available
> documentation AFAIK, whether under NDA or not, and is only disclosed
> to Sierra Wireless customers under NDA.  So it cannot be disclosed.
> 
> But NVRAM dumps are not covered by the NDA, and diffing dumps
> before and after running the command shows that there is a single
> bit toggled in NVRAM: the first byte of item #1896 (0x0768) changes
> from 00 to 01.

So this NV item is actually called NV_IPV6_ENABLED_I, which is pretty
telling.  And it's only one byte in length too.

> Now, I still had an E392 modem with the same problem, and Huawei
> doesn't have a similar AT command AFAIK. Reading NVRAM item #1896
> showed that it was unpopulated, returning an INACTIVE status. But
> writing 01 to it was successful. And it caused IPv6 to magically
> start working!
> 
> So having tested this on two MDM9200 based modems from two different
> vendors, I am pretty sure that this NVRAM item should be set to 01 on
> these devices. The same may also apply to other Qualcomm devices, but
> I've not been able to test it.  The MDM8200 based Huawei E367 modem I
> have will not let me set a IPV6 PDP type, so it will not support IPv6
> in any case.  FWIW, the NVRAM item was unpopulated on this modem as
> well and writing to it doesn't seem to have any ill effects.

If the firmware really doesn't support IPv6, enabling the item shouldn't
have any effect.  However, as more devices start using firmware that
knows about NV_IPV6_ENABLED_I we might run into problems.  However, with
an NV item like this its a lot less risky than say the HDR revision or
mode preference.

> But if you have a Qualcomm based device which appears to support IPv6
> (has the IPV6 PDP type) and an IPv6 enabled SIM, but still cannot make
> it connect, then please try out this utility.
> 
> Note that if you have an IPv6 *only* SIM, like I have, then you also
> have to change the PDP type of the default profile to IPV6 and restart
> the modem.  Else it won't work.  The same goes for IPv4 *only* SIMs,
> actually: If the default profile has a type different from IP, then
> the modem will fail to attach to the network.

Does this still hold for IPV4V6, if the modem supports it?  Or is it
only a problem with SIM:IPv6 & PDP:IPV4 and vice versa?

> So how do you find your default profile?  It's often the first one,
> listed as 1 in the output from AT+CGDCONT?.  So an easy way to change
> it to IPV6 is by using the AT command interface:
> 
>  AT+CGDCONT=1,"IPV6"
> 
> You can verify that this in fact changed the default by using qmicli:
> 
>  bjorn at nemi:~$ qmicli -d /dev/cdc-wdm0 --wds-get-default-settings=3gpp
>  Default settings retrieved:
>          APN: ''
>          PDP type: 'ipv6'
>          Username: ''
>          Password: ''
>          Auth: 'none'
> 
> 
> I hope this helps documenting yet another piece of undocumented
> magic in these Qualcomm firmwares.  You gotta wonder what they smoked
> the day they decided to disable IPv6 by default...

Well, I'm sure there's documentation in the Qualcomm ICDs and under
NDA :)  But we certainly don't have any of that.  The NV item
provisioning is under the control of the OEM or the provider during
provisioning, so the best guess is that the OEM either just didn't
bother to set it, since they didn't care about IPv6, or they actually
don't want to support it, or they are relying on provider-specific
connection software to make the change when needed.

In any case, great work, comments on the individual patches coming.

Dan

> 
> 
> Bjørn Mork (3):
>   qcdm: add IPv6 nvram setting
>   qcdm: add IPv6 nvram setting to test suite
>   qcdm: add utility to display and set the IPv6 preference
> 
>  .gitignore                    |    1 +
>  libqcdm/src/commands.c        |   88 ++++++++++++
>  libqcdm/src/commands.h        |   24 ++++
>  libqcdm/src/nv-items.h        |   13 ++
>  libqcdm/tests/Makefile.am     |    8 +-
>  libqcdm/tests/ipv6pref.c      |  316 +++++++++++++++++++++++++++++++++++++++++
>  libqcdm/tests/test-qcdm-com.c |   55 +++++++
>  libqcdm/tests/test-qcdm-com.h |    2 +
>  libqcdm/tests/test-qcdm.c     |    1 +
>  9 files changed, 507 insertions(+), 1 deletion(-)
>  create mode 100644 libqcdm/tests/ipv6pref.c
> 




More information about the ModemManager-devel mailing list