AirTunes/AirPlay

From MythTV Official Wiki
Revision as of 19:19, 29 April 2012 by Dbadia (talk | contribs)

Jump to: navigation, search

MythTV 0.25 added support for AirTunes and AirPlay for streaming audio and video from iOS devices to MythFrontend.


Important.png Note: Please note - AirPlay (video support) is experimental at this time. Although AirPlay and AirTunes will work from various iOS devices (i.e., iPod touch, iPhone, iPad), it does not currently work when trying to stream from iTunes.

Enabling AirTunes

AirTunes does not work out the box because AirTunes is a proprietary format and is encrypted in order to enable vendor lock-in. Fortunately the encryption key has been discovered which enables use of AirTunes in open source applications such as MythTV.

When starting the frontend, you will get the following message in the log:

 RAOP Conn: Failed to read key from: /home/<user>/.mythtv/RAOPKey.rsa

You can obtain the key from this post at the vlc-devel mailing list or from google's cache.

Simply copy the entire section:-

 -----BEGIN RSA PRIVATE KEY-----
 (and everything inbetween)
 -----END RSA PRIVATE KEY-----

Paste into a new file at /home/<user>/.mythtv/RAOPKey.rsa and restart your frontend.

The correct RAOPKey.rsa file will have the SHA-1 sum 35a168eaecec4d3c31424bba54de5ca0a058c24a. You can check this with the command

 shell> shasum ~/.mythtv/RAOPKey.rsa

Enabling AirPlay (video support)

Because AirPlay support is experimental, you have to manually enable it at the command line.

Enabling In All Operating Systems

Set the environment variable named MYTHTV_AIRPLAY before starting the frontend from the command line, for example:-

shell> export MYTHTV_AIRPLAY="1"
shell> mythfrontend

where shell> denotes the command-line prompt, not something you type.

Permanently Enabling in OSX Finder

If you want it enabled for starting MythFrontend from the Finder, run

shell> echo setenv MYTHTV_AIRPLAY 1 | launchctl

and if you want it enabled this way permanently then run

shell> echo setenv MYTHTV_AIRPLAY 1 >> ~/.launchd.conf

Troubleshooting

if you see a message like the following in your logs, you can lookup the error code below

RAOPDevice bonjourregister.cpp:56 (Register) - Bonjour: Error: -65563


(taken from the freely available mDNSResponder source code)

   kDNSServiceErr_Unknown                   = -65537,  /* 0xFFFE FFFF */
   kDNSServiceErr_NoSuchName                = -65538,
   kDNSServiceErr_NoMemory                  = -65539,
   kDNSServiceErr_BadParam                  = -65540,
   kDNSServiceErr_BadReference              = -65541,
   kDNSServiceErr_BadState                  = -65542,
   kDNSServiceErr_BadFlags                  = -65543,
   kDNSServiceErr_Unsupported               = -65544,
   kDNSServiceErr_NotInitialized            = -65545,
   kDNSServiceErr_AlreadyRegistered         = -65547,
   kDNSServiceErr_NameConflict              = -65548,
   kDNSServiceErr_Invalid                   = -65549,
   kDNSServiceErr_Firewall                  = -65550,
   kDNSServiceErr_Incompatible              = -65551,  /* client library incompatible with daemon */
   kDNSServiceErr_BadInterfaceIndex         = -65552,
   kDNSServiceErr_Refused                   = -65553,
   kDNSServiceErr_NoSuchRecord              = -65554,
   kDNSServiceErr_NoAuth                    = -65555,
   kDNSServiceErr_NoSuchKey                 = -65556,
   kDNSServiceErr_NATTraversal              = -65557,
   kDNSServiceErr_DoubleNAT                 = -65558,
   kDNSServiceErr_BadTime                   = -65559,  /* Codes up to here existed in Tiger */
   kDNSServiceErr_BadSig                    = -65560,
   kDNSServiceErr_BadKey                    = -65561,
   kDNSServiceErr_Transient                 = -65562,
   kDNSServiceErr_ServiceNotRunning         = -65563,  /* Background daemon not running */
   kDNSServiceErr_NATPortMappingUnsupported = -65564,  /* NAT doesn't support NAT-PMP or UPnP */
   kDNSServiceErr_NATPortMappingDisabled    = -65565,  /* NAT supports NAT-PMP or UPnP but it's disabled by the administrator */
   kDNSServiceErr_NoRouter                  = -65566,  /* No router currently configured (probably no network connectivity) */
   kDNSServiceErr_PollingMode               = -65567,
   kDNSServiceErr_Timeout                   = -65568