ARCH R

Audio

Speakers, headphones, USB, HDMI, Bluetooth

ArchR ships PipeWire + ALSA on top of the RK817 codec. Most things just work; this page documents the corner cases.


Output paths

Six possible audio sinks, picked automatically:

SPK     internal speakers (default if nothing else plugged)
HP      headphone jack (auto-detected via extcon)
HDMI    HDMI audio out (when an HDMI cable is connected)
USB     USB audio device (DAC, headset, gamepad with audio)
BT      Bluetooth audio sink (paired headphones / speaker)
SIMPLE  legacy fallback for clone boards with non-standard amplifier wiring

Detection happens in /etc/profile.d/050-audio at login + on hotplug via udev.

Force a path

amixer set 'Playback Path' SPK    # speakers
amixer set 'Playback Path' HP     # headphones
amixer set 'Playback Path' HDMI   # HDMI

The setting is reset on next hotplug event — to make it sticky, edit /storage/.config/system.cfgaudio.path=SPK|HP|HDMI.


Volume

Volume buttons (VOL+ / VOL-) drive the DAC mixer control directly. Range 0-255, step 2 % per press, persists across reboots.

amixer get DAC                  # current value, 0..255
amixer cset numid=N <value>     # set explicitly (find numid with `amixer controls`)

Max DAC level on RK817 is capped at 98 % to avoid speaker rattle on small clone speakers; this is set by the 050-audio_path quirk for RK3326 (Playback Mux adjustment).


SR variant ("force simple audio")

Some clone motherboards wire the amplifier to a different GPIO than the standard RK817 codec config expects. The Flasher offers an SRs toggle that swaps to a simpler amplifier path.

If your device plays everything through the headphone jack but the speakers are silent regardless of jack state, re-flash with SRs ON.

The setting lives in the panel DTBO file — it can't be changed at runtime; you have to re-flash with the right overlay or copy a different *_SRs.dtbo to /flash/overlays/mipi-panel.dtbo from a PC.


HDMI audio

Plug an HDMI cable; audio output switches automatically. The HDMI port is HDMI 1.4, supports stereo PCM at 48 kHz. No surround.

If the display works but audio stays on speakers:

aplay -L | grep -i hdmi
amixer set 'Playback Path' HDMI

USB audio

Most USB audio class 1.0 devices (the common DACs, headsets, capture devices) work plug-and-play. PipeWire picks them up via auto-link. Switch to USB output:

pactl list sinks short
pactl set-default-sink <name-of-usb-sink>

Bluetooth audio

Pair from ES → System Settings → Bluetooth → Pair Device. Once paired, audio routes there automatically.

Caveats:

  • Latency: A2DP is ~150 ms one-way — fine for music, noticeable in games. The RK3326 has no aptX-LL hardware.
  • Re-pairing: if the speaker doesn't reconnect after sleep, in ES BT menu → Manage Paired Devices → Reconnect.
  • Both speaker + BT simultaneously: not supported — pulseaudio routing is single-sink at a time.

Per-emulator audio backend

RetroArch                ALSA via "alsathread" (out of the way of the libretro frame loop)
PPSSPP standalone        SDL2 audio → PipeWire
Flycast standalone       SDL2 audio → PipeWire
Mupen64Plus standalone   SDL2 audio → ALSA
DraStic                  SDL2 audio → ALSA

alsathread for RetroArch trades a couple ms of latency for predictable scheduling — important on a CPU-bound A35.


Troubleshooting

Speakers crackle in heavy 3D games. Pre-v8 builds had a mali_kbase PM regulator unbalance that perturbed the audio clock domain. Update to v8+. If still happens: dmesg | grep -iE 'vdd_logic|clk_gpu|mali' — empty result is what you want.

Audio stutters under load. PipeWire quantum too low. Edit /storage/.config/pipewire/pipewire.conf.d/99-quantum.conf:

default.clock.quantum = 1024
default.clock.min-quantum = 512
default.clock.max-quantum = 2048

Restart PipeWire: systemctl --user restart pipewire.

Bluetooth audio choppy / dropouts. SBC bitpool too high. Force lower-quality: ES → BT → Manage Paired Devices → "Force SBC" toggle.

HP detected but speakers stay on (or vice versa). Extcon driver issue. Check cat /sys/class/extcon/*/state. Log a bug with this output if it doesn't change when you plug/unplug.

On this page