EDIT: on JollaPhone-2026 pactl set-sink-volume fix does not work as the DAC is not separate sink anymore but it is just port of default sink, anyway there is another way via alsamixer as described bellow.
On the Xperia10V or any other phone running SF up to 5.1.0.x:
create symlink if not exist (it does exist on 10ii by default so no need this step there):
with root perms (devel-su):
ln -s /etc/pulse/xpolicy.conf.d/usbaudio.conf.disabled /etc/pulse/xpolicy.conf.d/usbaudio.conf
as defaultuser: systemctl --user restart pulseaudio.service
You will need nano (pkcon install nano) or any other editor …
A) Automatic (not only) Apple DAC silent volume fix after plug
Only for Jolla Phone 2026 (or perhaps all since SF 5.2): install alsa-utils - skip this step on SF5.1!
zypper install alsa-utils
On all versions:
devel-su nano /usr/local/bin/set-usb-dac-volume.sh
on SF5.1.x.x paste following:
#!/bin/sh
# !!! update sink name to yours - it contains unique serial number !!! `pactl list sinks|grep Name`
# someone could improve this to autotdetec script
sleep 2
pactl set-sink-volume alsa_output.usb-Apple__Inc._USB-C_to_3.5mm_Headphone_Jack_Adapter_DWH504202DRL1MQAF-00.analog-stereo 100%
for Apple DAC on the Jolla Phone 2026 (or all SF5.2+ devices) paste following:
#!/bin/sh
sleep 2
amixer -c 1 sset Headphone 100%
for other DACs you need to get mixer control name: amixer -c 1 on the first line is name what you will type into your set-usb-dac-volume.sh script
for Axagon Hi-Res DAC on the Jolla Phone 2026 (or all SF5.2+ devices) paste following:
#!/bin/sh
sleep 2
amixer -c 1 sset Speaker 100%
devel-su chmod +x /usr/local/bin/set-usb-dac-volume.sh
rest of steps are same for SF 5.1 and SF5.2…
devel-su nano /usr/local/bin/udev-create-flag
#!/bin/sh
# called by udev (runs as root)
# write a flag in the user's runtime dir so the user service notices it
USER="defaultuser"
FLAG="/run/user/$(id -u "$USER")/usb-dac-connected.flag"
mkdir -p "$(dirname "$FLAG")"
touch "$FLAG"
devel-su chmod +x /usr/local/bin/udev-create-flag
devel-su nano /etc/udev/rules.d/99-usb-dac-volume.rules
ACTION=="add", SUBSYSTEM=="sound", RUN+="/usr/local/bin/udev-create-flag"
ACTION=="change", SUBSYSTEM=="sound", RUN+="/usr/local/bin/udev-create-flag"
nano /home/defaultuser/.config/systemd/user/usb-dac-volume.path
[Unit]
Description=Watch for USB DAC flag
[Path]
PathExists=/run/user/%U/usb-dac-connected.flag
Unit=usb-dac-volume.service
[Install]
WantedBy=default.target
nano /home/defaultuser/.config/systemd/user/usb-dac-volume.service
[Unit]
Description=Run USB DAC volume script when flag present
After=default.target
[Service]
Type=oneshot
Environment=XDG_RUNTIME_DIR=%t
ExecStart=/usr/local/bin/set-usb-dac-volume.sh
ExecStartPost=/bin/rm -f /run/user/%U/usb-dac-connected.flag
TimeoutStartSec=60
[Install]
WantedBy=default.target
as root:
devel-su udevadm control --reload
now run as the defaultuser,
Reload user units:
systemctl --user daemon-reload
Enable and start the path unit so it watches for the flag:
systemctl --user enable --now usb-dac-volume.path
now it works perfectly, i just plug Apple USB-C to 3.5"Jack (Part number: MW2Q3ZM/A)
music is instantly routed to headphones and in two seconds the volume is without limit and then could be adjusted in UI/buttons 0% <=> true 100% like it is expected.
B) Manual (not only) Apple DAC silent volume fix by app launcher
create file /usr/local/bin/set-usb-dac-volume.sh as described in (A) automatic method and make it executable
create desktop entry:
nano /home/defaultuser/.local/share/applications/usb-dac-fix.desktop
[Desktop Entry]
Type=Application
Name=Apple DAC fix
Exec=/usr/local/bin/set-usb-dac-volume.sh
Icon=icon-m-browser-sound
[X-Sailjail]
Sandboxing=Disabled
