freebsd-nq/share/doc/handbook/hw.sgml
1995-12-11 15:09:13 +00:00

423 lines
18 KiB
Plaintext

<!-- $Id: hw.sgml,v 1.10 1995/12/03 00:17:57 jkh Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
-->
<chapt><heading>PC Hardware compatibility<label id="hw"></heading>
<p>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 commidity 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 a 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.
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 email to
<tt>doc@freebsd.org</tt>. Questions about supported hardware
should be directed to <tt>questions@freebsd.org</tt> (see
<ref id="eresources:mail" name="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.
<sect><heading>Sample Configurations<label id="hw:configs"></heading>
<p>The following list of sample hardware configurations by no means
constitutes an endorsement of a given hardware vendor or product by
<em>The FreeBSD Project</em>. 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.
<sect1><heading>Jordan's Picks</heading>
<p>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.
<sect2><heading>Motherboards</heading>
<p>The <htmlurl url="http://asustek.asus.com.tw/" name="ASUS">
<htmlurl url="http://asustek.asus.com.tw/FTP/ASUS/Info/Spec/pi-p55tp4xe.txt"
name="P55TP4XE">
motherboard appears to be a good choice for mid-to-high range Pentium
server and workstation systems. If you're really looking for performance,
be also sure to get the <htmlurl url="http://asustek.asus.com.tw/Products/TB/mem-0002.html" name="pipelined burst cache module">. I feel that it's worth
the extra cost. If you're looking for a 486 class motherboard, you might
also investigate ASUS's <htmlurl url="http://asustek.asus.com.tw/FTP/ASUS/Info/Spec/pvi-486sp3.txt" name="486SP3G"> offering.
NOTE: The Intel <htmlurl url="http://asustek.asus.com.tw/Products/TB/triton-intro.html" name="Triton"> chipset based motherboards do not offer memory
parity logic, making it almost impossible to detect when a memory error
has occurred. Those wishing to build highly fault-tolerant systems may
therefore want to wait for Intel's newest generation of motherboards
based on the Orion chipset or investigate ASUS's SiS chipset based
motherboard, the <htmlurl url="http://asustek.asus.com.tw/FTP/ASUS/Info/Spec/pi-p55sp4.txt" name="P55SP4">. I have no personal experience with this
motherboard, but have heard good things about it and will note that it
has the advantage of being available <em>now</em>.
<sect2><heading>Disk Controllers</heading>
<p>This one is a bit trickier, and while I used to recommend the
<htmlurl url="http://www.buslogic.com" name="Buslogic"> controllers
unilaterally for everything from ISA to PCI, now I tend to lean
towards the <htmlurl url="http://www.adaptec.com" name="Adaptec">
1542CF for ISA, Buslogic Bt747c for EISA and Adaptec 2940 for PCI.
I've currently heard nothing about Buslogic's new Bt-930 controller
but would welcome any reports on its performance.
<sect2><heading>Disk drives</heading>
<p>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 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.
<p>I do not currently see SCSI WIDE drives as a necessary expense unless
you're putting together an NFS or NEWS server that will be doing a lot
of multiuser disk I/O.
<sect2><heading>Video Cards</heading>
<p>If you can also afford to buy a commercial X server for $99 from
<htmlurl url="http://www.xinside.com/" name="X Inside"> then I
can heartily recommend the <htmlurl url="http://www.matrox.com/"
name="Matrox"> <htmlurl url="http://www.matrox.com/mgaweb/brochure.htm"
name="Millenium"> card. If free X servers are more to your
liking, you certainly can't go wrong with one of <htmlurl url="http://www.nine.com/" name="Number 9's"> cards. Their S3 Vision 868 and 968 based cards
(the 9FX series) are no slouches either, and are supported by
<htmlurl url="http://www.xfree86.org" name="XFree86">'s S3 server.
<sect2><heading>Monitors</heading>
<p>I have had very good luck with the <htmlurl url="http://cons3.sel.sony.com/SEL/ccpg/display/ms17se2.html"
name="Sony Multiscan 17SE 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,500 for a 21" 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, none are
both cheap and good!
<sect2><heading>Networking</heading>
<p>I can recommend the <htmlurl url="http://www.smc.com/" name="SMC">
Ultra 16 controller for any ISA application and the SMC EtherPower
or Compex ENET32 cards for any serious PCI based networking. Both of
the PCI cards are based around DEC's DC21041 ethernet controller
chip and other cards using it, such as the Zynx ZX342 or DEC DE435,
will generally work as well.
<p>If you're looking for high-speed serial networking solutions, then
<htmlurl url="http://www.digiboard.com/" name="Digi International">
makes the <htmlurl url="http://www.digiboard.com/prodprofiles/profiles-prices/arnetprofiles/sync570i.html" name="SYNC 570i"> series, with drivers now in
FreeBSD-current. <htmlurl url="http://www.etinc.com"
name="Emerging Technologies"> also manufactures a board with T1/E1
capabilities, using software they provide.
<sect2><heading>Audio</heading>
<p>I currently use the <htmlurl url="http://www.gravis.com/" name="Gravis">
Ultrasound MAX due to its high sound quality and full-duplex audio
capabilities (dual DMA channels). Support for Windows NT and OS/2 is
fairly anemic, however, so I'm not sure that I can recommend it as an
all-around card for a machine that will be running both FreeBSD and NT
or OS/2. In such a scenario, I might recommend the <htmlurl url="http://www.creaf.com/" name="Creative Labs"> AWE32 instead.
<sect><heading>Core/Processing<label id="hw:core"></heading>
<sect1><heading>Motherboards, busses, and chipsets</heading>
<sect2><heading>* ISA</heading>
<sect2><heading>* EISA</heading>
<sect2><heading>* VLB</heading>
<sect2><heading>PCI</heading>
<p><em>Contributed by &a.rgrimes;.<newline>25 April 1995.</em></p>
<p>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.
</p>
<p><descrip>
<tag>Mercury:</tag> 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.
<tag>Saturn-I <em>(ie, 82424ZX at rev 0, 1 or 2)</em>:</tag>
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.
<tag>Saturn-II <em>(ie, 82424ZX at rev 3 or 4)</em>:</tag>
Works fine, but many MB
manufactures leave out the external dirty bit
SRAM needed for write back operation. Work
arounds are either run 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).
<tag>Neptune:</tag> Can not 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''.
<tag>Triton:</tag> No known cache coherency or bus
master problems, chip set does not implement
parity checking. Workaround for parity issue.
Wait for Triton-II.
<tag>Triton-II:</tag> Unknown, not yet shipping.
</descrip>
</p>
<sect1><heading>* CPUs/FPUs</heading>
<sect1><heading>* Memory</heading>
<sect1><heading>* BIOS</heading>
<sect><heading>Input/Output Devices<label id="hw:io"></heading>
<sect1><heading>* Video cards</heading>
<sect1><heading>* Sound cards</heading>
<sect1><heading>Serial ports and multiport cards</heading>
<p>The <tt>sio</tt> 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 <tt>sio(4)</tt>
manual page for detailed technical documentation.
<sect2><heading>Digiboard PC/8</heading>
<p><em>Contributed by &a.awebster;.<newline>26 August
1995.</em>
Here is a config snippet from a machine with
digiboard PC/8 with 16550. It has 8 modems connected
to these 8 lines, and they work just great. Do not
forget to add <tt>options "COM_MULTIPORT"</tt> or it
will not work very well!
<tscreen><verb>
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
</verb></tscreen>
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.
<sect2><heading>Boca 16</heading>
<p><em>Contributed by &a.whiteside;.<newline>26 August
1995.</em>
The procedures to make a Boca 16 pord board with
FreeBSD are pretty straighforward, but you will need
a couple things to make it work:
<enum>
<item>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 <bf>not</bf> come with
multiport support enabled and you will need to add
a device entry for each port anyways.
</item>
<item>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.</item>
</enum>
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 <ref
id="kernelconfig" name="Kernel Configuration"> for
general procedurs. The following are the specifics
for the Boca 16 board and assume you are using the
kernel name MYKERNEL and editing with vi.
<enum>
<item>Add the line
<tscreen><verb>
options "COM_MULTIPORT"
</verb></tscreen>
to the config file.
</item>
<item>Where the current <tt>device sio
<em>xxx</em></tt> lines are, you will need to add
16 more devices. <em>Only the last device
includes the interrupt vector for the
board</em>. (See the <tt>sio(4)</tt> 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 hexidecimal from
the previous port, thus the 100h, 108h, 110h...
addresses.
<tscreen><verb>
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
</verb></tscreen>
The flags entry <em>must</em> be changed from
this example unless you are using the exact same
sio assignments. Flags are set according to
0x<em>MYY</em> where <em>M</em> indicates the
minor number of the master port (the last port on
a Boca 16) and <em>YY</em> 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,
<tscreen><verb>
flags 0x1005
</verb></tscreen>
indicates that the master port is sio16. If I
added another board and assigned sio17 through
sio28, the flags for all 16 ports on
<em>that</em> board would be 0x1C05, where 1C
indicates the minor number of the master port.
Do not change the 05 setting.</item>
<item>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)
<tscreen><verb>
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)
</verb></tscreen>
If the messages go by too fast to see, <tt>dmesg
&gt; more</tt> will show you the boot
messages.</item>
<item>Next, apprepriate entries in <tt>/dev</tt> for the devices
must be made using the <tt>/dev/MAKEDEV</tt>
script. After becoming root:
<tscreen>
# cd /dev<newline>
# ./MAKEDEV tty1<newline>
# ./MAKEDEV cua1<newline>
<em>(everything in between)</em><newline>
# ./MAKEDEV ttyg<newline>
# ./MAKEDEV cuag
</tscreen>
If you do not want or need callout devices for some
reason, you can dispense with making the <tt>cua*</tt>
devices.</item>
<item>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) <tt>echo at
&gt; ttyd*</tt> for each device you have
made. You <em>should</em> see the RX lights flash
for each working port.</item>
</enum>
<sect1><heading>* Parallel ports</heading>
<sect1><heading>* Modems</heading>
<sect1><heading>* Network cards</heading>
<sect1><heading>* Keyboards</heading>
<sect1><heading>* Mice</heading>
<sect1><heading>* Other</heading>
<sect><heading>Storage Devices<label id="hw:storage"></heading>
&esdi;
&scsi;
<sect1><heading>* Disk/tape controllers</heading>
<sect2><heading>* SCSI</heading>
<sect2><heading>* IDE</heading>
<sect2><heading>* Floppy</heading>
<sect1><heading>* Hard drives</heading>
<sect1><heading>* Tape drives</heading>
<sect1><heading>* CD-ROM drives</heading>
<sect1><heading>* Other</heading>
<sect1><heading>* Adding and reconfiguring disks</heading>
<sect1><heading>* Tapes and backups</heading>
<sect1><heading>* Serial ports</heading>
<sect1><heading>* Sound cards</heading>
<sect1><heading>* PCMCIA</heading>
<sect1><heading>* Other<label id="hw:other"></heading>