volumio / Volumio2

Volumio 2 - Audiophile Music Player
http://volumio.org
Other
1.37k stars 315 forks source link

Topping D50 DAC with Volumio in docker, wrong output format #2163

Closed maxdd closed 3 years ago

maxdd commented 3 years ago

Hi, i'm trying to use Volumio inside a docker. The host machine is Ubuntu 20.04 and the launching command is

docker run --restart=always -d \
      --name volumio \
      -e HOST=http://192.168.1.52:3000 \
      -p 3000:3000 \
      -v /media/ubuntu/E432F8DB32F8B420/Audio/:/var/lib/mpd/music/Audio/:ro \
      -v /home/ubuntu/Music/:/var/lib/mpd/music/Music/:ro \
      -v /home/ubuntu/docker/volumio/data/:/data \
      -v /dev/shm:/dev/shm \
      --device /dev/snd 
jbonjean/volumio

I'm not sure if /dev/shm is even required

Basically the DAC is recognized as D50 but there is no sound coming out

aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CX8200 Analog [CX8200 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: D50 [D50], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
(docker) root@804417d6d5d3:/dev# aplay -L
surround21
    2.1 Surround output to Front and Subwoofer speakers
surround40
    4.0 Surround output to Front and Rear speakers
surround41
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50
    5.0 Surround output to Front, Center and Rear speakers
surround51
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
default:CARD=PCH
    HDA Intel PCH, CX8200 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, CX8200 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    Front speakers
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=PCH,DEV=0
    HDA Intel PCH, HDMI 0
    HDMI Audio Output
hdmi:CARD=PCH,DEV=1
    HDA Intel PCH, HDMI 1
    HDMI Audio Output
hdmi:CARD=PCH,DEV=2
    HDA Intel PCH, HDMI 2
    HDMI Audio Output
hdmi:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 3
    HDMI Audio Output
hdmi:CARD=PCH,DEV=4
    HDA Intel PCH, HDMI 4
    HDMI Audio Output
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    Direct sample mixing device
dmix:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct sample mixing device
dmix:CARD=PCH,DEV=7
    HDA Intel PCH, HDMI 1
    Direct sample mixing device
dmix:CARD=PCH,DEV=8
    HDA Intel PCH, HDMI 2
    Direct sample mixing device
dmix:CARD=PCH,DEV=9
    HDA Intel PCH, HDMI 3
    Direct sample mixing device
dmix:CARD=PCH,DEV=10
    HDA Intel PCH, HDMI 4
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=7
    HDA Intel PCH, HDMI 1
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=8
    HDA Intel PCH, HDMI 2
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=9
    HDA Intel PCH, HDMI 3
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=10
    HDA Intel PCH, HDMI 4
    Direct sample snooping device
hw:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=7
    HDA Intel PCH, HDMI 1
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=8
    HDA Intel PCH, HDMI 2
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=9
    HDA Intel PCH, HDMI 3
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=10
    HDA Intel PCH, HDMI 4
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, CX8200 Analog
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=7
    HDA Intel PCH, HDMI 1
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=8
    HDA Intel PCH, HDMI 2
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=9
    HDA Intel PCH, HDMI 3
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=10
    HDA Intel PCH, HDMI 4
    Hardware device with all software conversions
usbstream:CARD=PCH
    HDA Intel PCH
    USB Stream Output
default:CARD=D50
    D50, USB Audio
    Default Audio Device
sysdefault:CARD=D50
    D50, USB Audio
    Default Audio Device
front:CARD=D50,DEV=0
    D50, USB Audio
    Front speakers
surround21:CARD=D50,DEV=0
    D50, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=D50,DEV=0
    D50, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=D50,DEV=0
    D50, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=D50,DEV=0
    D50, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=D50,DEV=0
    D50, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=D50,DEV=0
    D50, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=D50,DEV=0
    D50, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=D50,DEV=0
    D50, USB Audio
    Direct sample mixing device
dsnoop:CARD=D50,DEV=0
    D50, USB Audio
    Direct sample snooping device
hw:CARD=D50,DEV=0
    D50, USB Audio
    Direct hardware device without any conversions
plughw:CARD=D50,DEV=0
    D50, USB Audio
    Hardware device with all software conversions
usbstream:CARD=D50
    D50
    USB Stream Output

after killing pulseaudio on host (it was keeping the resource busy) with the command:

aplay -D default:CARD=D50 test.wav

i was able to reproduce a sound but not at the expected sample rate. Volumio is anyway not playing any sound.

maxdd commented 3 years ago

by using pulseaudio

version: '3.2'

services:
  volumio:
    image: jbonjean/volumio
    container_name: volumio
    restart: unless-stopped
    ports:
      - '3000:3000'
    volumes:
      - /media/ubuntu/E432F8DB32F8B420/Audio/:/var/lib/mpd/music/Audio/:ro
      - /home/ubuntu/Music/:/var/lib/mpd/music/Music/:ro
      - /home/ubuntu/docker/volumio/data/:/data
      - /run/user/1000/pulse:/pulse:ro
    environment:
      - HOST=http://192.168.1.52:3000
      - PULSE_SERVER=unix:/pulse/native
      - PULSE_COOKIE_DATA=home/ubuntu/.config/pulse/cookie
      - HOST_USER=1000:1000
      - AUDIO_OUTPUT=pulse
    devices:
      - /dev/snd:/dev/snd

i was able to make it work, is there a difference/reason? The only issue i'm facing is that the DAC is reporting PCM 44.1Khz or 48Khz no matter what kind of song i play. I've tried both DSD Direct as well as DoP with plenty DSD files but no luck. Is there anything else i might want to do on the docker configuration? If i play a 192Khz/24bit songs and use cat /proc/asound/D50/pcm0p/sub0/hw_params from my host machine the output is

access: MMAP_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 44100
buffer_size: 88200
maxdd commented 3 years ago

I'm also encountering plugin issues where i can't basically see any installable plugins nor i can manually install via volumio plugin install (installation is stuck at 10%) command. Any idea on this would be greatly appreciated

maxdd commented 3 years ago

Some news about pulseAudio docker setup, by adding the following entry in the host daemon config of pulseaudio

avoid-resampling = true

About flac they are reproduced at 192Khz consistently (352.8Khz was resampled to 44.1Khz though) About dsd instead i was able to play them but DSD64 was resampled to 44.1Khz PCM, DSD128 was resampled to 384Khz PCM and DSD256 was resampled to 384Khz PCM. At 384Khz a switching noise can be heard which is not that pleasant. My host pulseaudio version is currently 13.99.1

Still it would be plenty better to use ALSA directly bypassing pulseaudio especially because DSD are reproduced as DoP as far as i've understood. Any help would be greatly appreciated.

volumio commented 3 years ago

Sorry but docker is not officially supported, nor recommended (personally, I was never able to get sound out of it) We can't help on that sorry