Qualcomm Robotics RB5/RB6 - Installing SDK Manager

From RidgeRun Developer Wiki


Index






In this section, you will find a guide on how to get the SDK Manager installed and ready to generate an Image for your Robotics RB5/RB6 board[1]. This section assumes that you already have the Thundercomm SDK Manager downloaded in your host computer, if not, please check our Downloading SDK section.

Thundercomm SDK 3.0.0

We have three main sections, the first one we describe the steps needed if you are working on a host computer with Ubuntu 18.04, next section describes the steps if instead your host computer has another Ubuntu version (16.04, 20.04), finally, last section are the common steps for either Ubuntu version.

On Ubuntu 18.04 Host

1. Install the needed libraries in the host computer:

sudo apt-get install coreutils fakechroot fakeroot kmod \
libc6-arm64-cross python2.7 qemu-user-static wget udev openssh-server

The required minimum package versions are:

  • coreutils 8.28
  • fakechroot 2.19
  • fakeroot 1.22
  • kmod 24-1ubuntu3.2
  • libc6-arm64-cross2.27
  • python 2.7.15
  • qemu-user-static 1:2.11+dfsg-1ubuntu7.28
  • wget 1.19.4
  • udev 237-3ubuntu10.42


2. From the TC-sdkmanager-x.x.x directory, install the SDK Manager with the following command:

Note
Make sure to replace the <tc-sdkmanager-vx.x.x_amd64.deb> with the version you downloaded.
sudo dpkg -i tc-sdkmanager-vx.x.x_amd64.deb

If you have downloaded the 3.0.0 version, you can use:

sudo dpkg -i tc-sdkmanager-v3.0.0_amd64.deb


3. Launch the SDK Manager

sdkmanager


4. Go to section Setting up SDK Manager to continue with the setup of your SDK Manager.

On other Ubuntu Hosts(Ubuntu 16.04, 20.04)

1. Install the following packages:

sudo apt-get install qemu-user-static openssh-server udev -y


2. Download and install Docker from the following link.

3. Generate the Docker Image for Ubuntu 18.04

Note
This command can take up to 30min in a computer with Intel® Core™ i7-1065G7 CPU @ 1.30GHz × 8
Note
Do not forget the space and full stop at the end of the command: .
cd TC-sdkmanager-x.x.x/
sudo docker build -t ubuntu:18.04-sdkmanager .


4. To check if the Docker Image was generated successfully, you can run the following command and should see:

<ubuntu:18.04-sdkmanager>
docker images

After running the above command, you should see an output similar to the following:

REPOSITORY      TAG                IMAGE ID       CREATED         SIZE
ubuntu          18.04-sdkmanager   9be63766537a   6 days ago      556MB

Where the one with the TAG name 18.04-sdkmanager is the one of interest. Please have in mind that if you have more than one docker image, your output will have more options.

5. Create the Docker container. The container has the Ubuntu image we created previously:

Note
You can change the name of your container replacing sdkmanager_container with a name of your choice.
docker create --privileged -v /dev/:/dev -v /run/udev:/run/udev --name sdkmanager_container -p 36000:22 ubuntu:18.04-sdkmanager

To check if the docker container was created successfully you can run the following command:

docker container ls -a

And the output should be similar to this:

CONTAINER ID   IMAGE                     COMMAND               CREATED         STATUS                     PORTS     NAMES
02cf200582b8   ubuntu:18.04-sdkmanager   "/usr/sbin/sshd -D"   2 seconds ago   Created                              sdkmanager_container


6. Now that our docker is created, we can start it. You can run this command every time you need to start your docker container again.

docker start sdkmanager_container

To check if everything went fine, you can run the following command:

docker container ls -a

Now the status of the container should say Up.

CONTAINER ID   IMAGE                     COMMAND               CREATED         STATUS                     PORTS                                     NAMES
02cf200582b8   ubuntu:18.04-sdkmanager   "/usr/sbin/sshd -D"   5 minutes ago   Up 13 seconds              0.0.0.0:36000->22/tcp, :::36000->22/tcp   sdkmanager_container


7. Now that our docker container is ready, we can launch the SDK Manager. For this, we will use the following command that will execute the sdkmanager inside the container:

sudo docker exec -it sdkmanager_container sdkmanager

You should see something similar to this:

******************************************************************
Welcome to SDKmanager version 3.0.0
This software is designed for resource download/management.
You can repack system image and flash image builds
The full process of LU image generation takes at least 40 minutes, depending on the internet speed
You will need a valid Thundercomm user account to continue
******************************************************************


8. Go to section Setting up SDK Manager to continue with the setup of your SDK Manager.

Setting up SDK Manager

1. Provide Thundercomm login credentials, you should see something like this:

Credential Checking ...
Enter your Thundercomm username:
Enter your Thundercomm password:


If you do not have one, please register to Thundercomm in their official page.

2. Now, the SDK Manager will ask for a target directory for the Image resources. The default directory is

/root/

.

In case you want to change the path of installation, provide a another working directory. <be>

Note

If you are not working inside Docker, we suggest to specify another target directory instead of

/root/, like /home/$USER/
Note
When asked if you want to proceed, please enter "y" or "Y" if yes and press enter, since it is no set as default.


Enter absolute target directory for Image resources (overwrites existing files, default: /root/):
You are about to install the SDK to '/root/'. Proceed [Y/n]? y
Setting it up ... done


3. Choose a product. In this case we are choosing RB5 (option 1).

Choose a product
Enter 1 to use RB5, 2 to use RB6: 1


4. Choose an available platform for Robotics RB5 device. The LU platform is for an image based on Ubuntu. On the other hand, LE platform is an image based on Open Embedded. Both of them are based on Linux Kernel 4.19. The LU platform has an Ubuntu rootfs, the apt-get package manager and on-device compilation, while the LE platform is based on the Yocto build system and offers a toolchain for off target compilation. In this guide, we are using the LE platform option.

Note
If the product only supports single platform, the SDK Manager will automatically skip this step and go directly to the next one.
Choose a platform for Robotics RB5 device
Enter 1 to use LU platform, 2 to use LE platform:

5. Enter the number of available version for image repack. For this guide, we use the version QRB5165.UBUN.1.0-220711_debug for LU and QRB5165.LE.1.0-220721 for LE.

Checking current versions of release ...
Available versions:
1: QRB5165.x.x.x-xxxxxx
... ...
Select one number of available version ( 1 | 2 | 3 ...) to continue with:


6. The SDK is now set up and ready to be used. You should be able to see something similar to this if you chose LU platform:

Note
Type <help> to use the available options.
--------------------------------------------------------
SDK has been successfully set up and is ready to be used
Type 'help' for commands
--------------------------------------------------------
> help
commands:
help = Show usage help for LU platform
1 = Download LU resources and generate system.img with current release
2 = Flash full build (require system.img generation first)
q = exit sdk manager
>

If instead you chose LE platform, you should see something similar to this:

--------------------------------------------------------
SDK has been successfully set up and is ready to be used
Type 'help' for commands
--------------------------------------------------------
> help
commands:
help = Show usage help for LE platform
1 = Download LE resources
2 = Flash full build
3 = Download LE SDK toolchain
q = exit sdk manager
>

Thundercomm SDK 4.0.1

As of January 2024, Thundercomm released a new SDK version 4.0.1. This version can be installed on a Ubuntu 20.04 host. RidgeRun tested this SDK version to flash a LU2.0 image. Most of the steps are very similar to SDK 3.0.0, however, make sure to run the following commands (taken from the SDK's README) before launching the sdkmanager to avoid known issues:

sudo rm -rf /lib/ld-linux-aarch64.so.1
sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-2.31.so /lib/ld-linux-aarch64.so.1
sudo ln -sf /bin/bash /bin/sh
sudo dpkg -P qemu-user-static
wget http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu/qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb
sudo dpkg -i qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb
Note
in the SDK README there is a missing hyphen in the quemu-user-static name used for the wget that will cause a 404 Not Found error.

Known Issues

While testing Thundercomm's SDK version 4.0.1 we encountered a few issues and documented their solution in this section. The issues appeared when trying to install a LU 2.0 image using Ubuntu 20.04 on the host.

Missing file

Start generating system image...

/lib/ld-linux-aarch64.so.1: No such file or directory
THIRD_PARTY_TARGET_SOURCELIST: 
THIRD_PARTY_TARGET_SOURCELIST not set
/lib/ld-linux-aarch64.so.1: No such file or directory

Error happend: You may have encountered Network connection failed or a build Environment error
If an environment error, Please check your build environment.
If an Internet connection timeout. RETURN to MAIN MENU directly, run Step 1 again

Checking system.img ...
ls: cannot access '/home/jcaballero/devdirs/TC-sdkmanager-4.0.1/QRB5165.LU2.0_20231103.090618_debug/rootfs/*.ext4': No such file or directory

system image repack failed, check errors above

This happens because the sdk manager creates a symbolic link to ld 2.27 but Ubuntu 20 has ld 2.31 installed:

jcaballero@jcaballero-work:~/devdirs/TC-sdkmanager-4.0.1$ ls -alh /lib/ld-linux-aarch64.so.1
lrwxrwxrwx 1 root root 37 ene  8 16:22 /lib/ld-linux-aarch64.so.1 -> /usr/aarch64-linux-gnu/lib/ld-2.27.so
jcaballero@jcaballero-work:~/devdirs/TC-sdkmanager-4.0.1$ ls /usr/aarch64-linux-gnu/lib/ld*so
/usr/aarch64-linux-gnu/lib/ld-2.31.so

To avoid this issue run:

sudo rm -rf /lib/ld-linux-aarch64.so.1
sudo ln -sf /usr/aarch64-linux-gnu/lib/ld-2.31.so /lib/ld-linux-aarch64.so.1

Function not implemented

Start generating system image...

semop(1): encountered an error: Function not implemented
THIRD_PARTY_TARGET_SOURCELIST: 
THIRD_PARTY_TARGET_SOURCELIST not set
semop(1): encountered an error: Function not implemented

Error happend: You may have encountered Network connection failed or a build Environment error
If an environment error, Please check your build environment.
If an Internet connection timeout. RETURN to MAIN MENU directly, run Step 1 again

Checking system.img ...
ls: cannot access '/home/jcaballero/devdirs/TC-sdkmanager-4.0.1/QRB5165.LU2.0_20231103.090618_debug/rootfs/*.ext4': No such file or directory

system image repack failed, check errors above
>

To avoid this error, run the following:

sudo dpkg -P qemu-user-static
wget http://archive.ubuntu.com/ubuntu/pool/universe/q/qemu/qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb
sudo dpkg -i qemu-user-static_6.2+dfsg-2ubuntu6_amd64.deb

References

  1. Qualcomm® Robotics SDK Manager User Guide. Retrieved January 18, 2023, from [1]


Index