Chapter 3 Hardware compatibility

3.1. Does FreeBSD support architectures other than the x86?
3.2. What kind of hard drives does FreeBSD support?
3.3. Which SCSI controllers are supported?
3.4. Which CDROM drives are supported by FreeBSD?
3.5. Which CD-RW drives are supported by FreeBSD?
3.6. Does FreeBSD support ZIP drives?
3.7. Does FreeBSD support JAZ, EZ and other removable drives?
3.8. Which multi-port serial cards are supported by FreeBSD?
3.9. Does FreeBSD support my USB keyboard?
3.10. I have an unusual bus mouse. How do I set it up?
3.11. How do I use my PS/2 (``mouse port'' or ``keyboard'') mouse?
3.12. Is it possible to make use of a mouse in any way outside the X Window system?
3.13. How do I cut and paste text with mouse in the text console?
3.14. Does FreeBSD support any USB mice?
3.15. My mouse has a fancy wheel and buttons. Can I use them in FreeBSD?
3.16. Why does my wheel-equipped PS/2 mouse cause my mouse cursor to jump around the screen?
3.17. How do I use the mouse/trackball/touchpad on my laptop?
3.18. What types of tape drives are supported?
3.19. Does FreeBSD support tape changers?
3.20. Which sound cards are supported by FreeBSD?
3.21. Workarounds for no sound from es1370 with pcm driver?
3.22. Which network cards does FreeBSD support?
3.23. I do not have a math co-processor - is that bad?
3.24. What other devices does FreeBSD support?
3.25. Does FreeBSD support power management on my laptop?
3.26. Why does my Micron system hang at boot time?
3.27. Why does FreeBSD not recognize my Adaptec SCSI controller card?
3.28. How come FreeBSD cannot find my internal Plug & Play modem?
3.29. How do I get the boot: prompt to show on the serial console?
3.30. Why doesn't my 3Com PCI network card work with my Micron computer?
3.31. Does FreeBSD support Symmetric Multiprocessing (SMP)?
3.32. The boot floppy hangs on a system with an ASUS K7V motherboard. How do I fix this?

3.1. Does FreeBSD support architectures other than the x86?

Yes. FreeBSD currently runs on both Intel x86 and DEC (now Compaq) Alpha architectures. Interest has also been expressed in a port of FreeBSD to the SPARC architecture, join the mailing list if you are interested in joining that project. Most recent additions to the list of upcoming platforms are IA-64 and PowerPC, join the and/or mailing lists for more information. For general discussion on new architectures, join the mailing list.

If your machine has a different architecture and you need something right now, we suggest you look at NetBSD or OpenBSD.

3.2. What kind of hard drives does FreeBSD support?

FreeBSD supports EIDE and SCSI drives (with a compatible controller; see the next section), and all drives using the original ``Western Digital'' interface (MFM, RLL, ESDI, and of course IDE). A few ESDI controllers that use proprietary interfaces may not work: stick to WD1002/3/6/7 interfaces and clones.

3.3. Which SCSI controllers are supported?

See the complete list in the Handbook.

3.4. Which CDROM drives are supported by FreeBSD?

Any SCSI drive connected to a supported controller is supported.

The following proprietary CDROM interfaces are also supported:

  • Mitsumi LU002 (8bit), LU005 (16bit) and FX001D (16bit 2x Speed).

  • Sony CDU 31/33A

  • Sound Blaster Non-SCSI CDROM

  • Matsushita/Panasonic CDROM

  • ATAPI compatible IDE CDROMs

All non-SCSI cards are known to be extremely slow compared to SCSI drives, and some ATAPI CDROMs may not work.

As of 2.2 the FreeBSD CDROM from the FreeBSD Mall supports booting directly from the CD.

3.5. Which CD-RW drives are supported by FreeBSD?

FreeBSD supports any ATAPI-compatible IDE CD-R or CD-RW drive. For FreeBSD versions 4.0 and later, see the man page for burncd(8). For earlier FreeBSD versions, see the examples in /usr/share/examples/atapi.

FreeBSD also supports any SCSI CD-R or CD-RW drives. Install and use the cdrecord command from the ports or packages system, and make sure that you have the pass device compiled in your kernel.

3.6. Does FreeBSD support ZIP drives?

FreeBSD supports the SCSI ZIP drive out of the box, of course. The ZIP drive can only be set to run at SCSI target IDs 5 or 6, but if your SCSI host adapter's BIOS supports it you can even boot from it. It is not clear which host adapters support booting from targets other than 0 or 1, so you will have to consult your adapter's documentation if you would like to use this feature.

ATAPI (IDE) Zip drives are supported in FreeBSD 2.2.6 and later releases.

FreeBSD has contained support for Parallel Port Zip Drives since version 3.0. If you are using a sufficiently up to date version, then you should check that your kernel contains the scbus0, da0, ppbus0, and vp0 drivers (the GENERIC kernel contains everything except vp0). With all these drivers present, the Parallel Port drive should be available as /dev/da0s4. Disks can be mounted using mount /dev/da0s4 /mnt OR (for dos disks) mount_msdos /dev/da0s4 /mnt as appropriate.

Also check out this note on removable drives, and this note on ``formatting''.

3.7. Does FreeBSD support JAZ, EZ and other removable drives?

Apart from the IDE version of the EZ drive, these are all SCSI devices, so they should all look like SCSI disks to FreeBSD, and the IDE EZ should look like an IDE drive.

I am not sure how well FreeBSD supports changing the media out while running. You will of course need to dismount the drive before swapping media, and make sure that any external units are powered on when you boot the system so FreeBSD can see them.

See this note on ``formatting''.

3.8. Which multi-port serial cards are supported by FreeBSD?

There is a list of these in the Miscellaneous devices section of the handbook.

Some unnamed clone cards have also been known to work, especially those that claim to be AST compatible.

Check the sio(4) man page to get more information on configuring such cards.

3.9. Does FreeBSD support my USB keyboard?

USB device support was added to FreeBSD 3.1. However, it is still in preliminary state and may not always work as of version 3.2. If you want to experiment with the USB keyboard support, follow the procedure described below.

  1. Use FreeBSD 3.2 or later.

  2. Add the following lines to your kernel configuration file, and rebuild the kernel.

        device  uhci
        device  ohci
        device  usb
        device  ukbd
        options KBD_INSTALL_CDEV
    

    In versions of FreeBSD before 4.0, use this instead:

        controller      uhci0
        controller      ohci0
        controller      usb0
        controller      ukbd0
        options         KBD_INSTALL_CDEV
    
  3. Go to the /dev directory and create device nodes as follows:

        # cd /dev
        # ./MAKEDEV kbd0 kbd1
    
  4. Edit /etc/rc.conf and add the following lines:

        usbd_enable="YES"
        usbd_flags=""
    

After the system is rebooted, the AT keyboard becomes /dev/kbd0 and the USB keyboard becomes /dev/kbd1, if both are connected to the system. If there is the USB keyboard only, it will be /dev/ukbd0.

If you want to use the USB keyboard in the console, you have to explicitly tell the console driver to use the existing USB keyboard. This can be done by running the following command as a part of system initialization.

    # kbdcontrol -k /dev/kbd1 < /dev/ttyv0 > /dev/null

Note that if the USB keyboard is the only keyboard, it is accessed as /dev/kbd0, thus, the command should look like:

    # kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null

/etc/rc.i386 is a good place to add the above command.

Once this is done, the USB keyboard should work in the X environment as well without any special settings.

Hot-plugging and unplugging of the USB keyboard may not work quite right yet. It is a good idea to connect the keyboard before you start the system and leave it connected until the system is shutdown to avoid troubles.

See the ukbd(4) man page for more information.

3.10. I have an unusual bus mouse. How do I set it up?

FreeBSD supports the bus mouse and the InPort bus mouse from such manufactures as Microsoft, Logitech and ATI. The bus device driver is compiled in the GENERIC kernel by default in FreeBSD versions 2.X, but not included in version 3.0 or later. If you are building a custom kernel with the bus mouse driver, make sure to add the following line to the kernel config file

In FreeBSD 3.0 or before, add:

    device mse0 at isa? port 0x23c tty irq5 vector mseintr

In FreeBSD 3.X, the line should be:

    device mse0 at isa? port 0x23c tty irq5

And in FreeBSD 4.X and later, the line should read:

    device mse0 at isa? port 0x23c irq5

Bus mice usually comes with dedicated interface cards. These cards may allow you to set the port address and the IRQ number other than shown above. Refer to the manual of your mouse and the mse(4) man page for more information.

3.11. How do I use my PS/2 (``mouse port'' or ``keyboard'') mouse?

If you are running a post-2.2.5 version of FreeBSD, the necessary driver, psm, is included and enabled in the kernel. The kernel should detect your PS/2 mouse at boot time.

If you are running a previous but relatively recent version of FreeBSD (2.1.x or better) then you can simply enable it in the kernel configuration menu at installation time, otherwise later with -c at the boot: prompt. It is disabled by default, so you will need to enable it explicitly.

If you are running an older version of FreeBSD then you will have to add the following lines to your kernel configuration file and compile a new kernel.

In FreeBSD 3.0 or earlier, the line should be:

    device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr

In FreeBSD 3.1 or later, the line should be:

    device psm0 at isa? tty irq 12

In FreeBSD 4.0 or later, the line should be:

    device psm0 at atkbdc? irq 12

See the Handbook entry on configuring the kernel if you have no experience with building kernels.

Once you have a kernel detecting psm0 correctly at boot time, make sure that an entry for psm0 exists in /dev. You can do this by typing:

    # cd /dev; sh MAKEDEV psm0

when logged in as root.

3.12. Is it possible to make use of a mouse in any way outside the X Window system?

If you are using the default console driver, syscons, you can use a mouse pointer in text consoles to cut & paste text. Run the mouse daemon, moused, and turn on the mouse pointer in the virtual console:

    # moused -p /dev/xxxx -t yyyy
    # vidcontrol -m on

Where xxxx is the mouse device name and yyyy is a protocol type for the mouse. See the moused(8) man page for supported protocol types.

You may wish to run the mouse daemon automatically when the system starts. In version 2.2.1, set the following variables in /etc/sysconfig.

    mousedtype="yyyy"
    mousedport="xxxx"
    mousedflags=""

In versions 2.2.2 to 3.0, set the following variables in /etc/rc.conf.

    moused_type="yyyy"
    moused_port="xxxx"
    moused_flags=""

In 3.1 and later, assuming you have a PS/2 mouse, all you need to is add moused_enable="YES" to /etc/rc.conf.

In addition, if you would like to be able to use the mouse daemon on all virtual terminals instead of just console at boot-time, add the following to /etc/rc.conf.

    allscreens_flags="-m on"

Staring from FreeBSD 2.2.6, the mouse daemon is capable of determining the correct protocol type automatically unless the mouse is a relatively old serial mouse model. Specify auto the protocol to invoke automatic detection.

When the mouse daemon is running, access to the mouse needs to be coordinated between the mouse daemon and other programs such as the X Window. Refer to another section on this issue.

3.13. How do I cut and paste text with mouse in the text console?

Once you get the mouse daemon running (see previous section), hold down the button 1 (left button) and move the mouse to select a region of text. Then, press the button 2 (middle button) or the button 3 (right button) to paste it at the text cursor.

In versions 2.2.6 and later, pressing the button 2 will paste the text. Pressing the button 3 will ``extend'' the selected region of text. If your mouse does not have the middle button, you may wish to emulate it or remap buttons using moused options. See the moused(8) man page for details.

3.14. Does FreeBSD support any USB mice?

USB device support was added to FreeBSD 3.1. However, it is still in a preliminary state and may not always work as of version 3.2. If you want to experiment with the USB mouse support, follow the procedure described below.

  1. Use FreeBSD 3.2 or later.

  2. Add the following lines to your kernel configuration file, and rebuild the kernel.

        device  uhci
        device  ohci
        device  usb
        device  ums
    

    In versions of FreeBSD before 4.0, use this instead:

        controller        uhci0
        controller        ohci0
        controller        usb0
        device            ums0
    
  3. Go to the /dev directory and create a device node as follows:

        # cd /dev
        # ./MAKEDEV ums0
    
  4. Edit /etc/rc.conf and add the following lines:

        moused_enable="YES"
        moused_type="auto"
        moused_port="/dev/ums0"
        moused_flags=""
        usbd_enable="YES"
        usbd_flags=""
    

    See the previous section for more detailed discussion on moused.

  5. In order to use the USB mouse in the X session, edit XF86Config. If you are using XFree86 3.3.2 or later, be sure to have the following lines in the Pointer section:

        Device          "/dev/sysmouse"
        Protocol        "Auto"
    

    If you are using earlier versions of XFree86, be sure to have the following lines in the Pointer section:

        Device          "/dev/sysmouse"
        Protocol        "SysMouse"
    

Refer to another section on the mouse support in the X environment.

Hot-plugging and unplugging of the USB mouse may not work quite right yet. It is a good idea connect the mouse before you start the system and leave it connected until the system is shutdown to avoid trouble.

3.15. My mouse has a fancy wheel and buttons. Can I use them in FreeBSD?

The answer is, unfortunately, ``It depends''. These mice with additional features require specialized driver in most cases. Unless the mouse device driver or the user program has specific support for the mouse, it will act just like a standard two, or three button mouse.

For the possible usage of wheels in the X Window environment, refer to that section.

3.16. Why does my wheel-equipped PS/2 mouse cause my mouse cursor to jump around the screen?

The PS/2 mouse driver psm in FreeBSD versions 3.2 or earlier has difficulty with some wheel mice, including Logitech model M-S48 and its OEM siblings. Apply the following patch to /sys/i386/isa/psm.c and rebuild the kernel.

    Index: psm.c
    ===================================================================
    RCS file: /src/CVS/src/sys/i386/isa/Attic/psm.c,v
    retrieving revision 1.60.2.1
    retrieving revision 1.60.2.2
    diff -u -r1.60.2.1 -r1.60.2.2
    --- psm.c        1999/06/03 12:41:13 1.60.2.1
    +++ psm.c        1999/07/12 13:40:52 1.60.2.2
    @@ -959,14 +959,28 @@
         sc->mode.packetsize = vendortype[i].packetsize;
    
         /* set mouse parameters */
    +#if 0
    +    /*
    +     * A version of Logitech FirstMouse+ won't report wheel movement,
    +     * if SET_DEFAULTS is sent...  Don't use this command.
    +     * This fix was found by Takashi Nishida.
    +     */
         i = send_aux_command(sc->kbdc, PSMC_SET_DEFAULTS);
         if (verbose >= 2)
             printf("psm%d: SET_DEFAULTS return code:%04x\n", unit, i);
    +#endif
         if (sc->config & PSM_CONFIG_RESOLUTION) {
             sc->mode.resolution
                 = set_mouse_resolution(sc->kbdc,
    -                (sc->config & PSM_CONFIG_RESOLUTION) - 1);
    +                       (sc->config & PSM_CONFIG_RESOLUTION) - 1);
    +    } else if (sc->mode.resolution >= 0) {
    +        sc->mode.resolution
    +            = set_mouse_resolution(sc->kbdc, sc->dflt_mode.resolution);
    +    }
    +    if (sc->mode.rate > 0) {
    +        sc->mode.rate = set_mouse_sampling_rate(sc->kbdc, sc->dflt_mode.rate);
         }
    +    set_mouse_scaling(sc->kbdc, 1);
    
         /* request a data packet and extract sync. bits */
         if (get_mouse_status(sc->kbdc, stat, 1, 3) < 3) {

Versions later than 3.2 should be all right.

3.17. How do I use the mouse/trackball/touchpad on my laptop?

Please refer to the answer to the previous question. And check out this note on the Mobile Computing page.

3.18. What types of tape drives are supported?

FreeBSD supports SCSI and QIC-36 (with a QIC-02 interface). This includes 8-mm (aka Exabyte) and DAT drives.

Some of the early 8-mm drives are not quite compatible with SCSI-2, and may not work well with FreeBSD.

3.19. Does FreeBSD support tape changers?

FreeBSD 2.2 supports SCSI changers using the ch(4) device and the chio(1) command. The details of how you actually control the changer can be found in the chio(1) man page.

If you are not using AMANDA or some other product that already understands changers, remember that they only know how to move a tape from one point to another, so you need to keep track of which slot a tape is in, and which slot the tape currently in the drive needs to go back to.

3.20. Which sound cards are supported by FreeBSD?

FreeBSD supports the SoundBlaster, SoundBlaster Pro, SoundBlaster 16, Pro Audio Spectrum 16, AdLib and Gravis UltraSound sound cards. There is also limited support for MPU-401 and compatible MIDI cards. Cards conforming to the Microsoft Sound System specification are also supported through the pcm driver.

Note: This is only for sound! This driver does not support CDROMs, SCSI or joysticks on these cards, except for the SoundBlaster. The SoundBlaster SCSI interface and some non-SCSI CDROMS are supported, but you cannot boot off this device.

3.21. Workarounds for no sound from es1370 with pcm driver?

You can run the following command every time the machine booted up:

    # mixer pcm 100 vol 100 cd 100

3.22. Which network cards does FreeBSD support?

See the Ethernet cards section of the handbook for a more complete list.

3.23. I do not have a math co-processor - is that bad?

Note: This will only affect 386/486SX/486SLC owners - other machines will have one built into the CPU.



In general this will not cause any problems, but there are circumstances where you will take a hit, either in performance or accuracy of the math emulation code (see the section on FP emulation). In particular, drawing arcs in X will be VERY slow. It is highly recommended that you buy a math co-processor; it is well worth it.

Note: Some math co-processors are better than others. It pains us to say it, but nobody ever got fired for buying Intel. Unless you are sure it works with FreeBSD, beware of clones.

3.24. What other devices does FreeBSD support?

See the Handbook for the list of other devices supported.

3.25. Does FreeBSD support power management on my laptop?

FreeBSD supports APM on certain machines. Please look in the LINT kernel config file, searching for the APM keyword. Further information can be found in apm(4).

3.26. Why does my Micron system hang at boot time?

Certain Micron motherboards have a non-conforming PCI BIOS implementation that causes grief when FreeBSD boots because PCI devices do not get configured at their reported addresses.

Disable the ``Plug and Play Operating System'' flag in the BIOS to work around this problem. More information can be found at http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron

3.27. Why does FreeBSD not recognize my Adaptec SCSI controller card?

The newer AIC789x series Adaptec chips are supported under the CAM SCSI framework which made it's debut in 3.0. Patches against 2.2-STABLE are in ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/. A CAM-enhanced boot floppy is available at http://people.FreeBSD.org/~abial/cam-boot/. In both cases read the README before beginning.

3.28. How come FreeBSD cannot find my internal Plug & Play modem?

You will need to add the modem's PnP ID to the PnP ID list in the serial driver. To enable Plug & Play support, compile a new kernel with controller pnp0 in the configuration file, then reboot the system. The kernel will print the PnP IDs of all the devices it finds. Copy the PnP ID from the modem to the table in /sys/i386/isa/sio.c, at about line 2777. Look for the string SUP1310 in the structure siopnp_ids[] to find the table. Build the kernel again, install, reboot, and your modem should be found.

You may have to manually configure the PnP devices using the pnp command in the boot-time configuration with a command like

    pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8

to make the modem show.

3.29. How do I get the boot: prompt to show on the serial console?

  • Build a kernel with options COMCONSOLE.

  • Create /boot.config and place -P as the only text in the file.

  • Unplug the keyboard from the system.

  • See /usr/src/sys/i386/boot/biosboot/README.serial for information.

3.30. Why doesn't my 3Com PCI network card work with my Micron computer?

Certain Micron motherboards have a non-conforming PCI BIOS implementation that does not configure PCI devices at the addresses reported. This causes grief when FreeBSD boots.

To work around this problem, disable the ``Plug and Play Operating System'' flag in the BIOS.

More information on this problem is available at URL: http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron

3.31. Does FreeBSD support Symmetric Multiprocessing (SMP)?

SMP is supported in 3.0-STABLE and later releases only. SMP is not enabled in the GENERIC kernel, so you will have to recompile your kernel to enable SMP. Take a look at /sys/i386/conf/LINT to figure out what options to put in your kernel config file.

3.32. The boot floppy hangs on a system with an ASUS K7V motherboard. How do I fix this?

Go in to the BIOS setup and disable the ``boot virus protection''.

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.