June 20 2007 Patch (aka the YouTube Patch)

From AwkwardTV
Revision as of 14:34, 20 June 2007 by AK2007 (talk | contribs) (Safe Update)
Jump to: navigation, search


As described in the Patch Over Network article, the AppleTV goes out to mesu.apple.com perodically and checks for updates, much like Software Update on "real" OS X works.

The DMG is accessible from http://mesu.apple.com/data/OS/061-2988.20070620.bHy75/2Z694-5248-45.dmg. It weighs in at 179MB (188,072,708 bytes)

**Forum discussions are located here"**

Full file listing of the disk image

file list is here

What has changed in the update from the original vanilla factory image?

Diff file is here

Added Items

  • A new appliance with YouTube integration: YT.frappliance.
  • A new screensaver: slideshow.frss.
  • A new version of BackRow.framework, now updated to version 2.1 (seems to be the one used in the WWDC Leopard release).
  • A new framework, AppleTV.framework, containing everything AppleTV-specific from BackRow version 2.0 (screensavers, hardware, sw update).

Removed Items

  • Most of the OS X installation is gone: LoginPlugins, OpenDirectory plugins, Printing support frameworks, many support apps and suchlike.
  • All remote filesystem support is gone: automount, mount_afp, mount_smbfs, mount_webdav, etc.
  • AppleFileServer is gone. The symlink in /usr/sbin remains, but the app in /System/Library/CoreServices is gone.
  • VNC

Tweaking Plugins to work with BackRow v2.1

Two things must be changed to make appliance plugins compatible with BackRow v2.1:

  • Change the CFBundleIdentifier in your appliance's Info.plist so it begins with "com.apple.frontrow.appliance".
  • Change the fake class name returned from the +className override to something like "RUIMoviesAppliance".

In the new version of the BackRow framework, there is a new class called BRFeatureManager. This uses strings to record whether certain features are enabled or disabled (the strings/keys are entirely arbitrary btw, so we can use this ourselves). I believe this is mostly designed to enable parental controls, but the part of the implementation as it concerns the main menu now filtering appliances goes like this:

  1. BRFeatureManager looks up the given 'key', which in this case is an appliance plugin's CFBundleIdentifier.
  2. If the key is present in the feature dictionary, it returns the YES or NO depending on the object for that key (an NSNumber).
  3. If the key is not present, it checks whether the key begins with "com.apple.frontrow.appliance".
  4. If it does, the manager returns YES, enabled. Otherwise it returns NO, not enabled.

So, it looks like the simplest way to get past the new BRFeatureManager in a backward-compatible way is simply to change your bundle identifiers. The other alternative is to add this initialize function to your principal class:

+ (void) initialize
    Class cls = NSClassFromString( @"BRFeatureManager" );
    if ( cls == Nil )

    [[cls sharedInstance] enableFeatureNamed: [[NSBundle bundleForClass: self] bundleIdentifier];

What is known about the update so far

-It will erase any modifications you've made to the Apple TV OS such as installing SSH, AFS, and special network mounts, however your Media partition will stay intact.

-All plugins will need to be tweaked and recompiled to work under the new firmware due to changes in the BackRow Classes.

-The firmware update seems to contain everything you would need to make your own patchstick legally without having to open up your Apple TV. It may also be possible to do a DNS Redirection for the update server url and point the Apple TV to your own customized filesystem updating the ATV over the network with an OS that has all of your plugins and settings pre-installed.

-Most network filesystem support has been removed

-The update includes some new code called: 'RUIDVDAppliance' This could mean a HD DVD / BlueRay addon for Apple TV is in the works?!?

-There appears to be support for pin-code protected parental controls

Safe Update

The update patch removes several features including File Sharing network etc, and other than the items listed below has no other ehancements. You also lose all customizations and hacks. An alternative method can be used for updating. Using this method will preserve all your hacks and changes to the system. The plugins wil have to be added again:

 0. Don't update the AppleTV using the update feature
 1. Backup /System/Library/Frameworks/Backrow.Framework
 2. Backup /System/Library/CoreServices/Finder.app
 3. Download the update dmg file from the link above
 4. Open the dmg file and locate Backrow.Framework and AppleTV.Framework and copy them to /System/Library/Frameworks on AppleTV
 5. Locate Finder.app from the updates dmg and copy it to /System/Library/CoreServices on AppleTV
 6. optional - insert       mesu.apple.com in the /etc/hosts on AppleTV so it can't reach the update server

-- Not verified, if someone verifies this please update this section with steps --

This means If your system has already been updated you should be able to do a factory restore, patch the system again to get ssh then the follow the above steps, that way you will not lose the network connectivity and other features that have been removed.