libipoddevice is a device-specific layer for the Apple iPod. It provides iPod-specific HAL event notification to applications, and along with objects representing an iPod, which gives the application access to properties and features of an iPod.
libipoddevice also provides a debugging program, ipod to view iPod device properties, listen for iPod HAL events, and safely eject iPods (iPods must be unmounted, then ejected).
In order for libipoddevice to detect an iPod, the iPod must be first mounted, and HAL must detect the mounted iPod volume. Best results come from a setup where gnome-volume-manager detects the presence of an iPod, and calls pmount-hal to mount the iPod. However, libipoddevice also has submount support, and should work with a submount/gnome-volume-manager setup as well.
libipoddevice does not provide any feature-specific iPod support, like reading/writing the iTunes Song Database (iTunesDB). This functionality is met by ipod-sharp, a Mono library that provides bindings to libipoddevice and feature-specific support.
libipoddevice requires HAL 0.5.2 or later, which requires a fairly new D-Bus, hotplug, and udev. Any system running GNOME 2.11/2.12 should meet these requirements however (SuSE 10, Ubuntu Breezy, Foresight Linux, Fedora Core 4). Also required are development packages for glib/gobject.
After obtaining sources from a tarball or CVS, extract/change into the root libipoddevice source directory, and, if from CVS:
$ ./autogen.sh --prefix=/usr
OR, if from tarball:
$ ./configure --prefix=/usr
$ make && sudo make install
configure should automatically detect if you have pmount enabled. However, you can specify custom unmount/eject commands by passing --with-unmount-command="/path/to/unmount %d and --with-eject-command="/path/to/eject %d. Also, %d can be used for a device node, %m for a mount point, and %h for a HAL Volume ID.
If you are using submount, you can pass --enable-submount to configure if it is not automatically detected.
What's New in This Release:
· src/ipod-device.c (ipod_device_eject_hal): Propagate any errors to parent function, which will be sent to consumer application for display
· (ipod_device_eject): Handle the error_out parameter and propagate as a GError to caller
· src/ipod-device.h: Added ERROR_EJECT