summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2016-08-21 01:21:56 +0200
committerBjørn Mork <bjorn@mork.no>2016-08-21 01:35:37 +0200
commitd435f1285aa2a983e0a5451dd161cfdcbb4e6499 (patch)
treeddcee80c7710cb293c21d9823274cd6324970896
parent6128d9912af8048d9e303ed21c2f73dd3a85cde0 (diff)
dms: add "Set FCC Authentication" requestnbd+debian
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>
-rw-r--r--commands-dms.c8
-rw-r--r--commands-dms.h4
-rw-r--r--data/qmi-service-dms.json67
3 files changed, 74 insertions, 5 deletions
diff --git a/commands-dms.c b/commands-dms.c
index dad2b86..8cc7bc5 100644
--- a/commands-dms.c
+++ b/commands-dms.c
@@ -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;
+}
diff --git a/commands-dms.h b/commands-dms.h
index ccafbb1..82ae592 100644
--- a/commands-dms.h
+++ b/commands-dms.h
@@ -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" \
diff --git a/data/qmi-service-dms.json b/data/qmi-service-dms.json
index 1e48455..f7b741f 100644
--- a/data/qmi-service-dms.json
+++ b/data/qmi-service-dms.json
@@ -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" } ] }
]