Um meinen 20GB iPod der 3ten Generation mittels USB unter FreeBSD zu benutzen, müssen zuerst die Device-Berechtigungen angepasst werden. Dazu muss folgender Eintrag in die /etc/devfs.rules gemacht werden, wobei beim group Eintrag, die Gruppe der Benutzer eingetragen werden muss. Bei mir ist dies users:
[ipod=5]
add path 'da*s*' mode 0660 group users
add path 'xpt0' mode 0660 group users
add path 'pass0' mode 0660 group users
Damit die Device-Berechtigungen während des Betriebes angepasst werden, muss devfs in der /etc/rc.conf aktiviert werden:
devfs_enable="YES"
devfs_rulesets="/etc/devfs.rules"
devfs_system_ruleset="ipod"
Damit Benutzer den iPod mounten können, muss die usermount Variable in der /etc/sysctl.conf gesetzt werden:
vfs.usermount=1
Danach das Verzeichnis erstellen, wo der iPod später ins System gemountet werden soll, und die Berechtigungen setzen, wobei beat:users durch den Benutzernamen und die Gruppe des lokalen Benutzers zu ersetzen ist:
# mkdir /mnt/ipod
# chown beat:users /mnt/ipod
Um das Mounten zu vereinfachen, kann noch ein Eintrag für den iPod in der /etc/fstab gemacht werden:
/dev/da0s2 /mnt/ipod msdos rw,noauto 0 0
Jetzt kann der Rechner neu gestartet oder die Änderungen von Hand aktiviert werden:
# sysctl vfs.usermount=1
# /etc/rc.d/devfs start
Nun kann der iPod einfach als Benutzer gemountet werden:
# mount /mnt/ipod
Um den iPod zu verwalten, benutze ich gnupod. gnupod befindet sich unter audio/gnupod in den FreeBSD Ports. gnupod ist eine Sammlung von Perl-Skripten, um den iPod auf der Kommandozeile zu bedienen.
Danach muss der iPod initialisiert werden. Die vorhandenen Lieder und die Datenbank werden dabei übernommen und gehen nicht verloren. Dies muss nur vor dem ersten Gebrauch von gnupod gemacht werden:
# gnupod_INIT.pl -m /mnt/ipod
Um Lieder auf den iPod zu laden, kann man das gnupod_addsong.pl Skript verwenden. Dabei können auch Wildcards verwendet werden, um mehrere Lieder auf einmal auf den iPod zu laden.
# gnupod_addsong.pl -m /mnt/ipod/ <Pfad zu den Liedern>
Sind alle Lieder auf den iPod geladen, muss noch die Datenbank des iPods aktualisiert werden.
# mktunes.pl -m /mnt/ipod/
Danach kann der iPod geunmouted (gibts dieses Wort?) werden:
# umount /mnt/ipod/
Auf dem iPod Display steht aber weiterhin: Bitte nicht trennen
Um den iPod aus dem System zu entfernen, muss zuerst mit camcontrol devlist herausgefunden werden, wo der iPod im System eingebunden ist.
# camcontrol devlist
<Apple iPod 1.50> at scbus0 target 0 lun 0 (da0,pass0)
Damit camcontrol eject funktioniert, muss im Kernel das pass device vorhanden sein. Dies ist im GENERIC-Kernel schon der Fall. Hat man einen selbst erstellten Kernel, sollte folgender Eintrag in der Kernel-Konfigurationsdatei vorhanden sein, aus der man den Kernel erzeugt hat:
device pass # Passthrough device (direct SCSI access)
Danach kann der iPod aus dem System entfernt werden. Die Device ID muss nicht auf jedem System 0:0:0 sein. Um die Device ID herauszufinden, musste vorher ein camcontrol devlist gemacht werden. In diesem Beispiel wird scbus0 target 0 lun 0 zu 0:0:0
# camcontrol eject 0:0:0
Auf dem iPod steht nun "iPod kann getrennt werden" und das USB-Kabel kann nun abgezogen werden.