Working VNC: AppleTV 2.3, aTV Flash 3.4.1, iPhone 2.2 (5G77)

******************************************************************************************************************************
Update: I now believe this method may cause you to get an “infinite reboot” condition when upgrading the AppleTV firmware and then re-hacking with aTV Flash. Not sure why, but it has happened twice to me now and I’d like to spare you the pain! The method below works but I can’t be bothered to use it any more. Caveat lector.
******************************************************************************************************************************

Folks,

I’ve been wanting this for a while and today got this working. For the benefit of other users looking for a way to use Firefox on the AppleTV without the need for an external keyboard and mouse, just your iPhone, just follow these steps. Be warned, though, you will need to ssh into your AppleTV and enter some commands at the command line / terminal…

  1. Download the original AppleTV v1 recovery disk image from the net. This will be named OS-dot-DMG 1.0.dmg, so try http://www.google.co.uk/search?q=OS-dot-DMG%201.0.dmg.

  2. Once you have that .dmg, use your favourite SFTP/FTP software to copy it over into the home directory (i.e. / when logged in by SFTP).

  3. Now start Terminal.app on your Mac and “ssh frontrow@appletv.local” (or on Windows do whatever you normally do to ssh to your AppleTV). Your password is probably “frontrow”.

  4. In your root directory, an “ls” command should reveal the “OS-dot-DMG 1.0.dmg” file you copied there in step 2. If not, go sort that out.

  5. Enter the following command. This will mount the recovery .dmg on your AppleTV. No damage is done to other mounted disks, so don’t panic :slight_smile:

sudo hdiutil mount OS-dot-DMG\ 1.0.dmg

  1. Now we need to copy some files from the recovery volume to our actual AppleTV. Be careful to get the backslashes right in each command. None of these commands should generate any output, so if they do you have made a mistake :slight_smile:

sudo cp -pr /Volumes/OSBoot\ 1/System/Library/CoreServices/RemoteManagement/ /System/Library/CoreServices/RemoteManagement
sudo cp -pr /Volumes/OSBoot\ 1/System/Library/Perl/ /System/Library/Perl/
sudo cp -pr /System/Library/Perl/Extras/5.8.6/ /System/Library/Perl/5.8.6/

  1. Now the RemoteManagement infrastructure is installed, we need to setup a remote login password. Again, this command should not generate any output:

echo 71463E00FFDAAA95FF1C39567390ADCA > /Library/Preferences/com.apple.VNCSettings.txt

  1. Now we need to configure some further remote login settings. None of these commands should generate any output either:

sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -configure -clientopts -setvnclegacy -vnclegacy yes
sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart -activate -configure -access -on -users frontrow -privs -all -restart -agent -menu

  1. Finally we need to start the actual VNC server process. We put an ampersand (&) at the end to keep the process running the background after we’re log out:

/System/Library/CoreServices/RemoteManagement/AppleVNCServer.bundle/Contents/MacOS/AppleVNCServer &

  1. You don’t even need to reboot at this stage. Just start up a VNC client and connect to your AppleTV’s local IP address (or appletv.local from a Mac) and it should connect. If you get a connection failure, try again a couple of times. If it still continues to fail to connect, double check the steps above and repeat if necessary.

  2. On connection you will probably get a corrupted version of the AppleTV menu (or similar). This is expected; you don’t need to be able to see the AppleTV video output on your iPhone, you just need to be able to get mouse and keyboard events from your phone to the AppleTV…

  3. So now run up Firefox, for example, on your AppleTV (instructions for installing Firefox are elsewhere on this site, though I note that the latest aTV Flash 3.3.5 supports installation via the Maintenance menu. You should find that with your iPhone connected via VNC to the AppleTV, you can move the mouse around the screen, click on things, enter text - do everything you would normally do with a browser, in fact. Except that this is on your home TV. Amazing. Now why haven’t Apple implemented this?!?

Just for completeness, these were the versions I used:

Hardware:

AppleTV Take Two at firmware version 2.2, hacked with aTV Flash v3.3.5
1st Generation iPhone 2G running firmware version 2.1, hacked to bits with PwnageTool

Software:

Jaadu VNC v1.2 (the best VNC app in the iTunes AppStore; maybe try the Jaadu Lite version first…)
Firefox v3.03
Panic Transmit 3.5.4 for SFTP
MacOS X 10.5.5 versions of Terminal.app and ssh

Props to the aTV Flash team for continuing to make the AppleTV more and more useful. This post is my way of giving something back :slight_smile:

One word…WOW! :lol:

Thanks for this tip. However, is there any way to make VNC start a boot rather then having to SSH into it each time and manually start it?

Thanks,

Chris

I found I had major problems when I moved from AppleTV firmware 2.2 to FW2.3. This may have been due to the above hack, though I’m still not entirely convinced.

Anyway, I found a neater way to achieve the same thing with 2.3 (and I guess this would work with 2.2 too):

If you download Vine Server / OSXvnc you can copy the Vine Server.app from the dmg to the ~/Applications folder. Next, set yourself up a password:

cd /Users/frontrow/Applications/Vine\ Server.app
/Users/frontrow/Applications/Vine\ Server.app/storepasswd YOURPASSWORD vncpasswd

then run up the server with the following single command:

/Users/frontrow/Applications/Vine\ Server.app/OSXvnc-server -protocol 3.3 -rendezvous Y -rfbauth /Users/frontrow/Applications/Vine\ Server.app/vncpasswd &

You can then connect with Jaadu from your iPhone and have the usual VNC fun.

Starting up automatically at boot… I’d like to do it too. At this stage I’m exploring possibilities for launching the script from a .app in ~/Applications. I’ll post details here if I’m successful.

I have written a launchd plist that will enable the OSXvnc-server to startup automatically when the Apple TV is rebooted.

Here’s a copy of the plist file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>com.arfore.VNC</string>
        <key>OnDemand</key>
        <false/>
        <key>RunAtLoad</key>
        <true />
        <key>ProgramArguments</key>
        <array>
                <string>/Users/frontrow/Applications/OSXvnc-server</string>
                <string>-protocol</string>
                <string>3.3</string>
                <string>-rendezvous</string>
                <string>Y</string>
                <string>-rfbauth</string>
                <string>/Users/frontrow/vncpasswd</string>
        </array>
</dict>
</plist>

It needs to go into the following directory /System/Library/LaunchDaemons/ and then reboot the Apple TV.

You can read a detailed write up on my blog.

I hope that this helps.

Andy

Nice work, Andy. I did have a chat with the aTV Flash guys about putting an entry in the maintenance menu. I got as far as having start/stop/restart-VNC entries in the menu but when I tried to use them it instantly crashed my AppleTV. Not that useful as menu entries go… I’ll try your way now :slight_smile:

Cheers,

iMattUK

I have tried to enable VNC on my AppleTV, but while it appears to “broadcast” its presence, I can’t access it via VNC. When I try to “Share Screen” under Shared in the Finder (AppleTV.local), I get an error message telling me I can’t share with my own computer.

When I try with an outside VNC program such as Chicken of the VNC, I get the strange behavior where it continually tries to draw the screen. See attachment.

Any ideas?

Looks like that might be what you’re doing. Did you get the IP addresses right? Try sharing between two Macs first.

It appears that I renamed my MacBook as “AppleTV” while messing around with Vine Server while trying yet another technique to get VNC working from my AppleTV. I got that all straightened out and then followed the technique at the beginning of this particular thread. IT WORKED !!!

Now that I have upgraded the aTV flash to 3.4.3, it no longer works. Oh well. I am going to try to re-do the instructions in THIS thread, hoping that the upgrade simply erased some component I will have to re-install.

Truth be told, the VNC capability on the aTV doesn’t amount to much… at least not for me. But… I enjoy messing around with it.

THE REDO OF MR. iMattUK’s INSTRUCTION WORKED LIKE A CHARM WITH ATV 3.4.3. I “copied and pasted” to make sure I had all the slashes and dashes correct, by the way.

[Tips cap to bbh] Happy to help.

the VNC capability on the aTV doesn’t amount to much… at least not for me

As will all these things, your mileage may vary. The killer app for me is visiting websites with other people (particularly booking or buying things but also researching things) when those people don’t want to stand around a computer.

Since I fought with this most of the afternoon I thought I would share my outcome in getting this all working, but not with OSXVNC.

I was able to get the apple vnc server running using the initial instructions on this post and have also set up a plist file to start it automatically on reboot of the Apple TV unit (v2.3.1).

Basically I followed the initial instructions in this post to get the OOTB VNC server running via SSH and it worked like a charm. However, I wanted to get it to run on reboot automatically so I used arfore’s plist creation instructions:

  1. After getting the Apple VNC server running using the SSH command and verifying it worked correctly, I rebooted the Apple TV so that it wasn’t running anymore (I know I could have just killed it using the PID but wanted to make sure nothing was running)
  2. Created a new file in a text editor called com.OSCvnc.plist (I already had this file created from arfore’s instructions so kept the name and simply edited the file)
  3. Pasted the following into the file:
<?xml version="1.0" encoding="UTF-8"?> Label com.arfore.VNC OnDemand RunAtLoad KeepAlive ProgramArguments /System/Library/CoreServices/RemoteManagement/AppleVNCServer.bundle/Contents/MacOS/AppleVNCServer
  1. Save and close the file
  2. Using SFTP, copied it to the /Users/frontrow/ folder on Apple TV
  3. SSH to the Apple TV and run the following command:

sudo cp /Users/frontrow/com.OSXvnc.plist /System/Library/LaunchDaemons/

  1. Rebooted the Apple TV using the following command:

sudo reboot

  1. Voila, the OOTB Apple TV VNC server is running like a charm and restarts automatically whenever the Apple TV is restarted

Thanks to both iMattUK and arfore for their instructions as this whole setup is pretty cool - now I can surf the web using the Apple TV firefox browser and can control it with either my macbook or my iPhone.

Matt

Not at all, I’ve just used your method to reinstall VNC and get the service launching automatically on every boot. I hadn’t got round to installing this again after a factory restore and your post reminded me to do this :slight_smile:

Given that we’ve now got this down to a fairly simple set of scriptable commands, it would be pretty simple to throw them into an actual script and have that available as an optional install package. I think a lot more users would want this if it was just a simple click from the menu.

What do you think aTVFlash guys?

I found when I installed VNC this time using the above method that I had lost my mouse pointer. A little googling and I found that the following fixes that:

Firstly install System Preferences and the System Preferences application:

  1. Copy OS-dot-DMG\ 1.0.dmg over to /Users/frontrow via FTP if you don’t still have it there.
  2. sudo hdiutil attach OS-dot-DMG\ 1.0.dmg to mount the disk image.
  3. sudo cp -rp /Volumes/OSBoot\ 1/System/Library/Frameworks/PreferencePanes.framework/ /System/Library/Frameworks/PreferencePanes.framework
  4. sudo cp -rp /Volumes/OSBoot\ 1/System/Library/PreferencePanes/ /System/Library/PreferencePanes
  5. sudo hdiutil eject /Volumes/OSBoot\ 1/ to unmount the disk image.
  6. Copy MacOSXUpdCombo10.4.9Intel.dmg to /Users/frontrow via FTP if you don’t still have it there.
  7. cd /
  8. sudo pax -r -p e -z -f Volumes/Mac\ OS\ X\ 10.4.9\ Combined\ Update\ (Intel)/MacOSXUpdCombo10.4.9Intel.pkg/Contents/Archive.pax.gz ./Applications/System\ Preferences.app
  9. sudo hdiutil eject /Volumes/Mac\ OS\ X\ 10.4.9\ Combined\ Update\ (Intel)/

Now we need a little utility called Mouse Locator:

  1. Download the utility from http://homepage.mac.com/douglasn/MouseLocator.dmg
  2. Copy MouseLocator.dmg over to /Users/frontrow via FTP.
  3. sudo hdiutil attach MouseLocator.dmg to mount the disk image.
  4. sudo cp -r /Volumes/Mouse\ Locator\ v1.1/Mouse\ Locator\ v1.1\ Installer.app/Contents/Resources/Distribution/MouseLocator.prefPane ~/Library/PreferencePanes/
  5. Download http://jamsoft.org/hosted_files/mac_cursor.zip on your Mac/PC.
  6. Unzip the file and copy MouseLocator.png via FTP to /Users/frontrow/Pictures.
  7. Run System Preferences from the normal Apple menu on your Apple TV and select Mouse Locator: select Turn on and put a check on Always Turn On. If you’re using something like Jaadu on your iPhone that has its own mouse pointer, this is easy. Otherwise see here: http://wiki.awkwardtv.org/wiki/How_To_‘Enable’_Mouse_Cursor/Pointer_on_the_AppleTV.
  8. You should now find that the mouse is visible even on the TV screen.
  9. Select “Restart…” from the Apple menu on the AppleTV. When you return to VNC next time you should still have a visible mouse pointer on the screen.
  10. Hurrah.

This information cribbed /cobbled together from:

http://wiki.awkwardtv.org/wiki/How_To_'Enable'_Mouse_Cursor/Pointer_on_the_AppleTV
http://wiki.awkwardtv.org/wiki/Install_System_Preferences
http://wiki.awkwardtv.org/wiki/Patchstick/Leopard
http://www.2point5fish.com/download.html

******************************************************************************************************************************
Update: I now believe this method may cause you to get an “infinite reboot” condition when upgrading the AppleTV firmware and then re-hacking with aTV Flash. Not sure why, but it has happened twice to me now (2.2 -> 2.3 and 2.3 -> 2.4) and I’d like to spare you the pain! The method above works but I can’t be bothered to use it any more. Caveat lector.
******************************************************************************************************************************

Any word on whether this still works, or if the infinite reboot is a problem? Can/has this been scripted? Seems this should be well established by now, I’d think…

I gave up and jumped ship to the PS3 - ironically a better media experience - so someone else will have to look at this!