# Test and troubleshoot ## Tools The following tools are supported for functional testing and build environment setup. ### Sensor functional test tools The following tools facilitates comprehensive testing of the sensor functionalities. - The sensor info test provides detailed information about the sensor. - The driver acceptance test ensures that the sensor drivers are functioning correctly and are compatible with QSH. - The sensor workhorse is a tool to stress-test the sensors under various conditions. The test tools ensure the accuracy, reliability, and optimal performance of both the hardware-based and software-based sensors in your applications. The following sections provide information on the test tools. #### Use sensor info test to list supported sensors The sensor info test `ssc_sensor_info` is an application within the QSH test suite. It lists the QSH supported sensors and their attributes. You can query the attributes of a specified data type. ssc_sensor_info [-sensor=] [-delay=][-duration=][-default_only=<1|0>][-log=<1|0>][-help] Copy to clipboard Table : Parameters of ssc_sensor_info | **Flags** | **Type** | **Value** | **Units** | **Notes** | | --- | --- | --- | --- | --- | | Sensor | `string` | Any valid sensor type, such as *accel* and *gyro*. | – | Queries attribute information for the specified sensor type. | | Log | `int` | 0 | 1 | – | Enables or disables diagnostic (API) logs. | | help(h) | `int` | – | – | Displays command usage help. | | Duration | `int` | Positive values | seconds | Specifies the wait time for the sensor attribute updates. | | Delay | `int` | Positive values | seconds | Specifies the time delay before sending the sensor requests. | | default\_only | `int` | 0 | 1 | – | If the `default_only` flag is set to `False`, UIDs of all the available sensors that support the specified data type are sent. If the `default_only` flag is set to `True`, only the UID of the default sensor availability is sent. | **Sensor info test examples** - Query the sensor attributes and generate diagnostic logs. ssc_sensor_info Copy to clipboard [root@qcm6490](mailto:root%40qcm6490):~# ssc\_sensor\_info ssc\_sensor\_info v1.86 SUID = 0xebd5604d09d379bca54dcf30ec041e0f NAME = ak0991x VENDOR = akm TYPE = mag AVAILABLE = true VERSION = 2.62.47 API = sns\_mag.proto RATES = [1.000000, 10.000000, 20.000000, 50.000000, 100.000000] RESOLUTIONS = 0.150000 RANGES = [-4912.000000,4912.000000] DRI = false FIFO\_SIZE = 0 STREAM\_TYPE = streaming STREAM\_SYNC = false DYNAMIC = false EVENT\_SIZE = 16 OP\_MODES = [LOW\_POWER, LOW\_NOISE] ACTIVE\_CURRENT = 900 SLEEP\_CURRENT = 3 HW\_ID = 0 RIGID\_BODY = display PHYSICAL\_SENSOR = true PHYSICAL\_SENSOR\_TESTS = [3, 1] SELECTED\_RESOLUTION = 0.150000 SELECTED\_RANGE = [-4912.000000,4912.000000] SUID = 0xaddeaddeaddeaddeaddeaddeaddeadde NAME = da\_test VENDOR = QTI TYPE = da\_test AVAILABLE = true VERSION = 0.51.0 API = sns\_da\_test.proto STREAM\_TYPE = on\_change SUID = 0x69def905fea2fbac6a43ca273221a2eb NAME = aont VENDOR = QTI TYPE = aont AVAILABLE = true VERSION = 0.0.1 API = sns\_aont.proto STREAM\_TYPE = on\_change SUID = 0xabababababababababababababababab NAME = suid VENDOR = QTI TYPE = suid AVAILABLE = true VERSION = 0.0.1 API = sns\_suid.proto STREAM\_TYPE = single\_output SUID = 0xe12754a7007f27595e2541b4701e2275 NAME = registry VENDOR = QTI TYPE = registry AVAILABLE = true VERSION = 0.0.1 API = sns\_registry.proto STREAM\_TYPE = single\_output SUID = 0xadfeadfeadfeadfeadfeadfeadfeadfe NAME = da\_test\_big\_image VENDOR = QTI TYPE = da\_test AVAILABLE = true VERSION = 0.49.0 API = sns\_da\_test.proto STREAM\_TYPE = on\_change SUID = 0x61ab5376b4a5c9aa58442ede47acd316 NAME = icm4x6xx VENDOR = TDK-InvenSense TYPE = accel AVAILABLE = true VERSION = 1.65.2 API = sns\_accel.proto RATES = [12.500000, 25.000000, 50.000000, 100.000000, 200.000000, 500.000000] RESOLUTIONS = [0.000019, 0.000037, 0.000075, 0.000150, 0.000299] RANGES = [[-9.806650,9.806650], [-19.613300,19.613300], [-39.226601,39.226601], [-78.453201,78.453201], [-156.906403,156.906403]] DRI = true FIFO\_SIZE = 200 STREAM\_TYPE = streaming STREAM\_SYNC = false DYNAMIC = false EVENT\_SIZE = 16 OP\_MODES = [LPM, NORMAL, HIGH\_PERF] ACTIVE\_CURRENT = [50, 240, 240] SLEEP\_CURRENT = 6 HW\_ID = 0 RIGID\_BODY = display PHYSICAL\_SENSOR = true PHYSICAL\_SENSOR\_TESTS = [3, 2, 1] SELECTED\_RESOLUTION = 0.000299 SELECTED\_RANGE = [-156.906403,156.906403] LOW\_LATENCY\_RATES = 1000.000000 PASSIVE\_REQUEST = true - Query all *accel* sensor attributes. ssc_sensor_info -sensor=accel Copy to clipboard [root@qcm6490](mailto:root%40qcm6490):~# ssc\_sensor\_info -sensor=accel ssc\_sensor\_info v1.86 SUID = 0x61ab5376b4a5c9aa58442ede47acd316 NAME = icm4x6xx VENDOR = TDK-InvenSense TYPE = accel AVAILABLE = true VERSION = 1.65.2 API = sns\_accel.proto RATES = [12.500000, 25.000000, 50.000000, 100.000000, 200.000000, 500.000000] RESOLUTIONS = [0.000019, 0.000037, 0.000075, 0.000150, 0.000299] RANGES = [[-9.806650,9.806650], [-19.613300,19.613300], [-39.226601,39.226601], [-78.453201,78.453201], [-156.906403,156.906403]] DRI = true FIFO\_SIZE = 80 STREAM\_TYPE = streaming STREAM\_SYNC = false DYNAMIC = false EVENT\_SIZE = 16 OP\_MODES = [LPM, NORMAL, HIGH\_PERF] ACTIVE\_CURRENT = [50, 240, 240] SLEEP\_CURRENT = 6 HW\_ID = 0 RIGID\_BODY = display PHYSICAL\_SENSOR = true PHYSICAL\_SENSOR\_TESTS = [3, 2, 1] SELECTED\_RESOLUTION = 0.000299 SELECTED\_RANGE = [-156.906403,156.906403] LOW\_LATENCY\_RATES = [1000.000000, 2000.000000] PASSIVE\_REQUEST = true **Output** The test application generates the following output: - Standard output on console - Result file #### Use the driver acceptance test to validate sensor drivers The `ssc_drva_test` driver acceptance test tool does the following: - Perform sensor driver validation and operate at the QSH sensor API layer. - Execute a range of sensor use cases. - Accept the parameters directly from the command line and eliminate the need for compile-time options. This approach makes it a convenient and efficient tool to perform basic driver-level tests or validations. ssc_drva_test [-sensor=] [-duration=] [-sample_rate=] [-batch_period=] [-iterations=] [-num_samples=] [-factory_test=] Copy to clipboard Table : Parameters of ssc_drva_test | **Flag** | **Type** | **Value** | **Unit** | **Notes** | | --- | --- | --- | --- | --- | | `sensor` | `string` |

  • accel


  • gyro


  • sensor_temperature


  • pressure


  • mag


  • humidity


  • ambient_temperature


  • ultra_violet


  • proximity


  • ambient_light


  • rgb


  • hall


  • Any custom sensor added


| – | Mandatory argument: limited to the available sensor types. | | `duration` | `float` | Positive values only | Sec | Mandatory argument: sensor test duration in seconds. | | `sample_rate` | `float` | Positive floating point number values:



>
>
>

    >
  • -1: Maximum sampling rate


  • >
  • -2: Minimum sampling rate


  • >
| Hz | Mandatory for streaming sensors, optional for on-change sensors. | | `batch_period` | `float` | Positive floating point numbers | Sec | This period is the same as the report period and indicates how long to buffer the samples and report outside of the low-power processor. | | `iterations` | `int` | Positive values only | N.A. | Provides the number of times the test must be repeated. | | `num_samples` | `int` | Positive values only | N.A. | Indicates the minimum number of samples intended to be collected. If a `num_samples` parameter is specified and the test does not collect enough samples during the test, the test sensor generates FAIL.


The `num_samples` parameter forces the test to run for a maximum duration between a specified duration or duration calculated by the following:

  • num_samples* expected sample rate, where the expected sample rate is the rate at which the sensor is expected to serve.


| | `factory_test` | `int` |

  • 0 (SNS_PHYSICAL_SENSOR_TEST_TYPE_SW)


  • 1 (SNS_PHYSICAL_SENSOR_TEST_TYPE_HW)


  • 2 (SNS_PHYSICAL_SENSOR_TEST_TYPE_FACTORY)


  • 3 (SNS_PHYSICAL_SENSOR_TEST_TYPE_COM)


| N.A. | Selects the type of factory test (from the value column) that you want to run. | **Driver acceptance test examples** - Stream a single sensor at a selected sampling frequency for a known duration: ssc_drva_test -sensor=accel -duration=5 -sample_rate=500 Copy to clipboard [root@qcm6490](mailto:root%40qcm6490):~# ssc\_drva\_test -sensor=accel -duration=5 -sample\_rate=500 6 ssc\_drva\_test version 1.27k 6 ssc\_drva\_test -sensor=accel -duration=5 -sample\_rate=500 diag: Diag\_LSM\_Init: invoked for pid: 1141 with init\_count: 0 diag:successfully connected to socket 3 diag: Diag\_LSM\_Init: done for pid: 1141 with init\_count: 1 6 event\_cb attribute event for da\_test 6 event\_cb attribute event for da\_test 6 using da\_test name=da\_test, suid = [high addeaddeaddeadde, low addeaddeaddeadde 6 enter send\_memory\_log\_req cookie: 6 6 exit send\_memory\_log\_req 6 enter da\_test runner. -rumifact=1 6 -time\_to\_first\_event=233206 6 -time\_to\_last\_event=-20008 6 -sample\_ts=50267544823 6 -total\_samples=2528 6 -avg\_delta=37875 6 -recvd\_phy\_config\_sample\_rate=500 6 -random\_seed\_used=2926886043 6 -num\_request\_sent=2 6 -first\_sample\_timestamp=50171775915 6 received event: PASS 6 enter send\_memory\_log\_req cookie: 6 6 exit send\_memory\_log\_req 6 PASS - Batch a single sensor at a selected sampling frequency and report period for a known duration: ssc_drva_test -sensor=accel -duration=30.0 -sample_rate=100 -batch_period=2.0 Copy to clipboard [root@qcm6490](mailto:root%40qcm6490):~# ssc\_drva\_test -sensor=accel -duration=30.0 -sample\_rate=100 -batch\_period=2.0 3 ssc\_drva\_test version 1.27k 3 ssc\_drva\_test -sensor=accel -duration=30.0 -sample\_rate=100 -batch\_period=2.0 diag: Diag\_LSM\_Init: invoked for pid: 1413 with init\_count: 0 diag:successfully connected to socket 3 diag: Diag\_LSM\_Init: done for pid: 1413 with init\_count: 1 3 event\_cb attribute event for da\_test 3 event\_cb attribute event for da\_test 3 using da\_test name=da\_test, suid = [high addeaddeaddeadde, low addeaddeaddeadde 3 enter send\_memory\_log\_req cookie: 3 3 exit send\_memory\_log\_req 3 enter da\_test runner. -rumifact=1 3 -time\_to\_first\_event=15321140 3 -time\_to\_last\_event=-13606286 3 -sample\_ts=8591389823 3 -total\_samples=2960 3 -avg\_delta=184826 3 -recvd\_phy\_config\_sample\_rate=100.000000 3 -random\_seed\_used=3720387971 3 -num\_request\_sent=2 3 -first\_sample\_timestamp=8030694123 3 received event: PASS 3 enter send\_memory\_log\_req cookie: 3 3 exit send\_memory\_log\_req 3 PASS - Self-test for accelerometer (hardware self-test): ssc_drva_test -sensor=accel -factory_test=1 -duration=10 Copy to clipboard [root@qcm6490](mailto:root%40qcm6490):~# ssc\_drva\_test -sensor=accel -factory\_test=1 -duration=10 4 ssc\_drva\_test version 1.27k 4 ssc\_drva\_test -sensor=accel -factory\_test=1 -duration=10 diag: Diag\_LSM\_Init: invoked for pid: 1439 with init\_count: 0 diag:successfully connected to socket 3 diag: Diag\_LSM\_Init: done for pid: 1439 with init\_count: 1 4 event\_cb attribute event for da\_test 4 event\_cb attribute event for da\_test 4 using da\_test name=da\_test, suid = [high addeaddeaddeadde, low addeaddeaddeadde 4 enter send\_memory\_log\_req cookie: 4 4 exit send\_memory\_log\_req 4 enter da\_test runner. -rumifact=1 4 -time\_to\_first\_event=0 4 -time\_to\_last\_event=-2032137957 4 -sample\_ts=10622073335 4 -total\_samples=0 4 -avg\_delta=0 4 -recvd\_phy\_config\_sample\_rate=0.000000 4 -random\_seed\_used=1840104635 4 -num\_request\_sent=2 4 -first\_sample\_timestamp=0 4 received event: PASS 4 enter send\_memory\_log\_req cookie: 4 4 exit send\_memory\_log\_req 4 PASS **Output** On the console command line, this test only outputs as `PASS` or `FAIL`, which indicates only the test execution status (whether the test is complete). #### Use the sensor workhorse test to perform stress test of sensors see_workhorse [-sensor=][-sample_rate=] [-batch_period=] [-calibrated=<0 | 1>] [-wakeup=<0 | 1>] Copy to clipboard Table : Parameters of see_workhorse | Flags | Type | Value range | Units | Notes | | --- | --- | --- | --- | --- | | `sensor` | `string` |

  • accel


  • gyro


  • sensor_temperature


  • pressure


  • mag


  • humidity


  • ambient_temperature


  • ultra_violet


  • proximity


  • ambient_light


  • rgb


  • hall


  • Any custom sensor added


| N.A. | Mandatory argument: Limited to the available sensor types. | | `on_change` | `int` | 0 | 1 | N.A. |

  • 0 selects using SNS_STD_SENSOR_STREAM_TYPE_STREAMING.


  • 1 selects using SNS_STD_SENSOR_STREAM_TYPE_ON_CHANGE.


| | `sample_rate` | `float` | Positive floating point number values:

  • -1: Maximum sampling rate


  • -2: Minimum sampling rate


| Hz | Mandatory for streaming sensors, optional for on-change sensors. | | `batch_period` | `float` | Positive floating point numbers | Seconds | Same as the batch period or report period. | | `calibrated` | `int` | 0 | 1 | N.A. |

  • 0: nop (default).


  • 1: if the sensor_type is gyro or mag, then also activate gyro_cal or /mag_cal, respectively.


| | `wakeup` | `int` | 0 | 1 | NA |

  • 0: sets suspend_config wake-up to SEE_CLIENT_DELIVERY_NO_WAKEUP.


  • 1: sets suspend_config wake-up to SEE_CLIENT_DELIVERY_WAKEUP (default).


| | `display_events` | `int` | 0 | 1 | N.A. | Display sensor events in JSON format, using the event callbacks. | **Sensor workhorse examples** For instance, use the following command to stream the accelerometer data at the maximum rate for 30 sec: see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1 Copy to clipboard This command instructs `see_workhorse` to run the accelerometer `accel` at a maximum sample rate for a duration of 30 sec. root@qcm6490:~# see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1 see_workhorse version 2.04 20:22:15.406 see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1 begin usta_get_sensor_list Copy to clipboard 20:22:15.731 stream_sensor( accel) 20:22:15.731 + sample_rate: 500.000000 hz 20:22:15.838 config_stream_sensor() complete rc 0 20:22:15.838 sleep(30) seconds "sns_client_event_msg" : { "suid" : { "suid_low" : "0x58442ede47acd316", "suid_high" : "0x61ab5376b4a5c9aa" }, "events" : [ { "msg_id" : 768, "timestamp" : 78497742089, "payload" : { "sample_rate" : 500.000000, "water_mark" : 1, Copy to clipboard ### Miscellaneous tools Use the following tools for the build environment and functional diagnosis: - **Qualcomm® Hexagon™ DSP toolchain** Hexagon 8.4.07 toolchain for the build environment. - **QXDM Professional™ Tool** QXDM Professional is a diagnostic client. - The QSH framework can call the macros and APIs directly to send the debug information to print strings and log packets. - The QXDM logs are primarily used for the aDSP side debugging. For more information, see [Troubleshoot sensors](https://docs.qualcomm.com/bundle/resource/topics/80-70020-7A/debugging.html) in [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70020-7A/overview.html). Note [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70020-7A/overview.html) is accessible only to the licensed users. - QXDM Professional requires a USB connection. The application processors have direct connectivity to a USB port, whereas the aDSP doesn’t have such connectivity. ## Verify You can determine whether the configured QSH functionalities are operating properly or require attention for any discrepancies using the tools available for verifying these functionalities. You can use the test tool or the QXDM Professional to examine the configured settings and take the necessary action. **Use test tool to display sensor attributes** The `ssc_sensor_info` test tool verifies the QSH functionality and lists the supported sensors with their capabilities. ssc_sensor_info Copy to clipboard The following shell output lists all the supported sensors and their attributes: [root@qcm6490](mailto:root%40qcm6490):~# ssc\_sensor\_info ssc\_sensor\_info v1.86 SUID = 0xebd5604d09d379bca54dcf30ec041e0f NAME = ak0991x VENDOR = akm TYPE = mag AVAILABLE = true VERSION = 2.62.47 API = sns\_mag.proto RATES = [1.000000, 10.000000, 20.000000, 50.000000, 100.000000] RESOLUTIONS = 0.150000 RANGES = [-4912.000000,4912.000000] DRI = false FIFO\_SIZE = 0 STREAM\_TYPE = streaming STREAM\_SYNC = false DYNAMIC = false EVENT\_SIZE = 16 OP\_MODES = [LOW\_POWER, LOW\_NOISE] ACTIVE\_CURRENT = 900 SLEEP\_CURRENT = 3 HW\_ID = 0 RIGID\_BODY = display PHYSICAL\_SENSOR = true PHYSICAL\_SENSOR\_TESTS = [3, 1] SELECTED\_RESOLUTION = 0.150000 SELECTED\_RANGE = [-4912.000000,4912.000000] SUID = 0xaddeaddeaddeaddeaddeaddeaddeadde NAME = da\_test VENDOR = QTI TYPE = da\_test AVAILABLE = true VERSION = 0.51.0 API = sns\_da\_test.proto STREAM\_TYPE = on\_change SUID = 0x69def905fea2fbac6a43ca273221a2eb NAME = aont VENDOR = QTI TYPE = aont AVAILABLE = true VERSION = 0.0.1 API = sns\_aont.proto STREAM\_TYPE = on\_change SUID = 0xabababababababababababababababab NAME = suid VENDOR = QTI TYPE = suid AVAILABLE = true VERSION = 0.0.1 API = sns\_suid.proto STREAM\_TYPE = single\_output SUID = 0xe12754a7007f27595e2541b4701e2275 NAME = registry VENDOR = QTI TYPE = registry AVAILABLE = true VERSION = 0.0.1 API = sns\_registry.proto STREAM\_TYPE = single\_output SUID = 0xadfeadfeadfeadfeadfeadfeadfeadfe NAME = da\_test\_big\_image VENDOR = QTI TYPE = da\_test AVAILABLE = true VERSION = 0.49.0 API = sns\_da\_test.proto STREAM\_TYPE = on\_change SUID = 0x61ab5376b4a5c9aa58442ede47acd316 NAME = icm4x6xx VENDOR = TDK-Invensense TYPE = accel AVAILABLE = true VERSION = 1.65.2 API = sns\_accel.proto RATES = [12.500000, 25.000000, 50.000000, 100.000000, 200.000000, 500.000000] RESOLUTIONS = [0.000019, 0.000037, 0.000075, 0.000150, 0.000299] RANGES = [[-9.806650,9.806650], [-19.613300,19.613300], [-39.226601,39.226601], [-78.453201,78.453201], [-156.906403,156.906403]] DRI = true FIFO\_SIZE = 200 STREAM\_TYPE = streaming STREAM\_SYNC = false DYNAMIC = false EVENT\_SIZE = 16 OP\_MODES = [LPM, NORMAL, HIGH\_PERF] ACTIVE\_CURRENT = [50, 240, 240] SLEEP\_CURRENT = 6 HW\_ID = 0 RIGID\_BODY = display PHYSICAL\_SENSOR = true PHYSICAL\_SENSOR\_TESTS = [3, 2, 1] SELECTED\_RESOLUTION = 0.000299 For troubleshooting common issues, see [Troubleshoot sensors](https://docs.qualcomm.com/doc/80-70020-7/topic/test_troubleshoot.html#debug). **Use QXDM Professional to display sensor logs** The following QXDM output shows the verification/confirmation logs for all the supported sensors and their attributes in a low-power processor: Note This feature is currently available only for Authorized users. To upgrade your access, go to: [www.qualcomm.com/support/working-with-qualcomm](https://www.qualcomm.com/support/working-with-qualcomm). [ 123/ 2] MSG 18:47:22.898750 SNS PLATFORM/High [sns\_registry\_parser.c 2099] REG INIT DONE… ts=63248955 [ 122/ 1] MSG 18:47:22.925000 SNS FRAMEWORK/Medium [ sns\_diag\_service.c 1072] Sensor registry Vendor:QTI SSID:53 registered with diag [ 122/ 1] MSG 18:47:22.925000 SNS FRAMEWORK/Medium [ sns\_sensor.c 769] Populating sensor b2926130 in island: 2, with SUID e12754a7 007f2759 5e2541b4 701e2275 [ 122/ 2] MSG 18:47:22.925000 SNS FRAMEWORK/High [sns\_attribute\_service.c 584] Sensor : registry, suid\_populated : 1, available : 1 [ 122/ 2] MSG 18:47:22.925000 SNS FRAMEWORK/High [sns\_attribute\_service.c 594] Avail: B2926130 registry [ 123/ 2] MSG 18:47:22.925000 SNS PLATFORM/High [sns\_registry\_sensor.c 284] Successfully initialized registry [ 122/ 1] MSG 18:47:22.925000 SNS FRAMEWORK/Medium [sns\_stream\_service.c 150] Created data stream to Sensor ‘registry’ (b2926130) from Sensor ‘suid’ (b2922018): b296fd28 [ 122/ 1] MSG 18:47:22.925000 SNS FRAMEWORK/Medium [sns\_stream\_service.c 686] Add request b296fdc0 on stream b296fd28 (length 20; ID 512) [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [sns\_stream\_service.c 548] Process request for Sensor b2926130 on b296fd28 [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [ sns\_suid\_sensor.c 1050] send\_suid\_event dt=registry, default=1 [ 123/ 2] MSG 18:47:22.926250 SNS PLATFORM/High [ sns\_q6\_pm.c 365] Deregister\_client: B2927B30 [ 123/ 2] MSG 18:47:22.926250 SNS PLATFORM/High [sns\_registry\_sensor.c 366] Processed : SSCRPCD UP Signal [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [ sns\_suid\_sensor.c 1050] send\_suid\_event dt=registry, default=1 [ 122/ 1] MSG 18:47:22.926250 SNS FRAMEWORK/Medium [ sns\_data\_stream.c 551] sns\_data\_stream\_deinit b29231d0 removing=0 [ 122/ 1] MSG 18:47:22.926250 SNS FRAMEWORK/Medium [sns\_stream\_service.c 686] Add request b2927b30 on stream b29231d0 (length 0; ID 120) [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [ sns\_suid\_sensor.c 1050] send\_suid\_event dt=registry, default=1 [ 123/ 2] MSG 18:47:22.926250 SNS PLATFORM/High [ sns\_gdsc\_island.c 109] gdsc\_client\_cnt(2), sns\_gdsc\_mode(1) [ 122/ 1] MSG 18:47:22.926250 SNS FRAMEWORK/Medium [sns\_stream\_service.c 150] Created data stream to Sensor ‘timer’ (b2118e08) from Sensor ‘power\_sensor’ (b2922c78): b2931c48 [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [ sns\_suid\_sensor.c 1050] send\_suid\_event dt=registry, default=1 [ 122/ 1] MSG 18:47:22.926250 SNS FRAMEWORK/Medium [sns\_stream\_service.c 686] Add request b2123580 on stream b2931c48 (length 16; ID 512) [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [sns\_stream\_service.c 548] Process request for Sensor b2118e08 on b2931c48 [ 122/ 0] MSG 18:47:22.926250 SNS FRAMEWORK/Low [ sns\_suid\_sensor.c 1050] send\_suid\_event dt=registry, default=1 For more information about an individual sensor level verification, see [Tools](https://docs.qualcomm.com/doc/80-70020-7/topic/test_troubleshoot.html#test-tools). ## Test sensors on platform To use a sensor test application, see [Test sensors on the Dragonwing RB3 Gen 2 Development Kit](https://docs.qualcomm.com/doc/80-70020-7/topic/platform.html#test-sensors). ## Troubleshoot sensors The following resources describe a few common issues and the techniques available to analyze and troubleshoot these issues. Note The `` should be considered as one of the existing paths on the device: `/etc/sensors/registry/registry/` or `/var/cache/sensors/registry/registry/`. ### The `ssc_sensor_info` tool is unable to list sensors This error indicates a failure in parsing the sensor registry, rendering the sensor unavailable for listing using the `ssc_sensor_info` tool. Do the following to resolve this error: > > > Note > > > Verify that the read and write permissions for the files are enabled for User mode, and read only permission is enabled for Group and Others modes. Ensure that the User and Group mode names are `system system`. > > 1. Ensure that `/etc/sensors/sns_reg_config` and `/etc/sensors/config/json.lst` files are present with the required permissions > as shown in the following example: > > > > > > > > > > root@qcm6490:~# ls -l /etc/sensors/sns_reg_config > > -rw-r--r--. 1 system system 226 Mar 9 2018 /etc/sensors/sns_reg_config > > Copy to clipboard > > > > > > root@qcm6490:~# ls -l /etc/sensors/config/json.lst > > -rw-r--r--. 1 system system 1452 Mar 9 2018 /etc/sensors/config/json.lst > > Copy to clipboard > > > 2. Ensure that `/etc/sensors/config/` directory has the sensor JSON file with the required permissions. > > > > > > > > > > [root@qcm6490](mailto:root%40qcm6490):/etc/sensors/config# ls -l > > total 548 > > -rw-r–r–. 1 system system 1452 Mar 9 2018 json.lst > > -rw-r–r–. 1 system system 5638 Mar 9 2018 kodiak\_ak991x\_0.json > > -rw-r–r–. 1 system system 2837 Mar 9 2018 kodiak\_bu52053nvx\_0.json > > -rw-r–r–. 1 system system 5480 Mar 9 2018 kodiak\_default\_sensors.json > > -rw-r–r–. 1 system system 293 Mar 9 2018 kodiak\_dynamic\_sensors.json > > -rw-r–r–. 1 system system 392 Mar 9 2018 kodiak\_idp\_ak991x\_0.json > > -rw-r–r–. 1 system system 384 Mar 9 2018 kodiak\_idp\_lsm6dst\_0.json > > -rw-r–r–. 1 system system 384 Mar 9 2018 kodiak\_idp\_lsm6dst\_1.json > > .. > > -rw-r–r–. 1 system system 302 Mar 9 2018 qcm6490\_power\_0.json > > -rw-r–r–. 1 system system 7952 Mar 9 2018 qcm6490\_rbx\_icm4x6xx\_0.json > > -rw-r–r–. 1 system system 5922 Mar 9 2018 qcm6490\_rbx\_navmez\_ak991x\_0.json > > -rw-r–r–. 1 system system 7957 Mar 9 2018 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json > > -rw-r–r–. 1 system system 7957 Mar 9 2018 qcm6490\_rbx\_navmez\_rev2\_icm4x6xx\_0.json > > -rw-r–r–. 1 system system 3688 Mar 9 2018 qcm6490\_rbx\_navmezz\_icp101xx\_0.json > > > 3. Ensure that `` directory is accessible and has the corresponding parsed file. > > > > > > > > > > [root@qcm6490](mailto:root%40qcm6490):/var/cache/sensors/registry/registry# ls -l > > total 524 > > -rw-r–r–. 1 system system 3 Jan 1 00:00 DIR > > -rw-r–r–. 1 system system 902 Apr 28 2022 qcm6490\_default\_sensors.json.default\_sensors > > -rw-r–r–. 1 system system 86 Apr 28 2022 qcm6490\_default\_sensors.json.default\_sensors.accel > > -rw-r–r–. 1 system system 133 Apr 28 2022 qcm6490\_default\_sensors.json.default\_sensors.accel.attr\_0 > > -rw-r–r–. 1 system system 90 Apr 28 2022 qcm6490\_default\_sensors.json.default\_sensors.accel\_cal > > .. > > -rw-r–r–. 1 system system 84 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.temp > > -rw-r–r–. 1 system system 232 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.temp.config > > -rw-r–r–. 1 system system 346 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform > > -rw-r–r–. 1 system system 95 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel > > -rw-r–r–. 1 system system 146 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal > > -rw-r–r–. 1 system system 183 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal.bias > > -rw-r–r–. 1 system system 445 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal.corr\_mat > > -rw-r–r–. 1 system system 863 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.config ### SUID lookup failures This error indicates a custom code failure in retrieving SUID for a specified sensor. Do the following to resolve this error: > > > 1. Run the `ssc_sensor_info` tool to check if the specified sensor is available. > > > > > > > > > > - If the sensor list is empty, see the first debugging method described in [The ssc\_sensor\_info tool is unable to list sensors](https://docs.qualcomm.com/doc/80-70020-7/topic/test_troubleshoot.html#troubleshooting-ssc-sensor-info). > > - If only the specified sensor is unavailable, proceed with the following checks: > > > > > > > > > > > > > > > > > 1. Ensure that the sensor is listed in `/etc/sensors/config/json.lst` file, as shown in the following example: > > > > > > > > > [root@qcm6490](mailto:root%40qcm6490):~# cat /etc/sensors/config/json.lst > > > kodiak\_ak991x\_0.json > > > qcm6490\_default\_sensors.json > > > qcm6490\_power\_0.json > > > qcm6490\_rbx\_icm4x6xx\_0.json > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json > > > qcm6490\_rbx\_navmezz\_icp101xx\_0.json > > > qcm6490\_rbx\_navmez\_ak991x\_0.json > > > 2. Verify that the configuration file for the specified sensor is parsed and present in the `parsed_file_list.csv` file, as shown in the following example: > > > > > > > > > [root@qcm6490](mailto:root%40qcm6490):/var/cache/sensors/registry# cat parsed\_file\_list.csv > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.config > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.orient > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro.fac\_cal.corr\_mat > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro.fac\_cal.bias > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro.fac\_cal > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal.corr\_mat > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal.bias > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal > > > qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel > > > 3. Verify that the configuration file for the specified sensor is parsed and present in the `` directory as shown in the following example: > > > > > > > > > [root@qcm6490](mailto:root%40qcm6490):/var/cache/sensors/registry/registry# ls -l > > > total 524 > > > -rw-r–r–. 1 system system 248 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0 > > > -rw-r–r–. 1 system system 85 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.accel > > > -rw-r–r–. 1 system system 233 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.accel.config > > > -rw-r–r–. 1 system system 88 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.freefall > > > -rw-r–r–. 1 system system 236 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.freefall.config > > > -rw-r–r–. 1 system system 84 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.gyro > > > -rw-r–r–. 1 system system 232 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.gyro.config > > > -rw-r–r–. 1 system system 82 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.md > > > -rw-r–r–. 1 system system 230 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.md.config > > > -rw-r–r–. 1 system system 84 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.temp > > > -rw-r–r–. 1 system system 232 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0.temp.config > > > -rw-r–r–. 1 system system 346 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform > > > -rw-r–r–. 1 system system 95 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel > > > -rw-r–r–. 1 system system 146 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal > > > -rw-r–r–. 1 system system 183 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal.bias > > > -rw-r–r–. 1 system system 445 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.accel.fac\_cal.corr\_mat > > > -rw-r–r–. 1 system system 863 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.config > > > -rw-r–r–. 1 system system 94 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro > > > -rw-r–r–. 1 system system 145 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro.fac\_cal > > > -rw-r–r–. 1 system system 182 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro.fac\_cal.bias > > > -rw-r–r–. 1 system system 444 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.gyro.fac\_cal.corr\_mat > > > -rw-r–r–. 1 system system 91 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.md > > > -rw-r–r–. 1 system system 192 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.md.config > > > -rw-r–r–. 1 system system 174 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.orient > > > -rw-r–r–. 1 system system 536 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.placement > > > -rw-r–r–. 1 system system 94 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.temp > > > -rw-r–r–. 1 system system 142 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.temp.fac\_cal > > > -rw-r–r–. 1 system system 102 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.temp.fac\_cal.bias > > > -rw-r–r–. 1 system system 103 Apr 28 2022 qcm6490\_rbx\_navmez\_icm4x6xx\_0.json.icm4x6xx\_0\_platform.temp.fac\_cal.scale > > > 2. If the preceding validations didn’t result in any anomalies, then there could be an issue with your own Apps side custom code implementation that uses the QSH client APIs. ### Sensor is listed but unable to receive sensor data This error indicates failure of the sample or custom code, use the following sensor tool to receive events for a specified sensor. > > > Run the following command to stream the specified sensor: > > > > > > > > > `see_workhorse [-sensor=][-sample_rate=] [-batch_period=] [-calibrated=<0 | 1>] [-wakeup=<0 | 1>]` > > > > For example, > > > see_workhorse -sensor=accel -sample_rate=max -duration=30 -display_events=1 > Copy to clipboard If the above tool is able to receive the sensor event then there could be an issue with your Apps side custom code implementation that uses the QSH client APIs. For more information, see [Tools](https://docs.qualcomm.com/doc/80-70020-7/topic/test_troubleshoot.html#test-tools). Last Published: Jun 26, 2025 [Previous Topic Develop sensors](https://docs.qualcomm.com/bundle/publicresource/80-70020-7/topics/develop_sensors.md) [Next Topic References](https://docs.qualcomm.com/bundle/publicresource/80-70020-7/topics/references.md)