/[gentoo]/xml/htdocs/doc/en/usb-guide.xml
Gentoo

Diff of /xml/htdocs/doc/en/usb-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.1 Revision 1.20
1<?xml version='1.0' encoding="UTF-8"?> 1<?xml version='1.0' encoding="UTF-8"?>
2 2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/usb-guide.xml,v 1.20 2011/09/04 17:53:40 swift Exp $ -->
3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> 3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4 4
5<guide link="/doc/en/usb-guide.xml"> 5<guide>
6<title>Gentoo Linux USB Guide</title> 6<title>Gentoo Linux USB Guide</title>
7 7
8<author title="Author"> 8<author title="Author">
9 <mail link="fox2mike@gmail.com">Shyam Mani</mail> 9 <mail link="fox2mike@gentoo.org">Shyam Mani</mail>
10</author> 10</author>
11 11
12<abstract> 12<abstract>
13This document helps a user setup USB on a Gentoo system and configure various 13This document helps a user setup USB on a Gentoo system and configure various
14USB devices as well. 14USB devices as well.
15</abstract> 15</abstract>
16 16
17<!-- The content of this document is licensed under the CC-BY-SA license --> 17<!-- The content of this document is licensed under the CC-BY-SA license -->
18<!-- See http://creativecommons.org/licenses/by-sa/2.0 --> 18<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
19<license/> 19<license/>
20 20
21<version>1.0</version> 21<version>1.15</version>
22<date>2005-03-02</date> 22<date>2009-11-29</date>
23 23
24<chapter> 24<chapter>
25<title>Introduction</title> 25<title>Introduction</title>
26<section> 26<section>
27<title>What is USB?</title> 27<title>What is USB?</title>
28<body> 28<body>
29 29
30<p> 30<p>
31USB stands for Universal Serial Bus and is basically an external interface 31USB stands for Universal Serial Bus and is basically an external interface
32standard that enables communication between the computer and various other 32standard that enables communication between the computer and various other
33peripherals. Some of the most commonly used USB devices today are keyboards, 33peripherals. Some of the most commonly used USB devices today are keyboards,
34mice, pen drives, digital cameras, external CD &amp; DVD writers, printers etc. 34mice, pen drives, digital cameras, external CD &amp; DVD writers, printers etc.
35</p>
36
37<p> 35</p>
36
37<p>
38There are currently two versions of USB in use, i.e. USB 1.1 and USB 2.0. 38There are currently two versions of USB in use, i.e. USB 1.1 and USB 2.0.
39Since USB has always been backward compatible with its previous versions, 39Since USB has always been backward compatible with its previous versions,
40USB 2.0 is backwards compatible with USB 1.1. The latest USB devices are 40USB 2.0 is backwards compatible with USB 1.1. The latest USB devices are
41typically USB 2.0 compatible. USB 2.0 supports a maximum data transmission 41typically USB 2.0 compatible. USB 2.0 supports a maximum data transmission
42speed of 480 Mbps or 60 MBps and this is the major difference between the two 42speed of 480 Mbps or 60 MBps and this is the major difference between the two
43standards. Another advantage with USB is that the devices are all 43standards. Another advantage with USB is that the devices are all
44<e>hot-pluggable</e>, which means that you do not have to restart your system 44<e>hot-pluggable</e>, which means that you do not have to restart your system
45in order for you to be able to use these devices. 45in order for you to be able to use these devices.
46</p> 46</p>
47 47
48</body> 48</body>
49</section> 49</section>
50
51<section> 50<section>
52<title>A Technical Perspective</title> 51<title>A Technical Perspective</title>
53<body> 52<body>
54 53
55<p> 54<p>
56Before we go onto the exact configuration options in the kernel, it would 55Before we go onto the exact configuration options in the kernel, it would
57be apt to look at USB in a little more detail. If you're in a hurry or want 56be apt to look at USB in a little more detail. If you're in a hurry or want
58to skip this section, please go to <uri link="#kernel">Kernel Configuration</uri>. 57to skip this section, please go to <uri link="#kernel">Kernel
59</p> 58Configuration</uri>.
60
61<p> 59</p>
60
61<p>
62A USB system has a host controller, hubs, a <e>root hub</e> amongst others 62A USB system has a host controller, hubs, a <e>root hub</e> amongst others
63and can support up to 127 USB devices including the hubs. The host controller 63and can support up to 127 USB devices including the hubs. The host controller
64is nothing but the hardware interface between the USB device and the 64is nothing but the hardware interface between the USB device and the
65operating system. There are a couple of HCI (Host Controller Interface) 65operating system. There are a couple of HCI (Host Controller Interface)
66in use today and they are the OHCI (Open HCI) by Compaq, UHCI (Universal HCI) 66in use today and they are the OHCI (Open HCI) by Compaq, UHCI (Universal HCI)
67and EHCI (Enhanced HCI), both from Intel. The OHCI/UHCI are the two industry 67and EHCI (Enhanced HCI), both from Intel. The OHCI/UHCI are the two industry
68standard USB 1.1 interfaces whereas the EHCI is for USB 2.0. 68standard USB 1.1 interfaces whereas the EHCI is for USB 2.0.
69</p> 69</p>
70 70
71<p> 71<p>
72The hardware vendor provides an interface for the programmer that allows 72The hardware vendor provides an interface for the programmer that allows
73the system to interact with the hardware and this is called the HCD or Host 73the system to interact with the hardware and this is called the HCD or Host
74Controller Device. It is through this HCD that the device interacts with the 74Controller Device. It is through this HCD that the device interacts with the
75system software. The following diagram should make things easier to comprehend. 75system software. The following diagram should make things easier to comprehend.
76</p> 76</p>
77 77
78<pre caption="General USB Architecture"> 78<pre caption="General USB Architecture">
79<comment>(Software consists of other components as well like the device driver, but 79<comment>(Software consists of other components as well like the device driver, but
80 for the sake of simplicity, they are not shown)</comment> 80for the sake of simplicity, they are not shown)</comment>
81 81
82 + ---- Hardware ---- + ---- Software ---- + 82 + ---- Hardware ---- + ---- Software ---- +
83 | | | 83 | | |
84 | [USB Dev] -+-> {EHCI} -+---> ( EHCD ) | 84 | [USB Dev] -+-> {EHCI} -+---> ( EHCD ) |
85 | | | | User 85 | | | | User
86 | `-> {UHCI} -+---> ( UHCD ) | 86 | `-> {UHCI} -+---> ( UHCD ) |
87 | | | 87 | | |
88 + ---- Hardware ---- + ---- Software ---- + 88 + ---- Hardware ---- + ---- Software ---- +
89
90</pre> 89</pre>
91 90
92<p> 91<p>
93A USB device can either use a custom driver or use one already present in 92A USB device can either use a custom driver or use one already present in
94the system and this is based on the concept of a device <e>class</e>. This 93the system and this is based on the concept of a device <e>class</e>. This
95means that if a device belongs to a certain <e>class</e>, then other devices 94means that if a device belongs to a certain <e>class</e>, then other devices
96belonging to the same <e>class</e> can make use of the same device driver. 95belonging to the same <e>class</e> can make use of the same device driver.
97Some of these <e>classes</e> are the USB HID (Human Interface Devices) class 96Some of these <e>classes</e> are the USB HID (Human Interface Devices) class
98which covers input devices like keyboards and mice, the USB Mass Storage 97which covers input devices like keyboards and mice, the USB Mass Storage
99devices class which covers devices like pen drives, digital cameras, audio 98devices class which covers devices like pen drives, digital cameras, audio
100players etc and the USB CDC (Communication Devices Class) which essentially 99players etc and the USB CDC (Communication Devices Class) which essentially
101covers USB modems and similar devices. 100covers USB modems and similar devices.
102</p> 101</p>
103 102
104</body> 103</body>
105</section> 104</section>
106 105<section>
107<section id="#lspci">
108<title>What's on your machine?</title> 106<title>What's on your machine?</title>
109<body> 107<body>
110 108
111<p> 109<p>
112It is very simple to find out whether your machine has USB 2.0 support or not. 110It is very simple to find out whether your machine has USB 2.0 support or not.
113We make use of the <c>lspci</c> command for this purpose. 111We make use of the <c>lspci</c> command for this purpose.
114</p> 112</p>
115 113
116<note> 114<note>
117The <c>lspci</c> tool is a part of the <c>sys-apps/pciutils</c> package. If 115The <c>lspci</c> tool is a part of the <c>sys-apps/pciutils</c> package. If
118you do not have this installed, please <c>emerge pciutils</c>. Please note 116you do not have this installed, please <c>emerge pciutils</c>. Please note
119that you have to be root while running the <c>lspci</c> command. 117that you have to be root while running the <c>lspci</c> command.
120</note> 118</note>
121 119
122<pre caption="Various lspci outputs"> 120<pre caption="Various lspci outputs">
123<comment>(In system that is USB 1.1 compliant, note the UHCI only)</comment> 121<comment>(In system that is USB 1.1 compliant, note the UHCI only)</comment>
13200:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01) (prog-if 00 [UHCI]) 13000:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01) (prog-if 00 [UHCI])
13300:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01) (prog-if 20 [EHCI]) 13100:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01) (prog-if 20 [EHCI])
134</pre> 132</pre>
135 133
136<p> 134<p>
137So using the <c>lspci</c> command, we can find out if the system supports 135So using the <c>lspci</c> command, we can find out if the system supports
138USB 2.0. This is useful as we will be enabling the corresponding options in 136USB 2.0. This is useful as we will be enabling the corresponding options in
139the kernel. 137the kernel.
140</p> 138</p>
141 139
142</body> 140</body>
143</section> 141</section>
148<section> 146<section>
149<title>Getting the kernel</title> 147<title>Getting the kernel</title>
150<body> 148<body>
151 149
152<p> 150<p>
153First emerge the kernel sources of your choice. Here we'll use the 151First emerge the kernel sources of your choice. Here we'll use the
154<c>gentoo-dev-sources</c> (for 2.6.x) and <c>gentoo-sources</c> (for 2.4.x). 152<c>gentoo-sources</c>. For more information on the various kernel sources
155For more information on the various kernel sources available on Portage, 153available on Portage, please look up the <uri
156please look up the <uri link="/doc/en/gentoo-kernel.xml">Gentoo Linux Kernel Guide</uri>. 154link="/doc/en/gentoo-kernel.xml">Gentoo Linux Kernel Guide</uri>.
157</p> 155</p>
158 156
159<pre caption="Getting the kernel sources"> 157<pre caption="Getting the kernel sources">
160<comment>(For 2.6.x)</comment>
161# <i> emerge gentoo-dev-sources</i>
162<comment>(For 2.4.x)</comment>
163# <i> emerge gentoo-sources</i> 158# <i>emerge gentoo-sources</i>
164</pre> 159</pre>
165 160
166<p> 161<p>
167Now, lets get on with the task of configuring the kernel. 162Now, lets get on with the task of configuring the kernel.
168</p> 163</p>
169 164
170<pre caption="Heading over to the source"> 165<pre caption="Heading over to the source">
171# <i> cd /usr/src/linux</i> 166# <i>cd /usr/src/linux</i>
172# <i> make menuconfig</i> 167# <i>make menuconfig</i>
173</pre> 168</pre>
174 169
175<note> 170<note>
176The above example assumes that <path>/usr/src/linux</path> symlink points to 171The above example assumes that <path>/usr/src/linux</path> symlink points to
177the kernel sources you want to use. Please ensure the same before proceeding. 172the kernel sources you want to use. Please ensure the same before proceeding.
178</note> 173</note>
179 174
180</body> 175</body>
181</section> 176</section>
182 177<section>
183<section id="2.6.xconfig">
184<title>Config options for the 2.6.x kernel</title> 178<title>Config options for the kernel</title>
185<body> 179<body>
186 180
187<p> 181<p>
188Now we will look at some of the options we will have to enable in the 2.6 182Now we will look at some of the options we will have to enable in the kernel to
189kernel to ensure proper USB support for our devices. If you are using a 2.4 183ensure proper USB support for our devices.
190kernel, please proceed with <uri link="#2.4.xconfig">Config options for the
1912.4.x kernel</uri>.
192</p> 184</p>
193 185
194<note> 186<note>
195Examples in this document will show configuration options for basic USB 187Examples in this document will show configuration options for basic USB
196support as well as those needed commonly, for example a USB mass storage 188support as well as those needed commonly, for example a USB mass storage
197device (most cameras and USB pen drives). If you have a specific USB device 189device (most cameras and USB pen drives). If you have a specific USB device
198that needs to be configured, please look up your device's manual or search 190that needs to be configured, please look up your device's manual or search
199online to see if that device has support built-in into the kernel or custom 191online to see if that device has support built-in into the kernel or custom
200drivers that you can use. Please note that for the sake of ease, all examples 192drivers that you can use. Please note that for the sake of ease, all examples
201have the options compiled into the kernel. If you would like to have a modular 193have the options compiled into the kernel. If you would like to have a modular
202kernel, ensure that you note down the various modules and adjust your config 194kernel, ensure that you note down the various modules and adjust your config
203files accordingly. 195files accordingly.
204</note> 196</note>
205 197
206<pre caption="make menuconfig options for 2.6 kernels"> 198<pre caption="make menuconfig options">
207Device Drivers ---&gt; 199Device Drivers ---&gt;
208 SCSI device support ---&gt; 200 SCSI device support ---&gt;
209 201
210<comment>(Although SCSI will be enabled automatically when selecting USB Mass Storage, we need to enable disk support.)</comment> 202<comment>(Although SCSI will be enabled automatically when selecting USB Mass Storage,
203we need to enable disk support.)</comment>
211--- SCSI support type (disk, tape, CD-ROM) 204--- SCSI support type (disk, tape, CD-ROM)
212&lt;*&gt; SCSI disk support 205&lt;*&gt; SCSI disk support
213 206
214<comment>(Then move back a level and go into USB support)</comment> 207<comment>(Then move back a level and go into USB support)</comment>
215USB support ---&gt; 208USB support ---&gt;
216 209
217<comment>(This is the root hub and is required for USB support. If you'd like to compile this as a module,</comment> 210<comment>(This is the root hub and is required for USB support.
218<comment> it will be called usbcore.)</comment> 211If you'd like to compile this as a module, it will be called usbcore.)</comment>
219&lt;*&gt; Support for Host-side USB 212&lt;*&gt; Support for Host-side USB
220
221<comment>(Enable this option to see your USB devices in /proc/bus/usb. This is recommended.)</comment>
222 [*] USB device filesystem
223 213
224<comment>(Select at least one of the HCDs. If you are unsure, picking all is fine.)</comment> 214<comment>(Select at least one of the HCDs. If you are unsure, picking all is fine.)</comment>
225--- USB Host Controller Drivers 215--- USB Host Controller Drivers
226&lt;*&gt; EHCI HCD (USB 2.0) support 216&lt;*&gt; EHCI HCD (USB 2.0) support
227&lt; &gt; OHCI HCD support 217&lt; &gt; OHCI HCD support
228&lt;*&gt; UHCI HCD (most Intel and VIA) support 218&lt;*&gt; UHCI HCD (most Intel and VIA) support
229 219
230<comment>(Moving a little further down, we come to CDC and mass storage.)</comment> 220<comment>(Moving a little further down, we come to CDC and mass storage.)</comment>
231&lt; &gt; USB Modem (CDC ACM) support 221&lt; &gt; USB Modem (CDC ACM) support
232&lt;*&gt; USB Printer support 222&lt;*&gt; USB Printer support
233&lt;*&gt; USB Mass Storage support 223&lt;*&gt; USB Mass Storage support
234 [*] USB Mass Storage Write-Protected Media Detection (EXPERIMENTAL)
235
236<comment>(And then the HID bits. You have to select HID input support if you have a USB</comment>
237<comment> keyboard, mouse, joystick or any other USB input device)</comment>
238--- USB Input Devices
239&lt;*&gt; USB Human Interface Device (full HID) support
240 [*] HID input layer support
241 224
242<comment>(If you have a USB Network Card like the RTL8150, you'll need this)</comment> 225<comment>(If you have a USB Network Card like the RTL8150, you'll need this)</comment>
243USB Network Adapters ---> 226USB Network Adapters --->
244 &lt;*&gt; USB RTL8150 based ethernet device support (EXPERIMENTAL) 227 &lt;*&gt; USB RTL8150 based ethernet device support (EXPERIMENTAL)
245
246<comment>(If you have a serial to USB converter like the Prolific 2303, you'll need this)</comment>
247USB Serial Converter support --->
248 &lt;*&gt; USB Serial Converter support
249 &lt;*&gt; USB Prolific 2303 Single Port Serial Driver (NEW)
250</pre>
251
252<p>
253Now that your options are set, you can (re)compile the kernel and USB support
254should be functional once you reboot into the new kernel. You can now proceed
255to <uri link="#postkern">Seeing USB at work</uri> and see if everything is
256working as it should.
257</p>
258</body>
259</section>
260
261<section id="2.4.xconfig">
262<title>Config options for the 2.4.x kernel</title>
263<body>
264
265<p>
266We will look at the options the we will have to enable in the 2.4 kernel to
267ensure proper USB support for our devices. If you are using a 2.6 kernel,
268please look at <uri link="#2.6.xconfig">Config options for the 2.6.x
269kernel</uri>.
270</p>
271
272<note>
273Examples in this document will show configuration options for basic USB
274support as well as those needed commonly, for example a USB mass storage
275device (most cameras and USB pen drives). If you have a specific USB device
276that needs to be configured, please look up your device's manual or search
277online to see if that device has support built-in into the kernel or custom
278drivers that you can use. Please note that for the sake of ease, all examples
279have the options compiled into the kernel. If you would like to have a modular
280kernel, ensure that you note down the various modules and adjust your config
281files accordingly.
282</note>
283
284<pre caption="make menuconfig options for 2.4 kernels">
285<comment>(This immediate config is only for those who have USB input devices. Input</comment>
286<comment> core support is needed by USB HID later.)</comment>
287Input core support ---&gt;
288 &lt;*&gt; Input core support
289 &lt; &gt; Keyboard support
290 &lt; &gt; Mouse support
291 &lt; &gt; Event interface support
292
293USB support ---&gt;
294
295<comment>(This is the root hub and is required for USB support. If you'd like to compile this as a module,</comment>
296<comment> it will be called usbcore.o)</comment>
297&lt;*&gt; Support for USB
298
299<comment>(Enable this option to see your USB devices in /proc/bus/usb. This is recommended.)</comment>
300 [*] Preliminary USB device filesystem
301
302<comment>(Select at least one of the HCDs. If you are unsure, picking all is fine.)</comment>
303--- USB Host Controller Drivers
304&lt;*&gt; UHCI Alternate Driver (JE) support
305&lt; &gt; OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support
306
307<comment>(This is the device section. Select only what you need.)</comment>
308--- USB Device Class drivers
309&lt; &gt; USB Audio support
310&lt;*&gt; USB Mass Storage support
311&lt; &gt; USB Modem (CDC ACM) support
312&lt;*&gt; USB Printer support
313
314<comment>(Followed by the HID section. This is needed if you have an USB based input device.)</comment>
315--- USB Human Interface Devices (HID)
316&lt;*&gt; USB Human Interface Device (full HID) support
317 [*] HID input layer support
318 228
319<comment>(If you have a serial to USB converter like the Prolific 2303, you'll need this)</comment> 229<comment>(If you have a serial to USB converter like the Prolific 2303, you'll need this)</comment>
320USB Serial Converter support ---> 230USB Serial Converter support --->
321 &lt;*&gt; USB Serial Converter support 231 &lt;*&gt; USB Serial Converter support
322 &lt;*&gt; USB Prolific 2303 Single Port Serial Driver (NEW) 232 &lt;*&gt; USB Prolific 2303 Single Port Serial Driver (NEW)
323</pre> 233</pre>
324 234
325<p> 235<p>
236If you have a USB keyboard, mouse, joystick, or any other input device, you need
237to enable HID support. Go back one level to "Device drivers" and enable HID
238support as shown:
239</p>
240
241<pre caption="Enabling HID support">
242Device Drivers ---&gt;
243 [*] HID Devices ---&gt;
244 &lt;*&gt; USB Human Interface Device (full HID) support
245</pre>
246
247<p>
326Now that the options are set, you can (re)compile the kernel and USB support 248Now that your options are set, you can (re)compile the kernel and USB support
327should be functional once you reboot into the new kernel. 249should be functional once you reboot into the new kernel. You can now proceed
250to <uri link="#postkern">Seeing USB at work</uri> and see if everything is
251working as it should.
328</p> 252</p>
253
329</body> 254</body>
330</section> 255</section>
331</chapter> 256</chapter>
332 257
333<chapter id="postkern"> 258<chapter id="postkern">
335<section> 260<section>
336<title>dmesg is your friend!</title> 261<title>dmesg is your friend!</title>
337<body> 262<body>
338 263
339<p> 264<p>
340The time has finally come to play with those USB devices :) So let's get 265The time has finally come to play with those USB devices :) So let's get
341started. In this chapter, we'll see how the system responds to various USB 266started. In this chapter, we'll see how the system responds to various USB
342devices. We'll start by plugging in a USB 512 MB Memory Stick/Pen Drive. You 267devices. We'll start by plugging in a USB 512 MB Memory Stick/Pen Drive. You
343could use some other similar mass storage device. We will primarily use 268could use some other similar mass storage device. We will primarily use
344<c>dmesg</c> to see what is happening and how the system responds to the 269<c>dmesg</c> to see what is happening and how the system responds to the
345device. 270device.
346</p> 271</p>
347 272
348<note> 273<note>
349<c>dmesg</c> will generally give a lot of output up front before coming to the 274<c>dmesg</c> will generally give a lot of output up front before coming to the
350info we need, as it reads the kernel ring buffer that has all the boot up 275info we need, as it reads the kernel ring buffer that has all the boot up
351messages as well. The output in the following examples have only the relevant 276messages as well. The output in the following examples have only the relevant
352portion(s) ans extra spaces in between to enable better readability. 277portion(s) and extra spaces in between to enable better readability. If needed
278please use a <c>dmesg | more</c> or <c>dmesg | less</c> to see the output
279better in your system.
353</note> 280</note>
354 281
355<pre caption="dmesg output for Memory Stick"> 282<pre caption="dmesg output for Memory Stick">
356<comment>(Plug in Memory Stick into available USB port and then..)</comment> 283<comment>(Plug in Memory Stick into available USB port and then..)</comment>
357# <i>dmesg</i> 284# <i>dmesg | less</i>
358 285
359<comment>(The device is picked up as a USB 1.1 and allocated an address. Also says what HCD it is using.)</comment> 286<comment>(The device is picked up as a USB 1.1 and allocated an address.
287Also says what HCD it is using.)</comment>
360usb 1-1: new full speed USB device using uhci_hcd and address 2 288usb 1-1: new full speed USB device using uhci_hcd and address 2
361 289
362<comment>(SCSI emulation automatically kicks in)</comment> 290<comment>(SCSI emulation automatically kicks in)</comment>
363scsi0 : SCSI emulation for USB Mass Storage devices 291scsi0 : SCSI emulation for USB Mass Storage devices
364usb-storage: device found at 2 292usb-storage: device found at 2
383<comment>(When the device is disconnected, the system acknowledges the same)</comment> 311<comment>(When the device is disconnected, the system acknowledges the same)</comment>
384usb 1-1: USB disconnect, address 2 312usb 1-1: USB disconnect, address 2
385</pre> 313</pre>
386 314
387<p> 315<p>
388Once the device is connected and mounted, you can access it like a normal hard 316Once the device is connected and mounted, you can access it like a normal hard
389disk. Usual operations like <c>cp</c>, <c>mv</c>, <c>rm</c> etc work fine. You 317disk. Usual operations like <c>cp</c>, <c>mv</c>, <c>rm</c>, etc work fine. You
390could also create a filesystem on the USB stick/format it. 318could also create a filesystem on the USB stick/format it.
391</p> 319</p>
392 320
393<pre caption="Accessing the Memory Stick"> 321<pre caption="Accessing the Memory Stick">
394# <i>mount /dev/sda1 /mnt/usb</i> 322# <i>mount /dev/sda1 /mnt/usb</i>
399none 189M 0 189M 0% /dev/shm 327none 189M 0 189M 0% /dev/shm
400/dev/sda1 490M 34M 457M 7% /mnt/usb 328/dev/sda1 490M 34M 457M 7% /mnt/usb
401</pre> 329</pre>
402 330
403<note> 331<note>
404Digital cameras can be accessed the same way as memory sticks. I have a Nikon 332Digital cameras can be accessed the same way as memory sticks. I have a Nikon
405Coolpix 5200 and this is the way I access it. The camera is set to behave like 333Coolpix 5200 and this is the way I access it. Cameras these days usually have
406a USB mass storage device (as against PTP mode, which most cameras have these 334two modes to transfer pictures; USB mass storage and PTP (Picture Transfer
407days) and the procedure is exactly the same, because of which I have not 335Protocol). The camera is set to USB mass storage mode and hence the procedure is
336exactly the same as that of accessing a memory stick because of which I have not
408explained in detail about the same. Please note that this may NOT work in all 337explained in detail about it. Please note that this may NOT work in all cases
409cases and with all digital cameras that have USB support. 338and with all digital cameras that have USB support.
410</note> 339</note>
411 340
412<p> 341<p>
413How would a USB mouse show up in case you had one? It will show up as an HID 342How would a USB mouse show up in case you had one? It will show up as an HID
414device. 343device.
415</p> 344</p>
416 345
417<pre caption="USB Optical Mouse"> 346<pre caption="USB Optical Mouse">
418# <i>dmesg | grep USB</i> 347# <i>dmesg | grep USB</i>
420usb 1-1: new low speed USB device using address 2 349usb 1-1: new low speed USB device using address 2
421input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1 350input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1
422</pre> 351</pre>
423 352
424<p> 353<p>
425Another nifty command you can use to see the status of your USB ports is 354Another nifty command you can use to see the status of your USB ports is
426<c>lsusb</c>. This is part of <c>sys-apps/usbutils</c> and will be covered in 355<c>lsusb</c>. This is part of <c>sys-apps/usbutils</c> and will be covered in
427the next chapter. 356the next chapter.
428</p> 357</p>
429 358
430</body> 359</body>
431</section> 360</section>
436<section> 365<section>
437<title>Nifty tools</title> 366<title>Nifty tools</title>
438<body> 367<body>
439 368
440<p> 369<p>
441So far we've seen how much support exists on the kernel/system side for USB on 370So far we've seen how much support exists on the kernel/system side for USB on
442Linux. Now we'll take a peek into what kind of support is provided by Gentoo 371Linux. Now we'll take a peek into what kind of support is provided by Gentoo
443for USB in the userspace. 372for USB in the userspace.
444</p> 373</p>
445 374
446<p> 375<p>
447One of the most useful tools around is <c>lsusb</c>. This lists all the usb 376One of the most useful tools around is <c>lsusb</c>. This lists all the usb
448devices connected to the system. Installing it is a breeze. 377devices connected to the system. Installing it is a breeze.
449</p> 378</p>
450 379
451<pre caption="Installing usbutils"> 380<pre caption="Installing usbutils">
452# <i>emerge usbutils</i> 381# <i>emerge usbutils</i>
453</pre> 382</pre>
454 383
455<p> 384<p>
456Once installed, you can just run <c>lsusb</c> to get simple info on the USB 385Once installed, you can just run <c>lsusb</c> to get simple info on the USB
457devices attached to the machine. 386devices attached to the machine.
458</p> 387</p>
459 388
460<note> 389<note>
461You have to be root in most cases to run <c>lsusb</c>. 390You have to be root in most cases to run <c>lsusb</c>.
462</note> 391</note>
463 392
464<warn> 393<warn>
465<c>lsusb</c> reads the information for the USB devices from 394<c>lsusb</c> reads the information for the USB devices from
466<path>/proc/bus/usb</path>. If you have not enabled that in your kernel, 395<path>/proc/bus/usb</path>. If you have not enabled that in your kernel,
467chances are that <c>lsusb</c> may not work at all. Please ensure you have 396chances are that <c>lsusb</c> may not work at all. Please ensure you have
468<path>/proc</path> filesystem support enabled in your kernel and that 397<path>/proc</path> filesystem support enabled in your kernel and that
469<c>usbfs</c> is mounted at <path>/proc/bus/usb</path> (which should happen 398<c>usbfs</c> is mounted at <path>/proc/bus/usb</path> (which should happen
470automatically). 399automatically).
471</warn> 400</warn>
472 401
479<comment>(This is the root hub)</comment> 408<comment>(This is the root hub)</comment>
480Bus 001 Device 001: ID 0000:0000 409Bus 001 Device 001: ID 0000:0000
481</pre> 410</pre>
482 411
483<p> 412<p>
484If you are one of those types who love to see lots of information, you have 413If you are one of those types who love to see lots of information, you have
485the option of running <c>lsusb -v</c>. Try that and see the amount of info it 414the option of running <c>lsusb -v</c>. Try that and see the amount of info it
486gives out. Another good option is that <c>lsusb</c> dumps the current physical 415gives out. Another good option is that <c>lsusb</c> dumps the current physical
487USB hierarchy as a tree and thus makes it easier to understand the exact 416USB hierarchy as a tree and thus makes it easier to understand the exact
488device map. The command is <c>lsusb -t</c>. For example, 417device map. The command is <c>lsusb -t</c>. For example,
489</p> 418</p>
490 419
491<pre caption="lsusb showing USB hierarchy"> 420<pre caption="lsusb showing USB hierarchy">
492# <i>lsusb -t</i> 421# <i>lsusb -t</i>
495 |-Dev# 2 Vendor 0x046d Product 0xc00e 424 |-Dev# 2 Vendor 0x046d Product 0xc00e
496 `-Dev# 3 Vendor 0x0c76 Product 0x0005 425 `-Dev# 3 Vendor 0x0c76 Product 0x0005
497</pre> 426</pre>
498 427
499<p> 428<p>
500You can easily correlate the outputs of <c>lsusb</c> and <c>lsusb -t</c>, 429You can easily correlate the outputs of <c>lsusb</c> and <c>lsusb -t</c>,
501which helps debugging as well as understanding how USB works. 430which helps debugging as well as understanding how USB works.
502</p> 431</p>
503
504</body>
505</section>
506
507<section>
508<title>Hot or Cold plug??</title>
509<body>
510
511<p>
512Gentoo uses two packages, <c>sys-apps/hotplug</c> and <c>sys-apps/coldplug</c>
513to do some magic with <e>hot-pluggable</e> devices. Just like any other magic
514trick, there is a simple logic behind this one too. We shall now see what that
515is, and in the process hopefully we will be able to understand these twins
516better.
517</p>
518
519<p>
520Firmware can be defined as the software on a piece of hardware that is loaded
521and executed but can't be modified easily. Many devices have firmware in them
522to ensure that they work properly and often firmware may contain code that is
523critical to ensure that the hardware performs as expected. Firmware is present
524in a wide variety of computer devices ranging from ROM chips to state of the
525art USB and PCMCIA cards. When a device is plugged in, the firmware (which may
526in some cases be the driver as well) is read and loaded onto memory after
527which the device can be used by the system.
528</p>
529
530<p>
531To cut the long story short, Gentoo uses <c>sys-apps/hotplug</c> to handle
532the firmware side of things in <e>hot-pluggable</e> devices.
533<c>sys-apps/hotplug</c> will use the required firmware to make that device
534usable. The firmware should be put in the <path>/lib/firmware</path> directory
535and is picked up from there. Getting it is simple, the usual emerge will do.
536</p>
537
538<pre caption="Installing hotplug">
539# <i>emerge hotplug</i>
540</pre>
541
542<p>
543Now the obvious question would be, what is coldplug and why is it needed?
544<c>sys-apps/coldplug</c> does what hotplug does, but it does it for
545<e>hot-pluggable</e> devices that are already connected at boot time. A good
546example of this would be a USB Network card. Earlier hotplug was the package
547responsible for handling both but then it was split into hotplug and coldplug,
548each with their distinct purposes. Emerge it if you have <e>hot-pluggable</e>
549devices that you need activated on boot up.
550</p>
551
552<pre caption="Installing coldplug">
553# <i>emerge coldplug</i>
554<comment>(And you can add it to the boot runlevel)</comment>
555# <i>rc-update add coldplug boot</i>
556 * coldplug added to runlevel boot
557 * rc-update complete.
558</pre>
559
560<note>
561The above initscript does what hotplug's initscript used to do (for already
562attached hot-pluggable devices). hotplug does not have an initscript of its
563own as of now.
564</note>
565 432
566</body> 433</body>
567</section> 434</section>
568</chapter> 435</chapter>
569 436
572<section> 439<section>
573<title>References</title> 440<title>References</title>
574<body> 441<body>
575 442
576<p> 443<p>
577A good number of documents online helped me during writing this, and there are 444A good number of online documents helped me during the development of this
578some that are that are highly technical but truly interesting. I thought they 445document and there are some that are highly technical but truly interesting.
579all deserve some credit. So here we go! 446I thought they all deserve some credit, so here we go!
580</p>
581<p> 447</p>
448
449<ul>
5821) <uri link="http://www.usb.org">The Official USB Website</uri> 450 <li><uri link="http://www.usb.org">The Official USB Website</uri></li>
583</p>
584<p>
5852) <uri link="http://www.usb.org/faq">The USB FAQ</uri> 451 <li><uri link="http://www.usb.org/about/faq">The USB FAQ</uri></li>
586</p> 452 <li>
587<p> 453 <uri
5883) <uri link="http://h18000.www1.hp.com/productinfo/development/openhci.html">Compaq's OHCI Standard</uri> 454 link="http://h18000.www1.hp.com/productinfo/development/openhci.html">Compaq's
589</p> 455 OHCI Standard</uri>
590<p> 456 </li>
457 <li>
5914) <uri link="http://developer.intel.com/technology/usb/uhci11d.htm">Intel's UHCI Standard</uri> 458 <uri link="http://developer.intel.com/technology/usb/uhci11d.htm">Intel's
592</p> 459 UHCI Standard</uri>
593<p> 460 </li>
461 <li>
5945) <uri link="http://www.intel.com/technology/usb/ehcispec.htm">Intel's EHCI Standard</uri> 462 <uri link="http://www.intel.com/technology/usb/ehcispec.htm">Intel's EHCI
595</p> 463 Standard</uri>
464 </li>
465</ul>
466
467</body>
468</section>
469<section>
470<title>Other Interesting Links</title>
471<body>
472
473<ul>
474 <li><uri link="/doc/en/liveusb.xml">Gentoo Linux LiveUSB HOWTO</uri></li>
475</ul>
596 476
597</body> 477</body>
598</section> 478</section>
599</chapter> 479</chapter>
600</guide> 480</guide>

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.20