ARCH R

Audio

Speakers, headphones, USB, Bluetooth

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


Output paths

The PipeWire sinks you get depend on the devices the system detects: the internal speaker, a USB audio device or a connected Bluetooth device, for example. set-audio list prints the current list.

Switching between speaker and headphones also goes through an ALSA mixer control, and that control is specific to each device.

Choose an output

In archr-launcher, select the output device under Settings › Sound and display › Audio output, from the list of sinks set-audio list reports.


Volume

The volume buttons (VOL+ / VOL-) go through archr-levels, which sets the volume of the audio output on a decibel scale from 0 to 100. A tap moves 2 points and holding speeds it up. The level is saved as audio.volume in system.cfg and kept across reboots.

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

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.

Known case: the R36S clone V20 2551 needs it. Its stock DTB describes the audio exactly like other clones whose speaker works without it, so the overlay generator cannot pick it by itself: generate the overlay with Force simple audio routing 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.


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 Settings › Network › Bluetooth in archr-launcher (see Bluetooth). Once paired and connected, select the device in Settings › Sound and display › Audio output.

Caveats:

  • Latency: Bluetooth audio adds delay, which you may notice in games.
  • Reconnecting: if the speaker does not reconnect after sleep, open Settings › Network › Bluetooth, highlight it under Paired, and press A to connect.
  • Speaker and BT at the same time: not supported. Audio routing uses one sink at a time.

Per-emulator audio backend

The launcher session asks SDL for its PulseAudio backend. Each emulator can still pick its own backend, and the final routing can differ. RetroArch, for example, is set to alsathread in its retroarch.cfg.


Troubleshooting

Speakers crackle in heavy 3D games. This symptom has more than one possible cause. Check the kernel log for GPU regulator or clock errors and include the output in a bug report: dmesg | grep -iE 'vdd_logic|clk_gpu|mali'.

Audio stutters under load. A larger PipeWire quantum can help. Edit /storage/.config/pipewire/pipewire.conf.d/99-quantum.conf and put the options inside context.properties:

context.properties = {
    default.clock.quantum = 1024
    default.clock.min-quantum = 512
    default.clock.max-quantum = 2048
}

Restart PipeWire: systemctl restart pipewire pipewire-pulse.

HP detected but speakers stay on (or vice versa). Headphone detection depends on the device. The helper reads input events (SW_HEADPHONE_INSERT) and falls back to a GPIO; an extcon path is not universal. If plugging and unplugging does not switch the output, open a bug report with the device model.

On this page