summaryrefslogtreecommitdiffstats
path: root/README.SysInfo
blob: 5c6efa8f683c0db48b0f2dfd17147baa6e214816 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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 two ways to set up the iPod to make libgpod able to find its firewire
id.

The 1st one is mostly automated. First, make sure you have libsgutils installed
before running configure/autogen.sh. If you built libgpod without it, install 
it and run configure/make/make install. You should now have an 
ipod-read-sysinfo-extended tool available. Run it with the iPod device path 
(eg /dev/sda) and the iPod mount point (eg /mnt/ipod) as arguments. This may 
require root privileges. ipod-read-sysinfo-extended will read an XML
file from the iPod and write it as 
/mnt/ipod/iPod_Control/Device/SysInfoExtended. See 
http://ipodlinux.org/Device_Information for more details about the method used.
Having that file is enough for libgpod to figure out the iPod firewire id.

If you have hal available at build time, 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 is all automatic.  For it to
work, the callout must be installed in a path that hal reads.  The most portable
location is $(hallibdir)/hal/scripts, where $hallibdir can be found using
pkg-config.  If you are building libgpod from source with the default $prefix
(/usr/local), you should explicitly pass configure the --with-hal-callouts-dir
option.  For example:

./configure --with-hal-callouts-dir=`pkg-config --variable libdir hal`/hal/scripts

The 2nd method requires more manual intervention. First, you need to get your
firewire id manually. To do that, run "sudo lsusb -v | grep -i Serial" (without
the "") with your iPod plugged in, 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.
Once you have that number, create/edit /mnt/ipod/iPod_Control/Device/SysInfo 
(if your iPod is mounted at /mnt/ipod). Add to that file the line below:
FirewireGuid: 0xffffffffffffffff
(replace ffffffffffffffff with the string you obtained at the previous step
and don't forget the trailing 0x before the string)
Save that file, and you should be all set. Be careful when using apps which 
lets you manually specify which iPod model you own, they may overwrite that 
file when you do that. So if after doing that libgpod still seems to write 
invalid content to the iPod, double-check the content of that SysInfo file to
make sure the FirewireGuid line you added isn't gone. If that happens, readd it
to the end of the file, and make sure libgpod rewrite the iPod content.



Once that is done, if you compiled libgpod from source, you can test that 
libgpod can find the firewire ID on your iPod by running 
libgpod/tests/test-firewire-id /ipod/mount/point