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[edit]
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[edit]
Buses[edit]
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[edit]
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[edit]
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[edit]
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 Adaptec 2944 WD SCSI Adapter 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[edit]
SCSI-1 devices can be connected to SCSI-2 buses. There is a general backwards compatibility contained in the SCSI specification.
Original SCSI specification[edit]
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[edit]
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[edit]
Ultra-160
Ultra-320
Single Ended
Low Voltage Differential
High Voltage Differential
Machines
Octane, Origin 200, 300, Onyx2, Fuel
Fibre Channel[edit]
Serial fiberoptic
QLogic 2342 PCI-X host bus adapter works in at least one IP35 machine:
Integral SCSI controller 7: Version Fibre Channel QL2342 Port 2, 66 MHz PCI
Fiber Channel reference[edit]
hinv sample:
Location: /hw/module/001c02/node IP45_4CPU Board: barcode KJD687 part 030-1797-001 rev -B Location: /hw/module/001c02/Ibrick/xtalk/14 IO8 Board: barcode MHL579 part 030-1673-003 rev -E Location: /hw/module/001c02/Ibrick/xtalk/15 IO8 Board: barcode MHL579 part 030-1673-003 rev -E Location: /hw/module/001p04/node BIC Board: barcode MJS429 part 030-1740-001 rev -F Location: /hw/module/001p04/Pbrick/xtalk/8 PEBRICK Board: barcode MHZ113 part 030-1724-001 rev -E Location: /hw/module/001p04/Pbrick/xtalk/9 PEBRICK Board: barcode MHZ113 part 030-1724-001 rev -E Location: /hw/module/001p04/Pbrick/xtalk/12 PEBRICK Board: barcode MHZ113 part 030-1724-001 rev -E Location: /hw/module/001p04/Pbrick/xtalk/13 PEBRICK Board: barcode MHZ113 part 030-1724-001 rev -E Location: /hw/module/001p04/Pbrick/xtalk/14 PEBRICK Board: barcode MHZ113 part 030-1724-001 rev -E Location: /hw/module/001p04/Pbrick/xtalk/15 PEBRICK Board: barcode MHZ113 part 030-1724-001 rev -E 4 600 MHZ IP35 Processors CPU: MIPS R14000 Processor Chip Revision: 2.4 FPU: MIPS R14010 Floating Point Chip Revision: 2.4 CPU 0 at Module 001c02/Slot 0/Slice A: 600 Mhz MIPS R14000 Processor Chip (enabled) Processor revision: 2.4. Scache: Size 4 MB Speed 300 Mhz Tap 0xa CPU 1 at Module 001c02/Slot 0/Slice B: 600 Mhz MIPS R14000 Processor Chip (enabled) Processor revision: 2.4. Scache: Size 4 MB Speed 300 Mhz Tap 0xa CPU 2 at Module 001c02/Slot 0/Slice C: 600 Mhz MIPS R14000 Processor Chip (enabled) Processor revision: 2.4. Scache: Size 4 MB Speed 300 Mhz Tap 0xa CPU 3 at Module 001c02/Slot 0/Slice D: 600 Mhz MIPS R14000 Processor Chip (enabled) Processor revision: 2.4. Scache: Size 4 MB Speed 300 Mhz Tap 0xa Main memory size: 4096 Mbytes Instruction cache size: 32 Kbytes Data cache size: 32 Kbytes Secondary unified instruction/data cache size: 4 Mbytes Memory at Module 001c02/Slot 0: 4096 MB (enabled) Bank 0 contains 1024 MB (Premium) DIMMS (enabled) Bank 1 contains 1024 MB (Premium) DIMMS (enabled) Bank 2 contains 1024 MB (Premium) DIMMS (enabled) Bank 3 contains 1024 MB (Premium) DIMMS (enabled) Memory at Module 001p04/Slot 0: 0 MB (enabled) Integral SCSI controller 0: Version QL12160, low voltage differential Disk drive: unit 1 on SCSI controller 0 (unit 1) Integral SCSI controller 1: Version QL12160, low voltage differential Integral SCSI controller 6: Version Fibre Channel QL2342 Port 1, 66 MHz PCI Disk drive: unit 30 on SCSI controller 6 (unit 30) Disk drive: unit 31 on SCSI controller 6 (unit 31) Disk drive: unit 32 on SCSI controller 6 (unit 32) Disk drive: unit 33 on SCSI controller 6 (unit 33) Disk drive: unit 34 on SCSI controller 6 (unit 34) Disk drive: unit 35 on SCSI controller 6 (unit 35) Disk drive: unit 36 on SCSI controller 6 (unit 36) Disk drive: unit 37 on SCSI controller 6 (unit 37) Disk drive: unit 38 on SCSI controller 6 (unit 38) Disk drive: unit 39 on SCSI controller 6 (unit 39) Integral SCSI controller 7: Version Fibre Channel QL2342 Port 2, 66 MHz PCI IOC3/IOC4 serial port: tty3 IOC3/IOC4 serial port: tty4 Integral Fast Ethernet: ef0, version 1, module 001c02, pci 4 Gigabit Ethernet: tg1, module 001p04, PCI bus 2 slot 1 port 0 Gigabit Ethernet: tg2, module 001p04, PCI bus 2 slot 1 port 1 Gigabit Ethernet: tg3, module 001p04, PCI bus 3 slot 1 port 0 Gigabit Ethernet: tg4, module 001p04, PCI bus 3 slot 1 port 1 PCI Adapter ID (vendor 0x1077, device 0x1216) PCI slot 1 PCI Adapter ID (vendor 0x10a9, device 0x0003) PCI slot 4 PCI Adapter ID (vendor 0x11c1, device 0x5802) PCI slot 5 PCI Adapter ID (vendor 0x14e4, device 0x1648) PCI slot 1 PCI Adapter ID (vendor 0x14e4, device 0x1648) PCI slot 1 PCI Adapter ID (vendor 0x1077, device 0x2312) PCI slot 1 PCI Adapter ID (vendor 0x1077, device 0x2312) PCI slot 1 PCI Adapter ID (vendor 0x14e4, device 0x1648) PCI slot 1 PCI Adapter ID (vendor 0x14e4, device 0x1648) PCI slot 1 IOC3/IOC4 external interrupts: 1 HUB in Module 001c02/Slot 0: Revision 2 Speed 200.00 Mhz (enabled) IP35prom in Module 001c02/Slot n0: Revision 6.210 USB controller: type OHCI
SAS: Serial Attached SCSI[edit]
Think of it as a bridge between SATA and SCSI.
IP35 machines [1] can use a LSI HBA to open up a world of SAS and SATA drives.
SAS Reference[edit]
IDE to SCSI adapters working with SGI machines[edit]
General comments about SCSI on SGI Systems[edit]
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[edit]
[edit]
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[edit]
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[edit]
techpubs.sgi.com's Device driver programmers guide section on SCSI
Command Data Blocks[edit]
Decoding SCSI Errors[edit]
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.