1
I'm having issues with getting a firewire harddrive to work reliably in linux. The controller and drive seems to be recognized but I don't know how to get access to it.
Some context:
# lspci
00:00.0 PCI bridge: Device 16c3:abcd (rev 01)
01:00.0 PCI bridge: Texas Instruments XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] (rev 01)
02:00.0 FireWire (IEEE 1394): Texas Instruments XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] (rev 01)
The driver used for the firewire controller is
# lspci -vv | grep firewire
Kernel driver in use: firewire_ohci
# lsmod
Module Size Used by
firewire_sbp2 10670 0
firewire_ohci 26356 0
ov5642_camera 74186 0
camera_sensor_clock 721 1 ov5642_camera
firewire_core 45592 2 firewire_ohci,firewire_sbp2
/dev/fw0 is present after boot (which is, from my understanding, the firewire controller).
When a drive is attached the following is presented in dmesg:
firewire_core: skipped bus generations, destroying all nodes
firewire_core: rediscovered device fw0
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
scsi0 : SBP-2 IEEE-1394
firewire_core: created device fw1: GUID 0050a035e0500a51, S400, 1 config ROM retries
firewire_sbp2: fw1.0: logged in to LUN 0000 (0 retries)
and /dev/fw1 is created.
Yet cat /proc/scsi/scsi gives no attached devices.
# ls /sys/bus/firewire/drivers/sbp2/fw1.0
driver modalias model_name rom_index subsystem version
host0 model power specifier_id uevent
So from what I can tell, a lot seems to be working. But I have no device to play with? Not sure what to do with /dev/fw1
# od /dev/fw1
gets me nothing.
cat /sys/class/scsi_disk/*/device/model doesn't reveal anything related to the firewire drive.
When the drive is disconnected the following message is logged:
firewire_sbp2: released fw1.0, target 0:0:0
If I have the device plugged in at boot everything will occasionally work (perhaps once every twentieth reboot), the drive shows up as /dev/sd[n] and I can access it as any other drive, it shows in /proc/scsi/scsi etc. Shouldn't I be able to recreate it manually when hot-plugging or when it doesn't show up? With something like "udevadm trigger"? (doesn't work)
Any ideas on how to proceed?
Note: this is running on an ARM-based embedded linux:
# uname -a
Linux nitrogen6x 3.0.35-1.1.0+g2dc5560 #6 SMP PREEMPT Wed Apr 2 11:12:25 CEST 2014 armv7l GNU/Linux