Skip to main content

1. Get Started

1.1 Introduction

RUBIK Pi 3 is developed based on the Qualcomm QCS6490 processor, which features the Qualcomm® Kryo™ 670 CPU and the Qualcomm® Hexagon™ Processor with fused AI-accelerator architecture. The processor provides exceptional AI performance of 12 TOPS and offers the capability for various machine learning and AI application scenarios.

RUBIK Pi 3 is designed with a wide range of interfaces and functions, such as USB, camera, DisplayPort, HDMI, Ethernet, 3.5mm headphone jack, Wi-Fi, Bluetooth, M.2 connector, fan, RTC, and 40-pin LS connector. These features cater to diverse development needs while facilitating rapid development and efficient debugging.

RUBIK Pi 3 is compatible with various systems, such as Qualcomm Linux, Debian 12, Android 13, and Canonical Ubuntu for Qualcomm Platforms*, providing developers with the flexibility to meet their specific application needs.

*Canonical Ubuntu for Qualcomm Platforms is in the planning phase.

1.2 Specifications

CategoryRUBIK Pi 3 Feature
SoCQCS6490
Processor

1 x Cortex-A78 2.7 GHz

3 x Cortex-A78 2.4 GHz

4 x Cortex-A55 1.9 GHz
GPUAdreno 643 GPU @ 812 MHz
VPUAdreno 633 VPU
NPU12 TOPS
ISPSpectra ISP capable of on-device machine learning and machine processing
RAM8 GB LPDDR4x
ROM128 GB UFS 2.2
Wi-Fi & BluetoothWi-Fi 5 and Bluetooth 5.2
Camera2 x 4-lane MIPI CSI D-PHY connector
USB

1 x USB Type-C (USB 3.1 Gen1)

2 x USB Type-A (USB 3.0)

1 x USB Type-A (USB 2.0)
GPIO28 GPIO pins
Ethernet1000M
M.2 connectorM.2 Key M 2280 (2-lane PCIe 3.0)
Audio3.5mm headphone jack

1.3 Preparations

  • Computer running Windows 10 and later, or Ubuntu 18 – Ubuntu 22

  • RUBIK Pi 3

  • USB Type-A to Type-C cable

  • USB Type-A to Micro USB cable

  • Power supply (12V 3A Type-C)

1.3.1 Install drivers

1.3.1.1 Install drivers in a Windows environment

1.3.1.1.1 Install QUD
  1. Click https://github.com/rubikpi-ai/tools/blob/main/qud/qud.win.1.1_installer_10061.1.zip to download the installation package.

  2. Decompress qud.win.1.1_installer_10061.1.zip, run setup.exe as shown in the following figure, and click Next.

  3. Click Next.

  4. Select the I accept the terms in the license agreement option and click Next.

  5. Click Install.

  6. Click Finish to complete the driver installation.

1.3.1.1.2 Install Tflash
  1. Click https://github.com/rubikpi-ai/tools/blob/main/tflash/windows/TflashSetup_v1.2.0.4.exe to download the installation package.

  2. Run TflashSetup_v1.2.0.4.exe. Select the desired language and click OK.

  3. Select the location where you want to install Tflash and click Next.

  4. Click Next.

  1. Select the Create a desktop shortcut option and click Next.

  2. Click Install.

  1. Select the Launch Tflash option and click Finish.

  2. If the following error message appears, click Y. Follow the instructions to download the required installation package.

  3. Double-click the package you downloaded and click Install.

  4. Click Close to complete the installation.

  5. After the installation is completed, the following Tflash icon will appear on your desktop and in the Start menu.

1.3.1.2 Install drivers in an Ubuntu environment

1.3.1.2.1 Install Tflash
  1. Click https://github.com/rubikpi-ai/tools/blob/main/tflash/ubuntu/Thundercomm-tflash-v1.0.0.deb to download the installation package.

  2. Run the following command to install Tflash.

    sudo dpkg -i Thundercomm-tflash-v1.0.0.deb
  3. After the installation is completed, run the tflash command in the terminal. If the following message appears, it indicates that Tflash has been successfully installed:

1.3.2 Download images

RUBIK Pi 3 comes with a pre-installed Linux image (not the latest version) for a quick out-of-the-box experience. If you need the latest version of the Linux image or other operating system images, please visit the RUBIK Pi 3 official website to download.

Visit GitHub to download the Linux source code as needed.

  • Qualcomm Linux is a simplified desktop system based on Weston. It is suitable for developers who have Linux development experience and seek an in-depth development experience.

  • Debian 12: Based on GNOME 48, Debian 12 offers a complete set of system features, a rich software package library, more desktop applications, an enhanced user experience, and abundant development resources, making it ideal for developers who prioritize development convenience.

  • Android 13 is an enhanced system based on Google AOSP, offering an improved experience for developers working on Android applications.

1.3.3 Flash images

Before flashing images, enter flash mode (9008 mode) using one of the following methods:

  1. Press and hold the [EDL] button (No. 12 in the figure above).

  2. Connect the power supply into port 10, as shown in the figure below.

  1. Insert the Type-C cable into port 5 and wait three seconds to enter 9008 mode.

1.3.3.1 Flash images on a Windows system

1.3.3.1.1 Operation procedure
  1. Open the Tflash software. Make sure the device is in 9008 mode, as shown in the following figure:

  2. Select the Storage Type of the device to be flashed. For RUBIK Pi 3, select UFS for Storage Type.

  1. Select Reset After Download or Erase All Before Download as needed. Exercise caution when selecting Erase All Before Download.

    • Reset After Download: When this option is selected, the device will reboot automatically after image flashing is completed.

    • Erase All Before Download: When this option is selected, the data in each RUBIK Pi 3 UFS partition will be erased before flashing.

    note
    • The Erase All Before Download option takes effect only when the UFS partitions are the same before and after flashing.
    • Selecting Reset After Download or Erase All Before Download is not a mandatory action. You are not required to select one of them.
  2. Flash the FlatBuild image.

    1. Click Browse.

    2. Go to the FlatBuild directory, select Programmer File, and select prog_firehose_ddr.elf.

    3. Select all .xml files whose names start with "rawprogram".

    4. Select all .xml files whose names start with "patch".

      After the above settings, the related information will be displayed in the Tflash interface.

    5. Click Download to start flashing.

      note

      The flashing time varies from computer to computer. The green progress bar shows the flashing progress.

      After images are successfully flashed, the following logs will be displayed:

    • If you have selected Reset After Download, the board will reboot automatically after flashing.

    • If you have not selected Reset After Download, disconnect the power cable and USB cable to power off your RUBIK Pi 3, then reconnect the power cable and press the [PWR] button to start your RUBIK Pi 3.

1.3.3.1.2 Fix boot failures after flashing

If you fail to flash images or your RUBIK Pi 3 fails to boot up after flashing (the heartbeat LED does not blink), try to provision UFS.

warning

After provisioning, some information stored in the UFS, such as the SN and Ethernet MAC address, may be lost.

The operations to provision UFS are as follows:

  1. Enter 9008 mode.

  2. Select UFS for Storage Type and select Provision.

  3. Flash the provision file.

    1. Click Browse.

    2. Go to the provision directory in the image package, select prog_firehose_ddr.elf, and click Open.

    3. Select the provision_1_3.xml file and click Open.

    4. When "Load Image PATCH Successfully!" is displayed in the log, click Download to start provisioning.

      When the provisioning is completed, the following log is displayed.

      note

      After provisioning, remove and plug in the power supply and USB cable to restart your RUBIK Pi 3.

1.3.3.2 Flash images on an Ubuntu system

1.3.3.2.1 Operation procedure
  1. Go to the FlatBuild package directory.

  2. Run tflash -r.

    note

    Run the tflash -h command to view more parameters. -r in the above command indicates restarting your RUBIK Pi 3 after flashing is completed.

  3. When "Stop the ModemManager on your host PC and press Enter on your keyboard to continue..." appears on the screen, press Enter to flash images.

    If the following information is displayed after the tflash operation, it indicates that flashing was successful.

note

When running tflash on your PC, enter your PC login password.

  1. After successful image flashing by using the -r parameter, RUBIK Pi 3 automatically reboots.
1.3.3.2.2 Fix boot failures after flashing

If you fail to flash images or your RUBIK Pi 3 fails to boot up after flashing (the heartbeat LED does not blink), try to provision UFS.

warning

After provisioning, some information stored in the UFS, such as the SN and Ethernet MAC address, may be lost.

The operations to provision UFS are as follows:

  1. Enter 9008 mode.

  2. Go to the provision directory in the image package, run tflash -E, type "y" and press Enter.

  3. When "Stop the ModemManager on your host PC and press Enter on your keyboard to continue..." appears on the screen, press Enter to flash images.

If the following information is displayed after the tflash operation, it indicates that flashing was successful.

note

After provisioning, remove and plug in the power supply and USB cable to restart your RUBIK Pi 3.

1.4 Power-on

For older board versions, connect the power supply and press the [PWR] button to power on your RUBIK Pi 3. Board versions v02 and later support automatic power-on.

1.5 Power-off

Run the poweroff command to power off your RUBIK Pi 3.

1.6 Reboot

  • Run the reboot command to reboot your RUBIK Pi 3.

  • Press and hold the [PWR] button for 12 seconds to reboot your RUBIK Pi 3.

1.7 Serial port login

1.7.1 Windows

  1. Connect port 2 in the following figure to a computer via a serial cable.

  2. Open the computer settings page, check the corresponding COM port in Device Manager, and record the port.

  1. Download MobaXterm at https://mobaxterm.mobatek.net/ and decompress it.

  2. Open MobaXterm, select Session > Serial, and set the baud rate of the serial port to 115200.

  1. Click OK. Press Enter and type your login name and the default login password to log in:

    • Qualcomm Linux

      Login account: root
      Login password: rubikpi
      tip

      You can run the passwd command to change the default password. For example: passwd root.

1.7.2 Ubuntu

  1. Connect port 2 in the following figure to a computer via a serial cable.

  2. Run the following commands to install minicom:

    sudo apt update  
    sudo apt install minicom
  1. Run the following command to check the USB port:

    ls /dev/ttyACM*

  1. Run the following command to open minicom. Press Enter and type your login name and the default login password to log in:

    sudo minicom -D /dev/ttyACM0 -b 115200
  • Qualcomm Linux

    Login account: root
    Login password: rubikpi
    note

    You can run the passwd command to change the default password. For example: passwd root.

1.8 ADB login

1.8.1 Windows

1.8.1.1 Preparations

  1. Download the ADB and Fastboot installation package at https://developer.android.google.cn/tools/releases/platform-tools and decompress the package.

  2. Right-click This PC and choose Properties. Click Advanced and click Environment Variables. Alternatively, right-click This PC and choose Properties. In the search bar, type Advanced system settings and click Environment Variables.

  3. Under System variables, select Path and click Edit.

  4. Click New and type the path of decompressed platform-tools in Step 1. Click OK to save the environment variable.

1.8.1.2 ADB login

Press Win+R and type "cmd" to open the Windows terminal. Run the following commands to log in to your RUBIK Pi 3:

adb devices # Check if devices are connected  
adb root # Log in as root user
adb shell # Open the adb terminal

1.8.2 Ubuntu

1.8.2.1 Preparations

  1. Run the following command to install the ADB and Fastboot tools:

    sudo apt install git android-tools-adb android-tools-fastboot wget
  2. Update the udev rules file.

    1. Run the following command to open and modify the 51-qcom-usb.rules file.

      sudo vi /etc/udev/rules.d/51-qcom-usb.rules
    2. Add the following content to the file. If the following content already exists, skip this step.

      SUBSYSTEMS=="usb", ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="9008", MODE="0666", GROUP="plugdev"
    3. Run the following command to restart udev.

      sudo systemctl restart udev
      note

      If your RUBIK Pi 3 is already connected to the PC via USB, unplug and replug the USB cable so that the updated rules can take effect.

1.8.2.2 ADB login

Run the following commands in the terminal to log in to your RUBIK Pi 3:

adb devices # Check if devices are connected  
adb root # Log in as root user
adb shell # Open the adb terminal

1.9 SSH login

1.9.1 Windows

  1. Obtain the IP address.

    1. Log in to the backend of the router or use other IP scanning software to obtain the IP address of RUBIK Pi 3.

      note
      • The IP address may change depending on the network environment, and the device name of RUBIK Pi 3 is "rubikpi".
      • Alternatively, log in to RUBIK Pi 3 via ADB and run the ifconfig command to obtain the IP address.
    2. Press Win+R, type "cmd" in the pop-up window, and click OK.

    3. Run the ping <IP> command in the terminal. For example, the IP address of RUBIK Pi 3 is 10.9.5.59, run the following command and view the execution result.

      ping 10.9.5.59

  2. SSH login.

    1. Open MobaXterm.

    1. Click Session and select SSH in the pop-up window.

    2. Type the IP address of the RUBIK Pi 3 you want to log in to and click OK.

    3. Type the username, press Enter, type the password, and press Enter to log in to RUBIK Pi 3.

    4. The following information indicates that the login is successful.

1.9.2 Ubuntu

  1. Confirm the network connection.

    1. Log in to the backend of the router or use other IP scanning software to obtain the IP address of RUBIK Pi 3.

      note
      • The IP address may change depending on the network environment, and the device name of RUBIK Pi 3 is "rubikpi".
      • Alternatively, log in to RUBIK Pi 3 via ADB and run the ifconfig command to obtain the IP address.
    2. Run the ping <IP> command in the Ubuntu terminal. For example, the IP address of RUBIK Pi 3 is 10.9.5.59, run the following command and view the execution result.

      ping 10.9.5.59

  2. SSH login.

    1. Type the ssh <user>@<IP> command in the Ubuntu terminal and press Enter, as shown in the following figure. root indicates the role you want to log in as. 10.9.5.59 indicates the IP address of RUBIK Pi 3.

      ssh root@10.9.5.59
    2. Type the password and press Enter. The login succeeds.

1.10 File transfer

1.10.1 ADB

  • In the PC terminal, run the following command to upload the test.txt file to the /opt directory:

    adb push test.txt /opt
  • In the PC terminal, run the following command to download the test.txt file to your current directory:

    adb pull /opt/test.txt ./

1.10.2 SCP

To use Secure Copy Protocol (SCP) transfer, ensure your RUBIK Pi 3 is connected to the network. For example, if the IP address of RUBIK Pi 3 is 10.9.5.59, run the following commands:

tip

Run the ifconfig command on RUBIK Pi 3 to obtain its IP address.

  • In the PC terminal, run the following command to upload the test.txt file to the /opt directory:

    scp test.txt root@10.9.5.59:/opt
  • In the PC terminal, run the following command to download the test.txt file to your current directory:

    scp root@10.9.5.59:/opt/test.txt ./

1.11 Set up the Ubuntu development environment

1.11.1 Install software

  1. Run the following commands in the Ubuntu terminal to install the following software.

    sudo apt update
    sudo apt install repo gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool locales tar python-is-python3 file libxml-opml-simplegen-perl vim whiptail bc
    sudo apt-get install lib32stdc++6 libncurses5 checkinstall libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev curl git-lfs libncurses5-dev libncursesw5-dev
  2. Run the following commands in the Ubuntu terminal to install Python 3.10.2. In the Linux kernel packaging process, the python3.10 command is used. If you have installed Python 3.10.2 or later, skip this step.

    python --version
    # Download it in a directory of your choice
    wget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz
    tar -xvf Python-3.10.2.tgz
    cd Python-3.10.2
    ./configure --enable-optimizations
    make
    sudo make install
  1. Run the following command in the Ubuntu terminal to install pefile.

    sudo pip3.10 install pefile

1.11.2 Install cross-compilation tools

  1. On the Ubuntu host, visit the RUBIK Pi official website to download the cross-compilation toolchain for RUBIK Pi 3, then run the following command to decompress it.

    unzip toolchains_V1.1.0.zip
    note

    The cross-compilation tool is an eSDK built using the Yocto Project. The eSDK is a software package generated from the Qualcomm Linux image. It is installed on an Ubuntu host and provides a Yocto-based environment for application development.

    For details about eSDK compilation, refer to the Yocto Project User Guide section.

  • Run the following commands in the Ubuntu terminal to install the cross-compilation toolchain.

    cd toolchains
    chmod 755 qcom-wayland-x86_64-qcom-multimedia-image-armv8-2a-qcm6490-idp-toolchain-ext-1.3-ver.1.1.sh
    sh qcom-wayland-x86_64-qcom-multimedia-image-armv8-2a-qcm6490-idp-toolchain-ext-1.3-ver.1.1.sh
  1. Follow the prompts to install the cross-compilation environment, type the absolute path to the installation directory, and type "Y".

  2. After the installation is completed, go to the installation directory and run the following command to set up the cross-compilation environment.

    source environment-setup-armv8-2a-qcom-linux
    note

    The cross-compilation environment is only effective on the current terminal.

    If the following error occurs, type the unset LD_LIBRARY_PATH command and run the above command again.

  3. Run the following command in the Ubuntu terminal to check the version of the gcc toolchain. If the output is as follows, it indicates that the cross-compilation environment is set up successfully.

    aarch64-qcom-linux-gcc -v 

1.11.3 Use the cross-compilation tools

After setting up the cross-compilation environment by using the source environment-setup-armv8-2a-qcom-linux command as described in the previous section, use the following method to cross-compile the executable program of RUBIK Pi 3.

1.11.3.1 Use the Makefile build

The header file path sysroot must be set for cross-compilation. Use the --sysroot=dir parameter to specify the path.

aarch64-qcom-linux-gcc --sysroot=/home/zhy/rubikpi/sdk/sysroots/armv8-2a-qcom-linux
note

In the above command, the cross-compilation toolchain is installed at the /home/zhy/rubikpi/sdk directory of the PC. Change the directory to your actual installation directory.

1.11.3.2 Build the project using CMake

The following is an example using aarch64.cmake:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm64) #Set the target processor architecture

#Set sysroot
set(TOOLCHAIN_DIR /home/zhy/rubikpi/sdk/sysroots/armv8-2a-qcom-linux)
set(CMAKE_SYSROOT ${TOOLCHAIN_DIR}/sysroots/armv8-2a-qcom-linux)

#Set the cross-compiler
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/sysroots/x86_64-qcomsdk-linux/usr/bin/aarch64-qcom-linux/aarch64-qcom-linux-g++)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

When using CMake to build a project, create a CMakeLists.txt according to the actual situation of the project and run the following command to generate the Makefile.

$ cmake -DCMAKE_TOOLCHAIN_FILE=aarch64.cmake

1.12 Linux kernel

It is advisable to conduct Linux kernel development in an environment running Ubuntu 18 – Ubuntu 22.

1.12.1 Download code

git clone https://github.com/rubikpi-ai/linux.git
git submodule init
git submodule update

1.12.2 Compile code

  1. Set up the cross-compilation environment. For details, refer to 1.11.2. Install cross-compilation tools.

    source <your toolchains directory>/environment-setup-armv8-2a-qcom-linux
    note

    The cross-compilation environment is only effective on the current terminal.

    If the following error occurs, input the unset LD_LIBRARY_PATH command and run the above command again.

  2. Go to the kernel directory and compile the kernel.

    ./rubikpi_build.sh -a
    note
    • The first compilation takes a longer time based on different computer configurations. In most cases, it takes less than 20 minutes. Subsequent compilations are only performed on modified code.
    • The kernel directory can be cleaned up using the make clean command, after which all compilation artifacts and some configuration content will be deleted.
  3. Go to the kernel directory. Package the kernel and device tree image.

    ./rubikpi_build.sh -dp -ip  # Package image

    If the following error occurs when you package the image:

    Run the following command to modify the .mtoolsrc file, add mtools_skip_check=1, and try packaging the image again.

    vim ~/.mtoolsrc
    note

    In the update of March 2025, if non-official images of RUBIK Pi 3 are flashed, copy efi.bin in the corresponding image package to the rubikpi/tools/pack directory before packaging.

  4. Go to the kernel directory and flash the kernel and device tree image.

    ./rubikpi_flash.sh -d -i -r  # Flash
    note

    Before flashing, ensure that RUBIK Pi 3 has entered fastboot mode. Use one of the following methods to enter fastboot mode:

    • In the RUBIK Pi 3 terminal, input reboot bootloader. When RUBIK Pi 3 enters fastboot mode, the blue indicator lights up.

    • Press and hold the [PWR] button until the blue indicator lights up.

    For details about how to use the ./rubikpi_build.sh and ./rubikpi_flash.sh scripts, use the –h parameter.

1.12.3 Compile the ko driver module separately

  1. Create a Makefile as follows. Change KDIR to the actual kernel source code directory.

    obj-m += hello.o  
    KDIR:=/home/rubikpi/kernel-6.6
    PWD?=$(shell pwd)
    all:
    make -C $(KDIR) M=$(PWD) modules
    echo $(PWD)
    clean:
    rm -f *.ko *.o *.mod *.mod.o *.mod.c *.symvers *.order
  2. Create a hello.c file as follows:

    #include <linux/module.h>
    #include <linux/init.h>

    static int hello_init(void)
    {
    printk("hello RUBIK Pi!\n");
    return 0;
    }

    static void hello_exit(void)
    {
    printk("bye RUBIK Pi!\n");
    }

    module_init(hello_init);
    module_exit(hello_exit);

    MODULE_LICENSE("GPL");
    MODULE_VERSION("V1.0");
    MODULE_AUTHOR("RUBIK Pi");
  3. Run the following commands to compile the ko module:

    export ARCH=arm64  
    export CROSS_COMPILE=aarch64-qcom-linux-
    make
  4. Transfer hello.ko to your RUBIK Pi 3 using the ADB or SCP method.

  5. Run the following commands on your RUBIK Pi 3 to verify that the compilation artifact is valid.

    insmod hello.ko
    rmmod hello.ko
    dmesg | grep "RUBIK Pi"

1.12.4 Configure the kernel

Run the following commands to configure the Linux kernel using menuconfig:

cd linux  
make ARCH=arm64 menuconfig

After the configuration is completed, run the following commands to save the configuration.

make ARCH=arm64 savedefconfig  
cp defconfig ./arch/arm64/configs/rubik_pi3_defconfig

1.12.5 Directory analysis

After the git clone operation in 1.12.1. Download code, the RUBIK Pi 3 Linux repository is as shown in the following figure:

The major folders and files are described as follows:

NameDescription
archArchitecture-related directory
blockBlock device-related directory
certsCertification and signature-related directory
cryptoEncryption-related directory
documentationDocumentation-related directory
driversDriver-related directory
firmwareFirmware-related directory
fsFile system-related directory
includeHeader file-related directory
initKernel initialization-related directory
ipcInter-process communication-related directory
kernelDirectory of the kernel core code
libDirectory of kernel core library code
mmDirectory of memory management-related code
netDirectory of network protocol-related code
samplesDirectory of kernel compilation examples
scriptsDirectory of kernel compilation and configuration scripts
securitySecurity architecture-related directory
soundAudio system-related directory
toolsDirectory of kernel interaction tools
usrinitramfs-related directory, used to generate the initramfs
virtDirectory that provides Kernel-based Virtual Machine (KVM) technologies
rustRust-related directory
rubikpiRUBIK Pi 3 related directory for storing compilation tools
techpackQualcomm platform-related driver
.configConfiguration file for final kernel compilation
MakefileMain file used to compile the kernel
KbuildScript for configuring kernel settings
KconfigConfiguration file for the graphical configuration interface
MAINTAINERSList of maintainers
CREDITSLinux contributors
COPYINGCopyright statement
rubikpi_build.shCompilation and packaging scripts provided by RUBIK Pi 3
rubikpi_flash.shFlash scripts provided by RUBIK Pi 3

1.12.5.1 Device tree

The top-level device tree of RUBIK Pi 3 is rubikpi3.dts, which is located in the arch/arm64/boot/dts/qcom directory. It is recommended that all modifications to the device tree be made in this file.

In addition, during the development process, the sc7280.dtsi in the same level of directory may be frequently checked. sc7280.dtsi has nodes commonly used during the development process, including GPIO, SPI, I2C, UART, CPU, and GPU.