Back to All
Developer Blog

Same-day upstream Linux support for Snapdragon 8 Elite Gen 5 mobile platform

Sign up for Developer monthly newsletter-image

Sign up for Developer monthly newsletter

Join thousands of developers around the globe who receive latest news and updates from our monthly curated newsletter.

Sign up
Come for support, stay for the community-image

Come for support, stay for the community

Get support from experts, connect with like-minded developers, and access exclusive virtual events.

Join Developer Discord

Co-written with: Jingyi Wang, Prasad Kumpatla, Busanna Gari Vishnu Vardan, Vijay Kumar Tumati, Akhil P Oommen, Rahul kumar Janga, Xinzheng Long, Yongxing Mou.



-  Qualcomm Technologies posts initial support to Linux developer community for its newly announced Snapdragon 8 Elite Gen 5.

- Developers can review the open-source patches without registration and take advantage of advanced features in the new processor.

- Developer-first mindset and upstream readiness mean short upgrade cycles, comprehensive security integration and short time to market.

When you get new hardware and new features, you don’t want them sitting idle while you wait for patches to get upstreamed. Whether you develop for IoT, automotive, audio or mobile, when you get new features in a system-on-chip (SoC), you want to take advantage of them right now.

That’s why we’ve posted initial support for the Snapdragon 8 Elite Gen 5 Mobile Platform to Linux kernel mailing lists within a day of announcing the SoC. A Debian image is already available for you to boot, and the patches are out for review by the Linux developers community. You’ll find upstream support for the kernel and for Qualcomm Technologies subsystems like peripherals, multimedia, connectivity, storage and system state.

No delays, no hurry-up-and-wait, no registration. Just go get the new features.

But first, let us tell you what they are and how you can use them.

Which features has Qualcomm Technologies upstreamed for the Snapdragon 8 Elite Gen 5 Mobile Platform?

The patches we’ve sent out for review enable the following features on the Snapdragon 8 Elite Gen 5:

  • Qualcomm M and Qualcomm L cluster Qualcomm Oryon CPUs, including DVFS (dynamic voltage and frequency scaling) and power management
  • Clocks, power controllers, PMICs, last-level cache controller (LLCC), top-level mode multiplexer (TLMM), watchdog, temperature sensors (TSENS)
  • Low-speed I/O - I2C, SPI, RTC, buttons, LEDs
  • High-density storage - UFS 4.1, SDXC
  • High-speed peripherals - PCIe, USB2.0 and USB3.0
  • Qualcomm Hexagon DSP subsystems - Audio, compute
  • Communication - WCN7851 connectivity module enabled for Bluetooth and Wi-Fi
  • Crypto - Hardware crypto accelerator

See below for deeper dives on the following features:

  1. Video - Qualcomm Iris video processing unit (VPU) with codec and format support
  2. Audio - Analog and digital audio support with WSA8845 and WCD9395 codecs
  3. Camera - CSI Camera data path with CAMSS driver
  4. Display - Qualcomm Adreno display processing unit (DPU)
  5. Desktop - Debian demo
  6. Graphics – Adreno GPU
  7. Upstreaming status

How to implement and use the features

To help you get the most out of the Snapdragon 8 Elite Gen 5, the engineers at Qualcomm Technologies have composed the following application notes for several features.

1. Video - Iris video processing unit with codec and format support

Iris, a dedicated VPU on the SoC, is designed to offload computationally intensive video tasks from the main CPU. Developers can create high-performance, power-efficient multimedia applications with content up to 4K in resolution at up to 240 frames per second.

The main features of the VPU patches out for review include:

  • Hardware-accelerated video playback of H.264 (AVC), H.265 (HEVC) and VP9 video streams
  • Hardware-accelerated video recording into H.264 (AVC) and H.265 (HEVC) formats
  • Optimized pixel formats for both input and output to maximize hardware efficiency
Video playback examples – Generic GStreamer decompression

These commands illustrate how to use the Iris VPU for playback via GStreamer:

# General H.264 (AVC) Decompression
gst-launch-1.0 multifilesrc location=<INPUT_BITSTREAM_FILE> stop-index=0 ! parsebin ! v4l2h264dec ! video/x-raw ! videoconvert dither=none ! video/x-raw,format=I420 ! filesink location=<OUTPUT_YUV_FILE>
# General H.265 (HEVC) Decompression
gst-launch-1.0 multifilesrc location=<INPUT_BITSTREAM_FILE> stop-index=0 ! parsebin ! v4l2h265dec ! video/x-raw ! videoconvert dither=none ! video/x-raw,format=I420 ! filesink location=<OUTPUT_YUV_FILE>
# General VP9 Decompression
gst-launch-1.0 multifilesrc location=<INPUT_BITSTREAM_FILE> stop-index=0 ! parsebin ! vp9dec ! video/x-raw ! videoconvert dither=none ! video/x-raw,format=I420 ! videocodectestsink location=<OUTPUT_YUV_FILE>
Video recording examples – Generic GStreamer compression

These commands demonstrate how to use the VPU for compression:

# General H.264 (AVC) Compression
gst-launch-1.0 -v filesrc location=<INPUT_YUV_FILE> ! rawvideoparse format=nv12 width=<WIDTH> height=<HEIGHT> framerate=<FRAMERATE> ! v4l2h264enc capture-io-mode=4 output-io-mode=4 ! filesink sync=true location=<OUTPUT_BITSTREAM_FILE>
# General H.265 (HEVC) Compression
gst-launch-1.0 -v filesrc location=<INPUT_YUV_FILE> ! rawvideoparse format=nv12 width=<WIDTH> height=<HEIGHT> framerate=<FRAMERATE> ! v4l2h265enc capture-io-mode=4 output-io-mode=4 ! filesink sync=true location=<OUTPUT_BITSTREAM_FILE>

2. Audio - Analog and digital audio support with WSA8845 and WCD9395 codecs

The WSA8845 and WCD9395 codecs on the Snapdragon 8 Elite Gen 5 enable speaker playback and on-board mic recording. You can verify the audio capabilities of the recently upstreamed patches by executing the Linux standard commands aplay for playback and arecord for recording.

Below, you'll find the essential mixer controls to validate the audio.

For speaker playback:
amixer -c 0 cset name='SpkrLeft PA Volume' 20
amixer -c 0 cset name='SpkrRight PA Volume' 20
amixer -c 0 cset name='WSA RX0 MUX' AIF1_PB
amixer -c 0 cset name='WSA RX1 MUX' AIF1_PB
amixer -c 0 cset name='WSA_RX0 INP0' RX0
amixer -c 0 cset name='WSA_RX1 INP0' RX1
amixer -c 0 cset name='WSA_COMP1 Switch' 1
amixer -c 0 cset name='WSA_COMP2 Switch' 1
amixer -c 0 cset name='SpkrLeft WSA MODE' 1
amixer -c 0 cset name='SpkrLeft COMP Switch' 1
amixer -c 0 cset name='SpkrLeft BOOST Switch' 1
amixer -c 0 cset name='SpkrLeft DAC Switch' 1
amixer -c 0 cset name='SpkrRight WSA MODE' 1
amixer -c 0 cset name='SpkrRight COMP Switch' 1
amixer -c 0 cset name='SpkrRight BOOST Switch' 1
amixer -c 0 cset name='SpkrRight DAC Switch' 1
amixer -c 0 cset name='WSA_RX0 Digital Volume' 85
amixer -c 0 cset name='WSA_RX1 Digital Volume' 85
amixer -c 0 cset iface=MIXER,name='WSA_CODEC_DMA_RX_0 Audio Mixer MultiMedia1' 1
aplay -D plughw:0,0 <clip_location>
For microphone recording:
amixer -c 0 cset iface=MIXER,name='VA DMIC MUX0' 'DMIC0'
amixer -c 0 cset iface=MIXER,name='VA_AIF1_CAP Mixer DEC0' 1
amixer -c 0 cset iface=MIXER,name='VA_DEC0 Volume' 100
amixer -c 0 cset name='MultiMedia3 Mixer VA_CODEC_DMA_TX_0' 1
arecord -D plughw:0,2 -f S16_LE -c 1 -r 48000 record.wav
To register the soundcard

Use the topology file available at https://github.com/linux-msm/audioreach-topology/pull/31. Place the topology file in the target path: /usr/lib/firmware/qcom/kaanapali

3.  Camera - CSI Camera data path with CAMSS driver

The Snapdragon 8 Elite Gen 5 is a member of the Apollo family of camera architecture chipsets that support RAW data output from image sensors.

The Qualcomm V4L2 Camera Subsystem (CAMSS) driver is a Video for Linux 2 (V4L2) driver that supports the basic use cases of the image signal processor (ISP). Those include receiving the MIPI Camera Serial Interface 2 (CSI-2) signals from the sensors, decoding them, and then writing the RAW data to memory.

The CAMSS driver out for review supports the following sub-components:

  • CSIPHY – The CSI Physical layer manages the physical electrical signals sent by camera sensors. It supports the DPHY interface only.
  • CSID – The CSI Decoder decodes the CSI-2 encoded data transmitted by the sensors.
  • ISP – The front-end modules format the received data and enable the write operation to DDR memory through the RAW Dump Interface.

In addition, CAMSS hosts hardware cores called the Camera Control Interface (CCI) that are required for the I2C communication with the image sensors connected to the CCI bus.

Follow these steps to validate end-to-end flow:

  1. Enable the image sensor on your device.
  2. Connect the sensor's V4L2 remote endpoint to CSIPHY before starting the stream.
  3. You can find reference DTSI bindings, including those for the sensors connected to the CCI bus, at https://github.com/torvalds/linux/blob/master/Documentation/devicetree/bindings/i2c/qcom%2Ci2c-cci.yaml
  4. You can use any V4L2 application to validate the flow; internally, we have used the Yavta app. Run the following sample commands to test an image stream with format SRGGB10 and size 4208x3120:
/media/media-ctl --reset
/media/media-ctl -V '"msm_csiphy3":0[fmt:SRGGB10/4208x3120]'
/media/media-ctl -V '"msm_csid0":0[fmt:SRGGB10/4208x3120]'
/media/media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB10/4208x3120]'
/media/media-ctl -l '"msm_csiphy3":1->"msm_csid0":0[1]'
/media/media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'

sleep 2

/media/yavta  --capture=20 -I -n 5 -f SRGGB10P -s 4208x3120 -F  /dev/video0

Note that the sensor-to-CSIPHY connection is in the hardware. The commands shown above exercise the CSIPHY instance that is connected to the sensor.

4. Display - Adreno display processing unit (DPU)

The DPU provides hardware-accelerated image processing. It retrieves pixel data from memory and sends it to the display peripherals through standard interfaces.

The display system in the Snapdragon 8 Elite Gen 5 is based on the DPU 1595 architecture. Compared to the previous generation, it offers significant improvements in power efficiency and overall performance for a visually impressive display. The patches out for review enable an 8-bit display with:

  • up to 3200 × 1440
  • 120Hz refresh rate
  • DSC compression via DSI0

Support for DSI1 and DP over Type-C will be included in the next phase of development.

Verification

The device will automatically boot to the desktop when powered on. Or, you can execute DRM modetest to verify the display.

1.       To change permissions of the modetest application, run the following command:

chmod 0777 /usr/bin/modetest

2.       To view the connector IDs and modes, run the following command:

/usr/bin/modetest -c msm_drm > /opt/drm_mode.txt

3.       The output is stored in /opt/drm_mode.txt.

4.       To fetch the connector ID and mode name, use the relevant values from /opt/drm_mode.txt:

modetest -c msm_drm -s <Connector id>:<mode name>

5.       To launch the modetest application, run the following sample command using the connector ID and mode name retrieved from /opt/drm_mode.txt. For example:

/usr/bin/modetest -c drm -s 34:1440x3200 -v

6.       To kill the modetest application, select Ctrl + C.

5. Desktop - Debian demo

You can follow the steps below to boot a Debian 13 (Trixie) system on the Snapdragon 8 Elite Gen 5:

  1. Create the Debian Root Filesystem
    1. Use debootstrap to generate a Debian 13 (Trixie) root filesystem.
    2. Package the rootfs into a flashable image (e.g., ext4 format).
    3. Use the chroot command to install and configure desired services (such as SSH).
    4. Flash the Debian rootfs image to the designated partition.
    5. Pass the partition information for the Debian rootfs to the kernel via command line parameters such as root and rootfstype.
  2. Build the Ramdisk
    1. Create a custom ramdisk (for example, based on BusyBox) to load the required UFS drivers.
    2. Configure the ramdisk to parse rootfs-related parameters from the kernel command line to mount and switch to the actual Debian root filesystem.
    3. Transfer necessary kernel modules and firmware into the Debian rootfs to ensure proper functionality after the switch.
  3. Compile and Package the Kernel
    1. Download the kernel source code from https://git.codelinaro.org/clo/linux-kernel/kernel-qcom/.
    2. Compile the kernel and install the required kernel modules and firmware into the prepared ramdisk.
    3. Package the kernel image, device tree blob (DTB), and ramdisk into a boot.img.
    4. Configure the kernel command line appropriately.
    5. Boot the system using: fastboot boot boot.img. Alternatively, you may flash the boot.img to your device’s boot partition for persistent booting.

By following the steps above, you can successfully lunch the Debian 13 (Trixie) system on the Snapdragon 8 Elite Gen 5, as shown below: 

Figure 1: Debian system information on the Snapdragon 8 Elite Gen 5
Figure 1: Debian system information on the Snapdragon 8 Elite Gen 5

6. Graphics – Adreno GPU

Adreno, the GPU on the Snapdragon 8 Elite Gen 5, belongs to the A8x family of GPUs based on the new Slice architecture. Designed for the requirements of high-end graphics and compute workloads, the GPU is suitable for devices requiring extended battery life without compromising on performance.

Software stack

On top of currently upstreamed patches for review, we also have Adreno GPU along with the A8x hardware layer support patches available.

The upstream drm-msm kernel mode driver patch will soon be uploaded for upstream review. The Adreno user mode driver (UMD) from Qualcomm Technologies is available as a downloadable Debian package and provides Vulkan 1.4 API support as well as the necessary GPU-related firmware.

Running that software stack on the Adreno, the engineers at Qualcomm Technologies have successfully verified renderheadless, an offscreen Vulkan testcase from the SaschaWillems samples, as shown below.

Figure 2: Adreno - Rendered output of renderheadless testcase
Figure 2: Adreno - Rendered output of renderheadless testcase
To install the Adreno UMD driver

1.       Download the Adreno .deb package.

2.    Execute the following commands to install the package:

sudo apt update
sudo apt install ./qcom-adreno-0.1_arm64.deb

In case of dependency errors, add the --fix-broken argument to repair them.

3.       Once you have installed the package, reboot the device for the changes to take effect.

sudo reboot

7. Upstreaming status

We have already posted support for Snapdragon 8 Elite Gen 5 on Linux kernel mailing lists. To try it, you can easily sync up to a public branch we’ve created at https://git.codelinaro.org/clo/linux-kernel/kernel-qcom/-/tree/kaanapali?ref_type=heads.

Note that patches for Display are not yet available to Linux kernel mailing lists. Also, GPU device tree patches are not yet available to Linux kernel mailing lists. We will continue post the other feature support as well.

Your turn

Qualcomm Technologies has enabled public developer access – without any login requirements – to brand-new features within a day of announcing its Snapdragon 8 Elite Gen 5.

Posting Linux kernel patches upstream immediately after the announcement of a new SoC is no mean feat, and it’s an important milestone on our open-source journey. Our developer-first mindset at Qualcomm Technologies includes embracing open source, its upstream development model and its open standards, and removing as much friction as possible for developers like you.

So, take these features and run with them! Join our Developer Discord and let us know what you think.

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries ("Qualcomm"). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.

Snapdragon and Qualcomm branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries.

About the Author
Aiqun (Maria) Yu
Aiqun (Maria) YuSenior Staff Engineer/Manager, CSE QuIC APTech Linux Kernel
Qualcomm relentlessly innovates to deliver intelligent computing everywhere, helping the world tackle some of its most important challenges. Our leading-edge AI, high performance, low-power computing, and unrivaled connectivity deliver proven solutions that transform major industries. At Qualcomm, we are engineering human progress.

Stay connected

Get the latest Qualcomm and industry information delivered to your inbox.

Subscribe
Manage your subscription

© Qualcomm Technologies, Inc. and/or its affiliated companies.

Snapdragon and Qualcomm branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries. Qualcomm patented technologies are licensed by Qualcomm Incorporated.

Note: Certain services and materials may require you to accept additional terms and conditions before accessing or using those items.

References to "Qualcomm" may mean Qualcomm Incorporated, or subsidiaries or business units within the Qualcomm corporate structure, as applicable.

Qualcomm Incorporated includes our licensing business, QTL, and the vast majority of our patent portfolio. Qualcomm Technologies, Inc., a subsidiary of Qualcomm Incorporated, operates, along with its subsidiaries, substantially all of our engineering, research and development functions, and substantially all of our products and services businesses, including our QCT semiconductor business.

Materials that are as of a specific date, including but not limited to press releases, presentations, blog posts and webcasts, may have been superseded by subsequent events or disclosures.

Nothing in these materials is an offer to sell or license any of the services or materials referenced herein.