Monday, October 22, 2007

N800 price falls further as N810 looms

New customers can use the link in the post below to get an additional $10 off. The N800 is an amazing deal at just $221.99 shipped.

Nokia has indicated that N800 users will be able to install the new OS2008 on their tablets. Although the newer N810 units will add a GPS receiver, QWERTY keyboard, and marginally faster CPU, it's also losing one of the SD card slots.

The N810 is supposed to be available in November for somewhere around $450 ($499 MSRP). This begs the question: is it really worth double the current street price of the N800? Especially when you can get a great external bluetooth GPS receiver which runs on a battery all it's own for just $50.

$10 off Buy.com snags the N800 for $221.99

Sunday, October 21, 2007

OS2008 To Include Mapping Software and Data

With all the excitement surrounding the announcement of the N810 model release, some tablet owners may have missed the tidbit about the upcoming OS2008 being installable on the N800. This page on the Nokia site describing the features of OS2008 release seems to promise a hefty bonus in the new OS package: "In-built Map application including maps and Points of Interest".

While we all eagerly await the release of OS2008 to discover the details of this promising statement, it certainly makes me wonder what's going to happen to sales of the $200
Nokia NAVKIT Navigation Kit for N800 Internet Tablet
. Especially with outstanding stand-alone bluetooth GPS receivers available for $50 or less from these guys.

While I've been quite impressed with Maemo Mapper, the current version does lack a key convenience of the pre-packaged solution: built-in maps and points of interest. The maps are downloadable on-the-fly from Google (with legal caveats) and other sources . But pre-loading maps for offline use is a bit awkward and pre-loading POI data is all but impossible.

If Nokia makes good on this OS2008 feature list, it'll be a great day for N800 owners but the NAVKIT and Maemo Mapper may both end up as casualties.

Wednesday, October 10, 2007

Play classic arcade games with XMAME

PC users have been using MAME (Multiple Arcade Machine Emulator) for years to play old school arcade games. With a N800 or N770 internet tablet, you can now put the same great software to use on a handheld device.

Installing the software
The N800/N770 port of MAME is called XMAME. You can download and install it here. This is an easy "one click" installation package.

XMAME is a command-line application. This is not very convenient for people that know little or nothing about Linux commands. There is a second application available that provides XMAME with a graphical user interface. This application is called XMAEME. Unfortunately, as of this writing, using a N800 with the most recent updates applied, XMAEME doesn't seem to work properly (more on this later).

Finding and installing games
You probably wouldn't guess that the owners of some long forgotten arcade game would care about the software that originally powered that ancient machine. Well apparently they do care. As a result, MAME is not distributed with actual games and finding games is more or less a "public secret".

The game files for classic arcade games are called "ROMS". These are essentially the original binary programs that were stored on the hardware ROMs manufactured and installed in the original arcade machines. Sound effects are usually located in separate files called "samples".

Finding ROMs on the Internet is not very difficult. (hint: Google is your friend) Hypothetically, if you were to search for something like "Asteroids ROM", you would find the search results quite useful.

The ROMs for each game are typically grouped together and distributed in a single ZIP file. You don't have to unzip these files because XMAME knows how to deal with them. Likewise, if you find sound samples for a game, they will typically be distributed in a ZIP as well. Again, no need to unzip.

My struggle with XMAEME
If you're like me, your first instinct after installing XMAME and XMAEME is to find a ROM file somewhere, put it on an SD card, and try running it with XMAEME. And like me, you would then see an ambiguous error message that simply says "Unable to load ROM". Damn it!

If you have a little bit of Linux command-line experience you might eventually track down an XMAME configuration file called /usr/lib/xmame/xmamerc which tells the program, among other things, where to look for ROM and sound sample files. Aha! Copy the test ROM to the default directory and XMAEME actually shows it in the list of ROMS it knows about. Launch the game and viola... "Unable to load ROM". Damn it!

I'm a late-comer to the internet tablet party. but I'm guessing XMAEME originally worked and maybe still works for other types of games (NES, GBA, etc). As of this writing however, using an N800 with the most recent OS updates, XMAEME simply doesn't seem possible.

When all else fails...
Hopefully, the keepers of XMAEME will soon resolve this problem. For the time being, however, it looks like the only way to actually launch MAME ROMs is via the command-line. If you have any experience with the Linux command-line, you'll have no problem following the next steps. If not, I guess you better grab some bench until XMAEME is working again or until I can figure out a straightforward method to add a shell script to the N800 task launcher.

The easiest way to use XMAME from the command-line is to have a look in the /usr/lib/xmame/xmamerc configuration file previously referenced. Although you can use command-line options to tell XMAME to look wherever you like for a particular ROM and/or sound sample file, it's actually much easier to just deposit your ROMs where XMAME expects to find them. As an alternative, you can edit the xmamerc file and tell it to look for ROMs and/or sound samples in locations of your choosing.

The default location for ROM files is /media/mmc1/roms (on the SD card in the external slot). So you'll simply need to make a folder on the SD card called roms and deposit any game ROMs inside.

The default location for sound samples is /usr/share/games/xmame/samples. Why this is not /media/mmc1/samples by default I don't know. On my N800, the path /usr/share/games didn't even exist. So, in my opinion, you should probably edit the xmamerc file. Find the line that reads:

samplepath /usr/share/games/xmame/samples

And modify it so that it reads:

samplepath /media/mmc1/samples

Launching XMAME from the command-line
At a command-line you need only type XMAME game [options]. For example:

XMAME startrek -fullscreen

There are several useful options for XMAME, including the "-fullscreen" option in the example above. You can see a complete list of the options by typing "XMAME -?".

Author's note
If any readers happen to know why XMAEME no longer works on the N800 and/or some easy work-around for the current issues - please post a comment and I will edit this article accordingly. Putting a user interface on XMAME makes it infinitely more usable by a large group of people that otherwise aren't going to bother learning how to use the Linux command-line just to use MAME.

Saturday, October 6, 2007

Drive the N800 from a PC or Mac with VNC

The N800 stylus and virtual keyboard, while functional, are not the most convenient methods of data entry. When you have a PC or Mac on hand, a human sized keyboard and mouse are certainly preferable.

I'll give you some background in case you haven't used VNC on your PC or Mac before. VNC is actually a pair of applications: VNC server runs on the device you want to drive (the host) and VNC viewer runs on the device you want to drive with (the guest). In this case, the host is the N800 and your PC/Mac is the guest.

Installing the software
VNC is open-source and comes in a few different flavors. I've chosen RealVNC but any variation should do the trick. You can download and install the free version of RealVNC viewer here.

Next you'll need to install a VNC server on the N800. As of this writing, you can find a VNC server installation package for the N800/N770 here.

After you install VNC server, there should be a new menu item under Extras named x11vnc. There is no user-interface for this application. When you launch it, VNC server runs in the background. Launching it again unloads the VNC server.

Finding the IP Address of your N800
Connect the N800 to your WiFi network by initiating a browser session or whatever means you find easiest. On the N800 navigate to Tools > Connection Manager. At the top of the screen there is a pulldown menu where you can select Internet connection > IP address. Write the IP address down because you'll need it to connect the VNC viewer on your PC or Mac to the VNC server on the N800.

Connecting
Launch the VNC server application (x11vnc) on the N800. When you do this, it appears that nothing has happened because the program has no user interface. VNC server is silently running in the background.

Launch the VNC viewer application on your PC or Mac. It will prompt you for the server that you want to connect to. In the space provided, enter the IP address that you obtained earlier. A connection should be establish fairly quickly and you will see a window open up that looks just like whatever happens to be displayed on the N800.

Using the mouse
According to this post the mouse pointer and clicks don't work on the task launcher icons on the left edge of the screen. The author describes a somewhat dangerous workaround which involves disabling touchscreen input. However, a much simpler solution is to use the F3 keyboard shortcut and the up/down arrow keys to pop-up the task launcher menus when you need them. Once you have the menus popped-up, mouse movements and clicks seem to work just fine.

Additional keyboard shortcuts
The same default shortcuts that are setup for a bluetooth keyboard also work in the VNC client. You can see a list of these shortcuts, and even edit them if you like, by going to Tools > Control panel > Hardware keyboard > Shortcuts. Here is the default list:
  • F4: Close
  • F9: Minimise
  • F3: Task launcher
  • F9: Task switcher
  • F6: Full screen key
  • F7: Plus key
  • F8: Minus key
  • F4: Menu key
  • F5: Home view
  • F12: Power menu

Security
One important thing to consider is that the script that launches VNC server on the N800 does not set a password for the connection. So if you are on an open Wifi network, there is not really anything to prevent someone from connecting to your N800 with their own VNC viewer.

If you're comfortable with the Linux command line, you can edit the line in the script that launches VNC server to add a command line option that establishes a password for connections. The script is /usr/bin/x11vnc.sh.

To add the password option, look for the line that reads:

exec /usr/bin/x11vnc -cursor -arrow > /tmp/x11vnc.log 2>&1

And update the line so that it reads:

exec /usr/bin/x11vnc -cursor -arrow -passwd Tabl3tWiki > /tmp/x11.vnc.log 2>&1

Replacing Tabl3tWiki with whatever password you would like to use. Next time you launch the VNC server and try to login with your VNC viewer, the viewer will prompt you for a password.

Wifi Timeouts
The default behaviour of the N800 is to drop the Wifi connection after some pre-determined period of inactivity. If this happens during a VNC session you will lose your VNC client connection and the window will no longer accept inputs. The server remains loaded but it will not resume function when the Wifi connection is restored. If this happens, you'll need to run x11vnc once to unload the non-responsive server and run it a second time to reload the VNC server and get it working with the restored Wifi connection.

This work-around seems to help: edit the /usr/bin/x11vnc.sh script to add one more parameter.

Assuming you made the edits described above to add the password option, look for the line that reads:

exec /usr/bin/x11vnc -cursor -arrow -passwd Tabl3tWiki > /tmp/x11.vnc.log 2>&1

And update the line so that it reads:

exec /usr/bin/x11vnc -cursor -arrow -fixscreen V=60 -passwd Tabl3tWiki > /tmp/x11.vnc.log 2>&1

The new -fixscreen v=60 option forces a full screen refresh every 60 seconds. You can change the 60 to another number to find out what works best. Since each refresh is a waste of bandwidth and will degrade performance, it's best to set the number as high as possible to avoid doing it more often than absolutely necessary.