Author: Kern Sibbald

# Configuring a Kernel for USB Support

## General

Apcupsd version 3.9.x (development version to be released as 3.10.1) provides support for USB UPSes on Linux systems. However at this time (August 2001) Linux kernels do not yet support the HIDDEV device that is used by apcupsd. If you have a kernel version 2.4.5 or later and you apply the appropriate Alan Cox patch, you will be able to enable USB support in apcupsd.

For kernel 2.4.5, you need patch ac12 or later. For later versions of the kernel, any ac patch should work.

## Downloading

The currently released kernel is version 2.4.7, which I tested and found to work, but had problems with Samba NMB services. If you don't need the most recent kernel, I recommend version 2.4.5. You can obtain the 2.4 kernels from: http://www.kernel.org/pub/linux/kernel/v2.4/.

You can obtain the Allen Cox patches from: http://www.kernel.org/pub/linux/kernel/people/alan/2.4/

## Building the Kernel

I provide here only a very brief explanation of the steps necessary to build your kernel.

     1. Download kernel from:
        http://www.kernel.org/pub/linux/kernel/v2.4/
        (I assume you get linux-2.4.5.tar.gz and that
         you put it into /usr/src)

     2. Download Alan Cox patch from:
        http://www.kernel.org/pub/linux/kernel/people/alan/2.4/
        (I assume you get patch-2.4.5-ac12.gz and that you
         put it into /usr/src)

     3. su root

     4. cd /usr/src

     5. Ensure that the directory linux does not exist,
        or if it is linked, remove the link or change the
        name.

     6. Unpack the kernel with:

        tar xvfz linux-2.4.5.tar.gz

     7. Unpack the patch with:

        gunzip patch-2.4.5-ac12.gz

     8. Move the kernel source into a different directory:

        mv linux linux-2.4.5

    	or

    	mv linux linux-2.4.5-ac12

     9. cd linux-2.4.5

    10. Apply the patch with:

        patch -p1 <../patch-2.4.5-ac12

        There should be no errors.

    11. make mrproper

    12. Find a valid configuration file, and
        make sure it has the following configuration
    	statements. If not, please add them:

        CONFIG_USB=m
        CONFIG_USB_LONG_TIMEOUT=y
        CONFIG_USB_LARGE_CONFIG=y
        CONFIG_USB_HID=m
        CONFIG_USB_HIDDEV=m

    13. make menuconfig  or   make xconfig (if you are running X)
        load a valid configuration file
        check the above values and ensure they are correct
        save config

    14. Check what you saved by editing ./config
        You can skip this if you have done kernel builds
    	before.

    15. make dep

    16. make clean

    17. make bzImage

    18. make modules

    19. make install

    21. make modules_install

    21. Update /etc/lilo.conf to include the new kernel.

    22. cd /etc

    23. lilo

    24. reboot

    25. Ensure that uhci and hid are loaded by
        doing cat /proc/modules

    	If not, load them by hand.

    	modprobe uhci
    	modprobe hid

### Disclaimer

I'm not at all a kernel expert so you are pretty much on your own here. Any corrections to these instructions would be welcome.