# Test and troubleshoot ## Tools The following tools are supported for functional testing and build environment setup. ### Sensor functional test tools The sensor info test, driver acceptance test, and sensor workhorse tool 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 the 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. #### Sensor info test (ssc\_sensor\_info) to list QSH supported sensors and their attributes **Sensor info test definition** 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 the attribute information for a 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:~# 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 Copy to clipboard - Query all *accel* sensor attributes. ssc_sensor_info -sensor=accel Copy to clipboard root@qcm6490:~# 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 Copy to clipboard **Output** The test application generates the following output: - Standard output on console - Result file #### Driver acceptance test (ssc\_drva\_test) to validate sensor drivers **Driver acceptance test definition** 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 | NA | Provides the number of times the test must be repeated. | | `num_samples` | `int` | Positive values only | NA | 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)


| NA | 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:~# 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 Copy to clipboard - 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:~# 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 Copy to clipboard - Self-test for accelerometer (hardware self-test): ssc_drva_test -sensor=accel -factory_test=1 -duration=10 Copy to clipboard root@qcm6490:~# 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 Copy to clipboard **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). #### Sensor workhorse (see\_workhorse) to perform stress test of sensors **Sensor workhorse definition** The `see_workhorse` sensor workhorse tool does the following: - Operates specific sensors based on the command-line arguments. - Streamlines sensor testing and data collection in various configurations. 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


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

  • 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 | NA |

  • 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 | NA | 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 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 This command instructs `see_workhorse` to run the accelerometer `accel` at a maximum sample rate for a duration of 30 sec. 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 - **QXDM Professional tool** The Qualcomm® eXtensible diagnostic monitor (QXDM) Professional™ tool 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-70018-7A/debugging.html) in [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/overview.html). Note [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/overview.html) is accessible only to the licensed users. - The QXDM Professional Tool 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. 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:~# 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 Copy to clipboard For troubleshooting common issues, see [Troubleshoot sensors](https://docs.qualcomm.com/doc/80-70018-7/topic/test_troubleshoot.html#debug). 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 Copy to clipboard For more information about an individual sensor level verification, see [Tools](https://docs.qualcomm.com/doc/80-70018-7/topic/test_troubleshoot.html#test-tools). ## Test sensors on platform To use a sensor test application, see [Test sensors on platform](https://docs.qualcomm.com/doc/80-70018-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:/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 > > Copy to clipboard > > > 3. Ensure that `` directory is accessible and has the corresponding parsed file. > > > > > > > > > > root@qcm6490:/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 > > Copy to clipboard ### 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-70018-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:~# 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 > > > > Copy to clipboard > > > > > > > > > 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:/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 > > > > Copy to clipboard > > > > > > > > > 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:/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 > > > > Copy to clipboard > > > 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` 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-70018-7/topic/test_troubleshoot.html#test-tools). Last Published: Apr 08, 2025 [Previous Topic Develop sensors](https://docs.qualcomm.com/bundle/publicresource/80-70018-7/topics/develop_sensors.md) [Next Topic References](https://docs.qualcomm.com/bundle/publicresource/80-70018-7/topics/references.md)