mikebrady / shairport-sync

AirPlay and AirPlay 2 audio player
Other
7.29k stars 574 forks source link

Frequent Random Disconnects on RC9 #705

Closed exoqrtx closed 6 years ago

exoqrtx commented 6 years ago

I've been running 3.2d29 for sometime without any problems, but I recently started playing around with the RC7-RC9 since I really want to use the dbus interface (which is much better than the old remote control interface I managed to hack together). Unfortunately on all recent releases I've played with my connection keeps randomly dropping. It's always at the end of a song as far as I can tell, but sometimes I'll be able to listen for an hour or more without it dropping, while other times it's more like after every other song.

Looking at the log, the only thing I see that looks potentially anomalous is that it's showing "Connection X: TEARDOWN" when it drops (and I think only when it drops). In fact it looks like in most cases the song finishes, it starts sending the metadata for the next song and then it disconnects (showing a disconnect error on my phone when it happens).

For background I'm running this on an rPi3 running Arch Linux (Linux version 4.14.41-1-ARCH (builduser@leming) (gcc version 8.1.0 (GCC))) and generally streaming from an iPhone 7 (fully up to date iOS). Shairport-Sync version info: (3.2RC9-OpenSSL-Avahi-ALSA-soxr-convolution-metadata-dbus-mpris-sysconfdir:/etc). My rPi3 has a wired ethernet connection, but I'm streaming over WiFi from the iPhone.

shairport-sync.log shairport-sync.conf.log

mikebrady commented 6 years ago

Many thanks for the post. It's really rather peculiar, as the TEARDOWN looks as if it is somehow legitimate; it's as if something is triggering it. What is the source on the iPhone -- is it the Music app, or is it something else?

BTW, the drift and resync settings look very odd -- what happens if you set them back to normal values for the Pi (0.010 and 0.050 respectively)? It looks like there wouldn't be very much stuffing occurring anyway...

In any case, I'll try experimenting with these settings. Is there a good guide to installing Arch Linux on a Pi?

mikebrady commented 6 years ago

Okay, so I have pushed an update in the development branch, specifically to log the RTSP message that requests a TEARDOWN, if it exists. Would you be kind enough to install and run it please, and see if it captures anything. This is something like I get, with statistics on, a log verbosity of 2 and log_show_time_since_last_message set to "yes" for a normal TEARDOWN:

        0.000814680|MH Metadata stream processing end.
         0.734247804|MH Picture received, length 948602 bytes.
      -1.1,       0.0,       0.0,        2006,      0,      0,      0,      0,  24391,  261,  264
         2.182596188|Packet reception interval stats: mean, standard deviation and max for the last 2,500 packets in microseconds:     7979.0,     2086.1,    43530.0.
      -1.8,      27.6,      27.6,        3009,      0,      0,      0,      0,  24695,  261,  264
        11.539748149|pfls
         0.002834559|pffr
         0.619332906|Play status is "paused".
         1.545631274|prsm
         9.363490829|RTSP thread 2 received an RTSP Packet of type "TEARDOWN":
         0.000104895|  Type: "CSeq", content: "14"
         0.000032708|  Type: "Session", content: "1"
         0.000025729|  Type: "User-Agent", content: "iTunes/12.7.4 (Macintosh; OS X 10.13.4) (dt:1)"
         0.000029427|  Type: "Client-Instance", content: "F18FE780B35CFD8D"
         0.000026614|  Type: "DACP-ID", content: "F18FE780B35CFD8D"
         0.000086771|  Type: "Active-Remote", content: "528787980"
         0.000094426|Connection 2: TEARDOWN
Playback Stopped. Total playing time 00:00:43.
         0.000572703|Cancelling timing, control and audio threads
         0.001266812|Joining terminated threads.
         0.000054375|Timing thread terminated.
         0.000031874|Control thread terminated.
         0.000025365|Audio thread terminated.
         0.000023854|Freeing audio buffers and decoders.
         0.000755774|Connection 2: player thread terminated.
         0.000261040|pend
         0.000053437|RTSP thread 2: RTSP Response:
         0.000033072|  Type: "CSeq", content: "14"
         0.000025573|  Type: "Server", content: "AirTunes/105.1"
         0.000031041|  Type: "Connection", content: "close"
         2.019316832|Connection 2: RTSP thread terminated.

If you are getting a TEARDOWN request in these anomalous circumstances, that would be very interesting. If not, that would also be very interesting...

mikebrady commented 6 years ago

Actually I just pushed a slight change, so that at log verbosity 2, all RTSP messages except for a very common "OPTIONS" message are logged. IMHO it's not too noisy and should give a better overview of the supervisory messages going between the source and Shairport Sync.

exoqrtx commented 6 years ago

I've compiled and installed the latest development branch and I'll run it over today and send the logs. I also commented out the drift and resync settings. They were actually from before I had the rPi on a wired ethernet connection, having large values seemed to help offset some of the network problems I was having over WiFi (although even that may have just been a placebo).

On the phone I use either the iOS Music app or Amazon Music app. I think it was happening on both, but I know it was happening at least when using Amazon.

As for installing Arch on an rPi, I just followed the install guides here to get the initial install live and then just followed the normal guides at ArchWiki. I've been really happy with Arch on my rPi's, I've got it running on an original rPi, an rPi2 and the rPi3 in question here. It's generally rock solid and very minimal. On the original rPi I've also got shairport-sync running (although I don't need the remote control/dbus stuff there, so it's on the stable version). It's been running for probably close to 2 years with basically no maintenance other than just 'pacman -Syu' every 6 months or so with no problems. The rPi2 has been running Kodi and has also been quite stable and reliable.

mikebrady commented 6 years ago

Many thanks.

exoqrtx commented 6 years ago

I ran it all day today while I was working and I only had once disconnect, but I don't think it was related to the issue I described previously (log attached) since I didn't see a TEARDOWN in the log or have an error pop up on my phone like I was yesterday. Maybe it's playing hard to get, commenting out the drift and resync non-standard settings fixed it or some other change in the development branch cleared it up. I'll stick with the version I compiled from the development branch for the time being since it seems to be working pretty well over all, and if the problem recurs I'll send an updated log.

Thanks for you help! shairport-sync2.log

mikebrady commented 6 years ago

Many thanks for your troubleshooting efforts -- there's always something new to see and [try to] figure out. In the log, it looks like the source stopped sending packets of audio and Shairport Sync eventually gave up ("As Yeats almost said..."). Was the source the Amazon app?

exoqrtx commented 6 years ago

Yes it was the Amazon app. I would get that error occasionally, but never frequent enough for it to be bothersome.

mikebrady commented 6 years ago

Thanks. Unfortunately, I can't use the Amazon app in my country, so I can't really test it. [Update] Actually, I can use it, and am trying it out -- see below.

mikebrady commented 6 years ago

Actually, I can use the Amazon app, and have been using it on an iPhone 6 to a Raspberry Pi3B running Arch Linux and the latest development version of Shairport Sync. It works using the buil-in audio DAC (settings shown below) and also works for a Pimoroni PHAT DAC.

Linux alarmpi 4.14.43-1-ARCH #1 SMP Sun May 27 02:34:29 UTC 2018 armv7l GNU/Linux
3.2d56-mbedTLS-Avahi-ALSA-metadata-dbus-mpris-sysconfdir:/etc

Here is /boot/config.txt:

# See /boot/overlays/README for all available options

gpu_mem=64
initramfs initramfs-linux.img followkernel
device_tree_overlay=hifiberry-dac
device_tree_param=audio=on
device_tree_param=audio_pwm_mode=2

Here are the active settings in the /etc/shairport-sync.conf file -- all the others are commented out:

// General Settings
general =
{
    drift_tolerance_in_seconds = 0.008; // allow a timing error of this number of seconds of drift away from exact synchronisation before attempting to correct it
    volume_range_db = 50 ; // use this advanced setting to set the range, in dB, you want between the maximum volume and the minimum volume. Range is 30 to 150 dB. Leave it commented out to use mixer's native range.
    dbus_service_bus = "session"; // The Shairport Sync dbus interface, if selected at compilation, will appear
    mpris_service_bus = "session"; // The Shairport Sync mpris interface, if selected at compilation, will appear
};

// Advanced parameters for controlling how Shairport Sync runs a play session
sessioncontrol = 
{
    allow_session_interruption = "yes"; // set to "yes" to allow another device to interrupt Shairport Sync while it's playing from an existing audio source
    session_timeout = 20; // wait for this number of seconds after a source disappears before terminating the session and becoming available again.
};

// These are parameters for the "alsa" audio back end.
alsa =
{
    output_device = "hw:0"; // the name of the alsa output device. Use "alsamixer" or "aplay" to find out the names of devices, mixers, etc.
    mixer_control_name = "PCM"; // the name of the mixer to use to adjust output volume. If not specified, volume in adjusted in software.
};

metadata =
{
    enabled = "yes"; // set this to yes to get Shairport Sync to solicit metadata from the source and to pass it on via a pipe
    include_cover_art = "yes"; // set to "yes" to get Shairport Sync to solicit cover art from the source and pass it via the pipe. You must also set "enabled" to "yes".
};

// Diagnostic settings. These are for diagnostic and debugging only. Normally you sould leave them commented out
diagnostics =
{
    statistics = "yes"; // set to "yes" to print statistics in the log
    log_verbosity = 2; // "0" means no debug verbosity, "3" is most verbose.
    log_show_time_since_last_message = "yes"; // set this to yes if you want the time since the last debug message in the debug message -- seconds down to nanoseconds
};

So far, so good...

mikebrady commented 6 years ago

Here is a portion of the log where a track is started:

        30.203271818|New RTSP connection from [fe80::1c6a:9c6d:79ae:7e31]:51896 to self at [fe80::ba27:ebff:fe82:d087]:5000 on conversation thread 7.
         0.137962989|RTSP thread 7 received an RTSP Packet of type "ANNOUNCE":
         0.000051250|  Type: "Content-Length", content: "677"
         0.000020989|  Type: "Content-Type", content: "application/sdp"
         0.000016511|  Type: "CSeq", content: "2"
         0.000015052|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000017656|  Type: "Active-Remote", content: "2634483566"
         0.000014844|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000016979|Connection 7: ANNOUNCE
         0.087161660|Play connection from user agent "AirPlay/365.53" on RTSP conversation thread 7.
         0.000047447|AirPlay version 365 detected.
         0.000039635|RTSP thread 7: RTSP Response:
         0.000021875|  Type: "CSeq", content: "2"
         0.000016459|  Type: "Server", content: "AirTunes/105.1"
         0.011221383|RTSP thread 7 received an RTSP Packet of type "SETUP":
         0.000032188|  Type: "Transport", content: "RTP/AVP/UDP;unicast;mode=record;timing_port=58225;control_port=62273"
         0.000021874|  Type: "CSeq", content: "3"
         0.000015000|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000015052|  Type: "Active-Remote", content: "2634483566"
         0.000012656|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000022552|Connection 7: SETUP -- Active-Remote string seen: "2634483566".
         0.000027917|Connection 7: SETUP -- DACP-ID string seen: "55F10FF3F2B81189".
         0.000033698|Connection 7: SETUP -- Connection from fe80::1c6a:9c6d:79ae:7e31 to self at fe80::ba27:ebff:fe82:d087.
         0.000109634|RTSP thread 7: RTSP Response:
         0.000021771|  Type: "CSeq", content: "3"
         0.000017552|  Type: "Server", content: "AirTunes/105.1"
         0.000012187|  Type: "Transport", content: "RTP/AVP/UDP;unicast;interleaved=0-1;mode=record;control_port=6001;timing_port=6002;server_port=6003"
         0.000017292|  Type: "Session", content: "1"
         0.011212686|RTSP thread 7 received an RTSP Packet of type "RECORD":
         0.000030781|  Type: "CSeq", content: "4"
         0.000019635|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000018281|  Type: "Active-Remote", content: "2634483566"
         0.000018698|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000022135|Connection 7: RECORD
         0.000013959|pbeg
         0.000119530|RTSP thread 7: RTSP Response:
         0.000026094|  Type: "CSeq", content: "4"
         0.000016354|  Type: "Server", content: "AirTunes/105.1"
         0.000012291|  Type: "Audio-Latency", content: "11025"
         0.001387699|set_dacp_server_information set active-remote id to 2634483566.
sync error in milliseconds, net correction in ppm, corrections in ppm, total packets, missing packets, late packets, too late packets, resend requests, min DAC queue size, min buffer occupancy, max buffer occupancy
         0.021549284|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000090052|  Type: "Content-Length", content: "18"
         0.000034010|  Type: "Content-Type", content: "text/parameters"
         0.000039687|  Type: "CSeq", content: "5"
         0.000036510|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000037135|  Type: "Active-Remote", content: "2634483566"
         0.000037188|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000617860|RTSP thread 7: RTSP Response:
         0.000050833|  Type: "CSeq", content: "5"
         0.000036614|  Type: "Server", content: "AirTunes/105.1"
         0.077117092|RTSP thread 7 received an RTSP Packet of type "FLUSH":
         0.000082760|  Type: "RTP-Info", content: "seq=27620;rtptime=2839934409"
         0.000034270|  Type: "CSeq", content: "6"
         0.000029948|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000030312|  Type: "Active-Remote", content: "2634483566"
         0.000035261|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000078853|RTSP thread 7: RTSP Response:
         0.000037031|  Type: "CSeq", content: "6"
         0.000024636|  Type: "Server", content: "AirTunes/105.1"
         0.030119122|Resend interval for latency of 88200 frames is 31 frames.
         0.000108229|Hammerton Decoder used on encrypted audio.
         0.000339112|pffr
         0.704265683|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000104739|  Type: "RTP-Info", content: "rtptime=2839838325"
         0.000039739|  Type: "Content-Length", content: "95294"
         0.000036510|  Type: "Content-Type", content: "image/jpeg"
         0.000036927|  Type: "CSeq", content: "7"
         0.000029948|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000034895|  Type: "Active-Remote", content: "2634483566"
         0.000037865|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000098333|RTSP thread 7: RTSP Response:
         0.000033385|  Type: "CSeq", content: "7"
         0.000024322|  Type: "Server", content: "AirTunes/105.1"
         0.000072917|MH Picture received, length 95294 bytes.
         0.022152873|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000095937|  Type: "RTP-Info", content: "rtptime=2839874493"
         0.000034896|  Type: "Content-Length", content: "43"
         0.000031927|  Type: "Content-Type", content: "text/parameters"
         0.000029739|  Type: "CSeq", content: "8"
         0.000030208|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000029687|  Type: "Active-Remote", content: "2634483566"
         0.000031250|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000048698|RTSP thread 7: RTSP Response:
         0.000025937|  Type: "CSeq", content: "8"
         0.000029687|  Type: "Server", content: "AirTunes/105.1"
         0.011778568|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000079270|  Type: "RTP-Info", content: "rtptime=2839874493"
         0.000039271|  Type: "Content-Length", content: "175"
         0.000031875|  Type: "Content-Type", content: "application/x-dmap-tagged"
         0.000031197|  Type: "CSeq", content: "9"
         0.000029531|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000029948|  Type: "Active-Remote", content: "2634483566"
         0.000036823|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000079530|RTSP thread 7: RTSP Response:
         0.000030052|  Type: "CSeq", content: "9"
         0.000023490|  Type: "Server", content: "AirTunes/105.1"
         0.000020573|MH Metadata stream processing start.
         0.000079218|MH Item ID set to: "2932025473"
         0.000103072|MH Album name set to: "Caricamento..."
         0.000055885|MH Artist name set to: ""
         0.000063073|MH Composer set to: ""
         0.000063385|MH Genre set to: "Genere sconosciuto"
         0.000054843|MH Track name set to: "Mass for four voices, I Kyrie"
         0.012700593|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000084426|  Type: "RTP-Info", content: "rtptime=2839875197"
         0.000033437|  Type: "Content-Length", content: "143"
         0.000030938|  Type: "Content-Type", content: "application/x-dmap-tagged"
         0.000030572|  Type: "CSeq", content: "10"
         0.000030052|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000029688|  Type: "Active-Remote", content: "2634483566"
         0.000024947|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000051042|RTSP thread 7: RTSP Response:
         0.000032552|  Type: "CSeq", content: "10"
         0.000024791|  Type: "Server", content: "AirTunes/105.1"
         0.003088677|MH Metadata stream processing end.
         0.000144479|MH Metadata stream processing start.
         0.000066562|MH Item ID set to: "2932025473"
         0.000063437|MH Album name set to: "Caricamento..."
         0.000062760|MH Artist name set to: ""
         0.000056562|MH Composer set to: ""
         0.000059531|MH Genre set to: "Genere sconosciuto"
         0.000057916|MH Track name set to: "Mass for four voices, I Kyrie"
         0.013736888|MH Metadata stream processing end.
         0.187026465|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000108333|  Type: "RTP-Info", content: "rtptime=2839875197"
         0.000029218|  Type: "Content-Length", content: "95294"
         0.000036198|  Type: "Content-Type", content: "image/jpeg"
         0.000032343|  Type: "CSeq", content: "11"
         0.000031146|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000031094|  Type: "Active-Remote", content: "2634483566"
         0.000029635|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000098124|RTSP thread 7: RTSP Response:
         0.000053229|  Type: "CSeq", content: "11"
         0.000027604|  Type: "Server", content: "AirTunes/105.1"
         0.000093176|MH Picture received, length 95294 bytes.
         0.205888215|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000094739|  Type: "RTP-Info", content: "rtptime=2839892797"
         0.000034323|  Type: "Content-Length", content: "229"
         0.000035625|  Type: "Content-Type", content: "application/x-dmap-tagged"
         0.000032031|  Type: "CSeq", content: "12"
         0.000028749|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000030104|  Type: "Active-Remote", content: "2634483566"
         0.000030834|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000077499|RTSP thread 7: RTSP Response:
         0.000041250|  Type: "CSeq", content: "12"
         0.000027031|MH Metadata stream processing start.
         0.000006041|  Type: "Server", content: "AirTunes/105.1"
         0.000099948|MH Item ID set to: "3080536546"
         0.000127655|MH Album name set to: "William Byrd, Mass for four voices, Choral Music"
         0.000072968|MH Artist name set to: "Quink Vocal Ensemble"
         0.000061146|MH Composer set to: ""
         0.000058229|MH Genre set to: "Genere sconosciuto"
         0.000062030|MH Track name set to: "Mass for four voices, I Kyrie"
         0.018733313|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000075104|  Type: "RTP-Info", content: "rtptime=2839893853"
         0.000215259|  Type: "Content-Length", content: "43"
         0.000137239|  Type: "Content-Type", content: "text/parameters"
         0.000028697|  Type: "CSeq", content: "13"
         0.000135625|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000128749|  Type: "Active-Remote", content: "2634483566"
         0.000179738|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000192186|RTSP thread 7: RTSP Response:
         0.000021042|MH Metadata stream processing end.
         0.000035000|  Type: "CSeq", content: "13"
         0.000136145|  Type: "Server", content: "AirTunes/105.1"
         0.673146098|prsm
         0.983877836|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000101822|  Type: "RTP-Info", content: "rtptime=2839966365"
         0.000036615|  Type: "Content-Length", content: "43"
         0.000031093|  Type: "Content-Type", content: "text/parameters"
         0.000031198|  Type: "CSeq", content: "15"
         0.000028906|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000031250|  Type: "Active-Remote", content: "2634483566"
         0.000029947|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000070104|RTSP thread 7: RTSP Response:
         0.000029948|  Type: "CSeq", content: "15"
         0.000022968|  Type: "Server", content: "AirTunes/105.1"
      -2.8,      11.5,      23.0,        1003,      0,      0,      0,      0,   5784,  225,  232
      -3.2,       8.5,       8.5,        2006,      0,      0,      0,      0,   5776,  174,  232
        17.083543799|Packet reception interval stats: mean, standard deviation and max for the last 2,500 packets in microseconds:     7970.0,    22456.9,   560762.0.
      -2.8,       5.7,       5.7,        3009,      0,      0,      0,      0,   5809,  162,  232
      -1.7,     -14.2,      14.2,        4012,      0,      0,      0,      0,   5803,  225,  232

and here is where it is stopped:

        19.949401378|Packet reception interval stats: mean, standard deviation and max for the last 2,500 packets in microseconds:     7979.1,    13261.4,   314547.0.
         1.547954178|RTSP thread 7 received an RTSP Packet of type "SET_PARAMETER":
         0.000100937|  Type: "RTP-Info", content: "rtptime=2844310397"
         0.000041510|  Type: "Content-Length", content: "197"
         0.000031718|  Type: "Content-Type", content: "application/x-dmap-tagged"
         0.000031719|  Type: "CSeq", content: "65"
         0.000033177|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000030208|  Type: "Active-Remote", content: "2634483566"
         0.000029843|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000121198|RTSP thread 7: RTSP Response:
         0.000033437|  Type: "CSeq", content: "65"
         0.000049843|MH Metadata stream processing start.
         0.000089323|  Type: "Server", content: "AirTunes/105.1"
         0.000086718|MH Item ID set to: "3080536546"
         0.000159061|MH Album name set to: "William Byrd, Mass for four voices, Choral Music"
         0.000049739|MH Artist name set to: "Quink Vocal Ensemble"
         0.000044427|MH Composer set to: ""
         0.000043229|MH Genre set to: "Genere sconosciuto"
         0.000046510|MH Track name set to: "Mass for four voices, I Kyrie"
         0.026431493|MH Metadata stream processing end.
      -1.8,      25.5,      65.1,       13039,      0,      0,      0,      0,   5785,  213,  232
         7.061014386|RTSP thread 7 received an RTSP Packet of type "TEARDOWN":
         0.000097395|  Type: "CSeq", content: "69"
         0.000036875|  Type: "DACP-ID", content: "55F10FF3F2B81189"
         0.000031562|  Type: "Active-Remote", content: "2634483566"
         0.000030520|  Type: "User-Agent", content: "AirPlay/365.53"
         0.000042344|Connection 7: TEARDOWN
Playback Stopped. Total playing time 00:01:48.
         0.000496507|Cancelling timing, control and audio threads
         0.000099687|Joining terminated threads.
         0.000833901|Timing thread terminated.
         0.000143697|Control thread terminated.
         0.000035156|Audio thread terminated.
         0.000030937|Freeing audio buffers and decoders.
         0.000784839|Connection 7: player thread terminated.
         0.000199113|pend
         0.000069687|RTSP thread 7: RTSP Response:
         0.000041406|  Type: "CSeq", content: "69"
         0.000026979|  Type: "Server", content: "AirTunes/105.1"
         0.000023906|  Type: "Connection", content: "close"
         0.014170271|Connection 7: RTSP thread terminated.

So far, it looks perfectly normal to me, but I'll keep experimenting.

exoqrtx commented 6 years ago

The dev branch I compiled has been stable all day today too. I guess it may have just been one of those fluke things. I really appreciate your help!

On a separate note, is there any advantage of using mpris over dbus? As far as I can see so far they're more or less the same. Also, the Shuffle doesn't seem to work over either dbus/mpris or the old system i used with manual http connections and the active_remote ID and whatnot. Do you know if this may be an iPhone limitation or should it be working?

mikebrady commented 6 years ago

Thanks. MPRIS is a recognised standard which uses the D-Bus system, and the Shairport Sync "native" D-Bus interface is meant to be a set of facilities that can evolve.

Shairport Sync's MPRIS interface only implements a subset of the full specification, and may be made more complete (e.g. playlists), but some of it is IMHO inappropriate, e.g. the position property is unimplementable with the standard D-Bus toolset. And the volume property is inappropriate for implementation as a read/write property due to feedback between the remote device and Shairport Sync.

Nevertheless, being a standard means that it can be used by standards-compliant software. E.g. this hack from Ubuntu is using the MPRIS interface:

mpris example 4

The native D-Bus interface is unfettered by any standard, though initially based on MPRIS, and can evolve in response to demands and new ideas. For example, it has the idea of standard RemoteControl (e.g. from an iPhone) and AdvancedRemoteControl (e.g. from iTunes). This can't be captured in MPRIS.

I use the test clients and the dfeet utility and command-line dbus-send to explore the features of the remote control offered by iOS / iTunes /AirPlay in general. The Shuffle property should change the setting in iTunes, but I don't know if it has any effect.