HowTo: Create and manage SSH tunnels using Gnome SSH Tunnel Manager

The Secure SHell, or SSH, is a simple but effective tool for encrypted remote login to a Linux-based workstation or server. Not only does it give you secure command-line access to the remote PC, but it can also be used to securely redirect data to be routed or processed on the remote PC’s LAN such as HTTP traffic or perhaps another protocol such as Jabber that is blocked on your local Internet connection. This process is called tunneling.

Creating an SSH tunnel is easy. Say you wanted to forward the local port 2100 to a web server inside your remote network on IP The public hostname of the SSH server you are using to connect to is You can issue the command:

$ ssh -L 2100: -N

…this will redirect local port 2100 to port 80 on the server with LAN IP on the remote network, via the Internet-accessible SSH server on, logging into it as the user jbloggs. Everytime you now access http://localhost:2100 with your web browser, your traffic will be redirected to the remote web server, using an encrypted tunnel over the Internet.

Now this is great, but that command line looks a bit convoluted. Isn’t there a more intuitive way to create an SSH tunnel?

There sure is – a neat little Gnome GUI app called the Gnome SSH Tunnel Manager or gSTM for short.

Here’s a diagram to illustrate what we are trying to do.

The Internal LAN web server cannot be accessed from the Internet, only local LAN users. For the workstation on the other side of the Internet to be able to access the LAN web server at, we need to tunnel into the SSH server and then pass through it to get to the Internal LAN web server.

First up, we need to install gSTM. It exists in the Ubuntu repository, so all you have to do is enter:

$ sudo apt-get install gstm

Once installed, you will find it in the Applications->Internet->gSTM menu. When you fire it up, you will be presented with the following window (in this case I’ve already setup three tunnels – your list will be empty):

GTSM Interface

The list shows all the tunnels you have created to various locations. Each tunnel can have multiple ports directed over it. The green light next to the tunnel name indicates an active tunnel. A red light indicates an inactive tunnel.

  1. Creating a new tunnel is simplicity itself – just click on the Add button. A new window appears.
Creating a new tunnel
  1. In this window, we specify an arbitrary name for the tunnel, then the SSH server we’re connecting to, eg: in the previous example (or its public IP address), the login name used to access that SSH server, eg: jbloggs, and the port that the remote SSH server is listening to (which by default is 22, but you may have changed it to a non-standard port number above 1000 for greater security).
  2. These are the only values you need to fill in to establish the basic tunnel. Next, we need to specify which ports we are going to redirect into that tunnel. Click on the “Add” button to add a new port.
  1. First we specify where the port we’re redirecting is coming from. “Local” means that we’re redirecting a port from the PC you are working on, to the remote PC. In the above example, we are going to redirect an arbitrary port number 32456 to port 80 on the PC on the remote network’s internal LAN (via the remote SSH server). Click OK and then click OK on the previous window to save your Tunnel settings. It now appears in the list of available tunnels.
  2. Simply click on the Start button and you will be prompted for the password for the account you specified for the tunnel to access the remote SSH server with. Type it in and hit Enter.
  1. Once the green light appears next to your tunnel name in the list, you are ready to go. Open your web browser and type in http://localhost:32456 and you will suddenly see the web page of the internal machine on the remote network.

That’s pretty cool, but let’s try something even cooler. Stop your tunnel by clicking on the Stop button, then bring up the Properties for it again.

Let’s say you are at an office or school where the local Internet web access is filtered. There is a website that you’d like to visit, but it is blocked by the local organisation’s filter. Assuming outbound SSH access is allowed, you can effectively bypass the filter by routing all your web traffic via your remote SSH server whose web access is unfiltered. Here’s a diagram to illustrate what we’re doing:

An SSH tunnel in action

The workstation tries to access the blocked website (indicated by the red line) but fails. By using an SSH tunnel (the green line), we can access the blocked website via the remote SSH server.

  1. To do this, add a redirection but change “Local” to be “Dynamic”, and specify an arbitrary port number, eg: 9100. You will notice that you cannot specify a To host or To port. Click OK.
  1. Now open up your web browser and bring up the Proxy settings. In Firefox, this is located by going to the Edit->Preferences menu, then click on the Advanced icon, then the Network tab, then finally click on the Settings button. You are presented with the following window:
  1. Change the radio selection at the top of the window to Manual proxy configuration and then in the SOCKS Host box ONLY, specify “localhost” and port “9100”.
  1. Now click OK and then close the Firefox preferences window.
  2. Start your SSH tunnel again by clicking on the Start button.
  3. Now try surfing to your blocked website. Instead of it being filtered, you will now find it magically appears because your web traffic is being proxied to your SSH tunnel and retrieved through your unfiltered remote Internet connection!
  4. When you are done, don’t forget to shutdown your SSH tunnel and change your web browser’s proxy settings back to whatever they were previously.

Happy tunneling! Smilie: :)

HowTo: Rip a DVD video title into an x264 and Ogg encoded MKV video file

Many people like myself jumped aboard the revolution that was the DVD ten years ago (has it already been that long??) and collected a vast library of discs that now take up space on several shelves in the corner of your lounge room. In this day and age of the PVR and DVR, even I myself find it frustrating to go to the shelf, find the movie I want to watch, take the disc out, make sure it’s free of fingerprints, stick it in the drive, skip all the blasted “mandatory” ads and trailers before you can actually get to the movie itself. At least with YouTube and downloaded AVI and MPEG files, you can simply double-click and watch what you want, when you want, on demand, 24/7 – no mess, no fuss.

So here I present a guide on how to rip your DVD collection into convenient, tidy x264-encoded MKV files. You may find that you can store your entire collection of DVD’s onto a single external hard-drive to carry with you, and will certainly serve as a useful backup the day that some inconsiderate soul scratches or steals your DVD’s! This HowTo is based on The Smorgasbord HowTo, but with modifications to bring it up to date with current implementations of x264 and MEncoder.


To rip a DVD video disc title’s components (video, audio, subtitles, etc) into a single Matroska (.mkv) file.

Why a Matroska file instead of an MPG or AVI file?

Matroska is an open-standards container format that is rapidly gaining support. It is an envelope for which there can be many audio, video and subtitles streams, allowing the user to store a complete movie or CD in a single file. Matroska offers many benefits including:

  • Fast seeking in the file
  • High error recovery
  • Chapter entries
  • Selectable subtitle streams
  • Selectable audio streams
  • Modularly Extendable
  • Streamable over internet (HTTP and RTP audio & video streams)
  • Menus (like DVDs)


To rip a DVD title, you will need:

  • A DVD video disc with a title or two to rip from (yes, sounds obvious doesn’t it?).
  • Any garden-variety DVD-ROM drive to read the disc with.
  • A reasonably powerful PC – any Core 2 Duo or better will suffice. You can use a slower machine such as a Pentium 4, but the ripping and encoding time can be a difference of several hours.
  • Suitable storage space to store your ripped video plus some working space – 8GB all up is ideal for a single title.
  • An Ubuntu Intrepid 8.10 installation (which is what this guide is based on).
  • Some patience (unless you’ve got a multi-core monolith that can work out Pi to the sixth billionth place in less than a few nanoseconds, in which case you’re laughing).
  1. We’ll need to install some extra software tools. Start by opening a terminal and enter the following:

    $ sudo apt-get install mplayer mencoder normalize-audio vorbis-tools mkvtoolnix gpac x264 libdvdcss2
  2. Once all that is installed, insert the DVD you wish to rip from. Now generally most DVD’s have the main feature as title number “1”, but these days we are increasingly seeing a number of trailers or advertisements starting with this title, so to find out what title is what, type in the following:

    $ mplayer dvd://1
  3. This will attempt to play the first title on the disc in a new window. You will notice in the console output that it will also list some other useful information such as how many titles are on the disc, etc. If the title being played is not the feature you’re after, simply close the playback window and change the command to use dvd://2 or dvd://3 etc until you find the title you want. An example of this output is:

    $ mplayer dvd://1
    MPlayer 1.0rc2-4.3.2 (C) 2000-2007 MPlayer Team
    CPU: Intel(R) Core(TM)2 Quad  CPU   Q9450  @ 2.66GHz (Family: 6, Model: 23, Stepping: 7)
    CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
    Compiled with runtime CPU detection.
    Playing dvd://1

    There are 3 titles on this DVD.
    There are 20 chapters in this DVD title.
    There are 1 angles in this DVD title.
    audio stream: 0 format: ac3 (5.1) language: en aid: 128.
    audio stream: 1 format: ac3 (5.1) language: es aid: 129.
    audio stream: 2 format: ac3 (stereo) language: en aid: 130.
    number of audio channels on disk: 3.
    subtitle ( sid ): 1 language: en subtitle ( sid ): 3 language: en
    subtitle ( sid ): 5 language: es subtitle ( sid ): 7 language: sv
    subtitle ( sid ): 9 language: no subtitle ( sid ): 11 language: da
    subtitle ( sid ): 13 language: fi subtitle ( sid ): 14 language: es
    subtitle ( sid ): 15 language: sv subtitle ( sid ): 16 language: no
    subtitle ( sid ): 17 language: da subtitle ( sid ): 18 language: fi
    subtitle ( sid ): 20 language: es number of subtitles on disk: 13

  4. In the above example, there are three titles, 20 chapters, three audio tracks and 13 subtitles for various languages. If I wanted to see what Title 3 was about, I would pass the argument dvd://3 to the mplayer command.
  5. Now let’s start ripping that title. First up, create yourself a working directory:

    $ mkdir mydvdrip
    $ cd mydvdrip

  6. Assuming Title 1 was the correct title, type in the following:

    $ mplayer dvd://1 -v -dumpstream -dumpfile mydvdrip.vob

    This tells MPlayer to dump the title data to a physical file called “mydvdrip.vob” instead of displaying it to a window. The .vob file contains both the video and audio tracks of the selected title.
  7. Once that is done, you can optionally rip the DVD subtitles too using:

    $ mencoder dvd://1 -oac copy -ovc frameno -o /dev/null -slang en -vobsubout mydvdrip

    …which will result in the English subtitles (the “en” in the -slang argument)  files mydvdrip.idx and mydvdrip.sub being created.
  8. Now, the audio can be kept in its original AC3 surround format, but can take up a lot of extra space. If you’re not fussed about proper full surround sound, you can convert the audio to plain stereo, but to do that means we need to convert the audio into PCM format as follows (if you want to preserve the original AC3 surround audio, then skip to step 11 now):

    $ mplayer mydvdrip.vob -ao pcm:file=audio1.wav -vc dummy -aid 128 -vo null

    The “-aid 128″ part refers to the audio track to rip. In this case, it’s the first audio track. If I wanted to rip the second audio track, I would use “-aid 129″ instead. See the MPlayer console output when you were playing the disc for the other aid parameters to access the other audio tracks.
  9. Once the audio is ripped and converted, we need to normalise it so it’s not too loud or too soft with:

    $ normalize-audio audio1.wav
  10. …and then finally convert it into the final audio format we want to put into the final ripped product, in this case Ogg Vorbis which is a much cleaner-sounding and open format than MP3:

    $ oggenc -q5 audio1.wav

    The -q5 parameter encodes at 160 kbits/s which should be very clear and crisp compared to the original audio. Change this parameter to alter the compression if you want to save space. Skip to step 12 now.
  11. If you didn’t want to convert the audio to stereo, and preserve the original surround audio, you can rip the AC3 audio with:

    $ mplayer mydvdrip.vob -aid 128 -dumpaudio -dumpfile mydvdrip.ac3
  12. We have the audio and subtitles finished, so all we need now is the video itself. As you have probably noticed, many DVD titles generally have a border of black around them to some degree. We don’t want this in our rip and can save some space by omitting it, but we need to get the cropping bounds. Thankfully MPlayer does a pretty good job of detecting this by itself. Type in:

    $ mplayer mydvdrip.vob -vf cropdetect
  13. Allow the title to play for a bit, or skip forward a bit. You will notice some data output to the terminal. This is what MPlayer believes is the optimal cropping bounds for this title where it says -vf crop=688:448:18:64 (your output will vary). Stop playback and copy the series of numbers after the equals sign to the clipboard.
  14. Now we need to setup two-pass encoding. Two passes are made for quality reasons. The first pass makes note of details about the video, such as slow and fast moving scenes, which allow MEncoder to vary the bitrate of the resulting video accordingly, providing great image quality whilst maintaining a small file size. Encoding requires two executions of MEncoder one after the other, so let’s create a shell script to do it. Create an empty script with:

    $ gedit
  15. …and an empty text editor will appear. Copy & paste in the following:

    # Encoding pass #1
    mencoder -v mydvdrip.vob -vf pullup,softskip,crop=688:448:18:64 \
    -ovc x264 -x264encopts subq=4:bframes=3:b_pyramid:weight_b:\
    turbo=1:pass=1:psnr:bitrate=1000:threads=auto -oac copy \
    -of rawvideo -o mydvdrip.264

    # Encoding pass #2
    mencoder -v mydvdrip.vob -vf pullup,softskip,crop=688:448:18:64 \
    -ovc x264 -x264encopts subq=6:partitions=all:me=umh:frameref=5:\
    bframes=3:b_pyramid:weight_b:pass=2:psnr:bitrate=1000:threads=auto \
    -oac copy -of rawvideo -o mydvdrip.264

    (Remember to substitute the “crop=” values from your own crop output)

    I won’t go through describing what all the options above do suffice that they will produce a very high quality rip of your DVD title using a modest amount of disc space (generally no higher than about 700MB for a single DVD movie), and it will make full use of any multi-CPU or multi-core processing power at your disposal (a Quad-core system will encode video roughly 3 times faster than a single core system). If the resulting file size is still too big, you can make it smaller by changing the bitrate=1000 parameter to something slightly smaller, eg: 900, but you will begin to sacrifice image quality.
  16. Save the file and quit your text editor.
  17. We’re now about to begin ripping and encoding the video data. Depending on your system, this part could take anywhere between 60 minutes to several hours. In this example, my 3.2GHz Quad-Core Q9450 based system took 32 minutes to perform just the first encoding pass at 87fps, with the second pass taking 52 minutes to complete at 54fps. Execute the script with:

    $ sh ./
  18. …and go order a pizza, or wait. The video from the .vob file will be extracted, encoded using the x264 codec and the resulting raw data placed into a file called mydvdrip.264 at the end.
  19. Once the script has finished, you should now have the following files in your working directory (except the .ac3 file if you chose not to rip it):

    -rw-r--r-- 1 hyrax hyrax   91783421 2008-12-21 19:29 audio1.ogg
    -rw-r--r-- 1 hyrax hyrax 1058132012 2008-12-21 19:26 audio1.wav
    -rw-r--r-- 1 hyrax hyrax   13936736 2008-12-21 23:02 divx2pass.log
    -rw-r--r-- 1 hyrax hyrax  688634256 2008-12-21 23:49 mydvdrip.264
    -rw-r--r-- 1 hyrax hyrax  264532992 2008-12-21 19:31 mydvdrip.ac3
    -rw-r--r-- 1 hyrax hyrax      38423 2008-12-21 19:23 mydvdrip.idx
    -rw-r--r-- 1 hyrax hyrax    3426304 2008-12-21 19:23 mydvdrip.sub
    -rw-r--r-- 1 hyrax hyrax 4473358336 2008-12-21 19:16 mydvdrip.vob
    -rw-r--r-- 1 hyrax hyrax        482 2008-12-21 22:35

    In the above example, my original DVD title rip was some 4.4GB in size. The resulting compressed video file using x264 is only a paltry 688MB – notably smaller and the visual quality on playback looks identical to the original DVD data. The original AC3 audio consumed 264MB, but the Ogg compressed version only consumes 91MB. Put the x264 video data and converted Ogg audio data together and we have a rip that will consume a total of 779MB all up (give or take a few MB for the container that will hold them both).
  20. Now we need to recombine the audio, video and subtitles into one Matroska container file. First up, the video. We need to convert the video from raw x264 data into MP4 format before we add it to the MKV container. To do this, type in:

    $ MP4Box -add mydvdrip.264 mydvdrip.mp4
  21. Now we’re ready to build the final MKV file. Type in:

    $ mkvmerge -o mydvdrip.mkv *.mp4 *.ogg *.idx

    (replace the *.ogg with *.ac3 is you want to use the original audio instead, or include them both so they are selectable on playback! Beware this will blow out your final file size, however)
  22. When the muxing is complete, your rip is complete. You can now play it in your favourite video player such as Totem or MPlayer.

— o O o —

To recap the whole process:

  1. mplayer dvd://1 -v -dumpstream -dumpfile mydvdrip.vob
  2. mencoder dvd://1 -oac copy -ovc frameno -o /dev/null -slang en -vobsubout mydvdrip
  3. mplayer mydvdrip.vob -ao pcm:file=audio1.wav -vc dummy -aid 128 -vo null
  4. normalize-audio audio1.wav
  5. oggenc -q5 audio1.wav
  6. mplayer mydvdrip.vob -vf cropdetect
  7. mencoder -v mydvdrip.vob -vf pullup,softskip,crop=688:448:18:64 \ -ovc x264 -x264encopts subq=4:bframes=3:b_pyramid:weight_b:\ turbo=1:pass=1:psnr:bitrate=1000:threads=auto -oac copy \ -of rawvideo -o mydvdrip.264
  8. mencoder -v mydvdrip.vob -vf pullup,softskip,crop=688:448:18:64 \ -ovc x264 -x264encopts subq=6:partitions=all:me=umh:frameref=5:\ bframes=3:b_pyramid:weight_b:pass=2:psnr:bitrate=1000:threads=auto \ -oac copy -of rawvideo -o mydvdrip.264
  9. MP4Box -add mydvdrip.264 mydvdrip.mp4
  10. mkvmerge -o mydvdrip.mkv *.mp4 *.ogg *.idx

Or, to preserve the original AC3 surround audio track without conversion, replace steps 3 to 5 with:

mplayer mydvdrip.vob -aid 128 -dumpaudio -dumpfile mydvdrip.ac3

…and replace step 10 with:

mkvmerge -v -o mydvdrip.mkv *.mp4 *.ac3 *.idx

That’s it. Happy ripping!

HowTo: Utilise the RAM disk

Those of you who are Amiga veterans from the 80’s and early 90’s will be familiar with the oh-so-useful RAM: disk. A virtual device that treated your unused system RAM as a disk device that you could extract temporary files to and make a general mess of without worrying about cleaning it up later, because when you rebooted, the content of the RAM disk would be cleared. The amount of data you could put in it was simply limited to how much physical RAM you had. The RAM disk was always 100% full because it was dynamic in nature. If you had 10MB of data in there, then the RAM disk consumed 10MB of system RAM. If you only had 2MB of data in there, then it only consumed 2MB of system RAM – the RAM disk never impacted on the rest of system memory in a prejudiced fashion.

Microsoft DOS and Windows have tried to replicate this feature with limited success, and the RAM disk was always a fixed size and pre-allocated from the rest of the system as well, which made it somewhat useless. If you had a 512MB RAM system and allocated 50MB for the RAM disk, then you only had 462MB left for the rest of the system, and this also meant that you could not put more than 50MB of data into the RAM disk.

Ubuntu Linux (and pretty much every other distro) has its own RAM disk feature as well and is just as flexible as the Amiga’s RAM disk in its use. Here’s a guide on how to use it.

Using a RAM disk in Ubuntu is simplicity itself – it’s already setup for you!

The RAM disk is located at /dev/shm on your system. Anything placed in this directory is in the RAM disk and will be lost when you reboot the system. The RAM disk is already utilised for temporary files from PulseAudio, so if you list the content of the RAM disk in a terminal with:

$ ls /dev/shm

You might get one or more temporary files that look similar to “pulse-shm-2343031262″.

Let’s make the RAM disk more accessible – how about an icon for it on the Gnome desktop?

  1. Start by doing a single right-mouse-click  anywhere on the Gnome desktop. A menu appears.
  1. Choose “Create Launcher” from this menu. A “Create Launcher” window will appear.
  1. Change the “Type” option from Application to Location.
  2. In the “Name” field, type in My RAM disk (or whatever you prefer).
  3. In the “Location” field, type in file:///dev/shm/
  4. And finally in the “Comment” field, type in a suitable description such as “Accesses the RAM disk for temporary data”.
  1. Click OK and a new icon will appear on the desktop entitled “My RAM disk”.
  1. When you double-click on it, a Nautilus window will open showing the content of the RAM disk.

Try copying some data to the RAM disk now and then reboot your PC. When you re-open the RAM disk, you will find the data you copied is now gone because it was never physically saved to your hard-drive.

Great stuff, but that Launcher icon looks a bit boring. Let’s give it some meaning. On my system, I use an icon of a male sheep, or (you guessed it) a Ram! Male sheep = Ram = RAM disk, geddit? Oh never mind… You can use this visual gag yourself by replacing the icon of the launcher with an image file.

  1. First up, download the sheep icon from here and place it somewhere appropriate on your system where it can be re-retrieved from, eg: /home/jbloggs/Pictures/RamSheep.png because it needs to be reloaded as your Launcher icon whenever you reboot. Leave this Nautilus window showing pictures folder open as we’ll need it to drag and drop from later.
  2. Now do a single-right-click of your RAM disk icon on your desktop and choose “Properties” from the menu. A new window appears.
  1. The properties window shows the current icon for your Launcher.
  1. Now drag the sheep icon from where you downloaded it to on top of the default icon of the launcher and release the mouse button to drop it. This will replace it with the picture of the sheep.
  1. Click close to close the Properties window.
  1. If the icon is too small for you, you can make it bigger by resizing it. Do a single-right-click on the  icon and choose “Stretch icon” from the menu. Four anchors will appear on the icon for you to pull on.
  1. Grab one of the anchors with your mouse and drag it until the icon is at the desired size.
It’s a RAM Disk, geddit?
  1. Click anywhere outside of the icon to set the icon size and remove the anchors.
  2. You’re done!

HowTo: Eliminate the Green Bar on video playback in Totem (and other media players)

Some people, including myself, have experienced an annoying issue whereby some videos you playback, particularly those encoded with the Xvid codec, have an apparent corruption of video represented by a thick Green Bar(TM) somewhere on the image. Generally the colours are askew as well and sometimes sections of the image are blurred. You might assume that the original video is corrupt in some way, but this is not the case as the video will typically run fine through media players on other platforms.

The Green Bar(TM) and general video corruption looks similar to this:

The dreaded Green Bar of DeathTM

The issue is that the XVideo extension of X Windows (aka Xv) is having trouble dealing with the decoded video data when using your video card to scale the video to fit the window. There is a fix, however, at a minor cost of some CPU time – instead of getting your video card to do the scaling, get the CPU to do it instead.

  1. Press ALT+F2 to bring up the Run Application dialog (or just open a terminal) and type in gstreamer-properties and hit Enter.
  1. You will be presented with the GStreamer properties app. Click on the Video tab and you will see the following:
  1. Change the Default Output Plugin from Autodetect to X Window System (No Xv) and then close the application.
  1. Now re-run your video file through Totem and the Green Bar(TM) should now be gone. Scaling of the video to fit the window is now being done by the CPU. The impact should be negligible. Should you experience playback slowdown with other videos that never had the Green Bar(TM) issue previously, you should go back into GStreamer’s properties and re-enable Xv as required.
  1. Retrieve popcorn and enjoy movie.

Mini-Review: Microsoft Bluetooth Notebook Mouse 5000

Well, it’s post-Xmas sales time again and vendors everywhere are struggling to get rid of their stock in readiness for 2009. Whilst I wasn’t in any specific need for something, I found JB Hi-Fi selling Microsoft’s Bluetooth Notebook Mouse 5000 series for AUD$45. This isn’t the cheapest I’ve seen it, mind you, only a few months ago Officeworks sold them for a brief period for only $35 in conjunction with a Microsoft promo, but I digress – I decided to purchase one of these mice for my EeePC 701 since they’re some 35% cheaper than its nearest rivals such as Logitech. But does that cheaper price come at a cost?

So why would you want a Bluetooth mouse? Well, the obvious reason is the convenience of no cables. This mouse is primarily targeted at the notebook market where people cannot easily use, or just plain don’t like, the mouse touchpad or joystick. Being Bluetooth, you can connect it to any device that also has Bluetooth capability (which these days is just about every modern notebook, or desktop with a USB Bluetooth adapter). The only real con is having to charge or replace batteries.

The Microsoft Bluetooth Notebook Mouse 5000 comes packaged in one of those annoying difficult-to-open hard plastic packages – you know, the kind that usually draws blood. Thankfully, I think Microsoft have heeded the baying masses and have neatly provided little holes in the backside of the packaging for you to easily get a pair of scissors into as indicated by a couple of printed scissor icons, but then I discovered I didn’t even need to do that either – the plastic is perforated, allowing you to get a finger in and simply rip the packaging open – with no blood being drawn – extra points there.

Product packaging

So once you have playfully ripped into the packaging like a 10 year old on Xmas morning, this is what comes inside the retail package:

What’s in the box

You get:

  • The mouse
  • A trendy neoprene rubber carry pouch
  • Two AAA batteries
  • A quickstart guide, battery disposal disclaimer and a full instruction manual, neatly crushed into a triangle by the top side of the box packaging

The mouse is very lightweight and looks pretty stylish with an attractive combination of black underside and sideskirts, white top and a spine of gun-metal grey. The mouse wheel is transparent. The top side features a Bluetooth logo and a battery indicator. There are four buttons – two traditional left & right mouse buttons, wheel button in the middle and a thumb button that is designed with right-handed users in mind. The wheel does not feature left & right movement, but has a fairly notchy ratchet when rotating the wheel, but does not require much pressure to rotate.

The front

The rear end resembles a Renault Megane – with a big arse and a star-zappy logo thing which is not a button and appears to be for decorative purposes only.

The back

The underside features the battery compartment, the laser unit, Bluetooth pairing button, a two-position sliding on-off switch, usual array of skidpads and a Gnuine Microsoft sticker.

The bottom

Overall, this mouse is roughly two-thirds the size of a regular adult desktop mouse. It’s even smaller than a CD-ROM disc! The size is deliberate, however – it makes for a more portable package in your laptop bag.

The top – CD-ROM for size

The neoprene rubber pouch provided is a snug fit for the mouse, but makes a good home for it when stashing it away in your bag. The pouch features a simple hook-tape seal and does the job. If you are an EeePC user, you will already be familiar with the good protection the neoprene rubber sleeve provides, so this mouse pouch will look right at home next to it. The pouch also has a red Microsoft logo tag on it to satisfy brand-toting users.

The neat carry pouch

Inserting the batteries is a very straight-forward exercise without any difficulty. The battery is cover is easily removed by finger without needing a tool and the battery compartments are spacious and feature pull-up tabs to remove the batteries easily when they eventually need replacement.

Not often you get batteries included these days

Upon switching on the mouse, the battery indicator on top of the mouse turned green for a few seconds, then went out and started alternating between green and red flashes at a rate of one flash per second. It had immediately entered pairing mode without me having to manually trigger it. The Bluetooth logo does not light up.

Mouse goes green
Mouse goes red

Pairing the mouse with Ubuntu Intrepid is an incredibly simple four-step process:

EDIT August 2009: The Bluetooth stack in Ubuntu Jaunty changed such that the mouse will pair, but the mouse will not acknowledge the connection nor will the mouse ever work. As of August 2009, the latest version of the Bluez Bluetooth stack and the Blueman applet fix this problem. Refer to this article for more information.

  1. Do a single right-mouse click on the Bluetooth icon in your system tray and choose “Setup new device…”.
  1. The Bluetooth Device Wizard will appear. Click “Forward”.
  1. Your PC will query for local unpaired Bluetooth devices. After a brief delay, you will see the Microsoft Bluetooth Notebook Mouse 5000’s MAC address followed shortly by its actual name. Simply click on the name in the list and click “Forward”.
  1. Your PC will commence pairing with the mouse. You don’t have to do anything except wait a couple of seconds. Once the pairing is complete, the wizard will finish.

The mouse is now immediately usable and you can also keep using your original mouse at the same time as well (if you like fighting over one mouse pointer, that is). At this time, the indicator on the top of the mouse switches off as well. The only time I should see it next illuminate is during power-on self-test or when the battery starts running low.

In operation, the mouse feels reasonably comfortable and is easy to maneuver. Button clicks are clear and responsive, although the fourth thumb button was technically non-functional, though pressing it brought focus upon whatever you were hovering over without actually performing a left-mouse click.  It’s not too heavy but not too light either, though with prolonged use, I suspect those with relatively big hands will find the apparent gap underneath the palm of your hand to get annoying and the mouse is a good third smaller than a regular sized mouse (remember it’s intended to be carried by notebook users, not used on a desktop). Those with smaller hands such as most female adults and early-teen children, may probably find this mouse to be more comfortable than a regularly-sized mouse for western adult hands.

I found that the mouse was quite sensitive compared to my regular desktop mouse, as though mouse-acceleration had been increased by a small percentage in my system’s configuration. If this proves annoying, you would have to adjust your desktop mouse preferences a bit to compensate.

Rather interestingly, the laser is completely invisible. There is no red glow emanating from the mouse at all, even if you lift the mouse slightly off the table. There are no blingy glowy bits on the top side of the mouse to waste battery either.

Unfortunately I cannot gauge the expected battery life until I’ve made prolonged use of the mouse, and the manual provided does not provide any indication as to the expected battery life nor does it mention any potential power-saving features of the mouse such as power-down due to in activity, etc (however the quick-start guide makes reference to switching off the mouse when in transit). In fact, I found it amusing to read in the manual protective advisories not to “walk on power cords” in relation to the mouse – it appears this is a generic peripheral manual that Microsoft supply with all their gear.

Anyway, I went on to test the reconnection speed of the mouse now that it was paired. I switched off the mouse for a few seconds and then turned it back on and started moving the mouse until I saw the mouse pointer moving on-screen. Disappointingly, Ubuntu did not reconnect with the mouse. In fact, I wasn’t able to reconnect to it until I had deleted the pairing and re-paired it again.

A system restart after having successfully paired the mouse earlier also failed to reconnect it when the desktop reappeared again.

EDIT August 2009: The latest version of the Bluez Bluetooth stack and the Blueman applet fixes this re-connection problem under Ubuntu Intrepid and Ubuntu Jaunty without the need to do the manual fix below.

This is contrary to previous versions of Ubuntu where reconnection occurred without a problem. As it turns out, the HIDD application and corresponding hcid.conf file are not employed anymore by Ubuntu Intrepid, having been replaced by the Bluetooth applet we’re using today. It appears Intrepid does not actively scan for Bluetooth devices to “re-activate” them upon a restart.

So with that in mind, I tried issuing the following command in a terminal:

$ sudo hciconfig hci0 pscan

…which tells my Bluetooth adapter at hci0 to switch to “scanning” mode. Within about 10 seconds, the mouse pointer started moving again!

Another reboot still failed to have the mouse reconnect automatically again, so I decided to add the command into my /etc/rc.local file which is executed every time the system reboots.

Edit it with:

$ sudo gedit /etc/rc.local

…and in the editor, add it anywhere BEFORE the last exit 0 line, eg:

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

sudo hciconfig hci0 pscan
exit 0

Save your changes and reboot. When the system restarted, the mouse still failed to move, however turning the mouse off and then on again without another reboot did make the mouse start moving again within 10 seconds, so the reconnection process relies on the rodent’s current connection status to be “deleted” before Ubuntu will reconnect to it. This is annoying, but for the moment switching the mouse off and then on is a helluva lot less painful than having to delete and re-pair the mouse manually every reboot. A number of bug reports have already been listed on Launchpad in relation to this problem, so no doubt it will be rectified in due course.


This is a reasonably comfortable, sturdy mouse with a robust feel to it that I believe would survive being knocked about a few times. It is compact and does not have unnecessary design features that would waste battery life. It meets the requirements to be portable and is simple to use.

The manual is generic and not very helpful in relation to the nature of the product (with the exception of the quick-start guide), however I think in this day and age most people have a good basic understanding of mouse concepts to not need a manual.

I’d have liked to have been given a written reference to the expected battery life, and it would have been nice to have a plug-in USB recharge feature or a docking station of some sort, however such features would have increased the cost of the product.

While not a feature-rich mouse in general given the target audience for a simple “it just works” device, this is a great value-for-money product and I would have no hesitation in recommending it to prospective users. At AUD$45, it’s a bargain compared to its nearest rivals who list for AUD$65 or more for the same featureset.

Review score: 8 out of 10

Virtualbox 2.1

Sun’s ubiquitous virtualisation application Virtualbox has been updated to version 2.1 and brings with it a number of new additions to warrant a major update, with two of the most interesting new features being 3D acceleration support and Networking changes that negate the need for bridging the host adapter to the guest.

If you’ve already setup previous versions via the Sun repository, then Virtualbox appears in Synaptic as a completely separate application to previous versions. Generally you uninstall the previous version (preserving your config files) and then install the new version, which automatically performs any upgrading that is required of your config files. Thankfully Synaptic can do the job in one hit, uninstalling selected software prior to installing new selections.

Installing VirtualBox 2.1 from Synaptic

Once installed, I was presented with the familiar Virtualbox interface. Nothing has changed here. What has changed is largely under the surface and one or two extra Settings options. For starters, under General->Basic, we have a new checkbox for enabling 3D acceleration. Theoretically this would allow you to play games and use other accelerated applications within a virtual session, as it would be passed through to your host’s 3D video card to process. At this stage, this feature is highly experimental and only supports OpenGL currently (no Direct3D), and only supports it under specific guest configurations. This will change in due course, but for now is a welcome addition to Virtualbox.

Setting up a Windows XP VM in VirtualBox 2.1

The second great change that I notice is the complete elimination for the need to use network bridges or TUN/TAP devices to give your Virtual Machine a true connection to your network. It’s now simply a case of telling your VM to use a Host adapter and then pick a Host adapter from the available list. Very cool.

Virtual Machine Network Configuration

Other features in this release:

  • Support for hardware virtualization (VT-x and AMD-V) on Mac OS X hosts
  • Support for 64-bit guests on 32-bit host operating systems (experimental)
  • Added support for Intel Nehalem virtualization enhancements (EPT and VPID)
  • Experimental LsiLogic and BusLogic SCSI controllers
  • Full VMDK/VHD support including snapshots
  • New NAT engine with significantly better performance, reliability and ICMP echo (ping) support

…and the usual array of bug fixes.

So how does it run?

After initial installation, I ran up my VM install of Windows XP MCE 2005 without changing any of the VM settings and shortly after boot commenced I was met with as Blue Screen of Death. Oh dear, however I wasn’t completely surprised either – Windows will complain over the smallest of changes.

Not fussed, I figured I’d just do a fresh installation of XP Professional with SP3. I decided to give the VM 2GB RAM, 128MB video memory, enabled the SATA controller, enabled 3D acceleration and give it a network card that went through the Host’s Eth0 adapter (no NAT).

During the graphical component of the installation process, I got this…


Oh dear again…

So I shutdown the VM and started disabling options one at a time in a bid to see if it was one of the new features that was killing the installation process. I started with the obvious: 3D acceleration. I switched it off and began the install process again. Bang: BSOD again.

OK, so I reduced memory to 1GB and video RAM to 32MB, then restarted the installation process from scratch again. Bang: BSOD again!

Fine, I switched the network config back to a NAT-based setup and restarted the installation process yet again. I made absolutely sure that we were not installing over the top of the old install and that the drive was properly formatted instead of quick-formatted. Another BSOD. What’s the go here?

I decided to go hard-core. I disabled everything that wasn’t really necessary: SATA controller, network, audio and USB. This time, when I restarted installation, it successfully got through to the first stage of the graphical installer prompting for the regional and language options! I shutdown the VM.

I changed the VM settings again, re-enabling components one at a time until I got a failure. After some trial and error, I finally had the VM BSOD again when the SATA controller was enabled! Looks like there are some bugs that need to be sorted out there. I left that disabled and continued installing Windows without incident.

Installing the VirtualBox Additions Driver Package into Windows XP

Once the Virtualbox Guest Additions were installed, I immediately looked for something OpenGL related – the screensavers. The OpenGL screensavers such as the FlowerBox ran and rendered well, though there was a slight amount of choppyness to them, but nothing serious. At this stage I figured that the OpenGL works, so when they iron out the bugs, this may get smoother.

I decided to dare to test something a bit more complex, on the expectation that the VM would crash or lockup – an OpenGL GAME. Since the screensaver suggested that the translation was slow, I decided to go old school and install the original Quake on my XP VM, using ProQuake to render the GL version of it. This is where I got a virtual slap in the face…

Quake in OpenGL runs perfectly – fast and smooth! In whatever resolution I throw at it!


Quake in OpenGL in a Windows XP Virtual Machine
The game is smooth and playable, even when the window is scaled up to a larger size!

I discovered the same with just about every other OpenGL title I threw at it, including Serious Sam 2 and Doom 3 – all ran at fluid full speed, at whatever resolution. Great stuff, but I did discover one bug – only in Serious Sam 2, for some reason 10 minutes into gameplay, the video card would just stop – the monitor would switch off and the machine would lock. I could only get it back by resetting the physical host, and even then the video card still did not initialise again until I power cycled the PC. This wasn’t a one-off either. I managed to reproduce the bug three times in an hour. But this is a new feature, it’s off by default because it is experimental, and I have to say that it’s so far a resounding success. With time, the bugs will be ironed out and we will quite literally be one step closer to banishing the concept of dual-booting Windows on PC’s for games! I look forward to Sun’s implementation of DirectX translation.

Outside of all this, I also found that VM’s generally boot up a bit quicker (especially Win XP guests – hellishly quick) and that tiny things such as the icons at the bottom-right of each VM window provide slightly clearer information about what is currently being employed.

So 2.1 is indeed a big step up. Sun have made great strides with Virtualbox, and even better still it remains a free (as in beer) product! I can’t wait for the next release!

EDIT: If you’d like to see Serious Sam 2 and ProQuake in action in Virtualbox 2.1, I’ve knocked up a video and stuck it up on YouTube here.

Subtitle Downloader

I’m a big fan of simple applications that fill a big void or annoyance in life, and one of those annoyances is finding suitable subtitle files (.srt files) for your movie rips. To fill this void is a simple application called SubDownloader that does its best to crawl the ‘net for suitable subtitle files for whatever movie you select in the file browser.

Download the application’s .deb file from the GetDeb website and install it with:

$ sudo dpkg -i subdownloader_2.0.9-1~getdeb1_all.deb

(or if you’re afraid of the command line, just double-click it within a window to launch the GUI version of the Package Installer instead – either way will take care of the QT4 and Python dependencies for you)

…and that’s it. now just fire it up from the Applications->Sound & Video menu, browse to your movie folder and let the app find the subtitles for you. Sweet! Smilie: :)

You don’t have to search by your collection, though – you can do a regular title search as well.

The selected subtitles are then downloaded into the same directory as your source video, allowing you to execute them in Totem or other subtitle-supporting player right away.

Simple, yet effective. This really should be in the Ubuntu repositories.