Bug 472704 - MacBook + external portable hard disk - works via firewire 400, doesn't via 800.
MacBook + external portable hard disk - works via firewire 400, doesn't via 800.
Status: CLOSED INSUFFICIENT_DATA
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
9
x86_64 Linux
medium Severity medium
: ---
: ---
Assigned To: Jarod Wilson
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2008-11-23 16:53 EST by Maciej Żenczykowski
Modified: 2008-12-09 15:23 EST (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-12-09 15:23:31 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Maciej Żenczykowski 2008-11-23 16:53:54 EST
Description of problem:

I have a "Macbook Pro 3,1" notebook with 4GB ram (probably doesn't matter), running Fedora 9 with kernel 2.6.27.5-37.fc9.x86_64 (32-bit userspace, but it shouldn't matter here, since the problem seems to be strictly kernel drivers).

I have an external Seagate Freeagent Go FW 320GB hard disk.  The drive itself has a firewire 800 port, a mini-USB2.0 port (+ an additional power supply port for leaching off of another USB port if the first doesn't have enough juice).  It comes with a FW800-FW800 cable (for Firewire 800 operation), a FW400-FW800 cable (for Firewire 400 operation) and a USB cable (for USB2.0 operation) [plus a USB->power cable for extra power if needed and a Firewire 800 docking station].

http://freeagent.seagate.com/en-us/hard-drive/macintosh-hard-drive/Free-Agent.html

Everything works when I connect the drive via USB [2.0] (30.5 MB/s read) or Firewire 400 (39.5 MB/s read), the drive fails to get recognized via Firewire 800 (both through the cable and through the docking station, although I'm guessing the docking station to be totally passive, so it probably doesn't matter).

dmesg log from a Firewire 400 connect and disconnect:

firewire_core: phy config: card 0, new root=ffc1, gap_count=5
scsi7 : SBP-2 IEEE-1394
firewire_core: created device fw1: GUID 0020370200001b98, S400, 3 config ROM retries
firewire_sbp2: fw1.0: logged in to LUN 0000 (0 retries)
scsi 7:0:0:0: Direct-Access     Seagate  FreeAgent Go FW  410F PQ: 0 ANSI: 4
sd 7:0:0:0: [sdb] 625142448 512-byte hardware sectors (320073 MB)
sd 7:0:0:0: [sdb] Write Protect is off
sd 7:0:0:0: [sdb] Mode Sense: 1c 00 00 00
sd 7:0:0:0: [sdb] Cache data unavailable
sd 7:0:0:0: [sdb] Assuming drive cache: write through
sd 7:0:0:0: [sdb] 625142448 512-byte hardware sectors (320073 MB)
sd 7:0:0:0: [sdb] Write Protect is off
sd 7:0:0:0: [sdb] Mode Sense: 1c 00 00 00
sd 7:0:0:0: [sdb] Cache data unavailable
sd 7:0:0:0: [sdb] Assuming drive cache: write through
 sdb: sdb1 sdb2
sd 7:0:0:0: [sdb] Attached SCSI disk
sd 7:0:0:0: Attached scsi generic sg2 type 0
hfs: write access to a journaled filesystem is not supported, use the force option at your own risk, mounting read-only.
SELinux: initialized (dev sdb2, type hfsplus), uses genfs_contexts
sd 7:0:0:0: [sdb] Stopping disk
sd 7:0:0:0: [sdb] START_STOP FAILED
sd 7:0:0:0: [sdb] Result: hostbyte=DID_BUS_BUSY driverbyte=DRIVER_OK,SUGGEST_OK
firewire_sbp2: released fw1.0, target 7:0:0

dmesg log from a Firewire 800 connection attempt (might be more than one attempt):

firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc1
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0

here's another connection attempt (with firewire_{sbp2,ohci,core} modules unloaded and reloaded immediately beforehand)

firewire_ohci: Removed fw-ohci device.
firewire_ohci: Added fw-ohci device 0000:0d:03.0, OHCI version 1.10
firewire_core: created device fw0: GUID 001cb3fffe929de0, S800
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc1
firewire_core: giving up on config rom for node id ffc1
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: giving up on config rom for node id ffc0
firewire_core: giving up on config rom for node id ffc1

The drive eventually clearly gives up on waiting for the computer since the white blinking/pulsating power/activity/etc led eventually turns off (good 5-10 seconds, if not more).
Comment 1 Maciej Żenczykowski 2008-12-02 18:34:29 EST
I tried multiple times (5 or so) with the 320GB drive from the comment above with no luck (on the 2.6.27.5-37.fc9.x86_64 kernel).

I no longer have the drive in question from above, but Firewire 800 seems to work fine with a 500GB drive (Seagate FreeAgent Go 500GB for Mac, basically the next size up) on a 2.6.27.7-50.fc9.x86_64 kernel.

For completeness:

500GB on USB (no power cable):

hub 1-0:1.0: unable to enumerate USB device on port 2
usb 3-2: new full speed USB device using uhci_hcd and address 24
usb 3-2: device descriptor read/64, error -71
hub 3-0:1.0: unable to enumerate USB device on port 2

500GB on USB (with power cable):

usb 1-2: new high speed USB device using ehci_hcd and address 12
usb 1-2: configuration #1 chosen from 1 choice
scsi7 : SCSI emulation for USB Mass Storage devices
usb 1-2: New USB device found, idVendor=0bc2, idProduct=2200
usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2: Product: FreeAgent Go FW
usb 1-2: Manufacturer: Seagate
usb 1-2: SerialNumber: xxxxxxxx
scsi 7:0:0:0: Direct-Access     Seagate  FreeAgent Go FW  410G PQ: 0 ANSI: 4
sd 7:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
sd 7:0:0:0: [sdb] Write Protect is off
sd 7:0:0:0: [sdb] Assuming drive cache: write through
sd 7:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
sd 7:0:0:0: [sdb] Write Protect is off
sd 7:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1 sdb2
sd 7:0:0:0: [sdb] Attached SCSI disk
sd 7:0:0:0: Attached scsi generic sg2 type 0
hfs: write access to a journaled filesystem is not supported, use the force option at your own risk, mounting read-only.

usb 1-2: USB disconnect, address 12

500GB on Firewire 400:

firewire_core: created device fw1: GUID 0020370200105ee3, S400, 4 config ROM retries
firewire_core: phy config: card 0, new root=ffc0, gap_count=5
scsi5 : SBP-2 IEEE-1394
firewire_sbp2: fw1.0: logged in to LUN 0000 (0 retries)
scsi 5:0:0:0: Direct-Access     Seagate  FreeAgent Go FW  410G PQ: 0 ANSI: 4
sd 5:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
sd 5:0:0:0: [sdb] Write Protect is off
sd 5:0:0:0: [sdb] Cache data unavailable
sd 5:0:0:0: [sdb] Assuming drive cache: write through
sd 5:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
sd 5:0:0:0: [sdb] Write Protect is off
sd 5:0:0:0: [sdb] Cache data unavailable
sd 5:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1 sdb2
sd 5:0:0:0: [sdb] Attached SCSI disk
sd 5:0:0:0: Attached scsi generic sg2 type 0
hfs: write access to a journaled filesystem is not supported, use the force option at your own risk, mounting read-only.

sd 5:0:0:0: [sdb] Stopping disk
sd 5:0:0:0: [sdb] START_STOP FAILED
sd 5:0:0:0: [sdb] Result: hostbyte=DID_BUS_BUSY driverbyte=DRIVER_OK,SUGGEST_OK
firewire_sbp2: released fw1.0, target 5:0:0

500GB on Firewire 800:

firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
scsi6 : SBP-2 IEEE-1394
firewire_core: created device fw1: GUID 0020370200105ee3, S800, 4 config ROM retries
firewire_sbp2: fw1.0: logged in to LUN 0000 (0 retr
ies)
scsi 6:0:0:0: Direct-Access     Seagate  FreeAgent Go FW  410G PQ: 0 ANSI: 4
sd 6:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
sd 6:0:0:0: [sdb] Write Protect is off
sd 6:0:0:0: [sdb] Cache data unavailable
sd 6:0:0:0: [sdb] Assuming drive cache: write through
sd 6:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)
sd 6:0:0:0: [sdb] Write Protect is off
sd 6:0:0:0: [sdb] Cache data unavailable
sd 6:0:0:0: [sdb] Assuming drive cache: write through
sdb: sdb1 sdb2
sd 6:0:0:0: [sdb] Attached SCSI disk
sd 6:0:0:0: Attached scsi generic sg2 type 0
hfs: write access to a journaled filesystem is not supported, use the force option at your own risk, mounting read-only.

sd 6:0:0:0: [sdb] Stopping disk
sd 6:0:0:0: [sdb] START_STOP FAILED
sd 6:0:0:0: [sdb] Result: hostbyte=DID_BUS_BUSY driverbyte=DRIVER_OK,SUGGEST_OK
Dec  2 14:57:41 nike kernel: firewire_sbp2: released fw1.0, target 6:0:0

Some performance statistics:

# dd if=/dev/sdb bs=1048576 count=4096 of=/dev/null
Firewire800:  4294967296 bytes (4.3 GB) copied, 55.9176 s, 76.8 MB/s
Firewire400:  4294967296 bytes (4.3 GB) copied, 108.719 s, 39.5 MB/s
USB2.0+power: 4294967296 bytes (4.3 GB) copied, 141.562 s, 30.3 MB/s
(and for comparison the laptop's built-in hard disk)
/dev/sda:     4294967296 bytes (4.3 GB) copied, 93.4388 s, 46.0 MB/s

Maybe the timeouts or number of retries were simply just a tad bit too low?  Or maybe somehow this has been fixed in the newer kernel?  (I fail to see any mention of firewire in the 2.6.27.5 - 2.6.27.7 changelogs though).

Does this make any sense?
Comment 2 Stefan Richter 2008-12-09 14:52:04 EST
I recommend that this bug is closed because debug data cannot be collected anymore.

Note You need to log in before you can comment on or make changes to this bug.