Install a IEEE1394 harddisk on Linux

Here we use an iPod as example, but other IEEE1394 harddrives work the same way ... (tested!)

SyncPOD home

Files to get

First get the current kernel: (use at least 2.4.20, the current IEEE1394 files won't work with earlier kernels)

Then get the current IEEE1394 files: (if these don't compile use the original directory delivered with the kernel)

Install it

This is not for total kernel compile newbie's, these should get comfy compiling the kernel and installing kernel/modules first.

Set up your kernel as you wish (don't forget FAT32 support), but select at least these SCSI options:

And at least these IEEE1394 options:

Now compile the kernel and modules and install them.

You may skip the next step if the kernel ieee1394 drivers work for you. The current drivers may be more/less stable. (The kernel drivers of <= 2.4.19 where unusable, 2.4.20 looks usable...). You should at least try to compile the current drivers, if they don't compile use the kernel drivers.

Try it: we update the ieee1394 driver, this is simple:

  cd /usr/src/linux/drivers
  mv ieee1394 ieee1394_orig
  tar -xvzf your_ieee1394_tarball.tar.gz
  mv trunk ieee1394
  cd /usr/src/linux
  make modules modules_install

If it did't work out: (skip if everything went fine)

  cd /usr/src/linux/drivers
  mv ieee1394 ieee1394_current
  mv ieee1394_orig ieee1394
  cd /usr/src/linux
  make modules modules_install

Reboot now and after you are logged in again type:

  depmod -a

This is the command to set up the module dependencies.

Now we are set to ...

Mount your iPod/harddisk

Lets communicate with our IEEE1394 hub:

  modprobe ohci1394

Now connect your harddrive - in this case the iPod (wait for the checkmark to show up - this is important) and then type:

  modprobe sbp2

Now your drive should be set up as a harddrive:

  ... kernel: ieee1394: sbp2: Logged into SBP-2 device
  ... kernel: ieee1394: sbp2: Node[00:1023]: Max speed [S400] - Max payload [2048]
  ... kernel: scsi2 : IEEE-1394 SBP-2 protocol driver (host: ohci1394)
  ... kernel: $Rev: 545 $ James Goodwin 
  ... kernel: SBP-2 module load options:
  ... kernel: - Max speed supported: S400
  ... kernel: - Max sectors per I/O supported: 255
  ... kernel: - Max outstanding commands supported: 8
  ... kernel: - Max outstanding commands per lun supported: 1
  ... kernel: - Serialized I/O (debug): no
  ... kernel: - Exclusive login: yes
  ... kernel:   Vendor: Apple     Model: iPod              Rev: 1.20
  ... kernel:   Type:   Direct-Access                      ANSI SCSI revision: 02
  ... kernel: Attached scsi removable disk sda at scsi2, channel 0, id 0, lun 0
  ... kernel: SCSI device sda: 9780750 512-byte hdwr sectors (5008 MB)
  ... kernel: sda: test WP failed, assume Write Enabled
  ... kernel:  sda: sda1 sda2

If the SCSI stuff does not appear try to:

  rmmod sbp2
  modprobe sbp2 sbp2_force_inquiry_hack=1

(Some old iPods/harddisks may need that.)

You can mount your iPod/harddisk:

  mkdir /ipod
  mount /dev/sda2 /ipod

Disconnect your iPod/harddisk with:

  umount /ipod
  rmmod sbp2

iPod users: wait for the checkmark and then do the physical disconnect ;-)


Sometimes - if you dis/reconnect your IEEE1394 drive too often, or if you have USB disks as well and dis/reconnect both drives in strange orders

  modprobe sbp2

may hang. I have to reboot to make the drive work again, the rest of the system ist stable, so you don't need to. Updating the ieee1394 drivers may help ;-)

iPod specific things

Always wait for the checkmark to connect or disconnect!

Which sd* device it will be depends on your other scsi devices.

sda1 is the firmware partition, sda2 the data partition

If all this works you can put this line in your fstab:

  /dev/sda2    /ipod    auto    noauto,rw,user    0    0

Now you can mount/unmount your harddrive as user. This leaves us with the modprobe/rmmod commands which have to be run as root, the solution to this is the sudo command, but this is another story...

SyncPOD home

iPod is a registered trademark of Apple Computer
Linux is a registered trademark of Linus Torvalds