[LEDE-DEV] [PATCH 2/2] dms: add "Set FCC Authentication" request

Bjørn Mork bjorn at mork.no
Sat Aug 20 17:01:10 PDT 2016


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 at mork.no>
---
 commands-dms.c            |  8 ++++++
 commands-dms.h            |  4 ++-
 data/qmi-service-dms.json | 67 ++++++++++++++++++++++++++++++++++++++++++++---
 3 files changed, 74 insertions(+), 5 deletions(-)

diff --git a/commands-dms.c b/commands-dms.c
index dad2b86072a1..8cc7bc5017f3 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 ccafbb12de73..82ae592d8856 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 1e48455bf284..f7b741fe6acd 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" } ] }
 
 ]
-- 
2.9.3




More information about the Lede-dev mailing list