Skip to main content

1 Product Introduction

ASR-D501 is an ARM-based single-board computer powered by the Qualcomm® Dragonwing™ QCS6490 platform.
Designed as a companion computer for drones, it combines low-power edge AI processing with rugged onboard memory and storage.
This document explains how to use ASR-D501 I/O with Ubuntu.

Model NameASR-D501-N1A1U
ProcessorQualcomm® QCS6490
AI Computing Power12 TOPS (NPU)
MemoryOnboard 8 GB LPDDR5
OS StorageOnboard 128 GB UFS
Operating SystemUbuntu 24.04-x07

1-1 Product Features​

  • Qualcomm QCS6490 with 8-core Kryo 670 CPU, Adreno 643 GPU, and up to 12 TOPS NPU
  • Onboard 8 GB LPDDR5 memory and 128 GB UFS storage
  • Extended operating temperature from -20°C to 70°C
  • Mini DisplayPort, 1x 2.5 GbE, 2x CAN FD, 2x USB Type-C, 2x I2C, 3x UART, and 5 x MIPI CSI
  • 1x M.2 Key-E and 1x M.2 Key-B expansion
  • Compact 100 x 60 mm form factor, 50g net weight without heatsink
  • Ubuntu support with compatible ROS2 and MAVLink, MAVROS, and MAVSDK workflows
  • Qualcomm® Trusted Execution Environment (TEE) v5.3 onboard security

1-2 Official Website​


2 Mechanical and Environmental

2-1 Layout and Sizes​

ASR-D501 single board.


ASR-D501 with heatsink.



2-2 Thermal Solution​

There is a passive heatsink in the package which could be secured to the board with four screws.
The working temperature of ASR-D501 is -20°C ~ 70°C (measured with 0.7 m/s airflow).
Remove the release paper from the thermal pads before installing the heatsink, then fasten the four screws as shown below.


There is an optional fansink for ASR-D501, which will connect FAN1 connector for power supply.


3 Hardware Interface Introduction

3-1 Switch and Jumper​

Please refer to the following image for the switch location.


SW2ONOFF
Pin1EDL Mode (for image flashing)Normal Boot Up
Pin2Auto Power OnPower On by Power Button

3-2 Connector Introduction​

Please refer to the following images for the I/O connectors. Pin definitions are available in the ASR-D501 User Manual.


NameDescription
DCIN1DC input connector
DP1Mini DisplayPort
USB0MicroUSB Connector for image flashing only
TYPEC1 / TYPEC2USB Type-C connectors
GPIO1GPIO connector
LAN_CN1LAN connector
CAM1-CAM5MIPI CSI camera connectors
COM1-COM3UART connectors
FP1Front-panel connector
FAN1Fan connector
M2B_CN1M.2 Key B connector
I2C1 / I2C2I2C connectors
DEBUG1Debug connector
CAN1 / CAN2CAN bus connectors
BAT1RTC battery connector
SD_CARD1SD card slot
M2E_CN1M.2 Key E connector
SIM1SIM card slot

4 Operating System

4-1 Image Download​

Refer to the BSP Launcher User Guide to download and install the BSP Launcher for obtaining ASR-D501 Ubuntu image.



4-2 Flashing Image​

Power off ASR-D501, set SW2 Pin1 to ON and power on for entering EDL mode, then connect the ASR-D501 Micro USB (USB0) to the host computer with a data-capable USB cable.
Follow the BSP Launcher User Guide to flash a pre-built image or image built from BSP into the ASR-D501.
After flashing done, cut off the power and set SW2 Pin1 back to OFF, power on again, ASR-D501 should boot into Ubuntu Desktop within 2 minutes.


4-3 BSP Download​

Image VersionRelease DateImage DownloadBSP DownloadComment
Ubuntu 24.04-x07 v1.0.02026-07-08DownloadDownloadkernel 6.8.0-1057

5 Operating Method

5-1 Account and Password​

The default account and password for ASR-D501 are ubuntu / ubuntu.
User can run the following commands to change the default root and user password.

$ sudo passwd root
$ sudo passwd ubuntu

5-2 USB Type-C Connectors​

Based on ASR-D501 hardware design, if the Micro USB (USB0) is connected to the host, the both USB Type-C will be disabled.
Please disconnect the Micro USB (USB0) to enable the USB Type-C (TYPEC1 and TYPEC2).


5-3 General-Purpose Input / Output (GPIO)​

ASR-D501 provides 8 pins 3.3V application GPIO signals. The GPIO pin definition is shown as below.


The following mapping applies to the optional GPIO cable that converts the onboard 10-pin GPIO1 header to a DB9 connector.
The onboard GPIO1 connector also provides a 3.3V supply pin, but the DB9 mapping below does not expose that supply.

DB9 PinSingle PinSYSFS PinChip, Line in GPIOD
1GND--
2GPIO_816163, 81
3GPIO_105453, 10
4GPIO_185533, 18
5GPIO_265613, 26
6GPIO_275623, 27
7GPIO_355703, 35
8GPIO_385733, 38
9GPIO_395743, 39

The following steps show how to control GPIOD.
First example is reading level value from GPIO_81, gpioget will set the GPIO pin to input.

$ sudo gpioget 3 81

Next example is setting GPIO_81 to high or low level, =1 for high and =0 for low.

$ sudo gpioset 3 81=1
$ sudo gpioset 3 81=0

5-4 Ethernet Intel I226-V​

ASR-D501 provides a 2.5 GbE interface. Its name is enP1p1s0. Use the following command to check the link state.
If enP1p1s0 is not exist, please check its actual name by ip link command.

$ ip link show enP1p1s0

The LED behavior on the Ethernet cable is shown as below.

LEDStatusDescription
Link LEDGreen2.5 GbE link established
Link LEDOrange1 GbE link established
Activity LEDBlinkingNetwork traffic present

5-5 MIPI Camera​

ASR-D501 supports 5 MIPI CSI camera connectors. Camera modules, cable orientation, device-tree support, and camera index must match the selected BSP release. The camera connector mapping is shown as below.

Camera ConnectorReference Sensor
CAM1IMX577
CAM2IMX577
CAM3OV9282
CAM4OV9282 (IFE_LITE)
CAM5OV9282 (IFE_LITE)

5-5-1 Camera Pre-Setting​

Perform each preparation step before starting a camera pipeline.
These settings are not persistent after device reboot, run commands again for cameras after restarting the board.

1. Enter root shell​

$ sudo -s

2. Set the governor to performance​

# echo performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

3. Set CPU cluster frequency limits​

# for cpu in $(seq 0 7) ; do \
      cd /sys/devices/system/cpu/cpu${cpu}/cpufreq ; \
      cp scaling_max_freq scaling_min_freq ; \
  done
# for cpu in 0 4 7; do \
      cd /sys/devices/system/cpu/cpufreq/policy${cpu} ; \
      cp scaling_max_freq scaling_min_freq ; \
  done

4. Disable CamX system logging​

# echo "systemLogEnable=FALSE" > /var/cache/camera/camxoverridesettings.txt

5. Restart the camera service​

# systemctl restart cam-server

5-5-2 Camera Stream Commands​

Open a new terminal and run the following commands for viewing the video stream from cameras.
Camera indices are dynamically allocated based on active connections rather than physical port positions.
For instance, with an IMX577 on CAM1, its index is 0. If CAM2 is unused, it does not occupy an index, making the OV9282 on CAM3 be assigned index 1. Thus, if no IMX577 is connected, index 0 will be assigned to the first connected OV9282 camera among CAM3 through CAM5.

$ gst-launch-1.0 -e qtiqmmfsrc name=camsrc camera=0 ife-direct-stream=0 ! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 ! waylandsink

Please modify camera=0 to target camera index, other parameters can be modified to meet the requirement of the application.

ParameterDescription
gst-launch-1.0Starts a GStreamer pipeline from the command line.
-eSends an end-of-stream event when the pipeline is stopped, allowing resources to close cleanly.
qtiqmmfsrcQualcomm camera source provided by the ASR-D501 BSP.
name=camsrcAssigns the name camsrc to the camera source element.
camera=0 to 4Selects the BSP camera index corresponding to number of connected cameras (CAM1 through CAM5).
ife-direct-stream=0 or 1Disable / Enables the direct Image Front End stream required by CAM3 to CAM5 reference configuration.
!Connects one GStreamer element or capability filter to the next.
video/x-rawRequests uncompressed raw video output.
format=NV12Selects the NV12 YUV 4:2:0 pixel format.
width=1280,height=720Requests a 1280 x 720 output resolution.
framerate=30/1Requests 30 frames per second.
waylandsinkDisplays the video in the Ubuntu Wayland desktop session.

5-6 Universal Asynchronous Receiver / Transmitter (UART)​

ASR-D501 provides 3 UART interfaces. Run the following command to confirm the device nodes supplied by the installed BSP.

$ ls -l /dev/ttyHS*
PortUART Device
COM1/dev/ttyHS1
COM2/dev/ttyHS2
COM3/dev/ttyHS3

The onboard COM connectors expose 0-3.3V TTL UART.
They are not conventional RS-232 COM ports and must not be connected directly to equipment using RS-232 voltage levels, which can approach positive and negative 15 V. Use an appropriate external transceiver for RS-232, RS-422, or RS-485 equipment.
Follow the steps below to configure COM1 at 115200 baud.

$ sudo -s
# stty -F /dev/ttyHS1 115200 raw -echo -onlcr
# echo "COM1 send data" > /dev/ttyHS1
# cat /dev/ttyHS1

echo "data" > is using target port to send data.
cat is used to display received data on the terminal until press Ctrl+C to stop it.
Configure COM2 by replacing /dev/ttyHS1 with /dev/ttyHS2. For COM3, use /dev/ttyHS3.


5-7 Front Panel (FP)​

The Pin 1 PHONE_ON# signal is active-low and can be used to trigger a power-on event when it is shorted to ground.
The Pin 3 provides a 3.3V supply for powering an external LED, which indicates the power state of the board.



5-8 Wireless Communication Module​

5-8-1 5G Module​

ASR-D501 supports the AIW-356 (M.2 Key-B) 5G module. Insert the Nano-SIM before booting.
After the modem enumerates, use Ubuntu Settings or NetworkManager to configure the carrier connection.



5-8-2 Wi-Fi and Bluetooth Module​

ASR-D501 supports the AIW-170 (M.2 Key-E) Wi-Fi and Bluetooth module. The driver has been integrated into the Ubuntu image.
If AIW-170 is connected, use the following commands to verify the Wi-Fi interface and Bluetooth controller.

$ nmcli device wifi list
$ bluetoothctl show

5-9 Inter-Integrated Circuit (I2C)​

ASR-D501 provides 2 external I2C connectors and there are 2 internal I2C buses, the connector bus numbers shown as follows.

BusFunction
/dev/i2c-1Internal I2C
/dev/i2c-3Internal I2C
/dev/i2c-9I2C connector 1
/dev/i2c-2I2C connector 2

Scan the connected I2C devices by following command with the Bus index, for instance, 9 means I2C connector 1.

$ sudo i2cdetect -y -r 9

The bus number can differ by BSP release. Confirm it with sudo i2cdetect -l before using an external I2C device.


5-10 Debug UART​

The Debug UART is 0-3.3V TTL UART, must not be connected directly to equipment using RS-232 voltage levels.
Use the UART to RS-232 converter with DEBUG1 and below settings for accessing the maintenance console. The connector TX to host RX, connector RX to host TX, and GND to GND.

SettingValue
Baud Rate115200
Data Bits8
Stop Bits1
ParityNone
Flow ControlNone

5-11 CANBUS​

ASR-D501 provides 2 CAN interfaces, can0 and can1. The hardware between 2 CAN devices will be CANH to CANH, CANL to CANL, GND to GND.


Install the CAN utility and run the following commands to set arbitration bitrate and data bitrate to the CAN bus.

$ sudo apt install -y can-utils
$ sudo ip link set can0 up type can bitrate 1000000 dbitrate 8000000 fd on
$ sudo ip link set can1 up type can bitrate 1000000 dbitrate 8000000 fd on

Receive data from CAN bus by candump command.

$ candump can1

Send data to CAN bus by cansend command. Below 2 examples indecate standard CAN message format and CAN-FD message format.

$ cansend can0 111FFFFF#aa.00.cc.aa.33.61.aa.ab
$ cansend can0 123##1AABBCCDDEEFF00112233445566778899

Another method, use cangen to generate random standard CAN messages, or add -f for random CAN-FD messages.

$ cangen can0
$ cangen -f can0

5-12 Micro SD Card​

Insert a microSD card to SD_CARD1, Ubuntu will mount it to /media/ubuntu/ automatically, check it by lsblk command.

$ lsblk

Remeber to unmount the MicroSD card before unplug it.

$ sudo umount /media/ubuntu/*