]> git.ipfire.org Git - thirdparty/shairport-sync.git/commitdiff
Update TROUBLESHOOTING.md
authorbboffey <boffeymail@gmail.com>
Tue, 23 Feb 2016 16:25:29 +0000 (16:25 +0000)
committerbboffey <boffeymail@gmail.com>
Tue, 23 Feb 2016 16:25:29 +0000 (16:25 +0000)
Added details of sound.conf buffer and period tweaks as a workaround for stuttering audio on certain USB DACs

TROUBLESHOOTING.md

index 63002362122a86f9b447b65d369cc901f25d9c8c..e29e9fd32a20ffa6eed3648b5da55c2cb91eae50 100644 (file)
@@ -1,6 +1,6 @@
 Troubleshooting
 -----
-The installation and setup of Shairport Sync is straightforward on recent Linux distributions. Issues can occasionally arise caused by problems elsewhere in the system, typically WiFi reception and/or the WiFi adapter settings, the network, the router, firewall settings.
+The installation and setup of Shairport Sync is straightforward on recent Linux distributions. Issues can occasionally arise caused by problems elsewhere in the system, typically WiFi reception and/or the WiFi adapter settings, the network, the router, firewall settings or some more esoteric audio interfaces.
 
 In this brief document will be listed some problems and some solutions.
 
@@ -55,3 +55,75 @@ You may have to change the IP adresses range depending on your own local network
 You can check UFW config by typing `sudo ufw status` in shell. Please make sure that UFW is active, especially if you have deactivated it previously for testing purpose.
 
 Run your song from your remote device. Enjoy !
+
+### Stuttering audio on certain USB DACs (such as the Creative Soundblaster MP3+)
+
+**Problem**
+When using a USB DAC on a Raspberry Pi audio plays fine through other methods (such as through mpd, mopidy, mplayer or aplay) but when streamed to Shairport Sync regular dropouts or stutters are heard.
+
+**Possible Cause**
+There is a suspicion (although this is not 100% confirmed) that this is a fun latency/timing issue related to a combination of
+- The Raspberry Pi's ethernet itself being a USB device resulting in shared bandwidth/interrupts with USB DACs
+- Shairport Sync continually checking the latency of the USB DAC to maintain synchronisation of audio
+- Quirky USB DACs (already known to be problematic on the Raspberry Pi more info available [here](https://www.raspberrypi.org/documentation/hardware/raspberrypi/usb/README.md#knownissues)
+For more discussion on this issue see [issue 167](https://github.com/mikebrady/shairport-sync/issues/167) or read on for the quick fix!
+
+**Solution**
+To get nice smooth audio first check the details of your USB DAC by either using 'aplay -l' which will give you output something like this:
+````
+**** List of PLAYBACK Hardware Devices ****
+card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
+  Subdevices: 8/8
+  Subdevice #0: subdevice #0
+  Subdevice #1: subdevice #1
+  Subdevice #2: subdevice #2
+  Subdevice #3: subdevice #3
+  Subdevice #4: subdevice #4
+  Subdevice #5: subdevice #5
+  Subdevice #6: subdevice #6
+  Subdevice #7: subdevice #7
+card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
+  Subdevices: 1/1
+  Subdevice #0: subdevice #0
+card 1: MP3 [Sound Blaster MP3+], device 0: USB Audio [USB Audio]
+  Subdevices: 0/1
+  Subdevice #0: subdevice #0
+````
+
+or look at your exisiting '/etc/asound.conf' file, which may look something like this
+
+````
+pcm.!default {
+    type hw
+    card 1
+}
+ctl.!default {
+    type hw
+    card 1
+}
+````
+The important information you want is the card number which in this case is 1.
+
+Now modify your 'etc/asound.conf' file (or create one if it doesn't exist) using the following template substituting the 'pcm "hw:1"' and 'card 1' sections with the card number of your device
+
+````
+pcm.!default {
+    type plug
+    slave.pcm {
+        type dmix
+        ipc_key 1024
+        slave {
+            pcm "hw:1"
+            rate 48000 
+            period_time 0
+            period_size 1920
+            buffer_size 19200
+        }
+    }
+}
+ctl.!default {
+    type hw
+    card 1
+}
+````
+Note that some distributions (such as Volumio 2) don't use an asound.conf file by default, they instead specificy the hardware details directly in '/etc/shairport-sync.conf' and '/etc/mpd.conf' files so some more in depth modification is needed to override this.