SDAA320 June   2026 AM625 , AM625SIP , AM62D-Q1 , AM62L , AM62P

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1 Introduction
    1. 1.1 Key Highlights:
    2. 1.2 Basic Concepts:
      1. 1.2.1 PipeWire Server
      2. 1.2.2 PipeWire Clients
      3. 1.2.3 Session Manager
      4. 1.2.4 Nodes, Ports, and Links
    3. 1.3 PipeWire Main Components
  5. 2 Linux Audio Stack
  6. 3 Build SDK Image with PipeWire Support via Yocto
    1. 3.1 Steps to Run Yocto Builds on Host
      1. 3.1.1 Prerequisites (One-time setup)
    2. 3.2 Clone the oe-layer Setup
    3. 3.3 Download and Apply PipeWire Patches
    4. 3.4 Build PipeWire Image
  7. 4 Setup PipeWire on Sitara Devices
    1. 4.1 Hardware
      1. 4.1.1 SK-AM62B-P1
      2. 4.1.2 TMDS62LEVM
      3. 4.1.3 AUDIO-AM62D-EVM
    2. 4.2 Configure EVM Boot Mode
      1. 4.2.1 SK-AM62B-P1
      2. 4.2.2 TMDS62LEVM
      3. 4.2.3 AUDIO-AM62D-EVM
    3. 4.3 UART Console Setup
    4. 4.4 Flash the SD Card Image
    5. 4.5 Booting EVM with SD Card
  8. 5 Use PipeWire
    1. 5.1 Check Service Status
    2. 5.2 Enable PipeWire and Wireplumber
    3. 5.3 Start PipeWire and WirePlumber
    4. 5.4 General PipeWire commands
      1. 5.4.1 List All Objects Currently in PipeWire Server
      2. 5.4.2 List Only Nodes
      3. 5.4.3 Inspect Specific Object
    5. 5.5 Play and Record Stereo Audio
  9. 6 Configuration
    1. 6.1 Sink and Source Configuration
    2. 6.2 WirePlumber Configuration
  10. 7 Performance Benchmarks
    1. 7.1 Latency
    2. 7.2 CPU and Memory Usage
    3. 7.3 CPU and Memory Usage with Resampling
    4. 7.4 Observations
  11. 8 Summary
  12. 9 References
  13. 10IMPORTANT NOTICE AND DISCLAIMER

CPU and Memory Usage

This test measure CPU utilization and memory usage when multiple audio streams simultaneously use the audio server. Configure PulseAudio to work at latency closer to 143msec (PipeWire's latency) by changing PULSE_LATENCY_MSEC.

root@<machine>: export PULSE_LATENCY_MSEC=325

root@<machine>: pactl list sinks | grep Latency
Latency: 141702 usec, configured 142500 usec

In PulseAudio, latency cannot be set to an exact value using PULSE_LATENCY_MSEC, as it is treated as a target rather than a strict configuration. As a result, the observed latency can differ significantly from the requested value. The actual latency is determined by internal buffer fragmentation, hardware constraints, and scheduler behavior.

There are other methods to control latency as well example by directly modifying variables that affect latency such as fragments, fragments size, and so on.

See Pulseaudio documentation for more details.

Table 7-2 CPU Load (Same Latency)
Device Audio Server CPU Usage (average)
SK-AM62B-P1PulseAudioApproximately 5%
PipeWireApproximately 1%
TMDS62LEVMPulseAudioApproximately 6%
PipeWireApproximately 1%
AUDIO-AM62D-EVMPulseAudioApproximately 5%
PipeWireApproximately 1%
Table 7-3 Memory usage (Same Latency)
Device Audio Server Memory Usage (average)
SK-AM62B-P1PulseAudioApproximately 22500 KB
PipeWireApproximately 46570 KB (Wireplumber- ~22910KB)
TMDS62LEVMPulseAudioApproximately 25000 KB
PipeWireApproximately 33400 KB (Wireplumber- Approximately 30190KB)
AUDIO-AM62D-EVMPulseAudioApproximately 21600 KB
PipeWireApproximately 55000 KB (Wireplumber- Approximately 22990KB)
Note: PipeWire uses more memory due to its multi-process design, where the core daemon and WirePlumber session manager run independently. This separation provides fault isolation—if WirePlumber crashes, audio playback continues uninterrupted. PulseAudio's single-process design is more memory-efficient but less resilient to component failures.