philippe44 / airconnect Goto Github PK
View Code? Open in Web Editor NEWUse AirPlay to stream to UPnP/Sonos & Chromecast devices
License: Other
Use AirPlay to stream to UPnP/Sonos & Chromecast devices
License: Other
I've noticed a strange behavior around restarts that continues on v0.2.0.2.
Audio eventually starts to play
Silence
Running airupnp on my Mac seems to get stuck early on at a 'Binding to' stage and go no further. Any ideas what I'm doing wrong? Thanks
Music will stop playing for 1-3 seconds and then resume. It happens 2-3 or more times per song, or it may not happen at all after the next song. I have also seen that it crashes after several songs, it just stops.
This is what I can see during dropouts:
[23:22:29.669381] rtp_thread_func:624 [0x10081ea00]: Sending packets too slow -6 (skip: 0)
[23:22:30.130258] buffer_get_frame:753 [0x10081ea00]: buffer drain status [level:1] [W:30050 R:30049]
[23:22:30.321599] buffer_put_packet:433 [0x10081ea00]: buffer fill status [level:0] [W:30073 R:30073]
[23:22:34.221215] buffer_get_frame:753 [0x10081ea00]: buffer drain status [level:1] [W:30562 R:30561]
[23:22:34.407918] buffer_put_packet:433 [0x10081ea00]: buffer fill status [level:0] [W:30585 R:30585]
[23:22:38.305061] buffer_get_frame:753 [0x10081ea00]: buffer drain status [level:1] [W:31074 R:31073]
[23:22:38.495137] buffer_put_packet:433 [0x10081ea00]: buffer fill status [level:0] [W:31097 R:31097]
[23:22:42.398193] buffer_get_frame:753 [0x10081ea00]: buffer drain status [level:1] [W:31586 R:31585]
[23:52:16.649045] buffer_get_frame:763 [0x10081ea00]: created zero frame (fill:10, W:56964 R:56953)
[23:52:16.649103] buffer_get_frame:763 [0x10081ea00]: created zero frame (fill:9, W:56964 R:56954)
[23:52:16.649375] buffer_get_frame:763 [0x10081ea00]: created zero frame (fill:8, W:56964 R:56955)
[23:52:16.649416] buffer_get_frame:763 [0x10081ea00]: created zero frame (fill:7, W:56964 R:56956)
[23:52:16.649442] buffer_get_frame:763 [0x10081ea00]: created zero frame (fill:6, W:56964 R:56957)
[23:52:16.649555] buffer_get_frame:763 [0x10081ea00]: created zero frame (fill:5, W:56964 R:56958)
In my quest to stream audio from my computer (macOS 10.13.2) to my Sonos PLAY:1 over ethernet, I have to say this is by far the best solution that I have tried so far so thank you!
While u sing v0.1.5.2 I have noticed that, after starting the script, my SONOS only seems to start actually playing the audio after I have hit either of the volume adjust keys on my keyboard.
This is just something I happened to notice and shouldn't be too major as I presume many people start this running once and forget about it.
Thanks for an awesome script!
DeveloperACE
Thanks for the awesome software! Just wanted to inform you, that is working like a charm with my bose SoundTouch devices. Maybe something you can add to the overall information. It seems that a lot of SoundTouch users are searching for such an solution. Regards, christian
Hi,
In my opinion AirConnect is the only good working solution for AirPlay on Sonos. But I'm having one problem with AirConnect. When we are having guests in our home and they are connected to our WLAN, they are having automatically access to our Sonos speakers with their smartphones and (audio)apps. Would it be possible to add inside the config.xml a value to only grand access to specific MAC addresses? It wouldn't be a problem when guests could see our Sonos speakers, but I don't want them to be able to play something on them.
Thanks in advance.
Hi there, is there a documented way of getting this to work inside docker?
Thanks for the great project!
I wanted to use it on my Synology Router, so I created a package for it: https://github.com/bandesz/AirConnect-SynologyRouter.
If you would like me to add anything (additional notes, licensing, etc.) please let me know.
First - thanks for this project, really appreciate it.
Problem: Playback from iTunes on iMac to Sonos PLAY:1 reliably stops after 10-20 minutes.
macOS: 10.11.6
(El Capitan)
iTunes: 12.7.3.46
Sonos: up-to-date firmware as of 2/15/2018
AirConnect: 5faf953 0.2.0.3
Command: bin/airupnp-osx-multi -l 1500:3000
Basically I start airupnp, it loads up and runs fine. I hit play in iTunes and everything goes fine for 15-20 minutes. Then it just stops.
Here are the logs -- Audio stops at just about 8:06:06 - there's lots of log spew just after that
https://gist.github.com/anonymous/0f81501c1b976b2b50c0ca8f1ad4de8b
Happy to do any diagnostics or try anything to help solve this. The PLAY:1 was a gift but is pretty useless to us without AirPlay ๐
Changing 'name' or 'friendly name' in config doesn't modify the device name in AirPlay.
Can you provide a sample (or default) xml file that can then be customized? That would help those of us a little less tech savvy. In my case, I am running this on OSX (and it works very well, thank you!). I want to create a simple startup and config file so that I can install this on family computers of users who are not tech savvy at all. A sample xml would help considerably.
Thanks.
Hi Philippe, thanks a lot for this great project!!
one problem here:
I have compiled both aircast and airupnp from source on an
ubuntu trusty x86_64 system, installed some init scripts and have both running
as daemon processes, with an lms 7.9.1 server on the same system,..
everything works quite nicely, but from time to time there are problems like this when I stream
remotely from an iTunes server on an mac to a sonos play5 with airupnp:
[14:56:15.379919] handle_rtsp:512 [0x7f745c009990]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 7
[14:56:15.384438] http_parse:932 Request failed, bad header
*** Error in `/usr/bin/airupnp': double free or corruption (fasttop): 0x00007f7448173290 ***
and the daemon is dead and must get restartet,...
when I stream with aircast to a chromecast audio to the analog in of the sonos play5
its the same problem there:
[18:25:35.965617] handle_rtsp:341 [0x7fda600011f0]: received SET_PARAMETER
[18:25:35.965791] handle_rtsp:512 [0x7fda600011f0]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 52
[18:25:35.969446] http_parse:932 Request failed, bad header
*** Error in `../bin/aircast-x86-64': double free or corruption (fasttop): 0x00007fda60001c00 ***
than the daemons are dead and have to be restarted,..
this can be tracked down to the http_parse function in common/util.c when
the http socket is analysed and a string compare for ":" ends unsuccessfull,.. mmh,
this also happens with the original precompiled binaries in your package,
that is also why I have compiled both apps natively on my server, but this has not changed it..
please have a look into the problem, best wishes pbg4
Hi, I can start the server and everything is working fine but there is a big 10 seconds of latency from the time I press play on my iOS device and I can hear the sound from my Sonos speaker.
For listening to music it's not so bad (but you need to wait 10 seconds for the sound to stop when you press pause).
But for watching a video it is simply unusable.
is there a way to make the the video in sync or it is how AirPlay / the protocol works?
Thanks
I build a .service file to autostart the program with my own config file:
[Unit]
Description=AirUPnP bridge
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/var/lib/airconnect/airupnp-arm -x configfile
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
It was just a try, but it doesn't work at all. Is there a possibility to autostart the program with a custom config file?
I just got AirConnect working beautifully on a Raspberry Pi with very little effort, connecting to Sonos.
Perhaps you're too modest to have a tip-jar in the README, but I'd love a way to say thank-you for all your hard work, @philippe44. A PayPal or Amazon wishlist link would be ideal ;-)
Matthew
Hi,
First of all, Thanks for creating this. I am using it for a day and it is working great.
I have Aiconnect installed on my Raspberry Pi 3 and can send the songs to my Sonos devices. I decided to try and run this as a service so it is always on.
I have a configuration file created in the same directory as the executable that sets the latency and ignores some devices.
When i set as a service, I see the message "main:1209 no config file, using defaults" in the log file.
I was wondering if there is a way to make it run as a service and read the config file.
I initially started with the Airconnect directory in my Home directory and then moved it to /var/lib. Same issue in both cases.
Thanks for your help
Updated to v0.2.0.2 this morning, thanks for your work around player group addition! Stream reliability seems a bit better, but I did seem to hit a snag with group change/joining on Sonos.
Remove XXXX slave
?airupnp
. I brought it to fg
, tried Ctrl-C
, but eventually it to kill -9
it.See the terminal log below, and the error about description.xml
, which seemed to correspond with AirConnect losing the audio stream. (The player on the iPhone continued playing silently.) AirConnect seems to try to recover, but the Sonos players never show up again in. I can load the description.xml
fine in the browser, and have attached it to the issue. I'm not sure if anything is really sensitive in there; let me know and I can redact it.
[05:25:54.346064] handle_rtsp:333 [0x100203260]: received SETUP
[05:25:54.347063] hairtunes_init:275 [0x102008a00]: Using FLAC
[05:25:54.347397] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Transport: RTP/AVP/UDP;unicast;mode=record;control_port=57549;timing_port=59738;server_port=50811
Session: DEADBEEF
Audio-Jack-Status: connected; type=analog
CSeq: 4
[05:25:54.357447] handle_rtsp:333 [0x100203260]: received RECORD
[05:25:54.357479] callback:270 [0x10007b0c0]: Stream
[05:25:54.357518] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Latency: 44100
Audio-Jack-Status: connected; type=analog
CSeq: 5
[05:25:54.364542] handle_rtsp:333 [0x100203260]: received SET_PARAMETER
[05:25:54.364570] handle_rtsp:488 [0x100203260]: SET PARAMETER volume -19.127512
[05:25:54.364578] CtrlSetVolume:253 uPNP volume 36 for http://172.16.1.128:1400/MediaRenderer/GroupRenderingControl/Control (cookie 0x0)
[05:25:54.364684] callback:310 [0x10007b0c0]: Volume[0..100] 36
[05:25:54.364783] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 6
[05:25:54.372708] rtp_thread_func:581 [0x102008a00]: 1st sync packet received
[05:25:54.397363] handle_rtsp:333 [0x100203260]: received SET_PARAMETER
[05:25:54.397442] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 7
[05:25:54.407307] handle_rtsp:333 [0x100203260]: received SET_PARAMETER
[05:25:54.407358] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 8
[05:25:54.414773] handle_rtsp:333 [0x100203260]: received SET_PARAMETER
[05:25:54.414984] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 9
[05:25:54.433084] rtp_thread_func:581 [0x102008a00]: 1st sync packet received
[05:25:54.439885] handle_rtsp:333 [0x100203260]: received FLUSH
[05:25:54.439922] hairtunes_flush:353 [0x102008a00]: FLUSH ignored as seqno (63951) <= ab_read (0)
[05:25:54.439978] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 10
[05:25:54.462014] handle_rtsp:333 [0x100203260]: received SET_PARAMETER
[05:25:54.462101] handle_rtsp:504 [0x100203260]: responding:
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 11
[05:25:54.462609] buffer_put_packet:445 [0x102008a00]: fill status [level:65535] [W:63950 R:63951]
[05:25:55.269735] search_remote_cb:542 [0x100203260]: found ActiveRemote for D28859BD2FB1EB71 at 172.16.1.166:62038
[05:25:56.323450] AVTSetURI:91 uPNP setURI http://172.16.1.104:59211/stream.flac for http://172.16.1.128:1400/MediaRenderer/AVTransport/Control (cookie 0x1)
[05:25:56.323907] AVTPlay:151 uPNP play for http://172.16.1.128:1400/MediaRenderer/AVTransport/Control (cookie 0x2)
[05:25:56.323978] CtrlSetVolume:253 uPNP volume 36 for http://172.16.1.128:1400/MediaRenderer/GroupRenderingControl/Control (cookie 0x2)
[05:25:56.351423] ActionHandler:413 [0x10007b0c0]: Waited action SetAVTransportURIResponse
[05:25:56.384887] ActionHandler:413 [0x10007b0c0]: Waited action SetGroupVolumeResponse
[05:25:56.398672] ActionHandler:413 [0x10007b0c0]: Waited action PlayResponse
[05:25:56.404463] http_thread_func:860 [0x102008a00]: got HTTP connection 20 (silent frames 250)
[05:25:56.405216] handle_http:996 [0x102008a00]: received GET
[05:25:56.405268] handle_http:1013 [0x102008a00]: responding:
HTTP/1.0 200 OK
Server: HairTunes
Content-Type: audio/flac
Connection: close
[05:25:56.410846] buffer_get_frame:780 [0x102008a00]: drain status [level:243] [W:64194 R:63951] [R:0 S:0]
[05:25:56.460588] ActionHandler:443 [0x10007b0c0]: uPNP transition
[05:25:56.972684] ActionHandler:452 [0x10007b0c0]: uPNP playing
[05:25:58.542371] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:64462 R:64462]
[05:25:58.547883] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:64464 R:64463] [R:0 S:0]
[05:26:02.622194] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:64974 R:64974]
[05:26:02.629962] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:64976 R:64975] [R:0 S:0]
[05:26:06.586074] buffer_put_packet:445 [0x102008a00]: fill status [level:9] [W:65486 R:65477]
[05:26:06.621855] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:65488 R:65487] [R:0 S:0]
[05:26:10.812721] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:462 R:462]
[05:26:10.822551] buffer_get_frame:780 [0x102008a00]: drain status [level:4] [W:467 R:463] [R:0 S:0]
[05:26:14.891999] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:974 R:974]
[05:26:14.899514] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:976 R:975] [R:0 S:0]
[05:26:18.972700] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:1486 R:1486]
[05:26:18.981893] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:1488 R:1487] [R:0 S:0]
[05:26:22.921001] UpdateThread:676 [0x10007cc70]: remove Sonos slave: Lindsey Room Sonos
[05:26:23.052827] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:1998 R:1998]
[05:26:23.058575] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:2000 R:1999] [R:0 S:0]
[05:26:27.132796] buffer_put_packet:445 [0x102008a00]: fill status [level:3] [W:2510 R:2507]
[05:26:27.140875] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:2512 R:2511] [R:0 S:0]
[05:26:31.242542] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:3022 R:3022]
[05:26:31.249114] buffer_get_frame:780 [0x102008a00]: drain status [level:4] [W:3027 R:3023] [R:0 S:0]
[05:26:35.321699] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:3534 R:3534]
[05:26:35.325201] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:3536 R:3535] [R:0 S:0]
[05:26:39.401454] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:4046 R:4046]
[05:26:39.406719] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:4048 R:4047] [R:0 S:0]
[05:26:43.485033] buffer_put_packet:445 [0x102008a00]: fill status [level:3] [W:4558 R:4555]
[05:26:43.493860] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:4560 R:4559] [R:0 S:0]
[05:26:47.592497] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:5070 R:5070]
[05:26:47.598655] buffer_get_frame:780 [0x102008a00]: drain status [level:4] [W:5075 R:5071] [R:0 S:0]
[05:26:51.671852] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:5582 R:5582]
[05:26:51.674735] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:5584 R:5583] [R:0 S:0]
[05:26:55.751961] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:6094 R:6094]
[05:26:55.756870] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:6096 R:6095] [R:0 S:0]
[05:26:59.831398] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:6606 R:6606]
[05:26:59.841238] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:6608 R:6607] [R:0 S:0]
[05:27:03.912815] buffer_put_packet:445 [0x102008a00]: fill status [level:3] [W:7118 R:7115]
[05:27:03.917780] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:7120 R:7119] [R:0 S:0]
[05:27:08.022104] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:7630 R:7630]
[05:27:08.022424] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:7632 R:7631] [R:0 S:0]
[05:27:12.101082] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:8142 R:8142]
[05:27:12.105825] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:8144 R:8143] [R:0 S:0]
[05:27:16.181227] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:8654 R:8654]
[05:27:16.185113] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:8656 R:8655] [R:0 S:0]
[05:27:20.263196] buffer_put_packet:445 [0x102008a00]: fill status [level:3] [W:9166 R:9163]
[05:27:20.266174] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:9168 R:9167] [R:0 S:0]
[05:27:24.371843] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:9678 R:9678]
[05:27:24.383087] buffer_get_frame:780 [0x102008a00]: drain status [level:4] [W:9683 R:9679] [R:0 S:0]
[05:27:28.453619] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:10190 R:10190]
[05:27:28.455092] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:10192 R:10191] [R:0 S:0]
[05:27:32.531069] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:10702 R:10702]
[05:27:32.539023] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:10704 R:10703] [R:0 S:0]
[05:27:36.610861] buffer_put_packet:445 [0x102008a00]: fill status [level:0] [W:11214 R:11214]
[05:27:36.615126] buffer_get_frame:780 [0x102008a00]: drain status [level:1] [W:11216 R:11215] [R:0 S:0]
[1]+ Stopped ./airupnp-osx-multi
โ-145 ~/AirConnect/bin [master|โ 1โ 3]
05:27 $ [05:28:29.965599] UpdateThread:689 Error obtaining description http://172.16.1.123:1400/xml/device_description.xml -- error = -207
[05:28:30.437523] http_thread_func:877 HTTP close 20
./airupn[05:29:02.242682] UpdateThread:689 Error obtaining description http://172.16.1.123:1400/xml/device_description.xml -- error = -207
[05:29:50.292854] UpdateThread:689 Error obtaining description http://172.16.1.126:1400/xml/device_description.xml -- error = -207
[05:30:17.534861] read_line:1119 fd: 14 read error: Connection reset by peer
[05:30:17.534992] http_parse:1039 cannot read method
[05:30:17.535008] rtsp_thread:311 RTSP close 14
05:27 $ [05:34:11.338099] ActionHandler:466 Error in action callback -- -119 (cookie 0x133)
[05:34:51.147260] ActionHandler:448 [0x10007b0c0]: uPNP stopped
[05:34:51.147260] ActionHandler:448 [0x10007b0c0]: uPNP stopped
[05:39:11.731379] MasterHandler:545 [0x10007b0c0]: Auto-renewal failed, re-subscribing
[05:39:16.184365] MasterHandler:545 [0x100079510]: Auto-renewal failed, re-subscribing
[05:40:05.333559] MasterHandler:570 [0x10007b0c0]: subscribe fail, re-trying 1
[05:40:48.847999] MasterHandler:567 [0x100079510]: subscribe success
[05:40:57.200836] buffer_put_packet:445 [0x102008a00]: fill status [level:386] [W:11726 R:11340]
[05:41:04.708756] MasterHandler:567 [0x10007e820]: subscribe success
[05:41:13.311159] MasterHandler:545 [0x10007e820]: Auto-renewal failed, re-subscribing
[05:41:13.311214] MasterHandler:567 [0x10007b0c0]: subscribe success
[05:43:59.419601] MasterHandler:545 [0x10007b0c0]: Auto-renewal failed, re-subscribing
[05:43:59.419796] ProcessEvent:376 [0x10007b0c0]: UPnP Volume local change 40
[05:43:59.440782] MasterHandler:567 [0x10007b0c0]: subscribe success
[05:43:59.457284] ProcessEvent:376 [0x10007b0c0]: UPnP Volume local change 40
[05:44:00.073772] UpdateThread:633 [0x10007b0c0]: removing unresponsive player (Master Bedroom Sonos)
[05:44:00.093393] http_thread_func:940 [0x102008a00]: terminating
[05:44:00.093393]093446] rtp_thread_func:659 [0x102008a00]: terminating```
Trying again, with all players grouped, then removing a group item Bathroom
seemed to work fine, but did report the description.xml
error again with UpdateThread:689 Error obtaining description http://169.254.178.48:49311/device.xml -- error = -204
. (Note the different IP address range) Stream failed again shortly after, with more xml
errors. (And again note the different IP address range.) My network is a Plume wifi, and all wireless and wired devices are DHCP in the 172.x range. I can't grab the referenced xml
files for these other devices as the reported IPs are out of range. At no time was I attempted to play to the Dish Hopper (the device marked unresponsive).
[05:54:40.055213] UpdateThread:633 [0x100079510]: removing unresponsive player (Hopper(Master Bedroom))
[05:54:40.289121] UpdateThread:633 [0x10007b0c0]: removing unresponsive player (Master Bedroom Sonos)
[05:54:40.299267] http_thread_func:940 [0x102008200]: terminating
[05:54:40.300827] rtp_thread_func:659 [0x102008200]: terminating
[05:54:40.345178] UpdateThread:633 [0x10007cc70]: removing unresponsive player (Hopper(Living Room 1))
[05:54:40.599021] AddMRDevice:861 [0x100079510]: adding renderer (Master Bedroom)
[05:54:40.613064] MasterHandler:567 [0x100079510]: subscribe success
[05:54:40.642868] AddMRDevice:861 [0x10007b0c0]: adding renderer (Bathroom)
[05:54:40.658376] MasterHandler:567 [0x10007b0c0]: subscribe success
[05:54:40.666865] ProcessEvent:376 [0x100079510]: UPnP Volume local change 33
[05:54:40.682036] ProcessEvent:376 [0x10007b0c0]: UPnP Volume local change 45
[05:54:42.761741] AddMRDevice:861 [0x10007cc70]: adding renderer (Hopper(Living Room 1))
[05:54:42.773679] MasterHandler:567 [0x10007cc70]: subscribe success
[05:54:43.198627] AddMRDevice:861 [0x10007e820]: adding renderer (Hopper(Master Bedroom))
[05:54:43.213636] MasterHandler:567 [0x10007e820]: subscribe success
[05:54:54.792461] UpdateThread:689 Error obtaining description http://192.168.49.1:47365/upnp/dev/93ae2173-5cb3-b007-ffff-ffff887625df/desc -- error = -204
[05:54:59.794262] UpdateThread:689 Error obtaining description http://192.168.49.1:47365/upnp/dev/93ae2173-5cb3-b007-ffff-ffff887625df/desc -- error = -204```
Hi,
just wanted to ask, if its possible to get a binary that runs on FreeBSD?
Hi there,
I want to say Thank You for this great tool. Apologize for any confusion. I was trying to install it on my Raspberry Pi 3 but I am not very technical savvy.
I already run following command on Raspberry Pi3:
wget https://raw.githubusercontent.com/philippe44/AirConnect/master/bin/airupnp-arm
But I don't know what to do next? Anyway to share step-by-step guidance?
Thanks a million,
Sean
Airupnp on BSD, Sonos is correctly found and works perfectly with Youtube app from iOS.
After few minutes, Sonos disappears from the list of devices on iOS.
Launching airupnp with all=sdebug reports nothing particular.
This is repeatable and happens after 3-5 minutes from airupnp launch.
(version 1.6.1)
I noticed my speakers weren't appearing in AirPlay, so I updated to 0.2.0.2, but now they don't appear in AirPlay, and airupnp does not appear in the "now playing" section of the Sonos app.
Log file:
[20:32:58.501313] main:1201 Starting airupnp version: v0.2.0.2 (Jan 30 2018 @ 22:09:20)
[20:32:58.501653] main:1209 no config file, using defaults
[20:32:58.504707] Start:961 Binding to 192.168.1.111:49153
[20:32:58.927528] AddMRDevice:874 [0x697a40]: adding renderer (Back Room)
[20:32:58.936814] MasterHandler:574 [0x697a40]: subscribe success
[20:32:58.959497] ProcessEvent:383 [0x697a40]: UPnP Volume local change 31
[20:32:59.005699] AddMRDevice:874 [0x6995d8]: adding renderer (Bedroom)
[20:32:59.015117] MasterHandler:574 [0x6995d8]: subscribe success
[20:32:59.031508] ProcessEvent:383 [0x6995d8]: UPnP Volume local change 13
I rebooted my computer, and updated my speakers (which may actually be the issue), and I'm still getting the same problem and the same log. My computer and speakers are on the same network.
Do you have a suggestion on how to properly startup bin/airupnp-arm
after the PI boots?
I currently have this line (which works when I run it from a terminal) in my /etc/rc.local
file:
/absolute/path/to/repos/AirConnect/bin/airupnp-arm -l 1000:2000 -z &
I have made the file executable with chmod +x
and confirmed it runs properly when I run it manually, however, it does not seem to run on startup. There is also no process running when I try ps aux | grep airupnp
. I find it strange since this is the same place I run airsonos
from as well.
I thought maybe its because the network is not setup yet, so was considering putting a script in /etc/network/if-up.d/
but have not tried it yet.
Thx.
After launching airpnp-osx-multi on my mac, music plays fine for a bit then gets glitchy. Eventually, it stops, and terminal displays line after line similar to this:
[14:43:12.471951] http_thread_func:919 [0x101001c00]: spent 54 ms in send!
[14:43:12.590509] http_thread_func:919 [0x101001c00]: spent 54 ms in send!
[14:43:13.433228] http_thread_func:919 [0x101001c00]: spent 66 ms in send!
[14:43:13.552526] http_thread_func:919 [0x101001c00]: spent 78 ms in send!
[14:43:14.410851] http_thread_func:919 [0x101001c00]: spent 858 ms in send!
[14:43:14.523966] http_thread_func:919 [0x101001c00]: spent 108 ms in send!
[14:43:14.623907] http_thread_func:919 [0x101001c00]: spent 66 ms in send!
Occasionally, their is a line similar to:
[14:46:29.582538] rtp_thread_func:640 [0x101001c00]: Sending packets too slow -6 (skip: 0)
I tried adjusting the latency, but it had no effect. I am not well versed in this stuff, but I have no idea what to do.
It would be pretty useful to run this stuff in Docker.
In order to keep the Docker images small as possible, Alpine is much used.
Nevertheless, Alpine does not have glibc, but is instead based on musl.
Could you provide binaries for this?
$ ldd airupnp-x86-64
/lib64/ld-linux-x86-64.so.2 (0x7f51567bf000)
libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f51567bf000)
libcrypto.so.1.0.0 => /lib/libcrypto.so.1.0.0 (0x7f515639f000)
libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f51567bf000)
librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x7f51567bf000)
libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f51567bf000)
libz.so.1 => /lib/libz.so.1 (0x7f5156188000)
Error relocating airupnp-x86-64: __strncpy_chk: symbol not found
Error relocating airupnp-x86-64: __fprintf_chk: symbol not found
Error relocating airupnp-x86-64: __printf_chk: symbol not found
Error relocating airupnp-x86-64: __memcpy_chk: symbol not found
Error relocating airupnp-x86-64: __vsnprintf_chk: symbol not found
Error relocating airupnp-x86-64: __strcat_chk: symbol not found
Error relocating airupnp-x86-64: __asprintf_chk: symbol not found
Error relocating airupnp-x86-64: __vfprintf_chk: symbol not found
Error relocating airupnp-x86-64: __vsprintf_chk: symbol not found
Error relocating airupnp-x86-64: __strcpy_chk: symbol not found
Error relocating airupnp-x86-64: __fread_chk: symbol not found
Error relocating airupnp-x86-64: __sprintf_chk: symbol not found
Error relocating airupnp-x86-64: __snprintf_chk: symbol not found
Error relocating airupnp-x86-64: __fdelt_chk: symbol not found
Is there any possibility for the transmission of meta data (track info)?
Hi, Thanks for the project, looking really promising!
When loading it seems to gets stuck under windos 10 or indeed Windows Home Server 2011 with the following output:
C:\Users\Administrator\Desktop\ircast>aircast-win.exe
[06:09:01.128] main:826 Starting aircast version: v0.1.4.3 (Dec 10 2017 @ 21:27:
56)
[06:09:01.128] main:834 no config file, using defaults
[06:09:01.752] Start:630 Binding to 192.168.1.14
No matter how long you wait it doesn't seem to get further. Run as admin and disabled firewall to no avail?
Please add ALAC "passthrough" support.
My streamer supports the ALAC codec, so it basically does not need transcoding and could be fed the ALAC codec'ed audio stream from AirPlay directly.
First of all, thanks for your project!
Since there's no Makefile for Windows it would be great to get some hints on how to compile on Windows.
From the dlls I guess you use a Borland C++ compiler. Is that right?
It seems you can have a NULL pointer at airupnp.c:569, you should place the 's = ' assignment out of the if function and make sure you do not access s when it is NULL ;-)
Thread 8 "airupnp-x86-64" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff39aa700 (LWP 8910)]
MasterHandler (EventType=<optimized out>, _Event=0x7ffff39a9c30,
Cookie=<optimized out>) at ./src/airupnp.c:576
576 }
(gdb) bt
#0 MasterHandler (EventType=<optimized out>, _Event=0x7ffff39a9c30,
Cookie=<optimized out>) at ./src/airupnp.c:576
#1 0x00005555555bcc5d in UpnpThreadDistribution (Param=0x7fffe00359b0)
at src/api/upnpapi.c:3642
#2 0x00005555555d1637 in WorkerThread (arg=0x5555558252e0 <gSendThreadPool>)
at src/ThreadPool.c:576
#3 0x00007ffff7bc151a in start_thread (arg=0x7ffff39aa700)
at pthread_create.c:465
#4 0x00007ffff6aa63ef in clone ()
at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) p s
$1 = (struct sService *) 0x0
(gdb) p *Event
$2 = {Sid = "uuid:aa3bf976-0b69-11e8-9792-d3ba1d388811\000\000", ErrCode = 0,
PublisherUrl = "http://192.168.1.231:1835/RenderingControl/a9dc8ad5-4f97-c37f-9002-2f7b00eddfd8/event.xml", '\000' <repeats 166 times>, TimeOut = 1800}
you need to provide an example config.xml file.
Hi Philippe,
I'm new to AirConnect, used airsonos until now and have to admit: Great work!
Unfortunately AirConnect only works for a part of my configuration. I have several Play:1 spreaded across my rooms in standalone and stereo configurations. Those speakers are recognized correctly. But there is also a surround configuration (Playbase + 2x Play:1) which isn't recognized. If I remove surround configuration all speakers are recognized as expected.
Do you have any idea how to find the source of this problem?
Thanks in advance for your help,
Lameth
This manifests 2 ways:
aircast -i castconfig.xml
generates a config file but exits before scan occurs, so the config file has no devices listed. aircast -x castconfig.xml -I
stays up and performs discovery but still doesn't add device definitions.
If I do airupnp -i pnpconfig.xml
I am able to generate device definitions (and successfully disable/rename certain ones). If I use the <device>
definitions there as a guide and manually add the the Chromecast/Google Home devices' MAC addresses to my aircast config, they seem to be ignored and all devices are discovered and enabled, regardless of config's names or enabledness.
Hi,
My environment is like this: one ChromeAudio connected via SPDIF (optical output) to a receiver (DD & DTS compatible).
Now, I have this good project working (Thank you to the developer!). ๐
However, I like to have "bit-perfect" output over the optical output. To check this, I use DTSWAV files (one DTS bitstream encapsulated over an standard PCM 44.1/16bit file). At time, all my test will fail! Using one Airport Express with the same configuration I don't have any problem to play these files using iTunes and configuring it for not change the audio stream. However, I can't do it with this tool. My assumption is that the Chromecast it's using 48KHz/24bit (or similar) and this tool is reencoding. So, I suggest to enable the option for force the bitrate-resolution (in my case: 44.1/bit). With this will be possible to have a bit-perfect output (required for DTS CD).
If you need some testing files, you can download free samples from here:
http://www.ambisonic.net/nimbus-sample.html
(get the DTS-WAV file at http://www.ambisonic.net/decodes/elgar-excerpt-dts.wav).
Regards.
Hi Philippe, I'm really liking the new aircast bridge. I've been using it the last couple days with a chromecast audio firmware 1.25.90308 with great success. I noticed that the aircast-x86 build consistantly spins a cpu near 100% usage while streaming from an ipad 10.3.3 or itunes 12.6.2. I suspect there's a spinning loop causing this issue, but I haven't been able to track it down.
13351 squeezeb 20 0 73396 3784 1924 S 95.6 0.0 0:38.43 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 100.1 0.0 0:39.61 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 95.7 0.0 0:40.78 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 101.1 0.0 0:41.97 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 101.0 0.0 0:43.14 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 100.1 0.0 0:44.32 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 101.2 0.0 0:45.50 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 102.0 0.0 0:46.67 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 100.1 0.0 0:47.85 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 94.6 0.0 0:49.02 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 100.2 0.0 0:50.21 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 93.9 0.0 0:51.38 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 88.8 0.0 0:52.55 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 100.1 0.0 0:53.73 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 101.0 0.0 0:54.91 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 93.6 0.0 0:56.07 aircast-x86
13351 squeezeb 20 0 73396 3784 1924 S 93.9 0.0 0:57.25 aircast-x86
CPU usage doesn't even register in vmstat when idle.
13351 squeezeb 20 0 73396 3876 2004 S 0.0 0.0 9:28.63 aircast-x86
13351 squeezeb 20 0 73396 3876 2004 S 0.0 0.0 9:28.63 aircast-x86
13351 squeezeb 20 0 73396 3876 2004 S 0.0 0.0 9:28.63 aircast-x86
13351 squeezeb 20 0 73396 3876 2004 S 0.0 0.0 9:28.63 aircast-x86
13351 squeezeb 20 0 73396 3876 2004 S 0.0 0.0 9:28.63 aircast-x86
Ideas?
Thanks,
Ralphy.
del
Hi,
first of all, thanks again for this great tool.
I just installed version 0.2x for the first time and I keep getting this error in the logs. Since I installed it remotely and I'm not at home, this might be a minor thing. I just wanted to give you feedback (as mentioned in the ReadMe).
[11:45:07.990612] main:1210 Starting airupnp version: v0.2.0.1 (Jan 29 2018 @ 18:40:58)
[11:45:07.993615] Start:970 Binding to 192.168.178.50:49152
[11:45:17.032813] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:45:17.053236] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:45:17.068755] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:46:17.040811] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:46:17.057575] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:46:17.071634] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:47:17.046148] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:47:17.060542] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
[11:47:17.074454] UpdateThread:705 Error obtaining description http://192.168.178.50:8080/upnp -- error = -108
Please, can you explain the behaviour of the "Stop Receiver" parameter in the config file?
I can't see it the the README page.
Thank you!
It looks like the code in this repo is licensed under the GPL v3; would you mind adding a license file to the repo to confirm?
I am unable to execute aircast-osx-multi it downloads as textfile. I added .dmg but that didn't work.
Sound is very Quiet on chromecast compared to using google cast
If you change the volume in the AirPlay host app (e.g. iTunes) rapidly (like, moving the iTunes volume slider instantly from left to right and vive versa) , then the UPNP volume control can't "catch up" and starts to "stutter" and gets unsynchronised from the AirPlay host volume setting.
If you change the AirPlay host volume slowly (e.g., using the iTunes volume up/down keyboard shortcuts), the UPNP volume is adjusted correctly.
[macOS High Sierra 10.13.2, airupnp-osx-multi 0.1.3.2, Naim NAC-N 172 XS streaming pre-amp]
Iโve noticed a + added to all of the names and was curious what it signified.
Changing 'name' parameter in config only changes the name in AirPlay temporarily. Seems after 30 seconds, rescan overrides the name set in the config and the generated name with IP address replaces it. If I then do a 'save config.xml' from the command line the original names are in the newly saved config file.
example:
'Kitchen' changes to '192.168.xx.xx - Sonos PLAY:1'
Thanks
First, this is awesome. Thank you for maintaining this project, it's fills such a sweet spot in my life until AirPlay 2 is ready. Kudos!
Is there an example of what the command with non-interacive "-z" option enabled should look like? I've been using: ./airupnp-osx-multi -z -l 500:500
. The command runs, but I don't think it's running in the background because I still see a long list of logs as I play to my Sonos through iTunes on my MBP. Also, when I close the tab in iTerm2, the process quits. I can no longer play audio through the Sonos on my MBP.
Is this something possible for a future release?
Thank you so much for such a great work with this project.
Great work on this project. I just had a quick question. I'm running AirConnect as you mention in the readme with the 1 second RTP buffer and the 2 Second Http buffer. I was expecting that to create a lag of 3 seconds for obvious reasons. I'm running VLC and inserting a lag under the Track Synchronization settings so that can watch video. The synchronization lag that works is 4 seconds. I'm wondering if you have any idea why this is or if theres something different I should be doing.
Tried running aircast-arm on Raspbian. After chmod +x, first error I got was:
./aircast-arm: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
Ran these to install libssl.so.1.0.0:
sudo wget http://ftp.nl.debian.org/debian/pool/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb
sudo dpkg -i libssl1.0.0_1.0.1t-1+deb8u6_armhf.deb
Now I get the error:
Illegal instruction
Hi,
I'm running AirConnect on a Raspberry Pi which works perfect. I also tried the Mac OSX binary which works as well, except the "-z" option? Isn't it available there? It just won't run in the background and stops everytime I close the terminal or push CMD-C.
While playing on a Mac playback via UpNP-> AirPlay stopped and all AirPlay devices weren't available anymore through the sound menu.
When i tried with my iPhone i still saw them there. Here's my log from stopping on a Mac and resuming on an iPhone:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.