Google

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.