Transaction timing out on 586 embedded CPU

Kai Scharwies kai at scharwies.de
Mon Dec 3 07:31:42 PST 2012


Hello everybody...

I am trying to bring up a Huawei E398 stick on an Roboard RB110
(www.roboard.com), which has a 586 compatible "Vortex DX" CPU, but not
a single qmicli command works:

qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status
error: operation failed: Transaction timed out

When trying with verbose flag it takes forever, too, but some of the
expected output can be seen (however not received on time as it
seems):

qmicli -d /dev/cdc-wdm0 --dms-uim-get-pin-status -v
[04 Dez 2012, 00:51:26] [Debug] QMI Device at '/dev/cdc-wdm0' ready
[04 Dez 2012, 00:51:26] [Debug] [/dev/cdc-wdm0] Assuming service 'dms'
is supported...
[04 Dez 2012, 00:51:26] [Debug] [/dev/cdc-wdm0] Allocating new client ID...
[04 Dez 2012, 00:51:26] [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:02

[04 Dez 2012, 00:51:26] [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      = 02
<<<<<<   translated = dms

[04 Dez 2012, 00:51:26] [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:02:03

[04 Dez 2012, 00:51:26] [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      = 02:03
>>>>>>   translated = [ service = 'dms' cid = '3' ]

[04 Dez 2012, 00:51:26] [Debug] [/dev/cdc-wdm0] Registered 'dms'
(version unknown) client with ID '3'
[04 Dez 2012, 00:51:26] [Debug] Asynchronously getting PIN status...
[04 Dez 2012, 00:51:26] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 13
<<<<<<   data   = 01:0C:00:00:02:03:00:01:00:2B:00:00:00

[04 Dez 2012, 00:51:26] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<<   length  = 12
<<<<<<   flags   = 0x00
<<<<<<   service = "dms"
<<<<<<   client  = 3
<<<<<< QMI:
<<<<<<   flags       = "none"
<<<<<<   transaction = 1
<<<<<<   tlv_length  = 0
<<<<<<   message     = "UIM Get PIN Status" (0x002B)

error: operation failed: Transaction timed out
[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Unregistered 'dms'
client with ID '3'
[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Sent message...
<<<<<< RAW:
<<<<<<   length = 17
<<<<<<   data   = 01:10:00:00:00:00:00:02:23:00:05:00:01:02:00:02:03

[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Sent message (translated)...
<<<<<< QMUX:
<<<<<<   length  = 16
<<<<<<   flags   = 0x00
<<<<<<   service = "ctl"
<<<<<<   client  = 0
<<<<<< QMI:
<<<<<<   flags       = "none"
<<<<<<   transaction = 2
<<<<<<   tlv_length  = 5
<<<<<<   message     = "Release CID" (0x0023)
<<<<<< TLV:
<<<<<<   type       = "Release Info" (0x01)
<<<<<<   length     = 2
<<<<<<   value      = 02:03
<<<<<<   translated = [ service = 'dms' cid = '3' ]

[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 32
>>>>>>   data   = 01:1F:00:80:02:03:02:01:00:2B:00:13:00:02:04:00:00:00:00:00:12:03:00:01:03:0A:11:03:00:03:03:0A

[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> QMUX:
>>>>>>   length  = 31
>>>>>>   flags   = 0x80
>>>>>>   service = "dms"
>>>>>>   client  = 3
>>>>>> QMI:
>>>>>>   flags       = "response"
>>>>>>   transaction = 1
>>>>>>   tlv_length  = 19
>>>>>>   message     = "UIM Get PIN Status" (0x002B)
>>>>>> TLV:
>>>>>>   type       = "Result" (0x02)
>>>>>>   length     = 4
>>>>>>   value      = 00:00:00:00
>>>>>>   translated = SUCCESS
>>>>>> TLV:
>>>>>>   type       = "PIN2 Status" (0x12)
>>>>>>   length     = 3
>>>>>>   value      = 01:03:0A
>>>>>>   translated = [ current_status = 'enabled-not-verified' verify_retries_left = '3' unblock_retries_left = '10' ]
>>>>>> TLV:
>>>>>>   type       = "PIN1 Status" (0x11)
>>>>>>   length     = 3
>>>>>>   value      = 03:03:0A
>>>>>>   translated = [ current_status = 'disabled' verify_retries_left = '3' unblock_retries_left = '10' ]

[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] No transaction matched
in received message
[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Received message...
>>>>>> RAW:
>>>>>>   length = 24
>>>>>>   data   = 01:17:00:80:00:00:01:02:23:00:0C:00:02:04:00:00:00:00:00:01:02:00:02:03

[04 Dez 2012, 00:51:37] [Debug] [/dev/cdc-wdm0] Received message (translated)...
>>>>>> QMUX:
>>>>>>   length  = 23
>>>>>>   flags   = 0x80
>>>>>>   service = "ctl"
>>>>>>   client  = 0
>>>>>> QMI:
>>>>>>   flags       = "response"
>>>>>>   transaction = 2
>>>>>>   tlv_length  = 12
>>>>>>   message     = "Release CID" (0x0023)
>>>>>> TLV:
>>>>>>   type       = "Result" (0x02)
>>>>>>   length     = 4
>>>>>>   value      = 00:00:00:00
>>>>>>   translated = SUCCESS
>>>>>> TLV:
>>>>>>   type       = "Release Info" (0x01)
>>>>>>   length     = 2
>>>>>>   value      = 02:03
>>>>>>   translated = [ service = 'dms' cid = '3' ]

[04 Dez 2012, 00:51:37] [Debug] Client released

I tried this with recent kernels (3.4.x, 3.5.x, 3.6.x) and gcc
versions (4.6.2, 4.7.1) - both crosscompiled and directly on target
(either Debian Wheezy or Pengutronix/ptxdist Toolchain) and various
libqmi Versions from git, but mainly with tagged 1.0:

qmicli -V

qmicli 1.0.0
Copyright (2012) Aleksander Morgado
License GPLv2+: GNU GPL version 2 or later
<http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Here are some more information on the CPU:

cat /proc/cpuinfo
processor	: 0
vendor_id	: Vortex86 SoC
cpu family	: 5
model		: 2
model name	: 05/02
stepping	: 2
cpu MHz		: 933.445
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu tsc cx8
bogomips	: 1867.67
clflush size	: 32
cache_alignment	: 32
address sizes	: 32 bits physical, 32 bits virtual
power management:

On Intel Core2Duo and Intel Atom targets/hosts libqmi and qmicli work fine.
Please tell me how we can identify and fix the issue.

Best regards,
Kai


More information about the libqmi-devel mailing list