Announcement

Collapse
No announcement yet.

AirplaySpeak Linux HS3PRO network failure

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    AirplaySpeak Linux HS3PRO network failure

    I've been moving to a Razberry Pi system over the past week - this is the full Linux version of HS3PRO. I followed the instructions for getting the Linux (beta?) version installed, including the steps for getting the ffmpeg version .. I did have a problem with this part, but followed some other steps to get a working version. The Apple devices (a number of Airport Express nodes and some AppleTV units) show up in the AirplaySpeak UI. I replicated the configuration that I had on my HS3PRO Windows environment, which was working quite reliably (AirplaySpeak is currently disabled on the Windows system so as to avoid any possible contention).

    Long story short, the process works in all the steps to create the WAV files in the Temp directory, and if I copy these to my workstation (Mac) I can play the files. The issue that I have is that the connection to the Airport Express nodes apparently fails, and I see the following error sequence:

    Nov-01 12:09:41 PM AirplaySpeak DEBUG 61 Speaker.AfterSend()
    Nov-01 12:09:40 PM AirplaySpeak DEBUG 61 Speaker.SendSample() gets lock
    Nov-01 12:09:40 PM AirplaySpeak DEBUG 61 Speaker.SendSample()
    Nov-01 12:09:40 PM AirplaySpeak DEBUG 61 Speaker.BeforeSend()
    Nov-01 12:09:40 PM AirplaySpeak DEBUG Stack: at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00000] in :0 at System.Net.Sockets.TcpClient.Connect (System.Net.IPEndPoint remoteEP) [0x00000] in :0 at System.Net.Sockets.TcpClient.Connect (System.Net.IPAddress[] ipAddresses, Int32 port) [0x00000] in :0
    Nov-01 12:09:40 PM AirplaySpeak INFO Connection to Kitchen (169.254.119.136:5000) failed: Connection timed out
    Nov-01 12:07:33 PM AirplaySpeak DEBUG 61 Speaker.Reset() gets the lock
    Nov-01 12:07:33 PM AirplaySpeak DEBUG 61 Speaker.Reset()

    The audio file never plays.

    #2
    I just noticed, as I posted this, that the IP address shown for the AirportExpress node is incorrect. The address is shown as "169.254.119.136:5000", but that node is actually a "192.1.168.x" address. So perhaps this is a name resolution issue? Do I need to have these hardcoded in the hosts file?

    Comment


      #3
      Could you post your debug logs when you start the plugin, when it discovers your Airplay devices.

      And if you still have your HS3 windows running please post the logs too, so that I can compare them

      thanks

      Comment


        #4
        Attached are the two logs.

        It does appear that IP address resolution is failing on the Linux box for that one Airport Express (Kitchen). I added entries to the hosts file, but that didn't seem to make any difference.

        Of course now I have a subsequent problem with any other Airport Express which AirplaySpeak can connect to ... that issue is that it doesn't actually play the wav file. But one problem at a time.
        Attached Files

        Comment


          #5
          it looks like it is a bug in Avahi (equivalent of Bonjour) with Airport Express.
          For some reason avahi returns the link-local address (169.254.x.x) instead of the routable address (192.1.168.x)

          Does your Airport Express is configured with a static ip or using DHCP?

          As a workaround I will add a parameter in the .ini file that let you force a specific IP

          Comment


            #6
            could you test version 3.0.0.8 attached

            in AirplaySpeak.ini set the ipaddress of your device to the actual routable ip (192.168.1.x) and add the flag forceip=True like in the example below


            Code:
            [SPEAKERS]
            0024369D5960###name=Kitchen
            0024369D5960###ipaddress=192.168.1.39
            0024369D5960###forceip=True
            0024369D5960###port=5000
            0024369D5960###volume=-12
            0024369D5960###enabled=True
            0024369D5960###predelay=0
            0024369D5960###postdelay=0
            Attached Files

            Comment


              #7
              In answer to the earlier question, the Express node uses DHCP as opposed to a Static IP. They all do.

              I installed the new version of AirplaySpeak. Without the modified AirplaySpeak.ini, the version starts correctly, but does use the link local for the Kitchen Airport. If I modify the ini file to include the details for the Kitchen Airport Express, the plugin fails to start with the following error:


              Nov-05 9:10:26 AM Plug-In Finished initializing plug-in AirplaySpeak
              Nov-05 9:10:26 AM Error Initializing plug-in(2): AirplaySpeak Instance::Object reference not set to an instance of an objectSTACK: at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (System.Runtime.Remoting.Proxies.RealProxy rp, IMessage msg, System.Exception& exc, System.Object[]& out_args) [0x00000] in :0
              Nov-05 9:10:26 AM Info Plugin AirplaySpeak with instance: has disconnected
              Nov-05 9:10:26 AM AirplaySpeak INFO AirplaySpeak version 3.0.0.8
              Nov-05 9:10:26 AM Info Plugin AirplaySpeak has connected. IP:127.0.0.1:51542

              There were other entries in the AirPlaySpeak.ini. I tried removing the other entries, and just leaving the Kitchen configured, but that failed as well.

              Comment


                #8
                Originally posted by txb View Post
                In answer to the earlier question, the Express node uses DHCP as opposed to a Static IP. They all do.

                I installed the new version of AirplaySpeak. Without the modified AirplaySpeak.ini, the version starts correctly, but does use the link local for the Kitchen Airport. If I modify the ini file to include the details for the Kitchen Airport Express, the plugin fails to start with the following error:


                Nov-05 9:10:26 AM Plug-In Finished initializing plug-in AirplaySpeak
                Nov-05 9:10:26 AM Error Initializing plug-in(2): AirplaySpeak Instance::Object reference not set to an instance of an objectSTACK: at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (System.Runtime.Remoting.Proxies.RealProxy rp, IMessage msg, System.Exception& exc, System.Object[]& out_args) [0x00000] in :0
                Nov-05 9:10:26 AM Info Plugin AirplaySpeak with instance: has disconnected
                Nov-05 9:10:26 AM AirplaySpeak INFO AirplaySpeak version 3.0.0.8
                Nov-05 9:10:26 AM Info Plugin AirplaySpeak has connected. IP:127.0.0.1:51542

                There were other entries in the AirPlaySpeak.ini. I tried removing the other entries, and just leaving the Kitchen configured, but that failed as well.
                hmmm, ok try this:
                - delete or rename AirplaySpeak.ini
                - restart the plugin
                - go to the config page and change the volume for the problematic Airport Express, this will write the config to the ini file. (please also set the log level to debug)
                - Edit AirplaySpeak.ini and change the "###ipaddress" line to the correct ip and add the "###forceip=True" line

                let me know how it goes

                Comment


                  #9
                  Well that appears to have worked much better. No failure, and the log shows the force action.


                  Nov-06 9:13:12 AM AirplaySpeak DEBUG ip forced to 192.168.1.39, the actual discovered ip is 169.254.119.136
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG sf = '0x5'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG fv = '76400.10'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG am = 'AirPort4,107'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG vs = '105.1'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG tp = 'TCP,UDP'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG vn = '65537'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG pw = 'false'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG ss = '16'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG sr = '44100'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG da = 'true'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG sv = 'false'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG et = '0,1'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG ek = '1'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG cn = '0,1'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG ch = '2'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG txtvers = '1'
                  Nov-06 9:13:12 AM AirplaySpeak DEBUG TXT Records =
                  Nov-06 9:13:12 AM AirplaySpeak INFO Resolved Service: 0024369D5960 - Kitchen - 169.254.119.136 - 5000

                  I just tried an event that outputs to the Kitchen Airport Express (the log of that activity attached), and that seems to have worked - the tail end of the text was clipped. I will continue to monitor it.
                  Attached Files

                  Comment

                  Working...
                  X