Introduction

SCSI stands for Small Computer System Interface. Industry standards allowed for cooperation between vendors, before the empire, before the dark times. SCSI devices included floppy drives, scanners, hard disk drives, optical media (CD, DVDs,etc), and mag-optical.

Headaches: Conflicting IDs, Buses and Termination issues

Buses

Internal to the Octane is 3 U320 drive bays. This is the internal bus. You might have for example a external DVD drive and an external tape daisy chained from the back of your Octane, this is an external bus. A cable from your Octane to the tape unit and another cable from the tape unit to the DVD-ROM and terminator block on the back of DVD-ROM drives case. Or the DVD drive might have a jumper set.

IDs

Each device must have a different SCSI ID. If there are 6 people called John in a room and someone calls out "Hey, John" there will be confusion. Likewise, having two devices with SCSI IDs of say 3, won't work. There were some conventions that certain devices have a certain ID but this was never mandatory. The SCSI bus controller usually a card or chip built into the motherboard normally has an ID of 0. This is often a first point of troubleshooting. SCSI hard drives often have a set of jumpers which allows you to set the ID in binary. The U320 drive bays in the SGI Octane, OriginVault, SGI Onyx2, etc override the jumper selections. However a 50 pin drive on an SGI Indy should have the pins set for the SCSI and the termination pin set also. Speaking of termination...


Termination

The signals start at a known point (the controller) and head towards devices. Is the first device the last one on the bus or is there one after it? How about the second? The terminator closes the loop and also marks the end of the bus, nothing follows it. Too much termination and the electrical signals are confused (called "echo" or "bounce-back"). Host bus adapters can sit in the middle of the bus or at one end of it. External devices have a block that plugs into back of the last device. An internal SCSI bus might be self terminating (eg Octane) or there might be a jumper on the drive itself which sets termination. Describe Active and passive termination here.

PCI SCSI Host bus adapters working with IRIX

Host Bus Adapters Known working on IRIX.
Manufacturer Model Description Confirmed on
QLogic
QLA1040 (SE) Octane, Onyx2
QLA 1040D (HVD) Octane
QLA12160 (LVD) Octane
QLA2200 1Gbit Fibre Channel Adapter Copper/HSSDC interface Octane, O2
QLA-1080 IP35
QLA-1280 IP35
QLA-10160 IP35
QLA-12160 IP35
QLA2200/2200F (single-port, 1Gb/s) IP35, IP30, IP27
QLA2310/2310F (single-port, 2Gb/s, requires IRIX 6.5.18 or later) IP35
QLA2340 (single-port, 2Gb/s, requires IRIX 6.5.18 or later) IP35
QLA2342 2Gb/s Dual-port optical Fibre Channel Adapter (LC-type), requires IRIX 6.5.18 or later Octane (IP30), Origin 300 / Fuel (IP35), Onyx2 / Origin 200 (IP27)
QLA2344 (dual-port, 2Gb/s, requires IRIX6.5.18 or later) IP35
Adaptec
AHA-2940UW O2
Adaptec AHA-2944UW HVD Requires hack O2
Adaptec AHA-3940UW Requires hack O2
LSI
SAS3442X-R LSI Logic SAS3442X-R 8-port SAS RAID Controller (RAID only works under Windows) Origin 300
LSI7104XP-LC (single-port, 4GB/s, requires IRIX 6.5.28 or later) IP 35
LSI7204XP-LC (dual-port, 4GB/s, requires IRIX 6.5.28 or later) IP35
LSI21320-IS Ultra320 SCSI LVD/SE HBA (OEM functional equivalent to PCIX-SCSI-U4-2P) IP35
SAS3041X-R 4-port SAS/SATA HBA IP35
SAS3442X 8-port SAS/SATA HBA IP35
Prisa
NetFX ??? FibreChannel Octane
SGI
2-Port PCIX Ultra320 SCSI LVD/SE HBA - SGI Part # PCIX-SCSI-U4-2P


There are two models of QLA12160 the /33 and /66 (ie. PCI bus speed). The QLA12160/33 is best used with Octane/O2K/Onyx2 since the PCI bus is 33MHz anyway, but if you want to put a QLA12160 in Fuel/Tezro/O3K then look for the /66 version as it can run much faster because of the 66MHz bus link (doesn't matter for a single disk connection of course, but very wise for XLV/RAID/etc.)

Variants of SCSI buses on SGI systems

SCSI-1 devices can be connected to SCSI-2 buses. There is a general backwards compatibility contained in the SCSI specification.

Original SCSI specification

Original 50 pin flat ribbon cable. The original "narrow" allowed for 8 devices including the host bus adapter (Controller card or chip on motherboard). The "wide" specification allowed for a 68pin cable and 16 devices on the bus including the controller (HBA). SCSI IDs normally range from 0 to 7 on narrow buses to 0 to 15 on wide buses. Each device must have its own unique ID so they can be agreement on the bus as to which data or command is destined for which device.

The SGI Indy has a connector on the main board for a 50 pin ribbon cable.


Machines

Indy

Wide Specification

The SGI O2 with an Adaptec 2940 UW has 68 pin connector and can support 15 devices. Much like the original specification but with twice the data throughput.

Machines

O2


SCSI-3 specification

Ultra-160

Ultra-320

Single Ended

Low Voltage Differential

High Voltage Differential

Machines

Octane, Origin 200, 300, Onyx2, Fuel

Fibre Channel

Serial fiberoptic

QLogic 2342 PCI-X host bus adapter works in at least one IP35 machine [1]:

 Integral SCSI controller 7: Version Fibre Channel QL2342 Port 2, 66 MHz PCI


Fiber Channel reference

  1. hinv of Origin 300 with two Fiber Channel cards

SAS: Serial Attached SCSI

Think of it as a bridge between SATA and SCSI.

IP35 machines [2] can use a LSI HBA to open up a world of SAS and SATA drives.

SAS Reference

  1. LSI SAS/SATA HBA's and the Fuel (or other IP35 Systems)



IDE to SCSI adapters working with SGI machines

General comments about SCSI on SGI Systems

Can the O2 be upgraded to permit faster SCSI transfer speeds or am I stuck with the inbuilt SCSI only?

colin wrote:

   40 MB/sec UW SCSI should be plenty fast for even a new drive. Honest. Find a good deal on a recent 18 GB 10K RPM drive. The original 4 and 9 GB drives are 7 or 8 years old now and are SLOW.
 If you want something faster, stripe 3 new drives: one on the internal bus, one on the external bus, and one on an Adaptec 2940WU PCI card. 
 You should be able to hit 90+ MB/sec sustained with 3 modern drives.


traktopel wrote:

 The O2 scsi HBA is Single Ended (SE) SCSI and IBM drives are LVD. It might be not only a SYNC or NEGO issue but due to LVD to SE conversion . 
 I have heard that the Adaptec chip and IBM DDYS drives might have troubles in some cases. 
 I know I should not say that be if you have a PC with an Adaptec 2940 you can test the same config and might not work as well... :(  Check if drives have a "Force SE mode" jumper....


ShadeOfBlue wrote:

  Be sure to enable parity on any drive that you intend to use in an SGI. Most drives have a jumper and some can do it by themselves


LoWeN wrote:

 Be aware that U320 harddrives are not compatible below UW.So it will work with octane/O2/O200...


hamei wrote:

  A reference point for people worried about heat - just swapped a 10k rpm IBM DDYS drive out for a 15k rpm Maxtor Atlas (not even Atlas II) 
  and the newer faster drive runs cooler than the older slower one.


zahal wrote:

  Upgraded my O2's 36GB 10k.6 to a 72GB 15k.4 drive 2 days ago. Works great, there's a hum that I don't recall with the 10k (seems like the O2's plastic case is resonating with the 15k)...
  Gimp and Fireflop now startup quite faster....boot time is also reduced. I recomend O2 owners to upgrade to a 15k.4 if possible (or any good 15k drive)....
  any speed boost on the bloo toaster is appreciated


Recondas wrote:

If you have Impressario installed, there are a number of scanners available through the Impressario Scanner Manager. 
Open Toolchest > Find > Scanners > then select the "scanners" icon to open Scanner Manager; or execute scanners at a command prompt.
Although it primarily deals with SCSI tape drives, there are a number SCSI devices that are <or have been> defined in /var/sysgen/master.d/scsi. 
For instance, there's this brief mention of some scanners that are ID'd as a processor - perhaps your scanner is similar <this segment begins at line 896 in master.d/scsi revision 1.66>:
    /*
     * SCSI scanners that like to call themselves Processor types.
     */
     double_inq_str_s scanner_inq_strings[] = {
     { "HP",     8,  "C",        16, 0 },
     { NULL,     0,  NULL,       0,  0 }
     };

IRIX and SCSI

IRIX manual pages related to SCSI

scsicontrol(1m)                                                scsicontrol(1m)

NAME
     scsicontrol - probe and control scsi devices

SYNOPSIS
     /usr/sbin/scsicontrol [-CDHIRSacdegilmqsv] [-b blockize] device ...



scsiha(1m)                                                          scsiha(1m)

NAME
     scsiha - probe and control scsi buses

SYNOPSIS
     scsiha [-lprtTws] [-D debuglevel] [-L targetID|all]
            [-S targetID|all] {bus_number | device} ...

SCSIHA(7M)                                                          SCSIHA(7M)

NAME
     scsiha - SCSI bus and loop operation driver

SYNOPSIS
     /hw/scsi_ctlr/<number>/bus


Programming under IRIX

A user space program would have format like:

   While not user quit, 
            pack and send a command message,  
            wait for a response, unpack it.
            Do something application specific with the data from the packet.
   Done.


IRIX contains a special kernel-level device driver whose purpose is to give user-level processes the ability to issue commands and read and write data on the SCSI bus. By using ioctl() calls to this driver, a user-level process can interrogate and program devices, and can initiate DMA transfers between buffers in user process memory and devices.

The low-level programming used with the dsreq device driver is eased by the use of a library of utility functions documented in the dslib(3) reference page. The source code of the dslib library is distributed with IRIX.


See also

techpubs.sgi.com's Device driver programmers guide section on SCSI


Command Data Blocks

Decoding SCSI Errors

You might see an error like: dksc1d1vol1: [Alert] Illegal request: illegal logical address (asc=0x21, asq=0x0 CDB: 28 00000010

The command data block (CDB) starts with an operation code (op code). The operation codes can be found in a table in a SCSI FAQ.

A device that fails an INQuiry command might might be broken have issues with the bus (termination, echos, etc). A device that fails a read command might have issue with media.

The additional sense code will have different meaning for each kind of command and each kind of device. But should make sense in context.

External Links

SCSI FAQ

SCSI Glossary

comp.perphs.scsi FAQ (Also a good news group

news group via google groups


O2 with dual-channel Adaptec SCSI card (modified kernel)