]> pere.pagekite.me Git - homepage.git/blob - blog/Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html
Generated.
[homepage.git] / blog / Which_module_is_loaded_for_a_given_PCI_and_USB_device_.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html>
4 <head>
5 <title>Petter Reinholdtsen: Which module is loaded for a given PCI and USB device?</title>
6 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css">
7 </head>
8 <body>
9
10 <div class="title">
11 <h1>
12 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
13
14 </h1>
15
16 </div>
17
18
19 <div class="entry">
20 <div class="title">Which module is loaded for a given PCI and USB device?</div>
21 <div class="date">2011-01-23 00:20</div>
22 <div class="body">
23 <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>
34
35 <pre>
36 loaded modules:
37 10de:03eb i2c_nforce2
38 10de:03f1 ohci_hcd
39 10de:03f2 ehci_hcd
40 10de:03f0 snd_hda_intel
41 10de:03ec pata_amd
42 10de:03f6 sata_nv
43 1022:1103 k8temp
44 109e:036e bttv
45 109e:0878 snd_bt87x
46 11ab:4364 sky2
47 </pre>
48
49 <p>The code in question look like this, slightly modified for
50 readability and to drop the output to file descriptor 3:</p>
51
52 <pre>
53 if [ -d /sys/bus/pci/devices/ ] ; then
54 echo loaded pci modules:
55 (
56 cd /sys/bus/pci/devices/
57 for address in * ; do
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}'`
63 echo "$id $module"
64 fi
65 fi
66 done
67 )
68 echo
69 fi
70 </pre>
71
72 <p>Similar code could be used to extract USB device module
73 mappings:</p>
74
75 <pre>
76 if [ -d /sys/bus/usb/devices/ ] ; then
77 echo loaded usb modules:
78 (
79 cd /sys/bus/usb/devices/
80 for address in * ; do
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}')
86 if [ "$id" ] ; then
87 echo "$id $module"
88 fi
89 fi
90 fi
91 done
92 )
93 echo
94 fi
95 </pre>
96
97 <p>This might perhaps be something to include in other tools as
98 well.</p>
99 </div>
100
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>
102
103 </div>
104
105
106
107
108
109
110 <div id="sidebar">
111
112 <h2>Archive</h2>
113 <ul>
114
115 <li>2011
116 <ul>
117
118 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
119
120 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
121
122 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
123
124 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
125
126 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
127
128 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
129
130 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
131
132 <li><a href="http://people.skolelinux.org/pere/blog/archive/2011/08/">August (2)</a></li>
133
134 </ul></li>
135
136 <li>2010
137 <ul>
138
139 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
140
141 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
142
143 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
144
145 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
146
147 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
148
149 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
150
151 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
152
153 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
154
155 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
156
157 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
158
159 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
160
161 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
162
163 </ul></li>
164
165 <li>2009
166 <ul>
167
168 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
169
170 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
171
172 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
173
174 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
175
176 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
177
178 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
179
180 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
181
182 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
183
184 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
185
186 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
187
188 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
189
190 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
191
192 </ul></li>
193
194 <li>2008
195 <ul>
196
197 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
198
199 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
200
201 </ul></li>
202
203 </ul>
204
205
206
207 <h2>Tags</h2>
208 <ul>
209
210 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (13)</a></li>
211
212 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
213
214 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
215
216 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (2)</a></li>
217
218 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (11)</a></li>
219
220 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (52)</a></li>
221
222 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (64)</a></li>
223
224 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan">digistan (7)</a></li>
225
226 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (94)</a></li>
227
228 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (12)</a></li>
229
230 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (11)</a></li>
231
232 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju">intervju (10)</a></li>
233
234 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (15)</a></li>
235
236 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
237
238 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (4)</a></li>
239
240 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
241
242 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (13)</a></li>
243
244 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (131)</a></li>
245
246 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (118)</a></li>
247
248 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
249
250 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (21)</a></li>
251
252 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (42)</a></li>
253
254 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
255
256 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid">rfid (2)</a></li>
257
258 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (4)</a></li>
259
260 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
261
262 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (23)</a></li>
263
264 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (3)</a></li>
265
266 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (24)</a></li>
267
268 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (1)</a></li>
269
270 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (2)</a></li>
271
272 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (9)</a></li>
273
274 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (20)</a></li>
275
276 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (1)</a></li>
277
278 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (16)</a></li>
279
280 </ul>
281
282 </div>
283 </body>
284 </html>