diff --git a/en_US.ISO8859-1/books/handbook/hw/Makefile b/en_US.ISO8859-1/books/handbook/hw/Makefile deleted file mode 100644 index c8a2291933..0000000000 --- a/en_US.ISO8859-1/books/handbook/hw/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# -# Build the Handbook with just the content from this chapter. -# -# $FreeBSD$ -# - -CHAPTERS= hw/chapter.sgml - -VPATH= .. - -MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} - -DOC_PREFIX?= ${.CURDIR}/../../../.. - -.include "../Makefile" diff --git a/en_US.ISO8859-1/books/handbook/hw/chapter.sgml b/en_US.ISO8859-1/books/handbook/hw/chapter.sgml deleted file mode 100644 index 5bc073eb28..0000000000 --- a/en_US.ISO8859-1/books/handbook/hw/chapter.sgml +++ /dev/null @@ -1,5854 +0,0 @@ - - - - PC Hardware compatibility - - Issues of hardware compatibility are among the most troublesome in the - computer industry today and FreeBSD is by no means immune to trouble. In - this respect, FreeBSD's advantage of being able to run on inexpensive - commodity PC hardware is also its liability when it comes to support for - the amazing variety of components on the market. While it would be - impossible to provide an exhaustive listing of hardware that FreeBSD - supports, this section serves as a catalog of the device drivers included - with FreeBSD and the hardware each drivers supports. Where possible and - appropriate, notes about specific products are included. You may also - want to refer to the kernel - configuration file section in this handbook for a list of - supported devices. - - As FreeBSD is a volunteer project without a funded testing department, - we depend on you, the user, for much of the information contained in this - catalog. If you have direct experience of hardware that does or does not - work with FreeBSD, please let us know by sending e-mail to the &a.doc;. - Questions about supported hardware should be directed to the &a.questions; - (see Mailing Lists for more - information). When submitting information or asking a question, please - remember to specify exactly what version of FreeBSD you are using and - include as many details of your hardware as possible. - - - Resources on the Internet - - The following links have proven useful in selecting hardware. Though - some of what you see won't necessarily be specific (or even applicable) - to FreeBSD, most of the hardware information out there is OS - independent. Please check with the FreeBSD hardware guide to make sure - that your chosen configuration is supported before making any - purchases. - - - - The Pentium Systems - Hardware Performance Guide - - - - - - Sample Configurations - - The following list of sample hardware configurations by no means - constitutes an endorsement of a given hardware vendor or product by - The FreeBSD Project. This information is provided - only as a public service and merely catalogs some of the experiences - that various individuals have had with different hardware combinations. - Your mileage may vary. Slippery when wet. Beware of dog. - - - Jordan's Picks - - I have had fairly good luck building workstation and server - configurations with the following components. I can't guarantee that - you will too, nor that any of the companies here will remain - best buys forever. I will try, when I can, to keep this - list up-to-date but cannot obviously guarantee that it will be at any - given time. - - - Motherboards - - For Pentium Pro (P6) systems, I'm quite fond of the Tyan S1668 - dual-processor motherboard as well as the Intel PR440FX motherboard - with on-board SCSI WIDE and 100/10MB Intel EtherExpress NIC. You - can build a dandy little single or dual processor system (which is - supported in FreeBSD 3.0) for very little cost now that the Pentium - Pro 180/256K chips have fallen so greatly in price, but no telling - how much longer this will last. - - For the Pentium II, I'm rather partial to the ASUS P2l97-S - motherboard with the on-board Adaptec SCSI WIDE controller. - - For Pentium machines, the ASUS P55T2P4 - motherboard appears to be a good choice for mid-to-high range - Pentium server and workstation systems. - - Those wishing to build more fault-tolerant systems should also - be sure to use Parity memory or, for truly 24/7 applications, ECC - memory. - - - ECC memory does involve a slight performance trade-off (which - may or may not be noticeable depending on your application) but - buys you significantly increased fault-tolerance to memory - errors. - - - - - Disk Controllers - - This one is a bit trickier, and while I used to recommend the - Buslogic controllers - unilaterally for everything from ISA to PCI, now I tend to lean - towards the Adaptec - 1542CF for ISA, Buslogic Bt747c for EISA and Adaptec 2940UW for - PCI. - - The NCR/Symbios cards for PCI have also worked well for me, - though you need to make sure that your motherboard supports the - BIOS-less model if you're using one of those (if your card has - nothing which looks even vaguely like a ROM chip on it, you've - probably got one which expects its BIOS to be on your - motherboard). - - If you should find that you need more than one SCSI controller - in a PCI machine, you may wish to consider conserving your scarce - PCI bus resources by buying the Adaptec 3940 card, which puts two - SCSI controllers (and internal busses) in a single slot. - - - There are two types of 3940 on the market—the older - model with AIC 7880 chips on it, and the newer one with AIC 7895 - chips. The newer model requires CAM - support which is not yet part of FreeBSD—you have to add it, - or install from one of the CAM binary snapshot release. - - - - - Disk drives - - In this particular game of Russian roulette, I'll make few - specific recommendations except to say SCSI over IDE whenever - you can afford it. Even in small desktop configurations, SCSI - often makes more sense since it allows you to easily migrate drives - from server to desktop as falling drive prices make it economical to - do so. If you have more than one machine to administer then think - of it not simply as storage, think of it as a food chain! For a - serious server configuration, there's not even any - argument—use SCSI equipment and good cables. - - - - CDROM drives - - My SCSI preferences extend to SCSI CDROM drives as well, and - while the Toshiba drives - have always been favorites of mine (in whatever speed is hot that - week), I'm still fond of my good old Plextor PX-12CS drive. It's - only a 12 speed, but it's offered excellent performance and - reliability. - - Generally speaking, most SCSI CDROM drives I've seen have been - of pretty solid construction and you probably won't go wrong with an - HP or NEC SCSI CDROM drive either. SCSI CDROM prices also appear to - have dropped considerably in the last few months and are now quite - competitive with IDE CDROMs while remaining a technically superior - solution. I now see no reason whatsoever to settle for an IDE CDROM - drive if given a choice between the two. - - - - CD Recordable (WORM) drives - - At the time of this writing, FreeBSD supports 3 types of CDR - drives (though I believe they all ultimately come from Phillips - anyway): The Phillips CDD 522 (Acts like a Plasmon), the PLASMON - RF4100 and the HP 6020i. I myself use the HP 6020i for burning - CDROMs (in 2.2 and later releases—it does not work with - earlier releases of the SCSI code) and it works very well. See - /usr/share/examples/worm - on your 2.2 system for example scripts used to created ISO9660 - filesystem images (with RockRidge extensions) and burn them onto an - HP6020i CDR. - - - - Tape drives - - I've had pretty good luck with both 8mm - drives from Exabyte and 4mm - (DAT) drives from HP. - - For backup purposes, I'd have to give the higher recommendation - to the Exabyte due to the more robust nature (and higher storage - capacity) of 8mm tape. - - - - Video Cards - - If you can also afford to buy a commercial X server for - US$99 from Xi Graphics, Inc. - (formerly X Inside, Inc) then I can heartily recommend the - Matrox Millenium - II card. Note that support for this card is also - excellent with the XFree86 server, which is now - at version 3.3.2. - - You also certainly can't go wrong with one of Number 9's cards — their - S3 Vision 868 and 968 based cards (the 9FX series) also being quite - fast and very well supported by XFree86's S3 server. You can also - pick up their Revolution 3D cards very cheaply these days, - especially if you require a lot of video memory. - - - - Monitors - - I have had very good luck with the Sony - Multiscan 17seII monitors, as have I with the Viewsonic - offering in the same (Trinitron) tube. For larger than 17", all I - can recommend at the time of this writing is to not spend any less - than U.S. $2,000 for a 21" monitor or $1,700 for a 20" - monitor if that's what you really need. There are good monitors - available in the >=20" range and there are also cheap monitors in - the >=20" range. Unfortunately, very few are both cheap and - good! - - - - Networking - - I can recommend the Intel EtherExpress Pro/100B card first and - foremost, followed by the SMC Ultra 16 controller for any - ISA application and the SMC EtherPower or Compex ENET32 cards for - slightly cheaper PCI based networking. In general, any PCI NIC - based around DEC's DC21041 Ethernet controller chip, such as the - Znyx ZX342 or DEC DE435/450, will generally work quite well and can - frequently be found in 2-port and 4-port version (useful for - firewalls and routers), though the Pro/100MB card has the edge when - it comes to providing the best performance with lower - overhead. - - If what you're looking for is the cheapest possible solution - then almost any NE2000 clone will do a fine job for very little - cost. - - - - Serial - - If you're looking for high-speed serial networking solutions, - then Digi International - makes the SYNC/570 - series, with drivers now in FreeBSD-CURRENT. Emerging Technologies also - manufactures a board with T1/E1 capabilities, using software they - provide. I have no direct experience using either product, - however. - - multiport card options are somewhat more numerous, though it has - to be said that FreeBSD's support for Cyclades's products is - probably the tightest, primarily as a result of that company's - commitment to making sure that we are adequately supplied with - evaluation boards and technical specs. I've heard that the - Cyclom-16Ye offers the best price/performance, though I've not - checked the prices lately. Other multiport cards I've heard good - things about are the BOCA and AST cards, and Stallion Technologies - apparently offers an unofficial driver for their cards at this - location. - - - - Audio - - I currently use a Creative - Labs AWE32 though just about anything from Creative Labs - will generally work these days. This is not to say that other types - of sound cards don't also work, simply that I have little experience - with them (I was a former GUS fan, but Gravis's sound card situation - has been dire for some time). - - - - Video - - For video capture, there are two good choices — any card - based on the Brooktree BT848 chip, such as the Hauppauge or WinTV - boards, will work very nicely with FreeBSD. Another board which - works for me is the Matrox Meteor card. - FreeBSD also supports the older video spigot card from Creative - Labs, but those are getting somewhat difficult to find. Note that - the Meteor frame grabber card will not work - with motherboards based on the 440FX chipset! See the motherboard reference section for details. - In such cases, it's better to go with a BT848 based board. - - - - - - Core/Processing - - - Motherboards, busses, and chipsets - - - * ISA - - - - - - * EISA - - - - - - * VLB - - - - - - PCI - - Contributed by &a.obrien; from postings by - &a.rgrimes;. 25 April 1995. - - Continuing updates by &a.jkh;. Last - update on 26 August 1996. - - Of the Intel PCI chip sets, the following list describes various - types of known-brokenness and the degree of breakage, listed from - worst to best. - - - - Mercury: - - - Cache coherency problems, especially if there are ISA bus - masters behind the ISA to PCI bridge chip. Hardware flaw, only - known work around is to turn the cache off. - - - - - Saturn-I (ie, 82424ZX at rev 0, 1 or - 2): - - - Write back cache coherency problems. Hardware flaw, only - known work around is to set the external cache to - write-through mode. Upgrade to Saturn-II. - - - - - Saturn-II (ie, 82424ZX at rev 3 or - 4): - - - Works fine, but many MB manufactures leave out the - external dirty bit SRAM needed for write back operation. - You can work around this either by running it in write - through mode, or get the dirty bit SRAM installed (I - have these for the ASUS PCI/I-486SP3G rev 1.6 and later - boards). - - - - - Neptune: - - - Cannot run more than 2 bus master devices. Admitted Intel - design flaw. Workarounds include do not run more than 2 bus - masters, special hardware design to replace the PCI bus - arbiter (appears on Intel Altair board and several other Intel - server group MB's). And of course Intel's official answer, - move to the Triton chip set, we fixed it - there. - - - - - Triton (ie, 430FX): - - - No known cache coherency or bus master problems, chip set - does not implement parity checking. Workaround for parity - issue. Use Triton-II based motherboards if you have the - choice. - - - - - Triton-II (ie, 430HX): - - - All reports on motherboards using this chipset have been - favorable so far. No known problems. - - - - - Orion: - - - Early versions of this chipset suffered from a PCI - write-posting bug which can cause noticeable performance - degradation in applications where large amounts of PCI bus - traffic is involved. B0 stepping or later revisions of the - chipset fixed this problem. - - - - - 440FX: - - - This Pentium - Pro support chipset seems to work well, and does not - suffer from any of the early Orion chipset problems. It also - supports a wider variety of memory, including ECC and parity. - The only known problem with it is that the Matrox Meteor frame - grabber card doesn't like it. - - - - - - - - CPUs/FPUs - - Contributed by &a.asami;. 26 December - 1997. - - - P6 class (Pentium Pro/Pentium II) - - Both the Pentium Pro and Pentium II work fine with FreeBSD. In - fact, our main FTP site ftp.FreeBSD.org (also known - as "ftp.cdrom.com", world's largest FTP site) - runs FreeBSD on a Pentium Pro. Configurations - details are available for interested parties. - - - - Pentium class - - The Intel Pentium (P54C), Pentium MMX (P55C), AMD K6 and - Cyrix/IBM 6x86MX processors are all reported to work with FreeBSD. - I will not go into details of which processor is faster than what, - there are millions of web sites on the Internet that tells you one - way or another. :) - - - Various CPUs have different voltage/cooling requirements. Make - sure your motherboard can supply the exact voltage needed by the - CPU. For instance, many recent MMX chips require split voltage - (e.g., 2.9V core, 3.3V I/O). Also, some AMD and Cyrix/IBM chips - run hotter than Intel chips. In that case, make sure you have - good heatsink/fans (you can get the list of certified parts from - their web pages). - - - - Clock speeds - - Contributed by &a.rgrimes;. 1 October - 1996. - - Updated by &a.asami;. 27 December - 1997. - - Pentium class machines use different clock speeds for the - various parts of the system. These being the speed of the CPU, - external memory bus, and the PCI bus. It is not always true that - a faster processor will make a system faster than a - slower one, due to the various clock speeds used. - Below is a table showing the differences: - - - - - - Rated CPU MHz - External Clock and Memory Bus MHz - External to Internal Clock Multiplier - PCI Bus Clock MHz - - - - - - 60 - 60 - 1.0 - 30 - - - - 66 - 66 - 1.0 - 33 - - - - 75 - 50 - 1.5 - 25 - - - - 90 - 60 - 1.5 - 30 - - - - 100 - 50 - 2 - 25 - - - - 100 - 66 - 1.5 - 33 - - - - 120 - 60 - 2 - 30 - - - - 133 - 66 - 2 - 33 - - - - 150 - 60 - 2.5 - 30 (Intel, AMD) - - - - 150 - 75 - 2 - 37.5 (Cyrix/IBM 6x86MX) - - - - 166 - 66 - 2.5 - 33 - - - - 180 - 60 - 3 - 30 - - - - 200 - 66 - 3 - 33 - - - - 233 - 66 - 3.5 - 33 - - - - - - - 66MHz may actually be 66.667MHz, but don't assume so. - - The Pentium 100 can be run at either 50MHz external clock - with a multiplier of 2 or at 66MHz and a multiplier of - 1.5. - - - As can be seen the best parts to be using are the 100, 133, - 166, 200 and 233, with the exception that at a multiplier of 3 or - more the CPU starves for memory. - - - - The AMD K6 Bug - - In 1997, there have been reports of the AMD K6 seg faulting - during heavy compilation. That problem has been fixed in 3Q '97. - According to reports, K6 chips with date mark 9733 - or larger (i.e., manufactured in the 33rd week of '97 or later) do - not have this bug. - - - - - * 486 class - - - - - - * 386 class - - - - - - 286 class - - Sorry, FreeBSD does not run on 80286 machines. It is nearly - impossible to run today's large full-featured unices on such - hardware. - - - - - * Memory - - The minimum amount of memory you must have to install FreeBSD is 5 - MB. Once your system is up and running you can build a custom kernel that - will use less memory. If you use the boot4.flp - you can get away with having only 4 MB. - - - - * BIOS - - - - - - - Input/Output Devices - - - * Video cards - - - - - - * Sound cards - - - - - - Serial ports and multiport cards - - - The UART: What it is and how it works - - Copyright © 1996 &a.uhclem;, All Rights - Reserved. 13 January 1996. - - The Universal Asynchronous Receiver/Transmitter (UART) - controller is the key component of the serial communications - subsystem of a computer. The UART takes bytes of data and transmits - the individual bits in a sequential fashion. At the destination, a - second UART re-assembles the bits into complete bytes. - - Serial transmission is commonly used with modems and for - non-networked communication between computers, terminals and other - devices. - - There are two primary forms of serial transmission: Synchronous - and Asynchronous. Depending on the modes that are supported by the - hardware, the name of the communication sub-system will usually - include a A if it supports Asynchronous - communications, and a S if it supports - Synchronous communications. Both forms are described below. - - Some common acronyms are: - -
- UART Universal Asynchronous - Receiver/Transmitter -
- -
- USART Universal Synchronous-Asynchronous - Receiver/Transmitter -
- - - Synchronous Serial Transmission - - Synchronous serial transmission requires that the sender and - receiver share a clock with one another, or that the sender - provide a strobe or other timing signal so that the receiver knows - when to read the next bit of the data. In most - forms of serial Synchronous communication, if there is no data - available at a given instant to transmit, a fill character must be - sent instead so that data is always being transmitted. - Synchronous communication is usually more efficient because only - data bits are transmitted between sender and receiver, and - synchronous communication can be more costly if extra wiring - and circuits are required to share a clock signal between the - sender and receiver. - - A form of Synchronous transmission is used with printers and - fixed disk devices in that the data is sent on one set of wires - while a clock or strobe is sent on a different wire. Printers and - fixed disk devices are not normally serial devices because most - fixed disk interface standards send an entire word of data for - each clock or strobe signal by using a separate wire for each bit - of the word. In the PC industry, these are known as Parallel - devices. - - The standard serial communications hardware in the PC does not - support Synchronous operations. This mode is described here for - comparison purposes only. - - - - Asynchronous Serial Transmission - - Asynchronous transmission allows data to be transmitted - without the sender having to send a clock signal to the receiver. - Instead, the sender and receiver must agree on timing parameters - in advance and special bits are added to each word which are used - to synchronize the sending and receiving units. - - When a word is given to the UART for Asynchronous - transmissions, a bit called the "Start Bit" is added to the - beginning of each word that is to be transmitted. The Start Bit - is used to alert the receiver that a word of data is about to be - sent, and to force the clock in the receiver into synchronization - with the clock in the transmitter. These two clocks must be - accurate enough to not have the frequency drift by more than 10% - during the transmission of the remaining bits in the word. (This - requirement was set in the days of mechanical teleprinters and is - easily met by modern electronic equipment.) - - After the Start Bit, the individual bits of the word of data - are sent, with the Least Significant Bit (LSB) being sent first. - Each bit in the transmission is transmitted for exactly the same - amount of time as all of the other bits, and the receiver - looks at the wire at approximately halfway through - the period assigned to each bit to determine if the bit is a - 1 or a 0. For example, if - it takes two seconds to send each bit, the receiver will examine - the signal to determine if it is a 1 or a - 0 after one second has passed, then it will - wait two seconds and then examine the value of the next bit, and - so on. - - The sender does not know when the receiver has - looked at the value of the bit. The sender only - knows when the clock says to begin transmitting the next bit of - the word. - - When the entire data word has been sent, the transmitter may - add a Parity Bit that the transmitter generates. The Parity Bit - may be used by the receiver to perform simple error checking. - Then at least one Stop Bit is sent by the transmitter. - - When the receiver has received all of the bits in the data - word, it may check for the Parity Bits (both sender and receiver - must agree on whether a Parity Bit is to be used), and then the - receiver looks for a Stop Bit. If the Stop Bit does not appear - when it is supposed to, the UART considers the entire word to be - garbled and will report a Framing Error to the host processor when - the data word is read. The usual cause of a Framing Error is that - the sender and receiver clocks were not running at the same speed, - or that the signal was interrupted. - - Regardless of whether the data was received correctly or not, - the UART automatically discards the Start, Parity and Stop bits. - If the sender and receiver are configured identically, these bits - are not passed to the host. - - If another word is ready for transmission, the Start Bit for - the new word can be sent as soon as the Stop Bit for the previous - word has been sent. - - Because asynchronous data is self synchronizing, - if there is no data to transmit, the transmission line can be - idle. - - - - Other UART Functions - - In addition to the basic job of converting data from parallel - to serial for transmission and from serial to parallel on - reception, a UART will usually provide additional circuits for - signals that can be used to indicate the state of the transmission - media, and to regulate the flow of data in the event that the - remote device is not prepared to accept more data. For example, - when the device connected to the UART is a modem, the modem may - report the presence of a carrier on the phone line while the - computer may be able to instruct the modem to reset itself or to - not take calls by asserting or disasserting one more of these - extra signals. The function of each of these additional signals is - defined in the EIA RS232-C standard. - - - - The RS232-C and V.24 Standards - - In most computer systems, the UART is connected to circuitry - that generates signals that comply with the EIA RS232-C - specification. There is also a CCITT standard named V.24 that - mirrors the specifications included in RS232-C. - - - RS232-C Bit Assignments (Marks and Spaces) - - In RS232-C, a value of 1 is called a - Mark and a value of 0 is - called a Space. When a communication line is - idle, the line is said to be Marking, or - transmitting continuous 1 values. - - The Start bit always has a value of 0 (a - Space). The Stop Bit always has a value of 1 - (a Mark). This means that there will always be a Mark (1) to - Space (0) transition on the line at the start of every word, - even when multiple word are transmitted back to back. This - guarantees that sender and receiver can resynchronize their - clocks regardless of the content of the data bits that are being - transmitted. - - The idle time between Stop and Start bits does not have to - be an exact multiple (including zero) of the bit rate of the - communication link, but most UARTs are designed this way for - simplicity. - - In RS232-C, the "Marking" signal (a 1) is - represented by a voltage between -2 VDC and -12 VDC, and a - "Spacing" signal (a 0) is represented by a - voltage between 0 and +12 VDC. The transmitter is supposed to - send +12 VDC or -12 VDC, and the receiver is supposed to allow - for some voltage loss in long cables. Some transmitters in low - power devices (like portable computers) sometimes use only +5 - VDC and -5 VDC, but these values are still acceptable to a - RS232-C receiver, provided that the cable lengths are - short. - - - - RS232-C Break Signal - - RS232-C also specifies a signal called a - Break, which is caused by sending continuous - Spacing values (no Start or Stop bits). When there is no - electricity present on the data circuit, the line is considered - to be sending Break. - - The Break signal must be of a duration - longer than the time it takes to send a complete byte plus - Start, Stop and Parity bits. Most UARTs can distinguish between - a Framing Error and a Break, but if the UART cannot do this, the - Framing Error detection can be used to identify Breaks. - - In the days of teleprinters, when numerous printers around - the country were wired in series (such as news services), any - unit could cause a Break by temporarily - opening the entire circuit so that no current flowed. This was - used to allow a location with urgent news to interrupt some - other location that was currently sending information. - - In modern systems there are two types of Break signals. If - the Break is longer than 1.6 seconds, it is considered a "Modem - Break", and some modems can be programmed to terminate the - conversation and go on-hook or enter the modems' command mode - when the modem detects this signal. If the Break is smaller - than 1.6 seconds, it signifies a Data Break and it is up to the - remote computer to respond to this signal. Sometimes this form - of Break is used as an Attention or Interrupt signal and - sometimes is accepted as a substitute for the ASCII CONTROL-C - character. - - Marks and Spaces are also equivalent to Holes - and No Holes in paper tape systems. - - - Breaks cannot be generated from paper tape or from any - other byte value, since bytes are always sent with Start and - Stop bit. The UART is usually capable of generating the - continuous Spacing signal in response to a special command - from the host processor. - - - - - RS232-C DTE and DCE Devices - - The RS232-C specification defines two types of equipment: - the Data Terminal Equipment (DTE) and the Data Carrier Equipment - (DCE). Usually, the DTE device is the terminal (or computer), - and the DCE is a modem. Across the phone line at the other end - of a conversation, the receiving modem is also a DCE device and - the computer that is connected to that modem is a DTE device. - The DCE device receives signals on the pins that the DTE device - transmits on, and vice versa. - - When two devices that are both DTE or both DCE must be - connected together without a modem or a similar media translater - between them, a NULL modem must be used. The NULL modem - electrically re-arranges the cabling so that the transmitter - output is connected to the receiver input on the other device, - and vice versa. Similar translations are performed on all of - the control signals so that each device will see what it thinks - are DCE (or DTE) signals from the other device. - - The number of signals generated by the DTE and DCE devices - are not symmetrical. The DTE device generates fewer signals for - the DCE device than the DTE device receives from the DCE. - - - - RS232-C Pin Assignments - - The EIA RS232-C specification (and the ITU equivalent, V.24) - calls for a twenty-five pin connector (usually a DB25) and - defines the purpose of most of the pins in that - connector. - - In the IBM Personal Computer and similar systems, a subset - of RS232-C signals are provided via nine pin connectors (DB9). - The signals that are not included on the PC connector deal - mainly with synchronous operation, and this transmission mode is - not supported by the UART that IBM selected for use in the IBM - PC. - - Depending on the computer manufacturer, a DB25, a DB9, or - both types of connector may be used for RS232-C communications. - (The IBM PC also uses a DB25 connector for the parallel printer - interface which causes some confusion.) - - Below is a table of the RS232-C signal assignments in the - DB25 and DB9 connectors. - - - - - - DB25 RS232-C Pin - DB9 IBM PC Pin - EIA Circuit Symbol - CCITT Circuit Symbol - Common Name - Signal Source - Description - - - - - - 1 - - - AA - 101 - PG/FG - - - Frame/Protective Ground - - - - 2 - 3 - BA - 103 - TD - DTE - Transmit Data - - - - 3 - 2 - BB - 104 - RD - DCE - Receive Data - - - - 4 - 7 - CA - 105 - RTS - DTE - Request to Send - - - - 5 - 8 - CB - 106 - CTS - DCE - Clear to Send - - - - 6 - 6 - CC - 107 - DSR - DCE - Data Set Ready - - - - 7 - 5 - AV - 102 - SG/GND - - - Signal Ground - - - - 8 - 1 - CF - 109 - DCD/CD - DCE - Data Carrier Detect - - - - 9 - - - - - - - - - - - Reserved for Test - - - - 10 - - - - - - - - - - - Reserved for Test - - - - 11 - - - - - - - - - - - Reserved for Test - - - - 12 - - - CI - 122 - SRLSD - DCE - Sec. Recv. Line Signal Detector - - - - 13 - - - SCB - 121 - SCTS - DCE - Secondary Clear to Send - - - - 14 - - - SBA - 118 - STD - DTE - Secondary Transmit Data - - - - 15 - - - DB - 114 - TSET - DCE - Trans. Sig. Element Timing - - - - 16 - - - SBB - 119 - SRD - DCE - Secondary Received Data - - - - 17 - - - DD - 115 - RSET - DCE - Receiver Signal Element Timing - - - - 18 - - - - - 141 - LOOP - DTE - Local Loopback - - - - 19 - - - SCA - 120 - SRS - DTE - Secondary Request to Send - - - - 20 - 4 - CD - 108.2 - DTR - DTE - Data Terminal Ready - - - - 21 - - - - - - - RDL - DTE - Remote Digital Loopback - - - - 22 - 9 - CE - 125 - RI - DCE - Ring Indicator - - - - 23 - - - CH - 111 - DSRS - DTE - Data Signal Rate Selector - - - - 24 - - - DA - 113 - TSET - DTE - Trans. Sig. Element Timing - - - - 25 - - - - - 142 - - - DCE - Test Mode - - - - - - - - - Bits, Baud and Symbols - - Baud is a measurement of transmission speed in asynchronous - communication. Because of advances in modem communication - technology, this term is frequently misused when describing the - data rates in newer devices. - - Traditionally, a Baud Rate represents the number of bits that - are actually being sent over the media, not the amount of data - that is actually moved from one DTE device to the other. The Baud - count includes the overhead bits Start, Stop and Parity that are - generated by the sending UART and removed by the receiving UART. - This means that seven-bit words of data actually take 10 bits to - be completely transmitted. Therefore, a modem capable of moving - 300 bits per second from one place to another can normally only - move 30 7-bit words if Parity is used and one Start and Stop bit - are present. - - If 8-bit data words are used and Parity bits are also used, - the data rate falls to 27.27 words per second, because it now - takes 11 bits to send the eight-bit words, and the modem still - only sends 300 bits per second. - - The formula for converting bytes per second into a baud rate - and vice versa was simple until error-correcting modems came - along. These modems receive the serial stream of bits from the - UART in the host computer (even when internal modems are used the - data is still frequently serialized) and converts the bits back - into bytes. These bytes are then combined into packets and sent - over the phone line using a Synchronous transmission method. This - means that the Stop, Start, and Parity bits added by the UART in - the DTE (the computer) were removed by the modem before - transmission by the sending modem. When these bytes are received - by the remote modem, the remote modem adds Start, Stop and Parity - bits to the words, converts them to a serial format and then sends - them to the receiving UART in the remote computer, who then strips - the Start, Stop and Parity bits. - - The reason all these extra conversions are done is so that the - two modems can perform error correction, which means that the - receiving modem is able to ask the sending modem to resend a block - of data that was not received with the correct checksum. This - checking is handled by the modems, and the DTE devices are usually - unaware that the process is occurring. - - By striping the Start, Stop and Parity bits, the additional - bits of data that the two modems must share between themselves to - perform error-correction are mostly concealed from the effective - transmission rate seen by the sending and receiving DTE equipment. - For example, if a modem sends ten 7-bit words to another modem - without including the Start, Stop and Parity bits, the sending - modem will be able to add 30 bits of its own information that the - receiving modem can use to do error-correction without impacting - the transmission speed of the real data. - - The use of the term Baud is further confused by modems that - perform compression. A single 8-bit word passed over the - telephone line might represent a dozen words that were transmitted - to the sending modem. The receiving modem will expand the data - back to its original content and pass that data to the receiving - DTE. - - Modern modems also include buffers that allow the rate that - bits move across the phone line (DCE to DCE) to be a different - speed than the speed that the bits move between the DTE and DCE on - both ends of the conversation. Normally the speed between the DTE - and DCE is higher than the DCE to DCE speed because of the use of - compression by the modems. - - Because the number of bits needed to describe a byte varied - during the trip between the two machines plus the differing - bits-per-seconds speeds that are used present on the DTE-DCE and - DCE-DCE links, the usage of the term Baud to describe the overall - communication speed causes problems and can misrepresent the true - transmission speed. So Bits Per Second (bps) is the correct term - to use to describe the transmission rate seen at the DCE to DCE - interface and Baud or Bits Per Second are acceptable terms to use - when a connection is made between two systems with a wired - connection, or if a modem is in use that is not performing - error-correction or compression. - - Modern high speed modems (2400, 9600, 14,400, and 19,200bps) - in reality still operate at or below 2400 baud, or more - accurately, 2400 Symbols per second. High speed modem are able to - encode more bits of data into each Symbol using a technique called - Constellation Stuffing, which is why the effective bits per second - rate of the modem is higher, but the modem continues to operate - within the limited audio bandwidth that the telephone system - provides. Modems operating at 28,800 and higher speeds have - variable Symbol rates, but the technique is the same. - - - - The IBM Personal Computer UART - - Starting with the original IBM Personal Computer, IBM selected - the National Semiconductor INS8250 UART for use in the IBM PC - Parallel/Serial Adapter. Subsequent generations of compatible - computers from IBM and other vendors continued to use the INS8250 - or improved versions of the National Semiconductor UART - family. - - - National Semiconductor UART Family Tree - - There have been several versions and subsequent generations - of the INS8250 UART. Each major version is described - below. - - - INS8250 -> INS8250B - \ - \ - \-> INS8250A -> INS82C50A - \ - \ - \-> NS16450 -> NS16C450 - \ - \ - \-> NS16550 -> NS16550A -> PC16550D - - - - INS8250 - - - This part was used in the original IBM PC and IBM - PC/XT. The original name for this part was the INS8250 - ACE (Asynchronous Communications Element) and it is made - from NMOS technology. - - The 8250 uses eight I/O ports and has a one-byte send - and a one-byte receive buffer. This original UART has - several race conditions and other flaws. The original IBM - BIOS includes code to work around these flaws, but this - made the BIOS dependent on the flaws being present, so - subsequent parts like the 8250A, 16450 or 16550 could not - be used in the original IBM PC or IBM PC/XT. - - - - - INS8250-B - - - This is the slower speed of the INS8250 made from NMOS - technology. It contains the same problems as the original - INS8250. - - - - - INS8250A - - - An improved version of the INS8250 using XMOS - technology with various functional flaws corrected. The - INS8250A was used initially in PC clone computers by - vendors who used clean BIOS designs. Because - of the corrections in the chip, this part could not be - used with a BIOS compatible with the INS8250 or - INS8250B. - - - - - INS82C50A - - - This is a CMOS version (low power consumption) of the - INS8250A and has similar functional - characteristics. - - - - - NS16450 - - - Same as NS8250A with improvements so it can be used - with faster CPU bus designs. IBM used this part in the - IBM AT and updated the IBM BIOS to no longer rely on the - bugs in the INS8250. - - - - - NS16C450 - - - This is a CMOS version (low power consumption) of the - NS16450. - - - - - NS16550 - - - Same as NS16450 with a 16-byte send and receive buffer - but the buffer design was flawed and could not be reliably - be used. - - - - - NS16550A - - - Same as NS16550 with the buffer flaws corrected. The - 16550A and its successors have become the most popular - UART design in the PC industry, mainly due it its ability - to reliably handle higher data rates on operating systems - with sluggish interrupt response times. - - - - - NS16C552 - - - This component consists of two NS16C550A CMOS UARTs in - a single package. - - - - - PC16550D - - - Same as NS16550A with subtle flaws corrected. This is - revision D of the 16550 family and is the latest design - available from National Semiconductor. - - - - - - - The NS16550AF and the PC16550D are the same thing - - National reorganized their part numbering system a few years - ago, and the NS16550AFN no longer exists by that name. (If you - have a NS16550AFN, look at the date code on the part, which is a - four digit number that usually starts with a nine. The first - two digits of the number are the year, and the last two digits - are the week in that year when the part was packaged. If you - have a NS16550AFN, it is probably a few years old.) - - The new numbers are like PC16550DV, with minor differences - in the suffix letters depending on the package material and its - shape. (A description of the numbering system can be found - below.) - - It is important to understand that in some stores, you may - pay $15(US) for a NS16550AFN made in 1990 and in the next - bin are the new PC16550DN parts with minor fixes that National - has made since the AFN part was in production, the PC16550DN was - probably made in the past six months and it costs half (as low - as $5(US) in volume) as much as the NS16550AFN because they - are readily available. - - As the supply of NS16550AFN chips continues to shrink, the - price will probably continue to increase until more people - discover and accept that the PC16550DN really has the same - function as the old part number. - - - - National Semiconductor Part Numbering System - - The older NSnnnnnrqp part - numbers are now of the format - PCnnnnnrgp. - - The r is the revision field. The - current revision of the 16550 from National Semiconductor is - D. - - The p is the package-type field. - The types are: - - - - - - "F" - QFP - (quad flat pack) L lead type - - - - "N" - DIP - (dual inline package) through hole straight lead - type - - - - "V" - LPCC - (lead plastic chip carrier) J lead type - - - - - - The g is the product grade field. - If an I precedes the package-type letter, it - indicates an industrial grade part, which has - higher specs than a standard part but not as high as Military - Specification (Milspec) component. This is an optional - field. - - So what we used to call a NS16550AFN (DIP Package) is now - called a PC16550DN or PC16550DIN. - - - - - Other Vendors and Similar UARTs - - Over the years, the 8250, 8250A, 16450 and 16550 have been - licensed or copied by other chip vendors. In the case of the - 8250, 8250A and 16450, the exact circuit (the - megacell) was licensed to many vendors, including - Western Digital and Intel. Other vendors reverse-engineered the - part or produced emulations that had similar behavior. - - In internal modems, the modem designer will frequently emulate - the 8250A/16450 with the modem microprocessor, and the emulated - UART will frequently have a hidden buffer consisting of several - hundred bytes. Because of the size of the buffer, these - emulations can be as reliable as a 16550A in their ability to - handle high speed data. However, most operating systems will - still report that the UART is only a 8250A or 16450, and may not - make effective use of the extra buffering present in the emulated - UART unless special drivers are used. - - Some modem makers are driven by market forces to abandon a - design that has hundreds of bytes of buffer and instead use a - 16550A UART so that the product will compare favorably in market - comparisons even though the effective performance may be lowered - by this action. - - A common misconception is that all parts with - 16550A written on them are identical in performance. - There are differences, and in some cases, outright flaws in most - of these 16550A clones. - - When the NS16550 was developed, the National Semiconductor - obtained several patents on the design and they also limited - licensing, making it harder for other vendors to provide a chip - with similar features. Because of the patents, reverse-engineered - designs and emulations had to avoid infringing the claims covered - by the patents. Subsequently, these copies almost never perform - exactly the same as the NS16550A or PC16550D, which are the parts - most computer and modem makers want to buy but are sometimes - unwilling to pay the price required to get the genuine - part. - - Some of the differences in the clone 16550A parts are - unimportant, while others can prevent the device from being used - at all with a given operating system or driver. These differences - may show up when using other drivers, or when particular - combinations of events occur that were not well tested or - considered in the Windows driver. This is because most modem - vendors and 16550-clone makers use the Microsoft drivers from - Windows for Workgroups 3.11 and the Microsoft MS-DOS utility as the - primary tests for compatibility with the NS16550A. This - over-simplistic criteria means that if a different operating - system is used, problems could appear due to subtle differences - between the clones and genuine components. - - National Semiconductor has made available a program named - COMTEST that performs compatibility - tests independent of any OS drivers. It should be remembered that - the purpose of this type of program is to demonstrate the flaws in - the products of the competition, so the program will report major - as well as extremely subtle differences in behavior in the part - being tested. - - In a series of tests performed by the author of this document - in 1994, components made by National Semiconductor, TI, StarTech, - and CMD as well as megacells and emulations embedded in internal - modems were tested with COMTEST. A difference count for some of - these components is listed below. Because these tests were - performed in 1994, they may not reflect the current performance of - the given product from a vendor. - - It should be noted that COMTEST normally aborts when an - excessive number or certain types of problems have been detected. - As part of this testing, COMTEST was modified so that it would not - abort no matter how many differences were encountered. - - - - - - Vendor - Part Number - Errors (aka "differences" reported) - - - - - - National - (PC16550DV) - 0 - - - - National - (NS16550AFN) - 0 - - - - National - (NS16C552V) - 0 - - - - TI - (TL16550AFN) - 3 - - - - CMD - (16C550PE) - 19 - - - - StarTech - (ST16C550J) - 23 - - - - Rockwell - Reference modem with internal 16550 or an - emulation (RC144DPi/C3000-25) - 117 - - - - Sierra - Modem with an internal 16550 - (SC11951/SC11351) - 91 - - - - - - - To date, the author of this document has not found any - non-National parts that report zero differences using the - COMTEST program. It should also be noted that National has had - five versions of the 16550 over the years and the newest parts - behave a bit differently than the classic NS16550AFN that is - considered the benchmark for functionality. COMTEST appears to - turn a blind eye to the differences within the National product - line and reports no errors on the National parts (except for the - original 16550) even when there are official erratas that - describe bugs in the A, B and C revisions of the parts, so this - bias in COMTEST must be taken into account. - - - It is important to understand that a simple count of - differences from COMTEST does not reveal a lot about what - differences are important and which are not. For example, about - half of the differences reported in the two modems listed above - that have internal UARTs were caused by the clone UARTs not - supporting five- and six-bit character modes. The real 16550, - 16450, and 8250 UARTs all support these modes and COMTEST checks - the functionality of these modes so over fifty differences are - reported. However, almost no modern modem supports five- or - six-bit characters, particularly those with error-correction and - compression capabilities. This means that the differences related - to five- and six-bit character modes can be discounted. - - Many of the differences COMTEST reports have to do with - timing. In many of the clone designs, when the host reads from - one port, the status bits in some other port may not update in the - same amount of time (some faster, some slower) as a - real NS16550AFN and COMTEST looks for these - differences. This means that the number of differences can be - misleading in that one device may only have one or two differences - but they are extremely serious, and some other device that updates - the status registers faster or slower than the reference part - (that would probably never affect the operation of a properly - written driver) could have dozens of differences reported. - - COMTEST can be used as a screening tool to alert the - administrator to the presence of potentially incompatible - components that might cause problems or have to be handled as a - special case. - - If you run COMTEST on a 16550 that is in a modem or a modem is - attached to the serial port, you need to first issue a ATE0&W - command to the modem so that the modem will not echo any of the - test characters. If you forget to do this, COMTEST will report at - least this one difference: - - Error (6)...Timeout interrupt failed: IIR = c1 LSR = 61 - - - - 8250/16450/16550 Registers - - The 8250/16450/16550 UART occupies eight contiguous I/O port - addresses. In the IBM PC, there are two defined locations for - these eight ports and they are known collectively as COM1 and - COM2. The makers of PC-clones and add-on cards have created two - additional areas known as COM3 and COM4, but these extra COM ports - conflict with other hardware on some systems. The most common - conflict is with video adapters that provide IBM 8514 - emulation. - - COM1 is located from 0x3f8 to 0x3ff and normally uses IRQ 4 - COM2 is located from 0x2f8 to 0x2ff and normally uses IRQ 3 COM3 - is located from 0x3e8 to 0x3ef and has no standardized IRQ COM4 is - located from 0x2e8 to 0x2ef and has no standardized IRQ. - - A description of the I/O ports of the 8250/16450/16550 UART is - provided below. - - - - - - I/O Port - Access Allowed - Description - - - - - - +0x00 - write (DLAB==0) - Transmit Holding Register - (THR).Information written to this port are - treated as data words and will be transmitted by the - UART. - - - - +0x00 - read (DLAB==0) - Receive Buffer Register (RBR).Any - data words received by the UART form the serial link are - accessed by the host by reading this - port. - - - - +0x00 - write/read (DLAB==1) - Divisor Latch LSB (DLL)This value - will be divided from the master input clock (in the IBM - PC, the master clock is 1.8432MHz) and the resulting - clock will determine the baud rate of the UART. This - register holds bits 0 thru 7 of the - divisor. - - - - +0x01 - write/read (DLAB==1) - Divisor Latch MSB (DLH)This value - will be divided from the master input clock (in the IBM - PC, the master clock is 1.8432MHz) and the resulting - clock will determine the baud rate of the UART. This - register holds bits 8 thru 15 of the - divisor. - - - - +0x01 - write/read (DLAB==0) - - - - - - - - Interrupt Enable Register - (IER)The 8250/16450/16550 UART - classifies events into one of four categories. - Each category can be configured to generate an - interrupt when any of the events occurs. The - 8250/16450/16550 UART generates a single external - interrupt signal regardless of how many events in - the enabled categories have occurred. It is up to - the host processor to respond to the interrupt and - then poll the enabled interrupt categories - (usually all categories have interrupts enabled) - to determine the true cause(s) of the - interrupt. - - - - Bit 7 - Reserved, always 0. - - - - Bit 6 - Reserved, always 0. - - - - Bit 5 - Reserved, always 0. - - - - Bit 4 - Reserved, always 0. - - - - Bit 3 - Enable Modem Status Interrupt (EDSSI). Setting - this bit to "1" allows the UART to generate an - interrupt when a change occurs on one or more of the - status lines. - - - - Bit 2 - Enable Receiver Line Status Interrupt (ELSI) - Setting this bit to "1" causes the UART to generate - an interrupt when the an error (or a BREAK signal) - has been detected in the incoming data. - - - - Bit 1 - Enable Transmitter Holding Register Empty - Interrupt (ETBEI) Setting this bit to "1" causes the - UART to generate an interrupt when the UART has room - for one or more additional characters that are to be - transmitted. - - - - Bit 0 - Enable Received Data Available Interrupt - (ERBFI) Setting this bit to "1" causes the UART to - generate an interrupt when the UART has received - enough characters to exceed the trigger level of the - FIFO, or the FIFO timer has expired (stale data), or - a single character has been received when the FIFO - is disabled. - - - - - - - +0x02 - write - - - - - - - - - - - FIFO Control Register (FCR) - (This port does not exist on the 8250 and 16450 - UART.) - - - - Bit 7 - Receiver Trigger Bit #1 - - - - Bit 6 - Receiver Trigger Bit - #0These two bits control at what - point the receiver is to generate an interrupt - when the FIFO is active. - - - - 7 - 6 - How many words are received - before an interrupt is generated - - - - 0 - 0 - 1 - - - - 0 - 1 - 4 - - - - 1 - 0 - 8 - - - - 1 - 1 - 14 - - - - Bit 5 - Reserved, always 0. - - - - Bit 4 - Reserved, always 0. - - - - Bit 3 - DMA Mode Select. If Bit 0 is - set to "1" (FIFOs enabled), setting this bit changes - the operation of the -RXRDY and -TXRDY signals from - Mode 0 to Mode 1. - - - - Bit 2 - Transmit FIFO Reset. When a - "1" is written to this bit, the contents of the FIFO - are discarded. Any word currently being transmitted - will be sent intact. This function is useful in - aborting transfers. - - - - Bit 1 - Receiver FIFO Reset. When a - "1" is written to this bit, the contents of the FIFO - are discarded. Any word currently being assembled - in the shift register will be received - intact. - - - - Bit 0 - 16550 FIFO Enable. When set, - both the transmit and receive FIFOs are enabled. - Any contents in the holding register, shift - registers or FIFOs are lost when FIFOs are enabled - or disabled. - - - - - - - +0x02 - read - - - - - - - - - - - - - Interrupt Identification - Register - - - - Bit 7 - FIFOs enabled. On the - 8250/16450 UART, this bit is zero. - - - - Bit 6 - FIFOs enabled. On the - 8250/16450 UART, this bit is zero. - - - - Bit 5 - Reserved, always 0. - - - - Bit 4 - Reserved, always 0. - - - - Bit 3 - Interrupt ID Bit #2. On the - 8250/16450 UART, this bit is zero. - - - - Bit 2 - Interrupt ID Bit #1 - - - - Bit 1 - Interrupt ID Bit #0.These three - bits combine to report the category of event that - caused the interrupt that is in progress. These - categories have priorities, so if multiple - categories of events occur at the same time, the - UART will report the more important events first and - the host must resolve the events in the order they - are reported. All events that caused the current - interrupt must be resolved before any new interrupts - will be generated. (This is a limitation of the PC - architecture.) - - - - 2 - 1 - 0 - Priority - Description - - - - 0 - 1 - 1 - First - Received Error (OE, PE, BI, or - FE) - - - - 0 - 1 - 0 - Second - Received Data Available - - - - 1 - 1 - 0 - Second - Trigger level identification - (Stale data in receive buffer) - - - - 0 - 0 - 1 - Third - Transmitter has room for more - words (THRE) - - - - 0 - 0 - 0 - Fourth - Modem Status Change (-CTS, -DSR, - -RI, or -DCD) - - - - Bit 0 - Interrupt Pending Bit. If this - bit is set to "0", then at least one interrupt is - pending. - - - - - - - +0x03 - write/read - - - - - - - - - - - - - Line Control Register - (LCR) - - - - Bit 7 - Divisor Latch Access Bit - (DLAB). When set, access to the data - transmit/receive register (THR/RBR) and the - Interrupt Enable Register (IER) is disabled. Any - access to these ports is now redirected to the - Divisor Latch Registers. Setting this bit, loading - the Divisor Registers, and clearing DLAB should be - done with interrupts disabled. - - - - Bit 6 - Set Break. When set to "1", - the transmitter begins to transmit continuous - Spacing until this bit is set to "0". This - overrides any bits of characters that are being - transmitted. - - - - Bit 5 - Stick Parity. When parity is - enabled, setting this bit causes parity to always be - "1" or "0", based on the value of Bit 4. - - - - Bit 4 - Even Parity Select (EPS). When - parity is enabled and Bit 5 is "0", setting this bit - causes even parity to be transmitted and expected. - Otherwise, odd parity is used. - - - - Bit 3 - Parity Enable (PEN). When set - to "1", a parity bit is inserted between the last - bit of the data and the Stop Bit. The UART will - also expect parity to be present in the received - data. - - - - Bit 2 - Number of Stop Bits (STB). If - set to "1" and using 5-bit data words, 1.5 Stop Bits - are transmitted and expected in each data word. For - 6, 7 and 8-bit data words, 2 Stop Bits are - transmitted and expected. When this bit is set to - "0", one Stop Bit is used on each data word. - - - - Bit 1 - Word Length Select Bit #1 - (WLSB1) - - - - Bit 0 - Word Length Select Bit #0 - (WLSB0) - - - - Together these - bits specify the number of bits in each data - word. - - - - 1 - 0 - Word - Length - - - - 0 - 0 - 5 Data - Bits - - - - 0 - 1 - 6 Data - Bits - - - - 1 - 0 - 7 Data - Bits - - - - 1 - 1 - 8 Data - Bits - - - - - - - +0x04 - write/read - - - - - - - - Modem Control Register - (MCR) - - - - Bit 7 - Reserved, always 0. - - - - Bit 6 - Reserved, always 0. - - - - Bit 5 - Reserved, always 0. - - - - Bit 4 - Loop-Back Enable. When set to "1", the UART - transmitter and receiver are internally connected - together to allow diagnostic operations. In - addition, the UART modem control outputs are - connected to the UART modem control inputs. CTS is - connected to RTS, DTR is connected to DSR, OUT1 is - connected to RI, and OUT 2 is connected to - DCD. - - - - Bit 3 - OUT 2. An auxiliary output that the host - processor may set high or low. In the IBM PC serial - adapter (and most clones), OUT 2 is used to - tri-state (disable) the interrupt signal from the - 8250/16450/16550 UART. - - - - Bit 2 - OUT 1. An auxiliary output that the host - processor may set high or low. This output is not - used on the IBM PC serial adapter. - - - - Bit 1 - Request to Send (RTS). When set to "1", the - output of the UART -RTS line is Low - (Active). - - - - Bit 0 - Data Terminal Ready (DTR). When set to "1", - the output of the UART -DTR line is Low - (Active). - - - - - - - +0x05 - write/read - - - - - - - - Line Status Register - (LSR) - - - - Bit 7 - Error in Receiver FIFO. On the 8250/16450 - UART, this bit is zero. This bit is set to "1" when - any of the bytes in the FIFO have one or more of the - following error conditions: PE, FE, or BI. - - - - Bit 6 - Transmitter Empty (TEMT). When set to "1", - there are no words remaining in the transmit FIFO - or the transmit shift register. The transmitter is - completely idle. - - - - Bit 5 - Transmitter Holding Register Empty (THRE). - When set to "1", the FIFO (or holding register) now - has room for at least one additional word to - transmit. The transmitter may still be transmitting - when this bit is set to "1". - - - - Bit 4 - Break Interrupt (BI). The receiver has - detected a Break signal. - - - - Bit 3 - Framing Error (FE). A Start Bit was detected - but the Stop Bit did not appear at the expected - time. The received word is probably - garbled. - - - - Bit 2 - Parity Error (PE). The parity bit was - incorrect for the word received. - - - - Bit 1 - Overrun Error (OE). A new word was received - and there was no room in the receive buffer. The - newly-arrived word in the shift register is - discarded. On 8250/16450 UARTs, the word in the - holding register is discarded and the newly- arrived - word is put in the holding register. - - - - Bit 0 - Data Ready (DR) One or more words are in the - receive FIFO that the host may read. A word must be - completely received and moved from the shift - register into the FIFO (or holding register for - 8250/16450 designs) before this bit is set. - - - - - - - +0x06 - write/read - - - - - - - - Modem Status Register - (MSR) - - - - Bit 7 - Data Carrier Detect (DCD). Reflects the state - of the DCD line on the UART. - - - - Bit 6 - Ring Indicator (RI). Reflects the state of the - RI line on the UART. - - - - Bit 5 - Data Set Ready (DSR). Reflects the state of - the DSR line on the UART. - - - - Bit 4 - Clear To Send (CTS). Reflects the state of the - CTS line on the UART. - - - - Bit 3 - Delta Data Carrier Detect (DDCD). Set to "1" - if the -DCD line has changed state one more - time since the last time the MSR was read by the - host. - - - - Bit 2 - Trailing Edge Ring Indicator (TERI). Set to - "1" if the -RI line has had a low to high transition - since the last time the MSR was read by the - host. - - - - Bit 1 - Delta Data Set Ready (DDSR). Set to "1" if the - -DSR line has changed state one more time - since the last time the MSR was read by the - host. - - - - Bit 0 - Delta Clear To Send (DCTS). Set to "1" if the - -CTS line has changed state one more time - since the last time the MSR was read by the - host. - - - - - - - +0x07 - write/read - Scratch Register (SCR). This register performs no - function in the UART. Any value can be written by the - host to this location and read by the host later - on. - - - - - - - - Beyond the 16550A UART - - Although National Semiconductor has not offered any components - compatible with the 16550 that provide additional features, - various other vendors have. Some of these components are - described below. It should be understood that to effectively - utilize these improvements, drivers may have to be provided by the - chip vendor since most of the popular operating systems do not - support features beyond those provided by the 16550. - - - - ST16650 - - - By default this part is similar to the NS16550A, but an - extended 32-byte send and receive buffer can be optionally - enabled. Made by StarTech. - - - - - TIL16660 - - - By default this part behaves similar to the NS16550A, - but an extended 64-byte send and receive buffer can be - optionally enabled. Made by Texas Instruments. - - - - - Hayes ESP - - - This proprietary plug-in card contains a 2048-byte send - and receive buffer, and supports data rates to - 230.4Kbit/sec. Made by Hayes. - - - - - In addition to these dumb UARTs, many vendors - produce intelligent serial communication boards. This type of - design usually provides a microprocessor that interfaces with - several UARTs, processes and buffers the data, and then alerts the - main PC processor when necessary. Because the UARTs are not - directly accessed by the PC processor in this type of - communication system, it is not necessary for the vendor to use - UARTs that are compatible with the 8250, 16450, or the 16550 UART. - This leaves the designer free to components that may have better - performance characteristics. - -
- - - Configuring the <devicename>sio</devicename> driver - - The sio driver provides support for - NS8250-, NS16450-, NS16550 and NS16550A-based EIA RS-232C (CCITT - V.24) communications interfaces. Several multiport cards are - supported as well. See the &man.sio.4; - manual page for detailed technical documentation. - - - Digi International (DigiBoard) PC/8 - - Contributed by &a.awebster;. 26 August - 1995. - - Here is a config snippet from a machine with a Digi - International PC/8 with 16550. It has 8 modems connected to these - 8 lines, and they work just great. Do not forget to add - options COM_MULTIPORT or it will not work very - well! - - device sio4 at isa? port 0x100 tty flags 0xb05 -device sio5 at isa? port 0x108 tty flags 0xb05 -device sio6 at isa? port 0x110 tty flags 0xb05 -device sio7 at isa? port 0x118 tty flags 0xb05 -device sio8 at isa? port 0x120 tty flags 0xb05 -device sio9 at isa? port 0x128 tty flags 0xb05 -device sio10 at isa? port 0x130 tty flags 0xb05 -device sio11 at isa? port 0x138 tty flags 0xb05 irq 9 vector siointr - - The trick in setting this up is that the MSB of the flags - represent the last SIO port, in this case 11 so flags are - 0xb05. - - - - Boca 16 - - Contributed by &a.whiteside;. 26 August - 1995. - - The procedures to make a Boca 16 port board with FreeBSD are - pretty straightforward, but you will need a couple things to make - it work: - - - - You either need the kernel sources installed so you can - recompile the necessary options or you will need someone else - to compile it for you. The 2.0.5 default kernel does - not come with multiport support enabled - and you will need to add a device entry for each port - anyways. - - - - Two, you will need to know the interrupt and IO setting - for your Boca Board so you can set these options properly in - the kernel. - - - - One important note — the actual UART chips for the Boca - 16 are in the connector box, not on the internal board itself. So - if you have it unplugged, probes of those ports will fail. I have - never tested booting with the box unplugged and plugging it back - in, and I suggest you do not either. - - If you do not already have a custom kernel configuration file - set up, refer to Kernel - Configuration for general procedures. The following are - the specifics for the Boca 16 board and assume you are using the - kernel name MYKERNEL and editing with vi. - - - - Add the line - - options COM_MULTIPORT - - to the config file. - - - - Where the current device - sion lines are, you - will need to add 16 more devices. Only the last device - includes the interrupt vector for the board. (See the - &man.sio.4; manual page for detail as - to why.) The following example is for a Boca Board with an - interrupt of 3, and a base IO address 100h. The IO address - for Each port is +8 hexadecimal from the previous port, thus - the 100h, 108h, 110h... addresses. - - device sio1 at isa? port 0x100 tty flags 0x1005 -device sio2 at isa? port 0x108 tty flags 0x1005 -device sio3 at isa? port 0x110 tty flags 0x1005 -device sio4 at isa? port 0x118 tty flags 0x1005 -… -device sio15 at isa? port 0x170 tty flags 0x1005 -device sio16 at isa? port 0x178 tty flags 0x1005 irq 3 vector siointr - - The flags entry must be changed from - this example unless you are using the exact same sio - assignments. Flags are set according to - 0xMYY - where M indicates the minor number - of the master port (the last port on a Boca 16) and - YY indicates if FIFO is enabled or - disabled(enabled), IRQ sharing is used(yes) and if there is an - AST/4 compatible IRQ control register(no). In this example, - flags 0x1005 indicates that - the master port is sio16. If I added another board and - assigned sio17 through sio28, the flags for all 16 ports on - that board would be 0x1C05, where 1C - indicates the minor number of the master port. Do not change - the 05 setting. - - - - Save and complete the kernel configuration, recompile, - install and reboot. Presuming you have successfully installed - the recompiled kernel and have it set to the correct address - and IRQ, your boot message should indicate the successful - probe of the Boca ports as follows: (obviously the sio - numbers, IO and IRQ could be different) - - sio1 at 0x100-0x107 flags 0x1005 on isa -sio1: type 16550A (multiport) -sio2 at 0x108-0x10f flags 0x1005 on isa -sio2: type 16550A (multiport) -sio3 at 0x110-0x117 flags 0x1005 on isa -sio3: type 16550A (multiport) -sio4 at 0x118-0x11f flags 0x1005 on isa -sio4: type 16550A (multiport) -sio5 at 0x120-0x127 flags 0x1005 on isa -sio5: type 16550A (multiport) -sio6 at 0x128-0x12f flags 0x1005 on isa -sio6: type 16550A (multiport) -sio7 at 0x130-0x137 flags 0x1005 on isa -sio7: type 16550A (multiport) -sio8 at 0x138-0x13f flags 0x1005 on isa -sio8: type 16550A (multiport) -sio9 at 0x140-0x147 flags 0x1005 on isa -sio9: type 16550A (multiport) -sio10 at 0x148-0x14f flags 0x1005 on isa -sio10: type 16550A (multiport) -sio11 at 0x150-0x157 flags 0x1005 on isa -sio11: type 16550A (multiport) -sio12 at 0x158-0x15f flags 0x1005 on isa -sio12: type 16550A (multiport) -sio13 at 0x160-0x167 flags 0x1005 on isa -sio13: type 16550A (multiport) -sio14 at 0x168-0x16f flags 0x1005 on isa -sio14: type 16550A (multiport) -sio15 at 0x170-0x177 flags 0x1005 on isa -sio15: type 16550A (multiport) -sio16 at 0x178-0x17f irq 3 flags 0x1005 on isa -sio16: type 16550A (multiport master) - - If the messages go by too fast to see, - - &prompt.root; dmesg | more - will show you the boot messages. - - - - Next, appropriate entries in /dev for - the devices must be made using the - /dev/MAKEDEV script. After becoming - root: - - &prompt.root; cd /dev -&prompt.root; ./MAKEDEV tty1 -&prompt.root; ./MAKEDEV cua1 -(everything in between) -&prompt.root; ./MAKEDEV ttyg -&prompt.root; ./MAKEDEV cuag - - If you do not want or need call-out devices for some - reason, you can dispense with making the - cua* devices. - - - - If you want a quick and sloppy way to make sure the - devices are working, you can simply plug a modem into each - port and (as root) - - &prompt.root; echo at > ttyd* - for each device you have made. You - should see the RX lights flash for each - working port. - - - - - - Support for Cheap Multi-UART Cards - - Contributed by Helge Oldach - hmo@sep.hamburg.com, September - 1999 - - Ever wondered about FreeBSD support for your 20$ multi-I/O - card with two (or more) COM ports, sharing IRQs? Here's - how: - - Usually the only option to support these kind of boards is to - use a distinct IRQ for each port. For example, if your CPU board - has an on-board COM1 port (aka - sio0–I/O address 0x3F8 and IRQ 4) - and you have an extension board with two UARTs, you will commonly - need to configure them as COM2 (aka - sio1–I/O address 0x2F8 and IRQ 3), - and the third port (aka sio2) as I/O - 0x3E8 and IRQ 5. Obviously this is a waste of IRQ resources, as - it should be basically possible to run both extension board ports - using a single IRQ with the COM_MULTIPORT - configuration described in the previous sections. - - Such cheap I/O boards commonly have a 4 by 3 jumper matrix for - the COM ports, similar to the following: - - o o o * -Port A | - o * o * -Port B | - o * o o -IRQ 2 3 4 5 - - Shown here is port A wired for IRQ 5 and port B wired for IRQ - 3. The IRQ columns on your specific board may vary—other - boards may supply jumpers for IRQs 3, 4, 5, and 7 instead. - - One could conclude that wiring both ports for IRQ 3 using a - handcrafted wire-made jumper covering all three connection points - in the IRQ 3 column would solve the issue, but no. You cannot - duplicate IRQ 3 because the output drivers of each UART are wired - in a totem pole fashion, so if one of the UARTs - drives IRQ 3, the output signal will not be what you would expect. - Depending on the implementation of the extension board or your - motherboard, the IRQ 3 line will continuously stay up, or always - stay low. - - You need to decouple the IRQ drivers for the two UARTs, so - that the IRQ line of the board only goes up if (and only if) one - of the UARTs asserts a IRQ, and stays low otherwise. The solution - was proposed by Joerg Wunsch - j@ida.interface-business.de: To solder up a - wired-or consisting of two diodes (Germanium or Schottky-types - strongly preferred) and a 1 kOhm resistor. Here is the schematic, - starting from the 4 by 3 jumper field above: - - Diode - +---------->|-------+ - / | - o * o o | 1 kOhm -Port A +----|######|-------+ - o * o o | | -Port B `-------------------+ ==+== - o * o o | Ground - \ | - +--------->|-------+ -IRQ 2 3 4 5 Diode - - The cathodes of the diodes are connected to a common point, - together with a 1 kOhm pull-down resistor. It is essential to - connect the resistor to ground to avoid floating of the IRQ line - on the bus. - - Now we are ready to configure a kernel. Staying with this - example, we would configure: - - # standard on-board COM1 port -device sio0 at isa? port "IO_COM1" tty flags 0x10 -# patched-up multi-I/O extension board -options COM_MULTIPORT -device sio1 at isa? port "IO_COM2" tty flags 0x205 -device sio2 at isa? port "IO_COM3" tty flags 0x205 irq 3 - - Note that the flags setting for - sio1 and sio2 is - truly essential; refer to - &man.sio.4; for details. (Generally, the 2 in - the "flags" attribute refers to sio2 - which holds the IRQ, and you surely want a 5 - low nibble.) With kernel verbose mode turned on this should yield - something similar to this: - - sio0: irq maps: 0x1 0x11 0x1 0x1 -sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa -sio0: type 16550A -sio1: irq maps: 0x1 0x9 0x1 0x1 -sio1 at 0x2f8-0x2ff flags 0x205 on isa -sio1: type 16550A (multiport) -sio2: irq maps: 0x1 0x9 0x1 0x1 -sio2 at 0x3e8-0x3ef irq 3 flags 0x205 on isa -sio2: type 16550A (multiport master) - - Though /sys/i386/isa/sio.c is somewhat - cryptic with its use of the irq maps array above, - the basic idea is that you observe 0x1 in the - first, third, and fourth place. This means that the corresponding - IRQ was set upon output and cleared after, which is just what we - would expect. If your kernel does not display this behavior, most - likely there is something wrong with your wiring. - - - - - Configuring the <devicename>cy</devicename> driver - - Contributed by Alex Nash. 6 June - 1996. - - The Cyclades multiport cards are based on the - cy driver instead of the usual - sio driver used by other multiport cards. - Configuration is a simple matter of: - - - - Add the cy device to your kernel configuration - (note that your irq and iomem settings may differ). - - device cy0 at isa? tty irq 10 iomem 0xd4000 iosiz 0x2000 vector cyintr - - - - Rebuild and - install the new kernel. - - - - Make the device - nodes by typing (the following example assumes an - 8-port board): - - &prompt.root; cd /dev -&prompt.root; for i in 0 1 2 3 4 5 6 7;do ./MAKEDEV cuac$i ttyc$i;done - - - - If appropriate, add dialup - entries to /etc/ttys by - duplicating serial device (ttyd) entries and - using ttyc in place of - ttyd. For example: - - ttyc0 "/usr/libexec/getty std.38400" unknown on insecure -ttyc1 "/usr/libexec/getty std.38400" unknown on insecure -ttyc2 "/usr/libexec/getty std.38400" unknown on insecure -… -ttyc7 "/usr/libexec/getty std.38400" unknown on insecure - - - - Reboot with the new kernel. - - - - - - Configuring the <devicename>si</devicename> driver - - Contributed by &a.nsayer;. 25 March - 1998. - - The Specialix SI/XIO and SX multiport cards use the - si driver. A single machine can - have up to 4 host cards. The following host cards - are supported: - - - ISA SI/XIO host card (2 versions) - EISA SI/XIO host card - PCI SI/XIO host card - ISA SX host card - PCI SX host card - - - Although the SX and SI/XIO host cards look markedly different, - their functionality are basically the same. The host cards do not - use I/O locations, but instead require a 32K chunk of memory. The - factory configuration for ISA cards places this at - 0xd0000-0xd7fff. - They also require an IRQ. PCI cards will, of course, auto-configure - themselves. - - You can attach up to 4 external modules to each host card. The - external modules contain either 4 or 8 serial ports. They come in - the following varieties: - - - SI 4 or 8 port modules. Up to 57600 bps on each port - supported. - - XIO 8 port modules. Up to 115200 bps on each port - supported. One type of XIO module has 7 serial and 1 parallel - port. - - SXDC 8 port modules. Up to 921600 bps on each port - supported. Like XIO, a module is available with one parallel - port as well. - - - To configure an ISA host card, add the following line to your - kernel configuration - file, changing the numbers as appropriate: - - device si0 at isa? tty iomem 0xd0000 irq 11 - - Valid IRQ numbers are 9, 10, 11, 12 and 15 for SX ISA host cards - and 11, 12 and 15 for SI/XIO ISA host cards. - - To configure an EISA or PCI host card, use this line: - - device si0 - - After adding the configuration entry, rebuild and install your - new kernel. - - After rebooting with the new kernel, you need to make the device nodes in /dev. The - MAKEDEV script will take care of this for you. - Count how many total ports you have and type: - - &prompt.root; cd /dev -&prompt.root; ./MAKEDEV ttyAnn cuaAnn - - (where nn is the number of - ports) - - If you want login prompts to appear on these ports, you will - need to add lines like this to /etc/ttys: - - ttyA01 "/usr/libexec/getty std.9600" vt100 on insecure - - - Change the terminal type as appropriate. For modems, - dialup or unknown is - fine. - -
- - - * Parallel ports - - - - - - * Modems - - - - - - * Network cards - - - - - - * Keyboards - - - - - - Mice - - Contributed by Joel Sutton - jsutton@bbcon.com.au January 2000 - - FreeBSD supports a variety of different mice via the PS/2, serial - and USB ports. Most users choose to use the mouse daemon to handle - their mouse because it allows interaction in both X and on the system - console. For more information on the mouse daemon refer to - &man.moused.8;. The examples throughout this section assume that - the mouse daemon is being used. - - - This section contains the names of specific products that the - author has confirmed will work with FreeBSD. Other similar devices - not listed may also be supported. - - - - PS/2 - - - System Configuration - - To ensure that your PS/2 mouse functions correctly with the - mouse daemon you will need to include the following text in - /etc/rc.conf - - moused_enable="YES" -moused_type="ps/2" -moused_port="/dev/psm0" - - - - Known Compatible Devices - - - - Logitech First Mouse - Three Button - - - - Microsoft Serial - PS/2 Compatible Mouse - - - - - - - Serial - - - System Configuration - - To ensure that your serial mouse functions correctly with the - mouse daemon you will need to include the following text in - /etc/rc.conf. This example assumes that the - mouse is connected to COM1: and can be - automatically recognized by the mouse daemon. - - moused_enable="YES" -moused_type="auto" -moused_port="/dev/cuaa0" - - See the &man.moused.8; manual page for a detailed description - of how to configure the mouse daemon to work with specific types - of serial mice. - - - - Known Compatible Devices - - - - Generic Microsoft Compatible Mice - - - - Logitech First Mouse - Three Button - - - - Microsoft Serial - PS/2 Compatible Mouse - - - - - - - USB - - - System Configuration - - The USB device drivers are a relatively new addition to - FreeBSD and have not yet been included in the GENERIC kernel. The - following procedure is an example of how to setup the relevant - drivers on a typical system. - - - - Add the ums device to the usb - section of your kernel - configuration. For example: - - - controller usb0 controller uhci0 device ums0 - - - - Rebuild and - install the new kernel. - - - - Make the device - node by typing: - - &prompt.root; cd /dev -&prompt.root; sh MAKEDEV ums0 - - - - Include the following text in - /etc/rc.conf to ensure correct operation - of the mouse daemon: - - moused_enable="YES" -moused_type="auto" -moused_port="/dev/ums0" - - - - Reboot the system. - &prompt.root; shutdown -r now - - - - - - Known Compatible Devices - - - - Logitech TrackMan - Marble Wheel - - - - - - - - * Other - - - -
- -]]> - - - Storage Devices - - - Using ESDI hard disks - - Copyright © 1995, &a.wilko;. 24 - September 1995. - - ESDI is an acronym that means Enhanced Small Device Interface. It - is loosely based on the good old ST506/412 interface originally - devised by Seagate Technology, the makers of the first affordable - 5.25" winchester disk. - - The acronym says Enhanced, and rightly so. In the first place the - speed of the interface is higher, 10 or 15 Mbits/second instead of the - 5 Mbits/second of ST412 interfaced drives. Secondly some higher level - commands are added, making the ESDI interface somewhat 'smarter' to - the operating system driver writers. It is by no means as smart as - SCSI by the way. ESDI is standardized by ANSI. - - Capacities of the drives are boosted by putting more sectors on - each track. Typical is 35 sectors per track, high capacity drives I - have seen were up to 54 sectors/track. - - Although ESDI has been largely obsoleted by IDE and SCSI - interfaces, the availability of free or cheap surplus drives makes - them ideal for low (or now) budget systems. - - - Concepts of ESDI - - - Physical connections - - The ESDI interface uses two cables connected to each drive. - One cable is a 34 pin flat cable edge connector that carries the - command and status signals from the controller to the drive and - vice-versa. The command cable is daisy chained between all the - drives. So, it forms a bus onto which all drives are - connected. - - The second cable is a 20 pin flat cable edge connector that - carries the data to and from the drive. This cable is radially - connected, so each drive has its own direct connection to the - controller. - - To the best of my knowledge PC ESDI controllers are limited to - using a maximum of 2 drives per controller. This is compatibility - feature(?) left over from the WD1003 standard that reserves only a - single bit for device addressing. - - - - Device addressing - - On each command cable a maximum of 7 devices and 1 controller - can be present. To enable the controller to uniquely identify - which drive it addresses, each ESDI device is equipped with - jumpers or switches to select the devices address. - - On PC type controllers the first drive is set to address 0, - the second disk to address 1. Always make - sure you set each disk to an unique address! So, on a - PC with its two drives/controller maximum the first drive is drive - 0, the second is drive 1. - - - - Termination - - The daisy chained command cable (the 34 pin cable remember?) - needs to be terminated at the last drive on the chain. For this - purpose ESDI drives come with a termination resistor network that - can be removed or disabled by a jumper when it is not used. - - So, one and only one drive, the one at - the farthest end of the command cable has its terminator - installed/enabled. The controller automatically terminates the - other end of the cable. Please note that this implies that the - controller must be at one end of the cable and - not in the middle. - - - - - Using ESDI disks with FreeBSD - - Why is ESDI such a pain to get working in the first - place? - - People who tried ESDI disks with FreeBSD are known to have - developed a profound sense of frustration. A combination of factors - works against you to produce effects that are hard to understand - when you have never seen them before. - - This has also led to the popular legend ESDI and FreeBSD is a - plain NO-GO. The following sections try to list all the pitfalls - and solutions. - - - ESDI speed variants - - As briefly mentioned before, ESDI comes in two speed flavors. - The older drives and controllers use a 10 Mbits/second data - transfer rate. Newer stuff uses 15 Mbits/second. - - It is not hard to imagine that 15 Mbits/second drive cause - problems on controllers laid out for 10 Mbits/second. As always, - consult your controller and drive - documentation to see if things match. - - - - Stay on track - - Mainstream ESDI drives use 34 to 36 sectors per track. Most - (older) controllers cannot handle more than this number of - sectors. Newer, higher capacity, drives use higher numbers of - sectors per track. For instance, I own a 670 MB drive that has 54 - sectors per track. - - In my case, the controller could not handle this number of - sectors. It proved to work well except that it only used 35 - sectors on each track. This meant losing a lot of disk - space. - - Once again, check the documentation of your hardware for more - info. Going out-of-spec like in the example might or might not - work. Give it a try or get another more capable - controller. - - - - Hard or soft sectoring - - Most ESDI drives allow hard or soft sectoring to be selected - using a jumper. Hard sectoring means that the drive will produce - a sector pulse on the start of each new sector. The controller - uses this pulse to tell when it should start to write or - read. - - Hard sectoring allows a selection of sector size (normally - 256, 512 or 1024 bytes per formatted sector). FreeBSD uses 512 - byte sectors. The number of sectors per track also varies while - still using the same number of bytes per formatted sector. The - number of unformatted bytes per sector - varies, dependent on your controller it needs more or less - overhead bytes to work correctly. Pushing more sectors on a - track of course gives you more usable space, but might give - problems if your controller needs more bytes than the drive - offers. - - In case of soft sectoring, the controller itself determines - where to start/stop reading or writing. For ESDI hard sectoring - is the default (at least on everything I came across). I never - felt the urge to try soft sectoring. - - In general, experiment with sector settings before you install - FreeBSD because you need to re-run the low-level format after each - change. - - - - Low level formatting - - ESDI drives need to be low level formatted before they are - usable. A reformat is needed whenever you figgle with the number - of sectors/track jumpers or the physical orientation of the drive - (horizontal, vertical). So, first think, then format. The format - time must not be underestimated, for big disks it can take - hours. - - After a low level format, a surface scan is done to find and - flag bad sectors. Most disks have a manufacturer bad block list - listed on a piece of paper or adhesive sticker. In addition, on - most disks the list is also written onto the disk. Please use the - manufacturer's list. It is much easier to remap a defect now than - after FreeBSD is installed. - - Stay away from low-level formatters that mark all sectors of a - track as bad as soon as they find one bad sector. Not only does - this waste space, it also and more importantly causes you grief - with bad144 (see the section on bad144). - - - - Translations - - Translations, although not exclusively a ESDI-only problem, - might give you real trouble. Translations come in multiple - flavors. Most of them have in common that they attempt to work - around the limitations posed upon disk geometries by the original - IBM PC/AT design (thanks IBM!). - - First of all there is the (in)famous 1024 cylinder limit. For - a system to be able to boot, the stuff (whatever operating system) - must be in the first 1024 cylinders of a disk. Only 10 bits are - available to encode the cylinder number. For the number of - sectors the limit is 64 (0-63). When you combine the 1024 - cylinder limit with the 16 head limit (also a design feature) you - max out at fairly limited disk sizes. - - To work around this problem, the manufacturers of ESDI PC - controllers added a BIOS prom extension on their boards. This - BIOS extension handles disk I/O for booting (and for some - operating systems all disk I/O) by using - translation. For instance, a big drive might be presented to the - system as having 32 heads and 64 sectors/track. The result is - that the number of cylinders is reduced to something below 1024 - and is therefore usable by the system without problems. It is - noteworthy to know that FreeBSD does not use the BIOS after its - kernel has started. More on this later. - - A second reason for translations is the fact that most older - system BIOSes could only handle drives with 17 sectors per track - (the old ST412 standard). Newer system BIOSes usually have a - user-defined drive type (in most cases this is drive type - 47). - - - Whatever you do to translations after reading this document, - keep in mind that if you have multiple operating systems on the - same disk, all must use the same translation - - - While on the subject of translations, I have seen one - controller type (but there are probably more like this) offer the - option to logically split a drive in multiple partitions as a BIOS - option. I had select 1 drive == 1 partition because this - controller wrote this info onto the disk. On power-up it read the - info and presented itself to the system based on the info from the - disk. - - - - Spare sectoring - - Most ESDI controllers offer the possibility to remap bad - sectors. During/after the low-level format of the disk bad - sectors are marked as such, and a replacement sector is put in - place (logically of course) of the bad one. - - In most cases the remapping is done by using N-1 sectors on - each track for actual data storage, and sector N itself is the - spare sector. N is the total number of sectors physically - available on the track. The idea behind this is that the - operating system sees a 'perfect' disk without bad sectors. In - the case of FreeBSD this concept is not usable. - - The problem is that the translation from - bad to good is performed - by the BIOS of the ESDI controller. FreeBSD, being a true 32 bit - operating system, does not use the BIOS after it has been booted. - Instead, it has device drivers that talk directly to the - hardware. - - So: don't use spare sectoring, bad block remapping - or whatever it may be called by the controller manufacturer when - you want to use the disk for FreeBSD. - - - - Bad block handling - - The preceding section leaves us with a problem. The - controller's bad block handling is not usable and still FreeBSD's - filesystems assume perfect media without any flaws. To solve this - problem, FreeBSD use the bad144 tool. Bad144 - (named after a Digital Equipment standard for bad block handling) - scans a FreeBSD slice for bad blocks. Having found these bad - blocks, it writes a table with the offending block numbers to the - end of the FreeBSD slice. - - When the disk is in operation, the disk accesses are checked - against the table read from the disk. Whenever a block number is - requested that is in the bad144 list, a - replacement block (also from the end of the FreeBSD slice) is - used. In this way, the bad144 replacement - scheme presents 'perfect' media to the FreeBSD filesystems. - - There are a number of potential pitfalls associated with the - use of bad144. First of all, the slice cannot - have more than 126 bad sectors. If your drive has a high number - of bad sectors, you might need to divide it into multiple FreeBSD - slices each containing less than 126 bad sectors. Stay away from - low-level format programs that mark every - sector of a track as bad when they find a flaw on the track. As - you can imagine, the 126 limit is quickly reached when the - low-level format is done this way. - - Second, if the slice contains the root filesystem, the slice - should be within the 1024 cylinder BIOS limit. During the boot - process the bad144 list is read using the BIOS and this only - succeeds when the list is within the 1024 cylinder limit. - - - The restriction is not that only the root - filesystem must be within the 1024 cylinder - limit, but rather the entire slice that - contains the root filesystem. - - - - - Kernel configuration - - ESDI disks are handled by the same wddriver - as IDE and ST412 MFM disks. The wd driver - should work for all WD1003 compatible interfaces. - - Most hardware is jumperable for one of two different I/O - address ranges and IRQ lines. This allows you to have two wd - type controllers in one system. - - When your hardware allows non-standard strappings, you can use - these with FreeBSD as long as you enter the correct info into the - kernel config file. An example from the kernel config file (they - live in /sys/i386/conf BTW). - - # First WD compatible controller -controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr -disk wd0 at wdc0 drive 0 -disk wd1 at wdc0 drive 1 -# Second WD compatible controller -controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr -disk wd2 at wdc1 drive 0 -disk wd3 at wdc1 drive 1 - - - - - Particulars on ESDI hardware - - - Adaptec 2320 controllers - - I successfully installed FreeBSD onto a ESDI disk controlled - by a ACB-2320. No other operating system was present on the - disk. - - To do so I low level formatted the disk using - NEFMT.EXE (ftpable from - www.adaptec.com) and answered NO to - the question whether the disk should be formatted with a spare - sector on each track. The BIOS on the ACD-2320 was disabled. I - used the free configurable option in the system - BIOS to allow the BIOS to boot it. - - Before using NEFMT.EXE I tried to format - the disk using the ACB-2320 BIOS built-in formatter. This proved - to be a show stopper, because it did not give me an option to - disable spare sectoring. With spare sectoring enabled the FreeBSD - installation process broke down on the bad144 - run. - - Please check carefully which - ACB-232xy variant you have. The - x is either 0 or - 2, indicating a controller without or with a - floppy controller on board. - - The y is more interesting. It can either - be a blank, a A-8 or a D. A - blank indicates a plain 10 Mbits/second controller. An - A-8 indicates a 15 Mbits/second controller - capable of handling 52 sectors/track. A D - means a 15 Mbits/second controller that can also handle drives - with > 36 sectors/track (also 52 ?). - - All variations should be capable of using 1:1 interleaving. - Use 1:1, FreeBSD is fast enough to handle it. - - - - Western Digital WD1007 controllers - - I successfully installed FreeBSD onto a ESDI disk controlled - by a WD1007 controller. To be precise, it was a WD1007-WA2. - Other variations of the WD1007 do exist. - - To get it to work, I had to disable the sector translation and - the WD1007's onboard BIOS. This implied I could not use the - low-level formatter built into this BIOS. Instead, I grabbed - WDFMT.EXE from www.wdc.com Running this formatted my drive - just fine. - - - - Ultrastor U14F controllers - - According to multiple reports from the net, Ultrastor ESDI - boards work OK with FreeBSD. I lack any further info on - particular settings. - - - - - Further reading - - If you intend to do some serious ESDI hacking, you might want to - have the official standard at hand: - - The latest ANSI X3T10 committee document is: Enhanced Small - Device Interface (ESDI) [X3.170-1990/X3.170a-1991] [X3T10/792D - Rev 11] - - On Usenet the newsgroup comp.periphs is a noteworthy place - to look for more info. - - The World Wide Web (WWW) also proves to be a very handy info - source: For info on Adaptec ESDI controllers see http://www.adaptec.com/. For - info on Western Digital controllers see http://www.wdc.com/. - - - - Thanks to... - - Andrew Gordon for sending me an Adaptec 2320 controller and ESDI - disk for testing. - - - - - What is SCSI? - - Copyright © 1995, &a.wilko;. July 6, - 1996. - - SCSI is an acronym for Small Computer Systems Interface. It is an - ANSI standard that has become one of the leading I/O buses in the - computer industry. The foundation of the SCSI standard was laid by - Shugart Associates (the same guys that gave the world the first mini - floppy disks) when they introduced the SASI bus (Shugart Associates - Standard Interface). - - After some time an industry effort was started to come to a more - strict standard allowing devices from different vendors to work - together. This effort was recognized in the ANSI SCSI-1 standard. - The SCSI-1 standard (approximately 1985) is rapidly becoming obsolete. The - current standard is SCSI-2 (see Further reading), with SCSI-3 - on the drawing boards. - - In addition to a physical interconnection standard, SCSI defines a - logical (command set) standard to which disk devices must adhere. - This standard is called the Common Command Set (CCS) and was developed - more or less in parallel with ANSI SCSI-1. SCSI-2 includes the - (revised) CCS as part of the standard itself. The commands are - dependent on the type of device at hand. It does not make much sense - of course to define a Write command for a scanner. - - The SCSI bus is a parallel bus, which comes in a number of - variants. The oldest and most used is an 8 bit wide bus, with - single-ended signals, carried on 50 wires. (If you do not know what - single-ended means, do not worry, that is what this document is all - about.) Modern designs also use 16 bit wide buses, with differential - signals. This allows transfer speeds of 20Mbytes/second, on cables - lengths of up to 25 meters. SCSI-2 allows a maximum bus width of 32 - bits, using an additional cable. Quickly emerging are Ultra SCSI (also - called Fast-20) and Ultra2 (also called Fast-40). Fast-20 is 20 - million transfers per second (20 Mbytes/sec on a 8 bit bus), Fast-40 - is 40 million transfers per second (40 Mbytes/sec on a 8 bit bus). - Most hard drives sold today are single-ended Ultra SCSI (8 or 16 - bits). - - Of course the SCSI bus not only has data lines, but also a number - of control signals. A very elaborate protocol is part of the standard - to allow multiple devices to share the bus in an efficient manner. In - SCSI-2, the data is always checked using a separate parity line. In - pre-SCSI-2 designs parity was optional. - - In SCSI-3 even faster bus types are introduced, along with a - serial SCSI busses that reduces the cabling overhead and allows a - higher maximum bus length. You might see names like SSA and - fibre channel in this context. None of the serial buses are currently - in widespread use (especially not in the typical FreeBSD environment). - For this reason the serial bus types are not discussed any - further. - - As you could have guessed from the description above, SCSI devices - are intelligent. They have to be to adhere to the SCSI standard - (which is over 2 inches thick BTW). So, for a hard disk drive for - instance you do not specify a head/cylinder/sector to address a - particular block, but simply the number of the block you want. - Elaborate caching schemes, automatic bad block replacement etc are all - made possible by this 'intelligent device' approach. - - On a SCSI bus, each possible pair of devices can communicate. - Whether their function allows this is another matter, but the standard - does not restrict it. To avoid signal contention, the 2 devices have - to arbitrate for the bus before using it. - - The philosophy of SCSI is to have a standard that allows - older-standard devices to work with newer-standard ones. So, an old - SCSI-1 device should normally work on a SCSI-2 bus. I say Normally, - because it is not absolutely sure that the implementation of an old - device follows the (old) standard closely enough to be acceptable on a - new bus. Modern devices are usually more well-behaved, because the - standardization has become more strict and is better adhered to by the - device manufacturers. - - Generally speaking, the chances of getting a working set of - devices on a single bus is better when all the devices are SCSI-2 or - newer. This implies that you do not have to dump all your old stuff - when you get that shiny 2GB disk: I own a system on which a pre-SCSI-1 - disk, a SCSI-2 QIC tape unit, a SCSI-1 helical scan tape unit and 2 - SCSI-1 disks work together quite happily. From a performance - standpoint you might want to separate your older and newer (=faster) - devices however. - - - Components of SCSI - - As said before, SCSI devices are smart. The idea is to put the - knowledge about intimate hardware details onto the SCSI device - itself. In this way, the host system does not have to worry about - things like how many heads a hard disks has, or how many tracks - there are on a specific tape device. If you are curious, the - standard specifies commands with which you can query your devices on - their hardware particulars. FreeBSD uses this capability during - boot to check out what devices are connected and whether they need - any special treatment. - - The advantage of intelligent devices is obvious: the device - drivers on the host can be made in a much more generic fashion, - there is no longer a need to change (and qualify!) drivers for every - odd new device that is introduced. - - For cabling and connectors there is a golden rule: get good - stuff. With bus speeds going up all the time you will save yourself - a lot of grief by using good material. - - So, gold plated connectors, shielded cabling, sturdy connector - hoods with strain reliefs etc are the way to go. Second golden rule: - do no use cables longer than necessary. I once spent 3 days hunting - down a problem with a flaky machine only to discover that shortening - the SCSI bus by 1 meter solved the problem. And the original bus - length was well within the SCSI specification. - - - - SCSI bus types - - From an electrical point of view, there are two incompatible bus - types: single-ended and differential. This means that there are two - different main groups of SCSI devices and controllers, which cannot - be mixed on the same bus. It is possible however to use special - converter hardware to transform a single-ended bus into a - differential one (and vice versa). The differences between the bus - types are explained in the next sections. - - In lots of SCSI related documentation there is a sort of jargon - in use to abbreviate the different bus types. A small list: - - - - FWD: Fast Wide Differential - - - - FND: Fast Narrow Differential - - - - SE: Single Ended - - - - FN: Fast Narrow - - - - etc. - - - - - With a minor amount of imagination one can usually imagine what - is meant. - - Wide is a bit ambiguous, it can indicate 16 or 32 bit buses. As - far as I know, the 32 bit variant is not (yet) in use, so wide - normally means 16 bit. - - Fast means that the timing on the bus is somewhat different, so - that on a narrow (8 bit) bus 10 Mbytes/sec are possible instead of 5 - Mbytes/sec for 'slow' SCSI. As discussed before, bus speeds of 20 - and 40 million transfers/second are also emerging (Fast-20 == Ultra - SCSI and Fast-40 == Ultra2 SCSI). - - - The data lines > 8 are only used for data transfers and - device addressing. The transfers of commands and status messages - etc are only performed on the lowest 8 data lines. The standard - allows narrow devices to operate on a wide bus. The usable bus - width is negotiated between the devices. You have to watch your - device addressing closely when mixing wide and narrow. - - - - Single ended buses - - A single-ended SCSI bus uses signals that are either 5 Volts - or 0 Volts (indeed, TTL levels) and are relative to a COMMON - ground reference. A singled ended 8 bit SCSI bus has - approximately 25 ground lines, who are all tied to a single `rail' - on all devices. A standard single ended bus has a maximum length - of 6 meters. If the same bus is used with fast-SCSI devices, the - maximum length allowed drops to 3 meters. Fast-SCSI means that - instead of 5Mbytes/sec the bus allows 10Mbytes/sec - transfers. - - Fast-20 (Ultra SCSI) and Fast-40 allow for 20 and 40 million - transfers/second respectively. So, F20 is 20 Mbytes/second on a 8 - bit bus, 40 Mbytes/second on a 16 bit bus etc. For F20 the max - bus length is 1.5 meters, for F40 it becomes 0.75 meters. Be - aware that F20 is pushing the limits quite a bit, so you will - quickly find out if your SCSI bus is electrically sound. - - - If some devices on your bus use 'fast' to communicate your - bus must adhere to the length restrictions for fast - buses! - - - It is obvious that with the newer fast-SCSI devices the bus - length can become a real bottleneck. This is why the differential - SCSI bus was introduced in the SCSI-2 standard. - - For connector pinning and connector types please refer to the - SCSI-2 standard (see Further - reading) itself, connectors etc are listed there in - painstaking detail. - - Beware of devices using non-standard cabling. For instance - Apple uses a 25pin D-type connecter (like the one on serial ports - and parallel printers). Considering that the official SCSI bus - needs 50 pins you can imagine the use of this connector needs some - 'creative cabling'. The reduction of the number of ground wires - they used is a bad idea, you better stick to 50 pins cabling in - accordance with the SCSI standard. For Fast-20 and 40 do not even - think about buses like this. - - - - Differential buses - - A differential SCSI bus has a maximum length of 25 meters. - Quite a difference from the 3 meters for a single-ended fast-SCSI - bus. The idea behind differential signals is that each bus signal - has its own return wire. So, each signal is carried on a - (preferably twisted) pair of wires. The voltage difference - between these two wires determines whether the signal is asserted - or de-asserted. To a certain extent the voltage difference - between ground and the signal wire pair is not relevant (do not - try 10 kVolts though). - - It is beyond the scope of this document to explain why this - differential idea is so much better. Just accept that - electrically seen the use of differential signals gives a much - better noise margin. You will normally find differential buses in - use for inter-cabinet connections. Because of the lower cost - single ended is mostly used for shorter buses like inside - cabinets. - - There is nothing that stops you from using differential stuff - with FreeBSD, as long as you use a controller that has device - driver support in FreeBSD. As an example, Adaptec marketed the - AHA1740 as a single ended board, whereas the AHA1744 was - differential. The software interface to the host is identical for - both. - - - - Terminators - - Terminators in SCSI terminology are resistor networks that are - used to get a correct impedance matching. Impedance matching is - important to get clean signals on the bus, without reflections or - ringing. If you once made a long distance telephone call on a bad - line you probably know what reflections are. With 20Mbytes/sec - traveling over your SCSI bus, you do not want signals echoing - back. - - Terminators come in various incarnations, with more or less - sophisticated designs. Of course, there are internal and external - variants. Many SCSI devices come with a number of sockets in - which a number of resistor networks can (must be!) installed. If - you remove terminators from a device, carefully store them. You - will need them when you ever decide to reconfigure your SCSI bus. - There is enough variation in even these simple tiny things to make - finding the exact replacement a frustrating business. There are - also SCSI devices that have a single jumper to enable or disable a - built-in terminator. There are special terminators you can stick - onto a flat cable bus. Others look like external connectors, or a - connector hood without a cable. So, lots of choice as you can - see. - - There is much debate going on if and when you should switch - from simple resistor (passive) terminators to active terminators. - Active terminators contain slightly more elaborate circuit to give - cleaner bus signals. The general consensus seems to be that the - usefulness of active termination increases when you have long - buses and/or fast devices. If you ever have problems with your - SCSI buses you might consider trying an active terminator. Try to - borrow one first, they reputedly are quite expensive. - - Please keep in mind that terminators for differential and - single-ended buses are not identical. You should not - mix the two variants. - - OK, and now where should you install your terminators? This is - by far the most misunderstood part of SCSI. And it is by far the - simplest. The rule is: every single line on the SCSI - bus has 2 (two) terminators, one at each end of the - bus. So, two and not one or three or whatever. Do - yourself a favor and stick to this rule. It will save you endless - grief, because wrong termination has the potential to introduce - highly mysterious bugs. (Note the potential here; - the nastiest part is that it may or may not work.) - - A common pitfall is to have an internal (flat) cable in a - machine and also an external cable attached to the controller. It - seems almost everybody forgets to remove the terminators from the - controller. The terminator must now be on the last external - device, and not on the controller! In general, every - reconfiguration of a SCSI bus must pay attention to this. - - - Termination is to be done on a per-line basis. This means - if you have both narrow and wide buses connected to the same - host adapter, you need to enable termination on the higher 8 - bits of the bus on the adapter (as well as the last devices on - each bus, of course). - - - What I did myself is remove all terminators from my SCSI - devices and controllers. I own a couple of external terminators, - for both the Centronics-type external cabling and for the internal - flat cable connectors. This makes reconfiguration much - easier. - - On modern devices, sometimes integrated terminators are used. - These things are special purpose integrated circuits that can be - enabled or disabled with a control pin. It is not necessary to - physically remove them from a device. You may find them on newer - host adapters, sometimes they are software configurable, using - some sort of setup tool. Some will even auto-detect the cables - attached to the connectors and automatically set up the - termination as necessary. At any rate, consult your - documentation! - - - - Terminator power - - The terminators discussed in the previous chapter need power - to operate properly. On the SCSI bus, a line is dedicated to this - purpose. So, simple huh? - - Not so. Each device can provide its own terminator power to - the terminator sockets it has on-device. But if you have external - terminators, or when the device supplying the terminator power to - the SCSI bus line is switched off you are in trouble. - - The idea is that initiators (these are devices that initiate - actions on the bus, a discussion follows) must supply terminator - power. All SCSI devices are allowed (but not required) to supply - terminator power. - - To allow for un-powered devices on a bus, the terminator power - must be supplied to the bus via a diode. This prevents the - backflow of current to un-powered devices. - - To prevent all kinds of nastiness, the terminator power is - usually fused. As you can imagine, fuses might blow. This can, - but does not have to, lead to a non functional bus. If multiple - devices supply terminator power, a single blown fuse will not put - you out of business. A single supplier with a blown fuse - certainly will. Clever external terminators sometimes have a LED - indication that shows whether terminator power is present. - - In newer designs auto-restoring fuses that 'reset' themselves - after some time are sometimes used. - - - - Device addressing - - Because the SCSI bus is, ehh, a bus there must be a way to - distinguish or address the different devices connected to - it. - - This is done by means of the SCSI or target ID. Each device - has a unique target ID. You can select the ID to which a device - must respond using a set of jumpers, or a dip switch, or something - similar. Some SCSI host adapters let you change the target ID - from the boot menu. (Yet some others will not let you change the - ID from 7.) Consult the documentation of your device for more - information. - - Beware of multiple devices configured to use the same ID. - Chaos normally reigns in this case. A pitfall is that one of the - devices sharing the same ID sometimes even manages to answer to - I/O requests! - - For an 8 bit bus, a maximum of 8 targets is possible. The - maximum is 8 because the selection is done bitwise using the 8 - data lines on the bus. For wide buses this increases to the - number of data lines (usually 16). - - - A narrow SCSI device cannot communicate with a SCSI device - with a target ID larger than 7. This means it is generally not - a good idea to move your SCSI host adapter's target ID to - something higher than 7 (or your CDROM will stop - working). - - - The higher the SCSI target ID, the higher the priority the - devices has. When it comes to arbitration between devices that - want to use the bus at the same time, the device that has the - highest SCSI ID will win. This also means that the SCSI host - adapter usually uses target ID 7. Note however that the lower 8 - IDs have higher priorities than the higher 8 IDs on a wide-SCSI - bus. Thus, the order of target IDs is: [7 6 .. 1 0 15 14 .. 9 8] - on a wide-SCSI system. (If you are wondering why the lower 8 - have higher priority, read the previous paragraph for a - hint.) - - For a further subdivision, the standard allows for Logical - Units or LUNs for short. A single target ID may have multiple - LUNs. For example, a tape device including a tape changer may - have LUN 0 for the tape device itself, and LUN 1 for the tape - changer. In this way, the host system can address each of the - functional units of the tape changer as desired. - - - - Bus layout - - SCSI buses are linear. So, not shaped like Y-junctions, star - topologies, rings, cobwebs or whatever else people might want to - invent. One of the most common mistakes is for people with - wide-SCSI host adapters to connect devices on all three connecters - (external connector, internal wide connector, internal narrow - connector). Don't do that. It may appear to work if you are - really lucky, but I can almost guarantee that your system will - stop functioning at the most unfortunate moment (this is also - known as Murphy's law). - - You might notice that the terminator issue discussed earlier - becomes rather hairy if your bus is not linear. Also, if you have - more connectors than devices on your internal SCSI cable, make - sure you attach devices on connectors on both ends instead of - using the connectors in the middle and let one or both ends - dangle. This will screw up the termination of the bus. - - The electrical characteristics, its noise margins and - ultimately the reliability of it all are tightly related to linear - bus rule. - - Stick to the linear bus rule! - - - - - Using SCSI with FreeBSD - - - About translations, BIOSes and magic... - - As stated before, you should first make sure that you have a - electrically sound bus. - - When you want to use a SCSI disk on your PC as boot disk, you - must aware of some quirks related to PC BIOSes. The PC BIOS in - its first incarnation used a low level physical interface to the - hard disk. So, you had to tell the BIOS (using a setup tool or a - BIOS built-in setup) how your disk physically looked like. This - involved stating number of heads, number of cylinders, number of - sectors per track, obscure things like precompensation and reduced - write current cylinder etc. - - One might be inclined to think that since SCSI disks are smart - you can forget about this. Alas, the arcane setup issue is still - present today. The system BIOS needs to know how to access your - SCSI disk with the head/cyl/sector method in order to load the - FreeBSD kernel during boot. - - The SCSI host adapter or SCSI controller you have put in your - AT/EISA/PCI/whatever bus to connect your disk therefore has its - own on-board BIOS. During system startup, the SCSI BIOS takes - over the hard disk interface routines from the system BIOS. To - fool the system BIOS, the system setup is normally set to No hard - disk present. Obvious, isn't it? - - The SCSI BIOS itself presents to the system a so called - translated drive. This means that a fake - drive table is constructed that allows the PC to boot the drive. - This translation is often (but not always) done using a pseudo - drive with 64 heads and 32 sectors per track. By varying the - number of cylinders, the SCSI BIOS adapts to the actual drive - size. It is useful to note that 32 * 64 / 2 = the size of your - drive in megabytes. The division by 2 is to get from disk blocks - that are normally 512 bytes in size to Kbytes. - - Right. All is well now?! No, it is not. The system BIOS has - another quirk you might run into. The number of cylinders of a - bootable hard disk cannot be greater than 1024. Using the - translation above, this is a show-stopper for disks greater than 1 - GB. With disk capacities going up all the time this is causing - problems. - - Fortunately, the solution is simple: just use another - translation, e.g. with 128 heads instead of 32. In most cases new - SCSI BIOS versions are available to upgrade older SCSI host - adapters. Some newer adapters have an option, in the form of a - jumper or software setup selection, to switch the translation the - SCSI BIOS uses. - - It is very important that all operating - systems on the disk use the same translation - to get the right idea about where to find the relevant partitions. - So, when installing FreeBSD you must answer any questions about - heads/cylinders etc using the translated values your host adapter - uses. - - Failing to observe the translation issue might lead to - un-bootable systems or operating systems overwriting each others - partitions. Using fdisk you should be able to see all - partitions. - - You might have heard some talk of lying devices? - Older FreeBSD kernels used to report the geometry of SCSI disks - when booting. An example from one of my systems: - - aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4> -sd0: 636MB (1303250 total sec), 1632 cyl, 15 head, 53 sec, bytes/sec 512 - - Newer kernels usually do not report this information. - e.g. - - (bt0:0:0): "SEAGATE ST41651 7574" type 0 fixed SCSI 2 -sd0(bt0:0:0): Direct-Access 1350MB (2766300 512 byte sectors) - - Why has this changed? - - This info is retrieved from the SCSI disk itself. Newer disks - often use a technique called zone bit recording. The idea is that - on the outer cylinders of the drive there is more space so more - sectors per track can be put on them. This results in disks that - have more tracks on outer cylinders than on the inner cylinders - and, last but not least, have more capacity. You can imagine that - the value reported by the drive when inquiring about the geometry - now becomes suspect at best, and nearly always misleading. When - asked for a geometry , it is nearly always better to supply the - geometry used by the BIOS, or if the BIOS is never going - to know about this disk, (e.g. it is not a booting - disk) to supply a fictitious geometry that is convenient. - - - - SCSI subsystem design - - FreeBSD uses a layered SCSI subsystem. For each different - controller card a device driver is written. This driver knows all - the intimate details about the hardware it controls. The driver - has a interface to the upper layers of the SCSI subsystem through - which it receives its commands and reports back any status. - - On top of the card drivers there are a number of more generic - drivers for a class of devices. More specific: a driver for tape - devices (abbreviation: st), magnetic disks (sd), CDROMs (cd) etc. - In case you are wondering where you can find this stuff, it all - lives in /sys/scsi. See the man pages in - section 4 for more details. - - The multi level design allows a decoupling of low-level bit - banging and more high level stuff. Adding support for another - piece of hardware is a much more manageable problem. - - - - Kernel configuration - - Dependent on your hardware, the kernel configuration file must - contain one or more lines describing your host adapter(s). This - includes I/O addresses, interrupts etc. Consult the man page for - your adapter driver to get more info. Apart from that, check out - /sys/i386/conf/LINT for an overview of a - kernel config file. LINT contains every - possible option you can dream of. It does - not imply LINT will - actually get you to a working kernel at all. - - Although it is probably stating the obvious: the kernel config - file should reflect your actual hardware setup. So, interrupts, - I/O addresses etc must match the kernel config file. During - system boot messages will be displayed to indicate whether the - configured hardware was actually found. - - - Note that most of the EISA/PCI drivers (namely - ahb, ahc, - ncr and amd - will automatically obtain the correct parameters from the host - adapters themselves at boot time; thus, you just need to write, - for instance, controller ahc0. - - - An example loosely based on the FreeBSD 2.2.5-Release kernel - config file LINT with some added comments - (between []): - - # SCSI host adapters: `aha', `ahb', `aic', `bt', `nca' -# -# aha: Adaptec 154x -# ahb: Adaptec 174x -# ahc: Adaptec 274x/284x/294x -# aic: Adaptec 152x and sound cards using the Adaptec AIC-6360 (slow!) -# amd: AMD 53c974 based SCSI cards (e.g., Tekram DC-390 and 390T) -# bt: Most Buslogic controllers -# nca: ProAudioSpectrum cards using the NCR 5380 or Trantor T130 -# ncr: NCR/Symbios 53c810/815/825/875 etc based SCSI cards -# uha: UltraStore 14F and 34F -# sea: Seagate ST01/02 8 bit controller (slow!) -# wds: Western Digital WD7000 controller (no scatter/gather!). -# - -[For an Adaptec AHA274x/284x/294x/394x etc controller] -controller ahc0 - -[For an NCR/Symbios 53c875 based controller] -controller ncr0 - -[For an Ultrastor adapter] -controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr - -# Map SCSI buses to specific SCSI adapters -controller scbus0 at ahc0 -controller scbus2 at ncr0 -controller scbus1 at uha0 - -# The actual SCSI devices -disk sd0 at scbus0 target 0 unit 0 [SCSI disk 0 is at scbus 0, LUN 0] -disk sd1 at scbus0 target 1 [implicit LUN 0 if omitted] -disk sd2 at scbus1 target 3 [SCSI disk on the uha0] -disk sd3 at scbus2 target 4 [SCSI disk on the ncr0] -tape st1 at scbus0 target 6 [SCSI tape at target 6] -device cd0 at scbus? [the first ever CDROM found, no wiring] - - The example above tells the kernel to look for a ahc (Adaptec - 274x) controller, then for an NCR/Symbios board, and so on. The - lines following the controller specifications tell the kernel to - configure specific devices but only attach - them when they match the target ID and LUN specified on the - corresponding bus. - - Wired down devices get first shot at the unit - numbers so the first non wired down device, is - allocated the unit number one greater than the highest - wired down unit number for that kind of device. So, - if you had a SCSI tape at target ID 2 it would be configured as - st2, as the tape at target ID 6 is wired down to unit number - 1. - - - Wired down devices need not be found to get their unit - number. The unit number for a wired down device is reserved for - that device, even if it is turned off at boot time. This allows - the device to be turned on and brought on-line at a later time, - without rebooting. Notice that a device's unit number has - no relationship with its target ID on the - SCSI bus. - - - Below is another example of a kernel config file as used by - FreeBSD version < 2.0.5. The difference with the first example - is that devices are not wired down. Wired - down means that you specify which SCSI target belongs to - which device. - - A kernel built to the config file below will attach the first - SCSI disk it finds to sd0, the second disk to sd1 etc. If you ever - removed or added a disk, all other devices of the same type (disk - in this case) would 'move around'. This implies you have to - change /etc/fstab each time. - - Although the old style still works, you are - strongly recommended to use this new feature. - It will save you a lot of grief whenever you shift your hardware - around on the SCSI buses. So, when you re-use your old trusty - config file after upgrading from a pre-FreeBSD2.0.5.R system check - this out. - - [driver for Adaptec 174x] -controller ahb0 at isa? bio irq 11 vector ahbintr - -[for Adaptec 154x] -controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr - -[for Seagate ST01/02] -controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr - -controller scbus0 - -device sd0 [support for 4 SCSI harddisks, sd0 up sd3] -device st0 [support for 2 SCSI tapes] - -[for the CDROM] -device cd0 #Only need one of these, the code dynamically grows - - Both examples support SCSI disks. If during boot more devices - of a specific type (e.g. sd disks) are found than are configured - in the booting kernel, the system will simply allocate more - devices, incrementing the unit number starting at the last number - wired down. If there are no wired - down devices then counting starts at unit 0. - - Use man 4 scsi to check for the latest info - on the SCSI subsystem. For more detailed info on host adapter - drivers use e.g., man 4 ahc for info on the - Adaptec 294x driver. - - - - Tuning your SCSI kernel setup - - Experience has shown that some devices are slow to respond to - INQUIRY commands after a SCSI bus reset (which happens at boot - time). An INQUIRY command is sent by the kernel on boot to see - what kind of device (disk, tape, CDROM etc.) is connected to a - specific target ID. This process is called device probing by the - way. - - To work around the 'slow response' problem, FreeBSD allows a - tunable delay time before the SCSI devices are probed following a - SCSI bus reset. You can set this delay time in your kernel - configuration file using a line like: - - options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device - - This line sets the delay time to 15 seconds. On my own system - I had to use 3 seconds minimum to get my trusty old CDROM drive - to be recognized. Start with a high value (say 30 seconds or so) - when you have problems with device recognition. If this helps, - tune it back until it just stays working. - - - - Rogue SCSI devices - - Although the SCSI standard tries to be complete and concise, - it is a complex standard and implementing things correctly is no - easy task. Some vendors do a better job then others. - - This is exactly where the rogue devices come - into view. Rogues are devices that are recognized by the FreeBSD - kernel as behaving slightly (...) non-standard. Rogue devices are - reported by the kernel when booting. An example for two of my - cartridge tape units: - - Feb 25 21:03:34 yedi /kernel: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:> -Feb 25 21:03:34 yedi /kernel: st0: Tandberg tdc3600 is a known rogue - -Mar 29 21:16:37 yedi /kernel: aha0 targ 5 lun 0: <ARCHIVE VIPER 150 21247-005> -Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue - - For instance, there are devices that respond to all LUNs on a - certain target ID, even if they are actually only one device. It - is easy to see that the kernel might be fooled into believing that - there are 8 LUNs at that particular target ID. The confusion this - causes is left as an exercise to the reader. - - The SCSI subsystem of FreeBSD recognizes devices with bad - habits by looking at the INQUIRY response they send when probed. - Because the INQUIRY response also includes the version number of - the device firmware, it is even possible that for different - firmware versions different workarounds are used. See e.g. - /sys/scsi/st.c and - /sys/scsi/scsiconf.c for more info on how - this is done. - - This scheme works fine, but keep in mind that it of course - only works for devices that are known to be weird. If you are the - first to connect your bogus Mumbletech SCSI CDROM you might be - the one that has to define which workaround is needed. - - After you got your Mumbletech working, please send the - required workaround to the FreeBSD development team for inclusion - in the next release of FreeBSD. Other Mumbletech owners will be - grateful to you. - - - - Multiple LUN devices - - In some cases you come across devices that use multiple - logical units (LUNs) on a single SCSI ID. In most cases FreeBSD - only probes devices for LUN 0. An example are so called bridge - boards that connect 2 non-SCSI harddisks to a SCSI bus (e.g. an - Emulex MD21 found in old Sun systems). - - This means that any devices with LUNs != 0 are not normally - found during device probe on system boot. To work around this - problem you must add an appropriate entry in /sys/scsi/scsiconf.c - and rebuild your kernel. - - Look for a struct that is initialized like below: - - { - T_DIRECT, T_FIXED, "MAXTOR", "XT-4170S", "B5A", - "mx1", SC_ONE_LU -} - - For you Mumbletech BRIDGE2000 that has more than one LUN, acts - as a SCSI disk and has firmware revision 123 you would add - something like: - - { - T_DIRECT, T_FIXED, "MUMBLETECH", "BRIDGE2000", "123", - "sd", SC_MORE_LUS -} - - The kernel on boot scans the inquiry data it receives against - the table and acts accordingly. See the source for more - info. - - - - Tagged command queuing - - Modern SCSI devices, particularly magnetic disks, - support what is called tagged command queuing (TCQ). - - In a nutshell, TCQ allows the device to have multiple I/O - requests outstanding at the same time. Because the device is - intelligent, it can optimize its operations (like head - positioning) based on its own request queue. On SCSI devices - like RAID (Redundant Array of Independent Disks) arrays the TCQ - function is indispensable to take advantage of the device's - inherent parallelism. - - Each I/O request is uniquely identified by a tag - (hence the name tagged command queuing) and this tag is used by - FreeBSD to see which I/O in the device drivers queue is reported - as complete by the device. - - It should be noted however that TCQ requires device driver - support and that some devices implemented it not quite - right in their firmware. This problem bit me once, and it - leads to highly mysterious problems. In such cases, try to - disable TCQ. - - - - Busmaster host adapters - - Most, but not all, SCSI host adapters are bus mastering - controllers. This means that they can do I/O on their own without - putting load onto the host CPU for data movement. - - This is of course an advantage for a multitasking operating - system like FreeBSD. It must be noted however that there might be - some rough edges. - - For instance an Adaptec 1542 controller can be set to use - different transfer speeds on the host bus (ISA or AT in this - case). The controller is settable to different rates because not - all motherboards can handle the higher speeds. Problems like - hang-ups, bad data etc might be the result of using a higher data - transfer rate then your motherboard can stomach. - - The solution is of course obvious: switch to a lower data - transfer rate and try if that works better. - - In the case of a Adaptec 1542, there is an option that can be - put into the kernel config file to allow dynamic determination of - the right, read: fastest feasible, transfer rate. This option is - disabled by default: - - options "TUNE_1542" #dynamic tune of bus DMA speed - - Check the man pages for the host adapter that you use. Or - better still, use the ultimate documentation (read: driver - source). - - - - - Tracking down problems - - The following list is an attempt to give a guideline for the - most common SCSI problems and their solutions. It is by no means - complete. - - - - Check for loose connectors and cables. - - - - Check and double check the location and number of your - terminators. - - - - Check if your bus has at least one supplier of terminator - power (especially with external terminators. - - - - Check if no double target IDs are used. - - - - Check if all devices to be used are powered up. - - - - Make a minimal bus config with as little devices as - possible. - - - - If possible, configure your host adapter to use slow bus - speeds. - - - - Disable tagged command queuing to make things as simple as - possible (for a NCR host adapter based system see man - ncrcontrol) - - - - If you can compile a kernel, make one with the - SCSIDEBUG option, and try accessing the - device with debugging turned on for that device. If your device - does not even probe at startup, you may have to define the - address of the device that is failing, and the desired debug - level in /sys/scsi/scsidebug.h. If it - probes but just does not work, you can use the - &man.scsi.8; command to dynamically set a debug level to - it in a running kernel (if SCSIDEBUG is - defined). This will give you copious - debugging output with which to confuse the gurus. See - man 4 scsi for more exact information. Also - look at man 8 scsi. - - - - - - Further reading - - If you intend to do some serious SCSI hacking, you might want to - have the official standard at hand: - - Approved American National Standards can be purchased from - ANSI at - -
- 13th Floor - 11 West 42nd Street - New York - NY 10036 - Sales Dept: (212) 642-4900 -
-
- - You can also buy many ANSI - standards and most committee draft documents from Global - Engineering Documents, - -
- 15 Inverness Way East - Englewood - CO, 80112-5704 - Phone: (800) 854-7179 - Outside USA and Canada: (303) 792-2181 - Fax: (303) 792- 2192 -
-
- - Many X3T10 draft documents are available electronically on the - SCSI BBS (719-574-0424) and on the ncrinfo.ncr.com anonymous FTP site. - - Latest X3T10 committee documents are: - - - - AT Attachment (ATA or IDE) [X3.221-1994] - (Approved) - - - - ATA Extensions (ATA-2) [X3T10/948D Rev 2i] - - - - Enhanced Small Device Interface (ESDI) - [X3.170-1990/X3.170a-1991] - (Approved) - - - - Small Computer System Interface — 2 (SCSI-2) - [X3.131-1994] (Approved) - - - - SCSI-2 Common Access Method Transport and SCSI Interface - Module (CAM) [X3T10/792D Rev 11] - - - - Other publications that might provide you with additional - information are: - - - - SCSI: Understanding the Small Computer System - Interface, written by NCR Corporation. Available from: - Prentice Hall, Englewood Cliffs, NJ, 07632 Phone: (201) 767-5937 - ISBN 0-13-796855-8 - - - - Basics of SCSI, a SCSI tutorial written by - Ancot Corporation Contact Ancot for availability information at: - Phone: (415) 322-5322 Fax: (415) 322-0455 - - - - SCSI Interconnection Guide Book, an AMP - publication (dated 4/93, Catalog 65237) that lists the various - SCSI connectors and suggests cabling schemes. Available from - AMP at (800) 522-6752 or (717) 564-0100 - - - - Fast Track to SCSI, A Product Guide written by - Fujitsu. Available from: Prentice Hall, Englewood Cliffs, NJ, - 07632 Phone: (201) 767-5937 ISBN 0-13-307000-X - - - - The SCSI Bench Reference, The SCSI - Encyclopedia, and the SCSI Tutor, ENDL - Publications, 14426 Black Walnut Court, Saratoga CA, 95070 - Phone: (408) 867-6642 - - - - Zadian SCSI Navigator (quick ref. book) and - Discover the Power of SCSI (First book along with - a one-hour video and tutorial book), Zadian Software, Suite 214, - 1210 S. Bascom Ave., San Jose, CA 92128, (408) 293-0800 - - - - On Usenet the newsgroups comp.periphs.scsi and comp.periphs are noteworthy places - to look for more info. You can also find the SCSI-Faq there, which - is posted periodically. - - Most major SCSI device and host adapter suppliers operate FTP - sites and/or BBS systems. They may be valuable sources of - information about the devices you own. -
-
- - - * Disk/tape controllers - - - * SCSI - - - - - - * IDE - - - - - - * Floppy - - - - - - - Hard drives - - - SCSI hard drives - - Contributed by &a.asami;. 17 February - 1998. - - As mentioned in the SCSI section, - virtually all SCSI hard drives sold today are SCSI-2 compliant and - thus will work fine as long as you connect them to a supported SCSI - host adapter. Most problems people encounter are either due to - badly designed cabling (cable too long, star topology, etc.), - insufficient termination, or defective parts. Please refer to the - SCSI section first if your SCSI hard - drive is not working. However, there are a couple of things you may - want to take into account before you purchase SCSI hard drives for - your system. - - - Rotational speed - - Rotational speeds of SCSI drives sold today range from around - 4,500RPM to 10,000RPM. Most of them are either 5,400RPM or - 7,200RPM. Even though the 7,200RPM drives can generally transfer - data faster, they run considerably hotter than their 5,400RPM - counterparts. A large fraction of today's disk drive malfunctions - are heat-related. If you do not have very good cooling in your PC - case, you may want to stick with 5,400RPM or slower drives. - - Note that newer drives, with higher areal recording densities, - can deliver much more bits per rotation than older ones. Today's - top-of-line 5,400RPM drives can sustain a throughput comparable to - 7,200RPM drives of one or two model generations ago. The number - to find on the spec sheet for bandwidth is internal data - (or transfer) rate. It is usually in megabits/sec so - divide it by 8 and you'll get the rough approximation of how much - megabytes/sec you can get out of the drive. - - (If you are a speed maniac and want a 10,000RPM drive for your - cute little PC, be my guest; however, those drives become - extremely hot. Don't even think about it if you don't have a fan - blowing air directly at the drive or a - properly ventilated disk enclosure.) - - Obviously, the latest 10,000RPM drives and 7,200RPM drives can - deliver more data than the latest 5,400RPM drives, so if absolute - bandwidth is the necessity for your applications, you have little - choice but to get the faster drives. Also, if you need low - latency, faster drives are better; not only do they usually have - lower average seek times, but also the rotational delay is one - place where slow-spinning drives can never beat a faster one. - (The average rotational latency is half the time it takes to - rotate the drive once; thus, it's 3 milliseconds for 10,000RPM - drives, 4.2ms for 7,200RPM drives and 5.6ms for 5,400RPM drives.) - Latency is seek time plus rotational delay. Make sure you - understand whether you need low latency or more accesses per - second, though; in the latter case (e.g., news servers), it may - not be optimal to purchase one big fast drive. You can achieve - similar or even better results by using the ccd (concatenated - disk) driver to create a striped disk array out of multiple slower - drives for comparable overall cost. - - Make sure you have adequate air flow around the drive, - especially if you are going to use a fast-spinning drive. You - generally need at least 1/2" (1.25cm) of spacing above and below a - drive. Understand how the air flows through your PC case. Most - cases have the power supply suck the air out of the back. See - where the air flows in, and put the drive where it will have the - largest volume of cool air flowing around it. You may need to seal - some unwanted holes or add a new fan for effective cooling. - - Another consideration is noise. Many 7,200 or faster drives - generate a high-pitched whine which is quite unpleasant to most - people. That, plus the extra fans often required for cooling, may - make 7,200 or faster drives unsuitable for some office and home - environments. - - - - Form factor - - Most SCSI drives sold today are of 3.5" form factor. They - come in two different heights; 1.6" (half-height) or - 1" (low-profile). The half-height drive is the same - height as a CDROM drive. However, don't forget the spacing rule - mentioned in the previous section. If you have three standard - 3.5" drive bays, you will not be able to put three half-height - drives in there (without frying them, that is). - - - - Interface - - The majority of SCSI hard drives sold today are Ultra or - Ultra-wide SCSI. The maximum bandwidth of Ultra SCSI is 20MB/sec, - and Ultra-wide SCSI is 40MB/sec. There is no difference in max - cable length between Ultra and Ultra-wide; however, the more - devices you have on the same bus, the sooner you will start having - bus integrity problems. Unless you have a well-designed disk - enclosure, it is not easy to make more than 5 or 6 Ultra SCSI - drives work on a single bus. - - On the other hand, if you need to connect many drives, going - for Fast-wide SCSI may not be a bad idea. That will have the same - max bandwidth as Ultra (narrow) SCSI, while electronically it's - much easier to get it right. My advice would be: if - you want to connect many disks, get wide SCSI drives; they usually - cost a little more but it may save you down the road. (Besides, - if you can't afford the cost difference, you shouldn't be building - a disk array.) - - There are two variant of wide SCSI drives; 68-pin and 80-pin - SCA (Single Connector Attach). The SCA drives don't have a - separate 4-pin power connector, and also read the SCSI ID settings - through the 80-pin connector. If you are really serious about - building a large storage system, get SCA drives and a good SCA - enclosure (dual power supply with at least one extra fan). They - are more electronically sound than 68-pin counterparts because - there is no stub of the SCSI bus inside the disk - canister as in arrays built from 68-pin drives. They are easier - to install too (you just need to screw the drive in the canister, - instead of trying to squeeze in your fingers in a tight place to - hook up all the little cables (like the SCSI ID and disk activity - LED lines). - - - - - * IDE hard drives - - - - - - - Tape drives - - Contributed by &a.jmb;. 2 July - 1996. - - - General tape access commands - - &man.mt.1; provides generic access to the tape drives. Some of - the more common commands are rewind, - erase, and status. See the - &man.mt.1; manual page for a detailed description. - - - - Controller Interfaces - - There are several different interfaces that support tape drives. - The interfaces are SCSI, IDE, Floppy and Parallel Port. A wide - variety of tape drives are available for these interfaces. - Controllers are discussed in Disk/tape - controllers. - - - - SCSI drives - - The &man.st.4; driver provides support for 8mm (Exabyte), 4mm - (DAT: Digital Audio Tape), QIC (Quarter-Inch Cartridge), DLT - (Digital Linear Tape), QIC Mini cartridge and 9-track (remember the - big reels that you see spinning in Hollywood computer rooms) tape - drives. See the &man.st.4; manual page for a detailed - description. - - The drives listed below are currently being used by members of - the FreeBSD community. They are not the only drives that will work - with FreeBSD. They just happen to be the ones that we use. - - - 4mm (DAT: Digital Audio Tape) - - Archive Python - 28454 - - Archive Python - 04687 - - HP C1533A - - HP C1534A - - HP 35450A - - HP 35470A - - HP 35480A - - SDT-5000 - - Wangtek - 6200 - - - - 8mm (Exabyte) - - EXB-8200 - - EXB-8500 - - EXB-8505 - - - - QIC (Quarter-Inch Cartridge) - - Archive Anaconda - 2750 - - Archive Viper - 60 - - Archive Viper - 150 - - Archive Viper - 2525 - - Tandberg TDC - 3600 - - Tandberg TDC - 3620 - - Tandberg TDC - 3800 - - Tandberg TDC - 4222 - - Wangtek - 5525ES - - - - DLT (Digital Linear Tape) - - Digital TZ87 - - - - Mini-Cartridge - - Conner CTMS - 3200 - - Exabyte 2501 - - - - Autoloaders/Changers - - Hewlett-Packard HP C1553A - Autoloading DDS2 - - - - - * IDE drives - - - - - - Floppy drives - - Conner 420R - - - - * Parallel port drives - - - - - - Detailed Information - - - Archive Anaconda 2750 - - The boot message identifier for this drive is ARCHIVE - ANCDA 2750 28077 -003 type 1 removable SCSI 2 - - This is a QIC tape drive. - - Native capacity is 1.35GB when using QIC-1350 tapes. This - drive will read and write QIC-150 (DC6150), QIC-250 (DC6250), and - QIC-525 (DC6525) tapes as well. - - Data transfer rate is 350kB/s using - &man.dump.8;. Rates of 530kB/s have been reported when using - Amanda - - Production of this drive has been discontinued. - - The SCSI bus connector on this tape drive is reversed from - that on most other SCSI devices. Make sure that you have enough - SCSI cable to twist the cable one-half turn before and after the - Archive Anaconda tape drive, or turn your other SCSI devices - upside-down. - - Two kernel code changes are required to use this drive. This - drive will not work as delivered. - - If you have a SCSI-2 controller, short jumper 6. Otherwise, - the drive behaves are a SCSI-1 device. When operating as a SCSI-1 - device, this drive, locks the SCSI bus during some - tape operations, including: fsf, rewind, and rewoffl. - - If you are using the NCR SCSI controllers, patch the file - /usr/src/sys/pci/ncr.c (as shown below). - Build and install a new kernel. - - *** 4831,4835 **** - }; - -! if (np->latetime>4) { - /* - ** Although we tried to wake it up, ---- 4831,4836 ---- - }; - -! if (np->latetime>1200) { - /* - ** Although we tried to wake it up, - - Reported by: &a.jmb; - - - - Archive Python 28454 - - The boot message identifier for this drive is ARCHIVE - Python 28454-XXX4ASB type 1 removable SCSI - 2 density code 0x8c, 512-byte - blocks - - This is a DDS-1 tape drive. - - Native capacity is 2.5GB on 90m tapes. - - Data transfer rate is XXX. - - This drive was repackaged by Sun Microsystems as model - 595-3067. - - Reported by: Bob Bishop rb@gid.co.uk - - Throughput is in the 1.5 MByte/sec range, however this will - drop if the disks and tape drive are on the same SCSI - controller. - - Reported by: Robert E. Seastrom - rs@seastrom.com - - - - Archive Python 04687 - - The boot message identifier for this drive is ARCHIVE - Python 04687-XXX 6580 Removable Sequential - Access SCSI-2 device - - This is a DAT-DDS-2 drive. - - Native capacity is 4GB when using 120m tapes. - - This drive supports hardware data compression. Switch 4 - controls MRS (Media Recognition System). MRS tapes have stripes - on the transparent leader. Switch 4 off - enables MRS, on disables MRS. - - Parity is controlled by switch 5. Switch 5 - on to enable parity control. Compression is - enabled with Switch 6 off. It is possible to - override compression with the SCSI MODE SELECT - command (see &man.mt.1;). - - Data transfer rate is 800kB/s. - - - - Archive Viper 60 - - The boot message identifier for this drive is ARCHIVE - VIPER 60 21116 -007 type 1 removable SCSI - 1 - - This is a QIC tape drive. - - Native capacity is 60MB. - - Data transfer rate is XXX. - - Production of this drive has been discontinued. - - Reported by: Philippe Regnauld - regnauld@hsc.fr - - - - Archive Viper 150 - - The boot message identifier for this drive is ARCHIVE - VIPER 150 21531 -004 Archive Viper 150 is a - known rogue type 1 removable SCSI - 1. A multitude of firmware revisions exist for this - drive. Your drive may report different numbers (e.g - 21247 -005. - - This is a QIC tape drive. - - Native capacity is 150/250MB. Both 150MB (DC6150) and 250MB - (DC6250) tapes have the recording format. The 250MB tapes are - approximately 67% longer than the 150MB tapes. This drive can - read 120MB tapes as well. It cannot write 120MB tapes. - - Data transfer rate is 100kB/s - - This drive reads and writes DC6150 (150MB) and DC6250 (250MB) - tapes. - - This drives quirks are known and pre-compiled into the scsi - tape device driver (&man.st.4;). - - Under FreeBSD 2.2-CURRENT, use mt blocksize - 512 to set the blocksize. (The particular drive had - firmware revision 21247 -005. Other firmware revisions may behave - differently) Previous versions of FreeBSD did not have this - problem. - - Production of this drive has been discontinued. - - Reported by: Pedro A M Vazquez - vazquez@IQM.Unicamp.BR - - &a.msmith; - - - - Archive Viper 2525 - - The boot message identifier for this drive is ARCHIVE - VIPER 2525 25462 -011 type 1 removable SCSI - 1 - - This is a QIC tape drive. - - Native capacity is 525MB. - - Data transfer rate is 180kB/s at 90 inches/sec. - - The drive reads QIC-525, QIC-150, QIC-120 and QIC-24 tapes. - Writes QIC-525, QIC-150, and QIC-120. - - Firmware revisions prior to 25462 -011 are - bug ridden and will not function properly. - - Production of this drive has been discontinued. - - - - Conner 420R - - The boot message identifier for this drive is Conner - tape. - - This is a floppy controller, mini cartridge tape drive. - - Native capacity is XXXX - - Data transfer rate is XXX - - The drive uses QIC-80 tape cartridges. - - Reported by: Mark Hannon - mark@seeware.DIALix.oz.au - - - - Conner CTMS 3200 - - The boot message identifier for this drive is CONNER - CTMS 3200 7.00 type 1 removable SCSI - 2. - - This is a mini cartridge tape drive. - - Native capacity is XXXX - - Data transfer rate is XXX - - The drive uses QIC-3080 tape cartridges. - - Reported by: Thomas S. Traylor - tst@titan.cs.mci.com - - - - <ulink - url="http://www.digital.com/info/Customer-Update/931206004.txt.html">DEC TZ87</ulink> - - The boot message identifier for this drive is DEC - TZ87 (C) DEC 9206 type 1 removable SCSI - 2 density code 0x19 - - This is a DLT tape drive. - - Native capacity is 10GB. - - This drive supports hardware data compression. - - Data transfer rate is 1.2MB/s. - - This drive is identical to the Quantum DLT2000. The drive - firmware can be set to emulate several well-known drives, - including an Exabyte 8mm drive. - - Reported by: &a.wilko; - - - - <ulink - url="http://www.Exabyte.COM:80/Products/Minicartridge/2501/Rfeatures.html">Exabyte EXB-2501</ulink> - - The boot message identifier for this drive is EXABYTE - EXB-2501 - - This is a mini-cartridge tape drive. - - Native capacity is 1GB when using MC3000XL - mini cartridges. - - Data transfer rate is XXX - - This drive can read and write DC2300 (550MB), DC2750 (750MB), - MC3000 (750MB), and MC3000XL (1GB) mini cartridges. - - WARNING: This drive does not meet the SCSI-2 specifications. - The drive locks up completely in response to a SCSI MODE_SELECT - command unless there is a formatted tape in the drive. Before - using this drive, set the tape blocksize with - - &prompt.root; mt -f /dev/st0ctl.0 blocksize 1024 - - Before using a mini cartridge for the first time, the - mini cartridge must be formated. FreeBSD 2.1.0-RELEASE and - earlier: - - &prompt.root; /sbin/scsi -f /dev/rst0.ctl -s 600 -c "4 0 0 0 0 0" - - (Alternatively, fetch a copy of the - scsiformat shell script from FreeBSD - 2.1.5/2.2.) FreeBSD 2.1.5 and later: - - &prompt.root; /sbin/scsiformat -q -w /dev/rst0.ctl - - Right now, this drive cannot really be recommended for - FreeBSD. - - Reported by: Bob Beaulieu - ez@eztravel.com - - - - Exabyte EXB-8200 - - The boot message identifier for this drive is EXABYTE - EXB-8200 252X type 1 removable SCSI - 1 - - This is an 8mm tape drive. - - Native capacity is 2.3GB. - - Data transfer rate is 270kB/s. - - This drive is fairly slow in responding to the SCSI bus during - boot. A custom kernel may be required (set SCSI_DELAY to 10 - seconds). - - There are a large number of firmware configurations for this - drive, some have been customized to a particular vendor's - hardware. The firmware can be changed via EPROM - replacement. - - Production of this drive has been discontinued. - - Reported by: &a.msmith; - - - - Exabyte EXB-8500 - - The boot message identifier for this drive is EXABYTE - EXB-8500-85Qanx0 0415 type 1 removable SCSI - 2 - - This is an 8mm tape drive. - - Native capacity is 5GB. - - Data transfer rate is 300kB/s. - - Reported by: Greg Lehey grog@lemis.de - - - - <ulink - url="http://www.Exabyte.COM:80/Products/8mm/8505XL/Rfeatures.html">Exabyte EXB-8505</ulink> - - The boot message identifier for this drive is - EXABYTE EXB-85058SQANXR1 05B0 type 1 - removable SCSI 2 - - This is an 8mm tape drive which supports compression, and is - upward compatible with the EXB-5200 and EXB-8500. - - Native capacity is 5GB. - - The drive supports hardware data compression. - - Data transfer rate is 300kB/s. - - Reported by: Glen Foster - gfoster@gfoster.com - - - - Hewlett-Packard HP C1533A - - The boot message identifier for this drive is HP - C1533A 9503 type 1 removable SCSI - 2. - - This is a DDS-2 tape drive. DDS-2 means hardware data - compression and narrower tracks for increased data - capacity. - - Native capacity is 4GB when using 120m tapes. This drive - supports hardware data compression. - - Data transfer rate is 510kB/s. - - This drive is used in Hewlett-Packard's SureStore 6000eU and - 6000i tape drives and C1533A DDS-2 DAT drive. - - The drive has a block of 8 dip switches. The proper settings - for FreeBSD are: 1 ON; 2 ON; 3 OFF; 4 ON; 5 ON; 6 ON; 7 ON; 8 - ON. - - - - - - switch 1 - switch 2 - Result - - - - - - On - On - Compression enabled at power-on, with host - control - - - - On - Off - Compression enabled at power-on, no host - control - - - - Off - On - Compression disabled at power-on, with host - control - - - - Off - Off - Compression disabled at power-on, no host - control - - - - - - Switch 3 controls MRS (Media Recognition System). MRS tapes - have stripes on the transparent leader. These identify the tape - as DDS (Digital Data Storage) grade media. Tapes that do not have - the stripes will be treated as write-protected. Switch 3 OFF - enables MRS. Switch 3 ON disables MRS. - - See HP - SureStore Tape Products and Hewlett-Packard - Disk and Tape Technical Information for more information - on configuring this drive. - - Warning: Quality control on these drives - varies greatly. One FreeBSD core-team member has returned 2 of - these drives. Neither lasted more than 5 months. - - Reported by: &a.se; - - - - Hewlett-Packard HP 1534A - - The boot message identifier for this drive is HP - HP35470A T503 type 1 removable SCSI - 2 Sequential-Access density code 0x13, - variable blocks. - - This is a DDS-1 tape drive. DDS-1 is the original DAT tape - format. - - Native capacity is 2GB when using 90m tapes. - - Data transfer rate is 183kB/s. - - The same mechanism is used in Hewlett-Packard's SureStore - 2000i - tape drive, C35470A DDS format DAT drive, C1534A DDS format DAT - drive and HP C1536A DDS format DAT drive. - - The HP C1534A DDS format DAT drive has two indicator lights, - one green and one amber. The green one indicates tape action: - slow flash during load, steady when loaded, fast flash during - read/write operations. The amber one indicates warnings: slow - flash when cleaning is required or tape is nearing the end of its - useful life, steady indicates an hard fault. (factory service - required?) - - Reported by Gary Crutcher - gcrutchr@nightflight.com - - - - Hewlett-Packard HP C1553A Autoloading DDS2 - - The boot message identifier for this drive is "". - - This is a DDS-2 tape drive with a tape changer. DDS-2 means - hardware data compression and narrower tracks for increased data - capacity. - - Native capacity is 24GB when using 120m tapes. This drive - supports hardware data compression. - - Data transfer rate is 510kB/s (native). - - This drive is used in Hewlett-Packard's SureStore 12000e - tape drive. - - The drive has two selectors on the rear panel. The selector - closer to the fan is SCSI id. The other selector should be set to - 7. - - There are four internal switches. These should be set: 1 ON; - 2 ON; 3 ON; 4 OFF. - - At present the kernel drivers do not automatically change - tapes at the end of a volume. This shell script can be used to - change tapes: - - #!/bin/sh -PATH="/sbin:/usr/sbin:/bin:/usr/bin"; export PATH - -usage() -{ - echo "Usage: dds_changer [123456ne] raw-device-name - echo "1..6 = Select cartridge" - echo "next cartridge" - echo "eject magazine" - exit 2 -} - -if [ $# -ne 2 ] ; then - usage -fi - -cdb3=0 -cdb4=0 -cdb5=0 - -case $1 in - [123456]) - cdb3=$1 - cdb4=1 - ;; - n) - ;; - e) - cdb5=0x80 - ;; - ?) - usage - ;; -esac - -scsi -f $2 -s 100 -c "1b 0 0 $cdb3 $cdb4 $cdb5" - - - - Hewlett-Packard HP 35450A - - The boot message identifier for this drive is HP - HP35450A -A C620 type 1 removable SCSI - 2 Sequential-Access density code - 0x13 - - This is a DDS-1 tape drive. DDS-1 is the original DAT tape - format. - - Native capacity is 1.2GB. - - Data transfer rate is 160kB/s. - - Reported by: Mark Thompson - mark.a.thompson@pobox.com - - - - Hewlett-Packard HP 35470A - - The boot message identifier for this drive is HP - HP35470A 9 09 type 1 removable SCSI - 2 - - This is a DDS-1 tape drive. DDS-1 is the original DAT tape - format. - - Native capacity is 2GB when using 90m tapes. - - Data transfer rate is 183kB/s. - - The same mechanism is used in Hewlett-Packard's SureStore - 2000i - tape drive, C35470A DDS format DAT drive, C1534A DDS format DAT - drive, and HP C1536A DDS format DAT drive. - - Warning: Quality control on these drives - varies greatly. One FreeBSD core-team member has returned 5 of - these drives. None lasted more than 9 months. - - Reported by: David Dawes - dawes@rf900.physics.usyd.edu.au (9 09) - - - - - Hewlett-Packard HP 35480A - - The boot message identifier for this drive is HP - HP35480A 1009 type 1 removable SCSI - 2 Sequential-Access density code - 0x13. - - This is a DDS-DC tape drive. DDS-DC is DDS-1 with hardware - data compression. DDS-1 is the original DAT tape format. - - Native capacity is 2GB when using 90m tapes. It cannot handle - 120m tapes. This drive supports hardware data compression. - Please refer to the section on HP C1533A for the proper - switch settings. - - Data transfer rate is 183kB/s. - - This drive is used in Hewlett-Packard's SureStore 5000eU and - 5000i - tape drives and C35480A DDS format DAT drive.. - - This drive will occasionally hang during a tape eject - operation (mt offline). Pressing the front - panel button will eject the tape and bring the tape drive back to - life. - - WARNING: HP 35480-03110 only. On at least two occasions this - tape drive when used with FreeBSD 2.1.0, an IBM Server 320 and an - 2940W SCSI controller resulted in all SCSI disk partitions being - lost. The problem has not be analyzed or resolved at this - time. - - - - <ulink - url="http://www.sel.sony.com/SEL/ccpg/storage/tape/t5000.html">Sony SDT-5000</ulink> - - There are at least two significantly different models: one is - a DDS-1 and the other DDS-2. The DDS-1 version is - SDT-5000 3.02. The DDS-2 version is - SONY SDT-5000 327M. The DDS-2 version has a 1MB - cache. This cache is able to keep the tape streaming in almost - any circumstances. - - The boot message identifier for this drive is SONY - SDT-5000 3.02 type 1 removable SCSI - 2 Sequential-Access density code - 0x13 - - Native capacity is 4GB when using 120m tapes. This drive - supports hardware data compression. - - Data transfer rate is depends upon the model or the drive. The - rate is 630kB/s for the SONY SDT-5000 327M - while compressing the data. For the SONY SDT-5000 - 3.02, the data transfer rate is 225kB/s. - - In order to get this drive to stream, set the blocksize to 512 - bytes (mt blocksize 512) reported by Kenneth - Merry ken@ulc199.residence.gatech.edu. - - SONY SDT-5000 327M information reported by - Charles Henrich henrich@msu.edu. - - Reported by: &a.jmz; - - - - Tandberg TDC 3600 - - The boot message identifier for this drive is - TANDBERG TDC 3600 =08: type 1 - removable SCSI 2 - - This is a QIC tape drive. - - Native capacity is 150/250MB. - - This drive has quirks which are known and work around code is - present in the scsi tape device driver (&man.st.4;). - Upgrading the firmware to XXX version will fix the quirks and - provide SCSI 2 capabilities. - - Data transfer rate is 80kB/s. - - IBM and Emerald units will not work. Replacing the firmware - EPROM of these units will solve the problem. - - Reported by: &a.msmith; - - - - Tandberg TDC 3620 - - This is very similar to the Tandberg TDC 3600 - drive. - - Reported by: &a.joerg; - - - - Tandberg TDC 3800 - - The boot message identifier for this drive is - TANDBERG TDC 3800 =04Y Removable - Sequential Access SCSI-2 device - - This is a QIC tape drive. - - Native capacity is 525MB. - - Reported by: &a.jhs; - - - - Tandberg TDC 4222 - - The boot message identifier for this drive is - TANDBERG TDC 4222 =07 type 1 removable - SCSI 2 - - This is a QIC tape drive. - - Native capacity is 2.5GB. The drive will read all cartridges - from the 60 MB (DC600A) upwards, and write 150 MB (DC6150) - upwards. Hardware compression is optionally supported for the 2.5 - GB cartridges. - - This drives quirks are known and pre-compiled into the scsi - tape device driver (&man.st.4;) beginning with FreeBSD - 2.2-CURRENT. For previous versions of FreeBSD, use - mt to read one block from the tape, rewind the - tape, and then execute the backup program (mt fsr 1; mt - rewind; dump ...) - - Data transfer rate is 600kB/s (vendor claim with compression), - 350 KB/s can even be reached in start/stop mode. The rate - decreases for smaller cartridges. - - Reported by: &a.joerg; - - - - Wangtek 5525ES - - The boot message identifier for this drive is WANGTEK - 5525ES SCSI REV7 3R1 type 1 removable SCSI - 1 density code 0x11, 1024-byte - blocks - - This is a QIC tape drive. - - Native capacity is 525MB. - - Data transfer rate is 180kB/s. - - The drive reads 60, 120, 150, and 525MB tapes. The drive will - not write 60MB (DC600 cartridge) tapes. In order to overwrite 120 - and 150 tapes reliably, first erase (mt erase) - the tape. 120 and 150 tapes used a wider track (fewer tracks per - tape) than 525MB tapes. The extra width of the - previous tracks is not overwritten, as a result the new data lies - in a band surrounded on both sides by the previous data unless the - tape have been erased. - - This drives quirks are known and pre-compiled into the scsi - tape device driver (&man.st.4;). - - Other firmware revisions that are known to work are: - M75D - - Reported by: Marc van Kempen marc@bowtie.nl - REV73R1 Andrew Gordon - Andrew.Gordon@net-tel.co.uk - M75D - - - - Wangtek 6200 - - The boot message identifier for this drive is WANGTEK - 6200-HS 4B18 type 1 removable SCSI - 2 Sequential-Access density code - 0x13 - - This is a DDS-1 tape drive. - - Native capacity is 2GB using 90m tapes. - - Data transfer rate is 150kB/s. - - Reported by: Tony Kimball alk@Think.COM - - - - - * Problem drives - - - - - - - CDROM drives - - Contributed by &a.obrien;. 23 November - 1997. - - As mentioned in Jordan's - Picks Generally speaking those in The FreeBSD - Project prefer SCSI CDROM drives over IDE CDROM drives. - However not all SCSI CDROM drives are equal. Some feel the quality of - some SCSI CDROM drives have been deteriorating to that of IDE CDROM - drives. Toshiba used to be the favored stand-by, but many on the SCSI - mailing list have found displeasure with the 12x speed XM-5701TA as - its volume (when playing audio CDROMs) is not controllable by the - various audio player software. - - Another area where SCSI CDROM manufacturers are cutting corners is - adherence to the SCSI - specification. Many SCSI CDROMs will respond to multiple LUNs for its target - address. Known violators include the 6x Teac CD-56S 1.0D. - - - - * Other - - - -
- - - * Other - - - - * PCMCIA - - - - -
- - -