Introduction

This is the Debian based BSP page for Sparrow Hawk.

Software Version List

Software Version
Debian 13
Linux kernel 6.18.20
U-Boot 2026.04
Arm Trusted Firmware 2.14.0

How to Startup

If you want to download OS image, please start 3.1.1. Downloading OS image.

If you want to build OS image, please start 3.1.2. Building OS image.

Preparation of the software

Downloading OS image

Download OS the image from GitHub

  • BSP: sparrow-hawk-debian-13-based-bsp.img.gz
    • For Linux users, you can download the OS image using the following command.
       wget -c https://github.com/rcar-community/kernel-apt-repository/releases/download/v2026-04-13/sparrow-hawk-debian-13-based-bsp.img.gz
      

Next, jump to 3.2. How to flash.

Building OS image

# You need to prepare docker envrionment on your Host PC
./build_image/build_with_docker_sparrow-hawk.sh <DEBIAN_VERSION>
ex.) ./build_image/build_with_docker_sparrow-hawk.sh 13

or

# Note: Build requirements can be confirmed from build_image/Dockerfile.
sudo ./build_image/build_debian_13_for_sparrow-hawk.sh <DEBIAN_VERSION>
ex.) sudo ./build_image/build_debian_13_for_sparrow-hawk.sh 13

You can find sparrow-hawk-debian-13-based-bsp.img.gz in the following directory.

ls ./build_image/

Next, jump to 3.2. How to flash.

How to flash

Flashing OS image into microSD card

Linux case

gzip -cd sparrow-hawk-debian-13-based-bsp.img.gz | sudo dd of=<device file> bs=1M status=progress && sync

ex) gzip -cd sparrow-hawk-debian-13-based-bsp.img.gz | sudo dd of=/dev/sdi bs=1M status=progress && sync

Windows case

  1. Extract gzip image using 7zip or similer software.
  2. Flash extracted image into microSD card using Etcher, win disk imager, and so on.

Flashing loader

Please update the loader (u-boot) using the loader file (flash.bin) included in the Debian OS image (rootfs).

  1. Insert microSD card prepared in Section 3.2.1 into microSD card slot (CN1 ), then power on the Sparrow Hawk board
  2. Update the QSPI memory from U-Boot as shown below, then reboot the system.
    load mmc 0:1 ${loadaddr} flash.bin && sf probe && sf update ${loadaddr} 0 ${filesize} && reset
    

Note:

  • If flashing fails and U-Boot no longer boots, please try the recovery procedure. Please see 4 of Tips in Sparrow Hawk page.

How to boot

  1. Ensure that the fan is properly installed.
  2. Insert the SD card into CN1 which is bottom of the board.
  3. Open terminal application and open serial device.
  4. Press SW1 to power on the board.
  5. After booting U-Boot, please press any key while showing “Hit any key to stop autoboot:” to enter U-Boot shell.
  6. Input the following command into U-Boot shell and press enter key. If you connect camera and/or display, please choice the following button and input command.
    setenv bootcmd "load mmc 0:1 0x58000000 /boot/fitImage && source ${loadaddr}:script"
    boot
    
  7. If command and environment is correct, Linux kernel log will output.
  8. Log in using the following login ID and password.
    • sparrow-hawk login: rcar
    • Password: rcar

 

To make the bootcmd set in 5 of 3.3. How to Boot persistent across reboots, run saveenv as shown below. After saving the environment, reboot the system once. From the next boot onward, this bootcmd will be used automatically, and you can skip 4 and 5 in 3.3. How to Boot.

saveenv
reset  # Execute this only the first time

How to Check Functions

Software support list

Function Status
CAN Supported
Ethernet Supported
Audio(Output/Input) Supported
Display Port Supported
GPIO Supported
I2C Supported
JTAG Supported
USB3.0 Supported
UART Supported
Thermal Supported
NVMe M.2 SSD Supported
Pi Camera Supported
Pi Display Supported
PCIe Endpoint Support planned (2026)
Pi Active Cooler Supported
GPU Support planned (Jul 2026)
AI Accelerator(CNN-IP) Support planned (2026)
Desktop(GUI) Support planned (Jul 2026)

Note:

  • “Supported”: Function succeeded in the simple test as below.
  • “Not supported”: No support plan.

CAN

Loop back

  1. Connect the following pins of CONN2
    Connect Pin1(CAN1L) - Pin2(CAN0L) and Pin5(CAN1H) - Pin6(CAN0H)
  • CAN
  1. Execute following commands on Linux:
sudo ip link set can0 up type can restart-ms 100 bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can1 up type can restart-ms 100 bitrate 1000000 dbitrate 5000000 fd on
candump can0 -n 16 &
cangen can1 -I i -L i -D i -f -n 16
candump can1 -n 16 &
cangen can0 -I i -L i -D i -f -n 16

Audio

  • Audio connector
    • Audio connector
    • Sparrow Hawk has two audio input ports. These signals are mixed on the IC and therefore handled as a single-channel input on the board.
  • Hardware setup
    • Connect headset/earphone/Speaker to CONN3 .
    • (if possible) Connect audio output like a smartphone to CONN4 .
      • Even if you don’t connect an audio output to CONN4 , you can test.
  • Software setup
    • Setup(Mix Aux in and Headset mic and setup audio output via CONN3 )
       amixer set "Headphone" 40%
       amixer set "Headphone" on
       amixer set "Mixout Left DAC Left" on
       amixer set "Mixout Right DAC Right" on
       amixer set "Aux" on
       amixer set "Aux" 80%
       amixer set "Mixin PGA" on
       amixer set "Mixin PGA" 50%
       amixer set "ADC" on
       amixer set "ADC" 80%
       amixer set "Mixin Left Aux Left" on
       amixer set "Mixin Right Aux Right" on
       amixer set "Mic 1" on
       amixer set "Mic 1" 80%
       amixer set "Mixin Left Mic 1" on
       amixer set "Mixin Right Mic 1" on
      
  • Test function
    1. Only Playback test (3 times) [CONN3 ]
      speaker-test -c 2 -l 3 -t wav -W /usr/share/sounds/alsa/
      
      • Playback
    2. Only Recording test (5sec) [CONN3 or CONN4 or ‘CONN3 and CONN4 ’]
      arecord -D hw:0,0 -t wav -d 5 -c 2 -r 48000 -f S16_LE > audio.wav
      
      • Recording
      • If you want to check audio.wav, execute following command.
        aplay audio.wav
        
    3. Recording and Playback test (5sec) [CONN3 or ‘CONN3 +CONN4 ’]
      arecord -D hw:0,0 -t wav -d 5 -c 2 -r 48000 -f S16_LE | aplay
      
      • Recording and Playback

GPIO

Toggle GP2_12(Pin11 on Pin Header)

  1. Connect LED or Oscilloscope to the board
    • ex) LED
    • LED
      • Please install a resistor to prevent damage to the LED. In the Connection image, it i s used a 1kΩ resistor.
  2. Execute following command
    python3 /usr/bin/example-apps/toggle_gpio_GP2_12.py
    

For more examples, please see also https://github.com/brgl/libgpiod/raw/refs/heads/master/bindings/python/examples

I2C

  • Detect I2C device
    i2cdetect -y -r 3
    i2cdetect -y -r 4
    

    Since I2C bus numbers 3 and 4 are assigned to the External IO, execute the above command.

    • I2C pin assignment
    • I2C pin
  • As an example, output result using Argon FAN HAT and setting ‘setenv bootcmd “load mmc 0:1 0x58000000 /boot/fitImage && bootm 0x58000000#default”’ when How to boot’s step6
    • i2cdetect: detect I2C devices on a bus
      rcar@sparrow-hawk:~# i2cdetect -y -r 3
        0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
      00:                         -- -- -- -- -- -- -- --
      10: -- -- -- -- -- -- -- -- -- -- 1a -- -- -- -- --
      20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      70: -- -- -- -- -- -- -- --
      rcar@sparrow-hawk:~# i2cdetect -y -r 4
        0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
      00:                         -- -- -- -- -- -- -- --
      10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
      70: -- -- -- -- -- -- -- --
      
    • i2cset: control FAN speed
      rcar@sparrow-hawk:# i2cset -y 3 0x01a 0x00 # 0%
      rcar@sparrow-hawk:# i2cset -y 3 0x01a 0x32 # 50%
      rcar@sparrow-hawk:# i2cset -y 3 0x01a 0x64 # 100%
      
  • Please search i2c-tools to use other commands(i2cdump, i2cget, i2cset, i2ctransfer).

USB3.0

  • With the power on, connect a USB flash drive to the USB6 port on the board. If “SuperSpeed” is displayed, the test is successful.

    • Output example(the upper USB6 port)
      [   74.051911] usb 2-3: new SuperSpeed USB device number 2 using xhci-pci-renesas
      [   74.078718] usb-storage 2-3:1.0: USB Mass Storage device detected
      [   74.080680] scsi host0: usb-storage 2-3:1.0
      [   75.104448] scsi 0:0:0:0: Direct-Access     SanDisk  Ultra Fit        1.00 PQ: 0 ANSI: 6
      [   75.117190] sd 0:0:0:0: [sda] 60088320 512-byte logical blocks: (30.8 GB/28.7 GiB)
      [   75.120450] sd 0:0:0:0: [sda] Write Protect is off
      [   75.122794] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
      [   75.176866]  sda: sda1
      [   75.177754] sd 0:0:0:0: [sda] Attached SCSI removable disk
      
    • Output example(the lower USB6 port)
      [  167.907865] usb 2-4: new SuperSpeed USB device number 3 using xhci-pci-renesas
      [  167.939390] usb-storage 2-4:1.0: USB Mass Storage device detected
      [  167.940850] scsi host0: usb-storage 2-4:1.0
      [  168.960666] scsi 0:0:0:0: Direct-Access     SanDisk  Ultra Fit        1.00 PQ: 0 ANSI: 6
      [  168.967661] sd 0:0:0:0: [sda] 60088320 512-byte logical blocks: (30.8 GB/28.7 GiB)
      [  168.971146] sd 0:0:0:0: [sda] Write Protect is off
      [  168.973359] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
      [  169.026988]  sda: sda1
      [  169.027913] sd 0:0:0:0: [sda] Attached SCSI removable disk
      

UART

Loop back

  1. Connect UART TX and RX(pin 8 and pin 10) on PinHeader.
  • UART
  1. Execute following commands:
    stty -F /dev/ttySC2 -echo
    cat /dev/ttySC2 &
    echo Hello > /dev/ttySC2 && sleep 1
    killall cat
    

Thermal

  • Check SoC temperature
    cat /sys/class/thermal/thermal_zone*/temp
    # ex.) 55000 # (Unit is millicelsius => 55.000 °C)
    
  • Thermal throttling

    CA76 core temp function
    ~ 68°C Normal operation
    68 ~ 100 °C CPU clock is limited
    100 °C System is shutdown forcely
  • Measurement point

    zone Measurement point
    thermal_zone0 around Cortex-R52
    thermal_zone1 around CNN
    thermal_zone2 around Cortex-A76
    thermal_zone3 around DDR-PHY

NVMe M.2 SSD

Note:

  • SATA M.2 SSD is not supported.

 

  • Insert the NVMe into CN5 before powering on.
  • The NVMe used for this test is the Samsung 970 EVO Plus.
    dmesg | grep nvme
    
    • Output example
      rcar@sparrow-hawk:~# dmesg | grep nvme
      [    4.738931] nvme nvme0: pci function 0000:01:00.0
      [    4.741086] nvme 0000:01:00.0: enabling device (0000 -> 0002)
      [    4.745462] nvme nvme0: missing or invalid SUBNQN field.
      [    4.747759] nvme nvme0: D3 entry latency set to 8 seconds
      [    4.769123] nvme nvme0: 4/0/0 default/read/poll queues
      [    4.783049]  nvme0n1: p1
      

Pi Camera

Note:

  • Currently, Raspberry Pi Camera V2 and Raspberry Pi Camera V3 is only supported.

Note:

  • The Raspberry Pi Camera v3 is currently under development on mainline Linux and libcamera, so at this stage the image may appear dark and features such as auto-focus are not yet supported. In addition, recognition may occasionally fail.

 

  1. Connect Raspberry Pi Camera V2 and/or Raspberry Pi Camera V3 to J1 and/or J2 connector.
  2. Change bootcmd variable on U-Boot shell referring 5 of 3.3. How to boot.
  3. Test camera
    • On-board test(Need to connect Display)

Pi Display

Note:

  • Please perform the following “1. Setup” without connecting the AC adapter to the board (USB1 ).

Note:

  • There is a risk of damaging the board or the display, so please connect them with great care.

 

  1. Setup
    • Connect Raspberry Pi Touch Display 2 cable to the J4 connector.
    • Connect the Power (red wire) to pin 2 of CN7 and the Ground (black wire) to pin 6 of CN7 .
    • Pi Display
  2. Change bootcmd variable on U-Boot shell referring 5 of 3.3. How to boot.
  3. Display will work correctly after changing above.

Pi Active Cooler

  • Connect Raspberry Pi Active Cooler to the J3 connector.

  • Pi Active Cooler

  • The thermal pad is not aligned with the R-Car V4H Chip. Please reposition the thermal pad to match the location of the R-Car V4H Chip.

  • thermal pad

    • The thermal pad application method is one example, ensure it is applied to adhere to at least the R-Car V4H chip and DRAM.
  • Manual control of fan speed

    sudo bash -c 'echo 2 > /sys/class/hwmon/hwmon4/pwm1_enable'
    sudo bash -c 'echo 150 > /sys/class/hwmon/hwmon4/pwm1'
    

    #1 ~ 255 is acceptable but low speeds are not recommended from thermal perspective.

Tips

  1. How to expand the rootfs
    • Please run the following command on your board. Rootfs is expanded to use whole storage.
      sudo expand-rootfs.sh
      sudo reboot
      

Known Issues

Category Function Description Resolution Date
SW PCIe Unstable operation has been observed with some M.2 SSD, and the root cause is currently under investigation. For reference: Stable operation has been confirmed with the Raspberry Pi SSD 256GB (RPI-SC1439). July 2026