QMICLI IPV6 problem on MC7354

Tang Nguyen tang_nguyen at yahoo.com
Thu Aug 18 14:34:04 UTC 2016

Yeah, option --wds-set-ip-family is what I wish but unfortunately it is not available on libqmi version 1.14.2.
Do you think the version 1.16.0 would support it ?  if not, do we have any plan to add on ? I think it is quite useful option though.

Yes, i did set ipv4v6 to PDP#3 context, and using it to create 2 wds sessions as you suggested in another thread.
I got 2 packet handlers and 2 CIDs after creating 2 wds sessions, but still not able to get global ipv6 address.

qmicli command with option --wds-get-current-settings just show ipv4 address.

root at rx1500-lns-33:~# qmicli -d /dev/cdc-wdm1 --wds-get-current-settings
[/dev/cdc-wdm1] Current settings retrieved:
             IP Family: IPv4
          IPv4 address:
      IPv4 subnet mask:
   IPv4 gateway address:
      IPv4 primary DNS:
                   MTU: 1428
               Domains: none

Seems like libqmi does not send request to modem for ipv6 address, so the wwanX interface can't get ipv6 address.


On Thursday, August 18, 2016 10:15 AM, Bjørn Mork <bjorn at mork.no> wrote:
Tang Nguyen <tang_nguyen at yahoo.com> writes:

> You are right. Verizon network requires 2 PDP context from modem to
> connect to their network. By factory default, Sierra program PDP#1 as
> vzwims, and PDP#3 as vzwinternet.  To establish the data call,
> application sends request with PDP#3 to get ip address from network.
> Since I am using R&S CMW500 callbox, so the APN is not a matter.  On
> Call box, I saw 2 PDP context is activated, one is for vzwims and
> other is vzwinternet.  AT command replies with PDP#1 information.

Ah, OK.

IIUC, what you wanted was to have a dual-stack connection to one of
these.  Or rather, to use the dual-stack connection you already have

To do that with QMI you have to establish two WDS sessions referring to
the *same* PDP context, which of course has to be IPV4V6.  This doesn't
actually establish two connections, but is simply the way Qualcomm chose
to map dual-stack contexts in QMI.  To get both IPv4 and IPv6 settings,
you need to run --wds-get-current-settings twice as well, carefully
using the CIDs associated with the IPv4 or IPv6 part of the connection.

But you also need to set the wanted IP family for each --wds-start-network
call, which I don't think is supported by qmicli yet?

The whole procedure would be something like this, if --wds-set-ip-family
had existed:

  qmicli -d /dev/cdc-wdm0 --wds-set-ip-family=4 --client-no-release-cid
  [/dev/cdc-wdm0] Client ID not released:
  Service: 'wds'
  CID: 'x'
  qmicli -d /dev/cdc-wdm0 --wds-start-network=vzwinternet --client-no-release-cid  --client-cid=x
  => IPv4 handle

  qmicli -d /dev/cdc-wdm0 --wds-set-ip-family=6 --client-no-release-cid
  [/dev/cdc-wdm0] Client ID not released:
  Service: 'wds'
  CID: 'y'
  qmicli -d /dev/cdc-wdm0 --wds-start-network=vzwinternet --client-no-release-cid  --client-cid=y
  => IPv6 handle
  qmicli -d /dev/cdc-wdm0 --wds-get-current-settings --client-no-release-cid  --client-cid=x
  => IPv4 settings
  qmicli -d /dev/cdc-wdm0 --wds-get-current-settings --client-no-release-cid  --client-cid=y
  => IPv6 settings

I believe this is what MM implements for QMI dual-stack.


More information about the libqmi-devel mailing list