[PlanetCCRMA] Lacie Firewire drive on Planet CCRMA

Fernando Pablo Lopez-Lezcano nando@ccrma.Stanford.EDU
Mon Oct 18 11:05:02 2004


--=-zdl4VsHEOkNyTy+pWf9u
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

On Mon, 2004-10-18 at 09:46, Andres Cabrera wrote:
> Thanks Fernando,
> I'm actually trying to use my Lacie firewire hard drive, the internal 
> cdrom is working fine.
> Sorry for not being clear...

I don't know why I though it was a cdrom. Too early, no coffee, sloppy
reading :-)

> Fernando Pablo Lopez-Lezcano wrote:
> > On Mon, 2004-10-18 at 08:00, Andres Cabrera wrote:
> > 
> >>Hi all,
> >>I've been unable to use my Lacie firewire drive in FC1 Planet CCRMA. The 
> >>drive works under knoppix kernel 2.4, so it should also work on the 
> >>planet. Here's what I've found different:
> >>On knoppix, there's no /proc/bus/ieee1394 directory.
> >>On FC1 that directory contains the file "devices" which says:
> >>Node[1-00:1023]  GUID[00d04b380e097569]:
> >>   Vendor ID: `LaCie Group SA  ' [0x00d04b]
> >>   Capabilities: 0x0083c0
> >>   Bus Options:
> >>     IRMC(0) CMC(0) ISC(0) BMC(0) PMC(0) GEN(0)
> >>     LSPD(0) MAX_REC(64) CYC_CLK_ACC(255)
> >>   Unit Directory 0:
> >>     Vendor/Model ID: LaCie Group SA   [00d04b] / LaCie 1394 Disk drive 
> >>LUN 0  [000000]
> >>     Software Specifier ID: 00609e
> >>     Software Version: 010483
> >>     Driver: SBP2 Driver
> >>     Length (in quads): 8
> >>
> >>The file /proc/scsi/scsi on knoppix includes(apart from the cdrom):
> >>Host: scsi1 Channel: 00 Id: 00 Lun: 00
> >>   Vendor: WDC WD16 Model: 00BB-00DAA3      Rev: 75.1
> >>   Type:   Direct-Access                    ANSI SCSI revision: 06
> >>On FC1 it only includes the cdrom, when the fw drive should be there as 
> >>well.
> >>
> >>Also on FC1 there is a directory (which is not there on knoppix) called 
> >>/proc/scsi/sbp2_1 which contains the file "1" which contains:
> >>
> >>Host scsi1             : SBP-2 IEEE-1394 (ohci1394)
> >>
> >>Module options         :
> >>   max_speed            : S800
> >>   max_sectors          : 255
> >>   serialize_io         : no
> >>   exclusive_login      : yes
> >>
> >>Attached devices       : none
> >>
> >>I've already added the following to fstab:
> >>/dev/sda2 /mnt/fw1 ntfs noauto,users,exec,ro,umask=000,uid=root 0 0
> >>/dev/sda3 /mnt/fw2 vfat noauto,users,exec,umask=000,uid=root 0 0
> >>/dev/sda5 /mnt/fw3 ntfs noauto,users,exec,ro,umask=000,uid=root 0 0
> >>Which were generated by knoppix, and work there.
> >>Then trying:
> >>mount /dev/sda2
> >>gives:
> >>mount: /dev/sda is not a valid block device

Hmmm, it looks like it is being recognized at the low driver level. What
happens if you run the rescan-scsi-bus.sh script? (or try rebooting with
the disk attached). I'm attaching the script to this email....

-- Fernando


--=-zdl4VsHEOkNyTy+pWf9u
Content-Disposition: attachment; filename=rescan-scsi-bus.sh
Content-Type: text/x-sh; name=rescan-scsi-bus.sh; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

#!/bin/bash
# Skript to rescan SCSI bus, using the 
# scsi add-single-device mechanism
# (w) 98/03/19 Kurt Garloff <kurt@garloff.de> (c) GNU GPL

# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
findhosts ()
{
  hosts=
  for name in /proc/scsi/*/?; do
    name=${name#/proc/scsi/}
    if test ! $name = scsi
      then hosts="$hosts ${name#*/}"
      echo "Host adapter ${name#*/} (${name%/*}) found."
    fi
  done
}

# Test if SCSI device $host $channen $id $lun exists
# Outputs description from /proc/scsi/scsi, returns new
testexist ()
{
  grepstr="scsi$host Channel: 0$channel Id: 0*$id Lun: 0$lun"
  new=`cat /proc/scsi/scsi|grep -e"$grepstr"`
  if test ! -z "$new"
    then cat /proc/scsi/scsi|grep -e"$grepstr"
    cat /proc/scsi/scsi|grep -A2 -e"$grepstr"|tail -2|pr -o4 -l1
  fi
}

# Perform search (scan $host)
dosearch ()
{
  for channel in $channelsearch; do
    for id in $idsearch; do
      for lun in $lunsearch; do
        new=
	devnr="$host $channel $id $lun"
	echo "Scanning for device $devnr ..."
	printf "OLD: "
	testexist
	if test ! -z "$remove" -a ! -z "$new"
	  then echo "scsi remove-single-device $devnr" >/proc/scsi/scsi
	  echo "scsi add-single-device $devnr" >/proc/scsi/scsi
	  printf "\r\x1b[A\x1b[A\x1b[AOLD: "
	  testexist
	  if test -z "$new"; then printf "\rDEL: \r\n\n\n\n"; let rmvd+=1; fi
	fi
	if test -z "$new"
	  then printf "\rNEW: "
	  echo "scsi add-single-device $devnr" >/proc/scsi/scsi
	  testexist
	  if test -z "$new"; then printf "\r\x1b[A"; else let found+=1; fi
	fi
      done
    done
  done
}
	  
  
# main
if test @$1 = @--help -o @$1 = @-h
  then 
    echo "Usage: rescan-scsi-bus.sh [-l] [-w] [-c] [host [host ...]]"
    echo " -l activates scanning for LUNs 0 .. 7 [default: 0]"
    echo " -w enables scanning for device IDs 0 .. 15 [def.: 0 .. 7]"
    echo " -r enables removing of devices        [default: disabled]"
    echo " -c enables scanning of channels 0 1   [default: 0]"
    echo " If hosts are given, only these are scanned [default: all]"
    exit 0
fi

# defaults
lunsearch="0"
idsearch="0 1 2 3 4 5 6 7"
channelsearch="0"
remove=""

# Scan options
opt="$1"
while test ! -z "$opt" -a -z "${opt##-*}"; do
  opt=${opt#-}
  case "$opt" in
    l) lunsearch="0 1 2 3 4 5 6 7" ;;
    w) idsearch="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15" ;;
    c) channelsearch="0 1" ;;
    r) remove=1 ;;
    *) echo "Unknown option -$opt !" ;;
  esac
  shift
  opt="$1"
done    

# Hosts given ?
if test @$1 = @; then findhosts; else hosts=$*; fi

declare -i found=0
declare -i rmvd=0
for host in $hosts; do dosearch; done
echo "$found new device(s) found.               "
echo "$rmvd device(s) removed.                 "

--=-zdl4VsHEOkNyTy+pWf9u--