Help us solving the AirPlay issue when using iOS7 devices

  Thread Rating:
  • 3 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
wwwidowntv Offline
Junior Member
Posts: 1
Joined: Apr 2014
Reputation: 0
Post: #466
(2014-04-18 15:21)bigbobyo Wrote:  I'm having the same problem with NBA Game Time International app. When I airplay the live stream It stops after 5 minutes. Neulion develops both these apps. Hopefully the xbmc developers can figure out the problem since neulion develops alot of sports live stream apps.

I'm also having the same problem with NBA Game Time International app - When I airplay the live stream It stops after 5 minutes.
For non-live streams - like 15 minutes long condensed game - seems to work fine.

(2014-04-21 23:41)testooo Wrote:  win 7 pro
ipad 4
Os 7.1

allow airplay volume control option - doesn't work no effect if enabled

anyone or only me?

cheers

same here - volume control option - doesn't work
(This post was last modified: Today 10:44 by wwwidowntv.)
find quote
AllenWang Offline
Junior Member
Posts: 2
Joined: Apr 2014
Reputation: 0
Post: #467
Hi, Memphiz and jyavenard

My xbmc airplayer(ubuntu 12.04) can play various video(ios7.0.4, ios7.0.6, ios7.1) normally, but can't play music,
Because I have not found out the Apple's 'fp' digtal signature algorithm so far, so I can't decrypt the aeskey carried by fpaeskey.

I'm pleased to share some airplay information in my debugging process:

1. airplay announce configuration:

txt.push_back(make_pair("deviceid", iface != NULL ? iface->GetMacAddress() : "FF:FF:FF:FF:FF:F2"));
txt.push_back(make_pair("features", "0x100029ff"));
txt.push_back(make_pair("model", "AppleTV3,1"));
txt.push_back(make_pair("srcvers", "150.33"));

2. airtunes announce configuration:
txt1.push_back(std::make_pair("tp", "UDP"));
txt1.push_back(std::make_pair("sm", "false"));
txt1.push_back(std::make_pair("sv", "false"));
txt1.push_back(std::make_pair("ek", "1"));
txt1.push_back(std::make_pair("et", "0,3,5"));
txt1.push_back(std::make_pair("cn", "0,1"));
txt1.push_back(std::make_pair("ch", "2"));
txt1.push_back(std::make_pair("ss", "16"));
txt1.push_back(std::make_pair("sr", "44100"));
txt1.push_back(std::make_pair("pw", "false"));
txt1.push_back(std::make_pair("vn", "3"));
txt1.push_back(std::make_pair("txtvers", "1"));
txt1.push_back(std::make_pair("da", "true"));
txt1.push_back(std::make_pair("ft", "0x100029FF"));
txt1.push_back(std::make_pair("md", "0,1,2"));
txt1.push_back(std::make_pair("vs", "150.33"));
txt1.push_back(std::make_pair("rhd", "4.1.3"));
txt1.push_back(std::make_pair("vv", "1"));
txt1.push_back(std::make_pair("vn", "65537"));
txt1.push_back(std::make_pair("am", "AppleTV3,1"));
txt1.push_back(std::make_pair("sf", "0x4"));

3. #define SERVER_INFO "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"\
"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\r\n"\
"<plist version=\"1.0\">\r\n"\
"<dict>\r\n"\
"<key>deviceid</key>\r\n"\
"<string>%s</string>\r\n"\
"<key>features</key>\r\n"\
"<integer>8317</integer>\r\n"\
"<key>model</key>\r\n"\
"<string>Xbmc,1</string>\r\n"\
"<key>protovers</key>\r\n"\
"<string>1.0</string>\r\n"\
"<key>srcvers</key>\r\n"\
"<string>120.2</string>\r\n"\
"</dict>\r\n"\
"</plist>\r\n"


4. Change libshairport to crack the fp-setup, codes as flows :
<1> shairport.c
static const unsigned char fply1[142] = {
0x46, 0x50, 0x4C, 0x59, 0x03, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x82,
0x02, 0x03, 0x90, 0x01, 0xE1, 0x72, 0x7E, 0x0F, 0x57, 0xF9, 0xF5, 0x88,
0x0D, 0xB1, 0x04, 0xA6, 0x25, 0x7A, 0x23, 0xF5, 0xCF, 0xFF, 0x1A, 0xBB,
0xE1, 0xE9, 0x30, 0x45, 0x25, 0x1A, 0xFB, 0x97, 0xEB, 0x9F, 0xC0, 0x01,
0x1E, 0xBE, 0x0F, 0x3A, 0x81, 0xDF, 0x5B, 0x69, 0x1D, 0x76, 0xAC, 0xB2,
0xF7, 0xA5, 0xC7, 0x08, 0xE3, 0xD3, 0x28, 0xF5, 0x6B, 0xB3, 0x9D, 0xBD,
0xE5, 0xF2, 0x9C, 0x8A, 0x17, 0xF4, 0x81, 0x48, 0x7E, 0x3A, 0xE8, 0x63,
0xC6, 0x78, 0x32, 0x54, 0x22, 0xE6, 0xF7, 0x8E, 0x16, 0x6D, 0x18, 0xAA,
0x7F, 0xD6, 0x36, 0x25, 0x8B, 0xCE, 0x28, 0x72, 0x6F, 0x66, 0x1F, 0x73,
0x88, 0x93, 0xCE, 0x44, 0x31, 0x1E, 0x4B, 0xE6, 0xC0, 0x53, 0x51, 0x93,
0xE5, 0xEF, 0x72, 0xE8, 0x68, 0x62, 0x33, 0x72, 0x9C, 0x22, 0x7D, 0x82,
0x0C, 0x99, 0x94, 0x45, 0xD8, 0x92, 0x46, 0xC8, 0xC3, 0x59
};

static unsigned char fply2[32] = {
0x46, 0x50, 0x4c, 0x59, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

static int parseMessage(struct connection *pConn, unsigned char *pIpBin, unsigned int pIpBinLen, char *pHWID)
{
...
...

else if (strncmp(pConn->recv.data, "POST", 4) == 0)
{
char *ptmp = pConn->recv.data;
char *tContent = getFromHeader(ptmp, "Content-Length", NULL);
int iContentSize = 0, fplySize = 0;

bPadding = 0;
if (tContent != NULL) {
iContentSize = atoi(tContent);
}
if (iContentSize < 14) {
__shairport_xprintf("can't find fp-setup after POST\n");
tReturn = 1;
} else {
ptmp += 5;//skip "POST "
if (0 == strncmp(ptmp, "/fp-setup", 9)) {
ptmp += 9; //skip "/fp-setup"
ptmp = strstr(ptmp, "FPLY");
if (ptmp) {
char constr[32] = {0};
struct shairbuffer *pBuf;
int tAvailChars;
const unsigned char *pctmp = NULL;

if (1 == ptmp[6]) {
pctmp = &fply1[0];
fplySize = 142;
iContentSize = 142;
} else if (3 == ptmp[6]) {
// 03 01 03 -> 20 : 5b ed 04 ed c3 cd 5f e6 a8 28 90 3b 42 58 15 cb 74 7d ee 85
int len = (unsigned char)ptmp[11];

ptmp += 12; //skip header;
memcpy(&fply2[12], &ptmp[len-20], 20);
pctmp = &fply2[0];
fplySize = 32;
iContentSize = 32;
} else {
__shairport_xprintf("%s %d : Uknown FPLY seq ++++++++\n", __func__, __LINE__);
return 1;
}
propogateCSeq(pConn);
addToShairBuffer(&(pConn->resp), "Content-Type: application/octet-stream");
addToShairBuffer(&(pConn->resp), "\r\n");
addToShairBuffer(&(pConn->resp), "X-Apple-ET: 32");
addToShairBuffer(&(pConn->resp), "\r\n");
sprintf(constr, "%s%d", "Content-Length: ", iContentSize);
addToShairBuffer(&(pConn->resp), constr);
addToShairBuffer(&(pConn->resp), "\r\n\r\n");
pBuf = &(pConn->resp);
tAvailChars = getAvailChars(&(pConn->resp));
if (fplySize > tAvailChars) {
int tNewSize = pBuf->maxsize * 2 + MAX_SIZE + sizeof(char);
char *tTmpBuf = malloc(tNewSize);

memset(tTmpBuf, 0, tNewSize);
memcpy(tTmpBuf, pBuf->data, pBuf->current);
free(pBuf->data);

pBuf->maxsize = tNewSize;
pBuf->data = tTmpBuf;
}
memcpy(pBuf->data + pBuf->current, pctmp, fplySize);

pBuf->current += fplySize;
} else {
__shairport_xprintf("can't find FPLY after /fp-setup\n");
tReturn = 1;
}

}
}
}
.....
.....
}

<2> hairtunes.c

static int b_decrypt_disable = 0;

int __shairport_hairtunes_init(char *pAeskey, char *pAesiv, char *fmtpstr, int pCtrlPort, int pTimingPort,
int pDataPort, char *pRtpHost, char*pPipeName, char *pLibaoDriver, char *pLibaoDeviceName, char *pLibaoDeviceId)
{
...
...
if(pAeskey != NULL) {
memcpy(aeskey, pAeskey, sizeof(aeskey));
} else { //I can't decrypt the aeskey , so I had to disable the music play!!
b_decrypt_disable = 1;
__shairport_errprintf("shairport aeskey is NULL!\n");
}
.....

}

static void *rtp_thread_func(void *arg)
{
....
....
while (select(csock>sock ? csock+1 : sock+1, &fds, 0, 0, &timeout)!=-1 && rtp_running) {
.....

plen = recvfrom(readsock, packet, sizeof(packet), 0, (struct sockaddr*)&rtp_client, &si_len);
if (plen < 0)
continue;
assert(plen<=MAX_PACKET);

type = packet[1] & ~0x80;
//printf("%s %d , Recvpack : %d, type : %x : 0x%x\n", __func__, idx, plen, packet[1], type);

if (type == 0x60 || type == 0x56) { // audio data / resend
pktp = packet;
if (type==0x56) {
pktp += 4;
plen -= 4;
}

seqno = ntohs(*(unsigned short *)(pktp+2));
if (!b_decrypt_disable) {
buffer_put_packet(seqno, pktp+12, plen-12);
}
}
}
....
....
}
find quote
AllenWang Offline
Junior Member
Posts: 2
Joined: Apr 2014
Reputation: 0
Post: #468
Another Informations about airplay :

If we switch to airplay in the course of video playing, the ipad/iphone need to send the silent audio samples to xbmc , so need the i_roap to do some rtsp session responses, But needn't if we switch to airplay before video playing, I think the apple want to avoid the playing noise.


Show you the rtsp session tracing log and analyse information as follows:

//Client : ipad(ios7.0.6), ip address : 192.168.1.102
//Server : Box(xbmc airplay) ip address : 192.168.1.107

C -> S

POST /fp-setup RTSP/1.0
X-Apple-ET: 32
CSeq: 0
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: application/octet-stream
Content-Length: 16
User-Agent: AirPlay/190.9

FPLY
///////////////////////////// source data ///////////////////////////////
0000 50 4f 53 54 20 2f 66 70 2d 73 65 74 75 70 20 52 POST /fp-setup R
0010 54 53 50 2f 31 2e 30 0d 0a 58 2d 41 70 70 6c 65 TSP/1.0..X-Apple
0020 2d 45 54 3a 20 33 32 0d 0a 43 53 65 71 3a 20 30 -ET: 32..CSeq: 0
0030 0d 0a 58 2d 41 70 70 6c 65 2d 44 65 76 69 63 65 ..X-Apple-Device
0040 2d 49 44 3a 20 30 78 38 34 38 65 30 63 61 36 62 -ID: 0x848e0ca6b
0050 33 31 35 0d 0a 44 41 43 50 2d 49 44 3a 20 33 35 315..DACP-ID: 35
0060 42 31 44 31 38 46 37 34 37 39 45 41 32 35 0d 0a B1D18F7479EA25..
0070 41 63 74 69 76 65 2d 52 65 6d 6f 74 65 3a 20 33 Active-Remote: 3
0080 32 33 31 37 34 34 37 34 36 0d 0a 43 6f 6e 74 65 231744746..Conte
0090 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 nt-Type: applica
00a0 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 tion/octet-strea
00b0 6d 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 m..Content-Lengt
00c0 68 3a 20 31 36 0d 0a 55 73 65 72 2d 41 67 65 6e h: 16..User-Agen
00d0 74 3a 20 41 69 72 50 6c 61 79 2f 31 39 30 2e 39 t: AirPlay/190.9
00e0 0d 0a 0d 0a 46 50 4c 59 03 01 01 00 00 00 00 04 ....FPLY........
00f0 02 00 00 bb ....

S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 0
Content-Type: application/octet-stream
X-Apple-ET: 32
Content-Length: 142

FPLYr~W%z#0E%:[iv(kH~:cx2T"m6%(rofsD1KSQrhb3r"}EFY
///////////////////////////// source data ///////////////////////////////
0000 52 54 53 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d RTSP/1.0 200 OK.
0010 0a 41 75 64 69 6f 2d 4a 61 63 6b 2d 53 74 61 74 .Audio-Jack-Stat
0020 75 73 3a 20 63 6f 6e 6e 65 63 74 65 64 3b 20 74 us: connected; t
0030 79 70 65 3d 61 6e 61 6c 6f 67 0d 0a 43 53 65 71 ype=analog..CSeq
0040 3a 20 30 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 : 0..Content-Typ
0050 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f e: application/o
0060 63 74 65 74 2d 73 74 72 65 61 6d 0d 0a 58 2d 41 ctet-stream..X-A
0070 70 70 6c 65 2d 45 54 3a 20 33 32 0d 0a 43 6f 6e pple-ET: 32..Con
0080 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 31 34 32 tent-Length: 142
0090 0d 0a 0d 0a 46 50 4c 59 03 01 02 00 00 00 00 82 ....FPLY........
00a0 02 03 90 01 e1 72 7e 0f 57 f9 f5 88 0d b1 04 a6 .....r~.W.......
00b0 25 7a 23 f5 cf ff 1a bb e1 e9 30 45 25 1a fb 97 %z#.......0E%...
00c0 eb 9f c0 01 1e be 0f 3a 81 df 5b 69 1d 76 ac b2 .......:..[i.v..
00d0 f7 a5 c7 08 e3 d3 28 f5 6b b3 9d bd e5 f2 9c 8a ......(.k.......
00e0 17 f4 81 48 7e 3a e8 63 c6 78 32 54 22 e6 f7 8e ...H~:.c.x2T"...
00f0 16 6d 18 aa 7f d6 36 25 8b ce 28 72 6f 66 1f 73 .m....6%..(rof.s
0100 88 93 ce 44 31 1e 4b e6 c0 53 51 93 e5 ef 72 e8 ...D1.K..SQ...r.
0110 68 62 33 72 9c 22 7d 82 0c 99 94 45 d8 92 46 c8 hb3r."}....E..F.
0120 c3 59 .Y


C -> S

POST /fp-setup RTSP/1.0
X-Apple-ET: 32
CSeq: 1
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: application/octet-stream
Content-Length: 164
User-Agent: AirPlay/190.9

FPLYd=6^^JfF%e|+g
BF3U;3@y)d7Rt&SYgo=iu-9ce\"<r78w:\*";&n2ZLZi;,D/
///////////////////////////// source data ///////////////////////////////
0000 50 4f 53 54 20 2f 66 70 2d 73 65 74 75 70 20 52 POST /fp-setup R
0010 54 53 50 2f 31 2e 30 0d 0a 58 2d 41 70 70 6c 65 TSP/1.0..X-Apple
0020 2d 45 54 3a 20 33 32 0d 0a 43 53 65 71 3a 20 31 -ET: 32..CSeq: 1
0030 0d 0a 58 2d 41 70 70 6c 65 2d 44 65 76 69 63 65 ..X-Apple-Device
0040 2d 49 44 3a 20 30 78 38 34 38 65 30 63 61 36 62 -ID: 0x848e0ca6b
0050 33 31 35 0d 0a 44 41 43 50 2d 49 44 3a 20 33 35 315..DACP-ID: 35
0060 42 31 44 31 38 46 37 34 37 39 45 41 32 35 0d 0a B1D18F7479EA25..
0070 41 63 74 69 76 65 2d 52 65 6d 6f 74 65 3a 20 33 Active-Remote: 3
0080 32 33 31 37 34 34 37 34 36 0d 0a 43 6f 6e 74 65 231744746..Conte
0090 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 nt-Type: applica
00a0 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 tion/octet-strea
00b0 6d 0d 0a 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 m..Content-Lengt
00c0 68 3a 20 31 36 34 0d 0a 55 73 65 72 2d 41 67 65 h: 164..User-Age
00d0 6e 74 3a 20 41 69 72 50 6c 61 79 2f 31 39 30 2e nt: AirPlay/190.
00e0 39 0d 0a 0d 0a 46 50 4c 59 03 01 03 00 00 00 00 9....FPLY.......
00f0 98 03 8f 1a 9c 64 03 b8 f5 3d c6 1f c8 cc f7 36 .....d...=.....6
0100 5e 5e 4a b4 66 fb 46 e4 25 01 65 7c 2b 89 67 0a ^^J.f.F.%.e|+.g.
0110 42 46 08 b5 02 e6 d4 33 c6 55 08 17 3b c4 8a d8 BF.....3.U..;...
0120 33 40 79 15 29 8c 64 37 52 fe e0 0e 9c 1a 7f 74 3@y.).d7R......t
0130 9d ec e4 dc 26 53 b4 59 fc fd 67 dd 6f bb fa a3 ....&S.Y..g.o...
0140 3d 69 75 2d fc c2 39 0c 1e 63 93 a7 17 d8 65 d9 =iu-..9..c....e.
0150 e4 5c 80 22 07 de bb a3 3c 1f d0 f7 72 9a 37 84 .\."....<...r.7.
0160 38 77 cc 08 3a 5c c0 a7 85 2a 22 af 18 a2 3b 26 8w..:\...*"...;&
0170 8c 6e 32 5a b6 e3 fd ed 4c 5a 84 69 3b 2c a9 d2 .n2Z....LZ.i;,..
0180 ea 81 44 ea 2f dc 89 b0 f8 ..D./....


S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 1
Content-Type: application/octet-stream
X-Apple-ET: 32
Content-Length: 32

PLYLZi;,D/
///////////////////////////// source data ///////////////////////////////
0000 52 54 53 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d RTSP/1.0 200 OK.
0010 0a 41 75 64 69 6f 2d 4a 61 63 6b 2d 53 74 61 74 .Audio-Jack-Stat
0020 75 73 3a 20 63 6f 6e 6e 65 63 74 65 64 3b 20 74 us: connected; t
0030 79 70 65 3d 61 6e 61 6c 6f 67 0d 0a 43 53 65 71 ype=analog..CSeq
0040 3a 20 31 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 : 1..Content-Typ
0050 65 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f e: application/o
0060 63 74 65 74 2d 73 74 72 65 61 6d 0d 0a 58 2d 41 ctet-stream..X-A
0070 70 70 6c 65 2d 45 54 3a 20 33 32 0d 0a 43 6f 6e pple-ET: 32..Con
0080 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 33 32 0d tent-Length: 32.
0090 0a 0d 0a 00 50 4c 59 03 01 04 00 00 00 00 14 e3 ....PLY.........
00a0 fd ed 4c 5a 84 69 3b 2c a9 d2 ea 81 44 ea 2f dc ..LZ.i;,....D./.
00b0 89 b0 f8 ...


C -> S
ANNOUNCE rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
X-Apple-Client-Name: Administrator iPad
CSeq: 2
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: application/sdp
Content-Length: 413
User-Agent: AirPlay/190.9

v=0
o=AirTunes 2678502128337240867 0 IN IP4 192.168.1.102
s=AirTunes
i=Administrator iPad
c=IN IP4 192.168.1.102
t=0 0
m=audio 0 RTP/AVP 96
a=rtpmap:96 AppleLossless
a=fmtp:96 352 0 16 40 10 14 2 255 0 0 44100
a=fpaeskey:RlBMWQECAQAAAAA8AAAAAJla/U7S5JEviZ+A1oTnbNMAAAAQrfDIumScz7MIUomjtmPUzhQfaQPMRSJxyyM0R2YVyYZiZA9Y
a=aesiv:5psu/j6jF5xvih7eihs6nw==
a=min-latency:11025
a=max-latency:88200


S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 2


C -> S
SETUP rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
Transport: RTP/AVP/UDP;unicast;mode=record;timing_port=51680;x-events;control_port=56860
CSeq: 3
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
User-Agent: AirPlay/190.9


S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 3
Transport: RTP/AVP/UDP;unicast;mode=record;timing_port=51680;x-events;control_port=56860;server_port=6000
Session: DEADBEEF


C -> S
RECORD rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
Range: npt=0-
X-Apple-Durations: b=4; c=75; au=12; an=36; sa=31
CSeq: 4
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
User-Agent: AirPlay/190.9

S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 4


C -> S
GET_PARAMETER rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
CSeq: 5
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: text/parameters
Content-Length: 8
User-Agent: AirPlay/190.9

volume


S -> C

RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 5


C -> S

SET_PARAMETER rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
CSeq: 6
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: text/parameters
Content-Length: 20
User-Agent: AirPlay/190.9

volume: -12.599998

S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 6


C -> S
FLUSH rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
RTP-Info: seq=28556;rtptime=815411575
CSeq: 7
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
User-Agent: AirPlay/190.9

S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 7

//may be there Repeated Silent ALAC Data by UDP
80606f8d309a2279000000000de9e7c36f2f3945d045b8149b8a1fd664c4e1d32fe0b94f8b90ad67​1b211aff

C -> S
SET_PARAMETER rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
RTP-Info: rtptime=815325169
CSeq: 8
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: image/none
Content-Length: 0
User-Agent: AirPlay/190.9

S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 8


C -> S
SET_PARAMETER rtsp://192.168.1.107/2678502128337240867 RTSP/1.0
RTP-Info: rtptime=815325169
CSeq: 9
X-Apple-Device-ID: 0x848e0ca6b315
DACP-ID: 35B1D18F7479EA25
Active-Remote: 3231744746
Content-Type: application/x-dmap-tagged
Content-Length: 164
User-Agent: AirPlay/190.9

mlitmper5pYZasalasarascpasgnminmelephantsdream-720-h264-st-aacastnastcasdnasdcasdkcapsastm

S -> C
RTSP/1.0 200 OK
Audio-Jack-Status: connected; type=analog
CSeq: 9


//may be there Repeated Silent ALAC Data by UDP
80606f8d309a2279000000000de9e7c36f2f3945d045b8149b8a1fd664c4e1d32fe0b94f8b90ad67​1b211aff
find quote
Memphiz Offline
Team-XBMC Developer
Posts: 10,158
Joined: Feb 2011
Reputation: 109
Location: germany
Post: #469
(Today 10:42)wwwidowntv Wrote:  same here - volume control option - doesn't work

What do you expect that option to do? Controlling volume over airplay only works for ios4 clients when doing video - but should work for all clients when streaming music only. Thats all it does. Controlling volume when airplaying video was ripped out by apple since ios5 ... (nothing we can do about it as its a client thingy not a xbmc thingy).

@AllenWang

while i really appreciate if people are sharing information about airplay - please remove all the clutter from your posts and paste it to pastebin.com and only put the links in here - or even better link to your github account with the code changes. Beside that - i am already aware of howto do the fp handshake to retrieve the key. As you already noticed this is only the small part.

See my patch for fp handshake here:

https://github.com/Memphiz/xbmc/commits/...phandshake

Also the fact that first an raop connection is made before video is known and xbmc handles that aswell (it was introduced by apple in ios5 and later clients...).

AppleTV2/iPhone/iPod: HowTo find debug logs and everything else which the devs like so much: click here
HowTo setup NFS for XBMC: Wiki NFS
HowTo configure avahi (zeroconf): Wiki Avahi
READ THE IOS FAQ!: iOS FAQ
(This post was last modified: Today 19:32 by Memphiz.)
find quote
Post Reply