Fetch And Fill Rb3 Linux User Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 63

DownloadFetch-and-Fill Rb3-linux-user-guide
Open PDF In BrowserView PDF
Qualcomm Technologies, Inc.

Qualcomm® Robotics RB3 Platform
Linux User Guide
Rev. A
February 11, 2019

For additional information or to submit technical questions, go to: https://createpoint.qti.qualcomm.com
Confidential and Proprietary – Qualcomm Technologies, Inc.
NO PUBLIC DISCLOSURE PERMITTED: Please report postings of this document on public servers or websites to:
DocCtrlAgent@qualcomm.com.
Restricted Distribution: Not to be distributed to anyone who is not an employee of either Qualcomm Technologies, Inc. or its affiliated
companies without the express approval of Qualcomm Configuration Management.
Not to be used, copied, reproduced, or modified in whole or in part, nor its contents revealed in any manner to others without the express
written permission of Qualcomm Technologies, Inc.
Hexagon, Qualcomm, and Snapdragon are trademarks of Qualcomm Incorporated, registered in the United States and other countries. Other
product and brand names may be trademarks or registered trademarks of their respective owners.
This technical data may be subject to U.S. and international export, re-export, or transfer (“export”) laws. Diversion contrary to U.S. and
international law is strictly prohibited.

Qualcomm Technologies, Inc.
5775 Morehouse Drive
San Diego, CA 92121
U.S.A.
© 2019 Qualcomm Technologies, Inc. and/or its subsidiaries. All rights reserved.

Revision history

Rev. A

Revision

Date

A

February 2019

Description
Initial release

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

2

Contents

1 RB3 Platform Linux SDK ......................................................................................................... 5
1.1 RB3 Platform Linux SDK support ............................................................................................................... 5

2 Set Up the Development Environment ................................................................................... 6
2.1 Required hardware, software, and equipment ........................................................................................... 6
2.2 Install Ubuntu 14.04 (64-bit) system .......................................................................................................... 7
2.3 Install ADB, Fastboot, and USB host interface .......................................................................................... 7
2.3.1 On the Windows host machine ................................................................................................. 8
2.3.2 On the Linux (Ubuntu) host....................................................................................................... 8
2.4 Required build environment ....................................................................................................................... 9

3 Program the Firmware ........................................................................................................... 11
3.1 Program system images using Fastboot .................................................................................................. 11

4 RB3 Platform Features and Use Cases ................................................................................ 13
4.1 Set up the serial port ................................................................................................................................ 13
4.2 Button events ........................................................................................................................................... 14
4.3 Set up the FAN control interface .............................................................................................................. 14
4.4 Configure CAN interface .......................................................................................................................... 15
4.5 Connectivity ............................................................................................................................................. 16
4.5.1 Set up Wi-Fi ............................................................................................................................ 16
4.5.2 Bluetooth Generic Access Profile (GAP) ................................................................................ 17
4.5.3 Enable Bluetooth .................................................................................................................... 18
4.5.4 Start inquiry ............................................................................................................................ 18
4.5.5 Check the inquiry list .............................................................................................................. 19
4.5.6 Pair outgoing SSP .................................................................................................................. 19
4.5.7 Check the bonded list ............................................................................................................. 19
4.6 Ethernet ................................................................................................................................................... 20
4.7 Digital microphone ................................................................................................................................... 20
4.8 Audio........................................................................................................................................................ 21
4.8.1 Playback WAV using amixer + aplay ...................................................................................... 22
4.8.2 Playback AAC_LC using hal_play_test_64bit ......................................................................... 22
4.8.3 HE-AAC-V1 using hal_play_test_64bit ................................................................................... 22
4.8.4 HE-AAC-V2 using hal_play_test_64bit ................................................................................... 22
4.8.5 Mp3 using hal_play_test_64bit ............................................................................................... 22
4.9 Sensors .................................................................................................................................................... 23
4.9.1 Get sensor data via sns_hal_batch ........................................................................................ 23
4.9.2 Get accelerometer data .......................................................................................................... 24
4.9.3 Get gyroscope data ................................................................................................................ 25
4.9.4 Get magnetometer data .......................................................................................................... 26
4.9.5 Get pressure sensor data ....................................................................................................... 26
4.9.6 Get light sensor data .............................................................................................................. 27
4.9.7 Get proximity sensor data ....................................................................................................... 28
4.10 Camera .................................................................................................................................................. 28
4.10.1 Main Camera (OV8856)........................................................................................................ 30
4.10.2 Tracking (OV7251) ............................................................................................................... 35
4.10.3 Stereo camera ...................................................................................................................... 35
4.10.4 ToF Dump RAW ................................................................................................................... 36
4.10.5 Three camera concurrency mode ......................................................................................... 38

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

3

Qualcomm® Robotics RB3 Platform Linux User Guide

Contents

4.11 Video...................................................................................................................................................... 39
4.11.1 OMX ..................................................................................................................................... 39
4.11.2 GST ...................................................................................................................................... 40
4.12 OpenGL ES ........................................................................................................................................... 42
4.13 LTE Module ........................................................................................................................................... 44
4.14 Software tools and libraries .................................................................................................................... 45
4.14.1 ROS ...................................................................................................................................... 45
4.14.2 Qualcomm® Hexagon™ Vector eXtensions (HVX) ............................................................. 46
4.14.3 FastCV.................................................................................................................................. 50

5 Develop an application .......................................................................................................... 54
5.1 Hello RB3 ................................................................................................................................................. 55
5.2 Sensors .................................................................................................................................................... 56
5.2.1 Accelerometer example .......................................................................................................... 56
5.2.2 Other sensors ......................................................................................................................... 60

6 Set Up the System SDK ......................................................................................................... 61
6.1 Build the SDK .......................................................................................................................................... 61
6.1.1 Build images ........................................................................................................................... 61
6.1.2 Build kernel image .................................................................................................................. 61
6.1.3 Build rootfs image ................................................................................................................... 62
6.1.4 Add new module ..................................................................................................................... 62

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

4

1 RB3 Platform Linux SDK

The Linux SDK for the Qualcomm® Robotics RB3 Platform is built by Thundercomm. The
platform is based on Yocto Rocko with Linux Kernel 4.9 and GCC 6.5.
This document provides information on how to obtain, build, and program SDA845 software into
the RB3 Platform.
For more information about software updates and the software development kit (SDK) for your
host machine operating system visit:
https://www.thundercomm.com/

1.1 RB3 Platform Linux SDK support
For support, create a request in the Qualcomm Robotics RB3 Platform forum:
https://www.thundercomm.com/forum/category/1/qualcomm-robotics-rb3-platform

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

5

2 Set Up the Development Environment

This chapter describes how to set up the Linux development environment on an Ubuntu/Windows
host machine.
■

For compiling code using Qualcomm SDK, Ubuntu 14.04 is required.

■

For flashing firmware images, an Ubuntu/Windows machine is needed.

2.1 Required hardware, software, and equipment
The following table lists the hardware, software, and other equipment required to install and run
the software.
Item description

NOTE:

Rev. A

Version

Source/vendor

Purpose

Standalone system minimum requirement:
▪ 8 GB RAM
▪ Quadcore CPU
NOTE: Lower specs will increase
compilation time. Ideal compilation time
required for a system with 16 GB RAM
and Intel i7-2600 @3.4 GHz is about an
hour.

–

–

SDK Build machine

Ubuntu 14.04 LTS Linux distribution for
64-bit architecture

14.04 LTS

Ubuntu Community/
Canonical, Ltd.

SDK build host OS

Repo

–

SDK Open Source
Project

SDK source
management tool

Python

Python 2.7.6 with
sqlite3 library

Python.org

Building subsystem

QTI USB driver

QUD.WIN 1.1
Installer 10032.1
or later

https://www.thunder
comm.com/

QTI USB WWAN
Driver installer for
Microsoft Windows

Android SDK tools (ADB, Fastboot)

r10 or later ADB
1.0.29 or later

Android opensource project

ADB and Fastboot
tools for Windows

See the release notes for current versions of the ARM toolchain and Qualcomm® Hexagon™
LLVM toolchain.

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

6

Qualcomm® Robotics RB3 Platform Linux User Guide

Set Up the Development Environment

2.2 Install Ubuntu 14.04 (64-bit) system
Prerequisite: You must be able to log in as root or use sudo to have root permissions during the
installation.
1. Create an installation CD (the CD image is ubuntu-14.04.2-desktop-amd64.iso) and install it
on the computer following the instructions at:
http://www.ubuntu.com/download/desktop/install-ubuntu-desktop
2. Perform a software update using one of the following options:
□ In the GUI, select System > Administration > Update Manager.
□ From a shell command line:

a. Edit the source config file to directly enable the universe and multiverse sources and
disable the Ubuntu installation CD source.
sudo vi /etc/apt/sources.list

b. From the command line, perform the package list update and package upgrades.
sudo apt-get update
sudo apt-get upgrade

c. Use apt-get to install the additional required packages.
d. See https://source.android.com/source/initializing.html for the required packages. In
addition to the packages mentioned in the link, install libssl-dev.
sudo apt-get install libssl-dev

e. Make bash the default shell (shell /bin/sh to invoke bash) using one of the following
options:
●

Use sudo dpkg-reconfigure dash command and reconfigure the package.

●

Manually change the symlink /bin/sh > dash to /bin/sh> bash. Use the sudo rm /bin/sh
command to remove

●

Use sudo ln -s /bin/bash /bin/sh

For more information, see the Ubuntu Wiki page at: https://wiki.ubuntu.com/DashAsBinSh

2.3 Install ADB, Fastboot, and USB host interface
The Fastboot tool communicates with the RB3 bootloader and allows you to flash images onto
the board. This section provides instructions for installing ADB, Fastboot, and USB drivers on
your host machine.

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

7

Qualcomm® Robotics RB3 Platform Linux User Guide

Set Up the Development Environment

2.3.1 On the Windows host machine
Install ADB and Fastboot
Google currently does not offer a standalone Windows Installer for Fastboot. Instead Fastboot is
part of the full Android Studio integrated development environment (IDE) installation.
1. Go to http://developer.android.com/sdk/installing/
2. Follow the instructions to install the standalone SDK Tools. During the installation, Fastboot
and ADB drivers are installed
NOTE:

If you want to install Fastboot without the full Android Studio installation you can find third
party installers on the web.

Install the USB drivers
1. Add the system environment path for ADB and Fastboot.
2. Install the Windows drivers. Windows will usually update the drivers automatically from the
server.

2.3.2 On the Linux (Ubuntu) host
Install ADB and Fastboot
To install ADB and Fastboot, execute the following command:
sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot

Install and configure the USB driver
Setup the udev rules on your Linux PC as follows:
1. Login as root or sudo and navigate to the directory /etc/udev/rules.d/
2. Add the following rules in file 99-android.rules:
# fastboot for Dragonboard 845c
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODrmmodE="0777", GROUP="adm"
# adb for Dragonboard 845c
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0777", GROUP="adm"

3. Restart the udev service:
$ build@ubuntu$ sudo chmod a+r /etc/udev/rules.d/99-android.rules
$ build@ubuntu$ sudo service udev restart

4. Reconnect RB3 to PC with USB cable.
5. Connect the power adapter.

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

8

Qualcomm® Robotics RB3 Platform Linux User Guide

Set Up the Development Environment

6. Press Power and the system will start.

① Type C

② Power
adapter
③ Power

Server@: ~$ adb devices
List of devices attached
7a7d0e08
device

2.4 Required build environment
Recommendation: Use Ubuntu 14.04 along with gcc/g++ version 4.8.
1. Run following commands to ensure gcc/g++ 4.8 is installed:
$ gcc --version
$ g++ --version

2. If your host machine has an older version, complete the following steps to upgrade to 4.8:
a. Run the following commands:
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt-get update
$ sudo apt-get install gcc-4.8-multilib g++-4.8-multilib
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc4.8 100
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++4.8 100

b. Select 4.8 in the prompt shown and run the following command:
$ sudo update-alternatives --config gcc

c. Select 4.8 in the prompt as shown:
$ sudo update-alternatives --config g++

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

9

Qualcomm® Robotics RB3 Platform Linux User Guide

Set Up the Development Environment

3. To install the dependency library, run the following commands:
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gccmultilib build-essential chrpath libsdl1.2 -dev xterm openssl libsshdev libssl-dev
$ sudo cpan install XML::Simple

4. Check that the bash shell is in use:
$ sudo rm /bin/sh
$ sudo ln -sf /bin/bash /bin/sh
NOTE:

To run the build command, the following packages must be installed: diffstat, makeinfo, and
chrpath.
For build environment dependencies, go to the Yocto Project Active Release Documentation page
at https://www.yoctoproject.org/docs/, select YP Core – Rocko 2.4.4, and view the Yocto Project
Quick Start Guide.

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

10

3 Program the Firmware

The following method is the recommended procedure for downloading your experimental version
of self-compiled OS on RB3. A host PC is needed to program the board.
The procedure for both Windows and Linux host systems is described.

3.1 Program system images using Fastboot
NOTE:

Ensure you have installed the required ADB and Fastboot drivers. Your board must be detected
on your host machine.
To install Linux from a host PC complete the following steps:
1. Download the Linux images package from the Thundercomm website and unzip to the
“${SDA845-ROBOT-IMAGE}”:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/5c471969b1c340c7bbc20b02148762ce1352331417

2. Remove all connected USB cables (if any from RB3) and plug in the power.

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

11

Qualcomm® Robotics RB3 Platform Linux User Guide

Program the Firmware

3. Press and hold VOL - then press Power.

Type C

VOL -

Power

4. After about 5 seconds, release VOL -. The device will enter Fastboot mode.
5. Plug the USB cable into the Device Type C port.
6. Confirm that Fastboot is active as follows:
a. From the Windows command shell, run:
$fastboot devices
dae93bbb
fastboot

b. From Linux, run:
$ sudo fastboot devices
dae93bbb
fastboot

7. Flash each binary selectively through the following fastboot command options
$
$
$
$
$
$
$
$

cd SDA845-ROBOT-IMAGE
fastboot flash abl_a 
fastboot flash boot_a 
fastboot flash system_a 
fastboot flash systemrw 
fastboot flash cache 
fastboot flash userdata 
fastboot flash persist 

8. Reboot the board
$ fastboot reboot
rebooting…

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

12

4 RB3 Platform Features and Use Cases

This chapter presents RB3 Platform features and use cases.

4.1 Set up the serial port
To enable DBUG_USB:
1. Turn ON SW2 on switch DIP_SW:

SW5

SW3

SW1

DIP_SW

SW6

SW4

SW2

DBUG_USB

2. Log in using the following account credentials:
… …
[ OK
[ OK
[

OK

] Started start dsp variants.
] Reached target Multi-User System.
Starting Update UTMP about System Runlevel Changes...
] Started Update UTMP about System Runlevel Changes.

robot 201812300250 sda845 ttyMSM0
sda845 login: root
Password: 123456

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

13

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.2 Button events
The following figure shows the button positions.

VOL +
VOL -

Key
VOL +
VOL F_DL
ON/OFF

Device node
/dev/input/event2
/dev/input/event0
/dev/input/event2
/dev/input/event0

F_DL
ON/OFF

NOTE:

F_DL is forced download mode (emergency download)
1. Get interrupt event:
$ adb shell
# hexdump /dev/input/event0

•

Press the “key -" button. The terminal displays the following information:
# hexdump /dev/input/event0
0000000 6a1d 5c2f 0000 0000 c499 000d 0000 0000
0000010 0001 0072 0001 0000 6a1d 5c2f 0000 0000
0000020 c499 000d 0000 0000 0000 0000 0000 0000

4.3 Set up the FAN control interface
The following figure shows the FAN interface position.

FAN

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

14

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

1. Enable FAN: (1/2/3 indicate different speed levels: 1minimum, 3maximum):
$
#
#
#

adb shell
echo 1 > /sys/kernel/fan/speed
echo 2 > /sys/kernel/fan/speed
echo 3 > /sys/kernel/fan/speed

2. Disable FAN:
$ adb shell
# echo 0 > /sys/kernel/fan/speed

4.4 Configure CAN interface
The following figure shows the CAN interface positions.

CAN_L

CAN_H

1. Connect CAN_L and CAN_H for loopback test.
2. Configure the CAN device:
$adb shell
#ip link set can0 down
// Disable CAN;
#ip link set can0 up type can bitrate 800000
// Enable CAN;

•

Perform the data loopback test.
a. Receive data:
$adb shell
#candump can0
interface = can0, family = 29, type = 3, proto = 1

b. Open another terminal, send data:
$adb shell
#cansend can0 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

15

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.5 Connectivity
The following figure shows the WLAN and BT connectivity.

BT

WLAN

4.5.1 Set up Wi-Fi
1.

Confirm the antenna is properly connected.

2.

To verify connectivity while the device is in Station mode, use the following commands on
the HyperTerminal software connected to the debug USB port, execute the following
commands
$ adb shell
# vi /data/misc/wifi/wpa_supplicant.conf

Fill in the ssid and psk of wifi as follows.
update_config=1
eapol_version=1
ap_scan=1
fast_reauth=1
pmf=1
p2p_add_cli_chan=1
network={
ssid=”wifissid1”
psk=”wifipsk1”
}
Network={
ssid=”wifissid2”
psk=”wifipsk2”
}

3.

Restart the device and connect to wifi.
Run the following command to confirm that the device is connected to
wifi.
The log of IP address acknowledgement proves the connection is
successful:
$ adb shell

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

16

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

#ifconfig wlan0
wlan0
Link encap:Ethernet HWaddr 00:0A:F5:83:66:EF
inet addr:192.168.43.92 Bcast:192.168.43.255
Mask:255.255.255.0
inet6 addr: fe80::20a:f5ff:fe83:66ef%1736140884/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15 errors:0 dropped:0 overruns:0 frame:0
TX packets:18 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3000
RX bytes:1864 (1.8 KiB) TX bytes:1828 (1.7 KiB)
#ping www.qualcomm.com
PING www.qualcomm.com (23.59.93.51): 56 data bytes
64 bytes from 23.59.93.51: seq=0 ttl=48 time=171.722 ms
64 bytes from 23.59.93.51: seq=1 ttl=48 time=163.070 ms
64 bytes from 23.59.93.51: seq=2 ttl=48 time=244.932 ms
64 bytes from 23.59.93.51: seq=3 ttl=48 time=166.135 ms
Note: If ping does not work, check the firewall and try to ping outside
the firewall.

•

Run the throughput test:
# Add throughput example here

4.5.2 Bluetooth Generic Access Profile (GAP)
1. Before running btapp, run the btproperty in the background (run only once at the beginning):
$adb shell
#btproperty &
# btapp

2. After running btapp, type gap_menu and press Enter.
gap_menu
***************** Menu *******************
enable
disable
inquiry
cancel_inquiry
pair
eg. pair 00:11:22:33:44:55
unpair
eg. unpair 00:11:22:33:44:55
inquiry_list
bonded_list
get_state
get_bt_name
get_bt_address
set_bt_name
eg. set_bt_name MDM_Fluoride
set_le_bt_name eg. set_le_bt_name
MDM_LE_Fluoride
main_menu
******************************************

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

17

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.5.3 Enable Bluetooth
■

To enable the Bluetooth service, enter the following command:
$ adb shell
#btproperty &
// ignore if this is already running
# btapp
After running btapp, input “enable” and press “Enter”enable
killall: wcnssfilter: no process killed
killall: btsnoop: no process killed
killall: qcbtdaemon: no process killed
/bin/sh: qcbtdaemon: not found
BtHfpAgMsgHandler event = 1028
ACDB -> No .acdb files found in /etc/acdbdata/!
ACDB -> found 0 form factor & soundcard independant files
… …
ACDB -> MBHC ACDB_PID_GENERAL_CONFIG
ACDB -> MBHC ACDB_PID_PLUG_REMOVAL_DETECTION
ACDB -> MBHC ACDB_PID_PLUG_TYPE_DETECTION
ACDB -> MBHC ACDB_PID_BUTTON_PRESS_DETECTION
ACDB -> MBHC ACDB_PID_IMPEDANCE_DETECTION
send vbat data
ACDB -> VBAT ACDB_PID_ADC_CAL
ACDB -> VBAT ACDB_PID_GAIN_PROC
send vbat data, calling convert_vbat_data
Vbat Registers Size: 17
copied vbat cal size =72
BT State is ON

4.5.4 Start inquiry
■

After running enable, type inquiry and press Enter to start inquiry.
inquiry
Inquiry Started
Device Found details:
Found device Addr: 28:11:a5:01:00:a2
Found device Name: LE-Bose SoundSport
Device class is: 7936
Device Found details:
Found device Addr: e4:ba:d9:10:00:c9
Found device Name: 360FLY4K_00C8
Device class is: 7936
Device Found details:
Found device Addr: 28:11:a5:24:01:05
Found device Name: LE-reserved_N
Device class is: 7936
Device Found details:
Found device Addr: 10:02:b5:2d:84:98
Found device Name: USER-PC

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

18

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

Device class is: 8257804
Inquiry Stopped automatically
NOTE:

To cancel inquiry, issue the following command while the inquiry in progress: cancel_inquiry

4.5.5 Check the inquiry list
■

After running inquiry, type inquiry_list and press Enter to check the list.
inquiry_list
**************************** Inquiry List*******************************
LE-Bose SoundSport
28:11:a5:01:00:a2
360FLY4K_00C8
e4:ba:d9:10:00:c9
LE-reserved_N
28:11:a5:24:01:05
**************************** End of List *******************************

4.5.6 Pair outgoing SSP
•

Use the following command to pair outgoing SSP:
pair 

•

To accept or reject the outgoing pairing for the following example (pair e4:ba:d9:10:00:c9),
type Yes or No and press Enter.
pair e4:ba:d9:10:00:c9
*************************************************
BT pairing request::Device iPhone::Pairing Code:: 281155
*************************************************
** Please enter yes / no **
yes
*************************************************
Pairing state for 360FLY4K_00C8 is BONDED
*************************************************

4.5.7 Check the bonded list
1. Use the following command to get the bonded device list:
$ adb shell
# btapp

2. After running btapp, type bonded_list and press Enter:
bonded_list
**************************** Bonded Device List
***************************
360FLY4K_00C8
******************************* End of List
*********************************

a4:f1:e8:c6:2f:b4

3. To exit from btapp, navigate to the main menu and enter the following command:
exit

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

19

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.6 Ethernet
The following figure shows the LAN port.

LAN

■

Connect the LAN cable to the LAN port.
$ adb shell
# ifconfig
enp1s0u3 Link encap:Ethernet HWaddr 00:0E:C6:81:79:01
inet addr:192.168.7.196 Bcast:192.168.7.255
Mask:255.255.255.0
inet6 addr: fe80::20e:c6ff:fe81:7901%1819682900/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:319 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34988 (34.1 KiB) TX bytes:1774 (1.7 KiB)
# ping www.qualcomm.com
PING www.qualcomm.com (140.205.16.110): 56 data bytes
64 bytes from 140.205.16.110: seq=0 ttl=40 time=38.816 ms
64 bytes from 140.205.16.110: seq=1 ttl=40 time=42.177 ms
64 bytes from 140.205.16.110: seq=2 ttl=40 time=38.260 ms
^C
--- www.qualcomm.com ping statistics --3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 38.260/39.751/42.177 ms
Note: If ping does not work, check the firewall and try to ping outside
the firewall.

4.7 Digital microphone

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

20

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

The following figure shows the digital microphone (DMIC) positions:
1. The board has four DMICs. Use dmic-ctl to perform separate DMIC enable, disable, and

record operations.
$adb shell
# dmic-ctl
/usr/bin/dmic-ctl  
DMIC_NUMBER: [0, 1, 2, 3]
SWITCH: enable, disables

2. In the following example DMIC1 is used.
a. To enable DMIC1:
$ adb shell
# dmic-ctl 0 enable

b. To start recording, enter arecord and press Enter:
# arecord /data/dmic0_test.wav -f S16_LE -c 1 -r 48000 -d 10

c. The command parameter setting only records for 10 seconds. After 10 seconds, the
recording stops.
d. Move the recording file to the PC for playback verification or use a tool like Audacity to
view the waveform.
$ adb pull /data/dmic0_test.wav .

e. To disable DMIC1:
$ adb shell
#dmic-ctl 1 disables

4.8 Audio
1. To verify the audio decoding functionality download the test files from:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/1b61950baae5470c86f96cd229b2bc01645602035

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

21

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

2. Unzip to extract the contents of the file:
□ Audio_Decode_WAV_Stereo_48KHz_16Bit.wav;
□ Audio_Decode_AAC-LC_adts_32KHz_stereo.aac;
□ Audio_Decode_HE-AAC V1_stereo_32KHz.aac;
□ Audio_Decode_HE-AAC V2_stereo_44.1KHz.m4a;
□ Audio_Decode_MP3v1_32KHz_cbr_stereo.mp3;

4.8.1 Playback WAV using amixer + aplay
$ adb push Audio_Decode_WAV_Stereo_48KHz_16Bit.wav /data/

1. To enable speaker:
$ adb shell
# spk-ctl enable

2. To play:
$ adb shell
# aplay /data/Audio_Decode_WAV_Stereo_48KHz_16Bit.wav

3. To disable speaker:
$ adb shell
# spk-ctl disables

4.8.2 Playback AAC_LC using hal_play_test_64bit
$ adb push Audio_Decode_AAC-LC_adts_32KHz_stereo.aac /data/
# hal_play_test_64bit -f /data/Audio_Decode_AAC-LC_adts_32KHz_stereo.aac -t
4 -d 2 -v 0.3 -r 32000 -c 2 -a 1

4.8.3 HE-AAC-V1 using hal_play_test_64bit
$ adb push Audio_Decode_HE-AAC V1_stereo_32KHz.aac /data/
# hal_play_test_64bit -f /data/Audio_Decode_HE-AAC\ V1_stereo_32KHz.aac -t
4 -d 2 -v 0.3 -r 16000 -c 2 -a 2

4.8.4 HE-AAC-V2 using hal_play_test_64bit
$ adb push Audio_Decode_HE-AAC V2_stereo_44.1KHz.m4a /data/
# hal_play_test_64bit -f /data/Audio_Decode_HE-AAC\ V2_stereo_44.1KHz.m4a t 3 -d 2 -v 0.3 -r 22050 -c 2 -a 3

4.8.5 Mp3 using hal_play_test_64bit
$ adb push Audio_Decode_MP3v1_32KHz_cbr_stereo.mp3 /data/
# hal_play_test_64bit -f /data/Audio_Decode_MP3v1_32KHz_cbr_stereo.mp3 -t 2
-d 2 -v 0.3 -r 32000 -c 2 -a 1

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

22

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.9 Sensors
The device supports five sensor types: accelerometer, gyroscope, magnetometer, proximity, and
light. The sensors are situated in two groups.

SW_5

The following table shows the sensor modules enabled using the SW_5 switch.
SW_5
ON

OFF

NOTE:

Sensor

Accelerometer
Gyroscope
Magnetometer
Magnetometer
Pressure
Accelerometer
Gyroscope
Proximity
Light

Sensor_name

Sensor type ID

bst_bma2x2 Accelerometer Wakeup

1

BMG160 Gyroscope Wakeup

4

bosch_bmm150 Magnetometer Wakeup

2

ak0991x Magnetometer Wakeup

2

icp101xx Pressure Sensor Wakeup

6

icm4x6xx Accelerometer Wakeup

1

icm4x6xx Gyroscope Wakeup

4

ltr559 Proximity Sensor Wakeup

8

ltr559 Ambient Light Sensor Wakeup

5

Whenever the SW_5 switch is toggled, the device must be rebooted.

4.9.1 Get sensor data via sns_hal_batch
■

To get sensor data via sns_hal_batch:
$ adb shell
# sns_hal_batch --help
Usage: sns_hal_batch [OPTIONS]...
-h --help
-l --listsensors
attributes
-o --output

Rev. A

Print this message
List all available sensors and their
the output file to write the sensor values to
default: /data/local/sns_hal_batch.out

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

23

Qualcomm® Robotics RB3 Platform Linux User Guide

Providing
interface
Providing
sequence:
rate)
-

RB3 Platform Features and Use Cases

no parameter options runs the interactive command line
1 or more parameters to sns_hal_batch will run the following
set batching parameters for the sensor: (sampling rate, report
activate the sensor
wait for the specified duration
deactivate the sensor

The parameters, as well as their default values, are as follows:
-s --sensor
the android sensor type enumeration
value
default: 1 for
android.sensor.accelerometer
-w --wakeup
flag for wakeup or non-wakeup sensor
w for wakeup
n for non-wakeup
d for don't care or default
default: d
-sr --samplingrate
the sampling rate (in Hz)
default: 5 Hz
-rr --reportrate
the report rate (in Hz)
use 0 for no batching
(report events as available)
default: 0
-d --duration
the duration (in seconds) to run the
sensor for
default: 10 seconds

4.9.2 Get accelerometer data
■

To get accelerometer data, set SW_5 to ON position:
NOTE: whenever SW_5 switch is toggled, device has to be rebooted
# sns_hal_batch -s 1 -sr 10 -rr 10 -d 30
HAL open
HAL module_api_version: 0x1
HAL hal_api_version
: 0x256
HAL hal_id
: sensors
HAL hal_name
: QTI Sensors HAL Module
HAL hal_author
: Qualcomm Technologies, Inc.
get_sensors_list took 3359783957 nanoseconds
batch success
activate success
Activated sensor [Type: 1] bst_bma2x2 Accelerometer Wakeup (d) for 30
seconds, sampling at 10.000000 Hz and reporting at 10.000000 Hz

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

24

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

[Type:

1] android.sensor.accelerometer (wakeup)
Name:bst_bma2x2 Accelerometer Wakeup Vendor:Bosch
Version:16843296 Handle:21
maxRange: 769.773376 resolution: 0.002393 power: 0.130000 mA
minDelay: 4000 us maxDelay: 1000000 us
fifoReservedEventCount: 3000 fifoMaxEventCount: 10000
requiredPermission:
Sleeping for 30 seconds before deactivating and exiting
801676.639328, android.sensor.accelerometer/bst_bma2x2 Accelerometer
Wakeup, 1546110350081.201416, 0.229966, -0.675981, 9.965191, 0.000000, 4671062810670957519, latency(ms): 16900634525304.989528
801774.951150, android.sensor.accelerometer/bst_bma2x2 Accelerometer
Wakeup, 1546110350181.201416, 0.229966, -0.651570, 9.965191, 0.000000, 4672821831706903503, latency(ms): 16900634525303.301350

4.9.3 Get gyroscope data
■

To get gyroscope data, set SW_5 to ON position:
NOTE: whenever SW_5 switch is toggled, device has to be rebooted
# sns_hal_batch -s 4 -sr 10 -rr 10 -d 30
HAL open
HAL module_api_version: 0x1
HAL hal_api_version
: 0x256
HAL hal_id
: sensors
HAL hal_name
: QTI Sensors HAL Module
HAL hal_author
: Qualcomm Technologies, Inc.
get_sensors_list took 3348546614 nanoseconds
batch success
activate success
Activated sensor [Type: 4] BMG160 Gyroscope Wakeup (d) for 30 seconds,
sampling at 10.000000 Hz and reporting at 10.000000 Hz
[Type: 4] android.sensor.gyroscope (wakeup)
Name:BMG160 Gyroscope Wakeup Vendor:BOSCH Version:16843020
Handle:15
maxRange: 34.905556 resolution: 0.018592 power: 0.250000 mA
minDelay: 1000 us maxDelay: 1000000 us
fifoReservedEventCount: 0 fifoMaxEventCount: 10000
requiredPermission:
Sleeping for 30 seconds before deactivating and exiting
940962.967347, android.sensor.gyroscope/BMG160 Gyroscope Wakeup,
1546110489356.736937, -0.000000, -0.001598, -0.002131, 0.000000, 4985078755554964275, latency(ms): 16900634525315.782026
941062.849431, android.sensor.gyroscope/BMG160 Gyroscope Wakeup,
1546110489454.736937, -0.000213, -0.001704, -0.001065, 0.000000, 4981148563932223546, latency(ms): 16900634525317.664110

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

25

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.9.4 Get magnetometer data
■

To get data from the magnetometer, set SW_5 to ON position:

NOTE: whenever SW_5 switch is toggled, device has to be rebooted
# sns_hal_batch -s 2 -sr 10 -rr 10 -d 30
HAL open
HAL module_api_version: 0x1
HAL hal_api_version
: 0x256
HAL hal_id
: sensors
HAL hal_name
: QTI Sensors HAL Module
HAL hal_author
: Qualcomm Technologies, Inc.
get_sensors_list took 3376610572 nanoseconds
batch success
activate success
Activated sensor [Type: 2] bosch_bmm150 Magnetometer Wakeup (d) for 30
seconds, sampling at 10.000000 Hz and reporting at 10.000000 Hz
[Type: 2] android.sensor.magnetic_field (wakeup)
Name:bosch_bmm150 Magnetometer Wakeup Vendor:Bosch Version:8454
Handle:35
maxRange: 2500.000000 resolution: 0.100000 power: 0.500000 mA
minDelay: 10000 us maxDelay: 1000000 us
fifoReservedEventCount: 600 fifoMaxEventCount: 10000
requiredPermission:
Sleeping for 30 seconds before deactivating and exiting
1055972.352303, android.sensor.magnetic_field/bosch_bmm150 Magnetometer
Wakeup, 1546110604391.238615, 23.922522, -5.980630, -85.005112,
0.000000, -4557817287662411437, latency(ms): 16900634525290.665304
1056075.248866, android.sensor.magnetic_field/bosch_bmm150 Magnetometer
Wakeup, 1546110604491.267521, 23.175407, -5.606953, -84.604294,
0.000000, -4561183073144051908, latency(ms): 16900634525293.532961

4.9.5 Get pressure sensor data
■

To get data from the pressure sensor, set SW_5 to ON position.
NOTE: whenever SW_5 switch is toggled, device has to be rebooted
# sns_hal_batch -s 6 -sr 10 -rr 10 -d 30
HAL open
HAL module_api_version: 0x1
HAL hal_api_version
: 0x256
HAL hal_id
: sensors
HAL hal_name
: QTI Sensors HAL Module
HAL hal_author
: Qualcomm Technologies, Inc.
get_sensors_list took 9613565153 nanoseconds
batch success
activate success

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

26

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

Activated sensor [Type: 6] icp101xx Pressure Sensor Wakeup (d) for 30
seconds, sampling at 10.000000 Hz and reporting at 10.000000 Hz
[Type: 6] android.sensor.pressure (wakeup)
Name:icp101xx Pressure Sensor Wakeup Vendor:TDK-Invensense Version:65544
Handle:41
maxRange: 1150.000000 resolution: 0.000100 power: 0.010000 mA
minDelay: 40000 us maxDelay: 1000000 us
fifoReservedEventCount: 300 fifoMaxEventCount: 10000
requiredPermission:
Sleeping for 30 seconds before deactivating and exiting
182936428.889120, android.sensor.pressure/icp101xx Pressure Sensor
Wakeup, 1547642389965.965156, 1012.952209, 0.000000, 0.000000, 0.000000,
1149058289, latency(ms): 16899284620172.475580
182936528.848286, android.sensor.pressure/icp101xx Pressure Sensor
Wakeup, 1547642390065.965729, 1012.957520, 0.000000, 0.000000, 0.000000,
1149058376, latency(ms): 16899284620172.434173
182936628.178390, android.sensor.pressure/icp101xx Pressure Sensor
Wakeup, 1547642390165.970573, 1012.956543, 0.000000, 0.000000, 0.000000,
1149058360, latency(ms): 16899284620171.759433

4.9.6 Get light sensor data
■

To get data from the light sensor, set SW_5 to OFF position.
NOTE: whenever SW_5 switch is toggled, device has to be rebooted
Whenever SW_5 switch is toggled, device has to be rebooted
# sns_hal_batch -s 5 -sr 10 -rr 10 -d 30
HAL open
HAL module_api_version: 0x1
HAL hal_api_version
: 0x256
HAL hal_id
: sensors
HAL hal_name
: QTI Sensors HAL Module
HAL hal_author
: Qualcomm Technologies, Inc.
get_sensors_list took 3367598176 nanoseconds
batch success
activate success
Activated sensor [Type: 5] ltr559 Ambient Light Sensor Wakeup (d) for 30
seconds, sampling at 10.000000 Hz and reporting at 10.000000 Hz
[Type: 5] android.sensor.light (wakeup)
Name:ltr559 Ambient Light Sensor Wakeup Vendor:Lite-On
Version:256 Handle:25
maxRange: 1.000000 resolution: 0.100000 power: 0.110000 mA
minDelay: 0 us maxDelay: 0 us
fifoReservedEventCount: 0 fifoMaxEventCount: 10000
requiredPermission:
Sleeping for 30 seconds before deactivating and exiting

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

27

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

1123650.618788, android.sensor.light/ltr559 Ambient Light Sensor Wakeup,
1546110672090.233843, 0.000000, 0.000000, 0.000000, 0.000000, 0,
latency(ms): 16900634525269.936561

4.9.7 Get proximity sensor data
■

To get data from the proximity sensor, set SW_5 to OFF position:
NOTE: whenever SW_5 switch is toggled, device has to be rebooted
Whenever SW_5 switch is toggled, device has to be rebooted
# sns_hal_batch -s 8 -sr 10 -rr 10 -d 30
HAL open
HAL module_api_version: 0x1
HAL hal_api_version
: 0x256
HAL hal_id
: sensors
HAL hal_name
: QTI Sensors HAL Module
HAL hal_author
: Qualcomm Technologies, Inc.
get_sensors_list took 9779863069 nanoseconds
batch success
activate success
Activated sensor [Type: 8] ltr559 Proximity Sensor Wakeup (d) for 30
seconds, sampling at 10.000000 Hz and reporting at 10.000000 Hz
[Type: 8] android.sensor.proximity (wakeup)
Name:ltr559 Proximity Sensor Wakeup Vendor:Lite-On Version:256 Handle:27
maxRange: 1.000000 resolution: 0.100000 power: 0.150000 mA
minDelay: 0 us maxDelay: 0 us
fifoReservedEventCount: 300 fifoMaxEventCount: 10000
requiredPermission:
Sleeping for 30 seconds before deactivating and exiting
237290.761418, android.sensor.proximity/ltr559 Proximity Sensor Wakeup,
1547459690500.729312, 1.000000, 0.000000, 0.000000, 0.000000,
1065353216, latency(ms): 16899284620499.583722
242050.179333, android.sensor.proximity/ltr559 Proximity Sensor Wakeup,
1547459695247.851604, 0.000000, 0.000000, 0.000000, 0.000000, 0,
latency(ms): 16899284620511.879345

4.10 Camera
The device supports four camera interfaces as shown in the following figure:

ToF
Stereo

OV885

Tracking

6
Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

28

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

The sensor ID changes depending on the number of camera sensors connected simultaneously.
Use the following matrix to calculate the ID for the camera devices attached in various
combinations:

For example:
■

Sr.No 1.4: Here we are connecting only one of the supported sensors. “cameraID = 0” will
select “Tracking”

■

Sr.No 2.3: Here we are connecting stereo camera along with tracking( 2 camera sensor
scenario). In this case, “cameraID=1” will select “Tracking” while “cameraID=0” will select
“Stereo”

The hal3_test application is available to capture image streams provided by the cameras. This
application is written using the HAL3 API.
■

To run the hal3_test application, log in to the device as a root (using serial or adb shell).
$ adb shell
# hal3_test -h
Enter Camera Testing
================== Camera Test Version ==================
CAMTEST_SHA1
: 0aea4e256a34e2eaa014d251c2a794b684c70e00
CAMTEST_BUILD_TS: 10/24/2018 12:6:35
CAMTESTHOSTNAME : ecbld-bd116-lnx.qualcomm.com
CAMBUILD_IP
: 10.225.16.179/23
===========================================================
opt:h
usage: hal3_test [-h] [-f command.txt]
-h
show usage
-f
using commands in file

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

29

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

command in program:
:[Params]
Orders:
A: ADD a camera device for test
>>A:id=0,psize=1920x1080,pformat=yuv420,ssize=1920x1080,sformat=jpeg
U: Update meta setting
>>U:manualaemode=1
D: Delete current camera device
>>D
S: trigger Snapshot and dump preview/video
>>Ss:2 num take num(1,2,..) picture(s), eg. s:1
s: trigger Snapshot
>> s:num take num(1,2,..) picture(s), eg. S:2 S:2
v: triger video that switch from preview
>>v:id=0,psize=1920x1080,pformat=yuv420,vsize=1920x1080,ssize=1920x1080,
sformat=jpeg
p: trigger dump Preview
>> p:num dump num(1,2,..) preview frame(s), eg. p:3 p:2
M: set Metadata dump tag
>>M:expvalue=1,scenemode=0
Q: Quit

4.10.1 Main Camera (OV8856)
NOTE:

The default directory where hal3_test saves files is: /data/misc/camera/.
■

Start the camera with preview mode (size:1920x1080, format:YUV420)
□ pszie: set preview size.
□ pformat: set preview format and support format: yuv420, yuv_ubwc, raw10,raw8,raw16.
□ P:1, dump one preview frame.
$ adb shell
# hal3_test
CAM0>> A:id=2,psize=1920x1080,pformat=yuv420
CAM0>> P:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .

■

Set the camera auto awb mode.
□ manualawbmode: set manual abw mode(0:off 1:auto)
□ file=ALOGE, tag=MyTest: enable monitor abw status, using ALOG to output log with

MyTest tag.

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

30

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

$ adb shell
# hal3_test
CAM0>> A:id=2,psize=1920x1080,pformat=yuv420
CAM0>> M:awbmode=1,file=ALOGE,tag=MyTest
CAM0>> U:manualawbmode=1
CAM0>> P:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .
■

Start preview with manual ae mode on.
□ manualaemode: set manual aemode(0:off, 1:on)
$ adb shell
# hal3_test
CAM0>> A:id=2,psize=1920x1080,pformat=yuv420
CAM0>> M:aemode=1,file=ALOGE,tag=MyTest
CAM0>> U:manualaemode=1
//Test under Lowlight
CAM0>> P:5
//switch to
CAM0>> P:5

Brightlight

CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename”
■

.

Start preview with snapshot (size:3264x2448,format:jpeg)
□ sszie: set snap shot size.
□ sformat: set snap shot format, support format: yuv420, jpeg, raw10,raw16.
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448,sformat=jpeg
CAM0>> P:1
CAM0>> s:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .

■

Snapshot with auto awb mode.
$ adb shell
# hal3_test

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

31

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

CAM0>> A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448
,sformat=jpeg
CAM0>> M:awbmode=1,file=ALOGE,tag=MyTest
CAM0>> U:manualawbmode=1
CAM0>> P:1
CAM0>> s:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .
■

Snapshot_Camera_Auto Flicker Detection
□ manualantimode: set manual antimode(0:off,1:50HZ,2:60HZ,3:auto)
zslmode: en/disable zsl mode(0:disalbe,1:enable)
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448,sformat=jpeg
CAM0>> M:zslmode=1,ae_antimode=1,file=ALOGE,tag=MyTest
CAM0>> U:manualantimode=3,manualzslmode=1
CAM0>> s:1
CAM0>> U:manualantimode=2,manualzslmode=1
CAM0>> s:1
CAM0>> U:manualantimode=1,manualzslmode=1
CAM0>> s:1
CAM0>> U:manualantimode=0,manualzslmode=1
CAM0>> s:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .

■

Snapshot_ Camera_Digital Zoom
□ manualcropregion: set zoom parameters(leftxtopxwidthxheight),
□ e.g., 1306x979x653x490(crop region left:1306, top:979,width:653,height:490)
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448,sformat=jpeg
CAM0>> M:zslmode=1,zoomvalue=1,file=ALOGE,tag=MyTest
CAM0>> U:manualzslmode=1,manualcropregion=0x0x3264x2448
CAM0>> P:1
CAM0>> s:1
CAM0>> U:manualzslmode=1,manualcropregion=1306x979x653x490
CAM0>> P:1
CAM0>> s:1
CAM0>> U:manualzslmode=1,manualcropregion=1428x1071x408x306
CAM0>> P:1

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

32

Qualcomm® Robotics RB3 Platform Linux User Guide

CAM0>> s:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename”
■

RB3 Platform Features and Use Cases

.

Snapshot_Camera_MFNR
□ Turn on MFNR:
$ adb root
$ adb remount
$ adb shell mount -o rw,remount /
$ adb shell echo "overrideEnableMFNR=TRUE" >
/vendor/etc/camera/camxoverridesettings.txt
$ adb shell echo "advanceFeatureMask=0x02" >>
/vendor/etc/camera/camxoverridesettings.txt
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448,sformat=jpeg
CAM0>> M:zslmode=1,file=ALOGE,tag=MyTest
CAM0>> U:manualzslmode=1
CAM0>> P:1
CAM0>> s:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .

□ Turn off MFNR:
$ adb shell "echo "overrideEnableMFNR=False" >
/vendor/etc/camera/camxoverridesettings.txt"
$ adb shell "echo "advanceFeatureMask=0x01" >>
/vendor/etc/camera/camxoverridesettings.txt"
$ adb reboot
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264*2448,sformat=jpeg
CAM0>> M:zslmode=1,file=ALOGE,tag=MyTest
CAM0>> U:manualzslmode=1
CAM0>> P:1
CAM0>> s:1
CAM0>> D
CAM0>> Q
# exit
$ adb pull /data/misc/camera/”filename” .

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

33

Qualcomm® Robotics RB3 Platform Linux User Guide

■

RB3 Platform Features and Use Cases

Camera video recording with fps:30,encoder:h264, size:1920x1080,bitrate:16Mbit.
□ vsize: set video size.
□ codectype: select encoder(0:H264/avc, 1:H265/hevc)
□ fpsrange: set sensor fps. If you want a variable fps mode, you can use format like this

fpsrange=min-max.
□ bitrate: set encoder output bitrate(Mb)
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,vsize=1920x1080,ssize=3264x2448
,sformat=jpeg,fpsrange=30-30,codectype=0,bitrate=16
CAM0>> D
CAM0>> Q
■

Camera video recording with fps:30,encoder:h265, size:1920x1080,bitrate:8Mbit
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,vsize=1920x1080,ssize=3264x2448,sf
ormat=jpeg,fpsrange=30-30,codectype=1,bitrate=8
CAM0>> D
CAM0>> Q

■

Camera video recording with MCTF on,
The video file is saved on /data/misc/camera/ path and can get this file by adb pull cmd, this
video can be play with various video player on PC that support H264 decoding.
$ adb root
$ adb remount
$ adb shell mount -o rw,remount /
$ adb shell "echo "advanceFeatureMask=0x01">
vendor/etc/camera/camxoverridesettings.txt"
$ adb shell "echo logVerboseMask=0xFFFFFFFF>>
/vendor/etc/camera/camxoverridesettings.txt"
$ adb shell "echo enableMCTF=TRUE>>
/vendor/etc/camera/camxoverridesettings.txt"
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,vsize=1920x1080,ssize=3264x2448,sf
ormat=jpeg,fpsrange=30-30,codectype=0
CAM0>> P:1
CAM0>> D
CAM0>> Q

■

Turn off MCTF:
$ adb shell "echo "advanceFeatureMask=0x01">
/vendor/etc/camera/camxoverridesettings.txt"

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

34

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

$ adb shell "echo logVerboseMask=0xFFFFFFFF>>
/vendor/etc/camera/camxoverridesettings.txt"
$ adb shell "echo "enableMCTF=False">>
/vendor/etc/camera/camxoverridesettings.txt"
$ adb reboot
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,vsize=1920x1080,ssize=3264x2448,sf
ormat=jpeg,fpsrange=30-30,codectype=0
CAM0>> P:1
CAM0>> D
CAM0>> Q
■

Camera video recording and live shot.
$ adb shell
# hal3_test
CAM0>>
A:id=2,psize=1920x1080,pformat=yuv420,ssize=3264x2448,sformat=jpeg,vsize
=1920x1080,codectype=0,fpsrange=30-30
CAM0>> P:1
CAM0>> s:1
CAM0>> D
CAM0>> Q

4.10.2 Tracking (OV7251)
■

Preview_Camera_640*480 dump raw
$ adb shell
# hal3_test
CAM0>> a:id=3,psize=640x480,pformat=raw10
CAM0>> P:1
CAM0>> D
CAM0>> Q
#exit
$ adb pull /data/misc/camera/”filename” .

Check raw picture with Chromatix software or using “imageJ
(https://imagej.nih.gov/ij/)”tools

4.10.3 Stereo camera
■

Depth Camera_Preview_720P_ Dump RAW:
$
$
$
$

adb
adb
adb
adb

shell
shell
shell
shell

setprop
setprop
setprop
setprop

persist.al.miniisp.camx.stop 1
persist.al.camera.depth.dump 1
persist.al.dump.count 5
persist.al.scid 4

# hal3_test

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

35

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

CAM0>>
A:id=0,psize=1280x720,pformat=yuv420,ssize=1280x720,sformat=jpeg,altek=1
CAM0>> Quit
# exit
$ adb pull /data/misc/camera/”filename” .

1. Use AltekImageViewer.exe tool to check raw files.
Get AltekImageViewer.exe at:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/dcb966535a9949c2bcbed329392646781604404334
2. Run the executable.
3. After installing, launch the application.
4. From the File menu, select Open. With the default configuration, an image similar to the
following will be displayed:

4.10.4 ToF Dump RAW
■

ToF camera 640x480 dump raw 2vc iRGB+depth:
$ adb shell
# testapp
# 0
//Select mode, 0:near 1: far
# 2
//press 2 will dump 10 frames
exit.
# ls /output/
bg_0001.raw bg_0007.raw
depth_0003.raw
bg_0002.raw bg_0008.raw
depth_0004.raw
bg_0003.raw bg_0009.raw
depth_0005.raw
bg_0004.raw bg_0010.raw
depth_0006.raw
bg_0005.raw depth_0001.raw
depth_0007.raw
ir_0009.raw
bg_0006.raw depth_0002.raw
depth_0008.raw
ir_0010.raw
$ adb pull /output/ .

Rev. A

to the path: “/output/”. and

depth_0009.raw
depth_0010.raw
ir_0001.raw
ir_0002.raw
ir_0003.raw

ir_0005.raw
ir_0006.raw
ir_0007.raw
ir_0008.raw

ir_0004.raw

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

36

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

Use imageJ tool to check raw files.
Get imageJ at:
https://imagej.nih.gov/ij/
■

Guide of imageJ:

1.

From the File menu, select Open.

2.

Use the following configuration.
depth : 640 x 480.
ir or bg : 320 x 240.
image type : 16-bits unsigned.

3.

■

An image similar to the following will be displayed(ir + bg + depth):

TOF camera temperature feature:
$ adb shell
# testapp
# 0
# 1
shown below.

Rev. A

//Select mode, 0:near
1: far
//Display the current temperature of the TOF camera, as

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

37

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

4.10.5 Three camera concurrency mode
Connect the camera sensors in the following table before running the test app. To enable each
camera, see the camera ID shown:
Camera module name

Stereo

ToF

OV8856

Tracking

Camera ID

0

1

2

3

Whether Depend on ISP

Yes

No

Yes

No

There are only two ISP interfaces on Robotics DK. As soon as ToF is enabled both the ISPs are
automatically selected for ToF consumption. During the concurrency mode, enable other camera
sensors before enabling ToF/Tracking. This prevents the ToF camera from occupying the ISP
interface on the Robot DK.
■

Enable preview of Main+Tracking+ToF:
adb shell
# hal3_test
A:id=2,psize=1920x1080,pformat=yuv420
P:1
A:id=3,psize=640x480,pformat=raw10
P:1
A:id=1,psize=640x480,pformat=raw16,dsize=640x480,dformat=raw16
P:1
D
Q

■

Enable preview of Main+Stereo (depth)+ToF:
adb shell
#hal3_test
A:id=2,psize=1920x1080,pformat=yuv420
P:1
A:id=0,psize=1280x720,pformat=yuv420,ssize=1280x720,sformat=jpeg,altek=1
A:id=1,psize=640x480,pformat=raw16,dsize=640x480,dformat=raw16
P:1
D
Q

■

Enable preview of Tracking+Stereo (depth)+ToF:
adb shell

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

38

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

#hal3_test
A:id=3,psize=640x480,pformat=raw10
P:1
A:id=0,psize=1280x720,pformat=yuv420,ssize=1280x720,sformat=jpeg,altek=1
A:id=1,psize=640x480,pformat=raw16,dsize=640x480,dformat=raw16
P:1
D
Q
NOTE:

Choose only one resolution for each camera for example. More resolution for each camera please
check the spec of camera module.

4.11 Video
■

Download the test file from:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/1b61950baae5470c86f96cd229b2bc01645602035
□ H264_1920_1080_60fps;
□ 1920_1080_60fps.mp4;
□ 1920_1080.yuv

4.11.1 OMX
■

Configure the macro environment, mainly used to set the input and output video path.
□ MasterConfig.xml:

/data/input/
/data/output/


□ SampleDecode.xml:


1920_1080
VIDEO_CodingAVC
H264_1920_10803840_2160_60fps
dec
FILE
1
1080
1920
1080
1920



Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

39

Qualcomm® Robotics RB3 Platform Linux User Guide

■

RB3 Platform Features and Use Cases

Decode command:
$
$
$
$

adb
adb
adb
adb

shell mkdir /data/input /data/output
push MasterConfg.xml /data/
push H264_3840_2160_60fps /data/input/
push SampleDecode.xml /data/

$ adb shell
# mm-vidc-omx-test /data/ /data/ SampleDecode.xml
Frame Num= 299 file_offset=0x0 frame_size=0x40f0 pBuffer=0xebac1000
fileoffset:0x4b909b status:0x0
Frame Num= 300 file_offset=0x0 frame_size=0x40f0 pBuffer=0xeb401000
fileoffset:0x4bd18b status:0x0
VT_CONSOLE RunTest::69 Test passed
# ls -al /data/output/
-rw-rw-rw- 1 root root 940032000 Dec 29 20:10 1920_1080.yuv
■

Decode video check. With the YUV player, the format is set to NV12.
□ H264 resolution setting:
Height: H/16 == 0 ? H ; (H/16 +1)*16
Width: W/16 == 0 ? W ; (W/16 +1)*16

□ HEVC resolution setting:
Height: H/32 == 0 ? H ; (H/23 +1)*32
Width: W/32 == 0 ? W ; (W/32 +1)*32
■

Examples:
□ 1920*1080 H264 decode output YUV file
Format: NV12
H: 1920
W: 1088

□ 1280*720 HEVC decode output YUV file
Format: NV12
H: 1280
W: 736

4.11.2 GST
■

Environmental configuration:
$
#
#
#

■

adb shell
export GST_REGISTRY=/data/gstreamer-1.0/registry.$(uname -m).bin
export GST_REGISTRY_UPDATE=no
gst-inspect-1.0 > /dev/null

Decoder/Encoder
□ Decoder:SW (Software Decoder):
# gst-launch-1.0 -e filesrc location=/data/input/1920_1080_60fps.mp4
! qtdemux name=demux demux. ! queue ! h264parse ! avdec_h264 !
filesink location=/data/output/1920_1080_60.yuv

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

40

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:08.570580309
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

□ Decoder:HW (Hardware Decoder):
# gst-launch-1.0 -e filesrc location=/data/input/1920_1080_60fps.mp4
! qtdemux name=demux demux. ! queue ! h264parse ! omxh264dec !
filesink location=/data/output/1920_1080_60hw.yuv
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:08.476530986
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

41

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

□ Encoder:HW (Hardware Encoder):
# gst-launch-1.0 -e filesrc location=/data/input/1920_1080.yuv !
videoparse width=1920 height=1080 format=nv12 framerate=60 !
omxh264enc target-bitrate= 800000000 quant-p-frames=59 quant-bframes=0 control-rate=variable ! 'video/xh264,streamformat=(string)byte-stream,profile=high' ! h264parse !
filesink location=/data/output/1920_1080_60.h264
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:10.204220673
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

4.12 OpenGL ES
1. Get the test file from:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/29c53bd1bc674e6ebd176e47565cb75f1645658038
2. Extract the downloaded file:
$ unzip Robotics-opengles-testbin.zip
$ tree Robotics-opengles-testbin/
Robotics-opengles-testbin/
└── es11
├── es11_32
│
├── conform_cl
│
├── conform_cm
│
├── covegl
│
├── covgl_cl
│
├── covgl_cm
│
├── primtest_cl
│
└── primtest_cm
├── es11_64
│
├── conform_cl
│
├── conform_cm
│
├── covegl
│
├── covgl_cl
│
├── covgl_cm
│
├── primtest_cl
│
└── primtest_cm
└── push.sh

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

42

Qualcomm® Robotics RB3 Platform Linux User Guide

•

Upload test commands to the device:
$
$
$
$
$
$
$

•

RB3 Platform Features and Use Cases

adb
adb
adb
adb
adb
adb
adb

root
remount
shell mount -o remount rw /
shell mount -o remount rw /data
shell mkdir –p /data/testApp/es11
push es11_64 /data/testApp/es11
shell chmod 777 /data/testApp/es11/*

OpenGL ES conformance test:
$ adb shell
# cd /data/testApp/es11
# ./conform_cl -h
Options:
-1  Single test using "test" id.
-c 
Use config id.
-C [1-1]
Use predefined config.
-f  Use test set in "file".
-g  Generate test set in "file".
-h
Print this help screen.
-l  Generate logfile.
-p [1-4]
Set path level.
-r  Set random seed.
-s
Skip state check.
-v [0-2]
Verbose level.
-x
Force fail for config tests.

•

Execute the example as follows (testing process can take up to five hours):
# ./conform_cl -r 32555 -1 mustpass.log
OpenGL ES Conformance Test
Version CONFORM_VERSION (CONFORM_DATE)
Setup Report.
Verbose level = 1.
Random number seed = 32555.
Path inactive.
Config Report.
Config ID = 1.
RGBA (5, 6, 5, 0).
Default State test passed.
Must Pass test passed.
… …
Config Report.
Config ID = 63.
RGBA (8, 8, 8, 8).
Stencil (8).

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

43

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

Depth (24).
Config is identified as NON_CONFORMANT.
It may be rendered to using an OpenGL ES context.
******************** SUMMARY OF 'conform' RESULTS ********************
SUMMARY: NO tests failed at any path level.
SUMMARY: 48 conformant configs, 12 non-conformant configs.
****************** END SUMMARY OF 'conform' RESULTS ******************

4.13 LTE Module
Note: This section explains the how to validate the Serria LTE module on Qualcomm® cellular
mezzanine board.
•

Please look at the picture,it shows the Serria LTE module,SIM1 Slot,SIM2 Slot.

•

Select active SIM interface
Before using SIM interface,you need to select it.
For selecting first SIM interface:
# echo -e "AT!UIMS=0?\r\n" > /dev/ttyUSB2
# cat /dev/ttyUSB2
AT!UIMS=0?
OK
For selecting second SIM interface:

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

44

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

# echo -e "AT!UIMS=1?\r\n" > /dev/ttyUSB2
# cat /dev/ttyUSB2
AT!UIMS=1?
OK

•

Check if the SIM card exists
The following is the case of success.
# echo -e "AT+CPIN?\r\n" > /dev/ttyUSB2
# cat /dev/ttyUSB2
+CME ERROR: SIM not inserted
Or
The following is the case of failure.
# echo -e "AT+CPIN?\r\n" > /dev/ttyUSB2
# cat /dev/ttyUSB2
AT+CPIN?
+CPIN: READY
OK

4.14 Software tools and libraries
4.14.1 ROS
•

ROS configuration :
# adb shell
# cd /opt/ros/indigo/
/opt/ros/indigo # bash
bash-4.4#source ./ros-env.sh
bash-4.4# roscore &
[1] 4065
bash-4.4# ... logging to /home/root/.ros/log/7ce256f6-2def-11e9-83124962d813cee8/roslaunch-sda845-4065.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://localhost:46837/
ros_comm version 1.11.21

SUMMARY
========
PARAMETERS
* /rosdistro: indigo
* /rosversion: 1.11.21

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

45

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

NODES
auto-starting new master
process[master]: started with pid [4077]
ROS_MASTER_URI=http://localhost:11311/
setting /run_id to 7ce256f6-2def-11e9-8312-4962d813cee8
process[rosout-1]: started with pid [4090]
started core service [/rosout]

•

Run hello_world:
bash-4.4# cd bin/
bash-4.4# ./hello_world
[ INFO] [1549016659.810443307]:
[ INFO] [1549016660.813989869]:
[ INFO] [1549016661.811489139]:
[ INFO] [1549016662.810563462]:
[ INFO] [1549016663.814270649]:
[ INFO] [1549016664.813896326]:
[ INFO] [1549016665.810701117]:
[ INFO] [1549016666.811449241]:
[ INFO] [1549016667.814292783]:
[ INFO] [1549016668.811408459]:
[ INFO] [1549016669.811502782]:
[ INFO] [1549016670.814295125]:

hello_world
hello_world
hello_world
hello_world
hello_world
hello_world
hello_world
hello_world
hello_world
hello_world
hello_world
hello_world

Log painting "[ INFO] [TimeTag]: hello_world" and there should be no
failure to return.

4.14.2 Qualcomm® Hexagon™ Vector eXtensions (HVX)
Hexagon DSP SDK supports the RB3 Platform. For details see:
https://developer.qualcomm.com/software/hexagon-dsp-sdk
This section provides a step-by-step guide to build, load, and execute the calculator example on
Robotics in an Ubuntu environment.

4.14.2.1 Hexagon SDK environment construction
1. Hexagon SDK download:

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

46

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools

a. The installer takes care of downloading and installing all Hexagon SDK dependencies.
b. To get started with the Hexagon SDK, open a new terminal and run
setup_sdk_env.source.
This script configures the local environment. These changes are not persistent in the
terminal instance, so you must run setup_sdk_env.source on each terminal you want to
develop in.
$ cd < Hexagon SDK root directory, default is:
~/Qualcomm/Hexagon_SDK/ >
$ source setup_sdk_env.source

2. Hexagon tool (Hexagon.LLVM_linux_installer_8.1.05.bin) needs to go to the website below
to apply. https://developer.qualcomm.com/software/hexagon-dsp-sdk/tool-request
When Qualcomm approves your application, you will receive an email with a download link.
Download the tool and install it.
3. Linux cross-compilation tool
This version of Hexagon SDK supports Android and certain versions of Linux distributions
(Yocto and Linaro). Android is supported by variants starting with Android (e.g.,
Android_Debug). Linux is supported by variants starting with Ubuntu (e.g., Ubuntu_Debug).
The binaries (executables and libs) are provided for both HLOS.
The cross compilation tools for Linux are not provided with the Hexagon SDK. You need to
download these separately and install them under /tools/linaro. If you do this,
then you will be able to build Ubuntu variants for the examples. The examples are tested with
gcc-linaro-4.9.
■

Steps to build 64 bit ubuntu binaries on Linux:
a. Download gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz from:
http://releases.linaro.org/archive/14.11/components/toolchain/binaries/aarch64-linux-gnu

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

47

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

b. Extract the tar file and copy folder gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu to
/tools/ folder.
c. Rename gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu folder to linaro and try
building with make tree V=UbuntuARM_Debug_aarch64.
■

Steps to build 32 bit ubuntu binaries on Linuxs:
a. Download gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabi.tar.xz from:
http://releases.linaro.org/archive/14.11/components/toolchain/binaries/arm-linux-gnueabi
b. Extract the tar file and copy folder gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabi to
/tools/ folder.
c. Rename gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabi folder to linaro and try
building with make tree V=UbuntuARM_Debug.

4.14.2.2 Building
When building the calculator example, both the stub and skeleton must be compiled and linked.
This can be done by compiling both for the variant desired on the DSP as well as the application
processor.
For example, to create a stub/skel pair for Linux and Hexagon, the following commands must be
executed:
$
$
$
$
$

cd ~/Qualcomm/Hexagon_SDK/3.4.1
source setup_sdk_env.source
cd examples/common/calculator
make tree V=hexagon_Debug_dynamic_toolv81_v65 CDSP_FLAG=1
make tree V=UbuntuARM_Debug_aarch64 CDSP_FLAG=1

Compiled file:
$ tree UbuntuARM_Debug_aarch64/ship/
UbuntuARM_Debug_aarch64/ship/
├── calculator
├── calculator_test.so
└── libcalculator.so
$ tree hexagon_Debug_dynamic_toolv81_v65/ship/
hexagon_Debug_dynamic_toolv81_v65/ship/
├── libcalculator_skel.a
└── libcalculator_skel.so

4.14.2.3 On-target testing
■

To execute the calculator test on Robotics perform the following steps:
$ cd ~/Qualcomm/Hexagon_SDK/3.4.1/examples/common/calculator
$ adb push hexagon_Debug_dynamic_toolv81_v65/ship/libcalculator_skel.so
/usr/lib/rfsa/adsp/
$ adb push UbuntuARM_Debug_aarch64/ship/libcalculator.so /usr/lib64/
$ adb push UbuntuARM_Debug_aarch64/ship/calculator /usr/bin/

■

Rev. A

To install the TestSig on device:

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

48

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

1. First discover the device serial number. The following steps print out the device serial
number.
$ cd ~/Qualcomm/Hexagon_SDK/3.4.1
$ adb push
tools/elfsigner/getserial/UbuntuARM_Release_aarch64/getserial
/usr/bin/
$ adb shell /usr/bin/getserial
/usr/bin/getserial: /usr/lib64/libadsprpc.so: no version information
available (required by /usr/bin/getserial)
###################Serial number (see below)#########################
Serial Num : 0x2f5800d6
###################Serial number (see above)#########################

•

Next generate a test signature based on that serial number and push it to the device. The
test signature is discovered on boot so a reboot is required.
$ cd ~/Qualcomm/Hexagon_SDK/3.4.1
$ source setup_sdk_env.source
$ python tools/elfsigner/elfsigner.py -t 0x2f5800d6
Logging to ~/Qualcomm/Hexagon_SDK/3.4.1/output/Elfsigner_log.txt
Attention:
Use of this tool is conditioned upon your compliance with
Qualcomm Technologies'(and its affiliates') license terms and
conditions; including, without limitations, such terms and
conditions addressing the use of such tools with open source
software.
Agree? [y/n]:
y
Signing a file may take up to 3 minutes due to network connectivity.
Please wait patiently.
-----------------------------------------------------------Signing complete! Output saved at
/home/lizc/Qualcomm/Hexagon_SDK/3.4.1/output/testsig-0x2f5800d6.so
$ adb push output/testsig-0x2f5800d6.so /usr/lib/rfsa/adsp/
$ adb reboot

•

Execute the example as follows:
$ adb shell
# calculator 1 1000
-

Rev. A

// Run Calculator Example Locally on CPU

starting calculator test
allocate 4000 bytes from ION heap
creating sequence of numbers from 0 to 999
compute sum locally
sum = 499500
success

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

49

Qualcomm® Robotics RB3 Platform Linux User Guide

# calculator 0 1000
-

RB3 Platform Features and Use Cases

//Run Calculator Example on DSP

starting calculator test
allocate 4000 bytes from ION heap
creating sequence of numbers from 0 to 999
compute sum on the DSP
sum = 499500
success

4.14.3 FastCV
FastCV is designed for efficiency on all ARM-based processors, but is tuned to take advantage of
the Qualcomm® Snapdragon™ processor (S2 and above). This gives you the most widely used,
computationally intensive vision processing APIs, with hardware acceleration and better
performance on mobile devices.
1. Download “fastcv_test_data” test resources from:
https://www.thundercomm.com/
•

Push the test resource to the device:
$ adb push fastcv_test_data /data/

•

The test commands are divided into 64bit and 32bit. The following is introduced with 64bit:
$ adb shell
# lib64_fastcv_test
USAGE: lib64_fastcv_test test_data_directory [-l loops] [-m module_name]
[-p power_level][-E] [-S resolution#] [-f func_name] [-t target] [-M
operation_mode] [-OPT] [-s see] [-nbp] [-o] [-U] [-P]
OPTIONS
----------------------------------------------------------------nbp
Uses mallocs instead of internal buffer pool for
scratch/temporary buffers.
-psb nPreAllocBytes
Enable Preallocate Scratch Buffers
nPreAllocBytes is the number of bytes for the pre-allocated
buffer.
-l +integer
0 = [default] do not profile
+integer = loops to use when profiling.
-m string
String name of module to limit to. Valid strings in order are:
HW, MEM, DEPTH, DOT, SSD, IIMG, IIMGYUV, IDIFF, TRNS, WARP,
3CHANNELWARP,COLORYUVRGB, COLORYUV, COLORRGB, SCALE, BLUR, EDGES,
SCHARR, SAD, FAST10, DESCRIPTOR,, THRESH, COPY, VEC, KMEANS, AFFINEEVAL,

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

50

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

AFFINEFIT, HOMOGRAPHYEVAL, HOMOGRAPHYFIT, POSEEVAL, POSEREFINE,
3POINTPOSEEST, KDTREE, LINEARSEARCH, BITCNT, BITWISEOP, OFBM, BOUNDRECT,
UPSAMPLE, IPP, IPPTRANSFORM, CONTOUR, SOLVE, PERSPTRANSFORM, SET,
ADAPTTHRESH, SFGMASK, ABSDIFF, QUAD, AVERAGE, SHIFT, FLOODFILL, MOTION,
SVD, POLYGON, BGCODEBOOK, DRAWCONTOUR, HOUGHCIRCLE, HOUGHLINE,
CALIBRATE, REMAP, PYRAMID, IMGSEGMENTATION, LBP, FFT, CORNERSUBPIX,
CHANNEL, STATS, NCC, FIR, FAST, IMGINTENSITY, EDGE, KLT, MINMAX,
KMEANSTREESEARCH, SMOOTH, ARITHM, SVM, HARRIS, MSER
-f string
String name of function to limit to. Make sure to specify
corresponding module using -m. Valid strings are:
fcvNCCPatchOnCircle8x8u8, fcvNCCPatchOnSquare8x8u8,
fcvCornerFast9u8, fcvCornerFast9Scoreu8,
fcvCornerFast9Scoreu8_v2,
… …
fcvSubtractu8, fcvSubtracts16, fcvSubtractu8s16,
fcvAddWeightedu8, fcvAddSquaredu8u16,
fcvGLBPu8, fcvFFTu8, fcvIFFTf32, fcvCornerRefineSubPixu8
Note: Not all modules have function limit functionality yet.
Please use this option with module limit option to limit to
a particular function.
-e string
String name of exhaustive test data directory.
-p integer
Power mode to run QDSP in. Valid values are:
0 = minimum power mode
1 = normal power mode
2 = [default] maximum power mode
-t integer
Integer value indicating target. Valid values are:
FASTCV_ALL_TARGETS = 0; FASTCV_UNIT_ARM = 2; FASTCV_UNIT_VENUM =
4;
FASTCV_UNIT_QDSP = 8; FASTCV_UNIT_FPGA = 16; FASTCV_UNIT_GPU = 32
FASTCV_UNIT_C2D = 64; FASTCV_UNIT_VFP = 128; FASTCV_UNIT_ARMv7 =
256
FASTCV_UNIT_DMA = 512; FASTCV_UNIT_QDSP_TEST = 1024;
-M integer
Integer value indicating operation mode. Valid values are:
Skip operation mode test = 0
FASTCV_OP_LOW_POWER = 1; FASTCV_OP_PERFORMANCE = 2;
FASTCV_OP_CPU_OFFLOAD = 4
Combination FASTCV_OP_LOW_POWER & FASTCV_OP_PERFORMANCE = 3
Combination FASTCV_OP_LOW_POWER & FASTCV_OP_CPU_OFFLOAD = 5
Combination FASTCV_OP_PERFORMANCE & FASTCV_OP_CPU_OFFLOAD = 6

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

51

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

All Combination FASTCV_OP_LOW_POWER & FASTCV_OP_PERFORMANCE &
FASTCV_OP_CPU_OFFLOAD = 7
-OPT
Use this option with [-M operation_mode] to skip unit testing on
individual processing units and test only operation tables
-s seed
Seed for random number generator.
-o
FLAG to enable opencv benchmark profiling Results
-L +integer
Tells the number of iterations for profiling a function on QDSP
with only single remoting overhead
-U
Enables only the Unit Tests while disabling the Performance
Tests
-P
Enables only profiling while disabling the unit Tests
-DF
Disables fuzzing check
-E
Enables exhaustive testing to validate profiling vectors
-S Resolution#
Resolution for profiling.. Deafult is VGA
-H
Enables QDSP test vectors to be allocated on ARM Heap instead of
ION
-AC
Bump up ARM clocks
-AL
ION allocation buffers are aligned to no more than element size.
No effect on heap allocated buffers.
-TWOp
Test a couple fastcv API without calling any fcvSetOperationMode
to run default C reference code.

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

52

Qualcomm® Robotics RB3 Platform Linux User Guide

RB3 Platform Features and Use Cases

NOTE: Fast running functions will automatically have a loop
multiplier and the results will be normalized accordingly.

•

Execute the example as follows:
$ adb shell
# lib64_fastcv_test /data/fastcv_test_data/ -t 0 -l 1 -L 1 -m HW
FASTCV_PROFILE, CLOCKS: ARM cpu0: 1228800, cpu1: 1516800, cpu2: 1766400,
cpu3: 1766400
FASTCV_PROFILE,
cpu4: 825600, cpu5: 825600, cpu6: 825600,
cpu7: 825600
FASTCV_PROFILE,
QDSP clk : 939205026, bimc_clk: 0, snoc_clk: 0
FASTCV_PROFILE, PROFILING ORDER : REF, Venum, QDSP, QDSPw/oRem, GPU,
LowPower, Performance, CPUOffload, CPUPerformance,
FASTCV_PROFILE, FIT:(FeatureName=>FASTCV, Overall=>PASS)

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

53

5 Develop an application

To compile the C code to a binary file, install the Application SDK:
1. Download the Application SDK:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/c442d6970fde481d9f9c9622596f72d01350025057

2. Change to the sdk directory:
$ cd ROBOTICS-SDA845-LE-APP-SDK
$ ls
oecore-x86_64-aarch64-toolchain-nodistro.0.host.manifest
oecore-x86_64-aarch64-toolchain-nodistro.0.sh
oecore-x86_64-aarch64-toolchain-nodistro.0.target.manifest
oecore-x86_64-aarch64-toolchain-nodistro.0.testdata.json

3. Execute the oecore-x86_64-aarch64-toolchain-nodistro.0.sh command:
$ ./oecore-x86_ 64-aarch64-toolchain-nodistro.0.sh

4. To choose the default target directory, press Enter and type Y.
robot SDK installer version nodistro.0
======================================
Enter target directory for SDK (default: /usr/local/oecore-x86_64):
You are about to install the SDK to "/usr/local/oecore-x86_64".
Proceed[Y/n]? Y
Extracting SDK..................................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to
source the environment setup script e.g.
$ . /usr/local/oecore-x86_64/environment-setup-aarch64-oe-linux

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

54

Qualcomm® Robotics RB3 Platform Linux User Guide

Develop an application

$ . /usr/local/oecore-x86_64/environment-setup-armv7a-neon-oemllib32linux-gnueabi

•

Configure the system environment:
$ source /usr/local/oecore-x86_64/environment-setup-aarch64-oe-linux

•

Compile the command:
$ aarch64-oe-linux-gcc --sysroot=/usr/local/oecorex86_64/sysroots/aarch64-oe-linux -O2 -fexpensive-optimizations -frenameregisters -fomit-frame-pointer -Wl,-O1 -Wl,--hash-style=gnu -Wl,--asneeded test.c -o test

5.1 Hello RB3
Once the Application SDK is installed, the first RB3 Hello application can be installed..
1. Create a source file and edit:
$ vi Hello.c
#include 
#include 
int main(void){
printf("Hello RB3 !!!\n");
return 0;
}

2. Build and transfer the application
a. Build the application:
$ aarch64-oe-linux-gcc --sysroot=/usr/local/oecorex86_64/sysroots/aarch64-oe-linux -O2 -fexpensive-optimizations frename-registers -fomit-frame-pointer -Wl,-O1 -Wl,--hash-style=gnu
-Wl,--as-needed Hello.c
-o Hello

b. Connect to the PC via TYPE-C and ensure that the ADB port can be used. Transfer the
application:
$ adb push Hello /bin/

3. Execute the application:
$ adb shell
# chmod u+x /bin/Hello
# Hello

4. The terminal outputs the expected print information:
/ # Hello
Hello RB3!!!

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

55

Qualcomm® Robotics RB3 Platform Linux User Guide

Develop an application

5.2 Sensors
As mentioned in Section 4.8.4, the device supports five sensor types: accelerometer, gyroscope,
magnetometer, proximity, and light.

5.2.1 Accelerometer example
The following example code illustrates how to integrate the accelerometer with your development
environment. It demonstrates how to obtain sensor data and link library files at compile time.
1. Create a source file and edit:
$ vi get_accel_data.c
1 #include 
2 #include 
3 #include 
4 #include 
5 #include 
6 #include 
7 #include 
8 #include 
9 #include 
10 #include 
11 #include 
12
13 #define HZ_TO_NSEC(hz)
(1000000000LL/(hz))
14
15 extern struct sensors_module_t HAL_MODULE_INFO_SYM;
16
17 int find_sensor_by_name(char* sensor_name, struct sensor_t const*
list, const struct sensor_t **ret)
18 {
19
const struct sensor_t *list_p = list;
20
21
while( list_p->type) {
22
if(0 == strcmp( list_p->name,sensor_name)){
23
break;
24
}
25
list_p++;
26
}
27
28
//fprintf(stderr,"find_sensor_by_name %s \n",list_p->name);
29
*ret = list_p;
30
31
if ( list_p->type) {
32
return 0;
33
} else {
34
return -1;
35
}
36 }

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

56

Qualcomm® Robotics RB3 Platform Linux User Guide

Develop an application

37
38
39 int main( int argc, char * const argv[] )
40 {
41
char command;
42
struct sensors_event_t data[100];
43
int count,i,error,times = 100,sensor_count;
44
const struct sensor_t *sensor_to_use;
45
46
struct sensors_poll_device_1 *dev;
47
struct sensors_poll_device_t *dev_old;
48
struct sensor_t *list = NULL;
49
50
double sampling_rate_hz = 10;
51
int64_t sampling_rate_nsecs = sampling_rate_hz == 0 ? 0 :
(uint64_t) HZ_TO_NSEC(sampling_rate_hz);
52
double report_rate_hz = 10;
53
int64_t report_rate_nsecs = report_rate_hz == 0 ? 0 :
(uint64_t) HZ_TO_NSEC(report_rate_hz);
54
char* sensor_name = "bst_bma2x2 Accelerometer Wakeup";
55
56
//Open sensor hal module
57
if(0 != HAL_MODULE_INFO_SYM.common.methods->open( NULL,
SENSORS_HARDWARE_POLL, (hw_device_t**)&dev ))
58
{
59
fprintf(stderr,"Hal open failure\n");
60
exit(1);
61
}
62
63
dev_old = (struct sensors_poll_device_t*) dev;
64
65
// Get the sensors_list
66
sensor_count = HAL_MODULE_INFO_SYM.get_sensors_list( NULL,
((struct sensor_t const**)&list) );
67
if ( sensor_count == 0 )
68
{
69
fprintf(stderr,"ERROR: No sensors in the list");
70
dev->common.close( (hw_device_t*)dev );
71
exit(1);
72
}
73
74
//Find the sensor to use
75
error = find_sensor_by_name(sensor_name, list,
&sensor_to_use);
76
if ( error ) {
77
fprintf(stderr, "ERROR: sensor not found!");
78
exit(1);
79
}

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

57

Qualcomm® Robotics RB3 Platform Linux User Guide

Develop an application

80
81
//Batch the sensor
82
error = dev->batch( dev, sensor_to_use->handle, 0,
sampling_rate_nsecs, report_rate_nsecs );
83
if( error ) {
84
fprintf(stderr,"Error %d in batch\n", error );
85
exit(1);
86
}
87
88
//Active the sensor
89
error = dev->activate( dev_old, sensor_to_use->handle, true
);
90
if( error ) {
91
fprintf(stderr,"Error %d activating sensor\n", error
);
92
exit(1);
93
}
94
95
//Get and parse sensor data
96
while(times--){
97
count = 0;
98
memset(data,0,sizeof(data));
99
count = dev->poll( dev_old, data, 100 );
100
101
for( i = 0; i < count ; i++ ) {
102
printf("%s, %f, %f, %f, %f\n",
103
list[data[i].sensor-1].name,
104
data[i].data[0], data[i].data[1],
data[i].data[2], data[i].data[3]);
105
}
106
fflush(stdout);
107
}
108
109
fprintf(stderr, "Exiting...\n");
110
111
//DEACTIVATE the sensor
112
error = dev->activate( dev_old, sensor_to_use->handle, false
);
113
if( error ) {
114
fprintf(stderr,"Error %d deactivating sensor\n",
error );
115
exit(1);
116
}
117
//Close sensor hal module
118
dev->common.close( (hw_device_t*)dev_old );
119
return 0;
120 }

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

58

Qualcomm® Robotics RB3 Platform Linux User Guide

Develop an application

For details about the HAL sensor module, see:/usr/local/oecorex86_64/sysroots/aarch64-oe-linux/usr/include/sensors_hal.h

2. Build and transfer the application.
a. Edit the Makefile:
OS.exec = uname -s
OS ?= $(shell $(OS.exec))$(OS.exec:sh)
OS := $(OS)
PROG = get_accel_data
CFLAGS ?= -O2 -fexpensive-optimizations -frename-registers -fomitframe-pointer
CFLAGS += -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
CFLAGS += -D SNS_LE_QCS605
# Common library includes
LDLIBS = -lsensors.ssc
$(PROG): $(PROG).o
$(PROG).o: $(PROG).c $(HDR)
clean:
$(RM) $(PROG).o $(PROG)
sparse: $(PROG).c
$(SPARSE) $(CPPFLAGS) $(CFLAGS) $(SPARSEFLAGS) $^
.PHONY: clean

b. Build the application:
$ make

c. Connect the board to the host PC via Type C and ensure that the ADB port can be used.
Transfer the application:
$ adb push get_accel_data /bin/
Execute the application(Please make sure that SW5 of DIP_SW is
already open).
$ adb shell
# chmod u+x /bin/get_accel_data
# get_accel_data

3. Execute the application (ensure that SW5 of DIP_SW is open):
$ adb shell
# chmod u+x /bin/get_accel_data
# get_accel_data

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

59

Qualcomm® Robotics RB3 Platform Linux User Guide

Develop an application

4. The sensor data displays as shown:
bst_bma2x2
bst_bma2x2
bst_bma2x2
bst_bma2x2
bst_bma2x2

Accelerometer
Accelerometer
Accelerometer
Accelerometer
Accelerometer

Wakeup,
Wakeup,
Wakeup,
Wakeup,
Wakeup,

-0.459932,
-0.459932,
-0.459932,
-0.459932,
-0.459932,

0.382457,
0.369618,
0.373085,
0.378987,
0.383277,

10.080173
10.080173
10.080173
10.080173
10.080173

5.2.2 Other sensors
For other sensors, get the corresponding sensor data by modifying the variable sensor_name in
get_accel_data.c.
The name of sensor can be found using the sns_hal_batch -l command.
The correspondence table is as follows:
SW5
ON

OFF

Rev. A

Sensor

Accelerometer
Gyroscope
Magnetometer
Magnetometer
Pressure
Accelerometer
Gyroscope
Proximity
Light

Sensor_name
bst_bma2x2 Accelerometer Wakeup
BMG160 Gyroscope Wakeup
bosch_bmm150 Magnetometer Wakeup
ak0991x Magnetometer Wakeup
icp101xx Pressure Sensor Wakeup
icm4x6xx Accelerometer Wakeup
icm4x6xx Gyroscope Wakeup
ltr559 Proximity Sensor Wakeup
ltr559 Ambient Light Sensor Wakeup

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

60

6 Set Up the System SDK

The SDK in this chapter is used to compile the system image. The compiled image can be used
for the firmware update in Chapter 3.
1. Download the system SDK at:
https://thundercomm.s3-ap-northeast1.amazonaws.com/shop/doc/1544580412842651/2d2154597cc14cae894076b1d7d06e551372688432
build@ubuntu$ unzip ROBOTICS-SDA845-LE-SDK.zip
build@ubuntu$ cd ROBOTICS-SDA845-LE-SDK
build@ubuntu$ ./sync_and_build.sh

2. Generate the ROBOTICS-SDA845_CAFBUILDID_VXX directory after the script is
completed to confirm successful SDK installation and configuration:
build@ubuntu$ ls ROBOTICS-SDA845_CAFBUILDID_VXX/poky/build/tmpglibc/deploy/images/sda845-robot
sda845-cache.ext4
sda845-sysfs.ext4
sda845-usrfs.ext4
sda845-boot.img
sda845-persist.ext4
sda845-systemrw.ext4
vmlinux

6.1 Build the SDK
6.1.1 Build images
■

Build all images with following commands:
$ cd /apps_proc/poky
$ source build/conf/set_bb_env.sh
$ build-sda845-robot-image

6.1.2 Build kernel image
1. Before compiling, go to the poky directory. In the poky directory, execute the following
commands to configure the environment:
build@ubuntu$ source build/conf/set_bb_env.sh

2. After executing the command, the directory automatically becomes poky/build. Execute the
following commands to configure some environment variables:
build@ubuntu$ export MACHINE=sda845
build@ubuntu$ export DISTRO=robot

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

61

Qualcomm® Robotics RB3 Platform Linux User Guide

Set Up the System SDK

3. Ensure that the present work directory is poky/build. Compile the kernel image by executing
the following commands:
build@ubuntu$ bitbake -c cleansstate linux-msm
build@ubuntu$ bitbake linux-msm

The first command cleans the temporary compiling area. The second command compiles the
kernel image.
4. After compiling, the kernel image is located at:
$ poky/build/tmp-glibc/deploy/images/

6.1.3 Build rootfs image
1. Before compiling, go to the poky directory. In the poky directory, execute the following
commands to configure the environment:
build@ubuntu$ source build/conf/set_bb_env.sh

2. After executing the command, the directory automatically becomes poky/build. Execute the
following commands to configure some environment variables:
build@ubuntu$ export MACHINE=sda845
build@ubuntu$ export DISTRO=robot

3. Ensure that the present work directory is poky/build. Compile rootfs image by executing the
following commands:
build@ubuntu$ bitbake -c cleansstate machine-image
build@ubuntu$ bitbake machine-image

The first command cleans the temporary compiling area. The second command compiles the
rootfs image.
4. After compiling, the rootfs image is located at:
$ poky/build/tmp-glibc/deploy/images/

6.1.4 Add new module
Use clinfo to find out how to add an application to the file system.
1. Create a source file and edit:
$ cd apps_proc/poky/meta-qti-bsp/recipes-devtools/
$ mkdir clinfo
$ vi clinfo/clinfo_git.bb
SRC_URI = "https://github.com/Oblomov/clinfo/archive/2.2.18.04.06.zip"
SRC_URI[md5sum] = "863e4542a48d192203e47c7db34b9759"
SRC_URI[sha256sum] =
"9f438d3835f7a23049cc7d47df227c240ce65736c40b68f70eaf7cdd0114b7c2"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fd8857f774dfb0eefe1e80c8f9240a7e"
DEPENDS = "adreno glib-2.0 system-core"
PR = "r0"

Rev. A

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

62

Qualcomm® Robotics RB3 Platform Linux User Guide

Set Up the System SDK

PV = "2.2.18.04.06"
CPPFLAGS += " -I${RECIPE_SYSROOT}/usr/include"
CPPFLAGS += " -DLE_ENABLE"
LDFLAGS += " -L${RECIPE_SYSROOT}/usr/lib64"
LDFLAGS += " -lOpenCL"
do_install(){
install -d ${D}${bindir}/
install -m 0755 ${S}/clinfo ${D}${bindir}/
}
FILES_${PN} = "${bindir}/clinfo"

2. Build and transfer the application.
a. Build the application:
$
$
$
$
$

source build/conf/set_bb_env.sh
export MACHINE=sda845
export DISTRO=robot
bitbake -c cleanall clinfo
bitbake clinfo

b. Connect board to the host PC via Type C and ensure that the ADB port can be used.
Transfer the application:
$ adb push apps_proc/poky/build/tmp-glibc/work/aarch64-oelinux/clinfo/2.2.18.04.06-r0/image/usr/bin/clinfo /usr/bin

3. Execute the application:
$ adb shell
# chmod u+x /usr/bin/clinfo
# clinfo

4. The sensor data displays as shown:
Number of platforms
1
Platform Name
QUALCOMM
Snapdragon(TM)
Platform Vendor
QUALCOMM
Platform Version
OpenCL 2.0 QUALCOMM
build: commit #f437276 changeid # Date: 10/24/18 Wed Local Branch:
Remote Branch:
Platform Profile
FULL_PROFILE
Platform Extensions
Platform Name
Snapdragon(TM)
Number of devices
Device Name
Device Vendor
Device Vendor ID

Rev. A

QUALCOMM
1
QUALCOMM Adreno(TM)
QUALCOMM
0xbf4d3c4b

Confidential and Proprietary – Qualcomm Technologies, Inc.
MAY CONTAIN U.S. AND INTERNATIONAL EXPORT CONTROLLED INFORMATION

63



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Linearized                      : No
Page Count                      : 63
Language                        : en-US
Tagged PDF                      : Yes
XMP Toolkit                     : 3.1-701
Producer                        : Microsoft® Word for Office 365
Title                           : Fetch-and-Fill
Creator                         : Anthony, Scott
Creator Tool                    : Microsoft® Word for Office 365
Create Date                     : 2019:02:15 11:50:53-08:00
Modify Date                     : 2019:02:15 11:50:53-08:00
Document ID                     : uuid:83F9C13A-787F-4B47-BB41-E0A59055C324
Instance ID                     : uuid:83F9C13A-787F-4B47-BB41-E0A59055C324
Author                          : Anthony, Scott
EXIF Metadata provided by EXIF.tools

Navigation menu