provegard / airpnp

AirPlay to UPnP bridge written in Python
http://airpnp.finkod.se
BSD 3-Clause "New" or "Revised" License
42 stars 4 forks source link

Don't bridge UPnP devices with AirPlay capability #4

Open ghost opened 12 years ago

ghost commented 12 years ago

Some custom UPnP players can already have AirPlay capability added to them.

I propose an extra check before a bridge for a UPnP device is created. Inquire for a list of _airplay._tcp devices, lookup their IP addresses and if a bridge that's about to be created points to a device that already advertises AirPlay, skip bridge creation for that device.

Example zeroconf/bonjour entry:

Service Type: _airplay._tcp Service Name: Media-Player-AirPlay-UPnP Domain Name: local Interface: wlan0 IPv4 Address: Media-Player-AirPlay-and-UPnP.local/192.168.2.17:7000 TXT model = AppleTV2,1 TXT srcvers = 130.14 TXT features = 0x39f7 TXT deviceid =

The IP address is looked up by mDNS most probably.

Let me know if you need any additional zeroconf/uPnP device information.

ghost commented 12 years ago

deviceid field got mangled in makdown. should be &lt device MAC address &gt

ghost commented 12 years ago

A similar situation may occur with a _raop._tcp. device (AirTunes) already presenting itself over both raop and upnp:

Say a UPnP-capable audio device (pulseaudio-rygel) is running shairplay:

Service Type: _raop._tcp Service Name:581F8C740FC1@Dining Room Speakers Domain Name: local Interface: wlan0 IPv4 Address: speakers.local/192.168.2.204:5000 TXT ch = 2 TXT pw = false TXT ek = 1 TXT ss = 16 TXT sr = 44100 TXT sv = false TXT vn = 3 TXT tp = UDP TXT sm = false TXT et = 0,1 TXT txtvers = 1 TXT cn = 0,1