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 wiringDetection 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 # HDMIThe setting is reset on next hotplug event — to make it sticky, edit /storage/.config/system.cfg → audio.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' HDMIUSB 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 → ALSAalsathread 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 = 2048Restart 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.