problems with QMI dual stack connections from MM - works with qmicli
Daniele Palmas
dnlplm at gmail.com
Fri Apr 30 15:03:51 UTC 2021
Hi Bjørn,
Il giorno lun 26 apr 2021 alle ore 18:23 Bjørn Mork <bjorn at mork.no> ha scritto:
>
> Bjørn Mork <bjorn at mork.no> writes:
>
> > Sorry, i do not think these issues are related to ModemManager at all.
>
> This is a test from freshly booted modem, MM not running:
>
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --device-open-sync --wda-set-data-format=ep-type=hsusb,ep-iface-number=4,link-layer-protocol=raw-ip,ul-protocol=qmapv5,dl-protocol=qmapv5,dl-max-datagrams=32,dl-datagram-max-size=31744
> [/dev/cdc-wdm0] Successfully set data format
> QoS flow header: no
> Link layer protocol: 'raw-ip'
> Uplink data aggregation protocol: 'qmapv5'
> Downlink data aggregation protocol: 'qmapv5'
> NDP signature: '0'
> Downlink data aggregation max datagrams: '32'
> Downlink data aggregation max size: '31744'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --wds-bind-mux-data-port=mux-id=1,ep-type=hsusb,ep-iface-number=4
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '15'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=15 --wds-set-ip-family=4
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '15'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=15 --wds-start-network=apn=telenor.smart,ip-type=4
> [/dev/cdc-wdm0] Network started
> Packet data handle: '3891631616'
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '15'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --wds-bind-mux-data-port=mux-id=1,ep-type=hsusb,ep-iface-number=4
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '16'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=16 --wds-set-ip-family=6
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '16'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=16 --wds-start-network=apn=telenor.smart,ip-type=6
> [/dev/cdc-wdm0] Network started
> Packet data handle: '3891309184'
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '16'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --wds-bind-mux-data-port=mux-id=2,ep-type=hsusb,ep-iface-number=4
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-set-ip-family=4
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-start-network=apn=telenor,ip-type=4
> error: couldn't start network: QMI protocol error (14): 'CallFailed'
> call end reason (1): generic-unspecified
> verbose call end reason (2,236): [internal] call-already-present
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
I guess the modem you are using is based on SDX55.
Testing with a modem based on the same chipset, I can replicate your
issue with just two ipv4 connections:
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --device-open-sync
--wda-set-data-format=ep-type=hsusb,ep-iface-number=2,link-layer-protocol=raw-ip,ul-protocol=qmapv5,dl-protocol=qmapv5,dl-max-datagrams=32,dl-datagram-max-size=31744
[/dev/cdc-wdm0] Successfully set data format
QoS flow header: no
Link layer protocol: 'raw-ip'
Uplink data aggregation protocol: 'qmapv5'
Downlink data aggregation protocol: 'qmapv5'
NDP signature: '0'
Downlink data aggregation max datagrams: '32'
Downlink data aggregation max size: '16384'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--wds-bind-mux-data-port=mux-id=1,ep-type=hsusb,ep-iface-number=2
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '17'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=17 --wds-set-ip-family=4
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '17'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=17 --wds-start-network=apn=ibox.tim.it,ip-type=4
[/dev/cdc-wdm0] Network started
Packet data handle: '4120009568'
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '17'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--wds-bind-mux-data-port=mux-id=2,ep-type=hsusb,ep-iface-number=2
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '18'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=18 --wds-set-ip-family=4
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '18'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=18 --wds-start-network=apn=wap.tim.it,ip-type=4
error: couldn't start network: QMI protocol error (14): 'CallFailed'
call end reason (1): generic-unspecified
verbose call end reason (2,236): [internal] call-already-present
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '18'
but if I create two profiles:
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0
--wds-create-profile=3gpp,apn=ibox.tim.it,pdp-type=IP
New profile created:
Profile type: '3gpp'
Profile index: '2'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0
--wds-create-profile=3gpp,apn=wap.tim.it,pdp-type=IP
New profile created:
Profile type: '3gpp'
Profile index: '3'
and make the connection using profiles:
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --device-open-sync
--wda-set-data-format=ep-type=hsusb,ep-iface-number=2,link-layer-protocol=raw-ip,ul-protocol=qmapv5,dl-protocol=qmapv5,dl-max-datagrams=32,dl-datagram-max-size=31744
[/dev/cdc-wdm0] Successfully set data format
QoS flow header: no
Link layer protocol: 'raw-ip'
Uplink data aggregation protocol: 'qmapv5'
Downlink data aggregation protocol: 'qmapv5'
NDP signature: '0'
Downlink data aggregation max datagrams: '32'
Downlink data aggregation max size: '16384'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--wds-bind-mux-data-port=mux-id=1,ep-type=hsusb,ep-iface-number=2
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '17'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=17 --wds-set-ip-family=4
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '17'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=17 --wds-start-network=3gpp-profile=2
[/dev/cdc-wdm0] Network started
Packet data handle: '999450704'
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '17'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--wds-bind-mux-data-port=mux-id=2,ep-type=hsusb,ep-iface-number=2
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '18'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=18 --wds-set-ip-family=4
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '18'
$ sudo ./src/qmicli/qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid
--client-cid=18 --wds-start-network=3gpp-profile=3
[/dev/cdc-wdm0] Network started
Packet data handle: '1012176704'
[/dev/cdc-wdm0] Client ID not released:
Service: 'wds'
CID: '18'
things work!
So maybe you'll have better luck using profiles.
Regards,
Daniele
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-start-network=apn=internet.public,ip-type=4
> error: couldn't start network: QMI protocol error (14): 'CallFailed'
> call end reason (1): generic-unspecified
> verbose call end reason (2,236): [internal] call-already-present
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-bind-mux-data-port=mux-id=2,ep-type=hsusb,ep-iface-number=4
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-start-network=apn=internet.public,ip-type=4
> error: couldn't start network: QMI protocol error (14): 'CallFailed'
> call end reason (1): generic-unspecified
> verbose call end reason (2,236): [internal] call-already-present
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-set-ip-family=6
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
> root at finn:~# qmicli -p -d /dev/cdc-wdm0 --client-no-release-cid --client-cid=17 --wds-start-network=apn=tdt2.telenor.smart,ip-type=6
> [/dev/cdc-wdm0] Network started
> Packet data handle: '3891374016'
> [/dev/cdc-wdm0] Client ID not released:
> Service: 'wds'
> CID: '17'
>
>
>
> I don't think there is much MM can do here. This modem firmware does
> not work properly with QMAP muxing. Sorry about the confusion I've
> caused by assuming this would work.
>
> Unless I am missing something in the sequence above?
>
> I'll switch the firmware to MBIM and see how that goes. I hear it's the
> future anyway :-)
>
>
> Bjørn
> _______________________________________________
> ModemManager-devel mailing list
> ModemManager-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel
More information about the ModemManager-devel
mailing list