@@ -408,3 +408,11 @@ cmd_dms_set_operating_mode_prepare(struct qmi_dev *qmi, struct qmi_request *req,
return uqmi_add_error("Invalid argument");
}
+
+#define cmd_dms_set_fcc_authentication_cb no_cb
+static enum qmi_cmd_result
+cmd_dms_set_fcc_authentication_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+ qmi_set_dms_set_fcc_authentication_request(msg);
+ return QMI_CMD_REQUEST;
+}
@@ -38,7 +38,8 @@
__uqmi_command(dms_get_imei, get-imei, no, QMI_SERVICE_DMS), \
__uqmi_command(dms_get_msisdn, get-msisdn, no, QMI_SERVICE_DMS), \
__uqmi_command(dms_set_operating_mode, set-device-operating-mode, required, QMI_SERVICE_DMS), \
- __uqmi_command(dms_reset, reset-dms, no, QMI_SERVICE_DMS) \
+ __uqmi_command(dms_reset, reset-dms, no, QMI_SERVICE_DMS), \
+ __uqmi_command(dms_set_fcc_authentication, fcc-auth, no, QMI_SERVICE_DMS) \
#define dms_helptext \
" --get-capabilities: List device capabilities\n" \
@@ -70,4 +71,5 @@
" (modes: online, low_power, factory_test, offline\n" \
" reset, shutting_down, persistent_low_power,\n" \
" mode_only_low_power)\n" \
+ " --fcc-auth: Set FCC authentication\n" \
@@ -755,7 +755,7 @@
"type" : "Message",
"service" : "DMS",
"id" : "0x003C",
- "version" : "1.3",
+ "version" : "1.1",
"output" : [ { "common-ref" : "Operation Result" },
{ "name" : "ICCID",
"id" : "0x01",
@@ -852,7 +852,7 @@
"type" : "Message",
"service" : "DMS",
"id" : "0x0043",
- "version" : "1.3",
+ "version" : "1.1",
"output" : [ { "common-ref" : "Operation Result" },
{ "name" : "IMSI",
"id" : "0x01",
@@ -1157,18 +1157,77 @@
"service" : "DMS",
"id" : "0x0052",
"version" : "1.5",
- "input" : [ { "name" : "Current",
+ "input" : [ { "name" : "Current Code",
"id" : "0x01",
"mandatory" : "yes",
"type" : "TLV",
"format" : "string",
"fixed-size" : "6" },
- { "name" : "New",
+ { "name" : "New Code",
"id" : "0x02",
"mandatory" : "yes",
"type" : "TLV",
"format" : "string",
"fixed-size" : "6" } ],
+ "output" : [ { "common-ref" : "Operation Result" } ] },
+
+ // *********************************************************************************
+ { "name" : "Get Supported Messages",
+ "type" : "Message",
+ "service" : "DMS",
+ "id" : "0x001E",
+ "version" : "1.16",
+ "output" : [ { "common-ref" : "Operation Result" },
+ { "name" : "List",
+ "id" : "0x10",
+ "mandatory" : "no",
+ "type" : "TLV",
+ "format" : "array",
+ "size-prefix-format" : "guint16",
+ "array-element" : { "format" : "guint8" },
+ "prerequisites" : [ { "common-ref" : "Success" } ] } ] },
+
+ // *********************************************************************************
+ { "name" : "Get USB Composition",
+ "type" : "Message",
+ "service" : "DMS",
+ "id" : "0x555B",
+ "version" : "1.0",
+ "output" : [ { "common-ref" : "Operation Result" },
+ { "name" : "Composition",
+ "id" : "0x10",
+ "mandatory" : "yes",
+ "type" : "TLV",
+ "format" : "guint8",
+ "prerequisites" : [ { "common-ref" : "Success" } ] },
+ { "name" : "Supported",
+ "id" : "0x11",
+ "mandatory" : "no",
+ "type" : "TLV",
+ "format" : "array",
+ "size-prefix-format" : "guint8",
+ "array-element" : { "format" : "guint8" },
+ "prerequisites" : [ { "common-ref" : "Success" } ] } ] },
+
+ // *********************************************************************************
+ { "name" : "Set USB Composition",
+ "type" : "Message",
+ "service" : "DMS",
+ "id" : "0x555C",
+ "version" : "1.0",
+ "input" : [ { "name" : "Composition",
+ "id" : "0x01",
+ "mandatory" : "yes",
+ "type" : "TLV",
+ "format" : "guint8" } ],
+ "output" : [ { "common-ref" : "Operation Result" } ] },
+
+ // *********************************************************************************
+ { "name" : "Set FCC Authentication",
+ "type" : "Message",
+ "service" : "DMS",
+ "id" : "0x555F",
+ "version" : "1.0",
"output" : [ { "common-ref" : "Operation Result" } ] }
]
Many newer modems from Sierra Wireless includes a feature known as "FCC Authentication". The basic idea is that the radio is kept in low power mode until the driver has told the firmware that it is OK to switch it on. This is done with a vendor specific QMI DMS request with no input or output TLVs. The "Set FCC Authentication" request is required for any modem with the feature enabled. Which includes most newer Lenovo branded Sierra Wireless modems based on Qualcomm chipsets, like for example the EM7455. Sample session with an EM7455 in MBIM mode and the FCC Authentication feature enabled: $ umbim -d /dev/cdc-wdm0 -n radio hwradiostate: on swradiostate: off $ uqmi -m -d /dev/cdc-wdm0 --fcc-auth $ umbim -d /dev/cdc-wdm0 -t 2 radio hwradiostate: on swradiostate: on Signed-off-by: Bjørn Mork <bjorn@mork.no> --- commands-dms.c | 8 ++++++ commands-dms.h | 4 ++- data/qmi-service-dms.json | 67 ++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 74 insertions(+), 5 deletions(-)