From AwkwardTV
Revision as of 09:56, 21 March 2008 by Nito (talk | contribs) (Smart Installer)
Jump to: navigation, search


Current Version: 0.3.1
0.3.1 Download Location: direct download
0.3.1 Forum Discussion: awkwardTV Forum
0.2.7 Plugin Location: awkwardTV Plugin page
Release date: Feb 11th, 2008

This appliance is a front end for the popular mplayer media player ( perian and Apple's DVDPlayback.framework (if installed) You can create playlists and add files or folders of your choice. By now it should support just about any media format. Create afp, nfs and samba mounts (with bonjour support) Install the kextloader, a variety of kexts/frameworks/binaries, perian, mplayer codecs, perform the safe update, play nes, snes, genesis, game gear and gameboy advanced roms, view RSS feeds and 3-day Weather forecast, and much much more!

This appliance is Copyright © 2007-2008 nito llc. All Rights Reserved.

Whats New

0.3.1 - Pizza on Demand major improvements, Improved playlist navigation, straight to files improved, dvd alerts, Perian installer updated for 1.1 and more.

0.3.0 - Pizza on Demand, Data store changes, vastly improved playlist management/playback , dvd improvements, file copying, WebKit installer, Weather manager and the Straight to files mode.

Will update the wiki later tonight (jan 19th) with more information on the new features.

0.2.7 - RSS feeds, Weather forecast, self updater, ROM screenshots and as always bug fixes.

0.2.6 - More emulators (GameBoy Advanced and Game Gear), Freeze/Defrost emulator states, fixed broken symbolic link lockup bug.

0.2.5 FINAL - EMULATORS!, UI editor for suffixes/file extensions, UI editor for mplayer arguments, UI editor for volume blacklists, nice new icons, music now playing indicator, ITunesFS installer, file suffixes removed from the file listing, console log changes, and of course bug fixes.

0.2.5b10 - Unplayed markers, music playback, photo streaming, quicktime volume / audio toggling and sub toggling, better qt playlists, qt on screen display and major bug fixes.

0.2.5b9 - As promised we have updated the wiki, i'll do some further updates pretty soon but this should be sufficient for now. The smart installer will work from network mounts, mach_kernel.prelink USB patching, file size toggling, volume blacklisting, and custom mount link paths

0.2.2 has only two changes we we're going to add more but got sidetracked making this version work with the new update that came out yesterday. The blue unplayed podcast icon is appending to the DVD that is perceived to be the longest. The other change is the upgrade compatibility. We'll have some exciting new features in the next version we promise.

Take 2 Status

We are up and running in Take 2 with most of the options restored from 1.x based versions.


very special thanks goes to brandon holland for providing code examples for take 2 re-write

Pizza on Demand

0.3.1 Brings some nice new features to the table:

1. No more safari
2. Multiple unique pizzas
3. Sides (Domino's only)
4. Faster & More stable


Pizza on Demand has a few essential requirements before it can function properly.

1. WebKit (Choose install software from the POD menu and then webkit installer)
2. UI Scripting enabled (this should be done during the installation of WebKit)
3. Must be in the US (sorry hope to expand this later)
4. Pre-existing accounts on Papa Johns and/or Dominos online
5. Configure the accounts (Edit account Information from POD menu)

POD in Action

After choosing place order nitoWeb will be launched and scripted (similar to the emulators being scripted) to fill out your order. Since nitoWeb is our own little mini stripped down browser (weighing in at under 100k) this allowed us much more control over when to execute each page of script, this allows much faster and smoother scripting to be done. once the order is complete if no errors occured it should return to the main pod menu, if there was an error you should get some indication of what it was.


In 0.2.6 we introduced two more emulators from Richard Bannister. Boycott Advance and SMS Plus for Gameboy Advance Emulation and Game Gear / Sega Master System emulation respectively.

All three of the emulators added in nitoTV 0.2.5 final are written by Richard Bannister. NES (Nintendo/Famicom emulation) is done through Nestopia, Super Nintendo emulation is done through BSNes and Sega Genesis emulation is done through Genesis Plus. To get USB controllers to work we also install Emulator Enhancer.


To install all of these components listed about just go to Settings > Install Software > Install Emulators.

NOTE: If you have installed nitoTV through the ATVloader make sure to run the Helper Permission Fix from this page Before running Install Emulators. nitoTV needs to enable Assisstive Devices to do some UI scripting necessary for proper operation of the emulators.

USB Controller Setup

The easiest way to configure a USB controller to work with the AppleTV requires a mac (i will get into a way to do it without a mac soon, will take a lot more explanation) Download each of the emulators as well as the emulator enhancer (links above) and run each one with the USB controller already connected. If you have the emulator enhancer installed properly it will give you a message about the USB controller not being configured. After pressing OK you will get a tabbed preference window and the "Joysticks" tab will be selected. In here you will see a table view with two columns, in the left column you will see the relevant buttons for that particular emulator (ie Pl Left, P1 Right, P1 Down, P1 Up, P1 Select, P1 Start, P1 A etc.) Click on the first row (Should be P1 Left) and then press the "Set" button on the bottom, after that hit the corresponding button on your USB controller. Continue this until all the P1's are filled in. If you have more than one controller then repeat the same steps with the items that are prefixed with P2. Go through this entire process with all five emulators. (different keymaps for each system are required since there are different button layouts with each)

NOTE: You may also assign controller buttons to "Quick Freeze" and "Quick Defrost", This will enable you to freeze and defrost game states without using the Apple remote and do everything on the actual game controller instead. (except for BSNES which does not support freeze and defrost)

NOTE 2: There have recently been some reports that using two identical controllers will NOT work on the AppleTV, so if you are buying 2 usb controllers (or a second one) specifically to work on the AppleTV make sure they are different or there is a good chance it won't work properly.

After this process is complete you will have five seperate preference files (located inside ~/Library/Preferences)


Copy each of these preference files into ~/Library/Preferences on the AppleTV.

NOTE: Be certain to do this BEFORE trying to select any games in the UI, otherwise you will need to go through the steps on the AppleTV, which would be a bit more tedious. (i will cover that process a bit later)

Playing Games

Each emulator has a suffix (or two) attributed to it. nes is for Nintendo roms, smc for Super Nintendo roms, smd/sms for Sega Genesis roms, gg for Sega Game Gear roms and gba for Gameboy Advance roms. You need to run through the Install and Configure steps above before trying to play the games. Once those steps are completed just add these roms to one of your mounted drives (just like you would music, photos or movies) Or copy them into your ~/Movies (or whatever you have set as mountLocation). Upon selecting a rom you will get that familiar Apple Logo before the game launches, the first time a game is launched it may take a bit longer to load (i think this may be the Emulator Enhancer loading) Before starting you will also get a message about emulator enhancer being a shareware product. If installation went properly (UI scripting enabler didn't give any complaints) then this message will be dissmissed within 5 seconds. If it is not exit using the menu button on the remote and try again.

A few notes, these emulators aren't perfect so some rom files might not load at all, if it shows a window then goes back to the Apple logo chances are the emulator didn't like the rom or crashed and didn't relinquish the screen, hitting menu will return you to your file listing. There will be support for more emulators in the future, and which emulators i use may change if i find others to work better.

Saving Games

While playing any of the emulators (except BSNES for Super Nintendo) you may now utilize the game freeze and defrost functions. Pressing Play/Pause on the Apple remote during a game will save a frz state into your ~/documents folder. Any time that game is started thereafter it will start from that saved state. If you want to retrieve the last saved state while still playing the game press > on the Apple remote.

NOTE: only one save state is kept per game so every time you save you are overwriting your last save in that particular title.

Game Screenshots

While playing any of the emulators you can press < on the Apple Remote to take a screen shot at that particular moment in the game that will subsequently display next to the game while browsing files.

Media Playback


MPlayer is by far the most versatile playback engine included in nitoTV. It offers the largest variety of format support (xvid, divx, wmv, mkv, mp4, mpeg-1, mpeg-2, flv, and many more.) It will load a variety of formats much faster than QuickTime as well (wmv being the best example). MPlayer also plays a part in the new music and photo streaming capacities.

Music Playback

Currently the music playback is admittedly under-polished, in honesty it was a somewhat last minute implementation in 0.2.5b10. It is not possible to fast-forward or rewind, in addition to volume control or playing and pausing. These drawbacks were in favor of retaining the ability to continue to browse your files while listening, in addition the screen saver will come up over the file listing if idling long enough. While music is playing a menu item is added to the main menu "Stop Music" This is the main way to cancel the currently playing music, in addition selecting another file to play (music or video) will also stop the current music and start the new media selected.

Photo Streaming

This new feature is also currently handled through MPlayer (this will most certainly change in the future) The playback is a bit buggy and limited, only jpg and png are supported and it is VERY picky with what jpg it will display. Another caveat is ONLY jpg or png can be streamed at once so no folders with mixed content.

To enable a specific folder for photo streaming press the > button on the remote. This will bring up the farmilar "Add to playlist" facade. There are two new options below "Create New Playlist" namely "Play Folder" (only relevant for video and audio) or "Mark/Unmark for Photos" Currently marking a folder for photos is just creating an invisible file inside (meaning it won't work for folders that don't have write access mounted- this will be addressed in the final) Once a folder is "marked" for photo playback selecting it while browsing will attempt to stream all the photos inside

Photo streaming with music is also possible (although a bit unrefined as well) putting a music file with the title "music.mp3" in the same folder as the photos will play back that music file, it unfortunately will not loop and I haven't found a way for it to play subsequent music files either.

QTKit Playback

QuickTime has a much nicer UI (user interface) experience, the transport (progress) controller while fast forwarding / rewinding is the same as it would be with a normal un-patched ATV. Some nice features have been added to our QTKit experience. Volume control, toggling subtitles on and off, and cycling through multiple audio tracks. Volume control: This is handled as it should be + / -. NOTE: Do NOT attempt to adjust the volume during passthrough, you will only get static, we will prevent volume control in the final during passthrough.

Sub/Audio Selection: QuickTime now has mutliple "keymaps" similar to the MPlayer setup, pressing and holding the Menu button will change to the second keymap here + will cycle through each available audio and - will ONLY turn the first subtitle on or off.

DVD Playback

DVD playback by default will play in MPlayer and will not support chapter markers or menu's. Using Smart Installer will install Apple's DVDPlayback framework which offers a much richer playback experience (dvd menu's, chapters etc..)

DVD Keymaps: These particular keymaps are only relevant with the DVDPlayback framework installed. Pressing and holding menu will change to the second keymap, < and > will remain the same but + will toggle through multiple audio tracks and - will toggle through multiple subs.

ISO support is much improved in framework mode, the mounting is executed faster and will no longer exhibit signs of being "locked up" if DVD Straight to Menu is turned on.


If for any reason the smart installer doesn't function properly a DVDPlayback.framework from 10.4.9 or 10.4.10 (maybe .11 too but NOT from Leopard) needs to be installed in /Users/frontrow/Library/Frameworks (you will probably need to create the Frameworks directory)

In addition the DVDPlayback.framework in /System/Library/Frameworks needs to be removed or moved for the DVDPlayback.framework to function properly.

Important Note: To get ISO's to play with the DVDPlayback.framework there are some kexts frameworks and possibly filesystems that need to be added, it is highly recommended to stick with VIDEO_TS folders (ie MY_DVD/VIDEO_TS) rather than ISO. The following of these kexts are covered by the smart installer


those should be adequate to get ISO files to work properly. the following kext file is needed but NOT covered by the Smart Installer and is required for DVD-Rom's to be read properly, it also needs to be from 10.4.x and not from leopard.


DVD Alerts

New in 0.3.1 is a nice little feature called dvd alerts, any time a dvd is mounted dvd alerts will come up with a centered menu asking to play dvd, import dvd or list titles (identical to the dvd contextual menu shown when hitting > on a dvd) these can be turned off in Settings.



The files section will list anything in your default "mountLocation". This location defaults to ~/Movies (for the uninitiated ~ == /Users/frontrow or whatever your user name is). This will list any folders and any files that are included in the "suffixes" preference. Files is where you will do the majority of your playback, any mounted DVD's (ISO or USB) or network mounts will also be in here.

Below we will list what each control button does in the Files listing.

< (click) will eject a volume or prompt to delete the current file or folder.

> (click) will add that folder or file to the playlist of your choice, the folder add will be shallow and will not recursively descend passed the chosen folder (yet)

< (hold then release) will attempt to regenerate the preview for the selected file, for mounts or folder it will have no affect. NOTE: there is a bug for regeneration of previews that exist in the same folder as the media file, it will be blank and will require an exit and re-entrace to view the new preview.

> (hold then release) shortcut to settings. It doesn't matter what kind of file or folder is selected this will always go to the settings shortcut.


Playlists are currently line delimited plain text files. They are located by default in ~/Library/Application Support/nito/playlists (this can be changed via the playlistLocation default) Playlists are either played entirely in QuickTime or mplayer, one caveat to this is some file formats will error out in QuickTime and not continue to the next, this is a design flaw that will be fixed in the future. It is also normal for the playlist facade to appear in between each file during QuickTime playlists, (will be fixed in the future) This is toggled on and off via "Playlists Use QuickTime" in settings). It is also possible to shuffle playlists, This is also set via the settings facade via "Playlist Shuffle". As of 0.2.5b10 QT Playlists will no longer repeat or shuffle endlessly.

Below we will list what each control button does in the Playlist facade.

< (click) will remove the playlist (warning this will remove the actual playlist text file and currently cannot be un-done)

> (click) will bring up the new playlist editor facade, in this new facade you can only view what is in the playlist or remove items from the playlist. < will remove an item from the playlist (but will NOT remove the actual file) play/pause will currently not do anything to play the files.


There are two "sections" in the Network facade. Bonjour mounts and custom mounts.

Bonjour Mounts

Anything above the line are computers that have been discovered via bonjour (mac users, think the "Network" section in the sidebar) These will all have "afpovertcp" to the right of them. Selecting play/pause on these items will prompt with a login type dialog, here is where you choose whether or not you have a registered account or a guest account. You must have guest access enabled on the computer for guest to work here. (NOTE: There will not be any GUI warning or error if guest access fails, you will simply be taken back to the root network facade) Upon choosing registered user you will get a prompt to put in your login then password. Upon proper authentication information you will be directed to a Volumes listing.

This is very important, in the Volumes listing you have two options, you can press play/pause to mount the volume (but no information will be saved) OR you can press > and get the mount facade. Here you MUST choose save before mounting, if you choose mount and you don't save you will lose this mount information. You may choose to turn on automounting if you desire (this will take care of mounting at startup) in addition you can choose whether or not use custom paths.

Custom Mounts

Creating custom mount points (bottom item in networking facade) Will require a little bit more legwork on the user part (well it seems like a lot more with the remote and no keyboard support). Each item will be outlined below

Mount Name: This name is only how the mount point will be displayed in the networking menu and has no other functional importance

Network Address: This address can be in the form of an IP address or a DNS name. DNS names may need to be added to the /etc/hosts file to work (if you are on a Mac your computer name will work, so iBook G4 would be iBook-G4.local the computer name for the macintosh is viewable in System Preferences/Sharing) No afp:// or // is necessary, for each different protocol nitoTV will accommodate the proper formatting.

User name: (will not be required for guest access) the user name you use to authenticate for this particular computer/mount.

Password: (will not be required for guest access) the password you use to authenticate for this particular computer/mount. (mac users NOTE: even if you have logins performed upon startup automatically this does NOT mean you don't have a password, just think of the password you use for authentication installations)

Volume path: This is the name of the volume path you are attempting to mount, for each protocol this may be a bit different. For afp (unless you have custom shares setup outside of the standard File Sharing preferences) you will ONLY be able to mount your root volumes or your user volume. If you want to link deeper into your volume turn on "Custom Paths" (discussed below). For nfs and smb you may have to put in full paths to the mountable volume (ie users/thatname/movies)

Auto Mount: whether or not the mount point will mount at startup (NOTE: mounts have a 15 second delay upon startup, the moment startup occurs networking isn't immediately available so we need to put in a delay before attempting to make network connections, in addition for SMB mounts to work in automount you MUST have a proper rc.local setup with the smbfs.kext getting loaded at startup for this to work)

Use Custom Path: This will toggle on or off a custom path to be linked into your mount location (where "Files" browses)

Custom Path: Only used if the above option (Use Custom Path) is toggled on. This is a nice workaround to afp limitations of only being able to mount root or user volumes. The path chosen here will be appended to the "Volume Path" and will be linked into your mountLocation. (ie Volume Path = Macintosh HD and Custom Path = Users/myname/Movies/MyMedia will link Macintosh HD/Users/myname/Movies/MyMedia into your mountLocation)

Below we will list what each control button does in the Network listing.

> (click) will edit the currently selected mount point (has no effect on bonjour points on the top)

Play/Pause: on mount points will attempt to mount and on bonjour points will take through the authentication process.

Manual Mount Edits

Here I will discuss the layout of the mounts.plist file for manual editing. This file is located at ~/Library/Application Support/nito/mounts.plist. It is a typical xml plist file, any OS X user that has edited a general plist file (all the preference files, in addition to many other configuration files are in this format). I will display the contents of a file with one mount point inside it and then explain how it works from there. I HIGHLY recommend making at least one mount point via the GUI rather than trying to make this from scratch, ONE typo can lead the file not to load or to crash the plugin.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "">
<plist version="1.0">
           <string>Media/TV Shows</string>
           <string>Macintosh HD</string>

Each mount has its own full <dict></dict> with unique key values, if you re-use a key value the plugin WILL crash. so make sure to increment for every mount value that you add. If you don't understand please don't ask, this guide isn't for novices.

autoMount: Boolean true or false

customMount: integer 0 or 1, 0 = off 1 = on

customPath: string value, explained in the section above. NEVER add a leading /

mountAddress: string value can be an IP address or a DNS address (i.e: or My-Machine.local) DO NOT APPEND // or anything else regardless if AFP, NFS or SMB.

mountName: string value, this is only how the point is displayed in the networking menu and has no other purpose

mountType: integer value, 0 = afp, 1 = nfs and 2 = smb

mountVolume: The volume name that is mounted. In AFP it can only be ONE name and not anything passed. (MacHD/userName/My Movies will NOT work with AFP, to accomplish this use custom paths)

requiresAuth: integer value, 0 = yes 1 = no

userLogin: string value, self explanatory

userPassword: string value, self explanatory

NOTE: Manual editing of these files is NOT recommended for novices, if you don't understand then DON'T attempt it. This guide is for people that are comfortable making manual edits to these kind of files. Be careful of editing these with normal text editors becaues they may append improper text formats. I have 0 experience editing these on windows machines so please don't ask.

Useful Error Links

Since the advent of 0.2.5b10 having some actual errors display on the screen when a mount fails here are the useful error pages on apples support site. linking them for easy access:

Mac OS System Error Codes: -299 to -5553

Mac OS System Error Codes: 0 to -261

Mac OS System Error Codes: 1 to 32767


0.2.7 introduces the first rudimentary 3 day weather forecast. The location is configured in the Settings facade under "weather zip code". Don't let the short sited "zip code" fool you, it is also compatible with "location ids" which will enable the weather forecast to work from outside of the US. I'm not sure if there is an easy way to get these location id's, you can go to, type in your location and after you select from the list that appears the location id will part of the resulting url. For instance I searched for "Amsterdam" and chose the first option "Amsterdam, Netherlands". The resulting URL has the location ID embedded. NLXX0002 is the pertinent ID. If you put that ID in (for whatever city you choose) that SHOULD give you the proper weather report for your location.

RSS Feeds

The RSS implementation was a positive externality of adding the weather forecast. Since the forecast API is based on RSS we decided to take it one step further and support reading custom RSS feeds. As of right now it doesn't bring anything new to the table from the old RSS reader (aside from a different layout for the display of each feed), but we look to improve it in future updates. The rss.plist file is copied into ~/Library/Application Support/nito. It is a standard plist file, each feed has its own dictionary with a unique key.


to add a new rss feed just add a new dictionary (dict) with a key incremented by 1 with the keys above (location and name) with your own url and name respectively and they will be added to the RSS Feeds section in the main nitoTV menu, aside from that it's pretty self explanatory.


The setting facade has several different tasks that can be accomplished, there is "Install Software" which will take you the installation manager and then various settings that have different effects on each playback mode of nitoTV. Each setting will have a corresponding icon to help delineate what it pertains to. (ie mplayer icon for mplayer settings, dvd icon for dvd settings etc...)

Install Software

Perian Installer

The perian installer will download and attempt to install all three components included in perian. Perian is used via Mixed and QuickTime playback modes. Find out more about perian here.

Additional: I have found that each time I hack the TV from its virgin 1.0 state with a Patchstick, NitoTV does not have the right permissions to run the Perian installer or add the mplayer codes. If you try to do so, the install seems to work, but media will not play. As soon as you've have Patchstick'd your Apple TV, enable SSH using the Awkward TV plugin, then fix NitoTV permissions:-

sudo /System/Library/CoreServices/

--Simplicity 12:22, 22 October 2007 (CEST)

Install mlayer Codecs

This will install the rmvb and rm codecs in /usr/local/lib/codecs/ all the other codecs from the essential package installer are removed because they cause conflicts and crashes.

Install Turbo's Kextloader

This installer is recommended to be run PRIOR to the smart installer. This will download and install Turbo's magic kextloader which will enable several features not enabled by default with the AppleTV (samba mounts, USB, bluetooth (dongle needed) etc...) This will download and install the kextloader in /sbin/ in addition to adding it to rc.local.

Smart Installer

NOTE: in take 2 version 0.3 there is a problem with permissions that requires a bit different permission change than the fixPerm one provides

sudo chown root:wheel /System/Library/CoreServices/ 

sudo chmod 755 /System/Library/CoreServices/ 
sudo chmod u+s /System/Library/CoreServices/ 

The smart installer is the crown jewel of the Installation Manager. This little gem will either search mounted volumes for an intel computer running 10.4.x (you MUST have the main root volume mounted from the source computer for intel computer installation to work) OR it will search in ~/Documents for the 10.4.9 or 10.4.10 intel combo updates (the full dmg file NOT the pkg file from inside the dmg). (you must download and put these in ~/Documents on your own) 10.4.9 combo

Once the smart installer finds the location to install from it will scan the AppleTV for any important missing kexts, frameworks or binaries (usb, udf, samba, bluetooth, dvdplayback etc) and install them in their proper location, taking care of any owners, permissions AND will add kexts necessary to load on startup to /etc/rc.local).

The smart installer will also take care of Turbo's easy USB patching (not done prior to 0.2.5b9) A reboot will be required for this to take effect.

Last but not least, the Smart Installer will fix any problems with the /etc/rc.local files not created by the prior version (b8) and add the necessary kexts and the kextloader.

Upon completion you will see a log with all of the actions performed by the smart installer.

NOTE: There have been several reports of the smart installer not working in the full 1.1 AppleTV version (but it does work in 1.1 safe and 1.0), we are aware of the problem but currently have no solution.

Safe Update

The safe update is another nice addition to the Installation Manager. Here you need to download the 1.1 dmg from Apple and place it in ~/Documents (your dmgLoc) Of course you need to be running 1.0 for this Safe Update to work. So if you updated via Apples software update on the AppleTV you will need to restore and repatch your AppleTV first for this to work.

This is pretty cut and dry, we will perform every step listed on either Safe Update wiki (including adding to /etc/hosts) As an added bonus we will migrate nitoTV and AwkwardTV Loader (if ATVLoader is installed) to the new 1.1 Finder, making the new transition completely painless.

Once the safe update is completed you will see a log of all the steps performed.


This will install MacFUSECore and iTunesFS which will enable you to play video and mp3's directly from a mounted iPod. It's a bit unrefined at the moment but it is verified to work.

WebKit Installer

This will download and install a working WebKit onto your AppleTV. This installer is a necessity for Pizza on Demand to work.

Update nitoTV

This option will only appear when there is a new version of nitoTV available. This will enable nitoTV to update itself from 0.2.7 and on.

Cache Time

This is an mplayer setting, this is how much video will be cached before the video starts playing.

Reset Controls

This feature was added to easily remove the controls.plist file from the nito Application Support folder. This is mainly here to remove any improperly edited or corrupt control files (if you edit them and mess them up, or just want to return to the default)

mplayer log

This setting will log out EVERYTHING from mplayer's standard output, it is VERY verbose so it is only recommended if you are having trouble with mplayer playback.

DVD Import Destination

This is where the "DVD import" feature will store the DVD's that it imports.

DVD Scan Rate

This is ONLY applicable to DVDPlayback.framework, this is the scan rate that will be used when fast forwarding or rewinding. (in the future this will be performed while playing the DVD) For mplayer it has no effect.

DVD Straight to Menu

Normally when a DVD is selected in the "Files" listing it will take you to a track listing of that particular DVD. If you have the DVDPlayback.framework installed (can be installed using the Smart Installer) and this selection is toggled on we will attempt to take you straight to the DVD menu. If the DVDPlayback.framework is NOT installed this setting will have no effect (we took out libdvdnav support from mplayer because it was hindering us upgrading to a better/newer mplayer)

NOTE: This COULD take a long time to load a DVD, ESPECIALLY if there is ISO/IMG (disc images) involved. It will LOOK like the UI is locked up but it isn't, just be patient.

File Playback Mode

This settings has 3 options, mplayer, QuickTime and Mixed. If you have mplayer selected it will only use mplayer to playback single Files, QuickTime just the same. The mixed mode however will play some file types in QuickTime and some in mplayer, in the future this will be added for playlists.

Cover Art Location

This is the location nitoTV will generate and look for cover art for files folders and playlists. For now the images will need to have the same name as the folder, file or playlists to be displayed. For instance Family Guy 01.avi will need Family Guy.jpg (png, tiff etc..) in your Images folder.

Show File Sizes

With this option turned on you will see the size of each media file in the Files facades. Turned off there will be nothing to the right of media files.


This section gives a long synopsis of the history and functionality of the nitoTV plugin, in addition to what is new in each update. It will be revised in the future to be more concise and have extraneous information edited out.

View Console Log

This section may show content OR could be blank. The finders console.log is a tricky beast to get under control. If the finder is not quit or does not crash in a certain period of time after startup it will not display the console log. We look for the console log in this location: /Library/Logs/Console/501/console.log. This section is useful to look for any errors or problems that arise.

Controls and Extra Arguments

controls.plist has an additional key for appending custom arguments to mplayer. Its pretty straightforward to edit

       <key>Extra Arguments</key>

to add a new argument you would just need to add <string>newargument</string> after <string>macosx</string>. Do NOT include spaces in the arguments! This could BREAK mplayer. (or at very least have it ignore your extra arguments) Each argument needs to be on its own line as illustrated above.

A good starter example for a valuable extra argument would be the addition of the following:


thus the final key for extra arguments would yield

       <key>Extra Arguments</key>

the reason this is a valuable argument set (and will subsequently be worked into future releases) is because the TV has a certain "safe" area of display that gets cut off in mplayer full screen mode without some type of border around the video area. the above code should make pretty close to adequate compensation for this problem. we'll be testing out different resolutions/tvs to make sure it works pretty universally before any hard coded implementation.

Manual Default Editing

Most of the preferences can be edited via the settings façade, but there are a few that can't be edited this way. Some aren't meant to be used and are for my debugging purposes, and others are arrays that I haven't had time to make a good UI for yet. The most important are the suffixes, mpSuffixes and qtSuffixes

Currently the suffixes are handled via 3 seperate arrays. Suffixes is an array that will differentiate which file types can to be viewed in the "Files" listings, The other two keys, mpSuffixes and qtSuffixes are both arrays that contain the file types which will be delegated to either QuickTime or mplayer. By default these are the two arrays:

   mpSuffixes: 3gp m3u pls divx xvid wmv asx asf ogm mpg mpeg mkv avc flv dv fli m2v ts vob iso img rm rmvb
   qtSuffixes: m4v divx xvid avi mov mp4 mkv flv dv

as you can see most of the suffixes attributed to mplayer are formats that will not play in QuickTime in the first place. The only exceptions would be wmv, (possibly asf), flv,dv and potentially 3gp. If you would like to edit these defaults (you need to be ssh'ed in) this is an example of slimming down some of the formats that are played back via mplayer

   defaults write mpSuffixes -array ogm mpg mpeg mkv avc m2v vob iso img rm rmvb

keeping in mind those are codecs that will only play in mplayer on the appletv (for now mpeg-2 still will not work in qt). the following could add wmv to the existing list of suffixes used in quicktime

   defaults write qtSuffixes -array m4v divx xvid avi mov mp4 mkv flv dv wmv

two things to note when editing arrays in defaults, 1) no commas, 2) you need to add ALL of the items pre-existing in the defaults for them to stay there.. so therefore the following

   defaults write qtSuffixes -array wmv

would remove all the old formats and just input wmv. FYI to get wmv to work in QuickTime you will need the flip4mac component, and it WILL load any wmv content absurdly slow, especially over the network.

Manual Perian Installation

I've decided to add this small little section about installing perian manually for the increasing reports of the installer erroring out till I can find the root of the problem. Follow these steps verbatim and it should achieve the installation.

If you aren't mounted read write then use this step first, otherwise skip to then next steps

sudo mount -uw /

password: frontrow

hdiutil attach ~/Library/Caches/ntvDownloads/ 
cd /System/Library/CoreServices/

sudo ./unzip /Volumes/Perian\ 1.0/Perian.prefPane/Contents/Resources/Components/ -d /Library/QuickTime/ 
sudo ./unzip /Volumes/Perian\ 1.0/Perian.prefPane/Contents/Resources/Components/CoreAudio/ -d /Library/Audio/Plug-Ins/Components/
sudo ./unzip /Volumes/Perian\ 1.0/Perian.prefPane/Contents/Resources/Components/QuickTime/ -d /Library/QuickTime/ 
hdiutil detach /Volumes/Perian\ 1.0

that should do it. if you were mounted read only to return to this state

sudo mount -ur /

Note: if you originally tried to install Perian through NitoTV, and now your YouTube videos and movie previews won't play, just issue this command

sudo mv /System/Library/QuickTime/Disabled/QuickTimeH264.component/ /System/Library/QuickTime/

and then reboot.


During playback you can toggle between keymaps for the controller by pressing and holding menu.

The current keymaps are as follows (during playback)

(NOTE: this only applies to mplayer playback)

keymap 1:

left : rewind 10 seconds
right : fast forward 10 seconds
hold left : previous item in the playlist (if applicable)
hold right : next item in the playlist (if applicable)
up : increase volume
down : decrease volume
play/pause : play or pause

keymap 2:

left : rewind 60 seconds
right : fast forward 60 seconds
hold left : rewind 600 seconds
hold right : fast forward 600 seconds
up : move a subtitle up
down : move a subtitle down
play/pause : toggle on screen display

keymap 3:

left : sub_delay -0.1
right : sub_delay +0.1
hold left :sub_select
hold right : switch_audio
up : audio_delay +0.100
down : audio_delay -0.100
play/pause : show file name

There will be a graphical editor later for the keymaps. And i'll be updating this wiki to include more information about customization as well. Just wanted to get it started.

Known Issues

It is perfectly normal for the Apple logo to appear before a video is played back this will be displayed while the file is caching, followed by a green screen and then the video playing. (in mplayer only)

A menu bar will appear while mplayer is playing (don't worry it appears behind the fullscreen). Eventhough it has a application menu called nitoTV it is the mplayer menu. This is normal as well.

DVD images 4.3 GB and larger have been reported to have issues on samba and NFS mounts, haven't tested for AFP but it possibly could lead to the same issues. (no playback and truncated size listing) A workaround is to use VIDEO_TS folders instead of ISO.

Sometimes files don't show up for no discernible reason from AFP mounts, no known solution yet.

The screen does not release or flickers when using mplayer or DVD playback (which can yield video behind the scenes with only audio being heard), the only solution is lower the AppleTV resolution from 720p to 1080i or lower. (for now), 1080i no longer exhibits the problem but it still persists in 720p

No 5.1 AC-3 passthrough in DVD or mplayer (will be addressed in the future, not sure how soon though)

Smart Installer fails on 1.1 full. Only getting message about "already mounted read write" and nothing after in the followup log. Not sure what the problem is here, and may or may not find a solution because we'll never be running full 1.1

Install Howto

To install it, you will need to copy the NitoTV folder from into your AppleTV. You can copy it to the home folder of the 'frontrow' user if you wish, although its location doesn't really matter.

Next, you need to open an SSH connection to your AppleTV, like so:

ssh -1 frontrow@AppleTV.local

When prompted for a password, enter 'frontrow'.

Now go to the directory where you placed this folder on your AppleTV and type the following command:

chmod 755 installme
sudo ./installme

When prompted for a password, enter 'frontrow' again

Fixing Helper Permissions

ssh -1 frontrow@AppleTV.local

When prompted for a password, enter 'frontrow'.

sudo /System/Library/CoreServices/

When prompted for a password, enter 'frontrow' again

Useful Terminal Commands

This section is just going to be a documentation for easy reference of important terminal commands. For now I'm just adding this but there will be more later.

If you don't have killall installed here is the easiest way to restart the Finder

kill `ps awwx | grep [F]inder | awk '{print $1}'`

Future Plans

POD Multiple pizzas and sides

Resume from previous played destinations in DVDs.

DVD OSD (on screen display) for chapter numbers, elapsed time, etc.

HTML scraping (fetching metadata and coverart) from imdb and

Special Thanks

Alan Quatermain
mplayer team
ffmpeg team
Richard Bannister

entire community for making this all possible!

Legal Info

nitoTV Copyright © 2007 - 2008 nito llc.

SSE3 emulator © 2007 by Mike Byrne (

Portions Copyright © 2007 Alan Quatermain

All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, publish, and/or distribute copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.


Donations are very appreciated and will insure this projects future.