Desktop System Setup with Debian GNU/Linux 4.0 'Etch'



This guide intends to provide enough information to get an effective desktop system ready to use using a 'Linux' distribution, providing a concise, point-by-point guide to configuring where it's necessary, with links to further reading if you want to know more.

This desktop system will use the Debian GNU/Linux distribution, version 4.0 'Etch', with a Linux version 2.6 kernel, using a GNOME version 2.14 desktop environment. It applies most accurately to 32-bit x86 and 64-bit amd64 architectured computers; most of it but not all will apply to all Debian's supported architectures.

We also provide a menu driven command-line program, called Twix, to help you install most of what is covered in this document and configure some of it. Twix can be downloaded for free from

I try to stick closely to stock Debian, which means adding non-free but being very consertaive about installing software from outside Debian, which is to say that some is but not much. This is as much for reasons of simplicity (so you're not chasing round a load of external sites) as it is for system stability (stability in terms of crashing). This is more difficult with browser add-ons because they provide worthwhile functionality but many don't exist in Debian so this restriction is more relaxed for them. Firefox and Thunderbird extensions, compared with other kinds of software from other sources, have the 'advantage' they're checked for and updated automatically on startup.

This document has related documents:
'Desktop System Setup with Debian 3.1 Sarge';
'Server Setup with Debian 3.1 'Sarge''
'Server Setup with Debian 4.0 'Etch''.

A good introduction to Debian is the Debian article at Wikipedia.

This document needs your feedback, it is under constant development so if you have any comments or suggestions please email them to inkwire [at] thegoldenear [dot] org and they can be considered.

Notable changes to this document

Work In Progress

1.5.0 - 1 September 2008

1.4.1 - 30 December 2007

1.4.0 - 20 December 2007

1.3.0 - 5 October 2007 - Added new section 'Partitioning Disks' with gparted; Added gdebi; Added msttcorefonts to wine

1.2.1 - 18 September 2007 - Replaced totem with totem-gstreamer in 'Multi media players, including DVD' section and removed vlc; Fonts for everyone need to be able to be read by everyone; Each login service needs to be configured to use libpam-keyring for it to work; Removed the Clearlooks skin for mplayer, possibly temporarily, because it doesn't apply to mplayer-nogui

1.2.0 - 13 September 2007 - Added Proprietary Software section with Internet Explorer and Skype; Added first draught of a Colour Management section; Updated Wine section with WineHQ repository, removed wine-doc as it's merged into wine; Added libpam-keyring; Added thoggen; Added mjpegtools, ogmtools, subtitleripper, libdvdread3 and libdvdcss2 as supporting software to dvdrip; Removed network-manager as we only need be concerned with network-manager-gnome

1.1.4 - 1 September 2007 - added ufraw; removed gimp-dcraw

1.1.3 - 31 August 2007 - removed thinkpad-base, tpctl, thinkpad-source, configure-thinkpad, ibm-acpi as they're not available and thus also removed the IBM Thinkpad section.

1.1.2 - 29 August 2007 - added guide to installing TrueType fonts for print.

1.1.1 - 25 August 2007 - removed xfce4-iconbox and xfce4-showdesktop-plugin as they're not part of XFCE 4.4 in Etch.

1.1.0 - 24 August 2007 - Added Thunderbird / Icedove Extensions Adblock Plus, Enigmail, Lightning and Mail Redirect; Added Firefox Add-on Adblock Plus; Added icedove-traybiff; Added aptitude-doc-<locale>; Added etch-proposed-updates repository; Added section on updates and upgrades; Information on recent inability to install flashplugin-nonfree

1.0.4 - 17 July 2007 - freeloader replaces bittorrent-gui and bittornado-gui

1.0.2 - 16 July 2007 - Added Remote Access Clients section in Internet Applications section - tsclient, xvnc4viewer, rdesktop, xnest, openssh-client, secpanel

1.0.1 - 13 July 2007 - added Liferea; Added instructions to set Iceweasel / Firefox as preferred GNOME browser; changed to volatile.debian.or ( will still work for the life of Debian 4.0 Etch).

1.0 - 25 June 2007

0.9.14 - 24 June 2007 - Better described X video drivers; added video graphics utilities radeontool, rovclock, 915resolution, i810switch, matroxset, nvidia-xconfig, nvidia-settings, nvtv

0.9.12 - 23 June 2007 - tidied up NTFS filesystem support info, better explaining ntfsprogs' improved NTFS mounting capabilities over the kernel's

0.9.11 - 22 June 2007 - Added debian-backports-keyring package

0.9.10 - 21 June 2007 - Added kernel 2.6.21

0.9.2 - 29 April 2007 - Added regionset

0.9.1 - 25 April 2007 - Reduced 'CD audio - Playing, digital audio extraction (ripping), copying and encoding' section into just 'Copying Audio CDs'; restored serpentine; removed abcde and jack.

0.9.0 - 24 April 2007 - Added an 'Audio / Sound - decoding, encoding, playing' section; just the packages, more will follow.

0.8.1 - 22 April 2007 - added obexftp; removed as it's now only available in unstable & experimental; exchanged libnjb1 for libnjb0

0.8.0 - 20 April 2007 - made Bluetooth section much more complete; added packages gnome-bluetooth, btscanner, obexpushd and ussp-push.

0.7.0 - 18 April 2007 - updated to relate to Debian 4.0 Etch rather than Debian Testing; wxvlc is now part of the vlc package

0.6.0 - 8 April 2007 - added wireless network auditing section; added gsynaptics; removed Serpentine.

0.5.1 - 21 March 2007 - added mono-runtime

0.5.0 - 13 March 2007 - Added Search & Indexing section with Beagle; Added debian-multimedia-keyring; merged kernels specifically for amd64-generic, amd64-k8, em64t-p4, amd64-k8-smp and em64t-p4-smp into the one amd64 kernel; Replaced gtk-gnutella (no longer in Testing, though it's in Unstable) with amule; Changed Nvu as it's not available in Debian; Removed godbcconfig as it doesn't seem to be returning to Etch - see unixodbc-bin (with QT rather than GTK interface) instead; Removed trailing '/' from '' apt sources.list example; Replaced genisoimage's '-L' with '-allow-leading-dots'

0.4.9 - 2 March 2007 - added compression / archival section; added tcpdump to essential minor software.

0.4.8 - 28 February 2007 - amended refererences to multisync0.90 (replacement for the multisync package) and multisync-tools to say they're now in Etch.; Removed multisync package as it relies on the Multisync framework rather than the Opensync framework; Added opensync-plugin-google-calendar; Removed synce-multisync-plugin as it's a Multisync plugin not an Opensync plugin.

0.4.7 - 26 February 2007 - added dvdrip for copying DVD movie to compressed format.

0.4.3 - 23 February 2007 - further detail of Intel Centrino (ipw) drivers and firmware.

0.4.0 - 15 February 2007 - updated WiFi drivers section, should now describe all wireless drivers available in Debian; added network-manager and network-manager-gnome; replaced firefox with iceweasel (See Wikipedia's article about IceWeasel for background information); added sbackup; added update-notifier; replaced scribus (stable version 1.2) with scribus-ng ('stable' unstable version 1.3); replaced the not-so-free java-package (Java 1.4) with the now free sun-java5-jre and sun-java5-plugin (Java 5 / 1.5); added nmap and wipe to minor software section; removed as it's not available

0.3.9 - 12 December 2006 - replaced bluez-passkey-gnome with bluez-gnome which incorporates bluez-passkey-gnome and will grow to a fully-fedged Bluetooth manager. Removed now non-existant bluez-pin.

0.3.8 - 11 December 2006 - a continuation of the cdrecord fork, cdda2wav replaced by / forked to icedax and mkisofs replaced by / forked to genisoimage

0.3.2 - 22 November 2006 - added printer device naming when using the HPLIP driver

0.3.0 - 20 November 2006 - refreshed printing section with the addition of Foomatic, ijsgutenprint, pnm2ppa, foo2zjs, printconf and various PPD files

0.2.14 - 16 November 2006 - replaced thunderbird with icedove. See Wikipedia's article about IceWeasel for background information.

0.2.8 - 9 October 2006 - linux-image 2.6 smp kernel packages removed as they're included with the regular kernels as of version 2.6.17; added linux-image-686-bigmem; removed winesetuptk as it isn't in Etch.

0.2.7 - 3 October 2006 - MPlayer added.

0.2.5 - 27 September 2006 - p7zip-full added.

0.2.4 - 20 September 2006 - cdrecord replaced by wodim; cdrtools-doc replaced by cdrkit-doc.

0.2.0 - 13 September 2006 - xchat replaced by xchat-gnome; pcmcia-cs replaced by pcmciautils; baobab added to gnome; update-manager added to gnome; mysql-doc removed; ladspa-plugins removed, its contents have merged into ladspa-plugin; libmultisync-plugin-backup removed; libmultisync-plugin-evolution replaced by opensync-plugin-evolution; libmultisync-plugin-irmc and libmultisync-plugin-irmc-bluetooth replaced by opensync-plugin-irmc; libmultisync-plugin-opie remvoed; libmultisync-plugin-palm replaced by opensync-plugin-palm; libmultisync-plugin-syncml replaced by opensync-plugin-syncml; Added opensync-plugin-file, opensync-plugin-sunbird, opensyncutils, multisync-tools

0.1.41 - 4 September 2006 - Replaced with for GNOME users ( still recommended for XFCE users); Removed ooqstart-gnome as it has been replaced by

0.1.40 - 31 August 2006 - changed gimpprint-doc to gutenprint-doc.

0.1.35 - 23 May 2006 - mozilla-firefox-* package names changed to firefox-*.


<something> - when something is in angle brackets you should replace this with something particular to your system; you do not use the angle brackets.

command - text in monospaced typeface indicates a command you issue at the command-line or text you type yourself into a text editor.

$ - when a command-line command is preceded by a dollar it means you run this whilst logged in as a regular user

# - when a command-line command is preceded by a dollar it means you run this whilst logged in as super user / root

Debian GNU/Linux

Debian is a GNU operating system with a Linux kernel and collection of currently 8,000 software programs. The GNU operating system is a part of the family of Unix operating systems that date back to 1969, it is a version of Unix written from scratch by a large community of disparately located hackers and made available for free. (Debian is based on System V Unix rather than BSD Unix). This community is a social movement, motivated in part by the desire to provide the world with an operating system free of the restrictions the contemporary software industry imposes upon us.

Debian is one of a number of 'distributions' of GNU/Linux. A distribution is the operating system plus a number of software applications; there are many aspects differentiating distributions. I recommend Debian in particular for these reasons:

Debian is available in a number of different flavours, one of which you subscribe your system to:

Further Information

Debian Weekly News:

Debian Planet:

Planet Debian (accumulation of Debian developers' blogs):,

Debian bug tracking system:

Getting Debian

Downloading from the Internet

The easiest means of downloading Debian is from

Alternatively you can download Debian from There are various options of what to download, the most useful to choose from are

Choose which architecture you want, the following are the most popular

By Post

Debian Stable is available to order on CD/DVD from various vendors, a list of them is available at

A Demonstration

If you want to check-out Debian before installing it, it's possible to download a so-called 'live' version that you boot your computer with, it runs the operating system straight from CD or USB flash media without touching your existing operating system, allowing you to see exactly what it would look like were it installed on your computer, but is gone when you turn the computer off.
You can get a live Debian image from

Hardware support

Debian GNU/Linux device driver check page: - paste in the results of lspci -n and it will tell you what GNU/Linux drivers exist for the specified hardware.

Linux Hardware Compatibility HOWTO at

Hardware4Linux - a web site to lookup and report hardware compatibility and incompatibility with Linux distributions.

The recommended hardware you'll want to run this system on is roughly as follows:

ScaleCPUCPU speedRAM / memoryDesktop environment
Low endIntel Pentium II equivalent300MHz128MBXFCE
MidAMD Duron equivalent700MHz128MB - 500MBGNOME
High endanything moreanything moreanything moreGNOME

Upgrading From Debian 3.1 Sarge

Read and follow the Debian Release Notes on upgrading:


Note that any decision you make during installation that you would rather have made differerently, can be changed once installation is finished, usually using either dpkg-reconfigure <package-name>. or tasksel

Your particular system may require some boot options to work around specific known problems, you can see a list of these by pressing some of the Function keys on the keyboard.

To start the installer, either just press [Enter] to start the installer in text mode, or type installgui and press [Enter] to start the installer in graphical mode.

If you're able to update your Debian system using the Internet, rather than from CD/DVD media, do so, but it's not essential. The best way to ensure this happens is to remove the disc after the initial stage of installation when the disc is ejected. Also, be sure to add a 'source' to download from during installation. If you're using CD/DVD media to install packages from then try to have at least CD discs 1 and 2 (DVD disc 1) and choose to add them all to the sources list when prompted.

Partitioning scheme - You have the following options:

Choose the 'Separate /home partition' scheme.

When choosing the keyboard layout, the default is 'us', there isn't a drop-down list of available options for different languages, for example you would choose 'gb' for UK English.

When you're presented with the option to install one or more predefined collections of software, the 'desktop environment' option will install a fairly useful system (its a massive improvement on what Debian 3.1 installed) but it can be improved upon, which is what this documents all about. You can either choose that option and return to this document for additional software advice, or do it all manually.

The installer's 'desktop environment' option installs the following:
twm, gimp-print, xresprobe, eject, foomatic-filters-ppds,, xserver-xorg-video-all,, foomatic-db-hpijs, cupsys-driver-gutenprint, cupsys-client, avahi-daemon, foomatic-db-gutenprint,, discover1, myspell-en-us, xdg-utils, hotkey-setup, foomatic-gui, xorg, cupsys-bsd, iceweasel, xserver-xorg-input-all, hplip, desktop-base, alsa-base, libnss-mdns, xterm, cupsys, alsa-utils, anacron, printconf, hpijs, menu, gimp,, foomatic-db-engine.

The installer's 'laptop' option installs the following:
wireless-tools, acpi-support, hibernate, cpufrequtils, acpi, wpasupplicant, pcmciautils, acpid, apmd, hotkey-setup, anacron, uswsusp, bluetooth

A minimal mail system is installed by default. Through answering the various questions asked of you, configure this mail system with your SMTP server address and other information so that your system has the ability to send email, which is useful for various software to be able to use.

If connected to the Internet do an upgrade after installation, using either Synaptic from within GNOME to update then install all available updates; or from the command-line aptitude update then aptitude dist-upgrade.

Further Information

Debian GNU/Linux Installation Guide - Development version:

Debian GNU/Linux Installation Guide, Debian 4.0 Etch version:

This is also installable as the installation-guide-<architecture> package, for example installation-guide-i386 or installation-guide-amd64.

Basic commands

To use this document you'll need to be able to use these basic commands:

For typing at the command-line from within GNOME you can use the 'Terminal command line', depicted by a monitor with a blank screen but for the 'command-line prompt' on the 'panel'.

To install programs before you have the desktop environment and Synaptic Package Manager installed (which give you a more user friendly environment), login as root and use aptitude update and [Enter] then when thats done use aptitude install <package name> <package name> <package name>.

To add a user to a group, from GNOME:
Common functions that relate to specific group membership are available in Desktop → Administration → Users & Groups → Users → pick user → Properties → User priviliges.
More specifically groups administration is available from Desktop → Administration → Users & Groups → Groups → pick group → Properties → Group Members → pick user → Add.
If you're logged in as the user for whom you're changing their group membership, you need to log out and log back in again for it to take effect.

Become the super user by issuing the command su at the commnd-line. The super user is the user called 'root', you'll be asked for the password for the root user which you set during installation.

When typing at the command-line you have a useful feature called 'command-line completion' available to you. As you type program names or direcoty and file paths, you can press the [Tab] key to automatically complete such lines. If there is more than one option for a particular line you've so far typed in, command-line completion will stop at the point the various options differ, pressing [Tab] again will show you the various options available.

If you're at the command-line, logged in as root, wanting to edit configuration files, a simple text editor you can use is nano. Typing nano <path>/<filename> will load a file; Ctrl+W will search within a file for text; Ctrl+X will quit, where upon you can choose to save or not.

To reconfigure a package in the same way as was done when it was first installed: dpkg-reconfigure <package name>

Each package has Debian-specific documentation for it in /usr/share/doc/<package name>

To create a 'symbolic link' or 'symlink' (known as a 'shortcut' in Windows): ln -s <location-of-file-to-link-to> <location-of-symbolic-link>

To restart X Windows, the graphical windowing system, use Ctrl+Alt+Backspace. This is useful when applying changes to video settings in the X Windows configuration file.

To cancel a running command-line program use Ctrl+C.

To quit from a command-line program that is displaying text for you on the screen, such as a man page, use 'q'.

Package Repositories, Updates & Upgrades

Package repositories

Debian's package management system, known as 'apt', keeps a list of sources, or repositories, it can retrieve packages from when you choose to install them, in the file /etc/apt/sources.list.

Sources can be of the form

You define which Debian flavour you're subscribed to

These different licencing groups are kept track of

There are different providors of Internet server sources

Debian installs with a default that uses 'main', it doesn't include 'contrib' or 'non-free'.

To add new CDs to your sources list, other than during installation

To add new Internet servers to your sources list, other than during installation


4.0 Etch

Release Date Changes
4.0r0 8 April 2007
4.0r1 15 August 2007 (doesn't list non-free packages i.e. ipw2200-)
4.0r2 27 December 2007
4.0r3 17 February 2008
4.0r4 / etch-and-a-half / etch'n'half 26 July 2008
4.0r5 23 October 2008
4.0r6 18 December 2008
4.0r7 10 February 2009
4.0r8 8 April 2009

A full changelog is available at

There are two daily 'pulses' at 00:00 and 12:00 GMT upon which updated packages, if any, are made available.

Security updates are often made available, potentially even daily.

Very occasional other updates are made in the form of new 'point releases' of Debian stable. They comprise packages with a very conservative amount of miscellaneous bugfixes, removed packages, missing builds and security updates (those previously available thru security updates). These packages are introduced into the main stable archive when released. Similarly the downloadable ISO images available for installing Debian are updated, they have a 'r' designation.

The packages waiting to be made available in the next point release are held in a repository known as stable-proposed-updates but seemingly more readily available as etch-proposed-updates. You can subscribe to this repository to get these packages as they enter the queue rather than waiting for the release date.

For access to packages headed for but not yet entered etch-proposed-updates - 'Packages awaiting proposed-updates moderation - Summary for proposed-updates':


To upgrade to the next version of Debian, replace the code name / alias in sources.list from 'etch' to 'lenny'.

Skipping releases is not supported. To upgrade from Woody to Etch you must first upgrade to Sarge, then to Etch. Edit /etc/apt/sources.list and replace 'testing' or 'etch' or 'stable' or 'unstable' with 'sarge' then 'aptitude update && aptitude dist-upgrade'.

Etch+1 year

An updated version of Debian 4.0 Etch will be made available a year from its release in April 2008. This will at least consist of updated GNOME, KDE, and Linux kernel.

Package management - finding, adding and removing programs

Debian's software programs, or 'packages', are versions of popular software specifically re-packaged for Debian, and in particular for its package management system (called 'apt') which is used to easily add and remove them. You don't need to independently download, compile and configure software manually - Debian maintainers have done the work for you, making sure the software fits into your system cleanly - an example of doing things the 'Debian Way', a phrase that defines ways of doing things specific to Debian that are usually very efficient and elegant.





When you click from within the web browser on a .deb file choose Open with → other → /usr/bin/gdebi-gtk.


From the command-line

aptitude, using switches
aptitude, used interactively


Synaptic Package Manager
(Desktop → Administration → Synaptic Package Manager)

Package configuration - Debconf

Debconf is used as much as possible to configure packages for you (but not exclusively), asking questions and editing configuration files respectively. You are asked how to configure debconf upon installation of debconf itself, during Debian's installtion. You can permanently reconfigure debconf at any time using # dpkg-reconfigure debconf. Either way you are asked the following:

"Packages that use debconf for configuration share a common look and feel. You can select the type of user interface they use.

To change these per-package installation use # dpkg-reconfigure -p<priority level> <package-name>.

Desktop Environment: GNOME


Choosing to install a 'desktop environment' in the Debian installer (or 'Tasksel', as the particular program that is running at that point is known), installs a GNOME, KDE or XFCE desktop environment depending on which installer you use. This document describes individual packages to install for a GNOME desktop environment for a vaguely modern computer. For an older computer you're advised to use XFCE instead of GNOME.

Install these for a basic desktop environment without major applications:


Per-user configuration

Further Information


The GNOME Journal:

Jordi Mallach's blog:

Ben Maurer's blog:

Various channels on irc://

Planet GNOME, an aggregate blog of GNOME developers:

GNOME changelog

Bug reporting

GNOME's Bug Database:

Desktop Environment: XFCE

This is an alternative to GNOME which will run well on very old computers that are too small and slow for GNOME, such as a 233MHz CPU with 128MB RAM.



XFCE's default toolbar comes with shortcuts for some specific applications, such as the Mozilla suite, which you may not have installed as you may use alternative programs, such as IceWeasel / Mozilla Firefox, and so they only serve as an example and are thus worth spending some time changing and adding to with your most used programs.

X Windows:

'X Windows' creates the graphical windows on your screen.


  • x-window-system-core - X.Org version 7.1 - - this is the xserver-xorg package plus other useful packages. This also installs the xserver-xorg-video-all package which installs the full suite of free video driver packages:


    Video Driver Choice

    The Debian Installer, or dpkg-reconfigure xserver-xorg should auto-detect your video graphics adapter and configure with the appropriate driver, such as from those below. You can further configure for your particular adapter with options specific to the driver.


    Restart X: Ctrl+Alt+Backspace

    dpkg-reconfigure xserver-xorg - this is the configuration program run by the debian-installer, but with priority 'high' rather than the more common 'medium'. If you're going to reconfigure X this way then install the following packages first:

    xorgconfig - text based question and answer configuration

    xorgcfg - graphical configuration

    xvidtune - video mode tuner for Xorg. "When given one of the non-toolkit options, xvidtune provides a command line interface to either switch the video mode. Without any options (or with only toolkit options) it presents the user with various buttons and sliders that can be used to interactively adjust existing video modes. It will also print the settings in a format suitable for inclusion in an xorg.conf file."

    Video Resolution

    After installation you should tune the X configuration to best suit the monitor. Using the original documentation that came with the monitor, or the web, find the horizontal frequency (in kHz), vertical frequency (in Hz), applicable resolutions and possibly 'mode line'. You usually choose the name of the driver that relates to all the manufacturer's monitors.

    To decrease the resolution temporarily you can cycle through any configured resolutions with Ctrl+Alt+[+|-] (the keypad + or - keys). The size of the desktop will stay constant (e.g. 1280x1024) but your window into it will be smaller (e.g. 1024x768). You can thus still access all of your desktop by moving the mouse to the edges of the screen, which will scroll the smaller window over the larger desktop.

    Configuration file


    Sample configuration file: /usr/share/doc/xserver-xorg/examples/ (or, using dwww localhost.localdomain/cgi-bin/dwww?type=file&location=/usr/share/doc/xserver-xorg/examples/

    Configuration information specific to each video chipset and other devices is provided in info pages for specific video card drivers, i.e.

    Thorough explanation of mouse configuration: /usr/share/doc/xserver-xorg-input-mouse/README.gz (or, using dwww localhost.localdomain/cgi-bin/dwww?type=file&location=/usr/share/doc/xserver-xorg-input-mouse/README.gz)

    Example important configuration sections


    To configure X to use accelerated 3D drivers, using the X.Org 'ati' driver, /etc/X11/xorg.conf should include:


    Set the correct login screen typeface size

    Set the correct GNOME screen typeface size

    You may however find this gives typefaces that are too small.


    Log file: /var/log/Xorg.0.log

    Further Information

    Changelogs for each video card driver are in /usr/share/doc/xserver-xorg-video-<driver name>/changelog.Debian.gz Foundation: and

    gravityboy's Journal (Debian developer):

    XStrikeForce - X Window System support for Debian operating systems:

    Rage3D forum:

    Environment Configuration

    Remove annoying console beeps

    Within the command-line environment

    For Bash / GNU Readline: echo 'set bell-style none' >> ~/.inputrc

    For all programs, from the system console: setterm -blength 0

    Within the X window system

    For all programs:xset b off

    Within GNOME

    Desktop → Preferences → Sound → System Beep →

    Minor Software





    Note that Simple Backup requires use of sudo.


    Configure and use:
    Desktop → Administration → Simple Backup Config

    Desktop → Administration → Simple Backup Restore

    Spellcheckers and Dictionaries


    Fonts / Typefaces


    (xfonts-scalable, installed by default, at least includes Bitstream Charter)



    Fonts for all users are located in /usr/share/fonts/

    (when should they instead be in /usr/local/share/fonts/truetype?)

    Fonts just for particular users (just for print?) are located in ~/.fonts/

    list installed fonts (at least, those known of by the fontconfig system):


    GNOME has a location you can copy fonts to to install them: fonts://. This seems to be a compendium of all the system fonts in /usr/share/fonts/truetype/ and below and your personal fonts in ~/.fonts.

    Installing Individual TrueType Fonts (TTF) For Print

    If a font isn't available in a Debian package you can install individual fonts from other sources.


    For a particular user
    For all users


    For a particular user

    If you, logged in as an ordinary user, drag and drop or copy and paste fonts to fonts:// it saves them in ~/.fonts and they're subsequently only available to you. You won't see the font appear in the list, though if you try to copy it again GNOME will say it's there and it is actually there. I haven't tried but you may have to logout and login again to see them in the list.

    For all users

    Presumably you need to be root to put fonts there to be available for the system, rather than for you individually? There's no way to 'become root' through the user interface so you have to run Nautilus from the command-line as root (but will they actually be saved in root's ~/.fonts or in /usr/share/fonts/truetype/?)


    Does any or all of this apply to non-truetype fonts?

    If I select to download a font from the web, it defaults to opening in gnome-font-viewer but you can't do anything in gnome-font-viewer other than look at it, which seems kind of pointless, what you want is buttons to 'install' and be asked 'Install for just you' or 'Install for all users', with the latter asking for the root password.
    (See Font Sadness by Aaron Bockover, GNOME Bug 495510 - enable gnome-font-viewer to install fonts and GNOME Bug 86598 - Install new fonts through the font dialog.

    Further reading

    List of other Bitstream Vera derivatives:

    Unicode Font Guide For Free/Libre Open Source Operating Systems:

    Issue this command at the command-line to see all available TrueType fonts: apt-cache search ttf-

    TrueType Fonts in Debian mini-HOWTO by Bear Giles: (from 2000 so might be outdated)

    Linux fonts (mostly X11):

    Office suite - Word processor, spreadsheet, presentation, layout / desktop publishing (DTP), PDF viewer



    To enable the GNOME file picker, with useful shortcuts to various places, rather than OpenOffice's default which lacks such usefulness: Tools → Options... → → General → Open/Save dialogs → Use dialogs - off

    Further Information

    About OpenOffice packages in Debian:

    Debian-OpenOffice IRC discussion channel: irc://


    Apart from using OpenOffice, this information is based on using a MySQL database.


    If you're using a remote database and want applications to be able to interface with it


    Connecting to a remote database - create a data source

    Register data sources so that applications such as OpenOffice know of them.

    Using the command-line

    User data sources: ~/.odbc.ini
    System data sources: /etc/odbc.ini

    Using GNOME

    To create a data source just for the particular user you're logged in as, run gODBCConfig as that user then choose a 'User DSN'.

    To create a data source for all users of this system, run gODBCConfig whilst root then choose a 'System DSN'.

    Choose Add → choose a driver → OK → Enter at least the following:

    mysql-client accessing a remote database

    Use the MySQL client to work with MySQL in general: mysql -h <hostname> -u <username> -p
    Then enter the password for that particular user when prompted to do so.

    Access a particular database: mysql -h <hostname> -u <username> -p <your database name>
    Then enter the password for that particular user with that particular database when prompted to do so.

    Basic MySQL commands

    mysql> SHOW databases; - show all databases you have access to

    mysql> CREATE database <database>; - create a new database

    mysql> USE <database>; - open a databaase so you can use it

    mysql> DROP database <database>; - delete an existing database

    mysql> CREATE TABLE <table> (<field> <type>); - create a table, with fields

    mysql> SHOW tables; - show existing tables in the current database

    mysql> DROP TABLE <table>; - delete a table

    mysql> DESCRIBE <table>; - display structure information about an existing table

    mysql> ALTER table <table> <alter specification>; - change the structure of an existing table, for example more specifically: ALTER TABLE <table> ADD ContactsId MEDIUMINT UNSIGNED REFERENCES Contacts(Id);

    mysql> INSERT INTO <table> VALUES ('a','b','1999-03-30',NULL); - add data to a table

    mysql> SELECT <what to select (and optionally operate upon that, displaying the results)> FROM <table> WHERE <conditions to satisfy>; - display the contents of fields according to certain criteria

    mysql> UPDATE <table> SET <field> = '<value>' WHERE <another field> = '<another value>'; - change the contents of existing fields

    mysql> ALTER TABLE <table> DROP <row>; - delete rows

    mysql> DELETE from <table> ...; - delete rows

    Methods of automatically loading data into a MySQL database

    Further Information

    MySQL 3.23, 4.0, 4.1 Reference Manual:

    MySQL 5.0 Reference Manual:

    Web editing


    Internet applications (web, email, chat, file transfer, downloading, peer2peer)



    Iceweasel / Firefox

    Set Iceweasel / Firefox as the preferred GNOME web browser: Desktop → Preferences → Preferred Applications - change 'Custom' - 'gnome-www-browser %s' to 'Iceweasel'.


    Per-user configuration

    User bookmarks location: ~/.gftp/bookmarks


    To enable it, right-click on the gaim system tray applet -→ Plug-ins -→ Off-the-Record Messaging -→ and choose to enable it. To configure it for use choose Configure Plug-in -→ Config -→ My private keys -→ Generate.



    To enable OTR, initiate a conversation with someone. Choose 'OTR: unverified' in the bottom left of the chat window. Choose to verify the person and then confirm and they'll be added to the list of verified people you can access in the plug-in's preferences.

    Further Information

    Planet Mozilla:

    Penguin.SWF - tracks development status and issues regarding the Linux version of Adobe's Flash Player:

    Image viewing


    Image editing


    Further Information

    Beginning GIMP: From Novice to Professional (a printed book):

    Colour Management

    Software required for creating a colour managed workflow. This is a first draught of this section so isn't considered complete.



    Linux Color Management:





    The most secure way to run this is in 'Restrictive by default, whitelist traffic' mode, rather than the default 'Permissive by default, blacklist traffic'. Be aware this can be a major pain to use because typically things won't work and you'll not understand why, having forgotten that you have the firewall on, even with the system tray applet visible. When you exit the system tray applet the firewall remains running at all times unless you explicity choose 'Stop Firewall', it just doesn't have a system tray applet to represent it. This further confuses (I think the system tray applet should instead say 'hide' rather than 'exit' or perhaps we shouldn't have it minimise to system try).

    If you have the GUI turned on it'll turn red when it blocks a port and you can go to the Events section, right-click and choose one of either 'Allow Connections to Destination', 'Allow Outbound Service For Everyone', or 'Allow Outbound Service For Source'. I choose 'Allow Outbound Service For Everyone'. The nomenclature reflects the fact the software can also provide Internet connection sharing for other computers.

    These are the outbound ports I've found useful to whitelist (as defined in /etc/firestarter/outbound/allow-service):

    	DNS, 53, everyone,
    	DHCP, 67-68, everyone,
    	FTP, 20-21, everyone,
    	HTTP, 80, everyone,
    	HTTPS, 443, everyone,
    	IMAP, 143, everyone,
    	Ircd, 6667, everyone,
    	Openvpn, 1194, everyone,
    	Samba (SMB), 137-139 445, everyone,
    	SMTP, 25, everyone,
    	Ssmtp, 465, everyone,
    	Microsoft-ds, 445, everyone, IPCop web interface
    	Unknown, 222, everyone, IPCop command-line interface
    	Unknown, 9100, everyone, HP JetDirect printing
    	Whois, 43, everyone,

    Firestarter runs as a system service / daemon (controlled using /etc/init.d/firestarter with start, stop or restart or you can do so from the GUI) whose configuration is per-machine not per-user.

    My own questions answered

    If you explicitly allow an outgoing port, do you correspondingly need to explicitly allow the incoming port so you can 'hear back' from the thing you've connected with?

    in affect/effect(?), if you've requested something from somewhere then it coming back is trusted. By default Firestarter doesn't block absolutely everything: "Traffic from the Internet in response to connection requests from the firewall or client hosts is allowed back in through the firewall." ( It seems we should instead be talking about allowing outgoing connection requests and denying incoming connection requests.

    "In most cases, the rules need to be symmetrical -- for instance, allowing request packets to go out to a remote web server only makes sense if the responses from that server are allowed to return. The exception to this rule are the "SYN" packets which are used to initiate a new connection. For instance, even though packets using the http protocol are allowed in so that you can receive data from a remote web site, http packets requesting a new connection might be blocked, to prevent outsiders from connecting to internal web servers." -

    'ping: sendmsg: Operation not permitted' How do I enable ping? I haven't enabled ICMP filtering in the preferences so why doesn't ping work?

    Is it because: "By default Firestarter allows ICMP traffic, although it throttles it somewhat to prevent excessive flooding or Denial of Service attacks." -

    "? Run this command to fix this:
    # iptables -A OUTPUT -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
    This means append to the IP chain/table OUTPUT rules. If you get a packet that uses the ICMP protocol, and its ICMP type is an echo request (ping), and it's new (this bit may have been a bit redundant, but the principle of knowing the state of the packets you want to send through is important) jump to the ACCEPT chain/table (which immediately pushes the packet through)." Needs to go at the start of your iptables.

    What is the performance hit of running Firestarter? are there shades of performance grey, such as if you add more rules it affects performance more?

    Issues I feel it has

    When you see Events you can see whether ports are TCP or UDP. The Policy section doesn't give the option of specifying whether you're defining UDP or TCP. They are actually for both. It's a shame it doesn't communicate this.

    The Policy view doesn't show the 'comment'.

    Annoyingly you have to apply rules per-interface, so if you wander with a laptop between wireless and wired you'll have to maintain two lists. Note that when you edit policies of an interface that isn't currently up and running it complains when it can't apply it when the interface isn't up ('Failed to apply outbound policy') but don't worry, it's still changing the rule).

    Help → Online Users' Manual is broken, it leads to which gives "Internal Server Error" (wrongly opened in Epiphany, when my default browser is set to Firefox). It should be or their web site should be fixed.

    Has development of Firestarter ceased? and does it have issues with newer kernels?


    To see the underlying iptables firewalling that Firestarter has configured:
    iptables -L -n

    Further Information


    Multi media players, including DVD



    Search & Indexing






    Applications → Accessories → Search & Indexing



    Applications → Accessories → Search

    Audio / Sound - Encode and Play

    Thus far the following formats are covered: Ogg Vorbis, FLAC, MP3, AAC, WMA and RealAudio.


    Libraries for playing

    Libraries for encoding

    GStreamer plugins for playing

    GStreamer plugins for encoding

    Command-line programs for converting

    Command-line programs for encoding

    Command-line programs for playing

    GNOME programs for converting

    To do!

    GNOME programs for ripping and encoding

    GNOME programs for playing (only)

    Stand-alone programs for playing (not for a specific desktop environment)

    These players are not based on a specific back-end, instead using a combination of their own abilities and including lots of libraries

    GNOME programs for ripping, encoding, playing and managing

    Audio architectures


    Audio editing


    multi-track audio editors for GNOME

    single-track audio editors for GNOME

    Sound effects

    Compression / Archival

    These can be useful for many reasons, for example the anti-virus and spam co-ordinating program Amavis uses many of them if they're installed; as does GNOME's archive manager / file roller.


    Runtime Environments - Java Runtime Environment (JRE)


    Further Information

    Debian GNU/Linux Java FAQ:

    Runtime Environments - Mono


    Sound card




    From the command-line

    From GNOME


    Further Information

    'The Linux Audio Developers Mailing List' (and Linux Audio Users Mailing List), including various resources:

    Low-Latency HOWTO by Paul Winkler:

    More on low latency:


    These instructions describe how to setup to print to a directly attached personal printer, or a remote printer, using CUPS (the Common Unix Printing System). CUPS uses the Internet Printing Protocol (IPP), rather than LPR (an alternative printing mechanism).
    For sharing printers, using either a dedicated print server or to simply share your printer from your desktop computer, see the printing section of our document 'Server Setup with Debian 4.0 Etch'.


    This is an interesting document on changes to be made to printing packages in Debian: PrinterDriverPackagesSuggestedChanges.

    When printing to a directly attached printer

    When printing to either a directly attached or remote printer

    Package installation options

    cupsys-bsd asks "Do you want to set up the BSD lpd compatibility server?" - yes

    When printing to a remote printer

    Put the hostname or IP address of the print server in the ServerName section of the configuration file /etc/cups/client.conf. The printer should then be available to most applications to print to.

    Install the Printer Driver, when the printer is directly attached

    You need a PostScript printer driver (and filter, if the printer isn't a PostScript printer) for each printer, even if the printer isn't a PostScript printer. Go to the Printer Database at and look up your particular printer and note which driver (and accompanying filter) it recommends using.

    Install the recommended PostScript printer driver package (see previously), or if you're using an actual PostScript printer you may be getting the driver from the printer vendor.

    Restart CUPS: /etc/init.d/cupsys restart

    (This example is for an Epson Stylus C84, you need to change the name of the files to suit your printer)

    Create the print queue, when the printer is directly attached

    Using GNOME

    Use Desktop → Administration → Printing → New Printer.
    (GNOME will know where to look for the printer drivers and deal with them in their gzipped format so you don't need to uncompress them manually.)

    To remove the print queue, there isn't a GNOME option to become administrator and do so (it's dimmed), so you could either run, or create a launcher for, gksu gnome-cups-manager; or use the CUPS web interface.

    Using the CUPS web interface

    Using the command-line

    If you need to remove the print queue, use lpadmin -x <printer>.

    Configure the printer driver

    Using the CUPS web interface

    Configure Printer...

    Using the command-line

    lpoptions - display or set printer options and defaults. Use it to lock down a set of sensible defaults. To see the options available for your setup, use the 'docs' option like this: lp -d <printer> -o docs /etc/hosts; or use lpoptions -p <printer> -l. Usually, you can also use the media=..., sides=..., and duplex CUPS options, if there are InputSlot, MediaType, and Duplex options for your driver.

    Some applications require specific printer configuration


    If you have installed the cupsys-bsd package, OpenOffice will automatically detect your printer queues. Otherwise you have to add the printer queues manually with the oopadmin tool.


    GIMP needs you to set the specific printer by replacing 'PostScript Level 2' with the specific printer. Choose 'Setup printer...'; pick the printer from the list; (the command line already has the right queue name (i.e. lp -s -dprinter -oraw)); choose 'Save Settings'.


    Use the command lp -P <printer>. (Bug: the man page wrongly recommends a lower case -p.)

    Tools for working with printer queues and print jobs

    Using GNOME

    Should be self explanatory; however if you try to delete a print job nothing happens. There is no GNOME option to become administrator and perform such acts, so you could either run, or create a launcher for, gksu gnome-cups-manager; or use the CUPS web interface. Perhaps there is a group that printer operators should be a member of?

    Using the CUPS web interface

    Should be self explanatory.

    Using the command-line

    (use -h <IP-address> with each of these to specify the IP address of the print server if using a remote printer)

    Inkjet printer maintenance

    With Epson Stylus printers

    Using the command-line


    List available devices on the system: lpinfo -v

    List available drivers on the system: lpinfo -m

    Restart CUPS: /etc/init.d/cupsys restart

    CUPS configuration file: /etc/cups/cupsd.conf

    CUPS error log: /var/log/cups/error_log. (Change 'LogLevel warn' to 'LogLevel debug' in /etc/cups/cupsd.conf, then restart CUPS, for more verbose messages in the error log.)

    Configuration for Printing to Windows Printers

    Check you can connect to the Windows system: smbclient -L <computer-name> -N. If WINS isn't available you need to additionally specify the IP address with -I <IP-address>.

    Verify that your installation of CUPS has the SMB backend by looking for a particular symbolic link: ls -l /usr/lib/cups/backend/smb. If this symbolic link doesn't exist, create it: ln -s /usr/bin/smbspool /usr/lib/cups/backend/smb

    Further Information

    CUPS Software Administrators Manual: local-host:631/documentation.html or

    CUPS Software Users Manual: includes forums for specific printer makes

    CUPS Software Users Manual, localhost:631/documentation.html

    Setting Up CUPS under Debian GNU/Linux:

    HP Linux Printing Project:

    Debian and Windows Shared Printing mini-HOWTO: (this is a good introduction)



    Configuration for locally attached scanners

    If the scanner uses a USB interface, if its vendor ID and product ID are recognised by the system and it doesn't require a firmware file adding then it will likely just work without any of the following configuration. Key to this recognition is whether the configuration file relative to the scanner's family contains the vendor ID and product ID of the particular scanner.

    You can find information about support in the latest upstream version of SANE for particular scanners at You can find (briefer) informatiion about support in Debian Etch's version 1.0.14 of SANE for particular scanners at

    Identify information about the scanner and the system

    There are a number of different methods used by the system to access the scanner, depending on the interface it's attached to

    There are different means of locating the scanner dependent on interface

    Identify the means being used to access the scanner, its location, its backend and whether it knows this scanner. Use the following, possibly whilst root


    Some USB-attached scanners require firmware loading into them each time they're turned on.

    Go to and look up the scanner to see which backend is required and thus the name of the backend config file /etc/sane.d/<backend name>.conf. Bear in mind this information is for the latest upstream SANE version, not the older version 1.0.14 in Debian Etch.

    There might be some firmware information in the 'Comment' field but it won't be much. It seems if it appears there then it won't be in the man page.

    Click on the link for the backend and be taken to a man page (or use your system's man page). If firmware is required there should be a 'FIRMWARE FILE' section with the firmware filename, suggestions of to get it, where to create the directory for it and save it - attributes that are defined in the backend configuration file.

    Note: the man pages on the web say to put the firmware file in /usr/local/share/sane/<backend name>/" but Debian instead requires them in /usr/share/sane/<backend name>/

    Some firmware files are freely redistributable and so are available from the backend homepage, linked to from the 'Backend' column. Most are not. You might find the uncompressed firmware file in these locations on the CD that came with the scanner or on a Windows system that has the scanner driver installed. Otherwise, you might find the Windows installer program, from which you can get the firmware file, on the CD that came with the scanner, the scanner manufacturer's web site or elsewhere. You might need to use one or a combination of these methods to get the firmware file from the Windows installer file:

    Test the scanner

    This is the syntax:
    scanimage -d <backend-name>:<location> --format <saved image format> > <saved image filename>

    These are example commands you might use:

    Backend configuration

    The backend is specific to the scanner manufacturer and sometimes the model or scanner's chipset. The means of accessing the scanner and possibly other options must be defined in the backed configuration file, /etc/sane.d/<backend-name>.conf. The backend for most Hewlett Packard scanners is called 'hp', see; The backend for most Epson scanners is called 'epson', see


    Users need to be a member of the group scanner.

    Device permissions:

    Configuration for sharing a scanner

    See the scanning section in our 'Server Setup with Debian 4.0 Etch' document.

    Configuration for connecting to a remote scanner


    Using the command-line

    This is the command's syntax:
    scanimage -d <backend-name>:<location> --format <saved image format> > <saved image filename>.

    These are example commands you might use:

    Using GNOME

    Applications → Graphics → XSane Image scanning program


    Log files

    SANE_DEBUG_NET=3D255 scanimage -L

    Further Information

    SANE Frequently Asked Questions:

    For a detailed description of each backend's configuration file see the relevant backend manual page, they're called 'sane-<backend-name>' (e.g. sane-epson and sane-hp).

    Permission information: /usr/share/doc/sane-utils/README.debian

    Various documents in /usr/share/doc/xsane/html/ or /usr/share/doc/xsane-common/html/

    Man pages: sane-usb, sane-scsi

    XSane newsletter and mailing list:

    Digital Camera (with USB interface)

    You need to be a member of the group 'camera'.




    Further Information

    The Waikato Linux Users Group, Digital Camera Setup:

    gphoto2 supported cameras:

    'Digital Camera Support for UNIX, Linux and BSD' by Hubert Figuière:

    'SB Digital Camera HOWTO' by Dave Kelly:

    Digital Video Camera (with IEEE1394 / FireWire / i.Link interface)

    See also the 'video editing' section.


    Further Information

    IEEE 1394 for Linux:

    The IEEE1394 Digital Camera List:

    Dan Dennedy's blog, Kino developer:

    Digital Video Broadcasting (DVB-T / Freeview)

    This section is specific to DVB-T as that is the only DVB equipment I have access to but the procedures are theoretically very similar for DVB-C and DVB-S. Some of it is also UK-specific.


    The Digital Video Broadcasting Project:

    Wikipedia on DVB:

    There are many forms of DVB, these are typical:

    DVB receiver device

    Devices will either be a card with a PCI interface to fit inside a computer or a portable device with USB interface. Choose carefully as not all devices are supported. From my limited experience I found the PCI Hauppage Nova-T range well supported. A typical example with USB devices is currently the Freecom DVB-T USB Stick 25451 revision 3 is supported but not revision 4 as it's based on a completely different chipset.

    USB interface

    Identification (by the kernal and yourself) is important and is all about the vendor ID and product ID.

    PCI interface

    Identification (by the kernal and yourself) is important and is all about the PCI ID.


    Some USB devices require firmware loading into them when they're turned on for them to work. Predominantly this firmware won't be available under a completely free licence so won't be included in Debian. If the device needs firmware you need to download it manually and save it in /lib/firmware.
    dmesg|grep dvb might give you clues such as 'dvb-usb: did not find the firmware file. (dvb-usb-wt220u-fc03.fw)' and 'dvb-usb: downloading firmware from file 'dvb-usb-wt220u-fc03.fw'' has information about required firmware for particular devices including links to download some firmware. Additionally you can download other firmware from


    For the UK, get localised aerial advice from

    You are likely to receive an aerial bundled with a USB device but it may not be good enough. A well recommended indoor aerial is the Telecam TCE2000 (currently £10 from Argos in the UK) or the version with the bundled amplifier the TCE2001 (currently £20 from Argos).

    Kernel Driver

    V4L-DVB - Linux DVB driver - /


    Configuration - command-line

    For the UK, get localised transmitter (multiplex) advice from; transmitter (multiplex) information from; band channel to frequency information from

    The frequencies of channels depend on your local transmitter. Scan your local transmission (the frequency of which we get from a file) and save the resulting list of channels you can receive in channels.conf (alternatively has scan and channel lists for the UK):
    scan /usr/share/doc/dvb-utils/examples/scan/dvb-t/<your country and transmitter name> | tee ~/channels.conf

    Make a shortcut to channels.conf for the channel changing command 'tzap' to use:
    mkdir ~/.tzap
    cd ~/.tzap
    ln -s ~/channels.conf channels.conf

    Make the same shortcut to channels.conf for other programs you'll use to watch DVB streams, such as gxine and xine in ~/.xine; mplayer in ~/.mplayer (though mplayer prefers ~/.mplayer/channels.conf.ter)



    (This requires mplayer be installed)

    Get channel names (e.g. BBC ONE) and PIDs (e.g. 600 601):
    cat ~/channels.conf
    For example: BBC ONE:754166670:INVERSION_AUTO:BANDWIDTH_8_MHZ:FEC_3_4:FEC_3_4:QAM_16:TRANSMISSION_MODE_2K:GUARD_INTERVAL_1_32:HIERARCHY_NONE:600:601:4168 where the channel name is BBC ONE; the frequency to tune to is 754166670 Hz; the video PID is 600; the audio PID is 601.

    Tune a frequency and program (assumes you only have one DVB device attached):
    tzap 'BBC ONE'
    (this will also tell you the frequency (in Hz), video and audio PIDs (though not in hex not decimal))

    Play / decode a stream (the syntax is mplayer dvb://[card_number@]channel). For example:
    mplayer dvb://"BBC ONE"
    ('h' and 'k' select previous and next channel).

    Save a stream. "The handy thing about digital TV is, it comes in as a digital stream that you can save right away to your harddisk without any changes necessary to it. Therefore, hardly any CPU resources are needed -- just a lot of disk space (a few GB per hour as the stream is MPEG-2 which is not as compressed as, for example, DivX/MPEG-4)". Use either of the following:

    For statistics of what's coming in for each channel and PID, either use dvbtraffic (you need tzap working in the background for this) or dvbdate.


    The only simple players available to play DVB are gxine, mplayer / mplayer-nogui, xine-ui and vlc. VLC wants 'transponder/multiplex frequency' and 'transponder symbol rate in kHz' which I don't understand; other programs are content with a channels.conf. xine-ui and mplayer / mplayer-nogui don't have a GNOME-compatible interface.


    Tune a channel / tune to a frequency:
    tzap 'BBC ONE' -r
    Leave it running and continue in a different terminal.

    Use dvbsnoop for debugging or seeing what's occuring with a DVB device (i.e. tuning works? data coming in? signal strong enough?)

    dvbsnoop -s pidscan

    dvbsnoop -s bandwidth <PID> (you can use -pd <mode> to alter the verbosity - specify a mode of 0 for no output, 9 for very verbose, the default is 6)

    dvbsnoop <PID> - see if you receive something

    Webcam / Video Conferencing / Video Cameras

    Cameras branded for a particular manufacturer can have any one of a number of different chips inside that require completely differing Linux kernel device driver modules. Support for devices depends on the USB vendor and product IDs of the device rather than the name on the box (unless the device isn't USB-attached). Some digital still cameras have a webcam mode but they aren't so likely to be supported.

    Webcams have both a camera controller chip and an image sensor chip, both must be supported by the Linux kernel module device driver.

    Hardware Suppliers

    These manufacturers have Linux-specific information on their web sites:

    Logitech - This site is good. They list all their webcams and corresponding Linux kernel device driver modules.

    Creative -

    Polaroid -

    Linux Kernel Device Driver Modules (those built into the base kernel and those installed and loaded separately) and Associated Utilities

    First off, try connecting the camera and see if it works with one of the applications listed further on, such as Camorama, before you think about installing a device driver module. There's a chance the relevant device driver module is built into the kernel and will just work for your webcam. If it doesn't work you can use information from lsusb, documentation that came with the webcam, and the web, to help ascertain the chipset within the camera and thus the appropriate Linux kernel device driver module required. Debian may then have appropriate device driver packages to install.



    Users belonging to the 'video' group can access video devices.

    (TODO: How do I list attached V4L devices?)

    Video Editing




    CD writing - writing data files to CD



    cdrdao at least, and possibly other software, appreciates a symbolic link called /dev/cdrecorder pointed to the CD/DVD device. Create it, as root, using this command: ln -s /dev/hdc /dev/cdrecorder (replace hdc with the device name of your drive) (Note: this symbolic link gets lost).


    Further Information

    CD-Writing HOWTO by Winfried Trümper:

    mkisofs manual page:

    DVD writing - writing data files to DVD


    Usage - command-line

    For most usage of growisofs, follow the instructions as per genisoimage. However the differences from the genisoimage command line are:

    To master and burn an ISO9660 volume with Joliet and Rock-Ridge (Unix permissions) extensions on a DVD:
    growisofs -Z <device> -R -J <files>

    To master and burn an ISO9660 volume with Joliet and without Rock-Ridge extensions on a DVD:
    growisofs -Z <device> -J <files>

    To append more data to same DVD:
    growisofs -M <device> -R -J <more files>
    Make sure to use the same options for both inital burning and following sessions.

    To use growisofs to write a pre-mastered ISO-image to a DVD:
    growisofs -dvd-compat -Z <device>=image.iso

    To nullify the media, for security reasons, rather than merely blanking it:
    growisofs -Z <device>=/dev/zero

    Further Information

    growisofs instructions:


    Accessing CD and DVD media

    (with pmount installed, do we even need to do this?)
    You need the device itself (i.e. /dev/hdc, but this may differ on your system) to be a member of the 'cdrom' group (not also its generic device name and mount points) and you to also be a member of the cdrom group, to be able to access it.

    Copying Audio CDs



    To read/play audio CDs, software CD players access the device directly, rather than mounting it, so as long as you have access to the device (see Accessing CD and DVD media) you should be able to play CDs.

    Copying an audio CD to WAV files on hard disk then to another audio CD

    Further Information

    Copying DVD Movies

    How you copy a DVD movie will likely depend on what type of disc it is. Mostly they will be either single sided, single layer 'DVD-5' (roughly 5GB capacity), or single sided, dual layer 'DVD-9' (roughly 9GB capacity). For example a complete, uncompressed, copy of a DVD-9 disc will require a dual layer DVD writer and dual layer media. If you don't have these you will need to leave some parts out of the copy and/or compress the movie.

    DVD disc to hard disk to DVD disc




    To extract a whole movie DVD:

    To extract single movie files (chapters) from a movie DVD:

    Note: If you insert a blank DVD it'll be mounted, because that's what's done with blank discs by default; if you then record a movie to that disc, you won't be able to play it in the usual way of playing DVDs, because DVD movies aren't mounted when played; in this situation eject and re-insert the disc for it to be treated in the way DVD movies are supposed to be.


    vobcopy instructions:

    (yet to be fully checked out) 'DVD ripping and transcoding with Linux':

    (yet to be fully checked out) 'DebianLinux.Net :: Multimedia Projects':

    ffmpeg ( can do 2-pass VBR DVD-friendly MPEG2 streams.

    DVD disc to a compressed format

    A suggested ripping strategy:

    The time it takes to transcode is directly proportional to the power of the CPU(S) in the computer.



    Thoggen encodes on the fly (ripping and transcoding in one go). dvd::rip offers both encoding on the fly or ripping to disc first and then transcoding which it claims doesn't stress the DVD drive as much.


    By default dvd::rip doesn't provide a menu entry. To create one in the Applications → Sound & Video menu, as root create the file /usr/share/applications/dvdrip.desktop and add the following:

    [Desktop Entry]

    Partitioning Disks




    Applications → System Tools → GParted

    ZIP drives and disks



    External USB drives and some configurations of internel ATAPI drives are seen by the system as SCSI drives; other configurations of internel ATAPI drives are seen by the system as ATAPI drives.

    As this is removable media, unless it is important for you to retain permissions on the zip disk, I recommend formatting it with Windows FAT16 file system so that it is readable on both Unix and Windows systems. This won't save file permissions on the disk - all files will be readable by everyone.

    The file system on the zip disk for FAT16 formatted disks has to be in primary partition 4.

    You could create a system for dealing with both Windows and Linux formatted zip disks by creating an additional mount point for the Linux formatted disks, an additional /etc/fstab entry for it, and with the Linux partition in partition 1.

    Users need to be a member of the group floppy, which Debian's initial user is at least.

    You can make the eject command easier to use (such that you only have to type eject zip to eject a disk) by creating a shortcut like this, as root, using your particular partition reference: ln -s /dev/hdd4 /dev/zip.

    The average user does not have permission to use eject. To allow them to eject disks, change the eject program's permission via setuid, whilst root: chmod a+s /usr/bin/eject.


    When partitioning a disk, it needs to be primary partition number 4 and of filesystem type FAT16.

    format a disk:

    mount and unmount / eject a disk


    "I have a ATAPI Zip Drive (recognized as ATAPI Floppy) so to make it work with Debian and kernel 2.4.3 I had to switch my BIOS setting from "Autodetect" to "None" (just the Zip channel of course), and mount it using mount -t vfat /dev/hdb"

    The Windows LDM Problem - "A Zip disk formatted with Windows 2000 or Windows XP will be partitioned using Microsoft's new Logical Disk Manager (LDM) which is completely different from the standard DOS partitions we are all used to."
    "Because this is a new and undocumented partitioning scheme, it is not supported by other operating systems (including other versions of Windows). There is a Linux kernel patch which appears to solve this problem."

    Further Information

    Zip Drive Mini-HOWTO by Kyle Dansie:

    2c tip: Running an ATAPI Zip Drive:

    Working with Windows file systems

    Windows uses FAT32 or NTFS filesystems. Linux FAT32 support is complete but NTFS support is patchy.



    Create a mount point for each Windows partition (i.e. # mkdir /media/windows-c)

    FAT32 Filesystems

    The Linux kernel includes support for FAT (FAT12, FAT16, FAT32) filesystems.

    Mounting manually from the command-line
    Mounting manually from within GNOME
    Mounting automatically on system startup

    Add a line to /etc/fstab such as from the following examples:

    Using the kernel FAT32 driver (vfat), with liberal permissions (umask), read/write access (rw), mounted automatically on boot for everyone (auto), non-root users unable to mount it (nouser):
    /dev/hda1 /media/windows-c vfat umask=000,auto,nouser,async,rw 1 0

    Using the kernel FAT32 driver (vfat), with liberal permissions (umask), read/write access (rw), not automatically mounted on boot (noauto), non-root users able to mount it (user):
    /dev/hda1 /media/windows-c vfat umask=000,noauto,user,async,rw 1 0

    NTFS Filesystems

    Options available for accessing NTFS filesystems

    Using the mount capabilities of the kernel driver
    Mounting manually from the command-line

    mount -t ntfs /dev/hda1 /media/windows-c

    Mounting manually from within GNOME


    Mounting automatically on system startup

    Add a line to /etc/fstab such as from the following examples:

    Using the kernel NTFS driver (ntfs), with liberal permissions (umask), read only access (ro), mounted automatically on boot for everyone (auto), non-root users unable to mount it (nouser):
    /dev/hda1 /media/windows-c ntfs umask=000,auto,nouser,async,ro 1 0

    Using the kernel NTFS driver (ntfs), with liberal permissions (umask), read only access (ro), not automatically mounted on boot (noauto), non-root users able to mount it (user):
    /dev/hda1 /media/windows-c ntfs umask=000,noauto,user,async,ro 1 0

    Using the mount capabilities of the ntfsprogs package
    Mounting manually from the command-line

    mount -t ntfs-fuse /dev/hda1 /media/windows-c

    Mounting manually from within GNOME


    Mounting automatically on system startup

    Add a line to /etc/fstab such as from the following examples:

    Using the Linux-NTFS project's ntfsmount (ntfs-fuse), with liberal permissions (umask), read only access (ro), mounted automatically on boot for everyone (auto), non-root users unable to mount it (nouser):
    /dev/hda1 /media/windows-c ntfs-fuse umask=000,auto,nouser,async,ro 1 0

    Using the Linux-NTFS project's ntfsmount (ntfs-fuse), with liberal permissions (umask), read only access (ro), not automatically mounted on boot (noauto), non-root users able to mount it (user):
    /dev/hda1 /media/windows-c ntfs-fuse umask=000,noauto,user,async,ro 1 0

    Further Information

    Linux-NTFS - Kernel Driver and Userspace Utils Status:

    Linux-NTFS kernel driver Roadmap:

    Linux-NTFS - Why does writing support take so long?:


    The Ntfsresize Frequently Asked Questions:

    Running Windows Programs



    Because the many separate wine packages have been merged into the one, if upgrading from Debian's wine you may have to first remove libwine, libwine-*, wine-utils and wine-doc before upgrading wine otherwise you might see a problem like "trying to overwrite '/usr/lib/wine/', which is also in package libwine".


    Some applications will run fine, others require some minor configuration to Wine or the application, others will run but have parts of them that don't work, others won't run at all.

    A Windows program you're trying to run may not work because supprting DLL files are missing. If you copied the program from a Windows system where it was installed you can get these from %WINDIR%\System, %WINDIR%\System32, %PROGRAMFILES%\Common Files\System(?) where the program will have placed them upon installation. The Wine Application Database (AppDB),, is a useful resource on which such DLL files are required. Copy them to the program's directory (not the Wine directory).


    $ winecfg

    Registry editor: $ regedit

    Wine control panel: $ wine control

    With default settings, C:\ will be ~/.wine/fake_windows.

    Further Information

    Wine User Guide:

    Sharing files and printers with networked machines using Windows or Samba


    Mounting shares from a Samba server

    Using the command-line

    To query the network for Samba servers, use findsmb. For each server found, it displays its IP address, NetBIOS name, workgroup name, operating system, and SMB server version.

    To connect to a Samba share, you can either

    Using GNOME

    When you installed Samba components you were asked for the workgroup name, if the name you entered is not still correct for the current network then change the workgroup setting in /etc/samba/smb.conf.

    You can either

    Mounting shared disk space on a permanent basis for mutiple users across multiple computers

    This is for a share that will be automatically mounted at startup, available to everyone in a specified group. Root mounts it but files take permissions of whomever created them. The mount is defined once, in /etc/fstab (alternatively, instead of using fstab, you could mount the share individually when logging in). (for some reason this doesn't appear in Disk Mounter or GNOME's file picker, where as it does under some circumstances).

    This is what to do on the workstation, for what to do on the server see Server Setup with Debian 4.0 Etch.

    Further Information

    mount.cifs man page:

    The Samba project: See 'The Official Samba-3 HOWTO and Reference Guide' and the 'Docs and Books' section.

    Accessing an LDAP server

    Authenticate with a central server rather than using disparate local tools such as passwd and login; a replacement for NIS.



    See these worthwhile guides for configuration instructions:

    Accessing remote files from an NFS server




    Further Information


    The Network File System:

    man nfs

    Laptop Computers

    All Laptops


    See also packages that relate to laptops in the X Windows: section.



    Before you can use GSynaptics preferences you need to add Option "SHMConfig" "true" to the Driver "synaptics" section of /etc/Xorg/xorg.conf.

    Further Information

    Linux On Laptops:


    debian-laptop mailing list:

    Laptop Mode Tools:,, "horribly horribly broken, for suspend software check, or patches at, or "run this arbitrary code in ring 0""

    IBM Thinkpads

    Connecting and synchronising PDA's in general






    Connecting and synchronising a PDA running Windows CE

    This describes connecting and synchronising using USB, not serial or infrared.






    Default IP addresses are for local and for remote.



    Log file: /var/log/syslog.

    Further Information

    SynCE - Linux USB HOWTO:

    Using the SynCE plugin for MultiSync:

    Window Manager

    Debian's GNOME comes with GNOME's house window manager (Metacity) and theme.

    ADSL modems

    This section is currently incomplete.

    USB ADSL modems can be used, but the process requires a number of manual steps depending on which firmware is in the modem. GNOME's modem networking configuration applies to analog modems, not USB ADSL modems. Work is underway in the summer of 2006 to seamlessly integrate USB ADSL modem configuration into gnome-network-manager. Alternatively you could use an ADSL modem with a CAT-5 interface, which would circumvent these difficulties.

    Info on various modems:

    Alcatel Speedtouch modems


    Analog modems

    Whether it works or not will initially depend on whether the modem is recognised by the operating system. If it's an internal PCI modem, use lspci -v, whilst logged in as root, to see if it has been recognised.
    Check with the Debian GNU/Linux device driver check page to see if a driver is recommended for the modem. If there isn't then don't waste time on it, buy an external serial modem.



    You may need to create a symbolic link (AKA a shortcut) to the device (which, for a serial modem, would be referred to as /dev/ttyS0 if it were using the 1st serial port, /dev/ttyS1 were it using the 2nd) from /dev/modem, for example: ln -s /dev/ttyS0 /dev/modem.


    If the modem isn't supported out-of-the-box you could try downloading and running scanmodem from It advises looks for the modem and if it finds it may advise where where to get drivers from.

    Further Information

    Dial-up networking with an analog modem



    Users have to be a member of the group 'dialout' and may also have to be a member of the group 'dip' to use the modem


    Desktop → Administration → Networking → Connections → Add → Forward → Modem (PPP) and follow the prompts for entering the details for the Internet service provider.
    Note that this populates the /etc/wvdial.conf file with the information you provide; if your login details require no password, a 'Password' section won't be created and you'll get an error message, requiring you to manually add a 'Password = none' setting in the respective section of /etc/wvdial.conf.

    Add the Modem Monitor (? Modem Lights ?) applet to the panel, this gives you a means of connecting and disconnecting from within GNOME.


    Use either of these methods:



    Use Modem Lights


    If you've used wvdialconf to configure, use wvdial to connect;
    If you've used pppconfig to configure, use pon and poff to connect and disconnect.


    If you're using pppconfig, pon and poff, then try plog (" shows you the last few lines of /var/log/ppp.log. If that file doesn't exist, it shows you the last few lines of your /var/log/syslog file, but excluding the lines not generated by pppd.")

    Further Information

    man pages: wvdial, wvdial.conf, pppconfig, pppd, pon, poff, plog.

    PCMCIA / PC Card / CardBus



    Start PCMCIA services: /etc/init.d/pcmcia start.

    [not sure if this is necessary with pcmciautils and udev] To have a PCMCIA network cards' networking started and stopped when the card is inserted and removed, use the following in /etc/network/interfaces:

    mapping hotplug
    	script grep
    	map <network device name>


    Devices with Bluetooth include phones, PDAs, keyboards and mice.




    File Transfer



    The version of Bluetooth you're using can make a big difference. For a list of improvements in successive Bluetooth versions (i.e. faster speed, lower power consumption) see To check which version of Bluetooth you're using, look for the 'LMP version':


    bluez-gnome provides Desktop → Preferences → Bluetooth Preferences which you use to configure the mode of operation, adapter name and class of device.


    Bluetooth service manipulation: /etc/init.d/bluetooth start, /etc/init.d/bluetooth stop and /etc/init.d/bluetooth restart

    Set the device name in /etc/bluetooth/hcid.conf.

    Check whether the Bluetooth adapter is up and running:
    hcitool dev
    You should see the adapter device name and MAC address.


    There is a list of supported hardware at

    If you have trouble connecting look in /var/log/syslog.


    Examine your Bluetooth adapter

    Using the command-line

    Examine all connected adapters:
    hciconfig -a.

    Using GNOME

    This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager.

    Scan for remote devices

    Using the command-line

    Get the MAC address and name of available devices:
    hcitool scan

    Using GNOME

    This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager. However you can get something like this when sending a file where you choose the device to send to.

    Ping a remote device

    Using the command-line

    # l2ping <MAC address of remote device>

    Using GNOME

    This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager which will be included in the gnome-bluetooth package.

    Bond / pair with a device

    You can bond with devices such as Bluetooth keyboards or phones.

    Using the command-line

    Connect to the device:
    # hcid connect <MAC address of remote device>

    Setting a PIN/passkey using the command-line isn't supported so use the GNOME PIN helper, bluez-gnome, whose bonding dialog should appear in the GNOME Notification Area.

    Using GNOME

    If you have the bluez-gnome package's Bluetooth Applet running in the Notification Area it will prompt you for a PIN when a device tries to connect. You cannot initiate a connection from the Bluetooth Applet. Initiation will be possible with the forthcoming GNOME Bluetooth Manager.

    Service discovery of devices around you

    Using the command-line

    sdptool browse <MAC address of remote device>

    Using GNOME

    This isn't currently possible with GNOME and it doesn't look as though it's planned to be part of the forthcoming GNOME Bluetooth Manager.

    Serial connections

    Users must be in group 'dialout' to have privileges to use these devices.

    Using the command-line

    Some features require the Bluetooth device to appear as a traditional serial interface.

    Create /dev/rfcomm0 bound to port 3 (the dial-up networking port) on a remote device:
    # rfcomm bind 0 <MAC address of remote device> 3

    Check how the rfcomm ports are setup:

    Release /dev/rfcomm0:
    # rfcomm release 0

    Using GNOME

    This is planned for inclusion in the forthcoming, as yet unwritten, GNOME Bluetooth Manager.

    Transfer files from a device to a computer

    Using the command-line

    Run obexpushd and it will sit there waiting for files to be sent from the device, which it saves to the current working directory.

    Using GNOME

    This requires the gnome-bluetooth package. Run Applications → Accessories → Bluetooth File Sharing. This will provide a Notification Area applet. Send a file to the computer, the file will be saved to the desktop and a dialog will appear asking whether you want to open or delete the file. You may have to set the mode of operation by right-clicking on the Bluetooth Notification Area applet (the other applet) and choosing 'Visible and connectable for other devices'.

    Transfer files from a computer to a device

    Using the command-line

    ussp-push <MAC address or name of remote device>@10 <local filename> <filename to give it on remote device> (assumes the OBEX File Transfer channel is 10, which you can check with sdptool browse <MAC address of remote device>)

    Using GNOME

    This requires gnome-bluetooth and the updated nautilus-sendto not available in the stock Debian. You right-click on a file and choose 'Send To...' and are able to choose Bluetooth from the 'Send as...' list and the device from the 'Send to...' list.

    Internet access through a GPRS or 3G / W-CDMA phone for a computer

    See Internet access through a GPRS or 3G / W-CDMA phone from a computer over Bluetooth

    Internet access through a computer for a phone


    Linux Unwired by Roger Weeks, Edd Dumbill, Brian Jepson:

    Connect a Bluetooth keyboard

    Initiate the process from the computer.

    Using the command-line

    (the Debian documentation mentions loads of patches but i didn't need them to get it working)

    # hidd --connect <MAC address of remote device>

    Though you can provide the pin using the command-line, the documentation warns against it, so use the GNOME PIN helper bluez-gnome. The bonding dialog appears in the GNOME Notification Area, you type the key in there, then type it on the Bluetooth keyboard and press [Enter].

    Using GNOME

    I Don't see how it can be initiated from the computer using GNOME, without the proposed GNOME Bluetooth Manager which isn't yet available, so initiate it from the keyboard.

    Connect a Bluetooth mouse

    Initiate this from the computer.

    Using the command-line

    # hidd --connect <MAC address of remote device>

    Using GNOME

    This isn't currently possible with GNOME, it is planned for inclusion in GNOME Bluetooth Manager which will be included in the gnome-bluetooth package.

    Further Information

    Wireless Networking (Wi-Fi / WiFi) - device setup

    Getting a wireless adaptor working depends on its chipset. Basically, if the chipset is made by one of the large manufacturers it is less likely to work as the large manufacturers won't provide documentation on their chips to free software device driver authors; where-as if the chipset is from a smaller, Taiwanese, manufacturer then it is likely to work as those manufacturers provide the documentation.

    Note: PCMCIA cards will need PCMCIA services installed and working, see the PCMCIA section.


    Linux Kernel Device Driver Modules, Firmware and Accompanying Utilities

    In order of ease of use, if the drivers for your device's chipset are already included in the Debian kernel then they'll be automatically loaded when you plug the device in and it should just work; Or they may be available as ready built Linux kernel device driver modules that you need to install; Or they may only be available in Debian as source code for modules which you need to install and compile. Or they may require you to seek drivers outside of the Debian repositories; Or they may not have any free software drivers developed for them and so require you to load Windows drivers using ndiswrapper.

    For Using The Device


    The adapter device name will likely be of the type /dev/eth1 or another eth number. Though adapters with Atheros chipsets will likely instead be /dev/ath0 (or /dev/wifi0?).

    PCMCIA cards may need to be allowed a bit of time to register before they can be used.

    Check if the device is already usable

    If using NetworkManager (in GNOME)

    You need to be in the group 'netdev' otherwise it won't appear in the GNOME Notification Area.

    To get the best out of NetworkManager in GNOME, you need to disable all other means of configuring those connections / adapters you want NetworkManager to manage (wired and wireless, but not yet VPNs)

    You'll need to restart NetworkManager after making these changes by right-clicking on the applet and disabling, then enabling, 'Enable Networking'.
    Now NetworkManager will sense whether you want to use wired or wireless connections and remember wireless keys.

    If using GNOME's built-in network administration

    Desktop → Administration → Networking → look for 'Wireless connection'

    Configure it with the Properties option; enable it with the Activate option; if there are wirelss access points available they will appear under the drop down list 'Network Name (ESSID)'.

    If using the command-line

    Use iwconfig and ifconfig -a to see details of any recognised device. Use iwlist scan to scan for networks.

    See also iwconfig, iwlist, iwspy, iwpriv.

    If it isn't already working

    Configure it using either


    Add @include common-pamkeyring at the end of /etc/pam.d/gdm so that when logging in using GDM this module will be used. You can similarly do so in corresponding config files for other services you use for logging in.

    Further Information

    Jean Tourrilhes' Linux Wireless Tools and Wireless Extensions site:

    'A survey of Linux and WiFi': - good intro to the state of WiFi hardware support at the present time and a list of currently available devices with details of chipsets and drivers.

    Wireless Networking (Wi-Fi / WiFi) - auditing



    For Kismet to start up you need to specify the wireless network adapter driver and its device name in /etc/kismet/kismet.conf, i.e. 'source=ipw2200,eth2,centrino' or 'source=madwifing_ag,wifi0,linksys'. The syntax for this is described in the 'Capture Sources' section of /usr/share/doc/kismet/README.gz.



    You need to run kismet as root.

    Useful Commands
    Capturing packets

    If you have a system with a single partition for the Debian system and another for home directories (rather than a separate /var partition or both on a single partition), you should take care not to allow Kismet logs to use up all the available disk space on the system partition by its logging to /var.


    macchanger -a -A ath0

    Further Information

    aircrack-ng has a lot of documentation at

    Internet access through a GPRS or 3G / W-CDMA phone from a computer over Bluetooth

    This requires working Bluetooth packages and Bluetooth adapter, see the Bluetooth section.



    To use pon ordinary users need to be a member of the group dip.

    Create /etc/ppp/peers/gprs-or-3g with the following contents:

    noauth			# Do not require the peer to authenticate itself. This option is privileged.
    connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs-or-3g-connect"
    disconnect "/usr/sbin/chat -v -f /etc/chatscripts/gprs-or-3g-disconnect"
    silent			# "needed this to remove problems with loopback on connecting"
    debug				# Log to /var/log/messages
    /dev/rfcomm0	# The device specified with 'rfcomm bind' or in /etc/bluetooth/rfcomm.conf
    115200			# The speed at which to connect, in kilobaud
    defaultroute	# Use this network as the default route, written into the routing table
    usepeerdns		# Use the DNS servers from the remote network

    See man pppd for help with these commands.

    Create /etc/chatscripts/gprs-or-3g-connect with the following contents:

    ECHO		ON
    ABORT		'\nRINGING\r\n\r\nRINGING\r'
    SAY		'Starting GPRS connect script\n'
    # Get the modem's attention and reset it:
    ''              'ATZ'
    # ? TIMEOUT         12
    # E0=No echo; V1=English result codes
    OK              ATE01V1
    # Here you can set the Access Point Name (APN) or leave it commented
    # out and use the phone's default GPRS or 3G / W-CDMA access point.
    # Or you could create separate scripts each specific to a provider. 
    # SAY	'Setting Access Point Name...\n'
    # OK	'AT+CGDCONT=1,"IP","<operator APN>"'
    # OK	'AT+CGDCONT=1,"IP","internet"'
    # OK	'AT+CGDCONT=1,"IP","orangeinternet"'
    # OK	'AT+CGDCONT=1,"IP",""'
    # Dial. If no specific access point is defined above this will call the default
    # GPRS or 3G / W-CDMA access point.
    SAY		'Dialling...\n'
    # The '1' in here is the CID number of the GPRS profile:
    OK              ATD*99***1#
    CONNECT		''

    Create /etc/chatscripts/gprs-or-3g-disconnect with the following contents:

    ABORT		"BUSY"		
    ABORT		"ERROR"		
    SAY		"\nSending break to the modem\n"	
    ""		"\K"		
    ""		"\K"		
    ""		"\K"		
    ""		"+++ATH"	
    ""		"+++ATH"	
    ""		"+++ATH"	
    SAY		"\nDisconnected\n"

    Get the MAC address of the phone:
    hcitool scan

    Bond / pair with the phone. Connect to the phone:
    # hcid connect <MAC address of remote device>
    Setting a PIN/passkey using the command-line isn't supported so use the GNOME PIN helper, bluez-gnome, whose bonding dialog should appear in the GNOME Notification Area.

    Find the phone's Dial-Up Networking channel:
    sdptool browse <MAC address of phone>

    Setup the port to the phone. You can do this one of three ways:


    Connect to the Internet:
    pon gprs-or-3g

    The phone asks for confirmation...

    For troubleshooting you can see what takes place using:
    tail -f /var/log/messages

    Disconnect from the Internet:
    poff gprs-or-3g

    Some points to note about UK Internet access using a mobile phone

    Linux kernel updates


    The linux-image-<architecture> package will install the most recent 2.6 series kernel available for that particular architecture and keep it updated when new versions are available. '486', '686', '686-bigmem' and 'k7' architectures are for single and multiprocessor (AKA SMP) 32-bit x86 (generically known as PC, i386, IA32, IA-32 or x86-32) processors. The 'amd64' architecture is for single and multiprocessor (AKA SMP) 64-bit Intel and AMD PC processors (generically known as x86-64 or x64). Debian includes kernels for many other architectures but I focus on these. The following describes how installing the generic kernel package will bring in the specific kernel package. These are upstream kernel version, Debian's actual package version 2.6.18.dfsg.1-12, upgradeable through Debian security updates to at least version 2.6.18.dfsg.1-24.

    The repository offers linux-image-2.6.26-bpo.2-<architecture>, which is their version 2.6.26-17~bpo40+1 (upstream version 2.6.26.?). These are the i386 and amd64 varients:

    This kernel includes Linux kernel device driver modules ipw2100 version ? (2.6.22 included 1.2.2) and ipw2200 version ? 2.6.22 included 1.2.0kmq).


    If you install any of these kernels they will be installed and your old kernel version retained with the new kernel set as the default in the GRUB boot menu. You can find out which CPU you have in your system with the command cat /proc/cpuinfo, under 'model name'.


    To see which compile-time options were set in your kernel, see the file /boot/config-<kernel version>-<Debian build version>-<architecture>.

    Further Information

    Changes in the 2.6 Linux kernel - prior to the present mainline kernel

    Changes in the 2.6 Linux kernel - the present mainline kernel

    'Debian Reference - Chapter 7 - The Linux kernel under Debian:


    Kernel Traffic:

    The Linux Kernel Mailing List (LKML):

    The Linux Kernel Archives:

    Bits from the kernel team - "Half-way between the Sarge release and the Etch freeze the Debian kernel team takes a look back at what already happened after the Sarge release and what you should expect for Etch" - 8 Mar 2006:

    Linux kernel compilation

    In most instances you won't ever need to compile a kernel but it may be advantageous to at some point.



    You must be a member of the group src.

    Further Information


    'Creating custom kernels with Debian's kernel-package system' by Kevin McKinley:

    Debian Linux Kernel Handbook:

    Portable audio players

    Some devices work as USB Mass Storage, like the small flash based players, others require a special driver. Some devices can instead run the free Rockbox software rather than their native software.

    Apple iPod (those running Apple software rather than Rockbox)


    "I just wish the various different writers of iPod libraries could get together make One iPod Library To Rule Them All instead of 4 different ones with their own little issues and problems."


    Connect an iPod and it auto mounts to /media/<name>, allowing you to read the files, whether its formatted with HFS+ (AKA 'Mac-iPod') or FAT32. Rhythmbox will automatically recognise it and catalogue its files. You can copy files off an iPod with gtkpod but it doesn't look as though you can with Rhythmbox.

    gtkpod (Applications → Sound & Video → gtkpod) expects to find the iPod at /mnt/ipod but the iPod will instead be at /media/<name> so you need to instead start it with gtkpod --mountpoint /media/<name> or use the IPOD_MOUNTPOINT environment variable.
    Then choose 'Load iPod(s)' → "Could not find iPod directory structure at '/mnt/ipod' If you are sure that the iPod is properly mounted at '/mnt/ipod', gtkpod can create the directory structure for you. Do you want to create the directory structure now?" → choose yes → iPod mountpoint → /media/<name>.
    You'll also be asked 'Model Select or enter your model'. You'll need to know the generation and model name. You're supposed to be able to read this from the directory on the iPod /iPod_Control/Device/Sysinfo but I found this was blank. Alternatievly there's a model number on the rear. i.e. 'Model No: A1136' whch is a fifth generation 30GB iPod Video but this wasn't in gtkpod's list so I chose '30GB Video Black XA146' fro it seemed to work ok.

    You can copy files off an iPod with gtkpod, despite the package description saying you can only copy to it. Right-click on music and choose 'Copy Tracks to Filesystem'. The default 'Filename Format:' didn't work out well so I created this one: %o.wav;%a/%A/%T - %t.mp3;%a/%A/%T - %t.m4a;%a/%A/%T - %t.aif which creates a sub-directory for the artist and for the album, I think only if the ID3 tags reflect this.

    Creative NOMAD/Zen/Dell DJ (Portable Digital Entertainment (PDE) protocol devices)


    libnjb is a C library and API for communicating with the Creative Nomad JukeBox and Dell DJ digital audio players. The protocol these devices use is presumably called PDE (Portable Digital Entertainment protocol) at Creative. Newer devices using the Microsoft MTP (Media Transfer Protocol) are NOT supported.

    One option...

    Another option - is this a hotplug variant or just a later version?...

    Players that use Microsoft MTP (Media Transfer Protocol) - includes Creative NOMAD/Zen/Dell DJ



    from the command-line
    from within GNOME

    Use Applications → Graphics → gtkam (I haven't successfully used it to download files though)

    Creative Nomad players


    iRiver (those running iRiver software rather than Rockbox)


    OpenVPN client

    For a full description of setting up and using a VPN server see our 'Remote Access' document at



    This describes how to connect to an OpenVPN server that uses a tun interface, PKCS12 certificate, LZO compression and TCP protocol.

    Setup the tunnel:
    # openvpn --dev tun0 --mktun

    # openvpn --remote <IP address of VPN server> --dev tun0 --pkcs12 <filename of certificate>.p12 --client --comp-lzo --proto tcp

    Proprietary and Other Software (Internet Explorer, Skype, etcetera)

    To-do: a warning

    Files under the directory /usr/local/ are not under the control of the Debian package management system so are safe from being overwritten when the system software is updated. This is where you install non-Debian software. Use the different sections there like so:
    source code: /usr/local/src/<package name>
    binaries: /usr/local/bin/<package name>
    libraries: /usr/local/lib/<package name>
    configuration files: /usr/local/etc/<package name>

    Microsoft Internet Explorer (MSIE, IE)

    Though Debian's Mozilla Firefox / Icedove is a far better choice of browser you might still want Internet Explorer for example to view specific web sites that won't allow access from other web browsers or for testing during web site development.

    This IE seems to be a stand-alone version. It uses Wine but Wine doesn't seem to be able to use it, at least as far as I can deduce so far. If you have Windows software installers that require IE then you should possibly install another IE into Wine manually.



    There isn't a package you can install using package management software. Instead you use IEs 4 Linux (IEs4Linux) which you download from and run using:
    tar zxvf ies4linux-latest.tar.gz
    cd ies4linux-*

    It will download Internet Explorer(s) from Microsoft and install into your home directory (or where ever you ran the installer from) and create a desktop shortcut. This doesn't install for all users of the system. You can have Internet Explorer versions 5.0, 5.5 and/or 6.0 and in the future 7.0; and Flash Player version 9.

    Further Information




    Add this Skype repository, for 32-bit x86 / i386 architectures only, to your sources list (/etc/apt/sources.list) (rather than downloading manually from
    deb stable non-free
    You can do this using Desktop → Administration → Software Properties or with this command:
    # echo "deb stable non-free" >> /etc/apt/sources.list

    The Skype repository provides the latest version of Skype whether that's a stable or sometimes but not always the latest beta release which isn't ideal.


    Skype wakes the CPU up too often and so consumes more power than most applications:

    Further Information


    Skype bug tracker:


    Miscellaneous annoying bugs in various software that have bothered me in a Debian 4.0 Etch desktop system

    Reporting Issues

    Reporting an issue to Debian

    Automated Method, Using GNOME

    Applications → Programming → Bug Report Tool.

    Manual Method

    If you know the name of the package you have an issue with, check whether your issue has already been reported by going to Under 'Viewing bug reports on the WWW' → 'What to search for:' put the name of the package you have an issue with and choose 'Find'.

    If you don't know the name of the package go to and choose 'Search package directories' or go there direct at Choose 'Keyword:' and enter the closest you know of to the package name. Under 'Distribution:' choose 'Stable'. Choose 'Search'. Under 'More Information on' <package name> → 'Check for Bug Reports about' <package name>.

    Checkout the list of bugs/issue reports. If you've found an unreported issue, you can send an email describing the issue to At the top of the message you need to use this syntax:
    Package: <package name>
    Version: <package version>
    Describe your issue...

    Further Information

    'How to report a bug in Debian':

    Further information

    Release Information:

    Release Notes:

    All software packages keep their documentation in /usr/share/doc/package-name. dwww (in GNOME, if you have dwww installed, choose Applications → Debian → Help → Dwww) is an easy way to browse this. There is usually a README.Debian file and a README file giving an introductions from Debian and from the package author, a changelog for the upstream package and a a changelog for the package upstream and a changelog for Debian-specific changes. Sometimes this documentation here is essential and useful, sometimes it is inadequate.



    Debian GNU/Linux Desktop Survival Guide by Graham Williams:

    Debian Wiki:, aggregate blog of developers:

    GNOMEFILES GTK+ software repository:

    If you have problems with a package you can search

    The Debian development announcements mailing list:

    The Debian development mailing list:



    ? irc://

    ? irc://

    List of all known bugs with a particular package:<package name>


    Log files

    Error logs are kept that can help understand when something is broken.

    When troubleshooting a problem it can be useful to keep a command-line window open displaying a program's log file, with entries appended in real time as the file grows, using: tail -f <log-file>.

    strace can be used to collect information about what a program does:
    strace -o <filename to save output to> <command>