Unboxing the Qualcomm RB5 Robotics Kit
Tags: qualcomm, robotics, hardware
Published: 2021-04-19 00:49:49

---
title: Unboxing the Qualcomm RB5 Robotics Kit
published: true
description: Some first interactions with the Qualcomm RB5 Robotics Development Kit
tags: qualcomm, robotics, hardware
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ot6dq9jfjsyls6b3gti.jpeg
---

Today I'll be showing some of my very first interactions with a [Qualcomm RB5 Robotics Kit](https://developer.qualcomm.com/qualcomm-robotics-rb5-kit). In their words:

> The Qualcomm Robotics RB5 development kit combines the promise of 5G with the computing power for AI, deep learning, computer vision, 7-camera concurrency, rich multimedia and security

Inside the box, we get three parts:
1. The board itself,
2. A USB-C cable,
3. A power brick.

![Inside the box, there's the RB5 main board, a USB-C cable, and a power brick](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/380130wyh4vl598jy2xw.jpeg)
 
![RB5 main board, USB-C cable, and a power brick](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k1dpr0bhrt6qb9ru2ae4.jpeg)

The [bringup guide](https://developer.qualcomm.com/qualcomm-robotics-rb5-kit/quick-start-guide/qualcomm_robotics_rb5_development_kit_bring_up) tells us we'll need a Linux workstation, and a few utilities from the _Android_ SDK: `adb` & `fastboot`. In short, it looks like a familiar programming model:

1. Build device images on your local machine;
2. Deploy and run those images on the device.

I'm on a Mac right now, so I won't have access to the full toolset needed to prepare the images. However, I've got a working `adb` and `fastboot`, so can easily interact with the device. This will likely _continue_ to be my workflow, even after I get a Linux build host going in EC2.

Let's get the kit running. I connect the power brick, and then I connect the USB-C cable into my MacBook. After a bit, a green LED indicator lights up on the device:

![RB5 kit plugged in and powered up](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gfzdq9nqtaah2jzapc6y.jpeg)

At this point, I'm able to see the device via `adb`:

```console
$ adb devices
List of devices attached
ZTR10S1600CS	device
```

I can even login and probe for some details:
```console
$ adb shell
sh-4.4# 
```

The device is running Ubuntu 18.04.05:
```console
sh-4.4# lsb_release -a 
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.5 LTS
Release:	18.04
Codename:	bionic
```

The processor has 8 cores:
```console
sh-4.4# nproc 
8
```

It's an [`AArch64`](https://en.wikipedia.org/wiki/AArch64):
```console
sh-4.4# cat /proc/cpuinfo | grep ^Processor 
Processor	: AArch64 Processor rev 14 (aarch64)
```

```console
sh-4.4# uname -a 
Linux qrb5165-rb5 4.19.125 #1 SMP PREEMPT Sat Mar 20 11:48:10 CST 2021 aarch64 aarch64 aarch64 GNU/Linux
```

The board has 7650MB of memory:
```console
sh-4.4# free -m
              total        used        free      shared  buff/cache   available
Mem:           7650        1112        6058          12         478        6848
Swap:          3825           0        3825
```

There are a few USB devices on the board, an [AX88179](https://www.digchip.com/datasheets/3291810-ax88179-usb-3-0-to-10-100-1000m.html) ethernet controller, and a couple of USB hubs:

```console
sh-4.4# lsusb 
Bus 002 Device 003: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```

Not much on the PCI bus:
```console
sh-4.4# lspci 
00:00.0 PCI bridge: Qualcomm Device 010b (rev ff)
01:00.0 Unassigned class [ff00]: Qualcomm Device 1101 (rev ff)
```

Lots and lots of partitions:

```console
sh-4.4# mount 
/dev/sda7 on / type ext4 (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=2671320k,nr_inodes=667830,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/schedtune type cgroup (rw,nosuid,nodev,noexec,relatime,schedtune)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/debug type cgroup (rw,nosuid,nodev,noexec,relatime,debug)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
tmpfs on /var/volatile type tmpfs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sde9 on /dsp type ext4 (ro,nosuid,nodev,noexec,noatime,discard,noauto_da_alloc,data=ordered)
/dev/sde4 on /firmware type vfat (ro,nodev,noexec,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/sde5 on /bt_firmware type vfat (ro,nodev,noexec,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
```

Looks like a 128GB storage chip, split apart into different partitions:

```console
sh-4.4# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        99G  6.0G   93G   7% /
devtmpfs        2.6G     0  2.6G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G   12M  3.8G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
tmpfs           3.8G     0  3.8G   0% /var/volatile
/dev/sde9        59M   24M   34M  42% /dsp
/dev/sde4       395M   61M  335M  16% /firmware
/dev/sde5        64M  368K   64M   1% /bt_firmware
```

We've found *some* of the components in the [hardware spec sheet](https://developer.qualcomm.com/qualcomm-robotics-rb5-kit/hardware-reference-guide) so far, but just a few. Of particular interest, I'd like to locate some of the coprocessors (the "heterogeneous computing" bit):

1. Qualcomm Adreno 650 GPU
2. Qualcomm Hexagon DSP
3. Qualcomm Spectra 480 image processing
4. Adreno 665 VPU video encode/decode
5. Qualcomm Secure Processing Unit SPU240
6. Qualcomm Neural Processing unit NPU230

In an upcoming article, we'll start trying to exercise some of these components!