Home Pauline Howto Articles Uniquely NZ Small Firms Search
Fun with Ubuntu Linux

Contents of this page


Ubuntu Linux Related Pages

This page was started nine years ago and since then a number of topics have been split off into more specialised pages. This page and the pages split off from it are primarily a how I did it story with a lot of detailed information. There are now some additional how you should do it pages for the newcomer. I have more recently moved to an Ubuntu based distribution, Linux Mint, which has better desktop manager but most of the content is equally applicable. The major Ubuntu and Mint related pages are:


Background to the Writing of Fun with Ubuntu Linux

I started experimenting with Linux back in 2006 because I have got so tired of the continual updates to Microsoft Windows XP and the associated Virus checkers, Firewalls and Malware detectors. With Windows, it is almost impossible to prevent a large data flow when one first connects and many programs seek information on updates etc. I have noticed that there are dozens of processes running in the background under Windows XP and the hard drive is now in continuous use even minutes after the last user activity has finished. This all makes Windows XP difficult to use securely whilst traveling on a costly mobile connection rather than Broadband.

Linux had come a long way since I first looked at it and many of the main Linux distributions had what are called LiveCD versions where you have bootable CD which allows you to trial the system without having to load anything onto your machine. The next stage is to install a dual (or multiple boot system) and the install programs will automatically partition your disk and put in a boot loader to allow you to choose when the machine starts up.

I did some research and the best seemed to be a Linux distribution called Ubuntu 6.06 (Dapper Drake) which promised a 3 year support (updates, fixes etc.) for the desktop version and has a LiveCD and a simple install from the LiveCD. For those with some prior knowledge Ubuntu is based on the Debian implementation of Linux with the GNOME desktop interfaceand it has several additional flavours - Kubunto is a variation with the KDE interface, Xubuntu uses the XFCE desktop and most recently Lubuntu using the LXDE desktop which is ideal for lower powered and legacy machines. It is directed towards the desktop and is arguably the most popular version for home use, a position it achieved in less than 2 years from the first release. A good background introduction to Ubuntu is given in the Ubuntu Wikipedia Entry. The name comes from the African concept of ubuntu one part of which loosely translates as "humanity towards others".

Before we go any further I should point out one important difference between Ubuntu and many Linux implementations - you do not need to be a root user (administrator) to do system work but can use the terminal command sudo (SuperUser Do) to temporarily carry out root activities after entering a password which 'sticks' for 15 minutes - a big security and safety feature. This is one factor in my choice of Ubuntu along with the extensive and growing support for it in the community and by software providers. You will find that Ubuntu Linux system work is still more terminal oriented than Windows although it is fair to remember that it is virtually impossible to avoid the Run Command completely even in XP and Vista.

This page has grown over the last 9 years and become a record of my progress with details of all the changes I have made (and how) to the systems so I can repeat them in the future. It is in a sort of chronological order although I have done some re-ordering to avoid swapping back and forwards between different aspects. I have also included many of the links I found useful at the time. I hope it will be useful to others and perhaps avoid yet more reinventions of the wheel - in due course it may become refined enough to became a 'guide'.

It is now in 2015 nine years on from the issue of version 6.06 Dapper Drake that I started with. I upgraded most of my machines, without too many tears, to the next Long Term Support (LTS) version 8.04 Hardy Heron and then another LTS version 10.04 Lucid Lynx until finally most machines are upgraded to LTS version 12.04 Precise Pangolin in the basic Ubuntu and Lubuntu flavours. Precise Pangolin has much better support for some hardware making much of the original document redundant. I have gradually been updated this document and dropping the parts which are no longer relevant as the versions covere lose support although I will keep the Original for reference and users of Dapper Drake and a frozen copy of Fun with Ubuntu Linux for Hardy, Jaunty and Karmic, Oneiric Ocelot here and Precise Pangolin.

I have extracted the majority of the mobile aspects to a new page - Ubuntu Linux on the Move and have started another new page covering what is perhaps the second most important activity after communications for inveterate travelers like ourselves, that is handling all the photographs we take with digital cameras, viewing them and ultimately putting them into a form that can be used on our web site. Retaining the fun approach I have called it Ubuntu Linux on the Take - it is currently being extended to include capturing video, editing video and authoring DVDs. Ubuntu on the Lookout - covers installing and setting up the main programs which interact with the outside world through the Internet, namely Browsers, Email, Contacts, Calendars and Tasks. Various aspects of Sharing, Networking, Backup, Synchronisation and Encryption under Ubuntu Linux form another page. Logically the next should be "Ubuntu Linux on the Make" covering Web Authoring!

I have written a guide go with the lectures I have given. This guide enables a normal unsophisticated computer user without programming experience to make the transition to Linux with no more hassle than the change from Microsoft Windows XP to Vista. It is titled The Road to Freedom -A progressive migration from Windows to Ubuntu for Safety, Security and Savings in Computing. It is split into two parts and the first part mainly covers Windows and the Base Camp - part two mainly covers Ubuntu.

The proof of a lot of what I have written here is our MSI Wind U100 Netbook which is more powerful than a Toshiba Satellite yet only weighs in at 1.1 Kgs - this is now entirely used with Linux and I have fully covering the transition in Ubuntu on the MSI Wind U100 - it proved so successful we bought a second one so Pauline and I each have one and Pauline rarely uses anything else even at home. Since then we have gained two more machines a Chillblast Defiant Mini Laptop with Optimus Technology and a Chillblast Helios Ultrabook

LiveCD and LiveUSB Trials

The first step is to try out an Ubuntu LiveCD or LiveUSB on any machines or are thinking of using and deciding if Ubuntu Linux, Linux Mint, or any other Linux is for you. My first impressions those years ago were very favourable. The Dapper Drake LiveCD version ran immediately on both my AMD 2500 based desktop with 512 mbytes RAM and on my new Toshiba L20 laptop with 752 Mbytes RAM. It even recognised the WiFi card in the laptop and it was a simple matter to input the WEP code to give WiFi access. In a few hours with a LiveCD version I had learned enough to have access to Windows shared folders over the network. As a real test I plugged in by Bluetooth dongle and that was recognised and I could find my phone. The LiveCD distributions now include LibreOffice which follows on from OpenOffice (compatible with Microsoft Office), Firefox and Thunderbird/Lightening which is an email, contacts, tasks etc. package which is close in power to the earlier versions of Microsoft Outlook. The actual desktop and windows are cleaner and better thought out than in Windows and there is a useful workspace switching allowing one to do multitask very efficiently. I was very impressed even when running from CD and for simple tasks a LiveCD offers a safe way to work on any available machine. The trials gave confidence to proceed to first install on the desktop then on the laptop as well as a general understanding of Linux in general and Ubuntu in particular. Since then I have rarely had any major difficulties on any machine I ahve tried a LiveCD or LiveUSB on

How to download the LiveDVD and burn it

The more recent distributions do not fit onto a CD and LiveDVD are use. I have switched from Ubuntu to an alternative distribution with a better desktop called Linux Mint and the downloads are readily available at ???????????????

The Ubuntu LiveDVDs are available at http://www.ubuntu.com/getubuntu/download and instructions and programs for checking the download and burning the CD are available at https://help.ubuntu.com/community/BurningIsoHowto. I have also given very full details in the two parts of the The Road to Freedom

The alternative a LiveUSB

One should also note that many recent machines, especially Netbooks without a CD drive can boot off a USB stick and it is easy to create LiveUSB versions of Ubuntu as well as LiveCDs. This is also cover in the two parts of the The Road to Freedom

Preparing the system and Installing

Having convinced myself that most of the software I needed was available and that the main hardware would work I decided to firstly install on my AMD Athlon 2500 based machine. This machine has two hard drives and already had the ability to boot both Windows SE and Windows XP with hidden copies of both operating systems on the second drive as well as a variety of partitions with FAT32 shared drives and NTFS drives. I squeezed down the size of a number of the partitions and made room for an unallocated space of 13.5 Gigabytes long so the Ubuntu Installer would have room to make a primary partition for itself and an extra swap drive which all Linux systems seem to use. The existing partitioning and dual boot was done using Partition Magic 8.0 which has never given any trouble in the past. The Ubuntu Install was allowed to use its defaults and used the unallocated space I had provided for the main Linux ext3 primary partition and stole some space from the existing extended partition for the swap file. Unfortunately the partitioning and booting program used by Ubuntu during the setting up conflict with that from Partition Magic which reported partition errors although the Linux tools shoed no errors and everything works fine. In the end I added some unallocated space between the Windows and Linux partitions just in case.

The Toshiba Satellite L20 Pro laptop had one extra NTFS partition for data which I reduced in size to allow 12 Gbytes for Ubuntu and made space in the extended partition for the swap file using Partition magic. I also used Partition Magic to set up the Linux partitions. When Installing Ubuntu it made a sensible looking default choice but I wanted to avoid problems with changing partition sizes so I used the option to set up partitions manually which ran Gparted. I left them as they were and then set the existing ext3 partition I had created to be root "/" , the swap was already set up. I ticked the box to reformat both. The install then proceeded from the CD, the time taken to coming alive being 25 minutes. I then checked set up the Wifi Access point name (case sensitive) and WEP key to get Internet access at elapsed time 30 minutes. I downloaded all the updates from System -> Administration -> Update manager - there were 194 Mbytes so that was all complete set up and rebooted by elapsed time 65 minutes. Interestingly on this installation I have icons for the Windows disks on the desktop and an icon for the network on the top panel which is the equivalent of the tooltray.

Since setting up the two machines for dual booting I have read that it is very desirable if not essential to defragment the disk drives first - I think I did so on the desktop but had not realised the importance.

If you are using Vista of Windows 7 it is best to shrink the Vista partition using the built in Vista tool Start -> Run : diskmgmt.msc . You risk needing to reinstall the Windows boot loader if you use the Linux tools to shrink a Boot partition for Vista or Windows 7.

Customising The Grub 2 Boot Loader Menu

The legacy Grub basically used only one configuration file which needed to be customised, namely /boot/grub/menu.lst. Grub 2 uses /boot/grub/grub.cfg which is normally not edited as it is automatically generated by update-grub using templates from files in /etc/grub.d and settings from /etc/default/grub . There is a vast amount of information at https://help.ubuntu.com/community/Grub2 and the following is just enough to get started on configuration.

gksudo gedit /etc/default/grub

shows /etc/default/grub typically contains:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

# Uncomment to disable graphical terminal (grub-pc only)

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux

# Uncomment to disable generation of recovery mode menu entry

GRUB_DEFAULT=0 will boot the first menu item and so on. GRUB_DEFAULT="saved" will boot the same entry as last time.

GRUB_TIMEOUT=3 will display for 3 seconds

After making any changes you must run in a Terminal:

sudo update-grub

See https://help.ubuntu.com/community/Grub2#Configuring%20GRUB%202 for more options

The set of configuration files in /etc/grub.d are run in order of their names which start with a number to set up and build up the Grub menu.

You can open the folder with root permissions in a terminal by:

gksudo nautilus /etc/grub.d

/etc/grub.d/30_os-prober finds and adds all the other operating systems - it can be inhibited by setting its permissions so it is not executable. (Right click -> Properties -> Permissions and untick the box at the bottom) - this is useful if you want to customise the menu - see below

/etc/grub.d/20_memtest86+ If you want to inhibit display of the memory test options then make 20_memtest86+ non executable.

/etc/grub.d/40_custom You can then customise the other operating systems by adding them to 40_custom having had a look in /boot/grub/grub.cfg to see and copy what you want. The following will open the file read-only to look at it:

gedit /boot/grub/grub.cfg

My file /etc/grub.d/40_custom looks like

exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Microsoft Windows XP Home Edition (on /dev/sda2)" {
insmod ntfs
set root='(hd0,2)'
search --no-floppy --fs-uuid --set f6ec309dec305a57
drivemap -s (hd0) ${root}
chainloader +1

The red bit is my addition copied from /boot/grub/grub.cfg Note: make sure you copy the closing bracket!

After making all your changes you must run in a Terminal:

sudo update-grub

Making changes to the operating systems which are displayed is of great importance to users of many recent computers, in particular, laptops and netbooks as many computer manufacturers no longer supply the Microsoft CD/DVD for Windows but instead have a hidden partition which has a disk image to restore the machine to exactly the state you bought it. Unfortunately this is not hidden to Ubuntu and it is given as an alternative operating system in the Grub start up menu. It is not always obvious which is which so it is possible for the unwary to boot into the Restore Disk which is not good news and you are only a key stroke away from deleting everything.

There is currently no way to set the number of kernels which are displayed as in legacy Grub but there is an interesting article which shows how to do so at http://www.linuxquestions.org/questions/blog/drask-180603/howmany-for-grub-2-2466/

Removing Grub to return to Windows XP - replacing the Master Boot Record (MBR)

Grub modifies the Master Boot Record (MBR) so you can not just uninstall Grub as the machine will not boot - the MBR has to replaced with one for the Windows system. In Windows 98 and XP the MBR can be replaced using an old Windows boot disk (cd or floppy) with fdisk on it, then run fdisk /mbr .

Ther Windows XP setup CDROMs has a tool called the Recovery Console, which is designed to help you repair a damaged master boot record or boot sector. In the case of XP, to start the Recovery Console and replace the MBR:

This did not work for me on one occassion as the whole recovery consule was unavailable as the program told me it could not find the disk perhaps because Grub was on a ext3 partition. Perhaps the best way is to use a little program called MBRFix (Details and Download) which does the job and works for both XP and Vista. One to add to my utilities disk.

In the case of Vista I understand that one can use the Bootrec.exe tool in the Windows Recovery Environment to troubleshoot and repair startup issues in Windows Vista including a missing MBR.

More recently most machines have used a different partitioning scheme and the proceedure is different and not documented here as have yet to try it myself.

Restoring Grub 2 after, for example, Loading Windows

If you reload Windows then it will overwrite the Grub 2 bootloaded. I have not had to reload yet but the proceedure I have in mind to use is based on https://help.ubuntu.com/community/Grub2#Configuring%20GRUB%202

First you must find out the device name/partition of the installed system (sda1, sdb5, etc). This partition is then located and mounted from the LiveCD. The files are then copied from the LiveCD libraries to the proper locations and MBR.

Boot a LiveCD (Ubuntu 9.10 or later for Grub2).

Determine the partition with the Ubuntu installation by typing in a Terminal

sudo blkid

The device/drive is designated below by sdX, with X being the device designation. sda is the first device, sdb is the second, etc. In most cases the MBR will be installed to sda, the first drive on their system. The partition is designated by the Y. The first partition is 1, the second is 2. Note the devices and partitions are counted differently. In my case the Linux root file sytem is typically on /dev/sda4 as I have Windows and data filestems below it

Mount the partition containing the Ubuntu installation by:

sudo mount /dev/sdXY /mnt

eg: sudo mount /dev/sda4

Run the grub-install command to reinstall the GRUB 2 files on the mounted partition to the proper location and to the MBR of the designated device.

sudo grub-install --root-directory=/mnt/ /dev/sdX

eg sudo grub-install --root-directory=/mnt/ /dev/sda

Refresh the GRUB 2 menu with

sudo update-grub


Many of the important applications and programs are installed automatically including LibreOffice (which is also available Open Source for Windows) and Firefox.

There is also a vast collection of supported and automatically updated Open Source programs access via the Ubuntu Software Centre. If this does not find the program you want then you will need to use the Synaptic package manager which can be accessed by the Advanced Button and again doing searches. In some cases you may need to add extra areas to be searched but that will be covered under the program itself. See also below for the Medibuntu Repository to incorporate proprietory programs

Checking my Applications lists I find I have added:

There is an assessment of ease of installation, set up and functionality in the conclusions.

I have now written a new page covering Open Source, Free and Cross Platform Software

LibreOffice (the replacement for OpenOffice)

The following sections are common to many uses of LibreOffice - there is also a separate page Open Secrets - Publish with Style Using Open Source Software which has a lot more about using LibreOffice for writing and formatting books for publishing especially about using Styles, Outlines and Navigating complex documents.

Adding Fonts in Linux so they are accessible from Open Office and programs running under Wine.

I initially wanted to install some extra Fonts in Ubuntu, namely the Nadianne True Type font I use for Invitations, Wine Labels etc. and the various Windings fonts which provide ticks and other symbols used by Pauline for marking Open University eTMA scripts. Some of the fonts used by Lulu are not standard under Ubuntu so also need to be added. Nadianne is not a standard Windows font and originally I think came with a printer but the others are common to Windows XP hence the need to import them for marking. There should be no licence issues in using them on a dual booted machine with a valid copy of Windows. You can find the the Windings and other fonts in c:\windows\fonts. The True Type fonts which are available to all users are stored in folders under /usr/share/fonts/truetype in Ubuntu Linux so type in a terminal:

NOTE: Most of the terminal inputs were written for Ubuntu which uses nautilus as the file manager - if using Mint then change nautilus to nemo.

gksudo nautilus /usr/share/fonts/truetype

Next I created a new folder for your extra fonts which I called ttf-extra by a right click -> create folder etc.

Drag the extra fonts into the ttf-extra folder from where they were stored

The folder (and the files within it??) MUST have the permissions set to allow everyone to access it otherwise you may get some most peculiar errors in Firefox. It should be OK if you use the proceedure above but check just in case.

Then alert Ubuntu that you added the fonts by typing the following in a terminal

sudo fc-cache -f -v

This rebuilds the font cache - the options are verbose and to force complete regeneration of the cache (neither may be necessary but I followed the instructions before reading the manual page)

It is possible from something else I read that creating a folder .fonts in your home directory and copying the font into it may be sufficient for a single user - I have tried it for a single additional font and it worked. Other Linux systems may store fonts in a different place so you can try a search for truetype or fonts.

Upgrading to the latest LibreOffice 3.5+

LibreOffice is a fork of OpenOffice resulting from the games being played by Sun and is being increasingly used by all Linux distributions. It looks and feels almost identical and I have upgraded one of my machines to use it as there is a PPA with more up-to-date versions than the equivalent OpenOffice version in Lucid. This is again based on the procedures on Web UPD8 on how to install LibreOffice from a PPA

LibreOffice has an Ubuntu PPA so it's easy to install and stay up to date with the latest LibreOffice versions. The LibreOffice packages in this official Ubuntu PPA are backported from current releases so they come with all the patches/optimizations applied to LibreOffice for Ubuntu. Important note: You must remove OpenOffice so you cannot have both in the same time!

To remove OpenOffice, add the LibreOffice Ubuntu PPA and install it in Ubuntu 10.04 and higher, use the following commands in a terminal:

sudo apt-get remove openoffice*.*
sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get install libreoffice
sudo apt-get install libreoffice-gnome
sudo apt-get install language-support-en

The last two commands integrate Libreoffice with the gnome desktop environment and replace the spell checker and the language support packages which were removed with OpenOffice (you can replace "-en" with your language in the final command).

It is possible that the change was not handled properly in some some Distribution Updates - if you have problems and suspect that is the case then it is best to uninstall both openoffice and libreoffice as above then reinstall libreoffice

Adding a Grammar Checker to LibreOffice

LibreOffice and OpenOffice do not have a Grammar checker built in but it is possible to add one as an Extension. The mechanism for Extensions is built into OpenOffice but the Extensions are written by individuals or groups - this is a beauty of OpenSource but one is vulnerable to the quality and support level. At the worst one can always remove or disble the Extension but I would always recommend not working on 'live' documents when testing any new feature. In the case of Grammar checking it was always intended that one would be available and all the menu entries etc are already built in and ready to go

The Grammar Checker for OpenOffice which is also compatible with LibreOffice is called LanguageTool. To loosely quote:

"LanguageTool is an Open Source language checker for English, German, Polish, Dutch, and other languages. It is rule-based, which means it will find errors for which a rule is defined in its XML configuration files (and there are close to 500 rules implemented for English). Rules for more complicated errors can be written in Java. You can think of LanguageTool as a tool to detect errors that a simple spell checker cannot detect, e.g. mixing up there/their, no/now etc. It can also detect some grammar mistakes. "

The extension is in the main library of OpenOffice Extensions under LanguageTool. It has been downloaded by over 100,000 people and gets good marks so it is reasonably well thought of! http://extensions.services.openoffice.org/project/languagetool and has had many years of development under OO 2.x.

It needs the machine you are using to have Java installed, which is likely and a the Java runtime environment of 5.0 or later selected >before you install this extension. This is set by Tools -> Options -> Java in any OpenOffice program - you will have to wait a long time and you need higher than 1.60_04.

If you are using Ubuntu then you must also add the java package to OpenOffice as it is not installed in Ubuntu by default. use the Ubuntu Software centre or the Synaptic Package manager and Search for and Install openoffice.org-java-common before proceeding.

To Install, download the file from the site and Double click LanguageTool-1.0.0.oxt to install it. If that doesn't work, call Tools -> Extension Manager -> Add... to install it. Close OpenOffice.org and re-start it. Type some text with an error (e.g. "This is an test." -- make sure the text language is set to English) and you should see a blue underline.


Playing and organizing music files.

Ubuntu comes with Rhythmbox Music Player to play and organize your music.

When you first use Rhythmbox, it will scan your home folder or folder(s) you specify for any supported music files you have and will make them available to be searched for and played automatically.

Playing and and Ripping Audio CDs

The Rythmbox player opens automatically when you insert an audio CD and will display the CD artist, album and track names if you are connected to the Internet.

It is possible to extract the music onto your computer (rip) if you prefer to keep a copy of an audio CD on your computer without needing to insert the CD to listen to it. Sound Juicer CD Extractor is able to rip CDs. I normally use RipperX which can be loaded from the Ubuntu Software Centre

Record sounds and music

If you have appropriate audio hardware (such as a microphone), you can record sounds onto your computer. Start typing Sound Recorder in the Dash to start the Sound Recorder.

Editing sounds and music

I am using Audacity to record audio as and edit it. Audacity provides many powerful sound-editing features which make it perfect for transferring music from LPs and CDs, cleaning them up of clicks etc, carrying out noise reduction, normalise and balancing and converting to MP3s.

Burning CDs and DVDs

Another of the critical functions I checked at an early stage was burning CDs and DVDs. Hardy Heron and higher have a CD/DVD burner built in called Brasero which seems to work very well for normal purposes.

K3b is a very sophisticated CD/DVD burner similar to Nero in its professional feel. A trial using K3b successfully burnt a full data CD and verified it - it selected speeds etc. to match the burner and disk. It looks as if it rates as highly as Nero for these jobs. The only slight downside is that it is designed for the KDE interface so it runs with a different look which gives an interesting insight into the differences between GNOME and KDE. I added MP3 burning support to K3b by opening a terminal window and installing a support package:

sudo apt-get install libk3b2-mp3 


Setting up for Playing and Ripping media Files with Proprietary and Restricted Formats

Using the Synaptic Package Manager to add programs

I prefer the Synaptic Package manager to the Ubuntu Software Centre but it is no longer installed by default so you should install it using the Software centre after which you can open it from the Dash

When the Synaptic Package Manager has opened use Search to find the package/program you want, click the box and click Mark for Installation each one. When they are all marked, click Apply.

If you want to play commercial encrypted DVDs using the Totem Movie Player there is more information in Ubuntu documentation on Movies, DVDs and Videos


I have found that there are options in the volume control on the panel to see more options including the Microphone boost tick box. Double click the icon to open the volume control and adjust as required for Skype.


I was told about Picasa in feedback on my web page as a replacement for IrfanView. Irfanview is a picture editor which I like because it has batch conversion and renaming which allow me to create different size pictures for the web site differing in name eg xxxxxxxxi.jpg xxxxxxxw.jpg and xxxxxxxxb.jpg for my dual size popups. Picasa is a Google program which does a superb job of handling pictures and runs both under Windows and Linux via Wine. It originally had a Linux version which actually ran Windows code via Wine which they have put extensive work into developing for the Open Source movement, now you just install Wine then Picasa. I have it installed on the Linux laptop and desktop and on a Windows Desktop. The two are almost identical in interface and it is one of the smoothest GUIs I have met on either. Purists may feel that a native Open Source version would be better but regardless of that Google did port it to Linux with Debian/ubuntu one of the specific flavours.

Picasa allows you to make a series of reversible changes to a picture in a very easy way - the GUI interface makes a rotation and colour balance almost trivial whilst keeping he original files completely intact. You can then 'star' (high level select) many files in multiple folders and then export them (with changes permanently applied) to a folder for making a CD etc. The export allows them to be resized - ideal for my purposes but does not provide the renaming although a single simple command line can do that in a terminal. I will now export each size to a separate directory then rename and merge them. Overall Picasa largely replaced Canon Zoombrowser, Irfanview and Paintshop Pro for dealing with pictures efficiently and without messing up the EXIF parameters.

Batch renaming is well explained in How to Bulk Rename Files in Linux and the command I use to add an i to the filename before the extension is:

rename -v 's/\.jpg/i\.jpg/' *.jpg

Note the bit in ' ' quotes is a perl regular expression and I am not going to explain those here! It however shows the power of Linux to do almost anything quickly in a command line.

ClamAV and ClamTk - Virus Checkers running under Linux to find Windows Malware

There are a number of Virus checkers which run under Linux which are for detection of Windows Viruses. A major reason for there existence is to check for viruses on Email Servers running under Linux but most will also run checks on files and folders. It is therefore possible to check a Windows filesystem on a dual boot machine or from a live CD when it is not running. Many of the virus checkers are from the same providers who make them available for Windows and are, of course, proprietor. These include free versions of my two favourites for Windows, Avast and AVG. Instead I am using the open Source Virus checker ClamAV and its Gui interface ClamTk, they have a good reputation and have a huge virus database which is updated rapidly when new viruses and are detected. The next paragraph has a brief description of ClamAV and its associated packages.

Clam AntiVirus is an anti-virus toolkit for Unix. The main purpose of this software is the integration with mail servers (attachment scanning). The package provides a flexible and scalable multi-threaded daemon in the clamav-daemon package, a command-line scanner in the clamav package, and a tool for automatic updating via the Internet in the clamav-freshclam package. It features built-in support for various archive formats, including Zip, Tar, Gzip, Bzip2, OLE2, Cabinet, CHM, BinHex, SIS and others. It has built-in support for almost all mail file formats and for popular document formats including Microsoft Office and Mac Office files, HTML, RTF and PDF. The virus database is normally updated by the clamav-freshclam package which is automatically loaded alongside ClamAV for Internet updating. An update package package can also be created on an Internet-connected computer and run as a .deb. We do not plan to do any on-access checking or automatic checking of incoming/outgoing email at this point in time so we are not running the daemon and have no overheads other than a small amount of hard disk space unless we are running a specific check.

Ubuntu has all the various packages in the repositories so they can be installed by the Synaptic Package Manager or it can be installed along with a simple but adequate GUI for file and folder testing called clamtk from Add/Remove programs as 'Virus Checker' . The standard install also brings in a package to add virus checking as a right click option in the file browser. I installed it and used the Gui (ClamTk) to check a Windows system on a dual boot computer - you first need to mount the partition with the Windows 'C: Drive' which needs administrative privileges and a password. It automatically updates and can give a comprehensive check - it was slow on an entire 'C: Drive' but found the 'test' files I expected. It also had a number of false alarms detected as PUA.Packed.aspack212, mostly in my Irfanview .dll files which I have been using for years so they were obviously false - two more detections needed a little more investigation but again I concluded they were false but will watch them anyway. The false alarms only occurred when checking using the advanced mode for Potentially Unwanted Applications PUAs which seems to use a heuristic method - this is a known anomaly which I am sure will be solved.

We will ClamAV it to check files from students and others where we want to avoid any chance of passing existing problems on to other users.

There is an updated version of the ClamTk GUI which I downloaded as a .deb and installed as it seemed to offer some better features but I would not regard that as essential. Unless you are very knowledgeable keep to the version in the repository.


Using Wine (Wine Is Not an Emulator) to run Windows programs

Wine enables one to run many Windows programs in Linux. It is under continuous development and the number of applications it can handle has increased dramatically including a number of the most demanding games.

I initiall used Wine to run two well behaved Windows applications Paintshop Pro and Irfanview, for which there is no GUI replacement for some of the batch functions I use. I got the information from Ubuntu Hacks (See the book list below) and their website at Wine HQ. To loosely quote "Wine is an Open Source implementation of the Microsoft Windows API on top of the X windows system and Unix. Wine is a compatibility layer for running Windows programs and does not require Microsoft Windows - it is a completely free alternative implementation of the Windows API (Application Programming Interface) consisting of 100% non-Microsoft code"

The implementation of Wine was much improved in Ubuntu Hardy Heron. The version installed is 1.0 (1.01 in Jaunty) and it is now fully integrated into the Ubuntu Linux system. It appears on the Applications menu with a slide out menu giving Programs, Browse C:\ Drive, Configure Wine and Uninstall Wine Software. The Programs then slides out to give the programs as they would have appeared in the Start Menu. All very well integrated. The extension .exe is now linked to Wine so you just double click the install .exe or .msi file to set it all going. Most of the configuration of wine is via the Configure Wine GUI.

Wine Example Dreamweaver MX 2004

The following is a screenshot showing how it now looks when one is opening Dreamweaver MX 2004


I installed Macromedia Dreamweaver MX 2004 without any problems by double clicking the install .exe file - it complained that it would require mdac 2.6 to be loaded for all its facilities but it all seems to work anyway. It also automatically downloaded and installed the Ghecko Rendering engine.


The only thing for me to install were some fonts using System -> Administration -> Synaptic Package Manager so I could load the Windows truetype fonts which many applications use - search for, mark and load msttcorefonts

I have used Dreamweaver extensively and I have tried out many of the facilities without any problems - the only anomalies I have seen have been to do with use of drives on Windows partitions especially those that had not been mounted in advance. The file -> Open route seems to be better and one can also set up a Site on a Windows partition and have all the files accesible. Dreamweaver has been one of the biggest demands for installing under Wine (It was No 3 on the wishlist) and success has been ellusive up till now so overall this is a huge step forwards. I have read that Dreamweaver 8.0 also now installs without problems.

I have looked up about Mdac 2.6 (Microsoft Database Access Components) and it is needed to provide database connectivity which will probably not be required for many pages. I understand it can be downloaded from the Microsoft site and installed using Wine by double clicking on the downloaded mdac_typ.exe but I have not tried to do so.

Some Programs Tested under Wine 1.0 (and higher)

I have loaded a number of programs by the simple expedient of clicking on the downloaded .exe file without any major problems including:

Accessing Ports from Wine

If you want to use a port you need to create a symbolic link in ~/.wine/dosdevices with the name of the device. Windows serial ports are called com1, com2, etc. Similarly, parallel ports use "lpt" followed by a number, such as lpt1. You should link these directly to the corresponding Unix devices, such as /dev/ttyS0 and /dev/lp0. I added a serial port with the following command in the ~/.wine/dosdevices folder:

 ln -s /dev/ttyS0 com1

so I could access my GPS with the GPSU program which ran fine when loaded with Wine and again created a link on the desktop.

I also added a link to my USB-Serial cable which shows up as /dev/ttyUSB0 (see below) by

ln -s /dev/ttyUSB0 com2

Enhancements to WINE to open native Linux programs such as OpenOffice (Advanced)

This section is not for the total newcomer to either Linux or Windows and is not totaly wthout risk, although the worst would probably be you would have to remove WINE and Add it back as a fresh copy. When you are running a Windows program under WINE there are few built in programs so if you wanted to run an Office application you would have to do the same as on a real Windows machine and install Microsoft Office or OpenOffice. What you actually want to be able to do is to access programs which are available in the Native Linux machine so that if you right click on a document file attachment which is in FirstClass or the eTMA File Handler then it will open up the File using the copy of OpenOffice that comes installed with Ubuntu Linux. This seemes a fairly normal requirement to me and I was surprised that no such facility was built in to make set up such associations and even more surprising that there was no proceedure easily found by Googling. I eventually came on a set of postings which gave a suitable way forwards.

There are several stages.

  1. You need to make the associations for the file types you want to open in native linux - this has to be within the WINE windows registry so is not something to be undertaken lightly.
  2. One needs a mechanism to open a native linux program and pass the parameters, or better still pass the selected files to a utility which can work look at the associations and open the appropriate program. This exists as part of the gnome desktop and is called gnome-open but is not well documented.
  3. You need a script to convert the path to the file from a format such as C:\documents\file.doc to /home/username/.wine/drive_c/documents/file.doc

In practice:

The names used above follow those of the originator of the idea, Tres Finocchiaro, which I found under the unlikely heading of [Wine] Fun Wine Project -- Configure Some Default Registry Entries. The contents of the two files word.reg (this link does not have the additions in red below as it is more tested) and winenative on my system are:


"Content Type"="application/linuxnative"

"Content Type"="application/linuxnative"

"Content Type"="application/linuxnative"

"Content Type"="application/linuxnative"




@="/usr/bin/winenative \"%1\""

@="C:\\windows\\system32\\winebrowser.exe %1"

# /usr/bin/winenative
# License: GPL >= V3
# Author: A. Tres Finocchiaro
# Modified: May 2008 Hilary BH Wright
# Used to call on the native linux OS to launch a filetype in Wine.
# For example, if you have a Microsoft Word document, but want to
# use the Linux version of OpenOffice Writer to open it, simply call:
# @="/usr/bin/winenative "%1""
# in
# HKEY_CLASSES_ROOT\linuxnative\shell\open\command
# This assumes you've already added:
# @="linuxnative"
# to
# HKEY_CLASSES_ROOT\.doc --> "Content Type"

# The native command to open the file. This can be changed to $1, $2
# if you'd like to set up input variables, or you can type "openoffice"
# or something similar if you'd like to statically map it.
# If you don't use gnome, change it to your desktop's equivelant, and
# update this comment!

# The url of the file. Change to $2, etc if you want to take the 2nd
# input variable in your call.


# Transform the windows path to the linux path with the 'winpath' command
# (i.e. C:\Windows\Temp\1.doc to /home/tfino/.wine/drive_c/etc)
# NOTE1: The ticks are (` = tilde key) NOT (' = quote key).
# NOTE2: You need the "" here in order to allow for spaces in the path and file names.
# NOTE3: the -u parameter is there just to be sure that you are chnaging from windows paths to linux paths: it is the default.

lin_file=`winepath -u "$win_file"`;

# Call the native command passing the linux path enclosed in ""

$cmd_open "$lin_file";

# Exit status 1? Manipulate this value to work with errors.
exit 1;

The proceedure is to first save the files word.reg to your desktop and do an import into the wine registry by executing in a terminal:

regedit Desktop/word.reg

The second file is the " winenative " shell script. Save it to your desktop, copy it to /usr/bin, and make it executable by:

sudo cp Desktop/winenative /usr/bin/
sudo chmod +x /usr/bin/winenative

You should now be able to open the common word processor files formats in OpenOffice and PDF files in the Linux viewer. You can add .zip .xls .ppt .ods, .odp etc to the list if you want.

Many thanks to Tres Finocchiaro for the original idea and Hilary BH Wright for the improvements to winenative.

I have also received some excellent addition suggestions from Jorgen Qvartsenklint which are very useful enhancements and have been incorporated in the word.reg file above and highlighted in red. In summary the backslash and quote before and after %1 allows files with spaces and special characters in the file name to be opened in Ubuntu applications via WINE and the remainder allows web links to be opened in Firefox via WINE.

Web Authoring

I mostly still use Dreamweaver MX 2004 under Wine but its support for HTML5 is non existent and I have been trying Brackets

FireFTP a modern fully featured cross-platform FTP program which runs as an extension in Firefox

FireFTP is an extension to the Firefox browser and is normally run in one of its tabs although you can use its Options to choose to always launch in a separate Window.

You need to have Firefox installed before Installing FireFTP as an extension. Assuming you already have Firefox then:


The setting up is easy - the following screens are accessed via the drop down at top left which shows the current connection but at the top of the list is selection for a new connection. You only need to set up the Main tab and you must have three pieces of information from your web space provider

  1. Host: - usually starts with ftp.
  2. Login: Your username for FTP which may be the same as for your email but not always.
  3. Password: Your password for FTP which may be the same as for your email but not always.
  4. Account Name: can be anything but best if it matches your ISP or web site URL
  5. Category: can be blank


The connection screen contains the initial values of local directory and that on the web site. Your ISP should tell you where the web site should be uploaded to. If it is the root directory just enter a / otherwise / and the directory name - it is often a directory called /http or /httpdocs. You may be able to go to / and it should be obvious.


Passive Mode: Unless advised otherwise by your ISP you should leave Passive Transfers ticked as it works best for 90% of ISPs.

Keep directories in sync while navigating: This is one of the big pluses of FireFTP. If you specify both an Initial Local and Initial Remote directory this feature becomes available. Once it's enabled and you've connected to your server - every directory change you make, whether on the local or remote side, will be mirrored by the opposite side. This feature assumes that both sides are similar, if not exactly the same, in content. This is particularly useful for web designers who have local and remote copies of their files and who do not wish to have to change directories on both sides when uploading and downloading files.

Once you have set up the account you use the Connect Button to Connect

Tip - under Linux you can start it directly by typing in a terminal:

firefox -chrome chrome://fireftp/content/

Or create a launcher instead of using a terminal (not with Unity or via tricks)

We now have an excellent stand alone FTP program when it is set to run in a window not a tab. Many thanks to the authors for an excellent program and for use of the icon in my launcher.


Arachnophilia is another web editor which I used to use a lot. It has recently been updated and the latest versions run under Sun Java 1.4 or higher and are both cross-platform and true Freeware. In fact I use the author's definitions of what freeware is elsewhere. Before running Arachnophilia you need to load the correct version of Sun Java in Ubuntu - the some versions of the free package which may already be loaded are not suitable and you should install the Sun Java and also make a change so it is used by default.

First check for which version you are using by

java -version

GNU libgcj is the one that does not work although it is version 1.4

Now see if any others are present, I found the correct one was loaded but not the default so try:

update-java-alternatives -l

If you have a Sun Java higher than 1.4 then select it by, for example

sudo update-java-alternatives -s java-1.5.0-sun

If you do not have then you have to use Applications -> Add/Remove -> Advanced -> Search for sun-java and Mark the sun-java5-bin sun-java5-jre and sun-java5-plugin for installation (right click) -> Apply then go back through the two lines above to check it is there and select it. Hardy Heron has Sun Java 6 already loaded so this should not be required.

Now you can download the Arachnophilia.jar and put it somewhere safe as you will use it every time you start Arachnophilia - I put it in my home directorybut hid it by renaming it to .Arachnophilia.run . Now install by
It is rerun by he same invocation but it does not have to waste time setting up and comes up immediately in it's saved state. There is an old write up at Arachnophilia which I am in the process of updating.

Apache Server and PHP

I have been using the PHP (PHP Hypertext Processor) scripting language for writing scripts to process the output from forms - this is all written up as How to Handle the Output from Forms . PHP is a server side scripting language which means that everything has to be tested on a web server with PHP support which results in every change having to be uploaded and tested on ones web site. After a near escape from writing all over the wrong areas of the server at Freezone I realised that testing a powerful language with the ability to write files and call raw Linux commands might not be a very bright thing to do and loaded the Apache web server and the associated libraries for PHP support onto my desktop. I expected it to be complicated but it was very quick and easy and the server is now accessed from a browser as http://localhost on the local machine or by IP address such as http://192.168.1.n from other machines on the local network. The home directory is, by default, in the /var/www directory. Hostname resolution does not work by default but I have found a way of enabling it for ssh which ought to work - I will write it up when I have checked.

Loading Apache can be done by Applications -> Add/Remove -> Advanced -> Search for apache2 then mark apache2 and mark libapache2-mod-php5 You will be informed that some other packages are being included and you just -> Apply and apache is installed and set up to run every time the machine starts.

The only thing you will need to do before you can use it is to change the permissions on the /var/www folder so you can copy your web site files into it. I find the easy way to do this is to run nautilus (the GUI file browser) with root privileges by starting it from the command line with sudo

sudo nautilus

this means I can just right click to properties on any file or folder and use the permissions tab. The command line alternative is

chmod 766 /var/www

You may also wish to create an addition folder with the same permissions so scripts can read and write files and/or set the permissions on your private folders (those requiring a login). PHP is run as user www-data on my local set-up and apache on the Freezone server. The versions recommended for ubuntu are Apache2 and PHP 5 (version 5.1.2) - I was tempted to load version 4 as that is what is on the Freezone Server and some commands are new in version 5.

PHP Test Script fragments including File handling and Encryption

These have all been moved to a new page PHP Scripts and Ubuntu


This is being moved to be part of Sharing, Networking, Backup, Synchronisation and Encryption under Ubuntu Linux

Hardware Support


Up to now we have been considering systems with broadband access through a Ethernet or Wifi connection from an ADSL/ Modem/Router/Firewall box. My section covering Modem support for when you have no broadband access and are on the move has got far too large and has been moved to a new page - Ubuntu Linux on the Move.

For completeness here it is worth noting that support for some types of modem is poor in all versions of Linux. The type of modem which is used in many machines and built into many recent cards are often referred to as Winmodems or soft modems because they use Windows and the processor to do much of the hard work in software rather than do it on the chip or card. This includes not only internal modems but many external USB modems and includes ADSL modems. This software is often proprietary and Linux is poorly supported by most manufacturers. I therefore got out my old but very trusty US Robotics V90 external serial interface Fax Modem for the desktop with instant success.

The laptop has a soft modem and again I took the easy way out when I then remembered that I had a Xircom PCMCIA modem and Ethernet card. I plugged it in and it was recognised immediately and I had a telephone connect working a few minutes later during my initial LiveCD tests.

Identifying and dealing with hardware

The Linux Kernel has support for most common hardware built in but you are always going to find that you will have something which is either very old, very uncommon or very new which needs to have additional drivers. In most cases they will be available and somewhere on the internet there will be clear (or not so clear) instructions. But before you can look for thsoe instructions you need to know how to identify what you have and how much progress has been made in using your hardware. Here I am going to limit what I am covering to two sorts of hardware. Firstly hardware which is built in and on the internal PCI bus structure, more likely than not it will be integrated onto the motherboard - this can include video 'cards', sound systems, network 'cards', tracker pads, wifi, webcams and modems. Secondly USB devices which you just plug in and should be detected and set up for you and some sorts of internal hardware are also handled more like peripherals and are on the USB buses - an example is a bluetooth card may be a USB device although it is internal, some webcams and also multipurpose card readers.

Identifying USB Devices

The easy way to see what USB devices the system knows you have plugged in is to use the lsusb command in a terminal. The output for my MSI U100 Wind with every option turned off and nothing plugged in looks like:

lpcurtis@vortex-ubuntu:~$ lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0bda:0158 Realtek Semiconductor Corp. Mass Storage Device
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

And with the Webcam turned on (Fn F6) Bluetooth turned on (Fn F11), a broadband dongle, a mouse and a Memory Stick plugged in looks like:

pcurtis@vortex-ubuntu:~$ lsusb
Bus 005 Device 002: ID 0db0:a97a Micro Star International Bluetooth EDR Device
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 05c7:0113 Qtronix Corp. PC Line Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 012: ID 090c:1000 Feiya Technology Corp. Flash Drive
Bus 001 Device 010: ID 19d2:0063 ONDA Communication S.p.A.
Bus 001 Device 004: ID 5986:0203 Acer, Inc
Bus 001 Device 002: ID 0bda:0158 Realtek Semiconductor Corp. Mass Storage Device
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

We can learn a lot from the output of lsusb. Perhaps the most important when we come to work with devices which, unlike these, have not been fully installed is the ID - the first part is a 4 figure hexadecimal number which is unique to the manufacturer and the second is the product from that manufacturer which is faily unique. The manufacturer's ID is often that of the underlying chip manufacturer which may be used in many hardware implementations. This code is much more useful that that on the box or label - for example the Vodafone K3565 mobile broadband dongle has many varients with different chips or microcode in the chips.

The next step is to have a look at the log file which has all the information on the loading of device drivers etc which can be seen by the terminal command dmesg which gives a huge output but the end will show what happens when you plug in a new device. The following is an example of plugging in a Mobile Broadband stick then a mouse and memory stick:

[ 3153.756154] usb 1-2: new high speed USB device using ehci_hcd and address 13
[ 3153.899948] usb 1-2: configuration #1 chosen from 1 choice
[ 3153.901926] option 1-2:1.0: GSM modem (1-port) converter detected
[ 3153.902581] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[ 3153.903077] option 1-2:1.1: GSM modem (1-port) converter detected
[ 3153.903613] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[ 3153.905259] option 1-2:1.2: GSM modem (1-port) converter detected
[ 3153.905740] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[ 3153.906275] option 1-2:1.3: GSM modem (1-port) converter detected
[ 3153.907237] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
[ 3153.908088] option 1-2:1.4: GSM modem (1-port) converter detected
[ 3153.909111] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB4
[ 3153.910123] scsi8 : SCSI emulation for USB Mass Storage devices
[ 3153.911149] usb-storage: device found at 13
[ 3153.911163] usb-storage: waiting for device to settle before scanning
[ 3158.911662] usb-storage: device scan complete
[ 3158.913694] scsi 8:0:0:0: Direct-Access ZTE MMC Storage 2.31 PQ: 0 ANSI: 2
[ 3158.929691] sd 8:0:0:0: Attached scsi generic sg2 type 0
[ 3158.935747] sd 8:0:0:0: [sdc] 3862528 512-byte logical blocks: (1.97 GB/1.84 GiB)
[ 3158.938747] sd 8:0:0:0: [sdc] Write Protect is off
[ 3158.938760] sd 8:0:0:0: [sdc] Mode Sense: 0f 0e 00 00
[ 3158.938768] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 3158.950585] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 3158.950606] sdc: sdc1
[ 3158.964244] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 3158.964265] sd 8:0:0:0: [sdc] Attached SCSI removable disk
[ 3172.672111] usb 3-1: new low speed USB device using uhci_hcd and address 2
[ 3172.847517] usb 3-1: configuration #1 chosen from 1 choice

[ 3172.864295] input: Qtronix Corp USB MOUSE as /devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input14
[ 3172.864676] generic-usb 0003:05C7:0113.0003: input,hidraw0: USB HID v1.10 Mouse [Qtronix Corp USB MOUSE] on usb-0000:00:1d.1-1/input0

[ 3182.920158] usb 1-1: new high speed USB device using ehci_hcd and address 15
[ 3183.851070] usb 1-1: configuration #1 chosen from 1 choice
[ 3183.852787] scsi9 : SCSI emulation for USB Mass Storage devices
[ 3183.853744] usb-storage: device found at 15
[ 3183.853759] usb-storage: waiting for device to settle before scanning[ 3188.852791] usb-storage: device scan complete
[ 3188.854247] scsi 9:0:0:0: Direct-Access USB DISK 2.0 0403 PQ: 0 ANSI: 0 CCS
[ 3188.859191] sd 9:0:0:0: Attached scsi generic sg3 type 0
[ 3188.876835] sd 9:0:0:0: [sdd] 7962624 512-byte logical blocks: (4.07 GB/3.79 GiB)
[ 3188.878111] sd 9:0:0:0: [sdd] Write Protect is off
[ 3188.878123] sd 9:0:0:0: [sdd] Mode Sense: 43 00 00 00
[ 3188.878132] sd 9:0:0:0: [sdd] Assuming drive cache: write through
[ 3188.886699] sd 9:0:0:0: [sdd] Assuming drive cache: write through
[ 3188.886713] sdd: sdd1
[ 3188.892339] sd 9:0:0:0: [sdd] Assuming drive cache: write through
[ 3188.892356] sd 9:0:0:0: [sdd] Attached SCSI removable disk

You can see there is a lot of information here - I have added some blank lines to break out the three devices.

In the case of the USB Mobile broadband Stick it tells us that it has 5 USB serials ports (/dev/ttyUSB0 to /dev/ttyUSB4) and they have been associated with a GSM modem. Also the built in memory slot shows up with a 2 Gbyte microSD card plugged in which is mounted as sdc.

The Mouse is much simpler and is mounted as a generic mouse.

The memory stick is again identified as a 4.07 GB drive and mounted as a removable drive sdd.

You can get a lot more information about the drives you have mounted by System -> Administration -> Disk Utility which will tell you all the mount points for removable drives and all the partition information for fixed drives.

As you will have seen dmesg gives far too much information for easy interpretation and finding what has gone on during the initial mounting of devices rather than those you plug in latter which are at the end. There is a neat little utility called grep which can help here.

First we need to understand the concept of a pipe. When we run dmesg the output is sent to the terminal - instead we can send it to another program this is called 'piping'. If we put a | (vertical line usually at bottom left of keyboard) after dmesg the output is sent as the input to another program such as grep. in its simplest use grep followed by a string only sends to the terminal the lines containing that string so dmesg | grep tty will just print lines containing tty. This is very useful to find if a built in modem has been connected and to what port. This is an example:

pcurtis@vortex-ubuntu:~$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 15.457010] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[ 15.460537] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[ 15.464227] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
[ 15.465069] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB3
[ 15.465714] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB4

I currently do not have any good examples of what these outputs look like when the devices have not been detected and installed correctly although there are plenty of examples in earlier days! What is more common is that the driver which is loaded is the wrong driver, does does not work or is not as good as other drivers. Examples here included wifi and webcam drivers for the MSI Wind U100 under Hardy Heron and Wifi Drivers for my Toshiba Satellite Pro L20 where the latest Open Source drivers do not work as reliably as the earlier MadWifi driver used in Hardy Heron.

Building your own drivers

The following description covers the most common situation but building a driver varies a little in many cases. Building a driver means that you take the source code for the driver and compile it in conjuction with information on it's 'links' into the particular kernel into what is called a module which is then loaded when required - this may be all the time for a built in peripheral or the module may only be loaded when a USB device is plugged in. The additional driver modules you build have to be rebuilt every time the kernel changes which is very inconvenient compaired to using modules built into the kernel. You also need to make sure the replacement module is the one loaded and you may have to delete some files belonging to any built in modules which are replaced every time the kernel changes. The place where the module is installed may differ between distributions so using a driver for a different distribution may need internal changes to some of its files. This all sounds difficult but in most cases it is all documented on the web site associated with the driver or in ubuntu conference postings and faqs. Once you have done the job the first time rebuilding is much simpler and may only be six or sevenl lines in a terminal or can be put into a simple script.

The basic proceedure the first time you ever build a driver is:

  1. Install the utilities you need to build drivers - at a minimum you need build-essentials but your particular driver may need additional utilities (sudo apt-get install build-esentials).
  2. Download the driver - this will almost certainly be in an tar archive which is a single file containing lots of compressed files in folders.
  3. Extract the archive to somewhere where you can work on it and keep it for the future (double click and drag the enclosed folder where you want it). The best place to keep the tar archive and the extracted folder structure is your home folder.
  4. The following need to be done after every kernel change using a terminal.
  5. Download the Linux Headers for your current kernel - this is where the build operation picks up the 'links' it needs to the kernel. Most Ubuntu distributions have this installed automatically every time the kernel is updated but it does no harm to ask for it a second time - you will just be told it already present. Or use the Synaptic Package Manager and search for linux-headers-generic. The latest version can be found by uname -r and a common trick is to use `uname -r` instead of an explicite name in terminal commands and scripts ie sudo apt-get install linux-headers-`uname -r` - Note these are back ticks from top left of keyboard
  6. Now change folder to the one containing the driver (where you extracted the archive) by cd extractedfoldername
  7. Carry out the instructions to create and install the driver module. These will vary a little but mostly the writers of drivers use a utility called make which uses a script file called makefile which has all the actions contained in it to create the driver structure within the folder you are using. Another call to sudo make install then copies everything to the correct place. There may first be a call to make clean which gets rid of the previous versions and/or some other script to unload the current driver. Some of these commands need a sudo in front as they need to be run as root to make changes in the root file structure.
  8. In some cases the hardware needs to have firmware loaded every time and this firmware will usually be in a file with an extension of .fw which is placed in a standard folder location of /lib/firmware
  9. You will need to remove the existing driver, make the system aware of the new one and load it if you want to try it out without rebooting - sudo modprobe -r old_module sudo depmod -ae and sudo modprobe new_module
  10. You may need to 'blacklist' the driver module prefered by the kernel so the new module is loaded and used by adding a module name to a 'blacklist' file.

You will usually have to repeat this every time kernel is updated.

A good example to look at to see all this in action is my write up of how to use the madwifi driver (module ath_pci) instead of the built in wifi driver (module ath5k) on my Toshiba Satellite Pro L20 which is at Using MadWifi drivers for the Atheros Wifi card under Karmic Koala and Lucid Lynx

Wifi Connections and drivers

Wifi cards in laptops are much better supported than modems but even so there may be a need to install drivers. The problem is that the drivers for a WiFi card are complex and few manufacturers support Linux. There are however a limited number of chips which are used by a large number of manufacturers and some of the most popular now have built in support in the kernel. Even then proprietary considerations mean that in some cases such as the Broadcom 43xx chips used by many manufacturers including Belkin and Dell need the proprietary firmware installed.

Those that have no native Linux support can often be installed by a technique of 'wrapping' part of the Windows drivers in code to integrate them into Linux - the ndiswrapper mechanism. The basic windows .inf and .sys files needed for this can be obtained in many ways including from your Windows system or the CDs provided.

Reverting to the MadWifi drivers for the Atheros Wifi card under Karmic Koala, Lucid Lynx and Oneiric Ocelot and now Precise

I needed to do this to be able to fully utilise the Wifi built into our Toshiba Satellite Pro L20 as the new ath5k driver now built into the latest kernels does not yet support the Atheros driver version used in the Satellite Pro L20 and a number of other machines as well as the madwifi driver especially if you want to use WEP or WAP security. Under Precise the ath5k drive once more seems to be working but I have also checked that I can compile the alternative madwifi (ath_pci) driver covered here with the latest kernels provided one one downloads the latest version of the madwifi driver from the link below.

After much searching I found a good set of instructions here: http://art.ubuntuforums.org/showthread.php?t=1163380 and there is more information at http://ubuntuforums.org/showthread.php?t=1309072 .

First install the utilities for building a kernel driver by typing the following in a terminal:

sudo apt-get install build-essential linux-headers-`uname -r`

We now need to obtain the new driver by downloading the latest version from http://snapshots.madwifi-project.org/madwifi-0.9.4-current.tar.gz , it will initially download to the desktop where you can unpack the archive by double clicking it and dragging the folder within it to somewhere you can easily find it as you need to compile it again every time you update kernel - the best place is your home folder and also renaming it to madwifi from a name which includes the version number. The follow steps assume that is done and the folder is in your home directory. Once this has been done we need to compile the driver and install it into the kernel.

The stages above only need doing once per distribution update ie downloading a new driver was required when changing from 11.10 to 12.04 - the following needs to be repeated every time the kernel is updated - you will know when as the Wifi will stop working!

The following is a list of the commands one needs to type in a terminal after every kernel change. I have put them in the form of a script file but the commands can be individually cut and pasted into a terminal - they contain additional commands to disable the existing driver when testing and to get the wifi up again without a restart.

# Last updated and tested 25th June 2012
echo 'Script to update the madwifi driver after a kernel update'
echo 'You must have installed software, blacklisted drivers and downloaded madwifi before running this'
echo 'It expects to find madwifi in your home folder'
echo 'Confirm before proceeding (y or Ctrl C to exit)'
read yn
cd ~/madwifi
sudo ./scripts/madwifi-unload
make clean
sudo make install
sudo depmod -a
sudo modprobe -r ath5k
sudo modprobe ath_pci

If you want to run it as a script copy it into a text file and save it and the make it executable and run in a terminal. If you do not understand that then just cut and paste each command into a terminal!

This reports warnings about an option -e which seem to cause no problems

Once you have seen it work the first time we need to force use of our chosen driver by typing the following in a terminal.

sudo gedit /etc/modprobe.d/blacklist-ath_pci.conf

Change the last line by adding a # at the start to comment out the blacklisting of the MadWifi driver so it reads # blacklist ath_pci and save it then type the following in a terminal:

sudo gedit /etc/modprobe.d/blacklist.conf

now add blacklist ath5k on a new line at the end.

These two actions mean we will automatically use the new MadWifi driver ath_pci instead of the built in driver ath5k when the system starts up or returns from a suspend and only needs to be done once per distribution.

ndiswrapper example - Broadcom 4306 chip

Broadcom chip based wifi cards need firmware to be loaded every time they are turned on. The two ways that follow are based on a thread  Broadcom (4306) - Ubuntu Forums  Both these mechanisms which use Windows drivers or place drivers into the kernel have a downside in that they need to be repeated if you upgrade to a new kernel - you do have the choice at boot-up which kernel you chose so you can use the old one until you are sorted. In some simple cases you may even be able to experiment using the LiveCD before you commit to Ubuntu..

The ndiswrapper route is shown first to indicate that it is not rocket science. First the tools are installed (that can be from Add/Remove Advanced). Then you find the windows drivers and put them in a directory ready for the next time, make the modules, install them and check and add them into the drivers loaded during booting up. In this case there may be an incomplete driver already present which needs to be removed from the sequence loaded at boot-up which is covered in the thread.

sudo apt-get install ndiswrapper-utils

Change into directory where bcmwl5.inf and bcmwl5.sys are saved (assumed to be folder bcw15 in your home directory) run ndiswrapper and load driver

cd ~/bcmwl5_drivers
ndiswrapper -i bcmwl5.inf
sudo modprobe ndiswrapper

Following should respond  hardware detected etc.

sudo ndiswrapper -l
now make sure ndiswrapper is run in the future at boot time

sudo ndiswrapper -m
There are a number of useful commands which help find out what is going on - use man xxx to find out details.

iwlist scan

Edimax EW-7811Un nano Wifi adapter and improved Drivers for the Realtek rtl8192cu chip it uses

I have bought several tiny Wifi USB adapter from Edimax, the EW-7811Un which is claimed to be the smallest Wifi adapter and covers 802.11b/g/n giving up to 150 Mbps with my Edimax router. I bought the first to add Wifi to a legacy laptop where it is so small that it can just live all the time in a USB prt and sticks a few mm - just enough to see the led but not enough to put it at risk. I then bought a few more as they were only £8.86 for my various desktops to save cables. The sensitivity seems very good when combined with my Edimax nLite Wifi router.

Unfortunately the built in driver in the kernel (called rtl8192cu) does not work very well and various web sites such as http://www.r-statistics.com/2011/11/edimax-ew-7811un-usb-wireless-connecting-to-a-network-on-ubuntu-11-10/ and http://forums.linuxmint.com/viewtopic.php?t=94495&f=53 all seem to come to the conclusion that the best way forwards is to install the latest driver (called just 8192cu) from Realtek and found here http://www.realtek.com.tw/downloads/searchView.aspx?keyword=RTL8192cu

This has to be compiled and installed and the latest linux- headers and some utilities have to be installed prior to running the simple script file in the downloaded zip file. All versions to date of Ubuntu have the current Linux Headers installed so the header install should be redundant however build-essential is not installed by default. So firstly:

sudo apt-get install linux-headers-`uname -r` build-essential

Now download the latest driver file from the Realtek website (Mine are version 3.4.2_3727 uploaded 7 May 2012 and were tested with Kernel 3.2.0-26-generic ). The driver is available via http://www.realtek.com.tw/downloads/searchView.aspx?keyword=RTL8192cu . Extract the contents into a folder in your home folder say ~/rtl8192cu so we can remember what it is rather than use RTL8188C_8192C_8192D_USB_linux_v3.4.2_3727.20120404 and this also means that any updates will not need changes in any scripts etc.!

Now change to that folder and run the install script

cd ~/rtl8192cu
sudo bash install.sh

You will be asked which driver you want from a list of two - there will be a lot more churning and what looks like an error but it is actually a series of comments and you should now have a new module called 8192cu available. This will cause confusion as the kernel still has its own module rtl8192cu so that needs to be "blacklisted" so it is not used.

so unload the existing module in case it is in the way by

sudo modprobe -r rtl8192cu

and then edit /etc/modprobe.d/blacklist.conf by:

sudo gedit /etc/modprobe.d/blacklist.conf

and add blacklist rtl8192cu on a separate line at the end. This prevents the old driver ever being used without going as far as to actually remove it permanently

Now when you plug in the adapter or reboot etc it should just find the new module and you are away.

You will need to repeat the compile and install with the new linux-headers if there is a significant change in the linux version. I will not be sure until a kernel update appears.

Automatic running of the driver install script on change after a kernel update.

The proceedure is sufficiently simple that I am not worried on my own machine but when it is another matter on a machine used by others. My wife does not appreciate complete lose of internet after an update! I have been investigating automatically running the install.sh program every time the kernel changes but the script requires interaction to choose the driver required. Inspecting install.sh it calls another script in the driver subfolder called make_drv and it looks as if it should be possible to modify it to comment out the test and substitute the correct choice but parts still need to be run with root permissions (ie using sudo) so at the moment I have settled for identifying kernel changes and automatically starting the script in a terminal after providing simple instructions.

The end result is two scripts and a file to act as a memory of the kernel version - they are all in the home folder and all need to be made executable (right click -> properties -> permissions and tick box):

  1. The first script (kernelcheck.sh) is run using the ubuntu Startup Application feature on Ubuntu Unity. This check for a Kernel change by comparing the version saved in a file to current version and runs, puts up an Alert Box and runs the second script in a terminal as user input is required.
  2. The second script (rtl8192cu.sh) provides instructions to the user and then runs the install script provided by Realtek in a Terminal Window. It finishes by updating the saved kernel version in the file.
  3. The file .kernelversion acts as a memory of the kernel version which is stored in the first (and currently only) line.

The split into two scripts makes it easy to adapt to different drivers, some machines may also need other drivers updated. It also allows the second script to be run from a desktop launcher, a unity launcher or a terminal for test or if you do not want to go as far as automatic detection

Script to identify a kernel change and run a script such as rtl8192cu.sh in a terminal

# Script to check if kernel has changed since last restart - run at login
# Last updated 29th June 2012
# check that .kernelversion exist - if not create a file containing string null
if [ ! -f ~/.kernelversion ]
echo 'null' | tee ~/.kernelversion
# Read the first line of file .kernelversion and compare to the the current kernel version
if [ `sed -n 1p ~/.kernelversion` != `uname -r` ]
# Use Zenity to provide a Warning box with information before running rtl8192cu.sh in a terminal. Zenity needs to be installed
zenity --warning --text 'The last update has changed the kernel version. This means YOU MUST update the Wifi Drivers to restore your internet connection. You will now be taken to a Terminal Window to Update your RTL8192cu Wifi Driver". Please follow the simple instructions in the window that will be opened when you click OK'
# echo `uname -r` | tee ~/.kernelversion
# Ubuntu uses gnome-terminal and Lubuntu lxterminal
gnome-terminal -e "$HOME/rtl8192cu.sh"
# lxterminal -e "$HOME/rtl8192cu.sh"

All the scripts are in the home folder as is the file used to hold the version number. .kernelversion is best updated by the script which is run - the command line is present but commented out. This basic script can be simply changed to run any script(s) in a terminal such as gnome-terminal or lxterminal in the case of Lubuntu.

Script to provide instructions to the user, run the Realtek install.sh script and update saved kernel version

# Script to Run the Realtek Driver Install script
# Last updated 29th June 2012
echo '##################################################'
echo 'This script will update the Realtek Wi-Fi driver '
echo 'after a kernel update. You will need to enter '
echo 'the password used at login when requested'
echo 'and enter 1 when it pauses to request you to '
echo 'select the card type which is a RTL8192cu'
echo 'It can take several minutes to complete'
echo '##################################################'
echo 'Hit any key to start or Ctrl C to abort'
cd ~/rtl8192cu
sudo bash install.sh
echo ' '
echo '##################################################'
echo 'Will now update stored kernel version to:'
echo `uname -r` | tee ~/.kernelversion
echo '##################################################'
echo 'Done - Hit any key to exit'

This can be run from a terminal for testing or a launcher as well as from script run at login which identifies a kernel change. It ends by creating/updating the file containing the saved kernel version.

A launcher (.desktop) file for running the wifi update script

It has become much more difficult to create a launcher in Ubuntu Unity so I have included an example launcher file which should end in .desktop say updatewifidriver.desktop and can be copied to the desktop. I have made mine executable.

[Desktop Entry]
Name=Update RTL8192cu Driver
Exec=gnome-terminal -e "/home/pcurtis/rtl8192cu.sh"
Comment=Run after Kernel Update

Automatically running the kernel change detection script

It is much easier to add the script to the list of Startup Applications which is found on the dropdown 'system' menu (top left icon on task bar). The Name and Comments are not important but the Command should be in full ie bash /home/yourusername/kernelcheck.sh The bash is required and ~/ instead of /home/yourusername sometimes does not work. See below for my entry.


The proceedure is different in Lubuntu where any shortcut files in the folder at /home/username/.config/autostart will be run during the login sequence so you just need to create a .desktop file for kernelchange.sh of a similar form to that above using lxshortcut in ~/.config/autostart by

lxshortcut -o ~/.config/autostart/kernelchange_shorcut.desktop

Conclusions on automatic updating drivers

This has been an interesting exercise and one which would not be worthwhile for a single driver on ones own machine but essential for machines used by other people. There will always be a need to use drivers which are not in the kernel with very new or very old hardware and many need updating after a kernel change. I was surprised that I could not even find any write ups of how to detect a kernel change. There are probably more elegant solutions but mine was easy to check and 'if it aint broke dont fix it' is a good principle. I am using it on two machines with Ubuntu 12.04 (Unity and 2d) and one using Lubuntu 12.04. I am also using a slight variation to use the madwifi driver on another laptop running Lubuntu. It should be possible to keep other problem drivers such as modems up-to-date.

Broadcom 4306 Driver Alternative Approach - bcm43xx-fwcutter

An alternative approach installing bcm43xx-fwcutter to load the extra firmware follows noting that the kernel version has been defined by using uname -r . This is not needed from Jaunty as it is the kernel.

Copy the bcmwl5.sys and bcmwl5.inf files used in Windows to new directory ~/bcm4306

sudo apt-get install bcm43xx-fwcutter
sudo bcm43xx-fwcutter -w /lib/firmware/`uname -r` ~/bcm4306/bcmwl5.sys
sudo rmmod bcm43xx
sudo modprobe bcm43xx

Configuration can be done using the System -> Administration -> Network or possibly wifi-radar on Dapper Drake but the Network Manager Applet takes care of it all in Hardy Heron and higher


USB 2.0 to Serial RS232 Hardware Installation (FTDI Chip)

I have put this at the end as it males an interesting comparison of Linux and Windows XP on which to finish. The background is that I had to obtain a RS232 to USB converter because the new laptop has no serial connector and I needed to download and upload waypoints to my Garmin GPS. I did a bit of Googling and I chose a device which used a FTDI chip because I found their chips were supported in Linux - others may be but it seemed best to play safe.

It was purchased from Tronisoft for £11.42 ref 2446 as USB 2.0 - RS232 cable with 25 way adapter and delivered the following day. I spoke with them before ordering and they were very helpful but had no Linux machines so said they would be glad for feedback. The disk provided has drivers for Linux, Mac and Windows 98/2000 and XP. I thought it would make an interesting comparison so I kept notes.

Windows: I first tried to install under Windows XP by turning the machine on and then plugging in the cable - it detected new hardware and started the install wizard. It found the two drivers only when it could check the web. A small CD with drivers was also provided. Total time about 5 minutes and another 10 or so to connect my serial modem and check it worked. It installed it as Serial port 4. I repeated it on the laptop taking a bit less time although I had to change the allocated port (13 which was beyond what the GPS software could handle) by Control Panel -> System -> Hardware -> Device Handlers and Properties of the device -> Port Settings -> Advanced - fortunately ports 1 and 2 were free although all higher ports had been allocated already.

Ubuntu Linux: I plugged in the cable and nothing seemed to happen and I then had to find out a way of deciding if it had installed - which I did not really believe - it was too easy! I looked in the Device Manager and there was evidence that it had done something as there was new 8-bit FIFO so a quick look on the Internet provided a couple of commands which could be run to find out more namely lsusb and dmesg. The first produced a few lines which showed that the device had been identified and the second produced far more output, most of which I could not understand, but repeat runs with and without the device plugged in convinced me it was worth fetching my serial modem to use as a test. The output also indicated the device was detected as an FT232BM made by FTDI and installed as /dev/ttyUSB0 and watching the /dev directory showed it coming and going as one plugged in and out. The modem was also detected and I set up Networking to use ttyUSB0 and worked fine on a short trial. If I had been more confident and known where it would be installed it would have been easier and much quicker than Windows XP.

Although Ubuntu came out ahead for ease and speed I must admit that I had chosen a device with a FTDI chip knowing that they were more likely to be supported. Time was taken going up a learning curve as there was ten years to one week difference in experience, even so the complete investigations and trials on two machines to working solutions on both were completed in only just over an hour after delivery - this write up has taken longer!

Epson Printers, Scanners and 'All-in-Ones' under Ubuntu Linux

This is an update on my earlier Howto which described the steps necessary to use the Epson Perfection V200 Photo scanner with Ubuntu Hardy Heron which was based on an excellent Howto in Uellue's Blog. I have been using the V200 now for 3 years mostly under Ubuntu Lucid 10.04 and have had an Epson C66 printer for even longer which finally died and led to this update.

Epson SX515W All-in-One Multifunction Printer/Scanner

It is now very difficult to buy stand alone Printers or Scanners - most are 'All-in-One' Multifunction Devices. My old Epson C66 printer has been used via a wifi router as a wireless device so I looked for a printer offering wifi operation supported under linux. The other and main criterion was that I could get cheap ink cartridges. My hasty search led me to Epson once more and the SX515W printer was reduced in price at Argos to £59, offered Wifi and used the T0711 series of cartridges with the black available at 7dayshop.com for £8.99 for 10 and a full set including colour for £5.99 one off. But above all Epson offer good Linux support through their web site for both Printing and Scanning.

Wifi Setup on the SX515W - control panel details will be specific to the SX515W.

The SX515 is one of the modern Epson Printers which already has support built into Ubuntu for normal operation so although I downloaded ESC/P drivers from the Epson site for the first machine I found it was not needed on the others for direct USB cable or Wifi operation. In fact the majority of the work was in setting up the SX515W to connect to my Wifi Network via the small built in screen and keys - 26 long WEP key was a pain! The procedure is Setup -> Network Settings (two right arrows OK) - > Wireless Lan Setup (OK) -> Setup Wizard (OK) and follow instructions - you can Back out any time. The only difficult entry is the WEP or other key as the Menu key is used to select between Capitals, Lower Case and Numbers then the arrow keys and OK for the entries - all 26 in my case. I used an IP provided by DCHP but should have used a static one as next time the Wifi box is reset the IP may change so you need to know the range of IP addresses for your Wifi and choose one just outside or at the top of the DCHP range. The Wifi light should now be on. Once you have finished you can check the settings any time by Settings -> Network Settings (two right arrows OK) -> Confirm Settings (two down arrows OK) and scroll down through ( down arrows) then Back(s) till out of settings.

Epson Printer Drivers - should cover most if not all Epson Printers

The Printer and all other drivers are available on the Avasys - Epson Japanese vendor's site - this is much easier to navigate than it used to be but there are still a few things to note. Firstly there are several drivers for printers available in different sections. I loaded the driver from the link to Epson Inkjet Printer Driver (ESC/P) for Linux rather than follow the All-in-One Link as that was what I had used in the past. That presented a huge list and I picked the SX515W link and downloaded and double clicked to install it. That went fine. Later on I followed the links to All-in-One Printers and the print driver there would not install due to a dependence problem - there were scanner drive options to get round the problem with late copies of Ubuntu but not for the printer (but http://avasys.jp/eng/linux_driver/faq/id000613.php may give a way forwards). When I plugged in the USB connection the printer was installed automatically with just a notification - Linux has come a long way. On the first machine I did the driver install for Wifi using System -> Administration -> Printers and + Add Printer and then set up by hand. The next time I found that just selecting network was sufficient for it to go away and find the printer under 11.04 and I confirmed the same happened under 10.04! Forward then took me to an automatic search for the driver and all left was to edit any descriptions - I changed the port number to just be Wifi in the description. All trivially easy.

Epson Drivers for Scanners and Scanner functions of All-In-One Multifunction Printer/Scanners.

I have only tried these procedures on two scanners but other Epson scanners should work in a similar way, there is a list of supported devices on the Epson web site. The drivers provides support for 8 bit and 16 bit colour depth and 300, 2400 and 4800 dpi resolution when used by GIMP through Sane and an ImageScan! for Linux Scanner package from Epson.

Firstly a number of Ubuntu packages need to be added via System -> Administration -> Synaptic package manager and Search for each package and Install it. The packages are:

All the drivers are available on the Avasys - Epson Japanese vendor's site. Choose your scanner/multifunction scanner/printer and your distribution, fill out the small questionnaire and submit the form. You are directed to a download page.

From now on it will be a little different for a pure scanner or an All-in-One multifunction device

Scanner Only Example V200

To install the three .deb packages either just double click them or use dpkp from the folder containing them - note the iscan-data must be installed first and that you need the package with ltd7 in the name - the version numbers will probably have increased:

sudo dpkg -i iscan-data_1.9.0-1_all.deb
sudo dpkg -i iscan_2.26.4-2.ltdl7_i386.deb
sudo dpkg -i iscan-plugin-gt-f670_2.1.2-1_i386.deb

The third iscan-plugin package is a scanner specific extension only required for some scanners, most do not need it.

Multifunction Printer/Scanner Example SX515W

This part of the web site also offers print drivers but they need an extra library not in latter versions of Ubuntu as it has been superceded so use the ESC/P printer as described above in preference (although http://avasys.jp/eng/linux_driver/faq/id000613.php may give a way forwards if you want to experiment)

Now you need to download and install the scanner driver files. The procedure is well documented but note the one with iscan-data must be installed first and that you need the iscan package with ltd7 in the name.

sudo dpkg -i iscan-data_1.9.0-1_all.deb
sudo dpkg -i iscan_2.26.4-2.ltdl7_i386.deb

You will note that the files in this case are the same as for the V200 and in the case of the SX515W a plug-in is not required.

There is no mechanism to update these files and the only way is to uninstall the old version and install the new from the .deb. After doing that I found the set up above runs both my scanners, depending on which is plugged in/turned on, through 'ImageScan! for Linux' but we are getting ahead of ourselves.

There is a third file available for download to enable one to access the scanner via Wifi. I have not installed it as there seems no point in scanning remotely - I use USB cables to the desktop machine closest to the scanners and plug/turn on the one I want to use. If I need to scan onto a laptop or netbook I can carry it to the scanner.

Common to both

Now plug in and switch on the scanner and use lsusb in a terminal which should show the scanner. The output will look like this for V200:

pcurtis@triton-ubuntu:~$ lsusb
Bus 004 Device 003: ID 04b8:012e Seiko Epson Corp.
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
pcurtis@triton-ubuntu:~$ ]

Now use the utilities from sane-utils in a terminal. First use sane-find-scanner to check whether Sane finds the device. With scanimage -L you can find out if the driver is properly installed. The output looked like this for the SX515W

pcurtis@triton-ubuntu:~$ sane-find-scanner

# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04b8, product=0x0856) at libusb:001:005
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.

# You may want to run this program as root to find all devices. Once you
# found the scanner devices, be sure to adjust access permissions as
# necessary.
pcurtis@triton-ubuntu:~$ sudo scanimage -L
device `epkowa:usb:001:005' is a Epson Stylus NX510/SX510W/TX550W Series flatbed scanner

Requirement to be member of Scanner Group: Depending on your exact installation only root may have access to the scanner although my original user was already in the scanner group. To allow other users to access the scanner, they must be members of the scanner group which has been renamed to saned in 9.10. You can do this by using System -> Administration -> Users and Groups -> Click to Unlock -> Groups and look for scanner or saned -> Click Properties and tick your username. You then need to reboot after adding the extra member. Under Precise you van not access these Windows but users with Adminastrative rights should be OK.

After that my scanner works fine and can be accessed via GIMP and can also be accessed directly by xscanimage or xsane. Ubuntu and the new driver package between them give you two direct routes to scanning from the Applications -> Graphics menu - Xsane which is a multiwindow application with many options and tweaks to the scan and a simpler package ImageScan! which seems to be part of the Avasys Driver download, to quote Avasys:

Image Scan! for Linux

You will find Image Scan! for Linux has been installed under Applications -> Graphics at the same time as the Epson Scanner Drivers. It makes it easy to obtain high quality images on Linux with an EPSON scanner. It:

Scanning over the Network with Image Scan! for Linux

I expected this to be a major issue but the Instructions on the Epson web site seemed clear and it all worked first time for me. The following is my version of the Epson instructions.

  1. If you already have an earlier version of Image Scan! you will need to uninstall it using the synaptic package manager before you can install the latest version.
  2. Download and install the latest version of Image Scan! including the iscan-network-nt plugin version appropriate for your system from here
  3. Configure your device for network access if you have not already done so for a printer and find out the IP address of the device. I have covered all this for the SX515W above for Wifi printing.
  4. Configure Image Scan! for Linux to connect to your device by editing /etc/sane.d/epkowa.conf. You need administrative privileges so the best way is to open gedit in a terminal by:

    gksudo gedit /etc/sane.d/epkowa.conf
  5. Read the instructions in the file about network configuration and add an entry for your device. I only needed to add the single line net which you will need to change to match the IP address of your scanner.
  6. Finally Epson recomend disabling the epson2 SANE backend which can cause conflicts. You can do so by changing the line consisting of epson2 to "#epson2" in /etc/sane.d/dll.conf. The terminal command to open the file is:

    gksudo gedit /etc/sane.d/dll.conf

Now when you run Image Scan! it uses the Wifi link. You can only access it from one machine at a time which should not also have a USB link.

Conclusions on Epson Drivers for Linux

Epson are obviously trying very hard to support all their printers and scanners including the multifuntion printer/scanners which have been a problem in the past. The terms and conditions seem to be consistent with true Open Source Software. One wishes everyone else gave such good support.

Installing on a Legacy Laptop - Toshiba Portege 3440

Having had so much success, I spent some time working out how to install Ubuntu on my old but much loved Toshiba Portege 3440CT. It has been upgraded to a 30 Gbyte drive and 192 Mbytes of Ram with a 500 Mhz processor but it is below the recommended specifications. Despite that it ran the Dapper Drake LiveCD at a reasonable speed especially after I had created a Linux Swap File - the LiveCd will use any Linux Swap files it locates - an undocumented facility. As this runs under Dapper Drake I have removed the details from here but they are still accessible at Fun with Ubuntu Linux - Dapper Drake

Disabling Suspend and Hibernate in Ubuntu Linux

There are some better ways of disabling Hibernate under Mint which are in the pages on the Defiant and Helios ????????Update links??????

I had problems when testing suspend and hibernate on the Portege which resulted in some very peculiar happenings. It is also a recipe for disaster to use hibernate on a dual booted machine. GNOME contains a database for storing your preferences called 'gconf, which is a similar database to the Windows registry.

There is a Configuration Editor Program for Gnome which can be accessed via Applications -> System Tools -> Configuration Editor to easily make changes for the current user. To make global changes it is best called in a terminal by:

sudo gconf-editor

Navigate through the left hand tree to apps -> gnome-power-manager. Find the options named 'can_hibernate' and 'can_suspend' and uncheck them both.

Right-click on each in turn and click Set as Mandatory to make sure that it applies to all users then exit the Configuration Editor. Changes will not appear until after a reboot.

Suspend and Hibernate bug workround

There is however a bug in Karmic and higher https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/432598 which means that the suspend/hibernate disabling through gconf-editor do not work. The following is a short term fix from http://ubuntuforums.org/showthread.php?t=1305081 and extra information in https://bugs.launchpad.net/ubuntu/oneiric/+source/gnome-settings-daemon/+bug/860485 the options still show up in the menu but if you click on one of them it just locks the screen. The following is correct for Lucid to at least Oneiric:

sudo gedit /usr/share/polkit-1/actions/org.freedesktop.upower.policy

And change the code:


entries for suspend and/or hibernate to:


and restart.

The following shows results:

pcurtis@matrix:~$ pkaction --action-id org.freedesktop.upower.suspend -v
description: Suspend the system
message: Authentication is required to suspend the system
vendor: The UPower Project
vendor_url: http://upower.freedesktop.org/
icon: system-suspend
implicit any: no
implicit inactive: no
implicit active: no

Motherboard and SATA drives (initramfs and busybox error running LiveCD or booting)

It is possible that one can not even start up with a Hardy Heron LiveCD with some motherboards, BIOS and SATA drive configurations. At an early stage one is dumped into a terminal with a statement about busybox and initramfs. This is unlikely and has only happened to me once and all is not lost as there are various options at GRUB boot time which can be appended to the startup string. There has been much discussion and it still comes down to trial and error but the most likely string is:

all_generic_ide floppy=off irqpoll

Some other options mentioned are:


Timer/acpi errors may respond to:


The proceedure is:

When you boot the LiveCD and it askes what to do, press F6 and add the chosen option string(s) after quiet splash, so for example it looks like

quiet splash all_generic_ide floppy=off irqpoll

After you have installed Ubuntu you may have the same problems when Grub runs. If that is the case on rebooting wait until you get to the GRUB menu, hit esc and then hit the "e" key and arrow down to the kernel line and hit "e" again, then enter all_generic_ide floppy=off irqpoll then hit enter, and then "b" that should get you booted, once booted open a terminal and

sudo gedit /boot/grub/menu.list

find this line:

# defoptions=quiet splash

edit it to look like this

# defoptions=quiet splash all_generic_ide floppy=off irqpoll

save your changes and exit gedit,

then in the terminal do:

sudo update-grub

and it should all be sorted at the next boot!


Some Useful Tips and Scripts

The following are a miscellaneous selection of useful tips, in particular ones to do with configuration, and a collection of scripts to carry out a few of the more common activities.

Put a Trash Can on the desktop:

Ubuntu has an option for adding a Trash Can icon to the desktop. Open a run dialog by Alt+F2 and open the Gnome Configuration Editor by typing:


Now browse down to the apps \ nautilus \ desktop key amd on the right hand side, you'll see an entry called trash_icon_visible. Just check the box - you can also change the trash_icon_name to Recycle Bin if you have a Windows background! You can also add your Home Folder and there are many other useful changes you can make using gconf-editor which are not accessible in the programs but without having to edit configuration files if you explore - try searching for a program name using Edit -> Find

Or use one of the Tweak tools

Available in the control panel if you are using Mint

Turning off a Synaptic's touchpad tap-to-click feature.

There is also a program called gsynaptics which allows you to control the touch pad via a GUI interface which can be installed via the Synaptic Package Manager and search for gsynaptics. It is accessed via System -> Preferences -> Touchpad.

A terminal command to Search for and Replace a character string in a folder of files

Searching and Replacing is one of the more common activities, both in a single file and in a folder of files of the same type. Linux provides a Stream EDitor (sed) which can search for and replace a search string with replace string throughout a file. A example of use on a single file follows. The -i (in place) parameter carries it out in the same file.

sed -i 's/searchstring/replacestring/' filename

The sed command can also make a backup automatically - if you follow the -i parameter with a string it will add that to the filename when it makes the copy. The following line is my actual test and you will note that I have added the time and date in the backup name to avoid overwriting the original if I run the command several times by accident or to refine the search - perhaps even more important is that it provids an audit trail of changes.

sed -i.bak_`date +%d-%m-20%y_%H%M-%S` 's/sounds and music/SOUNDS AND MUSIC/' search_replace_test

The above is a single line which must not be split if you do a cut and paste from a display on a small screen. The quotes round the date command are back ticks `` which are usually at the top left on your keyboard and are used to evaluate the expression within them. Do a man date to understand the format parameters used by the date command. The next set of quotes are ordinary single quotes and are needed if the strings contain spaces.

What I have called searchstring above is actually a regular expression and can be very complex - one simple addition is a ^ at the front which forces the match to be at the start of a line.

We will now look at how to wrap this to carry out the search and replace on a whole folder. This is a very useful activity and another example of the power of linux commands especially when piped together.

find ./ -type f -exec sed -i.bak 's/searchstring/replacestring/' {} \;

This command visits everything in . ( your current folder when it is run) and it’s subdirectories, and makes the substitution in files. This line has two main parts - the find command whose -exec parameter executes the following sed command for every file that is of type f (normal file). The string {} is replaced by the current file name matched by the find. The final ; (which has been escaped by a \ so it can be used in scripts) terminates the -exec . Take great care when testing this command and never add a sudo in case you change every system file on the machine. Note that the backup is created whether changes are made or not. Replacing -type f with, for example, -name *.htm will limit the damage to .htm files!

If you are using this within a script you may need to look at man find and make use of $HOME and put the {} in quotes like '{}' to avoid the script processor misinterpreting the brackets. I have not experimented with using find in scripts yet!

A Script to make a backup of a file with date and time in the backup name

The techique to make backups in my search and replace command led me to create a simple script to make a backup of a file the new name including the date and time:

# Script to copy single file to the same name with ending in .bak_date_time
# Addition arguments to cpbk are ignored.
# Lives in ~/bin/cpbk where it must be given execute permissions
# and ~/bin should have been be added to to #PATH in ~/.bashrc
# If you wish to use it on system files using sudo in must also be in /usr/bin
# with ownership changed to root and given execute permissions
arg2="$1.bak_`date +%d-%m-20%y_%H%M-%S`"
cp "$1" "$arg2"

Note that my script files are self documenting. Script files need to be made executable (Right click -> properties and tick box near bottom) and also need to be files with unix line endings - bash hates windows files and the scripts do not run properly. If you ever get a file with Windows line endings which can happen when you download a script then create a new file under Linux and copy and paste the old contents into it. The task for the reader is to add a check if a backup file exists and the first time just call it .original

Changing the name of a user (Advanced)

This is much more difficult than one might imagine but there is a utility which does the basic work and updates many of the files but only in the home directory.

Code to change a username - user must not be logged in if numeric uid changed

usermod -l <newname> -d /home/<newname> -m <oldname>

-u accepts uid as parameter, and you can move the directory by using -d with the -m

Also, you may want to change the group name - by default the group name is same as user login

groupmod -n <newgroup> <oldgroup>

Note: This does not sort out addresses which are hard coded which are used by Wine and some mozilla profiles

Changing the Computer name

This is stored in /etc/hostname so this is a very easy change in a terminal

sudo gedit /etc/hostname

You also need to change the occurance in /etc/hosts by:

sudo gedit /etc/hosts

GUI alternatives to The Terminal

It is interesting that the commonest objection to Linux is that newcomers believe they have to use a terminal for many operations. It is often the best, simplest and safest way when you ar familiar with it but you almost everything in a GUI with a few tricks. Firstly you will need to be comfortable with right click menus as they will be used extensively to access operations from a GUI interface which would otherwise be done in a terminal. Mostly we will be working from the file browser rather than a terminal which is fine if one is working on ones own files and in ones own home folder - but what do we do if we want to work on system files owned by root? In a terminal we put sudo or gksudo in front and after entering a password we can temporarily run commands as if we were the root user. The trick if you want to work on the system files from within the file browser is to start up the file browser useing sudo so from then on every activity from within the file browser is done as if you were root including opening the text editor for editing system files and setting the permissions, ownership etc of a file via properties. This is very powerfual and also very dangerous if you forget that you are 'root'. All you need to know is the the command to open the file browser is nautilus and you can then open the browser (nautilus) as root by typing the following command in a terminal.

gksudo nautilus

But you you say, we are still using a terminal! If you are using an early version of Ubuntu you can get round it by to creating a 'Launcher' on the desktop or in a panel by

Right click on an empty bit of desktop
Click Create Launcher
Leave Type as: Application
In name enter: Root File Manager
In Command enter in lower case: gksudo nautilus
In Comments enter: Herein lie Demons - you will be running as Root - if you do not understand that back off!
Click OK

You can do the same sort of thing to add it to the Application Menu under System after Right click on Applications -> Edit Menus

In Mint you will find there is already a right click item in the file manager (nemo) to open a folder as root.

But what do I do if I have a Ubuntu 12.04 with the Unity Desktop to open Nautilus (the file manager/browser) as Root?

This is a chicken and egg situation as Ubuntu 12.04 Precise Pangolin now uses Unity and no longer offers the facility to create a launcher or equivalent. You have to install some additional 'Tweaking' software which requires you to use a terminal to load it! The software needed Ubuntu Tweak is not in the main Ubuntu Repositories - it is in what is called a PPA - so there is no way round the need for a terminal to load it. It is however quite simple - all you need to do is to open the terminal (start to type terminal in the Dash to find it) and cut and paste the following three lines. You will need to do one 'Enter' and answer y and Enter to another question as it installs it all - but that is not too bad is it?

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

You can now start Ubuntu Tweak from the Dash - when you start to type tweak it will appear.

Ubuntu Tweak has many useful features but for now we just need to go to Admins -> Scripts (under Personal) and you will see a long list on the right hand side. Drag Browse as Root to the left hand side and thats it. You can now close Ubuntu Tweak.

Now when you right click anything you will find a new item called Scripts on the menu and in that you will find Browse as Root which opens nautilus, the file browser, as Root.

There are lots of other useful scripts available that you can add to the list

Using the file manager (browser) as Root

So how does this work in practice? In setting up Ubuntu the way I want I have to back up then edit about 7 system files owned by root so I open my file browser as root using the launcher we have just made, enter your password and navigate to the folder holding the file. I use the drop down at the top right to put the file browser into the 'View as Icons' view. If the file is a hidden system file starting with a dot then you also need to do a Cltr h to display it. I now hold down the Ctrl key and drag the file I want to work on to an empty space - this makes a copy with (copy) added to its name. I now right click on the original file and click Open which will bring up a box offering to run in a terminal or display - we want Display which will open a text file in the text editor (gedit) as root so we can now make the changes we want and save then. We then close the text editor and then the file browser and that is it.

WARNING Be careful how you delete files when running as root in a GUI as they can go into roots Deleted Items folder which you have no easy way of emptying without loading and using a special tool in a terminal which defeats what I am trying to do here! Mint has two right click delete options, one goes to the recycle bin, the other deletes ireversibly after a warning which is best if you are using root

Setting up and using Scripts

Scripts are a very powerful feature of Linux. At their simplest they enable you to carry out any sequence of commands you could run in a terminal and need to repeat but they can also include constants, variables, logic, flow control and functions etc like any other programming language. Script files need to be made executable (Right click -> properties and tick box near bottom) and also need to be files with unix line endings - bash hates windows files and the scripts do not run properly. If you ever get a file with Windows line endings which can happen when you download a script then create a new file under Linux and copy and paste the old contents into it.

At this point I ought to introduce the concept of a shell as it will turn up if you do any reading about scripts. A Linux shell program interprets user commands, which are either directly entered by the user in a terminal, or which can be read from a file called a shell script. Shell scripts are interpreted, not compiled. The shell reads commands from the script line per line and searches for commands on the system which are passed them to the kernel to be run and other scripts which it runs in a sub-shell. In contrast a compiler converts a program into machine readable form, an executable file - which may then be used in a shell script. Don't worry if it does not all make much sense at the moment, you do not need to know even the grossly simplified details I have given above to make use of simple scripts.

It makes life easy if the system knows where to look for scripts, they can then be just refered to by the filename rather than having to explicely provide the 'path'. It is common practice to keep ones own scripts in a folder in your home directory called bin ie in /home/yourusername/bin or to use the abreviation built into the system ~/bin where ~ is short for the path to your home folder. You will meet ~ in lots of scripts so remember what it means - the advantage is not only that it is quicker to write but also that a script is independent of the username it is run from. Likewise . refers to the current folder you are in and .. the folder one level above.

One important piece of information for those who have used other Linux distributions is that the addition of a path to a /bin directory is set in Ubuntu linux in .bashrc not .bash_profile as is described in some places. Also note that files starting with a . are hidden - use View -> Hidden Files in the File browser to find them. The lines I added were:

# Additions to the standard ~/.bashrc file to set up path to
# /bin directory in home folder

Fixes for 'Open Bugs' and Problems Areas in Ubuntu

Problem - Synaptic Package Manager and Gdebi are no longer installed by default

This easy to install either using the Ubuntu Software Center or a apt-get in a terminal and it is worth also re-installing gdebi to load local .deb files at the same time

sudo apt-get install synaptic gdebi

The new Ubuntu Software Center is so unprofessional that re-installing the Synaptic Package Manager is a must and all my descriptions below either use a terminal or the Synaptic Package Manager.

Restoring Ctrl Alt Backspace function to restart Xserver and go to login screen if Unity or Ubuntu Freezes

Unity is sufficiently flaky at present that one needs ways to escape from a major freeze such as restarting the Xserver.

Administration or System Settings -> Keyboard Layout [Settings] -> Options (bottom right corner) -> Key Sequence to Kill the Xserver and tick box for Control Alt Backspace.

Mint is normally set up with this option enabled or it acn be done via the control panel.

Other options before using Ctrl Alt Backspace if mouse click freezes.

I have had a couple of program problems which have prevented mouse actions being accepted.

It is also possible these are because the window is displayed but has lost 'focus' - this is mentioned in https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/772612 which would explain why the re selecting of the window using one of the switchers works.

Solution to Major Problem - Restoring the Notification Area (Systray) for applications when running Unity

Many programs that I use require use of Indicators in the Systray (ie on the top panel) which is blocked by default for most programs by Unity. In my case this prevented use of Truecrypt, Kaffeine and Gnome-ppp to name a few.

There are several places on the web which cover this and the best overall site covering such matters currently is Web UPD8 - there is a good article on How to Re-enable the Notification Area (systray) for all Applications.

First you need to install the configuration tool for the Unity Desktop - the equivalent to gconf-editor for the gnome desktop. Not surprisingly it is called dconf-editor and most of it is very similar - there is however a useful addition of a return to defaults button for each setting. It can be installed in a terminal or you can use the Synaptic Package Manager. In this case I used a terminal to get the overall package of tools but first I had to enable the universe repository and the easy way was to run the Ubuntu Software Centre and use the drop down edit menu -> Software Sources and tick the Universe box on the Ubuntu Software tab - you should also be able to search and install from the Software Centre. If you do it in a terminal then also install the compiz configuration settings manager and gconf-editor at the same time as you will certainly need CCSM latter

sudo apt-get install dconf-tools compizconfig-settings-manager gconf-editor

Now run dconf-editor using the terminal


then navigate to desktop > unity > panel and enter: ['all'] in place of the existing string in Value for the for the Key systray-whitelist by clicking, overwriting with ['all'] and then a return.

Tip Most of the tweak tools described below also allow you to restore the Notification area for all programs

Mint retains a system tray

Bluetooth Bugs

Most of the problems in this section are supposedly address in Oneiric Ocelot and higher but such problems have a habit of returning so I have left them in this write up!

I found great difficulty in making a Bluetooth connection to my mobile phone on searching I found there is currently a problem with Bluetooth see https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/762964 and Bluetooth needs to be restarted after a Cold Boot, Restart, Suspend and Hibernate. This seems to be solved in Oneiric. There are further problems if you want to use Bluetooth to connect to a modem in mobile phone as the devices required are no longer automatically connected so programs such as gnome-ppp will no longer work.

Short-term Bug Fix to allow testing of Bluetooth - Restart Bluetooth in a terminal - should not be needed in Oneiric and Precise.

This is a simple way to allow one to test and use bluetooth but has the disadvantage that a command has to be entered and run in a terminal after every startup, reboot and when leaving suspend and hibernate. It may be an acceptable way to proceed for occasional use if one assumes the bug will be quickly fixed!

Open a terminal by Applications; Search for Terminal and in the terminal enter:

sudo /etc/init.d/bluetooth restart

Bug workaround - A Way to automatically start bluetooth - should not be needed in Oneiric and Precise

I have tried adding /etc/init/restart bluetooth to /etc/rc.local which is run after all other init scripts. This works most of the time at cold starts and restarts but does not work after a return from suspend - there must be a better or extra place to place it for Natty

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

exit 0

Bug workaround - A Way to restart BlueTooth after a Suspend or Hibernate - should not be needed in Oneiric and Precise

I have found out that the scripts which are run on Suspend, Hibernate, Resume and Thaw are in /etc/pm/sleep.d where I created a new file as root called 99_bluetooth-restart and gave it execute permissions. It can be created most easily by starting nautilus (the file navigator) and using right click menus for a new file and then to set the permissions by .right clicking -> Properties -> permissions and setting the execution tickbox

gksudo nautilus /etc/pm/sleep.d

Now we can edit the file by:

sudo gedit etc/pm/sleep.d/99_bluetooth-restart

The contents have to follow a strict format I copied from other files giving:

#This is run automatically after returning from a suspend or hibernate
#It restarts Bluetooth
case "$1" in
/etc/init.d/bluetooth restart

There is a brief explanation of the file format at http://ubuntuforums.org/showthread.php?t=1484156

The end result of the three modifications mean that Bluetooth is turned on correctly with the rfcomm bindings (Bluetooth Device creation) carried out for 95% of the time and an extra suspend and resume will enable it almost for certain!

Problem Area - Not all phone modems are detected by Network Manager and still require use of a dialler applications such a gnome-ppp - still in Precise

The new method of connecting a Bluetooth Modem enabled phone using the Bluetooth Manager and Network Manager described above does not work with fancy phones such as Windows Mobile Devices because it is unable to detect and obtain details of these phones (Windows Mobile phones do not follow the appropriate standards properly as one would expect from Microsoft). You therefore need to use a connection application such as the excellent gnome-ppp which I have been using for many years.

I have found there is yet another problem with using Bluetooth through Gnome-PPP in that the rfcomm devices are not being created in Natty and higher even when Bluetooth running correctly - it took me a while to remember that this is actually a problem I have met before and involving editing a system file in Lucid. I will reproduce the section from Ubuntu on the Move here for completeness:

Fix for a bug where the bluetooth modem (rfcomm) devices are not automatically created (Karmic -> Natty) - should not be needed in Oneiric and Precise

There is a bug (see https://bugs.launchpad.net/ubuntu/+source/linux/+bug/416056) starting in Karmic and the rfcomm devices are not automatically started - so one sets up the configuration file rfcomm.conf but the rfcomm program is not run so the rfcomm devices are not created. You can check by looking in /dev to see if /dev/rfcomm0 is present. The obvious thing to do is to modify /etc/init.d/bluetooth to add rfcomm bind all at the end of the startup sequence and rfcomm release all at the start of the stop sequence. So, in a terminal open the file for editing by typing:

gksudo gedit /etc/init.d/bluetooth

Note that you should make any backup of the file /etc/init.d/bluetooth in a different folder as everything in the init.d folder is run at startup and you will end up doing everything twice in an unpredictable order.

The file /etc/init.d/bluetooth is slightly different from Lucid although the changes are similar and are shown below for Natty.

case "$1" in
#currently this init script exists only because of what appears to be
#an egg and chicken problem
# bluetoothd normally starts up by udev rules. it needs dbus to function,
# but dbus doesn't start up until after udev finishes triggering
log_daemon_msg "Starting $DESC"

if [ ! -f /sbin/udevadm.upgrade ]; then
udevadm trigger --subsystem-match=bluetooth --action=add
log_progress_msg "bluetoothd"

log_end_msg 0

# Additional code to automatically bind the devices set up in rfcomm.conf during startup
rfcomm bind all

# Additional code to automatically release the devices set up in rfcomm.conf when bluetoth stopped
rfcomm release all

log_daemon_msg "Stopping $DESC"
pkill -TERM bluetoothd || true
log_progress_msg "bluetoothd"
log_end_msg 0
$0 stop
sleep 1
$0 start

Running Gnome-PPP under all versions of Ubuntu up to and including Precise 12.04

Gnome-PPP uses the system tray so the fix for the System tray has to carried out before one can run it.

Gnome-PPP - Modifications to PPP Options to prevent timeouts with Mobile Broadband Connections (all versions of Ubuntu including 12.04)

Some modifications are required in /etc/ppp/options as the default settings cause timeouts with some mobile connections. This is a general problem rather than one specific to natty which I have covered elsewhere but will reproduce for completeness.

These settings can not be changed via the Gnome-PPP GUI interface and I change them in the the 'master' pppd (I think that stands for ppp daemon) set up file which is /etc/ppp/options so the changes apply to all users. We can look at the current options which are set by:

sudo egrep -v '#|^ *$' /etc/ppp/options

It is desirable to make a backup before editing the /etc/ppp/options file so to make a copy and open a terminal:

sudo cp /etc/ppp/options /etc/ppp/options_bak
sudo gedit /etc/ppp/options

I normally make three changes to the file. The first two are essential for most GPRS connections and disable the sending and checking of the echo response sent to check the connection is alive - the echo is not implemented by most mobile service providers and the default result is that 4 echo response requests are sent at 30 second intervals and after the 4th failure to receive a response the connection is broken. If you are disconnected after 2 minutes that is the cause. The new values of 0 inhibit the sending and checking:

lcp-echo-failure 0
lcp-echo-interval 0

The third change is essential, as far as I know, for the Vodafone PCMCIA Connect Card but does not impact other connections significantly so I do it routinely so I do not forget. It involves disabling negotiation of Van Jacobson style IP header compression by un-commenting


I have also tried modifying the /etc/ppp/options file to add an extra delay before connection as I was sometimes not getting a correct DNS delivered using gnome-ppp with the Vodafone but it seems to have little benefit but you can try it but only if you have problems as it will slow down making all connections.

connect-delay 5000

Note the information in the /etc/ppp/options file does not recommend that changes are made in this file. The documentation ( man pppd ) says that if there is a file ~/.ppprc which is used for user default options which could be used instead of modifying /etc/ppp/options - I have not tried that method as the simple way works for me and gives me a working system. I have the attitude that "if its not broken don't fix it" and this way works for all users. The changes in /etc/ppp/options were not overwritten during a Distro Upgrade

Once all these fixes were complete I can use the T610, O2 XDA Exec and Palm to connect to the Internet via bluetooth just as I could on earlier versions of Ubuntu. There are a number of special techniques needed to use the XDA and Palm because they run Windows Mobile 5 which does not follow the 'rules'. This is why the new methods using network manager do not work - Windows Mobile Phone are not detected properly by Ubuntu Natty 11.04 but manual access via Gnome-PPP is fine.

Workround for potential problem - Sun (Oracle) Java is no longer available in the Official Ubuntu Repositories

This is actually not a problem with Unity but general to any update to Precise Pangolin. The Java now used by default is the Open Source rather than Sun Version which is no longer in the official repositories due to problems with licences. In any case Oracle (Sun) Java 6 reaches its End of Life in November, 2012. In addition versions of Oracle (Sun) Java 6 that have been distributed in the past are vulnerable to security exploits. See https://help.ubuntu.com/community/Java. It is therefore not advisable to install Oracle (Sun) Java 6 unless you have some specific need to do so and it is recommended that users either migrate to OpenJDK, or switch to Oracle Java 7. I can see no reason not to use the OpenJDK and versions 6 and 7 are available. Currently it is recommended that you can install the latest OpenJDK Java 6 Run Time Environment and Browser plugin by:

sudo apt-get install openjdk-6-jre icedtea6-plugin

If you have a program which just will not run using the Open Source version the Sun version 6 is available from a private PPA and I have covered the installation fully in Installing Sun Java in Fun with Ubuntu Linux

Wine is Corked - still the case in Precise

There are several serious problems with use of Wine under Unity and Mint

Launcher Item Anomalies using Picasa and any other programs running under Wine - the solution below still works in Precise

Unlike the problem above, this is a serious problem rather than an inconvenience and needs a workaround to make Wine usable. If you have more than one program available to be run under Wine (ie with launcher files (.desktop) in ~/.local/share/applications) the Unity Launcher display seems to get confused about which Wine application(s) are running. Picasa seems to be a good example of the effect for me and initially showed up as another window of Dreamweaver or Paint Shop Pro 4 with an extra tick at the side of their launcher item if one of them was already running - definitely some bugs here! Clicking the launcher item led to the display of the two windows running the completely different applications. Picasa and other Wine applications, when started, would often display the launcher item for a different Wine application. This did not seem to be documented as a bug anywhere although I found a reference somewhere to some similar effects having been seen with java programs using a different 'dock' to Unity. I reported this bug at https://bugs.launchpad.net/unity/+bug/799023 which has been marked as a duplicate of https://bugs.launchpad.net/unity-2d/+bug/702452/ and I am still putting my input in there. Even the description of the bug has been changed over the last year and it is an ongoing situation so you should check https://bugs.launchpad.net/unity-2d/+bug/702452/ before implementing changes in case it has been solved!

I think I have found a workaround for this strange effect after a lot of experimenting and I have carried out the final procedure on a second machine with success [ click here for the full story and steps I took. ] The following section gives a reasonably full description of what to do.

The problem only seems to occur if any of the launcher files (.desktop) in ~/.local/share/applications and its subfolders contains a line specifying a StartupWMClass=Wine and these lines all need to be deleted, commented out (with a possible exception of Picasa - see below) or best given a unique value such as the executable for the program. You can edit the files using a right click menu in the file browser (nautilus) and need to open them using gedit (the text editor). You do not need to be running as root as they are files local to you as a user but they are in a hidden folder (Ctrl H will reveal hidden folders and files in the file manager). You need to logout and back in to see the effects. It may be easiest to make a copy of ~/.local/share/applications, delete the wine subfolder which contains these files and then drag back the just the launchers you need. Then modify them by opening within gedit and commenting out the relevant lines. - A typical basic launcher file for a Wine program (in this case Notepad++) now looks like:

[Desktop Entry]
Exec=env WINEPREFIX="/home/pcurtis/.wine" wine "C:\\Program Files\\Notepad++\\notepad++.exe"
Path=/home/pcurtis/.wine/dosdevices/c:/Program Files/Notepad++/localization

The change is in red.

Note: None of the changes seem to come into effect until a logout/login sequence is done as Unity seems to do its matching when it is first run.

Background: The definitive source for the Specification of Desktop Entries is http://standards.freedesktop.org/desktop-entry-spec/latest/index.html

Picasa: The Picasa launcher is different if you install the linux version and calls a script /opt/google/picasa/3.0/bin/picasa rather than directly launching the program and does not have a StartupWMClass=Wine anywhere I can find in the picasa script or any of the other script files in the folder. There is no picasa.desktop file in ~/.local/share/applications - it is in usr/share/applications Initially I found that removing the lines from all the other .desktop files was sufficient to allow picasa to be used normally but the latest combinations of wine and unity on one of my machines started showing Picasa running as a Wine Launcher Application. I am not sure exactly where and when this new 'feature' arrived or if this is a side effect of changing absolutely all the other wine launcher files with the procedure below. I have found that one now has to copy the picasa.desktop file from /usr/share/applications to ~/.local/share/application and add the line StartupWMClass=Wine to the bottom of it to prevent it showing up as a Wine Launcher in the Unity Launcher - another little mystery! I added the line with a space at the beging to prevent the procedure below commenting it out again. It is possible that just defining any unique StartWMClass for Picasa (such as picassa.exe) is better but I am only reporting what I have found to work.

Automated Procedures to Search for all Lines containing StartupWMClass=Wine and comment them out (Advanced).

It is a tedious procedure to find and open for editing all the launcher files for Wine Applications so I am developing a way to search the .desktop files using a single terminal command line and add a # at the start of all every StartupWMClass=Wine line. It searches for lines which start with the string to avoid adding successive # symbols if it is rerun. Before doing such a large and potentially damaging operation you must backup the folder and preferably the whole machine.

First do the following in a terminal to see how many StartWMClass lines will be found. Note these lines for the terminal may have wrapped round in your browser - they should be single lines and should be cut and pasted in total

cd $HOME && find $HOME/.local/share/applications -name '*.desktop' -exec cat '{}' \; | grep StartupWMClass

When you are sure what is going on you can do the search and replace:

cd $HOME && find $HOME/.local/share/applications -name '*.desktop' -exec sed -i 's/^StartupWMClass=Wine/#StartupWMClass=Wine/' '{}' \;

Then repeat the earlier check to see that all the lines are now commented out.

You may wish to modify the commands for Desktop for launchers as well.

cd $HOME && find $HOME/Desktop -name '*.desktop' -exec cat '{}' \; | grep StartupWMClass

cd $HOME && find $HOME/Desktop -name '*.desktop' -exec sed -i 's/^StartupWMClass=Wine/#StartupWMClass=Wine/' '{}' \;

These commands are good examples of the power of linux when you are piping the output of one sophisticated command on to another - sed and find justify big manuals for themselves and the regular expressions used merit whole books. For a simple explanation of how the search and replace works see www.pcurtis.com/ubuntu.htm#find_replace_in_folder noting the ^ is to only search for the string at the start of a line and the cd $HOME ensures that the commands are run from your home folder - this seems to be required for the checking command to work. If you are using this within a script you may need to look at man find and use $HOME instead of ~ and put the {} in quotes like '{}' and escape or quote where wildcards like * are used to avoid the script processor misinterpreting the brackets - I have tried to do all that but have not yet experimented with wrapping these in scripts and if you do the checking command is the safer one to try it on!

Addition Problems first apparent in Precise

Programs not remaining in Launcher after logout

I have found an additional but related problem in 12.04. Even when a program displays the correct icon when you start it one can not permanently hold it in the Launcher. It will stay until one does a restart but after that it has disappeared.

The problem is only present when the launchers are in a subfolder of ~/.local/share/applications as are most wine applications which are in subfolders of ~/.local/share/applications/wine .

The workround is to copy or move them to ~/.local/share/applications

Launchers copied to the desktop also seem to work as long as there is also a copy in ~/.local/share/applications

Incorrect matching when Wine program started from file association

Even when everything seems to work fine from the unity launcher you do not always get the correct matching if you start from a file which is associated with the program. ie if I right click on a .jpg file and open it with Paintshop Pro if turns up in the Launcher as Picasa or with a Wine Icon depending on which machine I am using. I have tried defining a different StartupWMClass= for each program and placing them in~/.local/share/applications but even that still does not always give the correct behavior for starting a Wine program from an association.

New Firewire stack does not work with some old Pinnacle Capture Cards

This is a problem common to all Ubuntu Flavours. There is a new firewire (IEEE1394) implementation in 11.04 and higher and the old one is no longer available. My Firewire card was detected but the whole machine locked as soon as I plugged in a device. It took me a while to find a solution and I had to capture video by running an earlier LiveCD. In the end I found this is a known problem and is mentioned in https://ieee1394.wiki.kernel.org/index.php/Juju-Migration and is a problem with some Pinnacle firewire cards and a few other less common interface controllers chips/cards. What fooled me was the kernel only panics when the Firewire device is pluged in and detected. I have therefore got another couple of old PCI Firewire cards out of the cupboard and they both work fine.

Fine Tuning

Moving the Minimise, Maximise and Close buttons to the right.

Since Lucid, Ubuntu has chosen to move the buttons to the left as in Apple rather than the right. To restore the usual placement then in a terminal do


and follow apps -> metacity -> general and change the button_layout value to menu:minimize,maximize,close

In Mint this is part of the Systems Settings (Control Center) screens


In Precise you need a Tweaking Tool to change most of the settings including the theme - Ubuntu Unity How to Tweak Specific Configuration Settings

I do not like the very dark Ambience theme and prefer a blue one but I found many of the themes that were in previous versions had been lost. I found many can be loaded using the Synaptic Package Manager or apt and this terminal command will load a lot of useful ones at the expense of 50Mbytes of disk space

sudo apt-get install gnome-themes gnome-themes-extras gnome-themes-more humanity-icon-theme tango-icon-theme tango-icon-theme-extras human-theme tango-icon-theme-common tangerine-icon-theme

Note: The above is a single line when you come to cut and paste into a terminal.

In Mint you can change Themes and load new themes in the Control Center

Updating Your Distribution

Some of the following sections are also covered in Ubuntu All Together - Sharing, Networking, Backup, Synchronisation and Encryption where the emphasis is on backing up and there is more about syncronising with Unison whilst here the emphasis is more on proceedures to safely update a distribution and it ends up with a very detailed proceedure for updating Ubuntu as implemented on my machines which is now slightly outdated as I mostly use Mint. In both cases you may need to change occurances of nautilus to nemo if you use Mint.

Backing up a Home Directory prior to a Distribution Update

Backup using a Standard Tar Archive

There is also a very powerful command line archiving tool round which many of the GUI tools are based which should work on most Linux Distributions. In many circumstances it is best to access this directly to backup your system. The resulting files can also be accessed (or created) by the archive manager accessed by right clicking on a .tgz .tar.gz or .tar.bz2 file. The following commands will back up your home folder /home/yourusername if you change pcurtis to yourusername - all other programs must be closed.

In a terminal type:

sudo tar cvpPzf "/media/DATA/mybackup.tgz" /home/pcurtis/ --exclude=/home/*/*backup*.tgz --exclude=/home/*/.gvfs

This is a single line if you cut and paste. The options cvpzf are: create archive, verbose mode (leave this out after the first time) , retain permissions, -P do not strip leading backslash, gzip archive and file output. Then follows the name of the file to be created, mybackup.tgz which in this example is on an external USB drive called 'DATA' - the backup name should include the date for easy reference. Next is the directory to back up, in this case /home/pcurtis). Next are the objects which need to be excluded - the most important of these is your back up file if it is in your /home area (so not needed in this case) or it would be recursive! It also excludes the folders (.gvfs) which is used dynamically by a file mounting system and is locked which stops tar from completing. The problems with files which are in use can be removed by creating another user and doing the backup from that user - overall that is a cleaner way to work.

The backup process is slow (15 mins plus) and the file over a gbyte for the simplest system. After it is complete the file should be moved to a safe location, preferably a DVD if you did not use an external device. If you want to do a higher compression method the command "tar cvpjf mybackup.tar.bz2" can be used in place of "tar cvpzf mybackup.tgz". This will use bzip2 to do the compressing - j option. This method will take longer but gives a smaller file. You can run into problems if the file is over 4 Gbytes as most USB sticks and USB drives are formated with a file system called FAT32 which has a maximum file size of a tad over 4 Gbytes so you may need to format an external drive to the more modern ntfs format which which still be compatible with all windows machines. It should take a while to reach that point and when you do you may wish to exclude some other folders such as Music and back that up separately.

You can access parts of the archive using the GUI Archive Manager by right clicking on the .tgz file - again slow on such a large archive. A backup is most useful if you can effectively restore your entire system or data. This can be again done by a few commands but do not try this for fun as it will overwrite the entire part of the Ubuntu file system we archived, thus restoring the older image that we took.The following assumes the backup image is in the root directory of an external drive called 'WD Passport' :

sudo tar xvpfz "/media/DATA/mybackup.tgz" -C /

The restoration uses the options - extract, verbose, retain permissions, from file and gzip. This will take a while because all your files will be overwritten with the versions from the image you previously backed up. The "-C / ensures that the directory is Changed to the root so the files are restore to the original locations.

If the old system is still present note that it only overwrites files, it does not deleted files from the old version which are no longer needed.

If you want to delete the archive file then you will find it is owned by root so make sure you delete it in a terminal - if you use a root browser then it will go into a root Deleted Items which you can not easily empty so it takes up disk space for ever more. If this happens then read http://www.ubuntugeek.com/empty-ubuntu-gnome-trash-from-the-command-line.html and/or load the trash-cli command line trash package using the Synaptic Package Manager and type.

sudo trash-empty

Cloning a user using a backup archive (Advanced)

It is possible that you want to clone a machine, for example when you buy a new machine. It is easy if you have the home folder on a separate partition and the user you are cloning was the first user installed (so the uid and gid are the same and 1000) and you make the new username the same as the old. I have done that several times. You can check all the relevant information for the machine you are cloning from in a terminal by use of id:

pcurtis@mymachine:~$ id
uid=1000(pcurtis) gid=1000(pcurtis) groups=1000(pcurtis),4(adm),6(disk),20(dialout),21(fax),24(cdrom),25(floppy),26(tape),29(audio),30(dip),44(video),46(plugdev),104(fuse),108(avahi-autoipd),109(avahi),110(netdev),112(lpadmin),120(admin),121(saned),122(sambashare),124(powerdev),128(mediatomb)

When you do the initial on the new machine use the same username and password as on the original machine and then create an extra user for convenience for the next stage. Change to your temporary user, rename the first users folder (you need to be root) and replace it from the archived folder from the original machine. Now login to the user again and that should be it. At this point you can delete the temporary user.

I have also tried to clone into a different username but do not recommend it. It is possible to change the folder name and set up all the permissions and everything other than Wine should be OK on a basic system. The .desktop files for Wine contain the user hard coded so these will certainly need to be edited and all the configuration for the wine programs will have been lost. You will also have to change any of your scripts which have the user name 'hard coded'. I have done it once but the results were far from satisfactory. If you want to try you should do the following before you try to log in the first time after replacing the home folder from the archive. Change the folder name to match the new user name and the following commands set the owner and group to the new user and gives standard permissions for all the files other than .dmrc which is a special case.

sudo chown -R eachusername:eachusername /home/eachusername
sudo chmod -R 755 /home/eachusername
sudo chmod 644 home/eachusername/.dmrc

This needs to be done before the username is logged into the first time otherwise many desktop settings will be lost and the following warning message appears.

Users $Home/.dmrc file is being ignored. This prevents the default session and language from being saved. File should be owned by user and have 644 permissions.
Users $Home directory must be owned by user and not writable by others.

It this happens it is best to start again remembering that the archive extraction does not delete files so you need to get rid of the folder first!

Updating your Distribution

The above backup of ones home folder(s) is all in preparation for a distribution upgrade. In theory this is possible without lose of any of your files or configuration - in practice I and others have had some problems especially if you have loaded any addition software via extra repositories or directly via .deb files as the automated update is very good but can not cover every contingency. You should also use the procedure for backing up your home folder if you intend to try the automated system in the Synaptic Package Manager then you have the choice of doing a full reinstall if it is not what you expect. Distribution upgrades only work for a single change of version or to the next Long Term Support version so if you have skipped versions you either need to do a succession of updates or a full system install.

The approach when you do a full install of the system varies a little depending on whether you have created or installed with your home folder /home on a dedicated partition. If you have a separate home partition you should still back it up as above but hopefully you will not need it as you can use the advanced option when the installer gets to the partitioning stage and edit the existing partitions so the mount points are as before and make sure you only format the root partition - this should leave your /home partition intact for when you restart with the new distribution which will find all your old settings for applications even if you have to reload them.

If you do not have a separate /home partition already this is the time to consider generating one and there are full instructions at Moving a Home Folder to a dedicated Partition (Expert level) on you can create one during the partitioning stage of the installation of the new Distribution to make life easy for the future and then use you backup from above to reload it.

My standard procedure splits into a number of parts which I use on all my machines:

  1. I periodically make a backup of my /home folder in a tar archive, as cover above, which should have all the data and configuration.
  2. I keep a record of all the programs, utilities and libraries (packages) I have loaded on all my machines and I have created a script to both load them and as a way of documenting for the future ie as every PPA or other repository is added and every package is loaded, I add it to the script for the future. You can have a look at my script for Lucid Lynx - loadstandardprograms-lucid, for Precise - loadstandardprograms-precise. I have a more recent one one under development for Mint 17 and Ubuntu Trusty called loadstandardprograms-trusty.
    • Note - Script files need to be made executable (Right click -> properties and tick box near bottom) and also need to be files with unix line endings - bash hates Windows files and the scripts do not run properly. If you ever get a file with Windows line endings which can happen when you download a script in your browser then create a new file under Linux and copy and paste the old contents into it.
  3. I have started making use of a tool called y-ppa from www.webupd8.org which enables me to easily load PPAs and also to save a list of those loaded and enables one to reload them which can be used to replace some of the activities in my loadstandardprograms scripts.
  4. I keep a list of packages which have had to be added directly from .deb files in, even worse, had to be built such as special drivers for Wifi, Scanners, Printers etc and I keep all the downloads in a folder so I can access them easily - again it self documents.
  5. I likewise keep copies of all the extensions for firefox and thunderbird - again self documenting and they will update after installation.
  6. I make a copy of the latest version of every system file I have had to edit such as fstab, rfcomm.conf, ppp.conf, menu.list and bashrc etc so again it is self documenting.
  7. Any special set up procedures are documented on my web site, there are a number of examples on this page.

Now when I need to rebuild the system or come to do clean install of a new distribution I can:

  1. Do a fresh install from CD or from a USB stick. On systems with the /home on a separate partition your home folder with all the configuration information for your desktop and programs should be left intact if you make sure you do not reformat that partition during the installation and use the same username as before.
  2. Optional - Carry out any tuning of the Grub boot procedure - This is documented at Customising Grub2 - The new Bootloader rather than on this page as it is rather specialised.
  3. Install all the extra repositories and packages, in my case using the scripts described above in conjuction with y-ppa (The ppa manager mentioned above from www.webupd8.org
  4. Install any extra packages such as Picasa and Truecrypt from the folder of .deb files and install scripts or from the latest copies downloaded from their web sites.
  5. Edit/replace the system files which were changed and check that drives mount and the boot is as you want.
  6. Carry out any special procedures for installing drivers, permanently mounting drives, using modems and mounting Truecrypt volumes without an administrator password etc.
  7. Extra steps needed if you do not have a separate home folder.
    1. Create an extra user with Administrative privileges (so it can sudo), change to the new user, rename your normal user's home folder and replace it with the home folder folder from the tar archive.
    2. Log back into your usual username.
    3. Delete the backup user home folder - use sudo in a terminal or use the proceedures above or you will end up with it root's trash.
  8. Set up File Sharing by Samba in Dash. Samba requires a reboot.
  9. Set up Printers by System settings -> Printers -> Add printer and follow through the screens.
  10. Set up SSH - some system files need to be changed to allow host resolution to work correctly.

You should now be back to where you were.

I have used the same basic proceedure to change partition sizes, add a partition for the /home directory, upgrade from Hardy to Jaunty, Jaunty to Lucid, Lucid to Natty, Precise to Saucy 64 bit and even to move a complete 'user' from a netbook to a laptop all in one operation by using the home folder backup. I have also used it to make the transition and do fresh installs of Mint and create dual and triple boot Linux Mint systems

Files that have to be configured in systems area after an upgrade.

Some of these activities are very specific to my own implementation of Ubuntu and are need of updating now I use Mint. Furthermore a number are machine specific (and marked as such). I plan to update this section when I do an install of Mint 18 in May 2016 but in the meantime it is still a useful checklist of what may be needed.

Files in black means that they will only need to be changed after a fresh install.
Files in Red will also need to be changed after a Distribution Upgrade

  1. sudo gedit /etc/fstab # not changed in Distribution Upgrade # - see www.pcurtis.com/ubuntu-files.htm#permanent_mount
  2. gksudo nautilus /usr/share/fonts/truetype # Changed in Distro upgrade see Adding Fonts in Linux so they are accessible from OpenOffice and Wine
  3. sudo gedit /etc/nsswitch.conf # not changed in Distribution Upgrade see Enabling Hostname Resolution
  4. sudo gedit /etc/samba/smb.conf # not changed in Distribution Upgrade - also see Enabling Hostname Resolution
  5. sudo gedit /etc/ssh/ssh_config # not changed in Distribution Upgrade see Secure access to a Remote File System using SSH and SSHFS (Advanced) and Using Public Key Authentication with ssh, sshfs and unison to avoid password requests
  6. sudo gedit /etc/ppp/options # Changed in Distro upgrade - needed for some mobile connections
  7. gksudo gedit /etc/bluetooth/rfcomm.conf # not changed in Distribution Upgrade - need reduced with normal bluetooth telephone modems www.pcurtis.com/ubuntu-mobile.htm#rfcommcreate
  8. sudo gedit /etc/modprobe.d/blacklist.conf # only for toshiba and Madwifi driver # http://www.pcurtis.com/ubuntu.htm#madwifi
  9. sudo gedit /etc/modprobe.d/blacklist-ath_pci.conf # only for toshiba and madwifi Driver # http://www.pcurtis.com/ubuntu.htm#madwifi
  10. sudo gedit /etc/hdparm.conf # Only for MSI U100 Wind and not generally required # http://www.pcurtis.com/wind.htm#click
  11. sudo gedit /etc/sysctl.conf # Useful on all machines and essential if using a SSD # http://www.pcurtis.com/wind.htm#swappiness
  12. sudo gedit /etc/default/mouseemu # Changed in Distro upgrade # http://www.pcurtis.com/wind.htm#mouseemu

Specifics on partitioning when installing if you have a separate /home partition

Make sure you know which partitions are used for the various mount points before you start. Usually it is obvious from the sizes and file system types but if you are unsure then running blkid in a terminal is also a good way to find out – typical output (on Lucid) looks like:

pcurtis@vortex-ubuntu:~$ blkid
/dev/sda1: LABEL="WINRE" UUID="80AE-9D55" TYPE="vfat"
/dev/sda2: LABEL="WINDOWS" UUID="F6EC309DEC305A57" TYPE="ntfs"
/dev/sda5: LABEL="DATA" UUID="49D3-6030" TYPE="vfat"
/dev/sda6: UUID="8993fcc3-6a5a-4f94-9e6a-c77f5091c1ad" TYPE="swap"
/dev/sda7: UUID="50fca34f-45d2-4231-8663-71ba99fc756f" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda8: UUID="e31b581a-85fa-4681-bf11-aebb9a9656cd" SEC_TYPE="ext2" TYPE="ext3"
/dev/sdb1: SEC_TYPE="msdos" UUID="3934-3935" TYPE="vfat"
pcurtis@vortex-ubuntu:~$ gedit /etc/fstab

combined with looking at your existing file system table (red bits of both) which is /etc/fstab which on my system looks like:

# /etc/fstab: static file system information.
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
# / was on /dev/sda7 during installation
UUID=50fca34f-45d2-4231-8663-71ba99fc756f / ext3 errors=remount-ro 0 1
# /home was on /dev/sda8 during installation
UUID=e31b581a-85fa-4681-bf11-aebb9a9656cd /home ext3 defaults 0 2
# /media/DATA was on /dev/sda5 during installation
UUID=49D3-6030 /media/DATA vfat utf8,uid=pcurtis,umask=000,gid=46 0 1

# /windows was on /dev/sda2 during installation
UUID=F6EC309DEC305A57 /windows ntfs defaults,nls=utf8,umask=007,gid=46 0 0
# swap was on /dev/sda6 during installation
UUID=8993fcc3-6a5a-4f94-9e6a-c77f5091c1ad none swap sw 0 0
/dev/scd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

all should be clear!

Backing up and reloading the entire package list

This is an idea I got from the book Ubuntu Hacks (which is in my book list) as an alternative to my script LoadStandardPrograms . One copies the entire list of installed packages to a file and then loads them all, some 1600, back in - of course most of them will already be there but the system ignores them and just loads the extra 30 packages which should all be in my script with associated dependencies, perhaps 100 in total. It should work well for a reload of the same distribution or a minor upgrade but I would be cautious about a major upgrade. The terminal command to write the list of packages is:

sudo dpkg --get-selections | grep '[[:space:]]install$' | awk '{print $1}' > package_list
The operation is a nice example of piping throuagh a series of programs and redirection of the output to a file. grep selects the lines containing the string 'install' and awk is used to select and print only the first item on each line. awk, with its own self-contained language, is actually one of the most powerful data processing engines in existence — not only in Linux, but anywhere. It allows you to create short programs that read input files, sort data, process it, perform arithmetic on the input, and generate reports, among myriad other functions. To put it the simplest way possible, AWK is a programming-language tool used to manipulate text. When first created, AWK was designed to work in the text-processing arena, and the language is based on executing a series of instructions whenever a pattern is matched in the input data. The utility scans each line of a file, looking for patterns that match those given on the command line. If a match is found, it takes the next programming step. If no match is found, it then proceeds to the next line. This link is a good starting point http://www.oracle.com/technology/pub/articles/dulaney_awk.html . In fact the grep action could also be carried out in awk and when I have more time I might try that out.

The command to read the file back in is also a good example of the power of linux commands and piping output from one into another:

cat package_list | xargs sudo apt-get install

cat is used to send the list through a pipe to xargs which calls apt-get install with parameters made up from the input piped into it. It divides the input into chunks and calls apt-get install as many times as are required.

Whenever I see command lines such as these I look up the various commands using man commandname to see what they do. You will often find that people have piped together a series of simple ways of using the commands which they know and understand rather than save a a few characters by using many options with a single command.

Looking Forwards

Reference Books

I did virtually everything that I have covered above without purchasing any new reference books or even buying any magazines - everything came from the documentation on the Ubuntu web sites, forums and other internet sources plus a very old book on Red Hat Linux 7.2 - a weekend crash course which cost a couple of pounds in an an 'end of line' bookshop many years ago. I have very few books because the only ones worth getting cost to much and even then rarely go into the depth one really needs. Once I was sure I was hooked on Linux and Ubuntu in particular I kept an eye open as some of my web searches ended up pointing to books. I had a look in the huge Waterstones in London at one which had caught my eye on the internet and it seemed to cover a lot, as you would expect in 800 pages, and not be too specific to ubuntu whilst covering the differences. At £35.99 I procrastinated and looked at others including the '100 Hacks' series from O'Reilly. When I got home I checked on Amazon who were offering 40% off Ubuntu Unleashed and above it in the sales popularity list was 'Ubuntu Hacks' I had not seen in the shop - I broke and bought Ubuntu Unleashed and invested the savings into Ubuntu Hacks giving me 1300 pages total of reference material and coverage of problem areas/tweaks. So far I am very pleased with both and they are joining my Special Edition using JavaScript by McFerdries as prime reference material in the 'replace if lost class'. I also had a bargain already on the shelf. The full references are:

Ubuntu Unleashed by Andrew Hudson and Paul Hudson published by Sams (31 July 2006) ISBN: 0672329093 900 pages paperback £35.99 (Amazon £23.75) - solid reference book covering much more than Ubuntu

Ubuntu Hacks by Jonathan Oxer, Kyle Rankin and Bill Childers published by O'Reilly Media (June 2006) ISBN 0-596-52720-9 425 pages £20.99 (Amazon £13.85) - full of useful stuff, both general and specific.

Red Hat Linux 7.2 Weekend Crash Course in 15 hours, Naba Barkakati and Kurt wall published by Hungry Minds (2002) ISBN 0-7645-3642-7 350 pages (£2.00 in el cheapo books) - actually quite useful for non specific background and version comparisons.

As you will see from the dates these are all now very out of date and I have not felt the need to buy books these days

A Roadmap for your future transition to Linux.

I hope that this page has persuaded you that Linux is now a real alternative to Windows - a desirable and arguably essential change if you are going to use use a laptop 'mobile'. Try out Ubuntu Linux with a LiveCD, there is little to lose. It may even work on a machine which no longer runs Windows effectively although you may want to choose a different distribution. Lubuntu has the lowest requirements of the Ubuntu family and Linux Mint with the Mate desktop is another possibility - there are others with even lower requirements but I have not tested them.

Even if you do not change immediately there are some things you can do which will make both your existing computing safer and the transition easier. Avoiding the use of Outlook Express and Internet Explorer and the replacement of a USB ADSL modem by a ADSL/Firewall/Router reduces risks by 4 fold even with good security software. So my beliefs and recommendations are:

  1. Reduce your dependence and use of Microsoft Software and proprietary software and instead use Open Source equivalents available for multiple operating systems.
    • Firefox is better and more secure than Internet Explorer
    • Thunderbird is better and more secure than Outlook Express and its followons
    • Open Office is equivalent to a Microsoft Office Suite and can use compatible file formats
    • The Lighting extension to Thunderbird adds calendars and task management making it is equivalent to Microsoft Outlook
    • GParted is an alternate to Partition Magic
    • TrueCrypt is an excellent Encryption package which can be used under Linux
  2. Change to an ADSL Modem/Firewall/Router/Wifi unit for your connection to broadband - many are under £50 and often have a free Wifi card with them. I use ones from 3Com. This combined interface will allow you to connect many machines by cable and Wifi and, more importantly, give valuable protection to you under Windows and be easy to use with Linux. In contrast the USB modems which you got free from your Broadband provider are soft-modems and will not work easily with Linux.
  3. Avoid buying hardware which you know is Windows dependent such as soft-modems which include most internal landline, USB landline and ADSL modems. Wifi adapters often need firmware loaded but are generally well supported.
    • I you have or find an old fashioned serial external V90 or V92 modem buy or keep it even if you need a USB to Serial converter.
    • Keep any PCMCIA modems such as those from Xircom
  4. Do some checks before you buy your next Laptop, Wifi card/dongle or other hardware. My Toshiba with an Atheros chip WiFi chip was autodetected and set up from the Live CD whilst some WiFi chips such as those from Broadcom are less well supported at the time. A Google search for the hardware including Ubuntu may help.
  5. Think ahead and check other hardware. I deliberately got a USB to serial adapter which I knew was supported under Linux, others are not. Most Printers are supported but combintion Printer-Scanners are less well supported.


The more time goes on the more I believe that Linux distributions such as Ubuntu have now reached the point that they are a practical alternative to Microsoft Windows and offer considerable advantages. This was brought home to me when two of my friends, both extremely careful and professional, contacted me the same day saying they were infected with Viruses on their Windows machines.

I have recently given some lectures on the QE2 looking at the options for the normal home user who is wondering if change is desirable and feasible with the title:Linux and Open Source

Linux and Open Source
A Real alternative to Windows ?

Or, why settle for Windows when you
can have the whole house for free ?

I am now in the process of writing a guide book to go with my lectures which will give a real possibility for an unsophisticated computer user without programming experience to make the transition to Linux with no more hassle than the change from Microsoft Windows XP to Vista titled The Road to Freedom -A progressive migration from Windows to Ubuntu for Safety, Security and Savings in Computing


The following tables show how Ubuntu matches up to Microsoft Windows for normal applications and utilisation on a desktop and for Mobile use on a Laptop. The sections on the darker background are those which are desirable or essential somewhere on our machines especially on the 'Power User' desktop which have not or can not be met using Linux. It looks as if we will only need to keep one dual boot system at home. The optimum system configuration of our machines will be addressed when we have gained a little more experience and investigated Linux networking more fully but we are now committed to Linux, whilst on the move, and very much more open source software everywhere. It has been a fascinating and enlightening investigation. The bottom line is that after a week I rarely switched back to Windows but from the start I thought the final step would be to convert Pauline which might need a new laptop for her! In the event the continual updates and problems with Windows ment that her time under Ubuntu increased and after less than two years she was also fully converted without a new laptop.

Before you Leave

I would be very pleased if visitors could spare a little time to give me some feedback - it is the only way I know who has visited, if it is useful and how I should develop it's content and the techniques used. I would be delighted if you could send comments or just let me know you have visited by sending a quick Message to me.

Requirements and Support Tables

Hardware Support

Hardware Windows XP Score
Ubuntu Linux Score
CD and DVD writers Plug and Play 10 Plug and Play 10
Ethernet cards
Desktop and Laptop
Plug and Play 10 Plug and Play 10
Internal WiFi Card (Laptop) Drivers installed
WEP Code setting easy
9 Installed automatically
WEP Code setting easy in Network Manager
Xircom PCMCIA Modem (laptop) Not required as internal modem
(Plug and Play without driver)
10 Plug and Play Port can be automatically identified in Networking 10
US Robotics External Serial Modem (Desktop) Plug and Play without driver loading 10 Plug and Play
Port can be automatically identified
USB 2.0 Hub Plug and Play without driver loading 10 Plug and Play
Links appear on desktop
USB Disk Drive (250 Gbyte with FAT32 and NTFS partitions) Plug and Play without driver loading 10 Plug and Play -
Links appears on desktop
USB - SD card reader Plug and Play without driver loading 10 Plug and Play
Links appears on desktop
USB Multi-Card Reader Plug and Play without driver loading 10 Plug and Play
Links appears on desktop when cards inserted
USB Bluetooth Dongle Software suite has to be installed plus some configuration 7

Plug and play. Adequate utilities available and good system integration for sound. Two Dongles tried.

USB Floppy Plug and Play 10 Plug and Play
Link appears on desktop
PCMCIA Compact Flash Converter Plug and Play 10 Plug and Play 10
Vodafone Connect Card Install CD provided by Vodafone 9 Plug and Play
Installed as two USB ports
Accessible via Network manager. 3 dongles tried
Internal Modem (laptop)
Soft HSF type modem by ATI based on Conexant Chip.
Pre-installed 9 Very easy if you pay the licence fee of $19.99 or accept restrictions to 14 kbaud. 5
Epson Perfection V200 Scanner and Epson SX515W All-in-One Scanner Install Proprietary Software which is very powerful and has OCR software 9 Install drivers, Software not as powerful and versatile as the full Epson software 7.5
WiFi Card (Desktop)
Belkin PCI
Install Proprietary Software 7

Plug and play just WEP key needed


USB WiFi 3Com dongle 3CRUSB10075 Install Proprietary Software 7 Plug and play just WEP key needed 10
Generic PCI WinModem Card (Desktop) Had to Search out and Install Proprietary Drivers 5 May be possible but very difficult - not followed up as external serial modem available. ?
Pinnacle Firewire DV In/Out and Analog Video Input Install Proprietary Software 6 Plug and play - several video editors available 7
Pinnacle USB TV Tuner Install Proprietary Software 8 Needs driver to be built or download .deb (every kernel change) then kaffeine and me-tv offer similar control and use as Pinnance software 7

Artec USB TV Tuner

Install Proprietary Software


Artec Plug and Play using me-tv or kaffeine


Software Requirements

Description Windows XP Score
Ubuntu Linux Score
Web Browser Firefox
Free download
10 Firefox
Open Source and pre-installed with system
Communication and Information Manager
  • Email
  • Contacts,
  • Calendar,
  • Tasks and
  • Notes
Outlook 2003
  • Email
  • Contacts,
  • Calendar,
  • Tasks and
  • Notes
~£85 stand alone
10+ Evolution Suite
  • Email
  • Contacts,
  • Calendar,
  • Tasks and
  • Notes

Thunderbird with Lightning extension

  • Email
  • Contacts,
  • Calendar,
  • Tasks







Office Suite
  • Word processor
  • Spreadsheet
  • Presentation Graphics
  • Database
  • DTP
Student Microsoft Office 2003 or latter.
  • Word,
  • Excel
  • Powerpoint
£105 - £150
(Much more if not pre-installed on machine or bought as Student version)
9 Open Office
  • Word Processor
  • Spreadsheet,
  • Presentations,
  • Graphics,
  • DTP and
  • Database
File and functionally compatible with Microsoft Office
Free and pre-installed with system
Web Editor (HTML)

Hotdog 6.6
Code View


Dreamweaver MX 2004
current versions ~£400







Arachnophilia runs under Java on most platforms

Dreamweaver 7 (MX 2004) now runs under Wine 1.00 - 1.4





Free Download

gFTP Free and Installed on demand by Add/Remove

FireFTP extension to Firefox




CD and DVD Writer Nero
Free OEM
£50 Full
9 Brasero for Audio CDs

K3b which uses the K interface seems very similar in power to the basic version of Nero




Graphics Editors, Viewers and Batch Converters Paintshop Pro 4.1
Current version ~£80

Irfanview (free) viewer and batch image converter





Paintshop Pro 4.1 runs under Wine

GIMP - very comprehensive but opaque - also available under Windows

Picasa from Google - available free but not OpenSource under Windows and Linux. Excellent Viewer, editor and organiser

Irfanview runs under Wine





Encryption and Secure Deletion


The optional PGPDisk package we have brings the cost up but makes using secure files easier. (~£80 for PGP 9)

Secure Deletion supported

TrueCrypt 7 - Opensource






Linux has built in support for OpenPGP which defaults to be compatible with PGP.
gpg provides command the line support in Ubuntu and
seahorse (unsupported) can be add/removed to provide GUI support
Shred provides secure deletion via a terminal interface.
Evolution has built in Encryption support.

TrueCrypt 7 - Opensource Xplatform






IP Telephone Skype 9 Skype 9

Google Earth - easy to install from Google site


GoogleEarth - runs under linux but not easy to install


CD, DVD and MP3 Player Media Player 9
Nero 6 package

Various - all seem acceptable although you need to add some extra libraries for MP3 and commercial DVDs 9
CD Ripper (MP3) Audiograbber 8 Sound Juicer or RipperX 8 - 9
Disk Partition Utility Partition Magic 8
Simple version on Bootable CD and good installed version
£45 per machine if installed


Gparted Free and installed on demand by Add/Remove

GParted downloaded and put on LiveCD

Ubuntu LiveCD has Gparted





Photo Organiser Canon ZoomBrowser
Included in camera package

Picasa run under Wine - see also above

F-Spot - now does most of what ZoomBrowser does and perhaps better



GPS Utility to download/upload and organise waypoints via a serial cable to a Garmin GPS 12 GPSU
7 GPSU Runs under Wine with some limitations on USB/Serial input converters 6.5
Video and DVD Editor Pinnacle Studio
£65 with hardware
8 Several available and investigated. Kdenlive is my favourite 8

Before You Leave

Home Pauline Howto Articles Uniquely NZ Small Firms Search
Copyright © Peter and Pauline Curtis
Content revised: 9th January, 2017
Link to W3C HTML5 Validator