X-Git-Url: http://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/877b5822a9beb2f0baa286687fde8264adb05060..2dd35d1d62851ab01fd6df1483462219c4884416:/blog/archive/2011/01/index.html diff --git a/blog/archive/2011/01/index.html b/blog/archive/2011/01/index.html index 5adfea80e9..d97664cbb6 100644 --- a/blog/archive/2011/01/index.html +++ b/blog/archive/2011/01/index.html @@ -1313,6 +1313,104 @@ Det er eit godt produkt, brukt av mange og godt likt.»

+
+
+ Which module is loaded for a given PCI and USB device? +
+
+ 2011-01-23 00:20 +
+ +
+ +

In the +discover-data +package in Debian, there is a script to report useful information +about the running hardware for use when people report missing +information. One part of this script that I find very useful when +debugging hardware problems, is the part mapping loaded kernel module +to the PCI device it claims. It allow me to quickly see if the kernel +module I expect is driving the hardware I am struggling with. To see +the output, make sure discover-data is installed and run +/usr/share/bug/discover-data 3>&1. The relevant output on +one of my machines like this:

+ +
+loaded modules:
+10de:03eb i2c_nforce2
+10de:03f1 ohci_hcd
+10de:03f2 ehci_hcd
+10de:03f0 snd_hda_intel
+10de:03ec pata_amd
+10de:03f6 sata_nv
+1022:1103 k8temp
+109e:036e bttv
+109e:0878 snd_bt87x
+11ab:4364 sky2
+
+ +

The code in question look like this, slightly modified for +readability and to drop the output to file descriptor 3:

+ +
+if [ -d /sys/bus/pci/devices/ ] ; then
+    echo loaded pci modules:
+    (
+        cd /sys/bus/pci/devices/
+        for address in * ; do
+            if [ -d "$address/driver/module" ] ; then
+                module=`cd $address/driver/module ; pwd -P | xargs basename`
+                if grep -q "^$module " /proc/modules ; then
+                    address=$(echo $address |sed s/0000://)
+		    id=`lspci -n -s $address | tail -n 1 | awk '{print $3}'`
+                    echo "$id $module"
+                fi
+            fi
+        done
+    )
+    echo
+fi
+
+ +

Similar code could be used to extract USB device module +mappings:

+ +
+if [ -d /sys/bus/usb/devices/ ] ; then
+    echo loaded usb modules:
+    (
+        cd /sys/bus/usb/devices/
+        for address in * ; do
+            if [ -d "$address/driver/module" ] ; then
+                module=`cd $address/driver/module ; pwd -P | xargs basename`
+                if grep -q "^$module " /proc/modules ; then
+                    address=$(echo $address |sed s/0000://)
+                    id=$(lsusb -s $address | tail -n 1 | awk '{print $6}')
+                    if [ "$id" ] ; then
+                        echo "$id $module"
+                    fi
+                fi
+            fi
+        done
+    )
+    echo
+fi
+
+ +

This might perhaps be something to include in other tools as +well.

+ +
+
+ + + + Tags: debian, english. + +
+
+
+

RSS Feed

@@ -1325,7 +1423,7 @@ Det er eit godt produkt, brukt av mange og godt likt.»

  • 2011
  • @@ -1413,13 +1511,13 @@ Det er eit godt produkt, brukt av mange og godt likt.»

  • bootsystem (10)
  • -
  • debian (46)
  • +
  • debian (47)
  • debian edu (58)
  • digistan (7)
  • -
  • english (84)
  • +
  • english (85)
  • fiksgatami (1)