1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Which module is loaded for a given PCI and USB device?
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
13 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
21 <div class=
"title">Which module is loaded for a given PCI and USB device?
</div>
22 <div class=
"date">23rd January
2011</div>
23 <div class=
"body"><p>In the
24 <a href=
"http://packages.qa.debian.org/discover-data">discover-data
</a>
25 package in Debian, there is a script to report useful information
26 about the running hardware for use when people report missing
27 information. One part of this script that I find very useful when
28 debugging hardware problems, is the part mapping loaded kernel module
29 to the PCI device it claims. It allow me to quickly see if the kernel
30 module I expect is driving the hardware I am struggling with. To see
31 the output, make sure discover-data is installed and run
32 <tt>/usr/share/bug/discover-data
3>&
1</tt>. The relevant output on
33 one of my machines like this:
</p>
40 10de:
03f0 snd_hda_intel
49 <p>The code in question look like this, slightly modified for
50 readability and to drop the output to file descriptor
3:
</p>
53 if [ -d /sys/bus/pci/devices/ ] ; then
54 echo loaded pci modules:
56 cd /sys/bus/pci/devices/
58 if [ -d "$address/driver/module" ] ; then
59 module=`cd $address/driver/module ; pwd -P | xargs basename`
60 if grep -q "^$module " /proc/modules ; then
61 address=$(echo $address |sed s/
0000://)
62 id=`lspci -n -s $address | tail -n
1 | awk '{print $
3}'`
72 <p>Similar code could be used to extract USB device module
76 if [ -d /sys/bus/usb/devices/ ] ; then
77 echo loaded usb modules:
79 cd /sys/bus/usb/devices/
81 if [ -d "$address/driver/module" ] ; then
82 module=`cd $address/driver/module ; pwd -P | xargs basename`
83 if grep -q "^$module " /proc/modules ; then
84 address=$(echo $address |sed s/
0000://)
85 id=$(lsusb -s $address | tail -n
1 | awk '{print $
6}')
97 <p>This might perhaps be something to include in other tools as
101 <div class=
"tags">Tags:
<a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian
</a>,
<a href=
"http://people.skolelinux.org/pere/blog/tags/english">english
</a>.
</div>
119 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
121 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
123 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
125 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
127 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
129 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
131 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
133 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
135 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
137 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
139 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
146 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
148 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
150 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
152 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
154 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
156 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
158 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
160 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
162 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
164 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
166 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
168 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
175 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
177 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
179 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
181 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
183 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
185 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
187 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
189 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
191 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
193 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
195 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
197 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
204 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
206 <li><a href=
"http://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
217 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
13)
</a></li>
219 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
221 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
223 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
2)
</a></li>
225 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
12)
</a></li>
227 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
229 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian">debian (
54)
</a></li>
231 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
63)
</a></li>
233 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/digistan">digistan (
7)
</a></li>
235 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/english">english (
98)
</a></li>
237 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
13)
</a></li>
239 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
12)
</a></li>
241 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/intervju">intervju (
10)
</a></li>
243 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/kart">kart (
15)
</a></li>
245 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ldap">ldap (
8)
</a></li>
247 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/lenker">lenker (
4)
</a></li>
249 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
251 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
14)
</a></li>
253 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/norsk">norsk (
140)
</a></li>
255 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/nuug">nuug (
119)
</a></li>
257 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
259 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
24)
</a></li>
261 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/personvern">personvern (
46)
</a></li>
263 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
265 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rfid">rfid (
2)
</a></li>
267 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/robot">robot (
4)
</a></li>
269 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
271 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
23)
</a></li>
273 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
3)
</a></li>
275 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/standard">standard (
24)
</a></li>
277 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
1)
</a></li>
279 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
2)
</a></li>
281 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
9)
</a></li>
283 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/valg">valg (
6)
</a></li>
285 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/video">video (
22)
</a></li>
287 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
1)
</a></li>
289 <li><a href=
"http://people.skolelinux.org/pere/blog/tags/web">web (
17)
</a></li>
295 <p style=
"text-align: right">
296 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.4
</a>