Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info. |
SCSI
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
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
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
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
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.