TS member manitouman recently reported some problems with noisy wavefiles from his new 7xx recorder. After some testing he found the problem was a bad firewire cable. Trouble is, that isn't supposed to happen with firewire because the transfers are validated via checksum. I had always assumed/hoped that any errors during transfer would be detected but I really wasn't sure... Silent data corruption is Always a possiblity...
He offered to send me the cable (thanks manitouman!) and I ran some tests with my 722. Transferring under Linux, I almost immediately encountered serious errors at the command line and also logged to the console. A very bad cable indeed.
Under XP, repeated transfers resulted in no errors being reported. The files were transferred and had the correct final md5. Nice to see XP retrying but I wish there was an easy way to see the retry stats after every transfer.
I believe the Linux driver aborts on error. Apparently *my* XP driver retries when it receives bad data. I emphasize *my* XP driver because your driver may be different.
It turns out the original silent corruption happened under Windows Vista Ultimate Edition(!!)... So take that fwiw. I'd also be concerned that system might not detect usb transfer errors.
I wish we had an easy way for everyone to verify that their firewire and usb drivers detect bad data... But short of sending the cable around, I can't think of one. I wouldn't advise wiggling the cable in the socket.
Errors observed under Linux during test:
# cp -v * /m4/tmp/fwtest/
`t1168.wav' -> `/m4/tmp/fwtest/t1168.wav'
# time cp -v * /m4/tmp/fwtest/
`t1168.wav' -> `/m4/tmp/fwtest/t1168.wav'
cp: reading `t1168.wav': Input/output error
`t1169.wav' -> `/m4/tmp/fwtest/t1169.wav'
cp: reading `t1169.wav': Input/output error
`t1170.wav' -> `/m4/tmp/fwtest/t1170.wav'
cp: reading `t1170.wav': Input/output error
0.008u 0.784s 1:40.40 0.7% 0+0k 0+0io 0pf+0w
Console errors:
Feb 27 18:05:17 kernel: sda: Current: sense key=0x0
Feb 27 18:05:17 kernel: ASC=0x0 ASCQ=0x0
Feb 27 18:05:47 kernel: ieee1394: sbp2: aborting sbp2 command
Feb 27 18:05:47 kernel: sd 11:0:0:0:
Feb 27 18:05:47 kernel: command: cdb[0]=0x28: 28 00 01 ca 1b 93 00 00 08 00
Feb 27 18:05:57 kernel: ieee1394: sbp2: aborting sbp2 command
Feb 27 18:05:57 kernel: sd 11:0:0:0:
Feb 27 18:05:57 kernel: command: cdb[0]=0x0: 00 00 00 00 00 00
Feb 27 18:05:57 kernel: ieee1394: sbp2: reset requested
Feb 27 18:05:57 kernel: ieee1394: sbp2: Generating sbp2 fetch agent reset
Feb 27 18:06:07 kernel: ieee1394: sbp2: aborting sbp2 command
Feb 27 18:06:07 kernel: sd 11:0:0:0:
Feb 27 18:06:07 kernel: command: cdb[0]=0x0: 00 00 00 00 00 00
Feb 27 18:06:07 kernel: sd 11:0:0:0: scsi: Device offlined - not ready after error recovery
Feb 27 18:06:07 kernel: sd 11:0:0:0: SCSI error: return code = 0x50000
Feb 27 18:06:07 kernel: end_request: I/O error, dev sda, sector 30022547
Feb 27 18:06:07 kernel: sd 11:0:0:0: rejecting I/O to offline device
Feb 27 18:06:07 last message repeated 6 times
Feb 27 18:06:07 kernel: sd 11:0:0:0: SCSI error: return code = 0x10000
Feb 27 18:06:07 kernel: end_request: I/O error, dev sda, sector 30022555
Feb 27 18:06:07 kernel: sd 11:0:0:0: rejecting I/O to offline device