Saturday 19 December 2009

Roberts Stream WM202 Radio - Review

I've just bought the Roberts Stream WM202 radio as a gift for Christmas. I picked it because it has FM/DAB and Internet Radio, and because it had support for the BBC Listen Again.


9/10 The Roberts Stream WM202 is an excellent product, which surpasses the features of the Reciva Radios and the Freecom MusicPal. Excellent sound, easy to use menus, brilliant compatibility.

  • Available in black, or for a little extra, white or silver
  • DAB/FM/WIFI Internet Stereo Radio
  • Wired / Wireless network connection
  • Thousands of radio stations around the world, or add your own
  • Plays podcasts and BBC Listen again without a PC turned on
  • Play your music collection from your computer or network storage
  • 2 alarm timers (DAB/FM/buzzer) or internet radio
  • Supports MP3/WMA and Real audio formats
  • Portable - Mains / battery Operated

I have a few Reciva based radios, and believed that their chipset and software was the only way of listening to Listen Again services without having a PC turned on. Well, I was wrong - the Roberts Stream WM202 uses the Frontier Silicon chipset, which beautifully integrates DAB, FM, Media Player and WiFi.


The radio is a portable stereo radio, which has a good solid construction, with the controls on the top, two speakers in the front which have an excellent output in both volume and frequency response.

The display is a large multi-line graphical back-lit LCD display, with white text on a blue background. The controls are easy to use, with 5 preset buttons (which double as play/fast forward/rewind/pause when operating as a media player). There is a large rotary control which is used for selection and navigation through the menus.

There is a single on/off push button, and when switched back on, the radio automatically reverts to playing what was on when it was switched off, be it DAB or Internet etc...

There are 5 preset buttons on the top, which are set by holding the appropriate button down for 5 seconds when the station is playing. 5 presets are possible in each of the 5 radio modes, which gives 15 channels in total.

The radio has a 9V input, and comes with a small transformer, moulded into the plug. The radio also has a battery compartment for cable-free operation!.

The radio can operate on a network either wired, or wireless (on the rear of the radio, there is an ethernet socket).

The rear of the radio has a USB socket, which is provided so that the radio can be upgraded, although for most upgrades, you will not even need this, as you can upgrade over-the-air!.

Also on the rear of the radio, there are two 3.5mm sockets, one for audio-in, and one for audio-out / headphones.


When DAB is selected, the radio automatically plays the last DAB station listened to. The menu button enables you to easily scan for stations, and if you really need to do a manual scan, that is supported too.

The DAB function even supports the Dynamic Range (DRC) control too.



By simply pressing the mode button, the radio switches to FM mode, and starts playing the last station listened to. The controls and display for the FM mode seamlessly integrate into the radio's other features.

Radio station scanning is a simple as pressing the select button - you can then store your favorites by holding the appropriate favorite button in for 5 seconds.

The scanning can be configured to detect strong stations only, or stop at some of the weaker stations. Plus if the station you really enjoy is weak, you can enable 'Listen in Mono', which improves the signal quality further.

Internet Radio

With another press of the mode button, you flip into the internet radio mode. Configuration of the wifi connection is simple to do with the built-in 'Network Wizard', and you can connect to either a wired or a wireless system, and with wireless. WEP, WMA, DHCP and manual configuration are all supported. Each connection is stored as a separate network profile, so if you take the radio on the move, perhaps between houses / networks, you won't keep having to re-enter your network settings.

Internet Radio Station Searching

Searching for radio stations cannot be easier, you can search from the station list for:
  • My Favorites - You can set these up online (see below)
  • Local United Kingdom - A list of all the local radio stations
  • BBC - This includes all listen-again podcasts
  • Stations - You can browse by Location, Genre, Popular, New or just Search
  • Podcasts - You can search by Location, Genre or just Search
  • My Added Stations - You can add your own stations too
When listening to a station, be it Favorite, BBC, Podcast etc..., you can assign it to a favorite, by pressing and holding the desired preset button for 5 seconds.

Currently, it is not possible to fast forward and rewind BBC Podcasts.

Any access to the list of stations is performed by connecting to the internet, and obtaining the latest update. This is remarkably quick, in comparison to the Reciva browsing, with menu lists coming up within a second of the button being pressed (my Reciva based IRMA1 takes 20 seconds to bring up 'My Stations').

Now, if you want to add more than the five allowed presets, you can do in by configuring your own internet radio lists online. All you need to do is register your radio by finding your radio's unique ID number from the radio's Help menu, and creating an account on

Here, you can browse the list or radio stations organised by country, and by genre. When you select to add the station, you can create your own groups, so that like grouped stations remain together. This becomes available on your radio immediately.

Each time you register the radio, the unique ID number is re-generated, so if you buy the radio second hand, there's no need to worry when it comes to registering it - just create a new account and enter the unique ID. You can then unshare the radio settings with the previous owner on the website.

If the station you want doesn't exist in the database, you can add it yourself in the 'My Added Stations' menus.

Music Player

With yet another press of the Mode button, you can play music from computers on your local network. With a click of the select button, I can play music from my UPNP Freecom FSG3 Network Access Storage box, which is running the Twonky Media Server.

You can also play music from Windows File Shares from a networked drive, or from the Media Share option in Windows Media Player.

MP3 Player

You can also plug the headphone socket of your MP3 player to the line-in socket on the back of the Roberts Stream WM202 radio to use the radio as an amplified speaker! This external 3.5mm stereo jack input is mixed with the currently playing station - the manual tells you to turn the volume down on the radio, and use your Ipod volume control - I prefer to switch the radio mode to Media Player (and not browse the network to play any files).

Alarm Clock

The radio has a built-in alarm clock with a snooze feature. You have two alarms which you can set to go off Daily, Once, Weekdays or Weekends. Each alarm can be set for Buzzer, Internet, DAB or FM, and can automatically switch to the last station listened to, or one of your presets - each alarm can have its own volume setting.

When the alarm goes off, just hit the big round select/snooze button to get another 5 minutes sleep.

If the radio station is not available when the alarm is due to sound (e.g. intenet connection is currently down), you don't need to worry about over-sleeping, as the Buzzer will automatically sound instead.


When compared with the Reciva radios that I have (IR100, IRMA1 and Tevion), the WM202 is significantly better, as the features are seamlessly integrated, and the radio is much more responsive. The Roberts Stream WMA202 is also portable, which means that I wouldn't have had to have as many radios scattered around the house!

When compared to the Freecom MusicPal (which uses the VTuner database), the WM202 appears more reliable when connecting to the internet, the sound output is better (and stereo!). The Roberts Stream WM202 is capable of connecting the the BBC Listen Again service, which is not supported through the US VTuner system.

I was involved in setting up a project to provide alternative firmware for the Reciva radios, because they didn't do what I wanted. I don't feel the need to do anything of the sort on this radio as it is well integrated and functional.


Reciva Based Radio Links

Many Reciva based radios are now obsolete. Please find links to some that remain:

Network Access Storage Links

My FSG-3 is now obsolete, and from what I understand, the current Freecom NAS do not have a media server built in. The following NAS do:

Sunday 23 August 2009

Motorola H700 Bluetooth Headset Pairing

I have a Motorola H700 bluetooth headset, and it can play up when messing around with connections.

It worked perfectly well with my Nokia E90, but then I tried it with my TomTom Go Live, and then it worked with neither.

(Re)Pairing with the Nokia E90

This is what I did to get it to connect to the E90 again:

1) Delete the pairing in the E90
2) Put the headset on to charge for a minute (this performs some sort of internal reset)
3) Press and hold the call button - the light turns purple
4) Open the boom
5) Release the call button - the purple light remains on
6) Search for the headset from the phone
7) Enter the passcode of '0000'
8) Select 'Yes' I do want to save settings, and I do want to automatically pair.

Note that the headset does have a timeout, so you do need to shake a leg when messing around with the phone.

This operation got the headset working well again with the phone.

Pairing with the TomTom Go Live

Saturday 11 July 2009

Remote Linux Access


This blog gives instructions on how to login between linux machines without having to enter passwords. It does this using the secure shell client / server programs (ssh and sshd). These use a public/private key pair.

Enabling Programs

On the machine you wish to login to, ensure that the SSH server (sshd) is installed.

Enable it is the Mandriva Control Centre (system / Enable Services)
  • Tick 'on boot'
  • Press 'Start'

Configure the firewall to enable the server to be accessed (security/Personal Firewall):
  • Ensure either ssh or all is ticked

Creating your Public / Private Keys for SSH

The machine infront of you is the SSH client. You need to create a public/private key pair for use in ssh sessions. You only need to do this once on the client machine.
From the machine infront of you, create a public/private keyset:
[steve@crunchie ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/steve/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/steve/.ssh/id_rsa.
Your public key has been saved in /home/steve/.ssh/
The key fingerprint is:
3b:4d:5e:21:ee:65:e3:dc:22:21:33:fd:ed:53:d8:fd steve@crunchie
The key's randomart image is:

+--[ RSA 2048]----+
| |
| 2 o. |
| X. ==o= |
| . |
| + o o S |
| *.o |
| X. |
|. - |
| ...oo. |

Transferring your Public Key to the SSH server

Now, transfer your public key to the machine you want to log into, and set the correct directory permissions:
[steve@crunchie ~]$ cat ~/.ssh/ | ssh steve@flake 'cat >> .ssh/authorized_keys'
steve@flake's password: *****
[steve@crunchie ~]$ ssh steve@flake 'chmod go-w . ; chmod 700 .ssh ; chmod 640 .ssh/authorized_keys'
steve@flake's password: *****
That's it - you can now open shells up on the target machine without entering a password.
[steve@crunchie ~]$ ssh flake
Setting up X for Remote Access

The machine infront of you is the X server (the server actually draws the windows). Now that you have configured ssh, you won't be prompted for any passwords.

For me, the client machine (the machine on which the applications are started) is called flake:
xauth extract \- $DISPLAY | ssh flake xauth merge \-
Running an Application

this is as simple as sshing into the other machine, and running the application:
ssh flake gedit
Now for the minor complication - when your program exits, the X session remains connected for a period of time, and until the X session closes, ssh will not exit - you have to control-C it.

If you launch your programs from the remote X client / ssh server and re-direct stdin and stdout, this will not happen, e.g.:
[steve@crunchie ~]$ ssh flake
[steve@flake ~]$ gedit < /dev/null >& /dev/null &
[steve@flake ~]$ logout
You can also launch your programs from the X server / ssh client and re-direct stdin and stdout.

I've created a script called 'flake' which I have put in ~/bin on crunchie, my local X server, which is in the path. It closes stdin/out/err and connects to my X client machine (flake) and runs the requested command line program:

exec 0<&- # close stdin
exec 1>&- # close stdout
exec 2>&- # close stderr

ssh flake $* &

Configuring the Menu

You can now create a menu entry, to launch all of the programs on the remote machine, but display the windows here. Select System / Preferences / Main Menu, and create new entries, for example:

Logging In

If you want to have a terminal to connect to a server, added to the menu, the best way to do this is to run the gnome-terminal locally and connect to the remote server:

The command should be:
gnome-terminal -e "ssh remotemachinename"
You could also use an IP address instead of the machine name.

If the remote machine is a Madriva one, it is likely that it contains appropriate environment variables, containing escape sequences which cause the window title to be dynamically changed.

If it is not, you can add something to the start-up script to set the prompt to include the appropriate escape sequences. This is the /etc/profile script on a Freecom FSG3, which uses 'sh' from busybox:

# Set prompt

PS1="[\u@\h \W]\\$ "
export PS1

# Set window title

case $TERM in
PS1="\033]0;\u@\h: \w\007[\u@\h \W]\\$ "
Now, when you login using the new menu entry, the title bar of the window dynamically updates:

Tuesday 23 June 2009

LTImage Installation on the Dreambox

Upgrading / Installing

If you are upgrading the firmware, make sure that you have saved / backed up / recorded any important data, for example:
  • The Bouquets (using DreamboxEdit under Wine)
  • Your Timers
  • The Crontab File (crontab -l)
  • The LNB / Diseq configuration
  • Any scripts you have installed on the internal flash

Download and Install

Download the latest image for your dreambox from the LT Team website:

Switch on your Dreambox, whilst holding down the down button on the front panel - the display will say **STOP**. Note the IP address displayed.

Connect to the IP address from your PC using a web browser, i.e.

Select firmware upgrade in the web browser page, and point at the nfi file you have downloaded, and press 'Flash!'.

Be patient ...


With the later versions of the image, it is necessary to use a swapfile. I use one on the compact flash, which is automatically mounted in /media/cf.
dd if=/dev/zero of=/media/cf/swapfile bs=1024 count=65544
mkswap /media/cf/swapfile

swapon /media/cf/swapfile
To make things permanent, create /etc/rc3.d/S99swap:
swapon /media/cf/swapfile
Ensure that it can be executed with:
chmod a+x /etc/rc3.d/S99swap
Tuning In

Once the web browser has indicated that the download is complete, return to the Dreambox, and press the front panel power button off/on. The dreambox will now boot.

Select the wizard, and configure your LNB setup, then configure your network. Once complete, press the Menu button, and go to Setup / Servce Searching, and leave the dreambox for a while, searching for available channels.

Viewing Card

For UK Freesat, plug your card into the front of the machine, then go to the LT Menu, and download / install MGCamd and NewCS. Select these in the LT Menu 'EMU' section.

Radiotimes, and EPG Grabber

LT provides an EPG downloader. You provide it with an XML file, containing the channels you wish to download, and the python script visits the appropriate guide provider (e.g. Radio Times), and downloads the data.

This method is quite slow, as by default, every possible channel is downloaded. I have created my own scripts, which parse the currently selected bouquets and generate a minimal download.

E2 LoadEPG

Alternatively, someone has managed to produce an OpenTV decoder, and has created E2LoadEPG. It can be downloaded from:, and installed.
cd /media/hdd/download
cd /media/cf
tar xvzf /media/hdd/download/e2_loadepg-0.52.tgz
The program is a suite of python scripts, with a binary application to do the actual download. There are five files which require editing.

First File: /media/cf/e2_loadepg/e2_loadepg.conf
Second File: /media/cf/e2_loadepg/dl_modules/bskybsat-channel_list.conf

The script provides the option of selecting which EPGs to download. This actually needs to be automated (parsing lamedb and favorites like I do with my approach), however in the meanwhile, you need to set each channel you wish to get a guide for to a '1'.
# bbc 1 e mids , id=2105
2105=0,bbc 1 e mids
# bbc 1 east (e) , id=2106
2106=0,bbc 1 east (e)
# bbc 1 east (w) , id=2073
2073=0,bbc 1 east (w)
Third File: /usr/bin/

Following a download, the enigma application is re-started, and this is when it reads the EPG from /media/hdd/epg.dat. I can't find a way of pointing it at the compact flash, however using the hard disk will not force it to keep spinning, as the file is read on startup, then deleted.

Editing the script to include a 'ln' command makes the EPG available on each reboot:
/usr/bin/showiframe /boot/backdrop.mvi
cd /home/root
[ -f /media/cf/ext.epg.dat ] && ln -s /media/cf/ext.epg.dat /media/hdd/epg.dat
LD_PRELOAD=/usr/lib/ /usr/bin/enigma2
Fourth file: /media/cf/e2_loadepg/dl_modules/bskybsat.conf

The fourth file contains the actual download configuration - the transponder needs to be changed so that the program can switch to the right channel to download the EPG. There are two channels I have found that work: "EPG Background Audio" and "IEPG data 1" - if the channel does not have an audio stream playing the background audio you normally hear when navigating the EPG on a sky box, it probably won't have the EPG data.
# Set to EPG Background Audio
Last File: crontab (using 'crontab -e')

2 2 * * * python /media/cf/e2_loadepg/
A Manual Run

python /media/cf/e2_loadepg/
And check the log file:

Sunday 22 February 2009

TomTom Go Live 540 GPS - Review

Following the purchase (and return) of a Navman S80 Deluxe GPS, I plunged for the TomTom Go Live 540, and haven't regretted it since.


GPS - 9/10 - A well engineered device, with good quality accessories. Flexible, adaptable, re-configurable.

There is a different blog entry for the Live services, which can be found here.


The TomTom Go Live series in the UK has the TomTom Go Live 540, Tom Tom Go Live 740 and Tom Tom Go Live 940.

These devices have similar functions, and the main difference is the maps:
  • The 540 covers the UK and Republic Of Ireland
  • The 740 also Includes Europe
  • The 940 also Includes the US and Canada
You can buy add-on maps at a later date, so it is possible to buy the 540 and add the Europe Maps with an online download.

One other difference is the MP3 license. The 540 does not come with an MP3 license, so you can't use it to play music whilst you drive.

Build Quality

The GPS itself is extremely well built, with a slightly rubberised casing, which makes it easy to grip. The large wide screen is extremely clear and easy to see.

The GPS comes with a windscreen mount, which has a screw-fitting to enable / disable the suction cup, making it very easy to fit and remove, and very secure once installed.

The docking station is robust and heavy, and doesn't slide around on the desk when the wind blows the USB cable.

Navigation and Map Accuracy

I have had the GPS since December 2008, and have been extremely happy with the quality and accuracy of the maps, and the navigation method.

When driving, you can use either the 2D or the 3D view. You can configure the screen to show key navigation information, such as time to go, road speed, and guidance for the next junction. Touching different parts of the screen brings up different menus - many of these menus can be moved to your liking, but in the images displayed on this blog:
  • Middle of the screen brings up the main menu.
  • Bottom of the screen brings up the current route navigation meu.
  • Right of the screen brings up the traffic menu.
  • The Arrow icon shown on the screen brings up a configurable quick menu.
  • You can also add a Voice Control icon to the screen (see voice control below).

Planning a route is extremely easy - you can just hit the screen, and select 'Navigate To'.

Or you can pre-plan a route, which is particularly useful if you are inside and out of GPS reception.

You can then choose to navigate to:
  • Home
  • A Favorite
  • A Point of Interest
  • A Town / Street Name / Postcode
  • Recent Destinations
  • Position on a Map
  • Latitude / Longitude
  • Position of Last Stop
When using the TomTom Services, you can also do an online search, and navigate there.

Voice Clarity

There are two different types of voice you can use on the GPS, Sampled Voices and Computer Generated Voices. If you use the Sampled Voices, you can have characters such as John Cleese telling you to "turn around and place the car in the opposite direction to the way you were previously facing", however, John's voice cannot synthesise all of the road and street names in the country.

Hearing street names means that you don't need to look at the GPS at all to check which turn it actually means - this makes driving with this GPS even safer. When I drive in to work, it will say to me things like "Go around the roundabout, second exit, A1, towards Stevenage".

Technology has got to a stage where it is beginning to be difficult to tell when the voice is computer generated. The two UK English voices (1 Male and 1 Female) are very clear and easy to understand.


With the clear screen and the comprehensive voice directions, it makes things very easy to drive, and you rarely have to interact with the GPS itself.

The only real time that you may need to look at the device is to navigate complex junctions, to verify that you are in the correct lane, going the correct direction. For this, the advanced lane guidance comes to your aid. This system presents a large full-screen image of the exit, so all that is needed is a glance.

Map Updates

This is one of the areas where the TomTom comes into its own, up and above the other offerings, such as the Navman S80, reviewed earlier on this blog.

Maps are procured by TomTom from various different map providers around the world. For the UK, the map provider is the same as the one which supplies Google Maps.

I have used the "Report Map Error" feature a number of times, and recently checked on Google, and saw that one of the modifications I had made (identifying a road as being a footpath, and naming it "Old Tram Road") has made it from my GPS to TomTom, to the Map Provider, and to Google within about 6 weeks.

It is highly likely that you are on the road when you spot a map error. It is possible with a quick link on the screen, to bookmark a site which needs correction, and make the correction when you get home. This includes renaming roads, changing road directions, renaming or moving points of interest, and reporting new safety cameras.

Bluetooth and Voice Control

Voice Control

The GPS can be controlled by voice, using the in-built microphone, or through a bluetooth headset, so rather than navigating through the menus to get what you want, all you need to do is hit a microphone icon on the screen, and use one of the many pre-defined commands to directly drive the GPS. The GPS does not need any voice training, it just works, out of the box. There are dozens and dozens of commands, which include:
  • "Calculate Alternative"
  • "Calculate Original"
  • "Avoid Roadblock"
  • "Add Favourite"
  • "Brightness Up"
  • "Call Home"
  • "Map Error"
  • "Minimise Delays"
  • "Navigate to a Postcode"
  • "Navigate to the Nearest Cash Machine"
TomTom Live Services

TMC Cables

I bought a TMC cable with the TomTom - these contain an FM radio aerial, which you drape around your windscreen. In the UK, Classic FM transmits the TMC traffic messages for motorways and major roads.

If you have an active subscription to the TomTom Live Services, this will always override the TMC traffic function. The TomTom Live Service now works in other countries without any additional subscription, so all you need to have are the maps.

There is little need for a TMC cable (it is only useful if you do not have any Live coverage, which is rare). I would recommend buying a TMC cable when you need one (perhaps travelling to a country that supports TMC, but not Live services), not when you buy your Go Live GPS receiver.

The Live Advantage

When I bought my GPS, I intended to use the live services for the free 3 months, and then go on to using the TMC cable, however, the Live Services have a much better reception than TMC, far better coverage, and other useful features, such as an itegrated Google Search for locations. See the Live Blog Entry (comming soon) for more a much more thorough write-up.

External Links

Saturday 21 February 2009

Can't See my FSG3 Shares on Mandriva

Following the installation of Mandriva Linux on my desktop PC, I have been unable to simply access shares on my FSG3 Network Storage box.

I use the browse shares, but the contents of the FSG3 always appear empty. I can mount the share manually, by typing:
But I can't browse all of the shares. On looking at the smb.conf file (which is located on the FSG3 in the /usr/local/samba/lib directory, it is clear that it doesn't actualy have any specified ones (unless you are the administrator).

I have therefore modified the /usr/local/samba/lib/smb.conf file to include a 'HOME' section, as shown below.
netbios name=media
server string=Freecom StorageGateway
encrypt passwords=Yes
null passwords=Yes
admin users=admin
disable spoolss=Yes
max log size=50
socket options=TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536
use mmap=Yes
use sendfile=Yes
lock directory=/ramdisk/samba

comment=Admin access to entire disk
valid users=admin
create mode=0666
directory mode=0777

comment=Home directories
create mode=0664
directory mode=0775
Following this update, the server is re-started:
/etc/init.d/samba stop
/etc/init.d/samba start
I can now browse to smb://media/home, and see all of the user areas. Note that unix file and directory permissions still apply, and that you have to be logged in as the correct user, and be in the correct group.

Sunday 15 February 2009

Webcam Manipulation with Javascript

I purchased an IcamView web server, and megapixel webcam, which I have waterproofed, and placed in the garden.

The IcamView web server has a low power processor, and is unable to manipulate the images at all. When you use the ActiveX or Java video viewer, the viewer manipulates the image for you (on the client PC).

If you access still frames, you have no such tool, and the frames come straight from the camera, warts and all. The most obvious issue is when images are flipped by the camera, and it expects the software to flip the images back.

I have created a Javascript file (webcam.js), which can post-process images from webcams. It is intended for people who don't know or want to know how to perform any Javascript programming.

Adding the Code in your HTML File

All you need to do is use your favorite web editor, and include the Javascript, a webcam tag, and a normal img tag for backwards comatibility with non-Javascript capable browsers.
<script language="javascript" src="webcam.js"></script>

<webcam src=""
graceful="yes" errsrc="" alt="Tomy Cam" showdate="yes" bgc="black" fgc="white" refresh="310" />

<noscript><img class="webcam" src='' alt="Tomy Cam" /></noscript>
The Code all belongs in the <body> section of the web page.
  • The <script> tag loads the Javascript file.
  • The <webcam> tag is interpreted by the script, and loads / edits the image.
  • The <noscript> tag is ignored by browsers that can process Javascript, and handled by any other ones - the images displayed on these browsers will not be flipped / rotated or labelled.
More Information

More information, including the source code, can be found here.

Thursday 5 February 2009

Linux Kernel Installation with VirtualBox

Following the installation of virtualbox, I have downloaded and built my own Linux kernel and applications from scratch. This blog entry is a step-by-step description of what I've done.


Build Machine
Development Tools
Ipkg Manager
Directory Structure
bin Directory and Tools
etc/ipk Directory
makefiles Directory
Building Packages
Creating the Filesystem
Building the Kernel
Building Glibc
Building Busybox
Installing Packages
Building Image
Creating CDROM
Making Bootable

Build Machine

The machine used to build is a Packard Bell desktop, with an Intel Quad CPU Q6600 @ 2.40GHz (19200 BogoMIPS total), with 1Gb RAM.

Each of the compile steps below, was performed in sequence, and has an indication of how long it took on my machine. Once you have performed one of the steps, you should gain an understanding of how each step takes (releatively).

Development Tools

A number of development tools are needed to build a software release - with Mandriva, all of these tools can be installed through the admin menu.
  • GCC 4.3.2 or later
  • GNU Make
  • GNU Bison
  • GNU binutils or later
  • Other standard GNU/Unix tools
  • LZO 1.02 (devel) or later
  • Ruby
IPKG Manager

From the installation files, you will see that I am always trying to keep the install size down, that's why I selected busybox. This is also why I've selected to use the itsy package manager which is a cut down version of the Debian package manager. It creates ipk files, and the tools can be downloaded from here:
  • ipkg-tools
  • ipkg-build

Directory Structure

I've created a directory hierarchy on my Linux machine, which will contain files as follows:
  • bin - contains scripts and programs I used to develop the build
  • build - working directory where all of the compilation is performed
  • etc - directory, where I include all of my configuration files for the build
  • ipk - directory where all of the ipk install files are stored
  • makefiles - I use make to control all of the building, and the makefiles live here
  • sources - holds the downloaded source code
  • image - where a build image is created
  • iso - where the iso cdrom images are stored
Bin Directory and Tools

In the bin directory, I have several scripts, the first being 'setpath', which is used to set up the build environment, and is sourced by typing a dot, space and setpath, i.e.: . setpath

setpath file contents:
# Root work area
export ROOT

export PATH

# Source Tarball directory
export SRC

# SVN Archive directory
# Used for locally developed applications
export SVN

# Build directory
# Used to compile programs
export BUILD
# Installation directory
# Used to install programs (full development tree)
export INSTALL

# IPK directory
# Used to create distribution packages from installation
export IPK

# Image directory
# Used to create distribution image from packages
export IMAGE

# Aliases
alias cdp="cd $ROOT"
alias cdb="cd $BUILD"
Now, I manage all of my source bundles with ipk control files, which are stored in etc/ipk (see below). There are two scripts that extract information from these files: getversion and download.

getversion looks into the appropriate ipk control file, and extracts the version number of the requested application:

getversion file contents:

if [ "$ROOT" == "" ]
echo "\$ROOT not set, did you source setpath?"

cd $ROOT/build

if [ "$1" == "" ]
echo "getversion application"
echo ""
echo "e.g. getversion glibc"
echo ""

if [ -f $ROOT/etc/ipk/$1 ]
VERS="`cat $ROOT/etc/ipk/$1 | grep Version | cut -d' ' -f2-`"
echo "$VERS"
echo ""
download is used to download the requested file from its source, and store the resulting tar / bzip file in the sources directory.

download file contents:

DATE="`date +%y%m%d`"

if [ "$ROOT" == "" ]; then
echo "ROOT environment variable is not set."
echo "has setpath been sourced?"

if [ "`which wget`" == "" ]; then
echo "wget is required, please install."

cd "$ROOT/sources"

# Download via wget

if [ "$1"=="" ]; then
SOURCES="cat /etc/ipk/* | grep Source: | grep wget, | cut -d ',' -f2-`"
SOURCES="cat /etc/ipk/$1 | grep Source: | grep wget, | cut -d ',' -f2-`"

FILE=`basename $SOURCE`
NAME="`echo $FILE | cut -d- -f1`"
if [ -f $FILE ]
echo "$NAME has already been downloaded, skipping."
echo "Downloading $NAME from $SOURCE."
mv -f "$NAME-*" old > /dev/null 2>&1
wget -nv "$SOURCE"

# Download via git

if [ "$1"=="" ]; then
SOURCES="`cat ../etc/ipk/* | grep Source: | grep git, | cut -d',' -f2-`"
SOURCES="`cat ../etc/ipk/$1 | grep Source: | grep git, | cut -d',' -f2-`"

NAME=`basename $SOURCE`
if [ -f $NAME-*.tar.bz2 ]
echo "$NAME has already been downloaded, skipping. (Manually remove $FILE to force download)"
echo "Downloading $NAME from $SOURCE."
cd ../tmp
rm -rf ../tmp/*
git clone $SOURCE > /dev/null
rm -rf $NAME-$DATE/.git
tar cf ../sources/$NAME-$DATE.tar $NAME-$DATE
rm -rf $NAME-$DATE
cd ../sources
bzip2 $NAME-$DATE.tar
In order to unpack the downloaded bundles for compilation, I use an unpack script called, unpack!

unpack file contents:


if [ "$ROOT" == "" ]
echo "\$ROOT not set, did you source setpath?"

if [ "$ARCH" == "" ]
echo "\$ARCH not set, did you remember to set and export it?"

HOSTP="`cat $ROOT/etc/ipk/$1 | grep Depends | cut -d' ' -f2`"
if [ "$HOSTP" == "host-development-environment" ]
export ARCH="host"

mkdir -p $ROOT/build/$ARCH
cd $ROOT/build/$ARCH

if [ "$1" == "" ]
echo "unpack application"
echo ""
echo "e.g. unpack glibc"
echo ""

if [ -f $ROOT/sources/$1-* ]
FILE="`ls $ROOT/sources/$1-* | head -1`"
EXT="`echo $FILE | awk -F . '{print $NF}'`"
if [ "$EXT" == "tar" ]
echo "Unpacking $FILE"
tar xf $FILE
touch $1-*
if [ "$EXT" == "gz" ]
echo "Unpacking compressed $FILE"
tar xzf $FILE
touch $1-*
if [ "$EXT" == "bz2" ]
echo "Unpacking bz2 compressed $FILE"
bunzip2 -dc $FILE | tar xf -
touch $1-*
if [ "$DONE" == "0" ]
echo "Unknown file extension, or file not found for $0"
echo "package $1 not found in $ROOT/sources"
echo "ensure that the ipk control file exists in $ROOT/etc/ipk"
echo "then run download"
etc/ipk Directory

The etc/ipk directory contains the control files for all of the applications to be downloaded and used in the image. The ipkg manager understands the concept of dependencies, and requires that specific packages are installed in order to use other packages. Each package has a control file, which contains this and more information. Control files are in the following format:
Package: packagename
Section: admin / base / comm / editors / extras / graphics / libs / misc / net / text / web / x11
Priority: required / optional / standard / important / extra
Version: version.number
Architecture: ARCHITECTURE / all
Source: wget,url / git,url
Depends: dependencies,separated,by,commas
Description: Textual Description of the package
Packages are downloaded and stored in files containing their package name and version number, e.g. packagename-version.number.tar.bz2. The word ARCHITECTURE is automatically replaced during compilation with the processor architecture of the release, e.g. i586. When they are built, they end up in an ipk file with a name such as busybox-1.16.0-i586.ipk.

The source field is used by the download script to fetch the appropriate sourcecode and place it in the sources directory.

Depends is a list of the packages that must be installed for this package to work. The root package is named filesystem, onto which the linux kernel is installed. The main library glibc needs the kernel, and most applications need glibc. The hierarchy of dependencies is shown in the Packages section below.

There are also 4 scripts which may be used during installation / removal of a package - these are:
preinst [runs prior to install]
postinst [runs after files are installed]
prerm [runs prior to removal]
postrm [runs after files are removed]
These scripts may also exist in the etc/ipk directory, and be named packagename-preinst, packagename-postinst etc.

makefiles Directory

Building packages is performed using makefiles. In order to place all of the customisation in a single place, it is all done in the apporpriate make file.

... add words on makefiles here ..


The packages are all identified in the etc/ipk directory, and have the following dependency hierarchy:
Rather than show the contents of all of the packages here, they can be downloaded as part of the install tree from here.


With the configuration files created, downloading is as simple as typing 'download', which runs the script from the bin directory.

Building Packages

Downloaded packages all need to be configured and compiled for the target architecture.

Creating the Filesystem

The target machine filesystem needs some basic directory structure, and some system device 'files' creating. This can all be done inside an ipk install script.

.. list the ipk install script here as it is interesting ..

Once the ipk install script has been created, it should be saved as a source tarball (remember that this one is created and cannot be downloaded, so be careful about removing everything in the sources directory).

.. create the filesystem tarball ..

.. create the filesystem ipk file ..

Building the Kernel

Building the linux kernel is probably one of the longest individual tasks that you will need to do - for me, the compilation took 25 minutes.

Building Glibc
Building Busybox

Installing Packages

Building Image

Creating CDROM

Making Bootable

Unpacking, Configuring and Building the Kernel (25 minutes )

For my first build, I've decided to build the kernel with its default configuration. I've downloaded the kernel source, and unpacked into source/linux- and compiled it:
# unpack

cd sources
tar xzf ../0-tarballs/linux-

# configure kernel

cd source/linux-*
make mrproper
make menuconfig
cp .config* ../kernel-config

# compile

make bzImage
make modules
rm -rf ../../images/kernel
mkdir ../../images/kernel ../../images/kernel/boot
make INSTALL_MOD_PATH=../../images/kernel INSTALL_PATH=../../images/kernel/boot modules_
install install
* Note - need to install the kernel and header files in images, so that glibc can use them when it is being compiled.

This installation created .... in ....

Unpacking and Building GLibC (15 minutes)

GLibC is configured and built in the images directory:
# unpack

cd sources
tar xzf ../tarballs/glibc-2.10.tar.gz

# build

mkdir ../root ../root/etc
cd ../images/glibc
../../source/glibc*/configure --prefix=`pwd`/../root CFLAGS="-march=i586 -O2"
echo > ../root/etc/
make install
This installation creates libc.a and in images/glibc, along with the header files.

* Note need to install glibc and header files in images so that applications can use them when compiling.

Unpacking and Building the Bootloader
# cd bld/grub-1.96
# DST=`pwd`/../../dst
# ./configure --prefix=$DST CFLAGS="-march=i586 -O2"
# make
# make install
Unpacking and Building Busybox

I've downloaded and unpacked busybox-1.13.2 into the bld/busybox-1.13.2 directory.
# unpack

cd source
tar xvf ../tarballs/busybox*.tar.bz2
cd busybox*
make defconfig
Busybox need,,, - the above script need modifying to link against freshly compiled libraries.

This installation creates 'busybox' in the source/busybox* directory.

Building and Installing Grub

cd source/grub-1.95
./configure --prefix=`pwd`/../../root
make install

Building an Image
# Directories here need to be sorted out

cd distribution
rm -rf iso-boot
mkdir iso-boot
(cd kernel ; tar cf - . ) | ( cd iso-boot ; tar xf - )
(cd iso-boot/boot ; ln -s vm* vmlinuz)

genisoimage -o iso/boot.iso \
-b source/syslinux*/core/isolinux.bin -c source/syslinux*/core/ \
-no-emul-boot -boot-load-size 4 -boot-info-table \
The Automated Makefile

Booting VirtualBox

Modifying the Image

Distributing the Image


Builds should be done with the correct architecture in mind, for example:
CFLAGS="-march=i586 -O2"
The C Flag -march indicates that the architecture is for the Intel 586. This is particularly important when compiling low level code, such as parts of GLibC and Kernel Drivers, which use architecture-dependent assembler.

You can change the architecture, but you need to do it consistently.

Monday 2 February 2009

Eclipse Internet Backup Service and Linux / Wine

Eclipse Internet Home Broadband Pro comes with a free on-line backup facility, but only comes with a Windows based client. This note shows how the tool has been installed and operated under Wine on Mandriva 2009.

After downloading, double clicking on the .exe file, it installed into its default location. The account came with a username and password, which was prompted for and entered.

Backup Configuration

With the program, you can select which directories to back-up - remember that as this is a Wine application, you can only see the 'windows' drives.

Now, the backup offers you the choice of which drives to include for the operation.

By default, 'My Documents' is selected, and this maps onto whichever directory you have selected for the Documents folder in the Wine Configuation application (Desktop Integration / Shell Folders).

There is an advanced button, which I suspect is there to allow you to pick your own directories from the filesystem, however this does not appear to work properly.

When you select 'Advanced', you get a file hierarchy selection, but rather than containing a filesystem tree, it contains 'colours', 'sports' and 'food' - I presume that this is an internal development function that we should never see.

Having said that, it does not prevent us from using the tool to perform backups.

I have selected the tool to backup 'My Documents', which, for me, maps onto /home/steve/Documents (in the Wine configuration tool).

The backup tool follows softlinks, and also follows "hidden" .xxx files. I have other directories in /home/steve that I want to back up, so all I need to do is soft link them, for example:
ln -s /home/steve/directory1 /home/steve/Documents/.directory1
This way, the backup covers them, but I don't need to keep seeing them in the file manager on the computer.

Before backing up, the tool asks for a password to encrypt the uploaded data - this uses AES128, as symmetrically keyed algorithm.

Scheduled Backups

The application seems to run quite happily from the Linux systray, so it is just a matter of selecting the schedule configuration.

The only thing it doesn't seem to be able to do is display the start time that you have selected - I guess that there is a slight incompatibility or assumption in the font chosen in the drop-down boxes, and it doesn't quite fit. It doesn't, however, impede the selection of the start time.
Performing Restores

Restores are as simple as backups. Restores, by default, try to place the files into "c:\windows\profiles\username\My Documents", however, this uses the Microsoft "move-and-confuse" directory feature, whereby the c:\windows\profiles\username\My Documents" directory is actually the same directory as the one you specified in the Wine configuration program (e.g. /home/users/username/Documents), and is the same directory you used for the backup.

You can select a different directory for the restore, however, the tree does not offer you any of the other mounted drives. It is possible that these look like network drives to the application (I am not sure how Wine handles the drive mapping), so you won't see your drive D:, E: etc...

If you want to restore the files to a different directory, I'd suggest creating a 'restore' subdirectory in your 'Documents' folder, and restoring to there.

Automatic launching on Boot / Login

In order to be useful, the program needs to run in the background. It has a GUI, so running it as a Wine command-line application seems unlikely. I believe that the only realistic way to use the program is to auto-run it when you login.

If you want the program to backup multiple user's files through one account, I suspect that you are going to have to either run the application as root, or provide the current user with read permission for the other user's files, and soft-link. This could be achieved with a group access permission on the filesysytem.

Running the application as root could have possibilities, i.e. in root's Wine configuration, could point to root's Documents folder, which contains softlinks to all user's 'backup-me' folders. This program, however, would be accessible to the current user, who would be able to restore other people's files wherever he wanted.


Sunday 1 February 2009

Installing VirtualBox on Linux Mandriva

VirtualBox is a free virtual machine developed by Sun Microsystems.

This is particularly useful when building kernels and checking that they boot correctly.

It is also useful if you wish to switch between operating systems, or have (as happens in so many cases), applications which will only run under Microsoft.

I personally have installed VirtualBox under Mandriva 2009, from the add/remove programs part of the computer configuration.


The first time I ran it, it appeared to run perfectly, however, I believed I could not see all of the hardware, so I ran it as root. From then on, it would only run as root, and I received the following error message when I tried to run 'VirtualBox' from the command line as a mortal user:
WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel ( or it failed to load. Please recompile the kernel module and install it by sudo /etc/rc.d/init.d/virtualbox start.

You will not be able to start VMs until this problem is fixed. VirtualBox: SUPR3HardenedMain: effective uid is not root (euid=500 egid=500 uid=500 gid=500)
Now my Mandriva 2009 does not have 'sudo' installed - this appears to be a dependency of VirtualBox that was overlooked during installation. I installed 'sudo' through the system's Administration control panel. I also had to edit /etc/sudoers to include myself:
me ALL=/etc/rc.d/init.d/virtualbox
me ALL=/usr/bin/VirtualBox
This still isn't right - I can now sudo launch VirtualBox from the command line, but it doesn't work from the main menu. There are posts on the internet telling you to make sure that your user is in the correct group to get it to run as a mortal, however, I created the group, and changed the permissions on the application, but failed to get the program to work. I am therefore going onwards as root.

First Project

Before I started, I changed the directories used to store the virtual disks - this was as easy as clicking 'File Preferences'

Creating a new guest operating system is also very easy - it's all menu driven - select the 'New' button, identify your client operating system, and select the size of the boot disk.

I am making a small Linux distribution, so I have selected:
  • Linux 2.6256Mb RAM
  • 2Gb Fixed Size Operating System DriveBuilding the Distribution
This is continued in a different blog entry!


Failed to register hard disk - a hard disk with the same UUID or properties is already registered: Make sure you delete / unregister the disk using the Virtual Disk Manager (it's on the file menu) rather than removing the actual file.


Virtualbox can be downloaded from:

Friday 16 January 2009

Ventriloquism for Dummies

In light of the recent UK driving rules, where almost anything you do when behind the wheel of a car could be interpreted as "not being in proper control of the vehicle", you are at risk of a £60 fine and 3 points on your license if you are not 100% concentrating on the road.

Singing in your Car could cost you 3 points on your license

The new book, "Ventriloquism for Dummies" from Crackpot Press, will teach you techniques to evade capture, enabling you to sing along to your favourite tunes without anyone seeing your lips move.

Ventriloquism is 100% legal, and could save you from unnecessary expense

Mr Jones from Derby said: "What a complete load of rubbish, I bought Ventriloquism for Dummies, and didn't learn a thing"

When you buy Ventriloquism for Dummies, for a limited time only, you will also receive a sing-along CD, normally retailing at £180, with all of your favourite tunes, such as:

  • Night Fever - The Gee Gees
  • Dancing Queen - AGGA
  • Garcelona - Nonserrat Cagalle and Feddy Nercury
  • You Nake Lugging Gun - Fleetwood Nack
Ventriloquism for Dummies is not available in the shops, and this special offer is only available for a limited time.

Not only do you get a free sing-along CD, but you will also receive a roll of masking tape to put over your mouth whilst you practice - absolutely free.

"I got arrested for reading Ventriloquism for Dummies whilst on my way to work, what a waste of money." - Mrs Abbot, Gwent.

With Ventriloquism for Dummies, the free CDROM and Masking Tape, you will also receive a wire coat hanger, retailing in the shops at £52, but for you, it is absolutely free. You can wear this in the back of your jacket to prevent you from bopping around to the music in your car, and attracting attention.

Ventriloquism for Dummies has been written by Brother Robert, a Trappist Monk, and an expert in not moving his lips. His experience will guarantee your success.

Remember that this is not available in the shops. This fabulous collection also comes with a de-muffler exhaust loudener, worth £1021, to prevent anyone hearing the loud music going on in your car.

This fabulous collection, includes:
  • Ventriloquism for Dummies
  • Sing along CDROM
  • Mouth Tape
  • Posture Adjuster
  • Exhaust Loudener
And can be yours for a fantastic £299.99

Order now, terms and conditions apply.

Saturday 10 January 2009

Navman S80 Deluxe - Review

I briefly had a Navman S80 Deluxe (S80D) GPS, which I bought from Halfords in the new year sales.

Picture of Navman S80 GPS


Note: The S80 and S80D are not the same model, nor is the Deluxe an enhanced version of the S80.

2/10 - Lots of good features, however they are let down by poor documentation, software, voice and traffic capability - nice wallet though.

First Impressions

I got the bundle from Halfords. The bundle contained the Navman unit itself, a CDROM a tome of a license agreement, a windscreen mount and power cable, a TMC traffic cable, a USB cable and a case.

Look and Feel

The device iself is made of plastic (as most are), with a clean symmetrical shape, but with quite a tacky feel. Although the box said it came with a bag, it actually came with a really nice leather wallet with a magnetic latch.
The screen mount adaptor connects well to the screen, and the GPS needs to align with a platic fin, which it slides down before connecting at the base. The power cable has a large 12V plug at the other end.

User Interface

The device uses a touch screen user interface, but the layout can be quite difficult to use, particularly as a passenger using the GPS on the move - the buttons to toggle between 2D and 3D, or the button you need to press to get to the Navigate screen are smaller than a 1p coin

The device enables you to select your destination by postcode or by address. The database seems quite complete, and a voice speaks the letters as you press them.

When on the road, a small button on the screen enables the display to toggle between 2D, 3D, Route, Traffic and Step-by-step. The 3D route orients itself to the direction of travel, whereas it is possible to force the 2D view to orient itself due north.

I had some cases when I toggled through these views, when it came back to the 3D view, and the screen no longer scrolled with you in the centre, and you slowly drove off the edge of the screen. Switching the device off and on, and re-entering your destination seemed to fix this.

When approaching roundabouts, there is a large image in the top left of the screen, showing you a clear and precise picture of the roundabout, showing you your exit. When driving along the road, there is an exact image of the next junction at the bottom left of the screen.

The screen can also display Time / Distance to go, Time / Distance to next junction, Estimated time of arrival. The ETA seemed quite accurate.

Map Quality

I used the device with the 2007 maps - it came with a free upgrade to the 2009 ones, and I registered and sent off the email, but the automated system never sent back a confirmation. The 2009 maps are due for release some time in the middle of the year.

Having said that, the map I used seemed quite accurate, for example, I never came to a roundabout where the GPS though that there were more or fewer junctions that in reality (a failing of many GPSs).

There is a patch between the A1 and Cambridge which is shown as hatched on the map - I have no idea what this is, but it did have difficulty calculating a route when in this area, telling me to get to a road, when I was blatently driving down one.

GPS and Navigation Hardware

The S80 GPS has its moments. If you switch the device off with a short soft-off press on the power switch, it locks on pretty quickly after being turned back on. If it has been re-started from scratch, it takes a while to lock on, and invariably asks you if you are indoors 4 minutes after leaving your house.

The S80 comes with a TMC traffic cable - I never actually got this to work. The documentation tells you that the speaker connector is a speaker/traffic connector, but if you plug the cable in there, not only does the traffic system never detect a signal, but the speaker no longer works. The S80 also comes with a separate base unit, which takes the charger cable. There is also another jack socket with an image of a microphone on it - the TMC system doesn't work if you use this socket either. In fact, there are 3 sockets to choose from, and none of them allowed me to get a TMC data lock in 2 weeks.

Bluetooth and Phone Interface

The S80 can connect to a phone and also a bluetooth headset. The phone interface allows you to use it as a hands free system, however, if it did enable you to use the phone's voice dialling, I never found out how.

I could not send VCard entries across from my Nokia mobile phone, and couldn't work out how to make use of the address book. These features together made the hands-free features pretty useless to me.

Documentation and Software

The documentation for the S80 left much to be desired - there is a quick-start guide, which tells you to plug the TMC cable into the wrong hole (I presume), and the biggest document you get is a license agreement.

This is because, under the bonnet, the GPS is running a Microsoft operating system - how do I know this (well, I didn't read the license agreement) - when I tried to perform a firmware update patch, I downloaded a 34Mb file, and after seeing some Microsoft error messages on the device's screen, the update eventually gave up - I never did manage to install Service Pack 1.


The device has a PIN capability, so that you can protect your details in the GPS. This is a great idea, but as with many of the other features, leaves a little to be desired.

The PIN must be set by connecting the device to a PC - hopefully this means that if the device is stolen, nobody can get the details out of it. Unfortunately, I soft-started the device several times, and it did not ask me to enter the PIN before working. An intermittant PIN is of no use to anyone.

Text to Speech

The device does not say anything on the box about Text to Speech, however, if you do a search on the internet (navman Website) for the S80, you will see examples showing it saying "Turn Left into Wallace Drive" etc. I never heard any of this. checking the documentation, and it does not say that it supports Text to Speech, so I checked the Halfords website, and there is a question to which the Halford response is "Yes this does have TTS - we will update our documentation / website".

Well, I took the device back to Halfords because of the non-functional Text to Speech, and non-functional TMC traffic. They first told me that it wasn't supported, and after looking at the website and phoning head office, told me that it should be, but I needed to install the 'Kate' voice, which neither they nor I could find on the CDROM.

Good Features
  • Very good maps
  • Clear images when navigating roundabouts
  • Nice leather wallet
Desired Improvements
  • Improved documentation
  • A TMC system that works
  • Text to Speech
  • A PIN number that works all the time
  • VCard Support / Nokia E90 interfacing
I ended up asking for a refund, and I went on to buy a Tom Tom Go Live 540, which Ive now had (and am keeping!!!) for a month - review coming soon.


The Navman S80 is no longer stocked by Halfords.

The Navman website states that the GPS comes with Tele Atlas map data 2007.4, but I suspect a free upgrade to the latest map would still be on the cards. If you do find a retailer, it may be worth checking this out.

Saturday 3 January 2009

ICamView Pro Server and Cameras - Review

I've just bought an ICamView Pro Server, and installed it into my Garage.


9/10 - Multi-featured, robust, powerful little device. For my specific application, the device has a few little quirks, but these can all be worked around, and for £34, this is a must-have.

First Impressions

The server itself is very small and light (about the size of a couple of matchboxes), and was extremely easy to set up ... I just plugged it into the network, and it got an IP address from my modem/router, which it displayed on its LCD display - I plugged in the two cameras I had also bought (CM-51 1280x1024 camera and CM-09 - 640x480 infra-red camera), and they could be viewed via the web front end.

Reviewed Version

This review is for the ICamView Pro server (HCV91), running Firmware 3.3.CV91.8C02 (December 2008).

Setting Passwords

When I connected to the server, there were no password accounts set. The manual told me that if I forget my password and cannot get in, there is a username / password written on the device itself - the username and password are, indeed, written on the box, but it is not clear if they are 'inside' the device, so I've added the account manually.

I want to make the camera available over the internet for viewing stills, so I have created a 'camview' account with no password, and viewing-only permissions.

Configuring The Server

The cameras have loads of features for security applications, such as email or upload images to and FTP server on a specific schedule, or when motion is detected. The server supports automatic registration via dyndns so that it can be found over the internet, and plenty of other features such as a wi-fi dongle configuration.

Scheduled Uploading and Motion Detection

I've not tried the automatic emailing, but the FTP uploading works fine. Files are automatically named in sequence, with a numbering scheme that you choose - it should be noted that on reset, the numbering scheme reverts back to the start, so you can't use this system to record hourly / daily snapshots and keep them forever. The option to name files with the time and date would be a nice feature to add.

Motion detection works fine in a small room, but it is not sensitive enough to detect small animals in a garden, so using it to get snapshots of rare birds is not really an option. There is the option to connect an external PIR to the RS232 port, which may help provide the coverage needed.

Wifi Connection

I pulled a wi-fi dongle from a Reciva internet radio, and it connected and worked fine. Setup was very easy, and the link was quite robust. When I moved the server to my Garage, where the connection is borderline at the best of times, the server kept automatically re-trying to recover the connection whenever it dropped. The connection uses WEP, and it didn't look like WPA was available.

Confguring the Cameras

The cameras are equally easy to configure. The server automatically detects the cameras' capabilities and offers the relevant options (such as resolutions).

The server allows you to configure the rotation the images, to support situations where the cameras are not mounted the usual way up. These rotation options are used to instruct the viewer's Java or ActiveX viewing application to perform image rotation corrections - rotation options do not work when capturing stills (see below).

The options available are:

OptionOverviewAffects VideoAffects Stills
Image SizeAllows image size to be selected - Only camera capable modes are displayed, from 160*120 up to 1280*1024YesYes
BrightnessEnables the camera 'brightness' to be turned up or down
Anti-FlickerEnables the camera to compensate for 50Hz, 60Hz or No (outdoor) flicker
Max Number of Connections
Restricts the maximum number of simultaneous network connections
LocationDescrption of the camera's location. This is printed on the video frames.
Light Compensation
Enables the automatic gain control to support wide lighting variations.
ColorForces the camera output to be colour or black and white.
Camera PositionEnables the output video to be rotated - i.e. supports cameras being mounted upside-down.YesNo
Pan Control
Controls the pan of the camera (if appropriate), supporting legacy cameras which had a reversed pan control.
Tilt Control
As with the Pan Control, enables the tilt control to be reversed.

Accessing the Cameras

The cameras can be accessed in several ways:
  • Email and FTP (pushed), as described above.
  • Streamed (pull) with either ActiveX or Java front-end.
  • Streamed (relay) through an iMage server - this only supports ActiveX.
  • Stills access (and camera control) using a pda.cgi script on the server.
Streamed Pull

The ActiveX and Java front ends work quite well, enabling you to see the live video, and control the camera (if it is a pan and tilt one). In order to access the video using the pull method, you need to ensure that the configuration (http) port and streaming ports are both accessible through your firewall - users needs to log onto your server with a valid account before being able to view / control / administrate your server.

Streamed Relay

The relay method seems to work without you opening up the video streaming port. In this instance, you create an account and log on to an ICamView server e.g., and stream your video via there.

Stills Access

Stills access using the pda.cgi script. This one shows great promise, however, in my opinion, it is still not quite there. Still images can be accessed by connecting to the camera server's web server, and accessing a page such as:
You can also control the camera (if it is a pan and tilt one) by accessing a page such as:
This has a couple of downsides, though:
  1. In order to make the pda.cgi function available, you have to open up your firewall and enable access to the main configuration management page. I do realise that the configuration management is protected by a password, but it would be better to allow just the pda.cgi page through - this could be achieved by running 2 webservers on different ports, and one port would only support the pda.cgi script.

  2. Images are not rotated like they are in the streamed video - this is because the server relays whatever the camera is producing, and the Java or ActiveX control flips it or rotates is to the correct position. The stills need a bit of JavaScript (using the canvas feature), or we need to wait for CSS3 to arrive.
    I've made a start at this - take a look at the garden webcam, the very alpha code is graceful, and does the following: flipping, rotating, scaling titling and dating.

  3. There is no way to limit the requests per second when it comes to still images.
The latest firmware release supports direct access to the cameras with showimga.cgi and showimgb.cgi - this returns the actual jpeg image, or an ASCII string stating that the image is not available. This method prompts for the username / password in order to gain access. It may be better to always return a jpeg image so that the client can embed the result in an IMG tag.


Whilst investigating the ICamView Pro Server, I emailed the tech support guys at ICamView, and they were extremely helpful and supportive, recognising that I was a bit of a techy, and providing thorough explanations to my questions rather than yes/no answers. With this support, I was better able to understand the server's capabilities.

Features I've Not Mentioned

The server has lots of other features too, which I haven't mentioned above. These include:
  • Connection Logging
  • Event Logging
  • Manual / DHCP Network Configuration
  • Configurable HTTP and Video Ports
  • Automatic DDNS regsitration
  • PPPoE support
  • 8 Accounts with own passwords and restrictions
  • Ability to allow accounts access from specific IP address ranges
  • 23 Event types that can be individually selected for reporting
  • 3 sensitivities for motion detection
  • Motion detection and scheduled recording can be enabled during 2 timeslots
  • 1/2 second - 5 second motion detection image recording
  • User defined interval for scheduled image recording
  • Recorded images -> email, FTP or local flash drive
  • Recorded videos -> local flash drive
  • Support for email server authentication
  • Selectable time server and re-synchronisation interval
  • v1 and v2c SNMP support
Good Features.
  • Supports 2 Cameras
  • Multi-featured
  • Can connect via wireless if a wifi dongle is used
  • Quick and simple to setup
  • Cost Effective
  • Excellent Support
Desired Improvements
  • It is not possible to make just the stills available through a firewall - a separate tcp port for the pda.cgi script would be useful.
  • A script needs writing to flip / rotate the stills at the client side.
  • A timestamp option rather than a sequenced number on saved images would be great for those images you want to keep forever.
  • WPA Support.
  • Limiting the maximum throughput rate for stills images
See the Webcams here.
ICamView's websites are here & here.
ICamView FAQ is here.