Hardware Documentation Guide: hardware.hlp,v 1.10 1995/06/09 08:29:16 jkh Exp Table of Contents ----------------- 0. Document Conventions 1. Using UserConfig to change FreeBSD kernel settings 2. Default Configuration (GENERIC kernel) 3. LINT - other possible configurations. 4. Known Hardware Problems. ========================================================================= 0. Document Conventions -- -------------------- We have `underlined' text which represents user input with `-' symbols throughout this document to differentiate it from the machine output. 1. Using UserConfig to change FreeBSD kernel settings -- -------------------------------------------------- The UserConfig utility allows you to override various settings of the FreeBSD kernel before the system has booted. This allows you to make minor adjustments to the various drivers in the system without necessarily having to recompile the kernel. UserConfig is activated by specifying the `-c' flag at the initial boot prompt. For example: >> FreeBSD BOOT @ 0x10000: 640/7168 k of memory Use hd(1,a)/kernel to boot sd0 when wd0 is also installed. Usage: [[wd(0,a)]/kernel][-abcCdhrsv] Use ? for file list or press Enter for defaults Boot: -c -- This command causes the system to boot the default kernel ("/kernel") and the UserConfig utility to be started once the kernel is loaded into memory. The `-c' flag follows any of the other parameters you may need to provide for the system to boot properly. For example, to boot off the second of two SCSI drives installed and run UserConfig, you would type: Boot: sd(1,a)/kernel -c ----------------- As always, the kernel will report some information on your processor and how much memory your system has. Then UserConfig will be invoked and you will see the prompt: config> To see the list of commands that UserConfig accepts, you may type '?' and press [ENTER]. The help message looks something like this: Command Description ------- ----------- attach Return results of device attach ls List currently configured devices port Set device port (i/o address) irq Set device irq drq Set device drq (DMA Request) iomem Set device maddr (memory address) iosize Set device memory size flags Set device flags enable Enable device probe Return results of device probe disable Disable device (will not be probed) quit Exit this configuration utility help This message You may alter nearly all of the default settings present in the FreeBSD generic kernel. This includes reassigning IRQs, disabling troublesome devices (or drivers that conflict with the hardware your system has), setting special device flags, etc. The most common use of UserConfig is to adjust or disable a driver which is causing trouble. The "ls" command displays the current settings for all the drivers present in the booted kernel, and once you have located an entry of interest you may use the displayed device name to change its settings or even disable the driver completely. For example, to change the address of network adapter 'ed0' to the address 0xd4000, you would type config> iomem ed0 0xd4000 ----------------- To entirely disable a device driver you are not using, use the "disable" command. In this example, you would disable device `ie0' by typing: config> disable ie0 ----------- You can use the "ls" command to verify your changes and correct any other problems before continuing the boot process. Once you are happy with a given configuration you may type: "quit" This will cause the kernel to boot with the new settings you have chosen. Once you have a fully installed system (e.g. the `bin' distribution has been successfully extracted), any changes you make in UserConfig are permanently stored in the `/kernel' file on the root filesystem. This action is performed by the `dset' utility, which will ensure that these settings remain in effect until you replace the kernel with a new one. If you do not want your changes to be permanently stored like this, remove `dset' from the /etc/rc file before you make any changes. If you accidentally change a setting for a device that you did not mean to change, the safest thing to do is to reset the computer and start over. Do not allow the boot to proceed (e.g. do not type "quit") with bad settings as these may be permanently stored by dset and leave your system in a state where it will no longer run properly. We suggest as a general rule that you disable any drivers that are not used by your particular hardware configuration. There are known problems with certain device drivers (see section 4.0) that can cause conflicts with other devices if they're also not disabled. You should move or disable any device that resides at the same port or IRQ as a device you actually have! You can also remove drivers that are not needed by building yourself a custom kernel that contains only the device deviers which your system really needs (see section 6.0 of the FreeBSD.FAQ). If your system has sufficient free disk space to store and compile the kernel sources, this is the option we most highly recommend. 2. Default (GENERIC) Configuration -- ------------------------------- The following table contains a list of all of the devices that are present in the GENERIC kernel, which is the kernel (the operating system) that was placed on your computer during the FreeBSD installation process. (A compressed version of the GENERIC kernel is also used on the installation floppy diskettes.) The table describes the various parameters used by the driver to communicate with the hardware in your system. There are four parameters in the table, but not all are used by each device. They are: Port the starting I/O port used by the device, shown in hexadecimal. IOMem the lowest (or starting) memory address used by the device, also shown in hexadecimal. IRQ the interrupt the device uses to alert the driver to an event, given in decimal. DRQ the DMA (direct memory access) channel the device uses to move data to and from main memory, also given in decimal. If an entry in the table has `n/a' for the value, it means that the parameter does not apply to that device. A value of `dyn' means that the correct value should be determined automatically by the kernel when the system boots. FreeBSD GENERIC kernel: Port IRQ DRQ IOMem Description ---- --- --- ----- --------------------------------- fdc0 3f0 6 2 n/a Floppy disk controller wdc0 1f0 14 n/a n/a IDE/MFM/RLL disk controller wdc1 170 15 n/a n/a IDE/MFM/RLL disk controller ncr0 n/a n/a n/a n/a NCR PCI SCSI controller ahc0 n/a n/a n/a n/a Adaptec 294x PCI SCSI controller bt0 330 dyn dyn dyn Buslogic SCSI controller uha0 330 dyn 6 dyn Ultrastore 14f ahc1 dyn dyn dyn dyn Adaptec 274x/284x SCSI controller ahb0 dyn dyn dyn dyn Adaptec 174x SCSI controller aha0 330 dyn 5 dyn Adaptec 154x SCSI controller aic0 340 11 dyn dyn Adaptec 152x/AIC-6360 SCSI controller nca0 1f88 10 dyn dyn ProAudioSpectrum cards nca1 350 5 dyn dyn ProAudioSpectrum cards sea0 dyn 5 dyn c8000 Seagate ST01/02 8 bit controller wt0 300 5 1 dyn Wangtek and Archive QIC-02/QIC-36 mcd0 300 10 n/a n/a Mitsumi CD-ROM mcd1 340 11 n/a n/a Mitsumi CD-ROM matcd0 dyn n/a n/a n/a Matsushita/Panasonic CD-ROM scd0 230 n/a n/a n/a Sony CD-ROM sio0 3f8 4 n/a n/a Serial Port 0 (COM1) sio1 2f8 3 n/a n/a Serial Port 1 (COM2) sio2 3e8 5 n/a n/a Serial Port 2 (COM3) sio3 2e8 9 n/a n/a Serial Port 3 (COM4) lpt0 dyn 7 n/a n/a Printer Port 0 lpt1 dyn dyn n/a n/a Printer Port 1 lpt2 dyn dyn n/a n/a Printer Port 2 de0 DEC DC21x40 PCI based cards (including 21140 100bT cards) ed0 280 5 dyn d8000 WD & SMC 80xx; Novell NE1000 & NE2000; 3Com 3C503 ed1 300 5 dyn d8000 Same as ed0 eg0 310 5 dyn dyn 3Com 3C505 ep0 300 10 dyn dyn 3Com 3C509 ie0 360 7 dyn d0000 AT&T StarLAN 10 and EN100; 3Com 3C507; NI5210 ix0 300 10 dyn d0000 Intel EtherExpress cards le0 300 5 dyn d0000 Digital Equipment EtherWorks 2 and EtherWorks 3 lnc0 280 10 n/a dyn Lance/PCnet cards (Isolan, Novell NE2100, NE32-VL) lnc1 300 10 n/a dyn See lnc0 ze0 300 5 dyn d8000 IBM/National Semiconductor PCMCIA Ethernet Controller zp0 300 10 dyn d8000 3Com PCMCIA Etherlink III Ethernet Controller --- End of table --- If the hardware in your computer is not set to the same settings as those shown in this table and the item is not marked 'dyn', you will have to either reconfigure your hardware, or use UserConfig ('-c boot option) to reconfigure the kernel to match the way your hardware is currently set (see section 1.0). If the settings do not match, the kernel may be unable to locate or reliably access the devices in your system. 3. LINT - other possible configurations -- ------------------------------------ The following drivers are not in the GENERIC kernel but remain available to those who do not mind compiling a custom kernel (see section 6 of FreeBSD.FAQ). The LINT configuration file (/sys/i386/conf/LINT) also contains prototype entries for just about every device supported by FreeBSD and is a good general reference. The device names and a short description of each are listed below. The port numbers, etc, are not meaningful here since you will need to compile a custom kernel to gain access to these devices anyway and can thus adjust the addresses to match the hardware in your computer in the process. The LINT file contains prototype entries for all of the below which you can easily cut-and-paste into your own file (or simply copy LINT and edit it to taste): apm: Laptop Advanced Power Management (experimental) ctx: Cortex-I frame grabber cx: Cronyx/Sigma multiport sync/async cy: Cyclades high-speed serial driver el: 3Com 3C501 fe: Fujitsu MB86960A/MB86965A Ethernet cards fea: DEV DEFEA EISA FDDI adater fpa: DEC DEFPA PCI FDDI adapter gp: National Instruments AT-GPIB and AT-GPIB/TNT board gsc: Genius GS-4500 hand scanner gus: Gravis Ultrasound - Ultrasound, Ultrasound 16, Ultrasound MAX gusmax: Gravis Ultrasound MAX (currently broken) gusxvi: Gravis Ultrasound 16-bit PCM joy: Joystick labpc: National Instrument's Lab-PC and Lab-PC+ mpu: Roland MPU-401 stand-alone card mse: Logitech & ATI InPort bus mouse ports mss: Microsoft Sound System nic: Dr Neuhaus NICCY 3008, 3009 & 5000 ISDN cards opl: Yamaha OPL-2 and OPL-3 FM - SB, SB Pro, SB 16, ProAudioSpectrum pas: ProAudioSpectrum PCM and MIDI pca: PCM audio through your PC speaker psm: PS/2 mouse port rc: RISCom/8 multiport card sb: SoundBlaster PCM - SoundBlaster, SB Pro, SB16, ProAudioSpectrum sbmidi: SoundBlaster 16 MIDI interface sbxvi: SoundBlaster 16 spigot: Create Labs Video Spigot video-acquisition board uart: Stand-alone 6850 UART for MIDI wds: Western Digital WD7000 IDE --- end of list --- 4. Known Hardware Problems, Q & A: -- ------------------------------- Q: mcd0 keeps thinking that it has found a device and this stops my Intel EtherExpress card from working. A: Use the UserConfig utility (see section 1.0) and disable the probing of the mcd0 and mcd1 devices. Generally speaking, you should only leave the devices that you will be using enabled in your kernel. Q: The system finds my ed network card, but I keep getting device timeout errors. A: Your card is probably on a different IRQ from what is specified in the kernel configuration. The ed driver will no longer use the `soft' configuration by default (values entered using EZSETUP in DOS), but it will use the software configuration if you specify `?' in the IRQ field of your kernel config file. The reason for the change is because the ed driver used to read and try to use the soft configuration information even when the card was jumpered to use a hard configuration, and this caused problems. Either move the jumper on the card to a hard configuration setting (altering the kernel settings if necessary), or specify the IRQ as `-1' in UserConfig or `?' in your kernel config file. This will tell the kernel to use the soft configuration. Another possibility is that your card is at IRQ 9, which is shared by IRQ 2 and frequently a cause of problems (especially when you have a VGA card using 2! :). You should not use IRQ 2 or 9 if at all possible. Q: I go to boot from the hard disk for the first time after installing FreeBSD, but the Boot Manger prompt just prints `F?' and the boot menu each time but the boot won't go any further. A: The hard disk geometry was set incorrectly in the Partition editor when you installed FreeBSD. Go back into the partition editor and specify the actual geometry of your hard disk. You must reinstall FreeBSD again from the beginning with the correct geometry. If you are failing entirely in figuring out the correct geometry for your machine, here's a tip: Install a small DOS partition at the beginning of the disk and install FreeBSD after that. The install program will see the DOS partition and try to infer the correct geometry from it, which usually works. Another method is to boot DOS and use the `pfdisk' utility, which is provided in the ``tools/'' directory along with several others. You can also use the `-v' flag to FreeBSD to see what FreeBSD's idea of the "true geometry" is. Q: I have a Matsushita/Panasonic CD-ROM drive but it isn't recognized by the system, even if I use UserConfig to change the Port address to 630, which is what my card uses. A: Not all of the companies that sell the Matsushita/Panasonic CR-562 and CR-563 drives use the same I/O ports and interface that the matcd driver in FreeBSD expects. The only adapters that are supported at this time are those that are 100% compatible with the Creative Labs (SoundBlaster) host interface. See matcd.4 documentation for a list of host adapters that are known to work. Q: I'm trying to install from a tape drive but all I get is something like: st0(aha0:1:0) NOT READY csi 40,0,0,0 on the screen. Help! A: There's a limitation in the current sysinstall that the tape MUST be in the drive while sysinstall is started or it won't be detected. Try again with the tape in the drive the whole time. Q: I've installed FreeBSD onto my system, but it hangs when booting from the hard drive with the message: ``Changing root to /dev/sd0a''. A: This problem may occur in a system with a 3com 3c509 ethernet adaptor. The ep0 device driver appears to be sensitive to probes for other devices that also use address 0x300. Boot your FreeBSD system by power cycling the machine (turn off and on). At the ``Boot:'' prompt specify the ``-c''. This will invoke UserConfig (see Section 1. above). Use the ``disable'' command to disable the device probes for all devices at address 0x300 except the ep0 driver. On exit, your machine should successfully boot FreeBSD. Q: My system hangs during boot, right after the "fd0: [my floppy drive]" line. A: This is not actually a hang, simply a very LONG "wdc0" probe that often takes a long time to complete on certain systems (where there usually _isn't_ a WD controller). Be patient, your system will boot! To eliminate the problem, boot with the -c flag and eliminate the wdc0 device, or compile a custom kernel. [ Please add more hardware tips to this Q&A section! ]