-
-
Save elwertk/5851432 to your computer and use it in GitHub Desktop.
From 4e856af64086eaff6eb129e1daa42fc0ae4b1a18 Mon Sep 17 00:00:00 2001 | |
From: Kai Elwert <elwertk@googlemail.com> | |
Date: Mon, 24 Jun 2013 17:13:10 +0200 | |
Subject: [PATCH] Allow playback on non apple airplay devices | |
--- | |
src/player.c | 3 +++ | |
src/raop.c | 5 +++++ | |
src/raop.h | 1 + | |
3 files changed, 9 insertions(+) | |
diff --git a/src/player.c b/src/player.c | |
index 15bd3df..6718da1 100644 | |
--- a/src/player.c | |
+++ b/src/player.c | |
@@ -140,6 +140,7 @@ static const char *raop_devtype[] = | |
"AirPort Express 802.11g", | |
"AirPort Express 802.11n", | |
"AppleTV", | |
+ "Other", | |
}; | |
@@ -3719,6 +3720,8 @@ raop_device_cb(const char *name, const char *type, const char *domain, const cha | |
if (strncmp(p, "AppleTV", strlen("AppleTV")) == 0) | |
devtype = RAOP_DEV_APPLETV; | |
+ else | |
+ devtype = OTHER; | |
no_am: | |
DPRINTF(E_DBG, L_PLAYER, "AirTunes device %s: password: %s, type %s\n", name, (password) ? "yes" : "no", raop_devtype[devtype]); | |
diff --git a/src/raop.c b/src/raop.c | |
index adaff10..af82f32 100644 | |
--- a/src/raop.c | |
+++ b/src/raop.c | |
@@ -1844,6 +1844,11 @@ raop_session_make(struct raop_device *rd, int family, raop_status_cb cb) | |
rs->auth_quirk_itunes = 0; | |
rs->wants_metadata = 1; | |
break; | |
+ case OTHER: | |
+ rs->encrypt = 0; | |
+ rs->auth_quirk_itunes = 0; | |
+ rs->wants_metadata = 0; | |
+ break; | |
} | |
rs->ctrl = evrtsp_connection_new(address, port); | |
diff --git a/src/raop.h b/src/raop.h | |
index 5c240e1..a920668 100644 | |
--- a/src/raop.h | |
+++ b/src/raop.h | |
@@ -20,6 +20,7 @@ enum raop_devtype { | |
RAOP_DEV_APEX_80211G, | |
RAOP_DEV_APEX_80211N, | |
RAOP_DEV_APPLETV, | |
+ OTHER, | |
}; | |
struct raop_session; | |
-- | |
1.7.10.4 | |
Yes, I can confirm my very old APE does not report an AM value
According to this wiki article we have three Airport Express devices: http://en.wikipedia.org/wiki/AirPort_Express
I've got all three: the RAOP 'am' responses I find are:
M9470LL/A - 802.11g model - no 'am' response (firmware 6.3)
MB321LL/A - 802.11n Gen 1 model - 'am' response = "Airport4,107" (firmware 7.6.4)
MC414LL/A - 802.11n Gen 2 model - 'am' response = "Airport10,115" (firmware 7.6.4)
Apple TV Gen2 - 'am' response = "AppleTV2,1" (firmware v6.0)
The 'et', encryption type, responses are:
M9470LL/A - 802.11g model: 0,1
MB321LL/A - 802.11n Gen 1 model: 0,1
MC414LL/A - 802.11n Gen 2 model: 0,4 (as is my Denon Airplay device)
Airplay TV Gen 2: 0,3,5
Is it safe to assume that Apple's making the APX work like any other audio Airplay device?
Lines 28 and 29 of this GIST override the default devtype supporting the original Airport Expresses. APEs report their am value as something like
AirPort4,107
(Old version) orAirPort10,115
(new version). (There is some evidence in the player.c code that some old APEs do not report an AM value at all, but all three of mine do.As far as I can tell, the following is true of APEs with AM values:
RAOP_DEV_APEX_80211N
)OTHER
)So, I suggest the following change to line 28:
There may be other flavors of APEs that may fail this test, but it's the best I can suggest with the devices I have.