<?xml version="1.0" encoding="utf-8" ?>

<rss version="0.91" >
<channel>
<title>Robert's Gadget Zone</title>
<link>http://robertrath.com/blog_tomtom/</link>
<description>toys are are only interesting when you play with them in ways the toymaker never expected!</description>
<language>en</language>
<image>
        <url>http://robertrath.com/blog_tomtom/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Robert's Gadget Zone - toys are are only interesting when you play with them in ways the toymaker never expected!</title>
        <link>http://robertrath.com/blog_tomtom/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Virtually COMM Unicating</title>
    <link>http://robertrath.com/blog_tomtom/archives/16-Virtually-COMM-Unicating.html</link>

    <description>
        Sometimes it is the simplest of things that really make my day. And what is really cool is where something simple is solved in a really complex way and made to appear simple! Almost like magic in fact!!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Problem&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I have a serial device next to me connected to the comm port of my Windows PC. Let&#039;s make it connected through a serial-usb adapter just to make things complicated. Next; I am developing an application on a remote virtual (vmware ) linux machine which needs to communicate with the small serial device next to me!&lt;br /&gt;
&lt;br /&gt;
Problem 1. I have no direct access to the virtual machine in order to take my serial device and plug it into the virtual machine&#039;s host. &lt;br /&gt;
Problem 2. Even if I could have my little serial device plugged into my remote virtual machine&#039;s host I would no longer be able to interact with it during development work.&lt;br /&gt;
&lt;br /&gt;
The simple solution would be to have my little serial device magically connected to my remote virtual machine and still be sitting next to me and my Windows PC.&lt;br /&gt;
Note my use of the word &#039;simple&#039;; simple in description but not so in solution.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Outcome&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
When a problem has been nagging to the point of being insufferable it is amazing how a little action, imagination and perseverance can produce magic.&lt;br /&gt;
With the help of two little tools; &#039;tcp2com&lt;br /&gt;
&lt;br /&gt;
pm&#039; and &#039;socat&#039;; I am now able to enjoy the convenience of having my little serial device plugged into my Windows PC and being plugged into my remote virtual linux machine at the same time ... simply magic!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Solution&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I am not going to recount chapter and verse on how I made this magic happen. I don&#039;t want to make it easy for anyone else. So here is an incredibly terse, dot-point-list of actions I took:&lt;br /&gt;
&lt;br /&gt;
 &lt;strong&gt; On the Windows PC, install &#039;COM2TCPInstall_1_4_0.exe&#039; or use &#039;tcp2com-1.0.0-bin.zip&#039;&lt;br /&gt;
 &lt;/strong&gt; Configure tcp2com to export comm port and settings as required.&lt;br /&gt;
 * For example on machine 10.0.0.10 export com4,57600,n,8,1,none to port 5555&lt;br /&gt;
&lt;br /&gt;
On Linux&lt;br /&gt;
 $ sudo apt-get install socat&lt;br /&gt;
 $ sudo socat PTY,link=/dev/remotetty0,raw,echo=0,wait-slave tcp:10.0.0.10:5555&lt;br /&gt;
 $ sudo kermit -l /dev/remotetty0&lt;br /&gt;
&lt;br /&gt;
... enjoy &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Virtually COMM Unicating</title>
    <link>http://robertrath.com/blog_tomtom/archives/17-Virtually-COMM-Unicating.html</link>

    <description>
        Sometimes it is the simplest of things that really make my day. And what is really cool is where something simple is solved in a really complex way and made to appear simple! Almost like magic in fact!!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Problem&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I have a serial device next to me connected to the comm port of my Windows PC. Let&#039;s make it connected through a serial-usb adapter just to make things complicated. Next; I am developing an application on a remote virtual (vmware ) linux machine which needs to communicate with the small serial device next to me!&lt;br /&gt;
&lt;br /&gt;
Problem 1. I have no direct access to the virtual machine in order to take my serial device and plug it into the virtual machine&#039;s host. &lt;br /&gt;
Problem 2. Even if I could have my little serial device plugged into my remote virtual machine&#039;s host I would no longer be able to interact with it during development work.&lt;br /&gt;
&lt;br /&gt;
The simple solution would be to have my little serial device magically connected to my remote virtual machine and still be sitting next to me and my Windows PC.&lt;br /&gt;
Note my use of the word &#039;simple&#039;; simple in description but not so in solution.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Outcome&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
When a problem has been nagging to the point of being insufferable it is amazing how a little action, imagination and perseverance can produce magic.&lt;br /&gt;
With the help of two little tools; &#039;tcp2com.exe&#039; and &#039;socat&#039;; I am now able to enjoy the convenience of having my little serial device plugged into my Windows PC and being plugged into my remote virtual linux machine at the same time ... simply magic!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;The Solution&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I am not going to recount chapter and verse on how I made this magic happen. I don&#039;t want to make it easy for anyone else. So here is an incredibly terse, dot-point-list of actions I took.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Setup&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
On Windows&lt;br /&gt;
 Install &#039;COM2TCPInstall_1_4_0.exe&#039; or use &#039;tcp2com-1.0.0-bin.zip&#039;&lt;br /&gt;
 Configure tcp2com to export comm port and settings as required.&lt;br /&gt;
 Example, on machine 10.0.0.10 export com4,57600,n,8,1,none to port 5555&lt;br /&gt;
&lt;br /&gt;
On Linux&lt;br /&gt;
 $ sudo apt-get install socat&lt;br /&gt;
 $ sudo socat PTY,link=/dev/remotetty0,raw,echo=0,wait-slave tcp:10.0.0.10:5555&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Testing&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
On Windows&lt;br /&gt;
 Open &#039;hypertrm&#039; and connect to com4,57600,n,8,1,none&lt;br /&gt;
&lt;br /&gt;
On Linux ( different console session )&lt;br /&gt;
 $ sudo kermit -l /dev/remotetty0&lt;br /&gt;
 C-Kermit-&gt;set flow none&lt;br /&gt;
 C-Kermit-&gt;set carrier off&lt;br /&gt;
 C-Kermit-&gt;set speed 57600&lt;br /&gt;
 C-Kermit-&gt;connect&lt;br /&gt;
&lt;br /&gt;
You should now be able to communicate between the two local terminals as if the machines were connected with a serial cable.&lt;br /&gt;
&lt;br /&gt;
... enjoy &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>3-Way Windows-Linux-Windows Synchronisation With Unison</title>
    <link>http://robertrath.com/blog_tomtom/archives/15-3-Way-Windows-Linux-Windows-Synchronisation-With-Unison.html</link>

    <description>
        &lt;!-- s9ymdb:30 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;91&quot; height=&quot;109&quot;  src=&quot;http://robertrath.com/blog_tomtom/uploads/linux-penguin-large.serendipityThumb.jpeg&quot;  alt=&quot;&quot; /&gt;This script facilitates a 3-way synchronisation between two Windows shares and a hosted local directory. It requires no special software on the Windows machines, simply the sharing of respective directories. All the work of connecting to target machines and sychronising is done by the host using samba and unison.&lt;br /&gt;
&lt;br /&gt;
It is assumed that samba, unison and a suitable mail configuration are installed on the linux host. The setup of these tools is beyond the scope of this documentation. Google is your friend if you need help.&lt;br /&gt;
&lt;br /&gt;
In order to do a 3-way unison synchronisation we need first to sync between 1-2, then 2-3, then either 1-2 or 1-3 again to bring changes from 3 back into 1. So there are 3 independent sync&#039;s. For larger n-way syncs we need to add progressively more steps in order to ensure a full synchronisation. In this application where we are also hosting a known always available source we can assume will always be there. If we were simply facilitating an n-way sync without participating we would need to use a smarter algorithm to determine which end-points were available and sync between them accordingly.&lt;br /&gt;
&lt;br /&gt;
As we check for a specific file before attempting a sync this file must be placed manually before any machine will be allowed to participate in sync operations. Removal of the check file will stop sync for the selected share which may be independent to each machine or common to all.&lt;br /&gt;
&lt;br /&gt;
This script is suitable for running automatically as a cron job on the linux host server as often as needed.&lt;br /&gt;
&lt;br /&gt;
In the event that a particular Windows machine was not found an error email will be generated.&lt;br /&gt;
&lt;br /&gt;
The script allows for two names by which a Windows machine can be found. In many cases the second name will be the machine&#039;s IP address but use with care in DHCP environments. Having an alternative name or IP address is useful when a machine might sometimes be connected via LAN and other times by WiFi. &lt;br /&gt;
&lt;br /&gt;
Here is the complete script which you will need to customise to suit your needs. In most cases you will only need to modify the variables as needed.&lt;br /&gt;
&lt;br /&gt;
===========================================================&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# (c)2010 Robert Rath http://robertrath.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Common Variables&lt;br /&gt;
&lt;br /&gt;
UNISON_OPTIONS=&quot;-perms 0 -batch -rsync -fastcheck true&quot;&lt;br /&gt;
DESTINATION=&quot;/var/local/sync_directory_name_on_host_server&quot;&lt;br /&gt;
DESTINATION_PATH=&quot;&quot;&lt;br /&gt;
EMAIL=&quot;youremailaddress@youremaildomain&quot;&lt;br /&gt;
EMAILMESSAGE=&quot;/tmp/emailmessage.txt&quot;&lt;br /&gt;
NUMBER_OF_MACHINES=&quot;2&quot;&lt;br /&gt;
&lt;br /&gt;
# Source 1 Variables&lt;br /&gt;
&lt;br /&gt;
SOURCE_MACHINE=&quot;NameOfWindowsMachine1&quot;&lt;br /&gt;
ALT_MACHINE=&quot;IPAddressOfWindowsMachine1&quot;&lt;br /&gt;
SOURCE_CREDENTIALS=&quot;/root/.smbpasswords/file_containing_machine1_windows_credentials&quot;&lt;br /&gt;
MOUNT=&quot;/mnt/mount_directory_name_on_host_server&quot;&lt;br /&gt;
SOURCE=&quot;NameOfWindowsMachine1SharedDirectory&quot;&lt;br /&gt;
SOURCE_PATH=&quot;/PathFromRootOfWindowsMachine1SharedDirectory&quot; # Leave blank,ie &quot;&quot;, if using root of share, start with &quot;/path&quot; otherwise.&lt;br /&gt;
CHECK_FILE=&quot;initial_check_file_1&quot; # This file must pre-exist/always-exist for sync to take place, use an initial backslash if not root of share.  &lt;br /&gt;
&lt;br /&gt;
# Source 2 Variables&lt;br /&gt;
&lt;br /&gt;
SOURCE_MACHINE_2=&quot;NameOfWindowsMachine2&quot;&lt;br /&gt;
ALT_MACHINE_2=&quot;IPAddressOfWindowsMachine2&quot;&lt;br /&gt;
SOURCE_CREDENTIALS_2=&quot;/root/.smbpasswords/file_containing_machine2_windows_credentials&quot;&lt;br /&gt;
MOUNT_2=&quot;/mnt/mount_directory_name_on_host_server_2&quot;&lt;br /&gt;
SOURCE_2=&quot;NameOfWindowsMachine2SharedDirectory&quot;&lt;br /&gt;
SOURCE_PATH_2=&quot;/PathFromRootOfWindowsMachine2SharedDirectory&quot; # Leave blank,ie &quot;&quot;, if using root of share, start with &quot;/path&quot; otherwise.&lt;br /&gt;
CHECK_FILE_2=&quot;initial_check_file_2&quot; # This file must pre-exist/always-exist for sync to take place, use an initial backslash if not root of share.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Sync the first machine with the server&lt;br /&gt;
# ======================================&lt;br /&gt;
&lt;br /&gt;
if [ $((NUMBER_OF_MACHINES)) -ge 1 ]; then&lt;br /&gt;
  echo sync-$DESTINATION$DESTINATION_PATH : Begin Synchronise $SOURCE Between $SOURCE_MACHINE and Server # Inform user of intention&lt;br /&gt;
&lt;br /&gt;
  /bin/mkdir -p &quot;$DESTINATION$DESTINATION_PATH&quot; # create the host sync directory&lt;br /&gt;
  /bin/mkdir -p &quot;$MOUNT&quot;                        # create the mount point&lt;br /&gt;
	rm -f $TMPLOG                                 # remove an existing temp log file&lt;br /&gt;
&lt;br /&gt;
  # The remote machine may be at one of two host names so we need to check both in the prefered order&lt;br /&gt;
&lt;br /&gt;
  /bin/mount -t cifs -o credentials=$SOURCE_CREDENTIALS &quot;//$SOURCE_MACHINE/$SOURCE&quot; &quot;$MOUNT&quot;    # mount machine share source to mount path&lt;br /&gt;
&lt;br /&gt;
  if [ ! -e &quot;$MOUNT/$SOURCE_PATH$CHECK_FILE&quot; ]; then  # if mount was unsuccessful on &#039;first&#039; then try &#039;alternative&#039;&lt;br /&gt;
    echo &quot;Could not find primary target so attempting secondary target&quot;&lt;br /&gt;
    /bin/mount -t cifs -o credentials=$SOURCE_CREDENTIALS &quot;//$ALT_MACHINE/$SOURCE&quot; &quot;$MOUNT&quot; # mount alternate&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  if [ -e &quot;$MOUNT/$SOURCE_PATH$CHECK_FILE&quot; ]; then # check if the mount was successful before doing sync&lt;br /&gt;
    /usr/local/bin/unison-2.9.1 $UNISON_OPTIONS &quot;$DESTINATION$DESTINATION_PATH&quot; &quot;$MOUNT$SOURCE_PATH&quot; # use the unison program for synchronisation&lt;br /&gt;
    &lt;br /&gt;
    if [ &quot;$?&quot; -eq &quot;0&quot; ]; then&lt;br /&gt;
	    SUBJECT=&quot;Succes: sync-$DESTINATION$DESTINATION_PATH - Synchronised sync-$SOURCE Between $SOURCE_MACHINE and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # success&lt;br /&gt;
    elif [ &quot;$?&quot; -eq &quot;1&quot; ]; then&lt;br /&gt;
	    SUBJECT=&quot;Conflict: sync-$DESTINATION$DESTINATION_PATH - Conflicting sync-$SOURCE Between $SOURCE_MACHINE and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # sync conflict&lt;br /&gt;
    else&lt;br /&gt;
      SUBJECT=&quot;Error: sync-$DESTINATION$DESTINATION_PATH - Error sync-$SOURCE Between $SOURCE_MACHINE and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # sync error&lt;br /&gt;
    fi  &lt;br /&gt;
            &lt;br /&gt;
  else&lt;br /&gt;
    SUBJECT=&quot;Offline: sync-$DESTINATION$DESTINATION_PATH - Offline sync-$SOURCE to $SOURCE_MACHINE no sync attempt possible&#039;&quot; # offline error&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  echo &quot;$SUBJECT&quot; # echo result to terminal&lt;br /&gt;
  echo &quot;$SUBJECT&quot;&gt; $EMAILMESSAGE&lt;br /&gt;
  /usr/bin/mail -s &quot;$SUBJECT&quot; &quot;$EMAIL&quot; &lt; $EMAILMESSAGE&lt;br /&gt;
  /bin/umount &quot;$MOUNT&quot;  # unmount mount path&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Sync the second machine with the server&lt;br /&gt;
# ======================================&lt;br /&gt;
&lt;br /&gt;
if [ $((NUMBER_OF_MACHINES)) -ge 2 ]; then&lt;br /&gt;
  echo sync-$DESTINATION$DESTINATION_PATH : Begin Synchronise $SOURCE_2 Between $SOURCE_MACHINE_2 and Server # Inform user of intention&lt;br /&gt;
&lt;br /&gt;
  /bin/mkdir -p &quot;$DESTINATION$DESTINATION_PATH&quot; # create the host sync directory&lt;br /&gt;
  /bin/mkdir -p &quot;$MOUNT_2&quot;                      # create the mount point&lt;br /&gt;
&lt;br /&gt;
  # The remote machine may be at one of two host names so we need to check both in the prefered order&lt;br /&gt;
&lt;br /&gt;
  /bin/mount -t cifs -o credentials=$SOURCE_CREDENTIALS_2 &quot;//$SOURCE_MACHINE_2/$SOURCE_2&quot; &quot;$MOUNT_2&quot;    # mount machine share source to mount path&lt;br /&gt;
&lt;br /&gt;
  if [ ! -e &quot;$MOUNT_2/$SOURCE_PATH_2$CHECK_FILE_2&quot; ]; then  # if mount was unsuccessful on &#039;first&#039; then try &#039;alternative&#039;&lt;br /&gt;
    echo &quot;Could not find primary target so attempting secondary target&quot;&lt;br /&gt;
    /bin/mount -t cifs -o credentials=$SOURCE_CREDENTIALS_2 &quot;//$ALT_MACHINE_2/$SOURCE_2&quot; &quot;$MOUNT_2&quot; # mount alternate&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  if [ -e &quot;$MOUNT_2/$SOURCE_PATH_2$CHECK_FILE_2&quot; ]; then # check if the mount was successful before doing sync&lt;br /&gt;
    /usr/local/bin/unison-2.9.1 $UNISON_OPTIONS &quot;$DESTINATION$DESTINATION_PATH&quot; &quot;$MOUNT_2$SOURCE_PATH_2&quot;   # use the unison program for synchronisation&lt;br /&gt;
&lt;br /&gt;
    if [ &quot;$?&quot; -eq &quot;0&quot; ]; then&lt;br /&gt;
     SUBJECT=&quot;Succes: sync-$DESTINATION$DESTINATION_PATH - Synchronised sync-$SOURCE_2 Between $SOURCE_MACHINE_2 and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # success&lt;br /&gt;
    elif [ &quot;$?&quot; -eq &quot;1&quot; ]; then&lt;br /&gt;
     SUBJECT=&quot;Conflict: sync-$DESTINATION$DESTINATION_PATH - Conflicting sync-$SOURCE_2 Between $SOURCE_MACHINE_2 and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # sync conflict&lt;br /&gt;
    else&lt;br /&gt;
      SUBJECT=&quot;Error: sync-$DESTINATION$DESTINATION_PATH - Error sync-$SOURCE_2 Between $SOURCE_MACHINE_2 and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # sync error&lt;br /&gt;
    fi  &lt;br /&gt;
&lt;br /&gt;
  else&lt;br /&gt;
    SUBJECT=&quot;Offline: sync-$DESTINATION$DESTINATION_PATH - Offline sync-$SOURCE_2 to $SOURCE_MACHINE_2 no sync attempt possible&#039;&quot; # offline error&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  echo &quot;$SUBJECT&quot; # echo result to terminal&lt;br /&gt;
  echo &quot;$SUBJECT&quot;&gt; $EMAILMESSAGE&lt;br /&gt;
  /usr/bin/mail -s &quot;$SUBJECT&quot; &quot;$EMAIL&quot; &lt; $EMAILMESSAGE&lt;br /&gt;
  /bin/umount &quot;$MOUNT_2&quot;  # unmount mount path&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Re-Sync the first machine with the server&lt;br /&gt;
# =========================================&lt;br /&gt;
&lt;br /&gt;
if [ $((NUMBER_OF_MACHINES)) -ge 2 ]; then&lt;br /&gt;
  echo sync-$DESTINATION$DESTINATION_PATH : Begin Synchronise $SOURCE Between $SOURCE_MACHINE and Server # Inform user of intention&lt;br /&gt;
&lt;br /&gt;
  /bin/mkdir -p &quot;$DESTINATION$DESTINATION_PATH&quot; # create the host sync directory&lt;br /&gt;
  /bin/mkdir -p &quot;$MOUNT&quot;                        # create the mount point&lt;br /&gt;
	rm -f $TMPLOG                                 # remove an existing temp log file&lt;br /&gt;
&lt;br /&gt;
  # The remote machine may be at one of two host names so we need to check both in the prefered order&lt;br /&gt;
&lt;br /&gt;
  /bin/mount -t cifs -o credentials=$SOURCE_CREDENTIALS &quot;//$SOURCE_MACHINE/$SOURCE&quot; &quot;$MOUNT&quot;    # mount machine share source to mount path&lt;br /&gt;
&lt;br /&gt;
  if [ ! -e &quot;$MOUNT/$SOURCE_PATH$CHECK_FILE&quot; ]; then  # if mount was unsuccessful on &#039;first&#039; then try &#039;alternative&#039;&lt;br /&gt;
    echo &quot;Could not find primary target so attempting secondary target&quot;&lt;br /&gt;
    /bin/mount -t cifs -o credentials=$SOURCE_CREDENTIALS &quot;//$ALT_MACHINE/$SOURCE&quot; &quot;$MOUNT&quot; # mount alternate&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  if [ -e &quot;$MOUNT/$SOURCE_PATH$CHECK_FILE&quot; ]; then # check if the mount was successful before doing sync&lt;br /&gt;
    /usr/local/bin/unison-2.9.1 $UNISON_OPTIONS &quot;$DESTINATION$DESTINATION_PATH&quot; &quot;$MOUNT$SOURCE_PATH&quot; # use the unison program for synchronisation&lt;br /&gt;
    &lt;br /&gt;
    if [ &quot;$?&quot; -eq &quot;0&quot; ]; then&lt;br /&gt;
	    SUBJECT=&quot;Succes: sync-$DESTINATION$DESTINATION_PATH - Synchronised sync-$SOURCE Between $SOURCE_MACHINE and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # success&lt;br /&gt;
    elif [ &quot;$?&quot; -eq &quot;1&quot; ]; then&lt;br /&gt;
	    SUBJECT=&quot;Conflict: sync-$DESTINATION$DESTINATION_PATH - Conflicting sync-$SOURCE Between $SOURCE_MACHINE and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # sync conflict&lt;br /&gt;
    else&lt;br /&gt;
      SUBJECT=&quot;Error: sync-$DESTINATION$DESTINATION_PATH - Error sync-$SOURCE Between $SOURCE_MACHINE and Server using &#039;unison $UNISON_OPTIONS&#039;&quot; # sync error&lt;br /&gt;
    fi  &lt;br /&gt;
            &lt;br /&gt;
  else&lt;br /&gt;
    SUBJECT=&quot;Offline: sync-$DESTINATION$DESTINATION_PATH - Offline sync-$SOURCE to $SOURCE_MACHINE no sync attempt possible&#039;&quot; # offline error&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  echo &quot;$SUBJECT&quot; # echo result to terminal&lt;br /&gt;
  echo &quot;$SUBJECT&quot;&gt; $EMAILMESSAGE&lt;br /&gt;
  /usr/bin/mail -s &quot;$SUBJECT&quot; &quot;$EMAIL&quot; &lt; $EMAILMESSAGE&lt;br /&gt;
  /bin/umount &quot;$MOUNT&quot;  # unmount mount path&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===========================================================&lt;br /&gt;
&lt;br /&gt;
...Robert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Installing Logwatch On An Ubuntu Domino Server</title>
    <link>http://robertrath.com/blog_tomtom/archives/14-Installing-Logwatch-On-An-Ubuntu-Domino-Server.html</link>

    <description>
        &lt;!-- s9ymdb:30 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;91&quot; height=&quot;109&quot;  src=&quot;http://robertrath.com/blog_tomtom/uploads/linux-penguin-large.serendipityThumb.jpeg&quot;  alt=&quot;&quot; /&gt;Logwatch is a great utility for scanning your Linux system&#039;s log files and sending you a daily report. Installing Logwatch on most Linux distributions is as simple as using your package manager. In my case on Ubuntu (8.04LTS) I simply type &#039; $ sudo apt-get install logwatch&#039; but making it work is not always as simple.&lt;br /&gt;
&lt;br /&gt;
Logwatch requires the system to have an MTA (Message Transfer Agent) such as &#039;sendmail&#039; or &#039;postfix&#039; to do its mail delivery work as do most well behaved mail utility programs. The idea is that the system should look after delivery of mail, retries on unreachable servers and so on, not the utility, ie &#039;logwatch&#039;.&lt;br /&gt;
&lt;br /&gt;
On Ubuntu when you install Logwatch, the installer checks to see if an MTA is present on the system and if so is happy. If no MTA is present, the MTA &#039;postfix&#039; is automatically installed. There is plenty of information out there on configuration of either &#039;postfix&#039; or &#039;sendmail&#039;. My problem however is that my &#039;Domino Server&#039; does not fulfil the role of a valid system MTA and the installation of &#039;postfix&#039; or &#039;sendmail&#039; will clobber operation of Domino Server for mail operations. This is a problem not just for systems running a Domino Server but for any system running an SMTP/SMPTS mail server with no system MTA capability.&lt;br /&gt;
&lt;br /&gt;
There are at least two immediate solutions to this problem.&lt;br /&gt;
&lt;br /&gt;
a) Configure either &#039;postfix&#039; or &#039;sendmail&#039; for non standard ports and use it to relay all system mail message to the non MTA mail server, or&lt;br /&gt;
b) Modify the implementation of &#039;logwatch&#039; to deliver messages directly to the non MTA mail server using a simple SMTP utility program such as &#039;nbsmtp&#039; &lt;br /&gt;
&lt;br /&gt;
I choose option b) as being the simplest and here is my solution.&lt;br /&gt;
&lt;br /&gt;
1. Install &#039;logwatch&#039; ( $ sudo apt-get install logwatch) and simply accept that &#039;postfix&#039; will also be installed.&lt;br /&gt;
2. Install &#039;nbsmtp&#039; ( $ sudo apt-get install nbsmtp)  which complains about uninstalling &#039;postfix&#039; due to the &#039;logwatch&#039; dependency.&lt;br /&gt;
3. Properly disable &#039;postfix&#039; by editing &#039;/etc/init.d/postfix&#039; and inserting the line &#039;exit 0&#039; at the start of the script.&lt;br /&gt;
4. Modify &#039;/etc/cron.daily/00logwatch&#039; to use &#039;nbsmtp&#039; instead of the system MTA.&lt;br /&gt;
&lt;br /&gt;
Here is an example of my new &#039;/etc/cron.daily/00logwatch&#039; file.&lt;br /&gt;
&lt;br /&gt;
================================================&lt;br /&gt;
&lt;br /&gt;
 # !/bin/bash&lt;br /&gt;
&lt;br /&gt;
 MAILSERVER = mail.somedomain.com&lt;br /&gt;
 SENDFROM = root@localdomain.com&lt;br /&gt;
 SENDTO = admin@somedomain.com&lt;br /&gt;
&lt;br /&gt;
 #Check if removed-but-not-purged&lt;br /&gt;
 test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0&lt;br /&gt;
&lt;br /&gt;
 #execute&lt;br /&gt;
 echo &quot;From: $SENDFROM&quot; &gt; /tmp/mymailinput&lt;br /&gt;
 echo &quot;To: $SENDTO&quot; &gt;&gt; /tmp/mymailinput&lt;br /&gt;
 echo &quot;Subject: Logwatch for $HOSTNAME (Linux)&quot; &gt;&gt; /tmp/mymailinput&lt;br /&gt;
 echo &quot;&quot; &gt;&gt; /tmp/mymailinput&lt;br /&gt;
 /usr/sbin/logwatch &gt;&gt; /tmp/mymailinput &lt;br /&gt;
&lt;br /&gt;
 /usr/bin/nbsmtp -d $FROMDOMAIN -f $SENDFROM -h $MAILSERVER -V -M p  &lt; /tmp/mymailinput&lt;br /&gt;
&lt;br /&gt;
================================================&lt;br /&gt;
&lt;br /&gt;
If you also need authenticated login to your destination mail server then  you can add the necessary parameters to the last line. It might end up looking something like this (not tested)&lt;br /&gt;
&lt;br /&gt;
 /usr/bin/nbsmtp -d $FROMDOMAIN -f $SENDFROM -h $MAILSERVER -V -U $USERNAME - P $PASSWORD  &lt; /tmp/mymailinput&lt;br /&gt;
&lt;br /&gt;
If you you decide you really do need an MTA as well then please let me know how you go.&lt;br /&gt;
&lt;br /&gt;
...Robert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Fix Windows Server 2003 SBS EULA Reboot</title>
    <link>http://robertrath.com/blog_tomtom/archives/13-Fix-Windows-Server-2003-SBS-EULA-Reboot.html</link>

    <description>
        This article is not supporting the use of unlicensed software. It assumes you have a legitimate new installation of Microsoft Windows Server 2003 for SBS and have not yet completed the installation to commit the machine as a domain controller but are experiencing the machine shutting down after 60 minutes.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Windows Server 2003 SBS EULA reboot occurs because a newly built machine has not yet been made a primary domain controller as per the Windows Server 2003 SBS EULA. The following work around prevents the reboot and &#039;creates more time&#039; &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; to decide on the final role of the server.&lt;br /&gt;
&lt;br /&gt;
 1. Manually kill the &#039;sbscrexe.exe&#039; process in task manager. &lt;br /&gt;
 2. Run regedt32 (not regedit) and locate the following key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SBCore&lt;br /&gt;
 3. Right click the key, select permissions and add &#039;SERVER\Administrators&#039; for &#039;Full Control&#039;&lt;br /&gt;
 4. Apply and enforce new permissions to all key siblings then refresh the registry view.&lt;br /&gt;
 5. Locate the following object (now visible where previouly hidden): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SBCore\Start and change from 0x02 to 0x04.&lt;br /&gt;
 6. If access is denied remove and create a new DWORD=0x02 object called &#039;Start&#039;&lt;br /&gt;
 7. Reboot computer and confirm that the service SBCore Service is disabled and not running.&lt;br /&gt;
 8. Done.&lt;br /&gt;
&lt;br /&gt;
You now have as much time as you need to decide on the domain control role of the Microsoft Windows Server 2003 SBS. Once you have completed the the final steps in making your server a domain controller simply set the SBCore Service back to Automatic through the normal services menus. 
    </description>
</item>
<item>
    <title>Install and Enable Remote Desktop in Windows XP Home Edition</title>
    <link>http://robertrath.com/blog_tomtom/archives/12-Install-and-Enable-Remote-Desktop-in-Windows-XP-Home-Edition.html</link>

    <description>
        My sincere thanks to the guys at &lt;a href=&quot;http://www.mydigitallife.info&quot; title=&quot;http://www.mydigitallife.info&quot;&gt;http://www.mydigitallife.info&lt;/a&gt; for the following. I have republished here for my personal convenience only.&lt;br /&gt;
&lt;br /&gt;
Step 1. Convert XP Home to look like it is XP Pro.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mydigitallife.info/2008/06/13/convert-and-upgrade-windows-xp-home-to-professional-without-reinstalling/&quot; title=&quot;http://www.mydigitallife.info/2008/06/13/convert-and-upgrade-windows-xp-home-to-professional-without-reinstalling/&quot;&gt;http://www.mydigitallife.info/2008/06/13/convert-and-upgrade-windows-xp-home-to-professional-without-reinstalling/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Step 2. Install the rdpdr driver and terminal services.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mydigitallife.info/2008/06/14/install-and-enable-remote-desktop-in-windows-xp-home-edition/&quot; title=&quot;http://www.mydigitallife.info/2008/06/14/install-and-enable-remote-desktop-in-windows-xp-home-edition/&quot;&gt;http://www.mydigitallife.info/2008/06/14/install-and-enable-remote-desktop-in-windows-xp-home-edition/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Step 3. Optionally install the multiple client dll.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mydigitallife.info/2008/06/13/enable-multiple-concurrent-remote-desktop-connections-or-sessions-in-windows-xp/&quot; title=&quot;http://www.mydigitallife.info/2008/06/13/enable-multiple-concurrent-remote-desktop-connections-or-sessions-in-windows-xp/&quot;&gt;http://www.mydigitallife.info/2008/06/13/enable-multiple-concurrent-remote-desktop-connections-or-sessions-in-windows-xp/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Convert XP Home to look like it is XP Pro.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
   1. Open Registry Editor (regedit).&lt;br /&gt;
   2. Navigate to HKEY_LOCAL_MACHINE/SYSTEM/ControlSet00X/Control/ProductOptions, where ControlSet00X is the one with the highest number.&lt;br /&gt;
   3. Delete the ProductSuite registry key.&lt;br /&gt;
   4. Then, create a new DWORD value and named it as Brand.&lt;br /&gt;
   5. Set the “Brand” value data as 0.&lt;br /&gt;
   6. Reboot the system.&lt;br /&gt;
   7. On boot up after the BIOS screen, press F8 to display Windows XP Startup Menu.&lt;br /&gt;
   8. Choose Last Known Good Configuration (LNG) and hit Enter.&lt;br /&gt;
&lt;br /&gt;
Windows XP will start up as usual but now think it is XP Pro allowing next steps.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Install the rdpdr driver and terminal services.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Execute &lt;a href=&quot;http://robertrath.com/blog_tomtom/uploads/files/devcon.exe&quot; title=&quot;devcon.exe&quot; target=&quot;_blank&quot;&gt;devcon.exe&lt;/a&gt;“devcon.exe” and choose a folder to unpack the content. devcon.exe will create two folders inside the selected path – i386 and ia64.&lt;br /&gt;
&lt;br /&gt;
Open a command prompt window (Cmd), and the change directory into the i386 folder extracted by DevCon. Then run the following command to reinstall rdpdr driver:&lt;br /&gt;
&lt;br /&gt;
devcon.exe -r install %windir%\inf\machine.inf root\rdpdr&lt;br /&gt;
&lt;br /&gt;
Restart the computer after running the command.&lt;br /&gt;
&lt;br /&gt;
Run &lt;a href=&quot;http://robertrath.com/blog_tomtom/uploads/files/enable_tsxp.zip&quot; title=&quot;enable_tsxp.zip&quot; target=&quot;_blank&quot;&gt;enable_tsxp.bat&lt;/a&gt; script to create a .reg file to merge the required Terminal Services values to registry and bootlog and reboot after patching the registry.&lt;br /&gt;
&lt;br /&gt;
After reboot, ensure that the port 3389 (the default port for Remote Desktop) is open in firewall.&lt;br /&gt;
&lt;br /&gt;
If automatic logon feature is enabled, disable it by changing “AutoAdminLogin” from “1? to “0? at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Step 3. Optionally install the multiple client dll.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 1. Patch &lt;a href=&quot;http://robertrath.com/blog_tomtom/uploads/files/termsrv.zip&quot; title=&quot;termsrv.zip&quot; target=&quot;_blank&quot;&gt;termsrv.dll&lt;/a&gt; as follows:&lt;br /&gt;
&lt;br /&gt;
      00022A17: 74 75&lt;br /&gt;
      00022A69: 7F 90&lt;br /&gt;
      00022A6A: 16 90&lt;br /&gt;
&lt;br /&gt;
 2. Go to %windir%\System32 and make a backup copy (or rename) the termsrv.dll.&lt;br /&gt;
 3. Rename or delete the termserv.dll in the %windir%\System32\dllcache folder.&lt;br /&gt;
 4. Copy the patched termsrv.dll into %windir%\System32, %windir%\ServicePackFiles\i386 (if exist) and %windir%\System32\dllcache.&lt;br /&gt;
 5. Run &lt;a href=&quot;http://robertrath.com/blog_tomtom/uploads/files/ts_multiple_sessions.zip&quot; title=&quot;ts_multiple_sessions.zip&quot; target=&quot;_blank&quot;&gt;ts_multiple_sessions.bat&lt;/a&gt;ts_multiple_sessions.bat (in ZIP file) to merge the registry value into registery.&lt;br /&gt;
 6. Click on Start Menu -&gt; Run command and type gpedit.msc, follow by Enter to open up the Group Policy Editor.&lt;br /&gt;
 8. Navigate to Computer Configuration -&gt; Administrative Templates -&gt; Windows Components -&gt; Terminal Services.&lt;br /&gt;
 9. Enable Limit Number of Connections and set the number of connections to 3 (or more). The setting allows more than one users to use the computer and logged on at the same time.&lt;br /&gt;
 10. Ensure the Remote Desktop is enabled in System Properties’ Remote tab by selecting the radio button for Allow users to connect remotely to this computer.&lt;br /&gt;
 11. Enable and turn on Fast User Switching in Control Panel -&gt; User Accounts -&gt; Change the way users log on or off.&lt;br /&gt;
 12. Restart the computer normally.&lt;br /&gt;
&lt;br /&gt;
If the Windows XP computer is connected to a domain on local networks, Windows will set the value of the regkey “AllowMultipleTSSessions” to “0? every time the computer is restarted. To ensure that multiple or unlimited Remote Desktop connection sessions is allowed in AD domain environment, the value data for “AllowMultipleTSSessions” has to be set to “1? on each system startup. To change the value, simply rerun the ts_multiple_sessions.bat every time the computer is started. Alternatively, put the ts_multiple_sessions.bat at C:\Documents and Settings\All Users\Start Menu\Programs\Startup folder so that it will be automatically run on first user with administrative privileges that logs on to the desktop. Another workaround is to install additional service or define a sub-key in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run registry branch that run the registry batch file automatically on boot up, and this is useful if the computer won’t be logged on by anybody, but still requires the hack to allow unlimited Remote Desktop users to work.&lt;br /&gt;
&lt;br /&gt;
Another issue is that if user closes the remote connection instead of logging off, when he or she tries to log back in, an error message related to TCP/IP event ID 4226 may occur. To resolve the issue, download and apply the Windows XP TCP/IP connection limit and Event ID 4226 patch, and set the connections to at least 50.&lt;br /&gt;
&lt;br /&gt;
=====================&lt;br /&gt;
&lt;br /&gt;
Update 23/5/2010&lt;br /&gt;
&lt;br /&gt;
I recently experienced problems with a new Acer e-machine where I got net connection and ecryption problems. There were two changes I made which resolved the problem although I am not certain about the change to the network card configuration.&lt;br /&gt;
&lt;br /&gt;
The registry change is per Microsoft KB article &quot;The RDP Protocol Component &quot;DATA ENCRYPTION&quot; Detected an Error...&quot; &lt;a href=&quot;http://support.microsoft.com/?kbid=323497&quot;&gt;http://support.microsoft.com/?kbid=323497&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
To resolve this issue, follow these steps:&lt;br /&gt;
&lt;br /&gt;
   1. Start Registry Editor.&lt;br /&gt;
   2. Locate and then click the following registry subkey:&lt;br /&gt;
      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TermService\Parameters&lt;br /&gt;
   3. Under this registry subkey, delete the following values:&lt;br /&gt;
          &lt;strong&gt; Certificate&lt;br /&gt;
          &lt;/strong&gt; X509 Certificate&lt;br /&gt;
          * X509 Certificate ID&lt;br /&gt;
   4. Quit Registry Editor, and then restart the server.&lt;br /&gt;
&lt;br /&gt;
The second change I made ( &lt;a href=&quot;http://social.technet.microsoft.com/forums/en-US/winserverTS/thread/3e4e9d8a-cf6a-4e7a-9072-f9ecd3f17a72/&quot;&gt;http://social.technet.microsoft.com/forums/en-US/winserverTS/thread/3e4e9d8a-cf6a-4e7a-9072-f9ecd3f17a72/&lt;/a&gt; ) was to change the Ethernet LAN card advanced configuration to disable Offload Large Packets setting.&lt;br /&gt;
Show all Connections -&gt; Local Area Connection -&gt; Properties -&gt; Card Configuration -&gt; Advanced&lt;br /&gt;
   and set the following disabled: Offload TCP LargeSend&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Installing the VIA DVI-04 for the SN18000G Motherboard</title>
    <link>http://robertrath.com/blog_tomtom/archives/11-Installing-the-VIA-DVI-04-for-the-SN18000G-Motherboard.html</link>

    <description>
        I require dual monitor support for my SN18000G and as VIA provide a DVI interface card for their SN18000G mother board I decided to go this route leaving my PCI-E slot unused for when I really need it.&lt;br /&gt;
&lt;br /&gt;
Installing the DVI-04 was a breeze with it fitting neatly in place and being fixed to the main CPU heatsink with two metal screws. For the connector you will need to find a suitable standard slot punched metal backpiece as one was not supplied with the kit. I simply cut a large slot in a blank backpiece and ran the cable out the back as a dangling connector.&lt;br /&gt;
&lt;br /&gt;
First up nothing worked and I was not able to see the new DVI monitor in the display setup. I tried changing the BIOS settings to enable CRT+LCD mode but again no success. After some research I discovered that at least BIOS version 2.01 does not work with the DVI-04. Mine was 2.03 but a quick check on the VIA website revealed that 2.50 was available.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;BIOS Upgrade Required&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Downloaded firmware I1A0D205.ROM (513KB) and AFUDOS.rar (133KB) from the &lt;a href=&quot;http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&amp;id=550&amp;tabs=1&quot; title=&quot;http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&amp;id=550&amp;tabs=1&quot;&gt;VIA Epia SN&lt;/a&gt; product website.&lt;br /&gt;
&lt;br /&gt;
Create a bootable USB drive following instructions at &lt;a href=&quot;http://www.bootdisk.com/pendrive.htm&quot; title=&quot;http://www.bootdisk.com/pendrive.htm&quot;&gt;http://www.bootdisk.com/pendrive.htm&lt;/a&gt; and install the ROM file and the unarchived AUFDOS.exe flash programming utility onto the bootable USB drive.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s a small little step which had me stumped for a while. Power off the system and remove the BIOS write-protect jumper!&lt;br /&gt;
&lt;br /&gt;
&lt;!-- s9ymdb:20 --&gt;&lt;img class=&quot;serendipity_image_center&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/via_bios_write_protection3.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Now power-up the system and press F11 during POST to bring up the boot selection menu and boot from the USB device. If the USB drive does not appear in the boot list you may need to restore the current BIOS configuration to default first or at least ensure that legacy support for USB devices is enabled. Failing that test your bootable USB key on an other system to conform it boots correctly. Failing that you may need to resort to a bootable CD which is also easily made.&lt;br /&gt;
&lt;br /&gt;
Update the BIOS with following command, AFUDOS I1A0D205.ROM /P /B /N /C&lt;br /&gt;
During programming you will note that NVRAM is re-written and the checksum is destroyed. This is good! &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
Remove the USB device and restart the system, ignore CMOS checksum complaint and press F1 to enter BIOS configuration&lt;br /&gt;
Load defaults, save &amp;amp; exit.&lt;br /&gt;
&lt;br /&gt;
It&#039;s up to you whether or not to re-fit the write protect jumper. I put mine back on again just to be sure.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Credits For This Article&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.via.com.tw&quot; title=&quot;www.via.com.tw&quot;&gt;www.via.com.tw&lt;/a&gt; for the upgraded BIOS, programming tool  and the image used in this document.&lt;br /&gt;
&lt;a href=&quot;http://www.bootdisk.com&quot; title=&quot;http://www.bootdisk.com&quot;&gt;http://www.bootdisk.com&lt;/a&gt; for information on USB boot.&lt;br /&gt;
&lt;a href=&quot;http://www.viaarena.com/forums/member.php?u=40420&quot; title=&quot;http://www.viaarena.com/forums/member.php?u=40420&quot;&gt;Seth Purdy&lt;/a&gt; (spurdy) at &lt;a href=&quot;http://www.viaarena.com/forums/&quot; title=&quot;http://www.viaarena.com/forums/&quot;&gt;ViaArena&lt;/a&gt; for his notes.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Files&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://robertrath.com/blog_tomtom/uploads/files/AFUDOS.rar&quot; title=&quot;AFUDOS.rar&quot; target=&quot;_blank&quot;&gt;AFUDOS.rar&lt;/a&gt; - Flash Programming Tool&lt;br /&gt;
&lt;a href=&quot;http://robertrath.com/blog_tomtom/uploads/files/I1A0D205.ROM&quot; title=&quot;I1A0D205.ROM&quot; target=&quot;_blank&quot;&gt;I1A0D205.ROM&lt;/a&gt; - BIOS ROM File 2.50&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Finding The J-Spot On The Nokia N97</title>
    <link>http://robertrath.com/blog_tomtom/archives/10-Finding-The-J-Spot-On-The-Nokia-N97.html</link>

    <description>
        &lt;!-- s9ymdb:19 --&gt;&lt;img class=&quot;serendipity_image_left&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://innovation-mentor.com/uploads/images/n97splash.jpg&quot; alt=&quot;&quot; /&gt;I recently became the proud owner of Nokia&#039;s new n97. One of the included trial applications which just blew me away for its &#039;utility&#039; value is &#039;JoikuSpot&#039; by Joikusoft.&lt;br /&gt;
&lt;br /&gt;
Please visit my post titled  &lt;a href =&quot;http://innovation-mentor.com/archives/36-Finding-The-J-Spot-On-The-Nokia-N97.html&quot; target=&quot;_blank&quot;&gt;Finding The J-Spot On The Nokia N97&lt;/a&gt; at &lt;a href=&quot;http://innovation-mentor.com&quot; target=&quot;_blank&quot;&gt;Innovation Mentor&lt;/a&gt; for my thoughts.&lt;br /&gt;
   &lt;br /&gt;
   ...Robert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>Turbo Charging An Old HP Brio Part II</title>
    <link>http://robertrath.com/blog_tomtom/archives/9-Turbo-Charging-An-Old-HP-Brio-Part-II.html</link>

    <description>
        More than a year ago I converted an old Brio BA600 into a little AMD64x2 rocket. Another of these Brio&#039;s fell into my lap so time to do it all again. Fortunately I had kept my notes from last time and as the new motherboard is extensibility the same I was able to follow my instructions to the letter except for a few key points.&lt;br /&gt;
&lt;br /&gt;
This old Brio BAX400 had been shelved for some time its PII-400 cpu, 256MB ram and 4.2GB drive. Not very thrilling but time for some changes.&lt;br /&gt;
&lt;br /&gt;
New motherboard - Gigabyte GA-M61PME-S2P (need uATX form factor)&lt;br /&gt;
New CPU - AMD 5200+ dual core (not to much grunt as the PSU can&#039;t cope)&lt;br /&gt;
New RAM 2 x 2GbDDR2-800, 4GB Total (128bit mode)&lt;br /&gt;
New Drives 2 x 1TB 7200rpm SATA 3.0GB/s, 1TB total in RAID1 mirror&lt;br /&gt;
&lt;br /&gt;
All up just over A$500 for a 4GB, 2700Mhz Dual Core, 1TB RAID1 Mirrored server.&lt;br /&gt;
&lt;br /&gt;
Again here&#039;s where the fun begins...&lt;br /&gt;
The uATX motherboard drops straight into the Brio chassis, so far so good. First hitch, wrong power connector! The old Brio used a &lt;a href=&quot;http://pinouts.ru/Power/atxpower_pinout.shtml&quot; title=&quot;20 pin V1.0 ATX Connector&quot;&gt;20 pin V1.0 ATX Connector&lt;/a&gt; while the new board has a &lt;a href=&quot;http://pinouts.ru/Power/atx_v2_pinout.shtml&quot; title=&quot;24 Pin V2.0 ATX Connector&quot;&gt;24 pin V2.0 ATX Connector&lt;/a&gt;. Simple solution, just plug into the first part leaving the end 4 pins exposed. See photo.&lt;br /&gt;
 &lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Power.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/GigabyteUpgrade-Power.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=362,left=440,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:15 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Power.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Next hitch, the board has a &lt;a href=&quot;http://pinouts.ru/Power/atx12v_pinout.shtml&quot; title=&quot;4 pin 12V Aux ATX Connector&quot;&gt;4 pin 12V Aux ATX Connector&lt;/a&gt; while the existing PSU has a 6 pin plug with one blue wire running to it. In essence we only need to get a good 12V supply onto one pin of this 4 pin connector as the other 3 are routed back to the main power supply connector. Solution;&lt;br /&gt;
a) Cut the blue wire to this 6 pin plug back near the PSU and insulate the remaining blue wire running back in the PSU.&lt;br /&gt;
b) Take the blue 6 pin plug and a very sharp knife and convert it into a 4 pin plug (see photo below).&lt;br /&gt;
c) Splice/connect the free end single blue wire attached to the plug onto one of the heavy yellow drive wires. (note all drives use 1 yellow, 2 black and 1 red wire per hard drive connector)&lt;br /&gt;
d) Plug the new cut down plug into the 4 pin motherboard socket as shown below. Please note very, very, very carefully the orientation of how this connector is fitted. (see photo below) Yes I know it looks very strange! A better solution would be to purchase and use new connectors or re-use old ones but I simply had none and had to make do.&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Aux.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/GigabyteUpgrade-Aux.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=362,left=440,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:13 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; &quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Aux.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Next are front panel connectors, the bane of any upgraders life! Again some surgical work with the knife split the existing Brio single row connector into the just the right single connectors. (see photo)&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Jumpers.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/GigabyteUpgrade-Jumpers.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=362,left=440,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:14 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Jumpers.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Last but perhaps most annoying were the fitting of the RAID1 Array pair of drives. One drive was easy as the Brio has only one location for fitting a hard drive. The second drive was not so easy. Being SATA drives their location is limited to the length of the SATA cables. I could have placed the drive at the top of the chassis but would have had to rearrange the optical drive and I would have lost my spare IDE drive location. My solution was to drive two holes in the chassis spreader bar and mount the second drive as shown.&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/brio_side_drive.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/brio_side_drive.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=375,left=640,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:16 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/brio_side_drive.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This machine is now running Ubuntu 8.04 LTS and VMware Server and is destined to host several virtual machines, replace existing real servers, reducing my electricity bill and help do my part in being green. Setting all that up will be a whole new story!&lt;br /&gt;
&lt;br /&gt;
   ...have fun and enjoy your new Brio! ...Robert &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Important notes. The Brio PSU is rated for 90W. Yes that&#039;s all so keeping the motherboard and CPU down at the bottom end of speed is very important. Same goes for only using one low power drive and optical drive. In practice that little 90W supply packs a punch more but I would not count on it. Also you follow these instructions at your own risk! Dead motherboards, PSU&#039;s and sliced fingers from sharp knives will not be my problem. Although this information is provided in good faith, I can not accept any responsibility for how it is applied. 
    </description>
</item>
<item>
    <title>Turbo-Charging An Old HP Brio</title>
    <link>http://robertrath.com/blog_tomtom/archives/8-Turbo-Charging-An-Old-HP-Brio.html</link>

    <description>
        There comes a time in the life of any old PC when you have to make that hard decision; turf it or turbo it! This old Brio BA600 had served well with its PII-600 cpu, 256MB ram and 4.2GB drive but alas both times and demands have changed. I chose upgrade!&lt;br /&gt;
&lt;br /&gt;
New motherboard - Gigabyte GA-M61SME-S2L (need uATX form factor)&lt;br /&gt;
New CPU - AMD 4400 dual core (not to much grunt as the PSU can&#039;t cope)&lt;br /&gt;
New RAM DDR2-800 2GB (128bit mode)&lt;br /&gt;
New Drive 400GB&lt;br /&gt;
&lt;br /&gt;
All up around $300&lt;br /&gt;
&lt;br /&gt;
So here&#039;s where the fun begins...&lt;br /&gt;
The uATX motherboard drops straight into the Brio chassis, so far so good. First hitch, wrong power connector! The old Brio used a &lt;a href=&quot;http://pinouts.ru/Power/atxpower_pinout.shtml&quot; title=&quot;20 pin V1.0 ATX Connector&quot;&gt;20 pin V1.0 ATX Connector&lt;/a&gt; while the new board has a &lt;a href=&quot;http://pinouts.ru/Power/atx_v2_pinout.shtml&quot; title=&quot;24 Pin V2.0 ATX Connector&quot;&gt;24 pin V2.0 ATX Connector&lt;/a&gt;. Simple solution, just plug into the first part leaving the end 4 pins exposed. See photo.&lt;br /&gt;
 &lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Power.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/GigabyteUpgrade-Power.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=362,left=440,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:15 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Power.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Next hitch, the board has a &lt;a href=&quot;http://pinouts.ru/Power/atx12v_pinout.shtml&quot; title=&quot;4 pin 12V Aux ATX Connector&quot;&gt;4 pin 12V Aux ATX Connector&lt;/a&gt; while the existing PSU has a 6 pin plug with one blue wire running to it. In essence we only need to get a good 12V supply onto one pin of this 4 pin connector as the other 3 are routed back to the main power supply connector. Solution;&lt;br /&gt;
a) Cut the blue wire to this 6 pin plug back near the PSU and insulate the remaining blue wire running back in the PSU.&lt;br /&gt;
b) Take the blue 6 pin plug and a very sharp knife and convert it into a 4 pin plug (see photo below).&lt;br /&gt;
c) Splice/connect the free end single blue wire attached to the plug onto one of the heavy yellow drive wires. (note all drives use 1 yellow, 2 black and 1 red wire per hard drive connector)&lt;br /&gt;
d) Plug the new cut down plug into the 4 pin motherboard socket as shown below. Please note very, very, very carefully the orientation of how this connector is fitted. (see photo below) Yes I know it looks very strange! A better solution would be to purchace and use new connectors or re-use old ones but I simply had none and had to make do.&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Aux.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/GigabyteUpgrade-Aux.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=362,left=440,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:13 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; &quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Aux.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Last but not least are front panel connectors, the bane of any upgraders life! Again some surgical work with the knife split the existing Brio single row connector into the just the right single connectors. (see photo)&lt;br /&gt;
&lt;br /&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Jumpers.jpg&#039; onclick=&quot;F1 = window.open(&#039;/blog_tomtom/uploads/GigabyteUpgrade-Jumpers.jpg&#039;,&#039;Zoom&#039;,&#039;height=315,width=415,top=362,left=440,toolbar=no,menubar=no,location=no,resize=1,resizable=1,scrollbars=yes&#039;); return false;&quot;&gt;&lt;!-- s9ymdb:14 --&gt;&lt;img width=&quot;110&quot; height=&quot;83&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/GigabyteUpgrade-Jumpers.serendipityThumb.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I have confirmed these instructions also apply to Asus motherboard M2N-MX and probably many other uATX form factor motherboards as well.&lt;br /&gt;
&lt;br /&gt;
So after all that I have a new little rocket in an old friendly case and this time its running Linux!&lt;br /&gt;
&lt;br /&gt;
   ...have fun and enjoy your new Brio! ...Robert &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Important notes. The Brio PSU is rated for 90W. Yes that&#039;s all so keeping the motherboard and CPU down at the bottom end of speed is very important. Same goes for only using one low power drive and optical drive. In practice that little 90W supply packs a punch more but I would not count on it. Also you follow these instructions at your own risk! Dead motherboards, PSU&#039;s and sliced fingers from sharp knives will not be my problem. Although this information is provided in good faith, I can not accept any responsibility for how it is applied. 
    </description>
</item>
<item>
    <title>TomTom Plug-ins</title>
    <link>http://robertrath.com/blog_tomtom/archives/7-TomTom-Plug-ins.html</link>

    <description>
        &lt;!-- s9ymdb:12 --&gt;&lt;img width=&quot;480&quot; height=&quot;272&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/tripmaster.jpg&quot; alt=&quot;&quot; /&gt;Welcome to the world of TomTom Plug-ins. Be prepared to make, break, fix and play with your TomTom if you venture down this route. The destination? Well that&#039;s up to you. Let&#039;s just say that looking at a skewed raster image on my screen is not a welcoming sight and that tiny little hole at the base of the unit for resetting is a godsend.&lt;br /&gt;
&lt;br /&gt;
So if you are determined and need to play then try the the plug-ins at &lt;a href=&quot;http://www.webazar.org/tomtom/plugins.php?lang=uk&quot; title=&quot;Webazar TomTom Plug-ins&quot;&gt;Webazar TomTom Pulg-ins&lt;/a&gt; for starters.&lt;br /&gt;
&lt;br /&gt;
One final tip which may save some anguish is to play with plug-ins using an external SD card (for those which have them) rather then the TomTom internal memory, otherwise BACK UP before playing.&lt;br /&gt;
&lt;br /&gt;
Until next time keep tinkering!  ...Robert &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </description>
</item>
<item>
    <title>Disabling the F1 Keyboard Prompt on a Compaq Deskpro</title>
    <link>http://robertrath.com/blog_tomtom/archives/6-Disabling-the-F1-Keyboard-Prompt-on-a-Compaq-Deskpro.html</link>

    <description>
        The Deskpro series were very well-built, quiet and reliable PCs and they suit the task of a dedicated SOHO server extremely well. Using the default BIOS configuration they however complain bitterly about not having keyboard plugged in. It is most amusing being first told there is no keyboard and then being asked to press &#039;F1&#039; to continue. &lt;br /&gt;
&lt;br /&gt;
Here are the steps required to run your Compaq with no keyboard or mouse in &#039;Server Mode&#039;.&lt;br /&gt;
&lt;br /&gt;
1. Press F10 when prompted at startup to enter BIOS setup.&lt;br /&gt;
2. Go to the Security menu and select Power-On Password.&lt;br /&gt;
3. Assign a password and press F10.&lt;br /&gt;
4. In the Security menu, a new option should appear called Password Options.&lt;br /&gt;
5. Open this item and set Network Server Mode to Enabled.&lt;br /&gt;
6. Save the changes and exit.&lt;br /&gt;
&lt;br /&gt;
The computer will now boot without any prompting and disable the PS/2 keyboard port, turning it into a dedicated server.&lt;br /&gt;
&lt;br /&gt;
If you need to perform maintenance from the console you can press F10 at boot to enter the BIOS setup and enable the keyboard again. You can also plug in a USB keyboard and it will work normally while the operating system is running. In this mode a BIOS setup password is also recommended.  My preferred method however is to use a remote desktop tool such as VNC Server/Viewer to provide remote management.&lt;br /&gt;
&lt;br /&gt;
Older Deskpros that do not support network server mode need a &lt;a href=&quot;http://robertrath.com/blog_tomtom/files/SP0667_CompaqNoF1_BiosPatch.ZIP&quot; title=&quot;&#039;No F1 Bios Patch&#039;&quot;&gt;&#039;No F1 Bios Patch&#039;&lt;/a&gt; from Compaq to kill the F1 prompt. Even though I have used this patch successfully on three different Compaq machines, I have only provided this as a convenience and will not accept any responsibility for any damage done to your computer.&lt;br /&gt;
&lt;br /&gt;
Have fun with this, ...Robert &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>How To Confuse A Nokia n80 Firmware Upgrade</title>
    <link>http://robertrath.com/blog_tomtom/archives/5-How-To-Confuse-A-Nokia-n80-Firmware-Upgrade.html</link>

    <description>
        &lt;!-- s9ymdb:11 --&gt;&lt;img width=&quot;131&quot; height=&quot;249&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/NokiaUpgrade.jpg&quot; alt=&quot;&quot; /&gt;I have spent a frustrating 8 months with buggy software in my Nokia n80. My biggest problem is that sometimes the phone&#039;s power management would flatten the battery in 2hours while supposedly on standby!&lt;br /&gt;
&lt;br /&gt;
For some months the Nokia Software Update program was telling me there was new firmware but would crash any time I tried to download it. The for the last 5 months it told me my software actually was up to date. So here I was stuck with version 4.0707.0.7 when the Nokia forums were telling me there was new software.&lt;br /&gt;
&lt;br /&gt;
Some background... 12 months ago I reflashed my Nokia n80 with n80i firmware and replaced the original device code (00539815) with one of the n80i Australian codes 0540864 (AUSTRALIA Smooth Stainless Internet Edition). Today I contemplated the fact that all real n80i&#039;s I had seen were black. So I reprogrammed the device code with 0540843 (AUSTRALIA Pearl Black Internet Edition) and tried again.... SUCCESS!!! &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
I am now the proud owner of a nokia n80 pretending to be a nokia n80i with software version 5.019.0.2. Time to re-install all my widgets into it again!&lt;br /&gt;
 &lt;br /&gt;
For those wanting to tinker, the tool used reflash the device ID can be found at &lt;a href=&quot;http://rapidshare.com/files/5911866/nss10383.rar&quot; title=&quot;http://rapidshare.com/files/5911866/nss10383.rar&quot;&gt;http://rapidshare.com/files/5911866/nss10383.rar&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
1. Install NSS and run&lt;br /&gt;
2. Plug in phone and select &quot;pc suite&quot; on phone&lt;br /&gt;
3. In NSS click &quot;scan for new devices&quot;&lt;br /&gt;
4. Click phone info&lt;br /&gt;
5. Click enable product code and enter 0540843 (this is for AUSTRALIA Pearl Black)&lt;br /&gt;
6. Click &quot;write&quot;&lt;br /&gt;
7. When complete unplug phone and exit NSS&lt;br /&gt;
8. Uninstall NSS&lt;br /&gt;
&lt;br /&gt;
More information including device codes for other regions and countries can be found at &lt;a href=&quot;http://www.allaboutsymbian.com/forum/showthread.php?t=54352&quot; title=&quot;http://www.allaboutsymbian.com&quot;&gt;http://www.allaboutsymbian.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy tinkering!  ( at your own risk with no responsibility accepted by me! &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;)&lt;br /&gt;
&lt;br /&gt;
... Robert &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
 
    </description>
</item>
<item>
    <title>TomTom Console</title>
    <link>http://robertrath.com/blog_tomtom/archives/3-TomTom-Console.html</link>

    <description>
        &lt;!-- s9ymdb:8 --&gt;&lt;img width=&quot;400&quot; height=&quot;300&quot; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://robertrath.com/blog_tomtom/uploads/tom.jpg&quot; alt=&quot;&quot; /&gt;Well now I have played enough to know that there is plently more tinkering to be done with my TomTom.&lt;br /&gt;
&lt;br /&gt;
Here is the TomTom console in action:&lt;br /&gt;
# ifconfig&#039; shows I have created an IP connection (ppp0) via bluetooth DUN.&lt;br /&gt;
&lt;br /&gt;
There is even a neat little touch keyboard which you can pop-up and hide for typing.  The tinkering is endless from here on so time to configure a suitbale toolchain! &lt;img src=&quot;http://robertrath.com/blog_tomtom/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
You can find the TomTom console at &lt;a href=&quot;http://www.opentom.org/TomTom_Console&quot; title=&quot;http://www.opentom.org/TomTom_Console&quot;&gt;http://www.opentom.org/TomTom_Console&lt;/a&gt; 
    </description>
</item>
<item>
    <title>Linux Hosted Bluetooth IP Connection For TomTom</title>
    <link>http://robertrath.com/blog_tomtom/archives/4-Linux-Hosted-Bluetooth-IP-Connection-For-TomTom.html</link>

    <description>
        The following instructions are not meant to be a &#039;how to&#039; but a &#039;how I did&#039; and is based on Arjan van de Ven&#039;s website &lt;a href=&quot;http://www.fenrus.org/tomtom/&quot; title=&quot;http://www.fenrus.org/tomtom/&quot;&gt;http://www.fenrus.org/tomtom/&lt;/a&gt; I have added a couple extra steps including modifying rfcomm.conf, registering the DUN service and specifying the bluetooth channel for DUN.&lt;br /&gt;
&lt;br /&gt;
These notes assume you have bluetooth already present and operational as was the case with my Ubuntu 7.10 system.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Install bluetooth support and confirm you can see your Bluetooth device.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 # hcitool dev&lt;br /&gt;
 Devices:&lt;br /&gt;
        hci0    00:02:5B:01:0D:CB&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Confirm you can see your TomTom&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 # hcitool scan&lt;br /&gt;
 Scanning ...&lt;br /&gt;
         00:13:6C:9C:A0:5A       TomTom ONE XL&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Change your bluetooth device&#039;s class to report itself as a mobile phone offering Telephony services and confirm settings.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 # hciconfig hci0 class 0x500204 (I borrowed this class from my Nokia phone)&lt;br /&gt;
 # hciconfig hci0 class&lt;br /&gt;
 hci0:   Type: USB&lt;br /&gt;
         BD Address: 00:02:5B:01:0D:CB ACL MTU: 384:8 SCO MTU: 64:8&lt;br /&gt;
         Class: 0x500204&lt;br /&gt;
         Service Classes: Telephony&lt;br /&gt;
         Device Class: Phone, Cellular&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;To have the device class retained as the default HCI configuration edit the file &#039;/etc/bluetooth/hcid.conf&#039;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Write this file into &#039;/etc/ppp/tomtom.sh&#039; and ensure it has execute permissions.&lt;/strong&gt; &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /usr/sbin/chat -e -f /etc/ppp/tomtom.chat&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Write this file into &#039;/etc/ppp/peers/tomtom&#039;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 noauth      # Don&#039;t require authentication&lt;br /&gt;
 local         # This is needed because it&#039;s not a real serial line&lt;br /&gt;
 noipdefault   # Don&#039;t use the local hostname to determine the local IP used&lt;br /&gt;
 proxyarp      # Proxy ARP connections&lt;br /&gt;
 nodefaultroute   # Don&#039;t use the default route&lt;br /&gt;
 noipx      # Don&#039;t use the IPX protocol&lt;br /&gt;
 idle 0      # Set an unlimited disconnect timeout&lt;br /&gt;
 &lt;br /&gt;
 # Change the next three lines for your setup &lt;br /&gt;
 &lt;br /&gt;
 # &lt;Host IP Address&gt;:&lt;Client IP Address&gt;&lt;br /&gt;
 #The first ip needs to be your computer, the second ip needs to be a non-used ip in your network&lt;br /&gt;
 192.168.10.204:192.168.10.214&lt;br /&gt;
 &lt;br /&gt;
 # ms-dns &lt;DNS Server&gt;&lt;br /&gt;
 # this needs to be a real dns server, look in /etc/resolv.conf&lt;br /&gt;
 ms-dns 192.231.203.132&lt;br /&gt;
 &lt;br /&gt;
 # netmask &lt;Netmask for your network&gt;&lt;br /&gt;
 netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Write this file into &#039;/etc/ppp/tomtom.chat&#039;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 ATZ OK&lt;br /&gt;
 ATD CONNECT&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Write/Edit the file &#039;/etc/bluetooth/rfcomm.conf&#039;&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 #&lt;br /&gt;
 # RFCOMM configuration file.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 rfcomm0 {&lt;br /&gt;
         # Automatically bind the device at startup&lt;br /&gt;
         bind no; &lt;br /&gt;
 &lt;br /&gt;
         # Bluetooth address of the device&lt;br /&gt;
         # This is the address of my TomTom, put your own here!&lt;br /&gt;
         device 00:13:6C:9C:A0:5A;&lt;br /&gt;
 &lt;br /&gt;
         # RFCOMM channel for the connection&lt;br /&gt;
         # This is appears to be the channel used for DUN&lt;br /&gt;
         channel 2;&lt;br /&gt;
 &lt;br /&gt;
         # Description of the connection&lt;br /&gt;
         comment &quot;Example Bluetooth device&quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
&lt;strong&gt;Start the Dial-Up Networking daemon. I found I needed to add the channel option.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 # dund --dialup --listen --channel 2 call tomtom connect /etc/ppp/tomtom.sh&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Register Dial-Up Networking service with bluetooth.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 # sdptool add dun&lt;br /&gt;
 Dial-Up Networking service registered&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;You can use &#039;# sdptool records local&#039; to see all local bluetooth services now registered.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;You will need to add these commands to turn your PC into a router for the connection.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
 echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Now you are ready to connect with your TomTom, this is the tedious part as it has to be done manually.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Manage Phones -&gt; Yes (search for phones) -&gt; (select you linux machine) -&gt; Continue -&gt; Yes&lt;br /&gt;
Select your phone model: -&gt; Other&lt;br /&gt;
Select your country: -&gt; Other&lt;br /&gt;
Do you want to set up your wireless data connection manually? -&gt; YES&lt;br /&gt;
Access point name: -&gt; OK&lt;br /&gt;
Username: -&gt; OK&lt;br /&gt;
Password: -&gt; OK&lt;br /&gt;
Do you want to obtain your IP address automatically (DHCP) or do you want to set up your IP address manually? -&gt; Automatic&lt;br /&gt;
Do you want to obtain your DNS server address automatically or do you want to set up your DNS server address manually? -&gt; Automatic&lt;br /&gt;
Dial: -&gt; OK&lt;br /&gt;
Login script: -&gt; OK&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Yes to all ensuing prompts and you are done!!!!&lt;/strong&gt; 
    </description>
</item>

</channel>
</rss>

