sm-discuss AT lists.ibiblio.org
Subject: Public SourceMage Discussion List
List archive
[SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection
- From: Jason Flatt <jasonflatt AT wizard.com>
- To: sm-discuss AT lists.ibiblio.org
- Subject: [SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection
- Date: Sat, 28 Sep 2002 10:58:39 -0700
This was sent to the list a few months back.
---------- Forwarded Message ----------
Subject: [Sgl-Discuss] Hardware autodetection
Date: 09 Jul 2002 23:50:02 -0700
From: Aaron Brice <abrice2 AT cox.net>
To: sgl-discuss AT sourcemage.org
So I've been thinking lately that hardware autodetection and
configuration would be a handy thing. I remember installing SGL and
having trouble figuring out what kernel module my D-Link ethernet card
should use (Mandrake had always figured it out for me). I don't know if
this is still a problem with the new install ISO..
I don't think that getting kudzu or HardDrake to work with SMGL would be
very easy, and those two programs were about all I could find in the way
of hardware detection/configuration..
However, attached is a script that is a first attempt to duplicate some
of the functionality. It depends on lspci from the pciutils spells, and
the hwdata spell that I just submitted to sgl-spell-submit. It only
checks the PCI bus, but can give you the kernel modules needed for a
category of hardware.
For example, instead of asking the user what module to use for the
ethernet card, you can put:
MOD=$(devlist.sh --module --category NETWORK_ETHERNET)
For the alsa-driver spell, instead of using the dialog to let a user
select the audio module, you could do:
CARD=$(devlist.sh --module --category MULTIMEDIA_AUDIO)
Again, as far as I know this only works for stuff on the PCI bus. I
don't have any ISA cards or ISA slots for that matter, but I assume
lspci will not display ISA cards.
Before I go any further I'd like to see if anyone else has opinions on
the subject. Maybe kudzu would be the way to go, or maybe there's an
easy-to-configure autoconfiguration utility out there somewhere that I
wasn't able to find..
Aaron
-------------------------------------------------------
--
Jason Flatt
Section maintainer for printer
E-mail (remove the spaces): jasonflatt @ wizard . com
E-mail (remove the spaces): jflatt @ sourcemage . org
IRC: Oadae
#!/bin/sh
# CLASSFILE is the file containing the class id definitions
CLASSFILE=/usr/src/linux/include/linux/pci_ids.h
# MODFILE maps the device id's to linux modules
MODFILE=/usr/share/hwdata/pcitable
help() {
cat << EOF
SYNOPSIS
devlist.sh [--module] [--category CATEGORY]
DESCRIPTION
devlist.sh is much like lspci, it lists infomation about the PCI cards
in the computer. The main difference is that the required kernel
module is also listed, useful for auto-detecting which modules need to
be loaded.
OPTIONS
-m, --module
display *only* the kernel modules required for the specified
categories (or all modules if no category is specified).
Output is one module per line
-c, --category
Used to specify a certain type of PCI device. For example,
specifying --category NETWORK_ETHERNET will display only the
ethernet card, if found. The categories are found in
/usr/src/linux/include/pci_ids.h and start with PCI_CLASS_
-h, --help
This message
EOF
exit 1
}
depcheck() {
RETVAL=0
if [ ! -e /sbin/lspci ]; then
echo "Must cast the pciutils spell first"
RETVAL=1
fi
if [ ! -e $MODFILE ]; then
echo "Must cast the hwdata spell first"
RETVAL=1
fi
return $RETVAL
}
process_parameters() {
CATEGORY="ALL"
while [ -n "$1" ]; do
case $1 in
-m|--module) ONLYMODULE="yes"; shift 1; ;;
-c|--category) CATEGORY="$2"; shift 2; ;;
-h|--help) help ;;
*) help ;;
esac
done
}
# Main
if ! depcheck; then
exit 1
fi
process_parameters $*
DEVICES=$(lspci -n | awk '{ print $3$4 }')
for DEV in $DEVICES; do
CLASSID=$(echo $DEV | cut -d: -f1)
VENDORID=$(echo $DEV | cut -d: -f2)
DEVID=$(echo $DEV | cut -d: -f3)
CLASSNAME=$(grep $CLASSID $CLASSFILE | grep PCI_CLASS | awk '{ print $2 }' | sed -e "s/PCI_CLASS_//")
if [[ $CATEGORY != "ALL" && $CLASSNAME != $CATEGORY ]]; then
continue
fi
if [[ $ONLYMODULE != "yes" ]]; then
echo
echo "Device Category: $CLASSNAME"
echo -n "Vendor: "
grep "^0x$VENDORID 0x$DEVID" $MODFILE | sed -e "s/0x$VENDORID 0x$DEVID \".*\" \"//" | sed -e "s/\"//" | awk -F\| '{ print $1 }'
echo -n "Device: "
grep "^0x$VENDORID 0x$DEVID" $MODFILE | sed -e "s/0x$VENDORID 0x$DEVID \".*\" \"//" | sed -e "s/\"//" | awk -F\| '{ print $2 }'
echo -n "Module: "
fi
grep "^0x$VENDORID 0x$DEVID" $MODFILE | sed -e "s/0x$VENDORID 0x$DEVID \"//" | sed -e "s/\".*//"
done
-
[SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection,
Jason Flatt, 09/28/2002
-
Re: [SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection,
nealbirch, 09/29/2002
-
Re: [SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection,
Jason Flatt, 09/29/2002
- Re: [SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection, Aaron Brice, 09/29/2002
-
Re: [SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection,
Jason Flatt, 09/29/2002
-
Re: [SM-Discuss] Fwd: [Sgl-Discuss] Hardware autodetection,
nealbirch, 09/29/2002
Archive powered by MHonArc 2.6.24.