Skip to content

Latest commit

 

History

History
835 lines (651 loc) · 21.4 KB

README.md

File metadata and controls

835 lines (651 loc) · 21.4 KB

Examples

Here are various real world examples listed to easier illustrate the general traffic flow.

Pairing and Connecting to a New Device {#new}

The following example was captured from a pairing session between the Apple Remote app (v 1.2) and the tvOS simulator (v 10.0, bundled with Xcode 8.3.3). It is unmodified and contains a few quirks.

CLIENT -> SERVER

HEX:

080f1224 39364133 41304542 2d333538 342d3436 34382d39
3238352d 32463737 31333937 43464238 2000a201 6c0a2433
46343930 3135432d 31353044 2d343644 302d4244 31362d32
41423836 33444338 34353512 11506965 72726573 20695068
6f6e6532 32321a06 6950686f 6e652206 31354134 30322a12
636f6d2e 6170706c 652e5456 52656d6f 74653205 3331382e
33380140 31480150 01

PROTOBUF:

type: DEVICE_INFO_MESSAGE
identifier: "96A3A0EB-3584-4648-9285-2F771397CFB8"
priority: 0
[deviceInfoMessage] {
  uniqueIdentifier: "3F49015C-150D-46D0-BD16-2AB863DC8455"
  name: "Pierres iPhone"
  localizedModelName: "iPhone"
  systemBuildVersion: "15A402"
  applicationBundleIdentifier: "com.apple.TVRemote"
  applicationBundleVersion: "318.3"
  protocolVersion: 1
}

SERVER -> CLIENT

HEX:

080f1224 39364133 41304542 2d333538 342d3436 34382d39
3238352d 32463737 31333937 43464238 2000a201 620a2431
44323531 4431422d 39383130 2d343334 462d3842 44422d39
45303332 36343934 45333512 0d694f53 2053696d 756c6174
6f721a03 4d616322 06313741 3430352a 16636f6d 2e617070
6c652e6d 65646961 72656d6f 74656438 01402d48 015001

PROTOBUF:

type: DEVICE_INFO_MESSAGE
identifier: "96A3A0EB-3584-4648-9285-2F771397CFB8"
priority: 0
[deviceInfoMessage] {
  uniqueIdentifier: "1D251D1B-9810-434F-8BDB-9E0326494E35"
  name: "iOS Simulator"
  localizedModelName: "Mac"
  systemBuildVersion: "17A405"
  applicationBundleIdentifier: "com.apple.mediaremoted"
  protocolVersion: 1
}

CLIENT -> SERVER

HEX:

08222000 ba022f0a 25060101 0320792a d34878f5 fb053162
2b6f3ef8 39ec5226 5b5a01ac 8ef956e9 9d0793bc 13061000
18012001 2803

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\001\003 y*\323Hx\365\373\0051b+o>\3709\354R&[Z\001\254\216\371V\351\235\007\223\274\023\006"
  status: 0
}

SERVER -> CLIENT

HEX:

08222000 ba02aa01 0a9f0105 786ae17f d49eb082 afb24875
f460a981 f4d0bd04 6596653a cdc2cf6b 7ba3b230 48f59fda
2449f7c0 e677dcc6 bbfe598e 079916b8 02cbd6b5 074c699c
674c4a55 d0e71bdb 28171810 36b7c0ee 20e9b601 13cf1823
f0428338 e8ccde28 b5290125 00bf815c 08efa9c5 bfa0c5d8
7eb2bb79 a3d0bf7d 289089d1 b4060102 0320ebce 5d1d7713
cb16bc9c e458fc1c 6efd317e 4d527969 3fd23546 cd098071
f2581000 18002000 2800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\005xj\341\177\324\236\260\202\257\262Hu\364`\251\201\364\320\275\004e\226e:\315\302\317k{\243\2620H\365\237\332$I\367\300\346w\334\306\273\376Y\216\007\231\026\270\002\313\326\265\007Li\234gLJU\320\347\033\333(\027\030\0206\267\300\356 \351\266\001\023\317\030#\360B\2038\350\314\336(\265)\001%\000\277\201\\\010\357\251\305\277\240\305\330~\262\273y\243\320\277}(\220\211\321\264\006\001\002\003 \353\316]\035w\023\313\026\274\234\344X\374\034n\3751~MRyi?\3225F\315\t\200q\362X"
  status: 0
}

CLIENT -> SERVER

HEX:

08222000 ba022f0a 25060101 03200ead b0e16cda feaca303
e3305b63 abfb70f4 d827cc89 8e31d20d ffe10bee 81791000
18012000 2803

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\001\003 \016\255\260\341l\332\376\254\243\003\3430[c\253\373p\364\330\'\314\211\2161\322\r\377\341\013\356\201y"
  status: 0
}

SERVER -> CLIENT

HEX:

ba021110 b9cbffff ffffffff ff011800 20002800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  status: -6727
}

CLIENT -> SERVER

HEX:

08222000 ba02100a 06000100 06010110 00180120 012802

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\000\001\000\006\001\001"
  status: 0
}

SERVER -> CLIENT

HEX:

08222000 ba02a403 0a990306 01020210 4dcc142d f0bc77b8
7d4a7336 2ca535b0 03ffc7b9 93647028 49edf363 5392b60d
a4e8f8b5 b6bfc0e3 90aaabe8 89c34e93 cf2db783 57c97d94
87fdc353 7a4d792e 8e7824dc 20df1fa4 47c17077 55699c96
3a84afb5 f507187c 8a0b124a 327db944 95f0ad46 819a2c48
07ab149e 40c32541 d9dd9c5e 8ee216f9 90a0ee34 19d33f0b
a06bdb44 70989273 77b26747 8dff110b fd51a9c8 fb30e1f6
a62fa2e9 4f4a8f6a 509bd96a 484b9c81 54222970 a9816531
77b06de2 d6445582 d9f2bbed dcb95646 65de8405 275f35f2 
716374bf dec868ca c8b5589e 65631563 3b1201f9 df7df177
d4d898a3 fea852e7 baab0032 5fe39773 ab79ea7c 20217a54
4cec1888 1d02b7e8 7dd44ee9 31c90832 443e78b6 f9229ea8
930381b1 14b1299b 93f725bd 1ce9c57e b6e5665c 16926b14
cee52cd9 509173da bb98d0ff fea55da2 f7121e11 1c027384
70fff1bb 6ead7ff7 95220e3d 585a8d98 44d661a8 123d1ce3
1c988fa4 ff40a9d4 53f87d51 fddb7e0a c592b8b6 9db28f19
a0e9b8ee 08a313ac cc659501 c62a895c 2bc96c91 fb6e8688
cf7a3407 c1fc4b8b 0ee76530 10001800 20002800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\002\002\020M\314\024-\360\274w\270}Js6,\2455\260\003\377\307\271\223dp(I\355\363cS\222\266\r\244\350\370\265\266\277\300\343\220\252\253\350\211\303N\223\317-\267\203W\311}\224\207\375\303SzMy.\216x$\334 \337\037\244G\301pwUi\234\226:\204\257\265\365\007\030|\212\013\022J2}\271D\225\360\255F\201\232,H\007\253\024\236@\303%A\331\335\234^\216\342\026\371\220\240\3564\031\323?\013\240k\333Dp\230\222sw\262gG\215\377\021\013\375Q\251\310\3730\341\366\246/\242\351OJ\217jP\233\331jHK\234\201T\")p\251\201e1w\260m\342\326DU\202\331\362\273\355\334\271VFe\336\204\005\'_5\362qct\277\336\310h\312\310\265X\236ec\025c;\022\001\371\337}\361w\324\330\230\243\376\250R\347\272\253\0002_\343\227s\253y\352| !zTL\354\030\210\035\002\267\350}\324N\3511\311\0102D>x\266\371\"\236\250\223\003\201\261\024\261)\233\223\367%\275\034\351\305~\266\345f\\\026\222k\024\316\345,\331P\221s\332\273\230\320\377\376\245]\242\367\022\036\021\034\002s\204p\377\361\273n\255\177\367\225\"\016=XZ\215\230D\326a\250\022=\034\343\034\230\217\244\377@\251\324S\370}Q\375\333~\n\305\222\270\266\235\262\217\031\240\351\270\356\010\243\023\254\314e\225\001\306*\211\\+\311l\221\373n\206\210\317z4\007\301\374K\213\016\347e0"
  status: 0
}

CLIENT -> SERVER

HEX:

08222000 ba02d403 0ac90306 010303ff c9177870 a07d191e
1f1d8d0d 6e394d43 f60aa548 0b8a9d14 96715cfc 602a3dbf
2be4d62e 742c1e59 ad8b7d4a 24bc32fd 344a5fd9 57e9774c
e7ee8731 88070947 5fdc8d60 0065fe48 f65fb218 888dc9c6
04b1f3e0 629f1b96 27704f61 fcf84503 ee689f39 64c5860b
0a7e5939 d1c86a06 3aa5f8b2 cc3ac851 11d1fb78 d7ff1a53
c1296758 9d7b1e38 89a4d402 136fe6c1 4ee87be0 18328b2a
961f2623 dcbb6309 720300e2 1641336f e779ead9 8de951bb
6031f85e c81e67a3 b1c78ae6 698be4ea b29e9785 ff591f2b
2098f344 d9e1ace9 a53d5b18 173fcfb4 85742e38 7f13e101
7d7b7a20 2831c5a4 c573741d a3b554a6 630a33be f8be1640
f59d95e7 d554e103 81c286d3 b6f8652d a03a310e a6bbad81
d5509c23 4bc65c57 db61f8f3 f9898348 891930b1 5b400748
abbf43b2 1cc8e25a 4a575e4d cba2f467 72a7c06c 8201d231
c6dafba7 9254a5a8 70d15461 35edde77 eda935cd a780660b
59001922 267ddc6c 75ed6dc4 ffc19dc2 adcc822e 1930340b
72ee40c4 b1c4e247 4b46e33e d23d8b1d 87a70440 c3a3b69c
0dab0874 98767495 9c2ec91d c30f6e73 e6b78f13 84be3624
e9fad86e 7cbc7547 d40ef9a0 bde809df a69bb9c2 33f36322
13444c0a 66d6b751 ca800181 10001800 20012802

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\003\003\377\311\027xp\240}\031\036\037\035\215\rn9MC\366\n\245H\013\212\235\024\226q\\\374`*=\277+\344\326.t,\036Y\255\213}J$\2742\3754J_\331W\351wL\347\356\2071\210\007\tG_\334\215`\000e\376H\366_\262\030\210\215\311\306\004\261\363\340b\237\033\226\'pOa\374\370E\003\356h\2379d\305\206\013\n~Y9\321\310j\006:\245\370\262\314:\310Q\021\321\373x\327\377\032S\301)gX\235{\0368\211\244\324\002\023o\346\301N\350{\340\0302\213*\226\037&#\334\273c\tr\003\000\342\026A3o\347y\352\331\215\351Q\273`1\370^\310\036g\243\261\307\212\346i\213\344\352\262\236\227\205\377Y\037+ \230\363D\331\341\254\351\245=[\030\027?\317\264\205t.8\177\023\341\001}{z (1\305\244\305st\035\243\265T\246c\n3\276\370\276\026@\365\235\225\347\325T\341\003\201\302\206\323\266\370e-\240:1\016\246\273\255\201\325P\234#K\306\\W\333a\370\363\371\211\203H\211\0310\261[@\007H\253\277C\262\034\310\342ZJW^M\313\242\364gr\247\300l\202\001\3221\306\332\373\247\222T\245\250p\321Ta5\355\336w\355\2515\315\247\200f\013Y\000\031\"&}\334lu\355m\304\377\301\235\302\255\314\202.\03104\013r\356@\304\261\304\342GKF\343>\322=\213\035\207\247\004@\303\243\266\234\r\253\010t\230vt\225\234.\311\035\303\017ns\346\267\217\023\204\2766$\351\372\330n|\274uG\324\016\371\240\275\350\t\337\246\233\271\3023\363c\"\023DL\nf\326\267Q\312\200\001\201"
  status: 0
}

SERVER -> CLIENT

HEX:

08222000 ba024f0a 45060104 04407b51 c93c48a2 5362205a
eb334093 6005b14e ab470050 b59fe78d 14e46fd7 33a9c966
ca441b4f b9ef64e3 e5534596 f1f198ec 2241d53e 05750c5e
b7a01108 478e1000 18002000 2800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\004\004@{Q\311<H\242Sb Z\3533@\223`\005\261N\253G\000P\265\237\347\215\024\344o\3273\251\311f\312D\033O\271\357d\343\345SE\226\361\361\230\354\"A\325>\005u\014^\267\240\021\010G\216"
  status: 0
}

CLIENT -> SERVER

HEX:

08222000 ba029e02 0a930205 ff6a5e2a 0af07306 a061cf9c
31026147 a2c89f7b 8ecd5c12 e89db1e6 77c81e88 333d9467
5b280e65 bb803c80 74b37355 45b90aa9 34ca85f8 4d884d4e
653fef35 8c6a7da2 ac44ff10 45527fe9 9c89f05f 2b5ab993
430b300b 95b809f9 c1d1e66f fc87914c 12cfd997 54d89280
6be545b2 5bb57956 dcb12044 3ae56308 88015c75 074c1f7e
d086ffdc bb3c1a33 4c574245 b0c18dcc 20e11f64 9535c2b9
126a5c5e 5462320f 1dc46587 23ce35bc 5f925922 a3c48ffd
9da7c832 bd0e2756 8a413264 e2823e66 0586ab1e f07ca874
5771b33c a0567596 f3e609a3 fae52b78 87174635 e764b5b0
d83ed6e5 2d0a63b3 cbdfcfd4 4eb95714 c46cada9 0aa07c36
2e08bfc2 050d9aef 085d03d9 f75231a6 e8796106 01051000
18002001 2802

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\005\377j^*\n\360s\006\240a\317\2341\002aG\242\310\237{\216\315\\\022\350\235\261\346w\310\036\2103=\224g[(\016e\273\200<\200t\263sUE\271\n\2514\312\205\370M\210MNe?\3575\214j}\242\254D\377\020ER\177\351\234\211\360_+Z\271\223C\0130\013\225\270\t\371\301\321\346o\374\207\221L\022\317\331\227T\330\222\200k\345E\262[\265yV\334\261 D:\345c\010\210\001\\u\007L\037~\320\206\377\334\273<\0323LWBE\260\301\215\314 \341\037d\2255\302\271\022j\\^Tb2\017\035\304e\207#\3165\274_\222Y\"\243\304\217\375\235\247\3102\275\016\'V\212A2d\342\202>f\005\206\253\036\360|\250tWq\263<\240Vu\226\363\346\t\243\372\345+x\207\027F5\347d\265\260\330>\326\345-\nc\263\313\337\317\324N\271W\024\304l\255\251\n\240|6.\010\277\302\005\r\232\357\010]\003\331\367R1\246\350ya\006\001\005"
  status: 0
}

SERVER -> CLIENT

HEX:

08222000 ba02ac02 0aa10205 ff1cf0f7 5a527ab2 48c38b07
ae2f50ef 9cb6061e e3f30325 675e82ef 8fdda710 6a41e2d0
90303ed7 6f302cd6 0aeab422 e5c655da bde823d9 34f105f0
761129a2 4dd62d1d 53fad7b7 40a5957c 768ccfcd bf56e557
22322266 7ddfd9dd ff76a4bd ba280719 83633a3a d5852e7b
9b55d867 e5243c7d acd313cc 1554d80d 6b8b273a 884ab21d
2cf89d8e 66b26e69 fac0ecee bd902fb1 31ba8830 8419b146
21265d11 3a7c0057 ff519237 ff794d7d 6254a130 b50e6068
629b4807 15c12ec1 3489f517 57c846b3 a3226234 4610ce4f
a35a1946 fadd2e2f d5ca64d0 0fd1b42b b93abb78 72d96675
7f81460c 4c11975a 212f3cf3 f0caffda 928e1d48 50c48f26
b903f616 051bcd7c d9939be6 74000263 3def7448 a4a9af9f
31e6ac1c dc4ece12 e0060106 10001800 20002800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\005\377\034\360\367ZRz\262H\303\213\007\256/P\357\234\266\006\036\343\363\003%g^\202\357\217\335\247\020jA\342\320\2200>\327o0,\326\n\352\264\"\345\306U\332\275\350#\3314\361\005\360v\021)\242M\326-\035S\372\327\267@\245\225|v\214\317\315\277V\345W\"2\"f}\337\331\335\377v\244\275\272(\007\031\203c::\325\205.{\233U\330g\345$<}\254\323\023\314\025T\330\rk\213\':\210J\262\035,\370\235\216f\262ni\372\300\354\356\275\220/\2611\272\2100\204\031\261F!&]\021:|\000W\377Q\2227\377yM}bT\2410\265\016`hb\233H\007\025\301.\3014\211\365\027W\310F\263\243\"b4F\020\316O\243Z\031F\372\335./\325\312d\320\017\321\264+\271:\273xr\331fu\177\201F\014L\021\227Z!/<\363\360\312\377\332\222\216\035HP\304\217&\271\003\366\026\005\033\315|\331\223\233\346t\000\002c=\357tH\244\251\257\2371\346\254\034\334N\316\022\340\006\001\006"
  status: 0
}

CLIENT -> SERVER

HEX:

08222000 ba022f0a 25060101 0320dc43 5f050866 66073544
9c7980d0 f3344322 02b620b7 d93fb5f8 b766c8f6 20321000
18002001 2803

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\001\003 \334C_\005\010ff\0075D\234y\200\320\3634C\"\002\266 \267\331?\265\370\267f\310\366 2"
  status: 0
}

SERVER -> CLIENT

HEX:

08222000 ba02aa01 0a9f0105 788af928 37ebb9a1 3955ec49
e2c40dc2 7f8419c7 89fc0c87 a9dc4e95 5080b69f 97994508
5691a747 072ca6ed 11551850 b981262c 437a17cc cf24582d
47b470d9 b79bf077 97906a67 cbd1eb33 8c54f400 e6014122
c6b3a467 3638d2cd a3f2032b ed0096c2 d25cb69f 471b0428
f11a4631 09e296b1 5d3ecabe 3d060102 0320e7b9 2b1c1bde
3fa54a29 6bb1d388 8d82ed24 4af92da2 b1e45931 af4a29c7
074b1000 18002000 2800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\005x\212\371(7\353\271\2419U\354I\342\304\r\302\177\204\031\307\211\374\014\207\251\334N\225P\200\266\237\227\231E\010V\221\247G\007,\246\355\021U\030P\271\201&,Cz\027\314\317$X-G\264p\331\267\233\360w\227\220jg\313\321\3533\214T\364\000\346\001A\"\306\263\244g68\322\315\243\362\003+\355\000\226\302\322\\\266\237G\033\004(\361\032F1\t\342\226\261]>\312\276=\006\001\002\003 \347\271+\034\033\336?\245J)k\261\323\210\215\202\355$J\371-\242\261\344Y1\257J)\307\007K"
  status: 0
}

CLIENT -> SERVER

HEX:

08222000 ba028701 0a7d0578 26cb6040 0b2d7a0a 33017830
632669db 87fde139 eeb59346 a2660103 77b84984 dc969604
14b875b5 00d44f6a 0abb08e8 29008d63 09e63cea ee630bba
6d8cd1bf e3e41717 154ef22b b8c043d8 97d63dbb 1fdd58a8
19c55db6 926e5d1b 44276bcb 2c933321 9404daf4 e0beb2e9
95afa8df 42008598 ce5aceac 06010310 00180020 012803

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\005x&\313`@\013-z\n3\001x0c&i\333\207\375\3419\356\265\223F\242f\001\003w\270I\204\334\226\226\004\024\270u\265\000\324Oj\n\273\010\350)\000\215c\t\346<\352\356c\013\272m\214\321\277\343\344\027\027\025N\362+\270\300C\330\227\326=\273\037\335X\250\031\305]\266\222n]\033D\'k\313,\2233!\224\004\332\364\340\276\262\351\225\257\250\337B\000\205\230\316Z\316\254\006\001\003"
  status: 0
}

SERVER -> CLIENT

HEX:

08222000 ba020d0a 03060104 10001800 20002800

PROTOBUF:

type: CRYPTO_PAIRING_MESSAGE
priority: 0
[cryptoPairingMessage] {
  pairingData: "\006\001\004"
  status: 0
}

All messages below this line are encrypted using Chacha20Poly1305.

CLIENT -> SERVER

HEX:

08262000 d2020208 02

PROTOBUF:

type: SET_CONNECTION_STATE
priority: 0
[setConnectionStateMessage] {
  state: Connected
}

CLIENT -> SERVER

HEX:

08102000 aa010808 00100018 012001

PROTOBUF:

type: CLIENT_UPDATES_CONFIG_MESSAGE
priority: 0
[clientUpdatesConfigMessage] {
  artworkUpdates: false
  nowPlayingUpdates: false
  volumeUpdates: true
  keyboardUpdates: true
}

SERVER -> CLIENT

HEX:

08162000 da010208 00

PROTOBUF:

type: REGISTER_FOR_GAME_CONTROLLER_EVENTS_MESSAGE
priority: 0
[registerForGameControllerEventsMessage] {
  inputModeFlags: None
}

SERVER -> CLIENT

HEX:

08282000 e2020208 00

PROTOBUF:

type: SET_HILITE_MODE_MESSAGE
priority: 0
[setHiliteModeMessage] {
  hiliteMode: 0
}

SERVER -> CLIENT

HEX:

08112000 b2010208 00

PROTOBUF:

type: VOLUME_CONTROL_AVAILABILITY_MESSAGE
priority: 0
[volumeControlAvailabilityMessage] {
  volumeControlAvailable: false
}

CLIENT -> SERVER

HEX:

081c1224 45383536 38314231 2d304546 412d3446 31332d42
3335422d 41453237 34393046 39363845 20008a02 89020a86
020a8001 0a7e6270 6c697374 3030d301 02030405 065f100f
41565361 6d706c65 52617465 4b65795d 4156466f 726d6174
49444b65 795f1015 41564e75 6d626572 4f664368 616e6e65
6c734b65 792340cf 40000000 0000126f 70757310 01080f21
2f475055 00000000 00000101 00000000 00000007 00000000
00000000 00000000 00000057 1280010a 7e62706c 69737430
30d30102 03040506 5f100f41 5653616d 706c6552 6174654b
65795d41 56466f72 6d617449 444b6579 5f101541 564e756d
6265724f 66436861 6e6e656c 734b6579 2340cf40 00000000
00126f70 75731001 080f212f 47505500 00000000 00010100
00000000 00000700 00000000 00000000 00000000 000057

PROTOBUF:

type: REGISTER_VOICE_INPUT_DEVICE_MESSAGE
identifier: "E85681B1-0EFA-4F13-B35B-AE27490F968E"
priority: 0
[registerVoiceInputDeviceMessage] {
  deviceDescriptor {
    defaultFormat {
      formatSettingsPlistData: "bplist00\323\001\002\003\004\005\006_\020\017AVSampleRateKey]AVFormatIDKey_\020\025AVNumberOfChannelsKey#@\317@\000\000\000\000\000\022opus\020\001\010\017!/GPU\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000W"
    }
    supportedFormats {
      formatSettingsPlistData: "bplist00\323\001\002\003\004\005\006_\020\017AVSampleRateKey]AVFormatIDKey_\020\025AVNumberOfChannelsKey#@\317@\000\000\000\000\000\022opus\020\001\010\017!/GPU\000\000\000\000\000\000\001\001\000\000\000\000\000\000\000\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000W"
    }
  }
}

CLIENT -> SERVER

HEX:

08292000 ea0200

PROTOBUF:

type: WAKE_DEVICE_MESSAGE
priority: 0

CLIENT -> SERVER

HEX:

08102000 aa010808 01100018 012001

PROTOBUF:

type: CLIENT_UPDATES_CONFIG_MESSAGE
priority: 0
[clientUpdatesConfigMessage] {
  artworkUpdates: true
  nowPlayingUpdates: false
  volumeUpdates: true
  keyboardUpdates: true
}

CLIENT -> SERVER

HEX:

08102000 aa010808 01100118 012001

PROTOBUF:

type: CLIENT_UPDATES_CONFIG_MESSAGE
priority: 0
[clientUpdatesConfigMessage] {
  artworkUpdates: true
  nowPlayingUpdates: true
  volumeUpdates: true
  keyboardUpdates: true
}

CLIENT -> SERVER

HEX:

08102000 aa010808 01100118 002001

PROTOBUF:

type: CLIENT_UPDATES_CONFIG_MESSAGE
priority: 0
[clientUpdatesConfigMessage] {
  artworkUpdates: true
  nowPlayingUpdates: true
  volumeUpdates: false
  keyboardUpdates: true
}

CLIENT -> SERVER

HEX:

08061224 46384146 34334242 2d453832 362d3442 34362d39
4634392d 34413337 34333439 42374432 20005a10 0a0e0800
10001d00 007a4425 00007a44

PROTOBUF:

type: REGISTER_HID_DEVICE_MESSAGE
identifier: "F8AF43BB-E826-4B46-9F49-4A374349B7D2"
priority: 0
[registerHIDDeviceMessage] {
  deviceDescriptor {
    absolute: false
    integratedDisplay: false
    screenSizeWidth: 1000.0
    screenSizeHeight: 1000.0
  }
}

CLIENT -> SERVER

HEX:

08102000 aa010808 01100118 012001

PROTOBUF:

type: CLIENT_UPDATES_CONFIG_MESSAGE
priority: 0
[clientUpdatesConfigMessage] {
  artworkUpdates: true
  nowPlayingUpdates: true
  volumeUpdates: true
  keyboardUpdates: true
}

SERVER -> CLIENT

HEX:

080b2000 82012d0a 2b6b4d52 54656c65 76697369 6f6e5265
6d6f7465 4e6f7750 6c617969 6e674172 74776f72 6b436861
6e676564

PROTOBUF:

type: NOTIFICATION_MESSAGE
priority: 0
[notificationMessage] {
  notification: "kMRTelevisionRemoteNowPlayingArtworkChanged"
}

SERVER -> CLIENT

HEX:

08071224 46384146 34334242 2d453832 362d3442 34362d39
4634392d 34413337 34333439 42374432 20006204 08001001

PROTOBUF:

type: REGISTER_HID_DEVICE_RESULT_MESSAGE
identifier: "F8AF43BB-E826-4B46-9F49-4A374349B7D2"
priority: 0
[registerHIDDeviceResultMessage] {
  errorCode: 0
  deviceIdentifier: 1
}

SERVER -> CLIENT

HEX:

08112000 b2010208 00

PROTOBUF:

type: VOLUME_CONTROL_AVAILABILITY_MESSAGE
priority: 0
[volumeControlAvailabilityMessage] {
  volumeControlAvailable: false
}

SERVER -> CLIENT

HEX:

08042000 4a041200 3002

PROTOBUF:

type: SET_STATE_MESSAGE
priority: 0
[setStateMessage] {
  supportedCommands {
  }
  playbackState: Paused
}

SERVER -> CLIENT

HEX:

081d1224 45383536 38314231 2d304546 412d3446 31332d42
3335422d 41453237 34393046 39363845 20009202 04080110
00

PROTOBUF:

type: REGISTER_VOICE_INPUT_DEVICE_RESPONSE_MESSAGE
identifier: "E85681B1-0EFA-4F13-B35B-AE27490F968E"
priority: 0
[registerVoiceInputDeviceResponseMessage] {
  deviceID: 1
  errorCode: 0
}

SERVER -> CLIENT

HEX:

08052000 5200

PROTOBUF:

type: SET_ARTWORK_MESSAGE
priority: 0
[setArtworkMessage] {
}

SERVER -> CLIENT

HEX:

080b2000 82012d0a 2b6b4d52 54656c65 76697369 6f6e5265
6d6f7465 4e6f7750 6c617969 6e674172 74776f72 6b436861
6e676564

PROTOBUF:

type: NOTIFICATION_MESSAGE
priority: 0
[notificationMessage] {
  notification: "kMRTelevisionRemoteNowPlayingArtworkChanged"
}

SERVER -> CLIENT

HEX:

08052000 5200

PROTOBUF:

type: SET_ARTWORK_MESSAGE
priority: 0
[setArtworkMessage] {
}