Project

General

Profile

Debug Utilities

We are developing some debug utilities to help us understand the software stack better.

All related programs can be found in source code in the quectel-experiments.git repository at http://git.osmocom.org/quectel-experiments

qmuxd_wrapper

This isa LD_PRELOAD wrapper that helps you to trace communications between any QMI client program and qmuxd.

You can use it as follows:

/ # LD_PRELOAD=/home/root/qmuxd_wrapper.so atfwd_daemon
I:ATFWD --> QMI Port : rmnet0
Found socketfd to qmuxd: 4
4 => COMPL(CLI=0x95, MSGT=0x04, TXN=0x1, sERR=0, qERR=0, qConn=0, qServ=0x00, qmiCLI=0x0, flags=0x0): 95 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 48 25 09 40 03 00 00 00 b8 83 f4 be 60 8a f4 be 00 00 00 00 3a 00 00 00 40 89 f4 be 1c 25 08 40 3a 00 00 00 74 00 b4 47 00 e0 bf 47 3a 00 00 00 5c 8a f4 be 40 89 f4 be 00 00 00 00 14 50 b1 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0 0b 40 14 8a f4 be 0c 00 00 00 b0 22 09 40 04 00 00 00 38 84 f4 be f8 52 0a 40 e8 52 0a 40 18 d0 ab 47 cc 89 f4 be e4 89 f4 be 48 25 09 40 68 55 ad 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 98 f0 0b 40 00 00 00 00 05 00 00 00 f0 85 f4 be 08 5a 0b 40 00 f0 0b 40 14 8a f4 be 00 00 00 00 e8 e9 ab 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 56 25 08 40 5c 8a f4 be 00 00 00 00 00 20 09 40 0d 00 00 00 40 85 f4 be b4 52 0a 40 80 52 0a 40 18 d0 ab 47 cc 89 f4 be 08 ea ab 47 01 00 00 00 00 50 0a 40 70 7f f4 be 80 cf ab 47 cc 89 f4 be 6c cd ab 47 01 00 00 00 90 db 09 40 c8 84 f4 be 80 cf ab 47 cc 89 f4 be c8 70 08 40 01 00 00 00 d8 d8 09 40 e0 84 f4 be 80 cf ab 47 cc 89 f4 be 14 8a f4 be 01 00 00 00 30 d6 09 40 f8 84 f4 be 80 cf ab 47 cc 89 f4 be 00 00 00 00 01 00 00 00 80 d3 09 40 10 85 f4 be 80 cf ab 47 cc 89 f4 be 00 00 00 00 80 d3 09 40 30 d6 09 40 d8 d8 09 40 90 db 09 40 18 38 09 40 00 50 0a 40 c0 3a 09 40 b0 22 09 40 78 3d 09 40 30 d0 09 40 48 25 09 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1c 00 00 00 c0 eb 03 40 08 00 00 00 f0 85 f4 be 40 d3 09 40 20 d3 09 40 18 d0 ab 47 
4 <= COMPL(CLI=0x95, MSGT=0x04, TXN=0x1, sERR=0, qERR=0, qConn=0, qServ=0x00, qmiCLI=0x0, flags=0x0): 0c 42 01 00 0b 00 00 00 c8 fa 13 40 00 00 00 00 00 00 00 00 00 00 00 00 a3 02 e4 a6 0f 01 00 00 54 fa 13 40 10 d0 bf be 98 00 02 00 8c 28 14 40 3c 2d 14 40 cb 01 02 00 f1 00 02 00 98 00 02 00 64 6c c1 47 03 00 00 00 98 00 02 00 98 00 02 00 00 00 00 00 cb 01 02 00 e8 00 02 00 83 fc 00 00 17 00 00 00 03 00 00 00 d8 00 02 00 c8 d9 bf 47 1a 00 00 00 e8 d5 bf be 80 fc 00 00 1a 00 00 00 74 00 b4 47 f6 0b 14 40 1a 00 00 00 f6 0b 14 40 e8 d5 bf be 00 00 00 00 40 71 b1 47 72 fc 00 00 27 00 00 00 72 fc 00 00 00 d6 bf be e4 87 b1 47 e4 87 b1 47 a4 35 be 47 1a 00 00 00 30 d6 bf be b0 f3 00 00 e4 87 b1 47 e4 87 b1 47 a4 35 be 47 26 00 00 00 d7 f3 00 00 30 d6 bf be 01 00 00 00 40 71 b1 47 e4 87 b1 47 e4 87 b1 47 a4 35 be 47 84 d5 bf be 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 d7 bf be 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 ff ff ff ff 00 00 00 00 73 00 00 00 f5 0b 14 40 ff ff ff ff 00 00 00 00 ff ff ff ff 68 00 00 00 f4 0b 14 40 00 00 00 00 00 00 00 00 00 00 00 00 54 d7 bf be 68 00 00 00 70 fc 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ff ff ff ff 00 00 00 00 64 00 00 00 d5 f3 00 00 70 fc 00 00 00 00 00 00 00 00 00 00 68 00 00 00 ca f3 00 00 00 00 00 00 00 00 00 00 bd f1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 00 00 00 a8 f1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
I:QMI connection init done
4 => COMPL(CLI=0x95, MSGT=0x01, TXN=0x2, sERR=0, qERR=0, qConn=0, qServ=0x00, qmiCLI=0x0, flags=0x0): 08 00 00 00 64 6c c1 47 03 00 00 00 a8 18 08 00 a8 18 08 00 00 00 00 00 db 19 08 00 38 10 13 40 8c a8 35 40 57 00 00 00 a8 18 08 00 03 00 00 00 0f 00 00 00 94 63 35 40 00 00 00 00 98 6a 08 40 0c 86 f4 be ff ff ff ff 00 00 00 00 00 00 00 00 0c 1c 09 40 6c 71 08 40 ac 1b 09 40 18 95 08 40 7c d3 08 40 e0 3d 00 00 5c 11 09 40 54 04 08 40 94 88 08 40 18 86 f4 be f4 82 00 00 47 86 f4 be 71 6d 69 5f 63 61 74 5f 73 72 76 63 5f 69 6e 69 74 3a 20 43 41 54 20 73 75 63 63 65 73 73 66 75 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65 64 00 7a 65 64 00 50 88 f4 be 00 00 00 00 38 26 13 40 14 8a f4 be ac cd ab 47 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 e9 03 40 0e 00 00 00 00 00 00 00 e8 d2 09 40 b0 d2 09 40 18 d0 ab 47 18 01 00 00 0b 00 00 00 a4 59 0a 40 6f b0 61 1f 18 00 00 00 9c 9b ab 47 a4 59 0a 40 b3 47 6f 5a 34 01 00 00 0b 00 00 00 a4 59 0a 40 bc 44 3b 21 18 00 00 00 9c 9b ab 47 c8 4d ad 47 08 30 09 40 05 00 00 00 25 da 09 01 c8 4d ad 47 f8 55 34 40 08 aa ac 47 28 51 34 40 a4 59 0a 40 18 e9 03 40 00 00 00 00 00 00 00 00 05 00 00 00 4d 00 00 00 00 00 00 00 08 30 09 40 09 f5 05 40 38 56 34 40 18 e3 05 40 01 00 00 00 cc 87 f4 be bc 44 3b 21 d0 ea 03 40 00 00 00 00 a8 87 f4 be 09 f5 05 40 00 00 00 00 04 88 f4 be ec 87 f4 be ec 9d ab 47 a8 87 f4 be bc 5a ad 47 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 01 00 00 00 18 e9 03 40 00 00 00 00 34 88 f4 be 1c 88 f4 be ec 9d ab 47 d8 87 f4 be bc 5a ad 47 00 00 00 00 00 00 00 00 d0 ea 03 40 00 00 00 00 18 e9 03 40 18 e9 03 40 88 55 34 40 08 30 09 40 b0 22 09 40 48 25 09 40 c8 54 34 40 08 30 09 40 ff ff ff ff 00 00 00 00 f8 55 34 40 08 30 09 40 18 e9 03 40 00 00 00 00 ac 1b 09 40 1c 84 00 00 ff ff ff ff e0 3d 00 00 5c 11 09 40 00 e0 05 40 c0 94 56 40 00 00 00 00 a0 2a 09 40 fc a9 02 00 74 07 08 00 00 50 ad 47 84 07 08 00 84 df ab 47 00 00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 c0 94 56 40 f8 55 34 40 08 00 00 00 00 00 00 00 6c a5 00 00 a0 2a 09 40 00 00 00 00 24 43 ac 47 38 bd 08 00 00 00 00 00 08 00 00 00 47 8a f4 be 
4 <= COMPL(CLI=0x95, MSGT=0x01, TXN=0x2, sERR=0, qERR=0, qConn=0, qServ=0x00, qmiCLI=0x0, flags=0x0): 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
I:Registered with QMI with client id 3475456
I:Trying to register 65 commands:
I:cmd 0: +CFUN
4 => COMPL(CLI=0x95, MSGT=0x00, TXN=0x0, sERR=0, qERR=0, qConn=0, qServ=0x08, qmiCLI=0x35, flags=0x0): 00 01 00 20 00 0d 00 01 0a 00 01 07 00 00 05 2b 43 46 55 4e 
4 <= COMPL(CLI=0x95, MSGT=0x00, TXN=0x0, sERR=0, qERR=0, qConn=0, qServ=0x08, qmiCLI=0x35, flags=0x80): 02 01 00 20 00 07 00 02 04 00 01 00 30 00 
I:Could not register AT command : +CFUN with the QMI Interface - Err code:48

atcop_test

This is simple test program that attempts to use the QMI library header files found in the jsr-d10 project to compile programs that can link + run with the QMI library versions present on the EC20 and similar modems.

The example works.

qmi_test

This is another example to simply read the IMEI of the modem using the DMS QMI service via the proprietary qualcomm QMI libraries. It als works.

libqm-glib support for qmuxd

This is ongoing work to integrate a qmuxd back-end into libqmi-glib. This way, one could run entirely open source prorgrams without any proprietary libraries that can talk QMI via the existing qmuxd infrastructure on the device.

This would also mean that you can use tools like qmicli inside the modem itself.

qmuxd_wrapper.so (2.01 MB) laforge, 12/25/2016 11:19 PM