Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No audio output on local devices (eg USB-speakers) #7

Open
marioscube opened this issue Aug 22, 2024 · 15 comments
Open

No audio output on local devices (eg USB-speakers) #7

marioscube opened this issue Aug 22, 2024 · 15 comments

Comments

@marioscube
Copy link

I tried owntone from a docker container on debian 12 bookworm xfce.

When I try to play music to airplay devices it works (listening to music now on my homepod mini).

When I try to play music to a locally attached sound device (soundsticks) owntone does not work.

My relevant setup in owntone.conf:

    alsa "hw:1" {
    # Name used in the speaker list. If not set, the card name will be used.
    nickname = "Soundsticks"

    # Mixer channel to use for volume control
    # If not set, PCM will be used if available, otherwise Master
    # mixer = "PCM"

    # Mixer device to use for volume control
    # If not set, the card name will be used
    # mixer_device = ""
    }

Error when enabling the sound device:

[2024-08-22 09:46:31] [ LOG] laudio: Cannot get card index for 1[2024-08-22 09:46:31] [ LOG] laudio: Failed to attach mixer 'hw:1': No such file or directory [2024-08-22 09:46:31] [ LOG] laudio: Could not open mixer 'hw:1' ('(null)') [2024-08-22 09:46:31] [ LOG] web: JSON api request failed with error code 500 (/api/outputs/0/toggle)
Screenshot 2024-08-22 at 11 46 45

When I use the same config on another computer with owntone installed without docker it works.

Is this a (owntone) docker limitation, a config error or something else?

@hacketiwack
Copy link
Collaborator

On the principle, containers isolate everything from the host. So this is normal that you can’t access this device from within the container.
As I never did such configuration myself, I don’t know on the spot how to do it.
But what you have to look for is to instruct docker or podman to get the device from the host.
I will investigate in the coming days. And if you find something in between, please comment on that work item.

@marioscube
Copy link
Author

Thank you for your quick response.

My dirty workaround is:

  • install docker shairport-sync
  • play audio with owntone to shairport sync (it works)

However i think it would be nice if owntone docker is able to play audio to the local speakers.

@hacketiwack
Copy link
Collaborator

Great!
The secret ingredient resides in this part of the docker command: --device /dev/snd

I need to test that and document it.

@marioscube
Copy link
Author

I thought so too, however when I tested this it did not work.
Maybe I did something not entirely right?

Please test it for yourself.

@marioscube
Copy link
Author

marioscube commented Aug 25, 2024

@hacketiwack

The owntone-container does not have a /dev/snd device.

The daapd (owntone) docker from linuxserver.io does have a /dev/snd device.

Adding --device /dev/snd to the startup script works.

Audio plays to my speakers without shairport-sync.

The volume control is not good though, much to loud!

@hacketiwack
Copy link
Collaborator

@marioscube to be sure to understand.
With the version of linuxserver.io it works when you add the --device /dev/snd to your configuration but the volume is too loud.
Did I understand correctly?
It would be interesting to understand which package is missing so that we can add it as well.

@marioscube
Copy link
Author

marioscube commented Aug 25, 2024

@hacketiwack

Indeed, if I add —device /dev/snd to the configuration of linuxserver.io daapd to start a docker container local ALSA audio works.

When using the owntone/daapd webinterface I have to slide the volume sliders almost to zero, otherwise my speakers (original usb Harman Kardon soundsticks) are way too loud. That is a problem with stairport-sync as wel. So possibly hardware specific. I need to test with other speakers.

@hacketiwack
Copy link
Collaborator

If you can verify which package needs to be added - I guess it is alsalib, plus others - then I could envision to add it.
However, I don't have any way to test it as my motherboard doesn't have audio output at the moment.

Regarding the volume, I guess you have to use the alsamixer command.

@marioscube
Copy link
Author

I will try tomorrow.

No need for an actual working sound card or output on your motherboard.

Just check inside the container if there is /dev/snd .

Alsamixer does not help enough.

@marioscube
Copy link
Author

@hacketiwack
alsa-lib-dev is not the difference (based on a quick compare of build files).

The only relevant difference I see at this moment (without building) is:
--disable-install_systemd \ # = in owntone / not in daapd

@marioscube
Copy link
Author

marioscube commented Aug 26, 2024

@hacketiwack

Error on building docker image of owntone with Dockerimage from repository.

OK fixed that error, my bad. Needed to read up on building a docker image.

@marioscube
Copy link
Author

marioscube commented Aug 26, 2024

..... interesting ......

I build owntone-docker from this github.

git clone https://github.com/owntone/owntone-container

docker build . -t owntone:test

then:

docker run -d \
  --name=owntone \
  --network=host \
  -e UID=1000 \
  -e GID=1000 \
  -v /home/debian/Docker/owntone/config:/etc/owntone \
  -v /home/debian/Docker/owntone/media:/srv/media \
  -v /home/debian/Docker/owntone/cache:/var/cache/owntone \
  --device /dev/snd  \
  owntone:test

check for /dev/snd :
docker exec -ti owntone sh
cd /dev/snd
exists OK! (not in owntone from docker.io/owntone/owntone:latest)

Edit owntone.conf

alsa "hw:1" {
        # Name used in the speaker list. If not set, the card name will be used.
        nickname = "Earplugs"

        # Mixer channel to use for volume control
        # If not set, PCM will be used if available, otherwise Master
  #      mixer = "PCM"

        # Mixer device to use for volume control
        # If not set, the card name will be used
  #      mixer_device = "PCM"
}

And it works ........ (for now).
After some (a lot of) fiddling with the settings in owntone.conf I have music through my earphones.

@hacketiwack
I would say build your own owntone docker-image and check if there is a /dev/snd device in the container. Then we can compare if needed.

@marioscube
Copy link
Author

marioscube commented Sep 3, 2024

Something to add:

If I make my own image based on the buildfile of this repo then I miss group 29 in the container.
Added with vi in /etc/group.
It seems to have an effect on the preferences of /dev/snd and if user owntone can access audio devices.

I need to test further.

Edit:
Either add a group with number 29 and user owntone as member or change the group of /dev/snd to audio and make sure user owntone is a member of audio.

@timbrd
Copy link

timbrd commented Oct 20, 2024

@hacketiwack

Indeed, if I add —device /dev/snd to the configuration of linuxserver.io daapd to start a docker container local ALSA audio works.

When using the owntone/daapd webinterface I have to slide the volume sliders almost to zero, otherwise my speakers (original usb Harman Kardon soundsticks) are way too loud. That is a problem with stairport-sync as wel. So possibly hardware specific. I need to test with other speakers.

Same here. I send the audio stream to an av receiver via airplay, but i have to turn the volume nearly down so that it is not too loud. Did you fix the issue with your soundsticks?

@marioscube
Copy link
Author

marioscube commented Oct 20, 2024

@timbrd

Sending audio to HomePod mini and/or AirPort Express I have no problem with needing to have to turn the volume down.

If I send the audio to my USB Soundsticks I need to turn the volume almost to 0. (actually 5)

I will check again tomorrow. No solutions.

Alsa should not interfere with airplay......
Pulseaudio neither, but check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants