Starting with the iPod Classics and the Video Nanos, libgpod needs an 
additional configuration step to correctly modify the iPod content. libgpod 
needs to know the so-called iPod "firewire id", otherwise the iPod won't 
recognize what libgpod wrote to it and will behave as if it's empty.

There are several ways to set up an iPod so libgpod can find its firewire id.

The preferred method is automatic. Make sure you have hal and libsgutils
installed before running configure/autogen.sh. If you built libgpod without
them, run configure/make/make install after you install them.

A hal callout and .fdi file will be built and installed. This will query an
iPod when it is plugged in and save the SysInfoExtended file in the proper
place. This should be entirely automatic. If you have trouble with this, see
the TROUBLESHOOTING file for some hints.

If you build with libsgutils but without hal, the next best method is mostly
automatic. You should have an ipod-read-sysinfo-extended tool available. Run
it with the iPod device path and the iPod mount point /mnt/ipod) as arguments.
For example:

    $ ipod-read-sysinfo-extended /dev/sda /mnt/ipod

This may require root privileges. It reads an XML file from the iPod and
writes it as /mnt/ipod/iPod_Control/Device/SysInfoExtended. More details on
this method can be found at http://ipodlinux.org/Device_Information.

Having the SysInfoExtended file created by ipod-read-sysinfo-extended or the
hal callout is enough for libgpod to figure out the iPod firewire id.

The last method requires more manual intervention. First, you need to
determine the firewire id of the iPod. To do that on Linux, plug in the iPod
in and run (with root privileges):

    $ lsusb -v | grep -i Serial

This should print a 16 character long string like 00A1234567891231. For an
iPod Touch, this number will be much longer than 16 characters, the firewire
ID is constituted by the first 16 characters.

On FreeBSD, there is a tool to get the serial number at:

    http://50hz.ws/dev/getserial.c

Once you have the serial number, edit /mnt/ipod/iPod_Control/Device/SysInfo,
creating the file if it does not exist. (Replace /mnt/ipod with the path to
where the iPod is mounted). Add a line like this to the SysInfo file:

FirewireGuid: 0xffffffffffffffff

Replace ffffffffffffffff with the serial number you obtained in the previous
step. Don't forget the 0x before the string. After you add the FirewireGuid to
the SysInfo file you need to rewrite the iTunesDB for the change to take
effect. For example, add a new song or adjust the playcount of an existing
song and save the changes in gtkpod.

Be careful when using applications which let you manually specify the iPod
model. They may overwrite the SysInfo file and undo the changes.

Finally, if you compiled libgpod from source, you can test that libgpod can
find the firewire ID on the iPod using the test-firewire-id program in the
tests/ dir of the libgpod source. For example:

    $ cd ~/src/libgpod/tests
    $ ./test-firewire-id /ipod/mount/point
