How to get USB devices working under Linux <subtitle>¸®´ª½º¿¡¼­ USB ÀåÄ¡ µ¹¸®±â <author>Brad Hards , <htmlurl url="mailto:brad.hards@dao.defence.gov.au" name="brad.hards@dao.defence.gov.au"> <date>Revision: 0.7 <trans>±è±âÇö, <htmlurl url="mailto:arbeit95@chollian.net" name="arbeit95@chollian.net"> <tdate>Revision: 0.7 1999³â 10¿ù 9ÀÏ <abstract> ÀÌ ¹®¼­´Â USB ÀåÄ¡µéÀ» ¸®´ª½º ½Ã½ºÅÛ¿¡¼­ »ç¿ëÇϱâ À§ÇÑ ´Ü°èÀû ¾È³»¼­ÀÇ ÃʾÈÀÌ´Ù. </abstract> <!-- Â÷·Ê --> <toc> <!-- º»¹®ÀÇ ½ÃÀÛ --> <sect>±âº»ÀûÀÎ USB ¼³Á¤ <p> ÃֽŠ¹öÀüÀÇ Ä¿³ÎÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ¹öÀü <tt>2.2.7</tt> À̳ª ÀÌ ÀÌÈĹöÀüÀÇ Ä¿³ÎÀº USB Äڵ带 Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÀÌ»óÀûÀ¸·Î´Â ´ÙÀ½¹öÀüÀÇ ¸ðµç pre-patches¸¦ Æ÷ÇÔÇÑ ÃֽŠ<tt>2.3.x</tt> Ä¿³ÎÀ» »ç¿ëÇÏ°í ÀÖÀ¸¸é ÁÁ´Ù. <tt>2.2.x</tt> Ä¿³Î¿¡¼­ <tt>2.3.x</tt> USB Äڵ带 »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù - ÀÚ¼¼ÇÑ °ÍÀº ÀÌ ÀåÀÇ µÞºÎºÐÀ» »ìÆì º¸¶ó. USB ÄÚµå´Â »ç½Ç Ãʱ⠰³¹ß´Ü°è¿¡ Àֱ⠶§¹®¿¡ °¢ ¹öÀü¸¶´ÙÀÇ º¯°æ( ¹× ¹ö±×µé)Àº ¸Å¿ì »¡¸® º¯ÇÏ´Â °æÇâÀÌ ÀÖ´Ù. ÃֽŠ¹öÀü¿¡ °üÇÑ °ÍÀº µå¹°Áö¸¸ ¸ÞÀϸµ¸®½ºÆ®´Â °ÅÀÇ ´ëºÎºÐ¿¡ °üÇÑ ³»¿ëÀ» ´Ù·ç°í ÀÖ´Ù. <p> ¸ÞÀϸµ¸®½ºÆ®´Â <htmlurl url="mailto:linux-usb@suse.com" name="linux-usb@suse.com">ÀÌ´Ù. °¡ÀÔÇÏ·Á¸é <htmlurl url="mailto:majordomo@suse.com" name="majordomo@suse.com">¿¡°Ô <bf>subscribe linux-usb</bf> ¶ó°í ¾´ ¸ÞÀÏÀ» º¸³»¶ó. ¸ÞÀϸµ¸®½ºÆ®ÀÇ ±ÛµéÀ» ±×¸¸ º¸°í ½ÍÀ¸¸é <htmlurl url="mailto:majordomo@suse.com" name="majordomo@suse.com">¿¡°Ô <bf>unsubscribe linux-usb</bf> ¶ó°í ½á¼­ º¸³»¶ó. <p> Ä¿³Î¿¡ USB ¼³Á¤À» ÇØ¾ß ÇÑ´Ù. <bf>make menuconfig</bf>°¡ ÁÁÀ» °ÍÀÌ´Ù. <bf>USB drivers - not for the faint of heart</bf> Ç׸ñ¿¡¼­ <bf>Support for USB(EXPERIMENTAL!)</bf>¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ <bf>UHCI (intel PIIX4 and others) support, OHCI (compaq and some others) support,</bf>¶Ç´Â <bf>OHCI-HCD (other OHCI opt. Virt. Root Hub) support</bf> °¡¿îµ¥ Çϳª¸¦ ¼±ÅÃÇÑ´Ù. UHCI, OHCI ¹× OHCI-HCD¸¦ µ¿½Ã¿¡ °°ÀÌ »ç¿ëÇϸé Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù(UHCI´Â ÀÛµ¿ÇÒ °ÍÀÌ´Ù). ¾î´À °ÍÀ» °í¸¦ °ÍÀ̳Ĵ ´ç½ÅÀÌ ¾î¶² ¸¶´õº¸µå³ª ¾î´ðÅ͸¦ °®°í ÀÖ´À³Ä¿¡ ´Þ·Á ÀÖ´Ù. Intel°ú Via ¸¶´õº¸µå´Â UHCIÀÌ´Ù. ÄÄÆÑ°ú NEC ¸¶´õº¸µå, iMac°ú Opti Ĩ(¸ðµç Ĩ Á¾·ù¸¦ Æ÷ÇÔ)À» ¾²´Â ¸ðµç ¾î´ðÅÍ´Â OHCIÀ̸ç OHCI³ª OHCI-HCD °¡¿îµ¥ Çϳª¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¾î¶² ÄÁÆ®·Ñ·¯¸¦ ¼±ÅÃÇؾßÇÒÁö ¸ð¸£°Ú´Ù¸é ¸¶´õº¸µå ¹®¼­¸¦ º¸¶ó. ¶ÇÇÑ /proc/pci¿¡¼­ ÈùÆ®¸¦ ¾òÀ» ¼ö ÀÖ´Ù. USB Ç׸ñÀÌ 0xHHHHÇü½ÄÀ¸·Î µÇ¾î ÀÖÀ» ¶§´Â(HHHH´Â 16Áø¼öÀÌ´Ù - ¿¹¸¦ µé¾î <bf>I/O at 0xe400</bf>) UHCIÀÌ´Ù. <bf>32 bit memory at 0xHH000000</bf> ÀÏ ¶§´Â(HH´Â 16Áø¼öÀÌ´Ù - ¿¹¸¦ µé¾î <bf>32 bit memory at 0xee000000</bf>) OHCIÀÌ´Ù. À̰͵µ ºÒ°¡´ÉÇÏ¸é ¾Æ¹«°Å³ª Çϳª ½ÃµµÇغ¸¶ó. <p> ´ÙÀ½À¸·Î ¾î¶² ÀåÄ¡¸¦ »ç¿ëÇÒ °ÍÀÎÁö¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î <bf>xUSB mouse support</bf>´Â USB ¸¶¿ì½º, <bf>USB keyboard support</bf>´Â USB Å°º¸µå, <bf>USB hub support</bf>´Â Çãºê, <bf>USB communications Devices Class (ACM) support</bf>´Â POTS ¶Ç´Â ISDN¸ðµ©, <bf>USB Printer support</bf>´Â USB ÇÁ¸°ÅÍ, <bf>USB SCSI Support</bf>´Â ´ë¿ë·® ÀúÀåÀåÄ¡¿ë, <bf>USB CPiA Camera support</bf>´Â Vision CPiA Ĩ¼ÂÀ» »ç¿ëÇÑ Ä«¸Þ¶ó, <bf>EZUSB Firmware downloader</bf>´Â Anchor ChipsUSB ¸¶ÀÌÅ©·ÎÄÜÆ®·Ñ·¯Å¶¿¡ ´ëÇÑ ´Ù¿î·Îµå, <bf>USS7270 parport driver</bf>´Â º´·Ä Æ÷Æ® ¾î´ðÅÍ¿ë µîÀÌ´Ù. ¸ðµâ°ú Ä¿³Î Á÷Á¢ Áö¿ø(kernel only), º°µµÀÇ(split) ¸ðµâ, Ä¿³ÎÄÚµå µîÀ» »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀåÄ¡µéÀ» ·çÆ® Çãºê¿¡ ²È¾Æ »ç¿ëÇؼ­ Çãºê°¡ ²À ÇÊ¿äÇÏÁö ¾Ê´Ù ÇÏ´õ¶óµµ Çãºê Áö¿øÀ» ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁ´Ù. <p> <bf>USB audio parsing support</bf>´Â ÇöÀç±îÁö´Â Áö¿øµÇÁö ¾Ê´Â´Ù. ÀÌ ¹®¼­¿¡ ¿­°ÅµÇÁö ¾ÊÀº ÀåÄ¡´Â ÀÌ ±ÛÀ» ¾²´Â ½ÃÁ¡¿¡¼­´Â Áö¿øµÇÁö ¾Ê´Â °ÍµéÀÌ´Ù. ±×·¯³ª °³¹ßÀÚµéÀº ÇöÀç Äڵ忡 µµ¿òÀ» ÁÖ´Â °Í(contribute)Àº ¾ðÁ¦µçÁö ȯ¿µÇÑ´Ù. <p> ¾ÈÁ¤ Ä¿³Î(<bf>2.2.x</bf>)À» ¾²°íÀÚ ÇÑ´Ù¸é °³¹ßÄ¿³Î(<bf>2.3.x</bf>)ÀÇ Äڵ带 <tt>drivers/usb</tt> µð·ºÅ丮¿¡ º¹»çÇØ ³ÖÀ¸¸é µÈ´Ù. <tt>arch/i386/config.in</tt>¿¡¼­ ¾Æ·¡¿Í °°Àº ÇàÀÇ ÁÖ¼®À» ¾ø¾Ö¾ß ÇÑ´Ù. <verb> # source drivers/usb/Config.in </verb> <p> ´Ù¸¥ ¾ÆÅ°ÅØóµµ ºñ½ÁÇÒ °ÍÀÌ´Ù. <tt>drivers/usb/usb.h</tt>ÀÇ Ã¹ºÎºÐ¿¡ ¾Æ·¡¿Í °°Àº ¸î ÁÙÀÇ Á¤ÀÇ(definition)¸¦ Ãß°¡ÇØ¾ß ÇÑ´Ù. <verb> #if LINUX_VERSION_CODE < 0x020300 #define DECLARE_WAIT_QUEUE_HEAD(w) struct wait_queue *w = NULL #define DECLARE_WAITQUEUE(w,c) struct wait_queue w = {(c), NULL} #define wait_queue_head_t struct wait_queue * #define init_waitqueue_head(w) *(w) = 0 #define DECLARE_MUTEX_LOCKED(sem) struct semaphore sem = MUTEX_LOCKED #endif </verb> <p> Ä¿³ÎÀ» ÀçÄÄÆÄÀÏÇÏ°í (¸ðµâ·Î ¼³Á¤Çß´Ù¸é) ¸ðµâµµ ÄÄÆÄÀÏ ÇÑ ´ÙÀ½ »õ·Î¿î Ä¿³Î°ú ¸ðµâÀ» ¼³Ä¡Ç϶ó. ½Ã½ºÅÛÀ» ÀçºÎÆÃÇÑ´Ù. <p> ¸ðµâÀ» »ç¿ëÇÏ°í ÀÖ´Ù¸é ¸ðµâÀ» Á¤ÇØÁø ¼ø¼­¿¡ µû¶ó ÀûÀç(load) ÇØ¾ß ÇÑ´Ù. <tt>usbcore.o</tt>¸¦ ¸ÕÀú ÀûÀçÇÏ°í <tt>mouse.o, keyboard.o, hub.o</tt> µîÀÇ µå¶óÀ̹öµéÀ» ÀûÀçÇÑ ´ÙÀ½ ¸¶Áö¸·À¸·Î È£½ºÆ® ÄÁÆ®·Ñ·¯(¿¹¸¦ µé¾î <tt>usb-uhci.o</tt> ¶Ç´Â <tt>usb-ohci.o</tt>)¸¦ ÀûÀçÇÑ´Ù. <p> Ä¿³Î ·Î±×¸¦ »ìÆ캸¶ó. ¾Æ·¡¿Í °°Àº ³»¿ëµéÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù(UHCI¿Í ¿ÜºÎ Çãºê¸¦ »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù). <verb> ....... Jul 19 20:46:02 rachel kernel: USB HID boot protocol mouse registered. ....... Jul 19 20:46:02 rachel kernel: uhci_control_thread at c01b8c5c Jul 19 20:46:02 rachel kernel: New bus registered Jul 19 20:46:02 rachel kernel: USB hub driver registered Jul 19 20:46:02 rachel kernel: uhci_connect_change: called for 0 ....... Jul 19 20:46:02 rachel kernel: USB hub found Jul 19 20:46:02 rachel kernel: hub: 4-ports detected Jul 19 20:46:02 rachel kernel: hub: individual port power switching Jul 19 20:46:02 rachel kernel: hub: standalone hub Jul 19 20:46:02 rachel kernel: hub: individual port over current protection Jul 19 20:46:02 rachel kernel: hub: power on to power good time: 100ms Jul 19 20:46:02 rachel kernel: hub: hub controller current requirement: 100mA Jul 19 20:46:02 rachel kernel: hub: port 1 is removable Jul 19 20:46:02 rachel kernel: hub: port 2 is removable Jul 19 20:46:02 rachel kernel: hub: port 3 is removable Jul 19 20:46:02 rachel kernel: hub: port 4 is removable Jul 19 20:46:02 rachel kernel: hub: local power source is good Jul 19 20:46:02 rachel kernel: hub: no over current condition exists Jul 19 20:46:02 rachel kernel: enabling power on all ports Jul 19 20:46:02 rachel kernel: uhci_connect_change: called for 1 ....... Jul 19 20:46:02 rachel kernel: hub: port 3 connection change ....... </verb> <p> OHCI¿Í OHCI-HCD´Â À¯»çÇÑ ±â´ÉÀ» ¼öÇàÇÒ °ÍÀÌ´Ù. ±×·¯³ª µÎ °³¸¦ ¹Ù²Ù´Â °Í¿¡ ½ÇÆÐÇÑ °Í¿¡ ´ëÇØ ±×¸® Å©°Ô °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. º°´Ù¸¥ ¿µÇâÀ» ¹ÌÄ¡´Â ¾Ê´Â »ç¼ÒÇÑ ¹ö±×ÀÌ´Ù. USB¿¡ °ü·ÃµÈ ³»¿ë(hubs, usb, ohci, uhci ¸¦ Ç¥½ÃÇÏ´Â ÁÙ)ÀÌ ÀüÇô ¾ø´Ù¸é ¾Æ¸¶µµ À߸øµÈ µå¶óÀ̹ö¸¦ »ç¿ëÇÏ°í Àְųª(OHCI¸¦ ½á¾ß Çϴµ¥ UHCI¸¦ ¾²´Â °æ¿ì³ª ±× ¹Ý´ëÀÇ °æ¿ì), Çϵå¿þ¾î°¡ ¹°¸®ÀûÀ¸·Î ¼³Ä¡µÇÁö ¾ÊÀº °æ¿ì, BIOS¿¡¼­ USB ±â´ÉÀ» ²¨µÐ °æ¿ì, Ä¿³ÎÀÇ À߸øµÈ ¼³Á¤À̳ª ¼³Ä¡ ¶§¹®ÀÏ °ÍÀÌ´Ù. <sect>¸¶¿ì½º ¼³Á¤ <p> ¿ì¼± ¸¶¿ì½º°¡ Ä¿³Î¿¡ ÀÇÇØ Á¦´ë·Î ÀνĵǴÂÁö È®ÀÎÇ϶ó. <bf>more /proc/interrupts</bf>¸¦ ½ÇÇàÇØ º¸¸é USB¿¡ °üÇÑ ³»¿ë(º¸Åë <bf>ohci-usb</bf> ³ª <bf>usb</bf>)À» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸¶¿ì½º¸¦ ¸î ¹ø Ŭ¸¯ÇÑ ´ÙÀ½ <bf>/proc/interrupts</bf>¸¦ »ìÆ캸¸é ÇØ´ç Ä«¿îÆ®°¡ Áõ°¡µÈ °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù(Ŭ¸¯ ÇÑ ¹ø¿¡ 2¾¿ Áõ°¡Çϴµ¥ down,up °¢ 1¾¿ Áõ°¡ÇÑ´Ù). UHCI¿¡¼­´Â Ä«¿îÆ®°¡ Á» ¾î·Á¿îµ¥ <bf>/proc/interrupts</bf> ¸¦ »ìÆ캸´Â µ¿¾È Áö¿¬µÈ ½Ã°£(ÃÊ)À» »©¾ß ÇÑ´Ù. USB Å°º¸µå¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é Å°´­¸² ¶ÇÇÑ °¨¾ÈÇØ¾ß ÇÑ´Ù. <p> <tt>/proc/misc</tt>¸¦ »ìÆ캸¸é ¾Æ·¡¿Í ºñ½ÁÇÑ ³»¿ëÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. <verb> [bradh@rachel bradh]$ more /proc/misc 32 USB Mouse 1 psaux </verb> <p> ¸¶¿ì½º°¡ »ç¿ëÇÒ /dev Ç׸ñÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¾Æ·¡ÀÇ ¸í·ÉÀ» »ç¿ëÇ϶ó. <verb> mknod /dev/usbmouse c 10 32 </verb> <p> X À©µµ¿ì¿¡¼­ ¸¶¿ì½º¸¦ »ç¿ëÇÏ·Á¸é ¾Æ·¡¿Í °°ÀÌ ¼³Á¤ÇØ¾ß ÇÑ´Ù. <itemize> <item><tt>XF86Config</tt> ÆÄÀÏ(º¸Åë <tt>/usr/X11R6/lib/X11/XF86Config</tt>)À» ¼öÁ¤ÇÑ´Ù. ¾Æ·¡ÀÇ ³»¿ëÀ» Ãß°¡Ç϶ó(ÀÎ½Ä °¡´ÉÇÑ °÷ ¾îµðµç »ó°ü¾øÁö¸¸ ÀÔ·ÂÀåÄ¡ Ç׸ñÀÌ ¹Ù¶÷Á÷ÇÏ´Ù). <verb> Section "Xinput" SubSection "Mouse" DeviceName "USB Mouse" Protocol "IMPS/2" Port "/dev/usbmouse" AlwaysCore EndSubSection EndSection </verb> <item>X ¼­¹ö¸¦ Àç½ÃÀÛÇÑ´Ù. ¸¶¿ì½º°¡ ÀÛµ¿µÇÁö ¾ÊÀ¸¸é Ctrl-Alt-F1À» ´­·¯ °¡»ó Å͹̳ÎÀ» ¶ç¿î ´ÙÀ½ xserver¸¦ kill ¸í·ÉÀ¸·Î Á¾·á½ÃÅ°°í ¿¡·¯ ¸Þ¼¼Áö¸¦ °¡Áö°í µð¹ö±ëÇ϶ó. </itemize> <p> gpm¿¡¼­ ¸¶¿ì½º¸¦ »ç¿ëÇÏ·Á¸é <bf>gpm -m /dev/usbmouse -t ps2</bf>¿Í °°ÀÌ ½ÇÇàÇ϶ó(½´ÆÛ À¯Àú·Î ½ÇÇàÇØ¾ß ÇÑ´Ù). ºÎÆýà ½ÇÇàµÇ´Â ÆÄÀÏÀ» ¼öÁ¤Çϸé ÀÌ°ÍÀ» ±âº»°ªÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. Redhat ¹èÆ÷ÆÇ¿¡´Â ±âº»ÀûÀ¸·Î <tt>/etc/rc.d/</tt> µð·ºÅ丮¿¡ ÀÌ·¯ÇÑ ÆÄÀϵéÀÌ ÀÖÀ¸¸ç <tt>rc.d</tt>¿Í ºñ½ÁÇÑ À̸§À» °®°í ÀÖ´Ù. <sect>Å°º¸µå ¼³Á¤ <p> PC¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é USB Å°º¸µå¸¦ »ç¿ëÇϱâ À§ÇØ ¿î¿µÃ¼Á¦ Áö¿øÀÌ ÀüÇô ÇÊ¿ä ¾øÀ» ¼öµµ ÀÖ´Ù. ¸¶´õº¸µåÀÇ ·çÆ® Çãºê¿¡ ¿¬°áµÈ USB Å°º¸µå¸¦ Áö¿øÇÏ´Â BIOSµéÀÌ ÀÖ´Ù. ÀÌ°ÍÀº ´Ù¸¥ Çãºê¿¡¼­ ÀÛµ¿ÇÒ ¼öµµ ÀÖ°í ¾ÈÇÒ ¼öµµ ÀÖÀ¸¸ç ³»À庸µå(add-in board)¿¡¼­´Â º¸Åë ÀÛµ¿µÇÁö ¾Ê´Â´Ù. µû¶ó¼­ ¾î¶»µç °£¿¡ Áö¿øÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. <p> Å°º¸µå°¡ Ä¿³Î¿¡¼­ Á¤È®È÷ ÀνĵǴÂÁö È®ÀÎÇ϶ó. <bf>more /proc/interrupts</bf>¸¦ ½ÇÇàÇØ º¸¸é USB¿¡ °üÇÑ ³»¿ë(º¸Åë <bf>ohci-usb</bf> ¶Ç´Â <bf>usb</bf>)À» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Å°º¸µå¸¦ ´©¸¥ ´ÙÀ½ <bf>/proc/interrupts</bf>¸¦ »ìÆ캸¸é Ä«¿îÆ®°¡ Áõ°¡µÈ °ÍÀ» º¼ ¼ö ÀÖ´Ù. ¸¸¾à UHCI¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é Áö¿¬µÈ ½Ã°£(ÃÊ)À» »©¾ß ÇÑ´Ù. <p> ÀÌÁ¦ º¸ÅëÀÇ Å°º¸µåó·³ USB Å°º¸µå¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. LILO°¡ USB¸¦ ÀνÄÇÏÁö ¸øÇÑ´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. BIOS°¡ USB Å°º¸µå¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù¸é USB Å°º¸µå¸¦ »ç¿ëÇÏ´Â ±âº» À̹ÌÁö ¿ÜÀÇ ´Ù¸¥ ºÎÆ® À̹ÌÁö¸¦ ¼±ÅÃÇÒ ¼ö ¾øÀ» ¼öµµ ÀÖ´Ù. ³ª´Â °³ÀÎÀûÀ¸·Î USB Å°º¸µå(±×¸®°í USB ¸¶¿ì½º)¸¸À» »ç¿ëÇÏ°í ÀÖÀ¸¸ç ¾Æ¹« ¹®Á¦°¡ ¾ø´Ù. <sect>Çãºê Áö¿ø <p> Çãºê´Â ´Ù¸¥ ¼³Á¤ ¾øÀÌ ÀÛµ¿µÉ °ÍÀÌ´Ù. ·çÆ® Çãºê¿¡ ¿¬°áµÈ °æ¿ì¿¡¸¸ ÀÛµ¿µÇ°í ³»Àå(add-on) Çãºê¿¡ ¿¬°á µÉ ¶§´Â ÀÛµ¿µÇÁö ¾Ê´Â´Ù¸é Çãºê ¸ðµâÀ» ¼³Ä¡Çß´ÂÁö È®ÀÎÇ϶ó(¸ðµâ·Î ¼³Á¤ÇÑ °æ¿ìÀÌ´Ù). ¶ÇÇÑ ¹ö½º¸¦ ÅëÇØ Àü¿øÀÌ °ø±ÞµÇ´Â Çãºê¿¡ Àü·ÂÀ» ¸¹ÀÌ »ç¿ëÇÏ´Â ÀåÄ¡¸¦ ¿¬°áÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. <sect>ÇÁ¸°ÅÍ Áö¿ø <p> ÇÁ¸°ÅÍ¿ë <tt>/dev</tt> Ç׸ñÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¾Æ·¡ ¸í·ÉÀ» ½ÇÇàÇ϶ó. <verb> mknod /dev/usblp c 63 0 </verb> <p> ÀÌÁ¦ ÀÌ ÀåÄ¡¸¦ <tt>/etc/printcap</tt> Ç׸ñ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾à°£ ´À¸®Áö¸¸ ³ª·Î¼­´Â ÀÌ µå¶óÀ̹ö°¡ ¾ÆÁÖ ÈǸ¢ÇÏ´Ù°í »ý°¢ÇÑ´Ù. Redhat Á¦¾îÆÇÀÇ ÇÁ¸°ÅÍÅø°ú °°Àº ÀÚµ¿ ¼³Á¤ ÅøÀ» »ç¿ëÇؼ­ ÀåÄ¡ ÆÄÀÏÀ» ¸¸µé °ÍÀ» ±ÇÀåÇÑ´Ù. <p> ÇÁ¸°ÅÍ°¡ ÀÛµ¿µÇÁö ¾ÊÀ¸¸é ÇÁ¸°ÅÍÀÇ ¸ÞÀÌÀú ³Ñ¹ö(major device number)°¡ ¹Ù²î¾ú´ÂÁö¸¦ Á¡°ËÇ϶ó(63Àº ½ÇÇèÀû ¹üÀ§ÀÇ °ªÀÌ´Ù). ¼Ò½ºÄڵ峪 <tt>/proc/devices</tt>¸¦ »ìÆ캸¸é µÈ´Ù. ½ÇÁ¦·Î ¸ðµâÀÌ ÀûÀçµÇ¾ú´ÂÁö »ìÆ캸°í <tt>/etc/printcap</tt> Ç׸ñÀ» ´Ù½Ã üũÇ϶ó. ƯÈ÷ ÀåÄ¡ ÆÄÀÏÀÌ ´ç½ÅÀÌ ¸¸µç °Í°ú µ¿ÀÏÇÑÁö È®ÀÎÇ϶ó. <sect>Abstract Control Model Áö¿ø <p> ´Ù¾çÇÑ ACM ÀåÄ¡¸¦ »ç¿ëÇϱâ À§ÇØ <tt>/dev</tt> Ç׸ñÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¾Æ·¡ÀÇ ¸í·ÉÀ» »ç¿ëÇ϶ó. <verb> mknod /dev/ttyACM0 c 166 0 mknod /dev/ttyACM1 c 166 1 mknod /dev/ttyACM2 c 166 2 mknod /dev/ttyACM3 c 166 3 </verb> <p> ÀÌÁ¦ ÀÌ ÀåÄ¡¸¦ »ç¿ëÇϱâ À§ÇÑ Å͹̳Π¾Ö¹Ä·¹ÀÌÅÍ ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ°í ¸ðµ©À̳ª ´Ù¸¥ Å͹̳ΠÀåÄ¡¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ºÐ¸íÈ÷ ÀÌ µå¶óÀ̹ö´Â ´ëºÎºÐ ÀÛµ¿µÇÁö¸¸ ¾ÆÁ÷µµ ¸î °¡Áö ¹®Á¦°¡ ÀÖ´Ù. ³» °³ÀÎÀûÀ¸·Î Å×½ºÆ® Çغ¸Áö´Â ¾Ê¾Ò´Ù. <sect>CPiA imager Áö¿ø <p> ÀÌ µå¶óÀ̹ö´Â Vision»ç¿¡¼­ ¸¸µç ƯÁ¤ÇÑ Ä¨¼ÂÀ» Áö¿øÇϸç USB Ä«¸Þ¶ó(´ëÇ¥ÀûÀ¸·Î Creative WebCamll)¿¡¼­ »ç¿ëµÈ´Ù. ÀÌ µå¶óÀ̹ö¸¦ »ç¿ëÇϱâ À§Çؼ­´Â <bf>Video For Linux</bf> Ç׸ñÀ» ¼±ÅÃÇØ¾ß ÇÑ´Ù(<bf>menuconfig</bf>¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é <bf>Character Devices</bf> Ç׸ñ ¾Æ·¡¿¡ ÀÖ´Ù). <p> CPiA Ä«¸Þ¶ó¸¦ À§ÇØ <tt>/dev</tt> Ç׸ñÀ» ¼³Á¤ÇØ¾ß ÇÑ´Ù. ¾Æ·¡ ¸í·ÉÀ» ½ÇÇàÇ϶ó. <verb> mknod /dev/video0 c 81 0 ln -s /dev/video0 /dev/video </verb> <p> ÀåÄ¡¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¸î °¡Áö ºñµð¿À ÅøÀÌ ÇÊ¿äÇÏ´Ù. ¼ö¸¹Àº Á¾·ùÀÇ ÅøµéÀÌ ÀÖ´Ù. <url url="http://millenium.diads.com/bdirks" name="http://millenium.diads.com/bdirks">Àº º¸Åë ¹èÆ÷ ³¯Â¥¿¡ µû¶ó <tt>apps19990527.tgz</tt>¿Í °°Àº À̸§À» °¡Áø ÆÐÅ°Áö¸¦ Á¦°øÇÑ´Ù. X À©µµ¿ì ¹× ÅؽºÆ® ¸ðµå ÅøÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. ÅؽºÆ® ¸ðµå ÅøÀ» ¾Æ·¡¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. <verb> ./vctrl 320x240x24 ./vcat | rawtoppm -bgr 320 240 | xv - </verb> ÀÌ ÅøµéÀº º°´Ù¸¥ ¼³Á¤ÀÌ ¾øÀ¸¸é µðÆúÆ®·Î <tt>/dev/video</tt>¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ½Éº¼¸¯ ¸µÅ©°¡ ±×Àü¿¡ ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. <p> ÇöÀç·Î¼­´Â CPiA Ä«¸Þ¶ó´Â Èæ¹éÀ̹ÌÁö¸¸ °¡´ÉÇÏ´Ù. ³ª´Â °³ÀÎÀûÀ¸·Î Å×½ºÆ® ÇÑ ¹Ù ¾ø´Ù. CPiA Ä«¸Þ¶ó¸¦ »ç¿ëÇÏ°íÀÚ ÇÑ´Ù¸é Vision»çÀÇ CPiA À¥»çÀÌÆ® <url url="http://home.eunet.no/~jtotland/vision" name="http://home.eunet.no/~jtotland/vision">À» Âü°íÇ϶ó. <sect>´ë¿ë·® ÀúÀåÀåÄ¡ <p> ==Çã°¡ ¾øÀÌ Ãß°¡Çغ¾´Ï´Ù.== ±â¾ïÀ» ´õµë¾î¼­ ¿Ã¸®¹Ç·Î ÀÚ·á°¡ ºÎÁ·Çϰųª Ʋ¸± ¼öµµ ÀÖ½À´Ï´Ù. ·¹µåÇÞ 9.x ¿¡¼­ ¼Ò½º Ä¿³Î ÄÄÆÄÀÏÇؼ­ Çغ¸¾Ò½À´Ï´Ù. 9.0 ±âº» rpm Ä¿³Î·Î´Â Áö¿øÀÌ ¿øÇÑÇÏÁö ¾Ê°í ÀνÄÀÌ µÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. Å×½ºÆ® Ä¿³Î 2.4.27 / 2.6.X ¿¡¼­´Â Á¤»ó ÀÛµ¿ÇÏÁö ¾Ê°í ÀÖ½À´Ï´Ù. (2004/10¿ù ±âÁØ) Ä¿³Î¿¡¼­ ¾îµð¸¦ ±¸Ã¼ÀûÀ¸·Î ¿Ã·Á¾ß ÇÏ´ÂÁö ±â¾ïÀÌ Àß ³ªÁø ¾ÊÁö¸¸ scsi ¿É¼Ç¿¡¼­ ¿¡¹Ä·¹ÀÌÅÍ Ã¼Å©ÇÕ´Ï´Ù. usb ¿¡¼­ usb-storage üũÇÕ´Ï´Ù. ¸®ºÎÆà ÇÒ¶§ usb °¡ ¿Ã¶ó ¿ÀÁö ¾ÊÀ¸¸é ¾Æ·¡¿Í °°ÀÌ ½ºÅ©¸³Æ®¸¦ ¸¸µé°í ¿Ã·Áº¸½Ê½Ã¿À. #!/bin/sh insmod /lib/modules/2.4.27/kernel/drivers/usb/usbcore.o insmod /lib/modules/2.4.27/kernel/drivers/usb/host/uhci.o <== usb 1 / 2 ¹öÀü¿¡ µû¶ó ´Ù¸¥°ÍÀ» ¿Ã·Á¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. insmod /lib/modules/2.4.27/kernel/drivers/usb/storage/usb-storage.o ¸ðµâ ¿Ã¶ó¿Â°Í È®ÀÎ [root@back root]# lsmod Module Size Used by Not tainted usb-storage 126800 4 uhci 30320 0 (unused) <== »ç¿ëÀº ¾ÊÇÏÁö¸¸ ¾øÀ¸¸é ¾È¿Ã¶ó¿À´Â°Í °°¾Æº¸ÀÔ´Ï´Ù. usbcore 81600 0 [usb-storage uhci] µ¿ÀÛ À¯¹« È®ÀÎ initââ¬âbdflush ââcrond ââkeventd ââkhubd ââ10*[kjournald] ââklogd ââksoftirqd_CPU0 ââkswapd ââkupdated ââlockdââ?pciod ââ6*[mingetty] ââ8*[nfsd] ââportmap âârpc.mountd âârpc.rquotad ââscsi_eh_1 <== ¿¡¹Ä·¹ÀÌÅÍ ââscsi_eh_2 <== ¿¡¹Ä·¹ÀÌÅÍ ââ2*[sendmail] ââsshdââ?shdââ?ashââ?stree ââsyslogd ââusb-storage-0 ââusb-storage-1 ââxinetd df /dev/hda8 1004024 91960 861060 10% / /dev/hda1 101089 11110 84760 12% /boot /dev/hda5 4032092 32828 3794440 1% /data /dev/hda2 5036316 32848 4747636 1% /home none 257116 0 257116 0% /dev/shm /dev/hda3 4032124 1152688 2674608 31% /usr /dev/hda6 3020140 135052 2731672 5% /var /dev/sda1 192292124 59488 182464716 1% /mnt/a <== ½ºÄ«½Ã°¡ ¿¡¹Ä·¹ÀÌÅÍ ÇØÁÖ´Â°Í °°½À´Ï´Ù. /dev/sdb1 192292124 29539712 152984492 17% /mnt/b <== /dev/sdc1 192292124 14673608 167850596 9% /mnt/c <== /dev/sdd1 192292124 41752148 140772056 23% /mnt/d <== ÀÌ»óÀÔ´Ï´Ù. <sect>EZUSB µå¶óÀ̹ö <p> Ãß°¡ ¿¹Á¤ <sect>USS720 µå¶óÀ̹ö <p> USS720Àº º´·Ä Æ÷Æ®¿ë USBĨÀ¸·Î Lucent»ç¿¡¼­ ¸¸µé¾ú´Ù. USS720ĨÀº USB Printer Class Àåġó·³ ÀÛµ¿ÇÑ´Ù. »ç½Ç USS720À¸·Î ¸¸µç ºê¸´Áö¸¦ »ç¿ëÇÏ¸é º´·Ä Æ÷Æ® ÇÁ¸°Å͸¦ ¾Õ¿¡¼­ º» USB ÇÁ¸°ÅÍ µå¶óÀ̹ö·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ USS720À» º¸ÅëÀÇ º´·ÄÆ÷Æ® Çϵå¿þ¾î·Î ÀνÄÇÏ´Â ¸ðµå°¡ ÀÖ´Ù(·¹Áö½ºÅÍ ¸ðµå·Î ¾Ë·ÁÁ® ÀÖ´Ù). ÀÌ µå¶óÀ̹ö´Â ·¹Áö½ºÅÍ ¸ðµå¸¦ »ç¿ëÇÑ´Ù. <p> ¸ðµâÀ» ÀûÀçÇϰųª USS720 Áö¿ø Ä¿³Î·Î ÀçºÎÆà Çϱâ Àü¿¡ <bf>/proc/sys/dev/parport</bf>¸¦ »ìÆ캸¶ó. ´ç½ÅÀÇ ½Ã½ºÅÛÀÌ °¡Áø º´·ÄÆ÷Æ® ¼ö¸¦ ÁÖ¸ñÇ϶ó(º¸Åë <bf>/proc/sys/dev/parport/parport0</bf> ÇϳªÀÌ´Ù). USS720 Áö¿øÇ׸ñÀ» Ä¿³Î¿¡ Æ÷ÇÔ½ÃŲ ÈÄ¿¡´Â ¶ÇÇϳªÀÇ Æ÷Æ®(º¸Åë <bf>/proc/sys/dev/parport1</bf>)°¡ ÀÖÀ» °ÍÀÌ´Ù. ÇØ´ç <bf>Çϵå¿þ¾î</bf> Ç׸ñÀ» º¸¸é ¾Æ·¡¿Í °°Àº ³»¿ëÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. <verb> [bradh@rachel bradh]$ more /proc/sys/dev/parport/parport1/hardware base: 0x0 irq: none dma: none modes: PCSPP,TRISTATE,COMPAT,EPP,ECP </verb> <p> ¸ðµç ¹èÆ÷ÆÇÀº º´·Ä Æ÷Æ®¿ë <bf>/dev</bf> Ç׸ñÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù(º¸Åë <bf>/dev/lpx</bf> ¶Ç´Â <bf>/dev/parx</bf> À̸ç x´Â ÀÓÀÇÀÇ ¼öÀÚÀÌ´Ù). È®½ÅÀÌ ¼­Áö ¾Ê´Â´Ù¸é º´·ÄÆ÷Æ®´Â ij¸¯ÅÍ ¸ÞÀÌÀú ³Ñ¹ö(character major number) 6À» »ç¿ëÇÑ´Ù´Â °ÍÀ» ±â¾ïÇ϶ó. <p> USS720À» º´·ÄÆ÷Æ®¿ëÀ¸·Î Àß ¾µ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÁøÂ¥ USB ÇÁ¸°ÅÍó·³ ÇÁ¸°ÅÍ ¿¬°á¿¡ »ç¿ëÇÒ <bf>/etc/printcap</bf> ÆÄÀÏÀ» ÀÚµ¿¼³Á¤ÆÄÀÏ·Î ÀÛ¼ºÇϱ⸦ ±ÇÇÑ´Ù. <p> ¼³Á¤Ç׸ñ¿¡¼­ USS720 Áö¿øÀ» ¼±ÅÃÇÒ ¼ö ¾ø´Ù¸é <bf>Parallel port support</bf> Ç׸ñÀ» ¼±ÅÃÇØ¾ß ÇÑ´Ù(¸¸¾à <bf>menuconfig</bf>¸¦ »ç¿ëÇÑ´Ù¸é <bf>General setup</bf> Ç׸ñ ¾Æ·¡¿¡ ÀÖ´Ù). <sect>USB /proc µå¶óÀ̹ö <p> /procÀÇ USB Áö¿øÀ» À§Çؼ­´Â <bf>Preliminary /proc/bus/usb support</bf>¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ±×¸®°í À§¿¡¼­ ¼³¸íÇÑ´ë·Î ÀçÄÄÆÄÀÏÇÏ°í À缳ġÇ϶ó. <p> USBÀÇ <tt>/proc</tt> Áö¿ø Ç׸ñÀº ÇöÀç 2°¡ÁöÀÇ ÀÎÅÍÆäÀ̽º¸¦ °®°í Àִµ¥, <tt>/proc/bus/usb/drivers</tt>¿Í <tt>/proc/bus/usb/devices</tt>ÀÌ´Ù. <p> <tt>/proc/bus/usb/drivers</tt>´Â ÇöÀç µî·ÏµÈ µå¶óÀ̹ö ¸®½ºÆ®¸¦ º¸¿©ÁØ´Ù(µå¶óÀ̹ö°¡ ÀåÄ¡¿¡¼­ »ç¿ëµÇÁö ¾Ê°í ÀÖ´õ¶óµµ). ¸ðµâ ¼³Ä¡ Å×½ºÆ®³ª ƯÁ¤(unknown) Ä¿³Î¿¡¼­ USB Áö¿ø ¿©ºÎ¸¦ »ìÆ캼 ¶§ À¯¿ëÇÏ´Ù. ¾Æ·¡ÀÇ ¿¹¸¦ º¸¶ó. <verb> [bradh@rachel bradh]$ more /proc/bus/usb/drivers hub printer keyboard mouse </verb> <p> <tt>/proc/bus/usb/devices</tt>´Â ÇöÀç USB ¹ö½º¿¡ ¿¬°áµÈ ÀåÄ¡¿¡ ´ëÇÑ Á¤º¸¸¦ Ç¥½ÃÇÑ´Ù. °¢ ÀåÄ¡°¡ Á¦´ë·Î ¼³Á¤µÇ¾ú´ÂÁö¸¦ ÆľÇÇϴµ¥ À¯¿ëÇÏ´Ù. ¾Æ·¡ÀÇ ¿¹´Â ·çÆ®Çãºê, Çãºê, Å°º¸µå, ¸¶¿ì½º, ÇÁ¸°ÅÍ ¾î´ðÅÍ »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù. <verb> T: Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= -1 Spd=12 If#= 0 MxCh= 2 Driver=(root hub) T: Lev=01 Prnt=00 Port=00 Cnt=01 Dev#= 1 Spd=12 If#= 0 MxCh= 4 Driver=hub D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0451 ProdID=1446 Rev= 1.00 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms T: Lev=02 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 If#= 0 MxCh= 0 Driver=printer D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0729 ProdID=1284 Rev= 1.04 C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 98mA I: If#= 0 Alt= 0 #EPs= 1 Cls=07(print) Sub=01 Prot=01 E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms I: If#= 0 Alt= 1 #EPs= 2 Cls=07(print) Sub=01 Prot=02 E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms I: If#= 0 Alt= 2 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl= 0ms E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl= 0ms E: Ad=83(I) Atr=03(Int.) MxPS= 4 Ivl= 1ms T: Lev=02 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=1.5 If#= 0 MxCh= 0 Driver=keyboard D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=045e ProdID=000b Rev= 0.82 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 10ms T: Lev=02 Prnt=01 Port=02 Cnt=03 Dev#= 4 Spd=1.5 If#= 0 MxCh= 0 Driver=mouse D: Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=046d ProdID=c001 Rev= 1.10 C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 50mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 10ms </verb> <p> /proc/bus/usb/devices °á°ú´Â ¸î °¡Áö ±×·ìÀ¸·Î ³ª´©¾îÁø´Ù. <p> <itemize> <item><bf>T:</bf>·Î ½ÃÀÛÇÏ´Â ÇàÀº ÅäÆú·ÎÁö(topology)ÀÌ´Ù. <bf>Lev</bf>´Â ÀåÄ¡ÀÇ ·¹º§À» Ç¥½ÃÇÑ´Ù. ·¹º§ 00Àº ·çÆ®ÇãºêÀÌ°í ·¹º§ 01Àº ·çÆ®Çãºê¿¡ ¿¬°áµÈ ÀåÄ¡, ·¹º§ 02´Â ·¹º§01ÀÎ Çãºê¿¡ ¿¬°áµÈ ÀåÄ¡ µîÀÌ´Ù. <bf>Prnt</bf>´Â ÀÌ ÀåÄ¡ÀÇ »óÀ§ ÀåÄ¡ÀÌ´Ù(00Àº ·çÆ®Çãºê¿Í ·çÆ®Çãºê¿¡ ¿¬°áµÈ ÀåÄ¡¸¦ ÀǹÌÇÑ´Ù). <bf>Port</bf>´Â »óÀ§ ÀåÄ¡ÀÇ Æ÷Æ®ÀÌ´Ù. 00Àº °¢ ÀåÄ¡ÀÇ Ã¹Â° Æ÷Æ®ÀÌ´Ù. <bf>Prnt/Port</bf>´Â °¢ ¹ö½º¿¡¼­ À¯ÀÏÇÑ °ªÀ» °®´Â´Ù. ÅäÆú·ÎÁö ·¹º§ ¾È¿¡¼­ ¹è¿­ ¼ø¼­¿¡ µû¶ó <bf>Cnt</bf>´Â ÇØ´ç ·¹º§¿¡¼­ ÀÌ ÀåÄ¡ÀÇ ¹øÈ£¸¦ Ç¥½ÃÇÑ´Ù. ù ¹ø° ÀåÄ¡ÀÎ 01ºÎÅÍ ½ÃÀÛÇÑ´Ù. <bf>Dev#</bf>´Â ¹ö½º ¹è¿­ ¼ø¼­¿¡ µû¶ó ·¹º§¿¡ °ü°è¾ø´Â ÀåÄ¡ ¹øÈ£ÀÌ´Ù. <bf>Spd</bf>´Â ÀåÄ¡°¡ ÀÛµ¿µÇ´Â ¼Óµµ¸¦ Mbps·Î Ç¥½ÃÇÑ´Ù(ÇöÀç ¹öÀü¿¡¼­´Â 1.5³ª 1.2ÀÌ´Ù). <bf>If#</bf>´Â ÇöÀç »ç¿ëµÇ´Â ÀÎÅÍÆäÀ̽º ¹øÈ£ÀÌ´Ù. <bf>MxCh</bf>´Â ÀÌ ÀåÄ¡¿¡ ¿¬°áµÉ ¼ö ÀÖ´Â ÃÖ´ë ÀåÄ¡ ¼öÀÌ´Ù. Çãºê ¿Ü¿¡´Â ¸ðµÎ 00ÀÌ´Ù. <bf>Driver</bf>´Â ÀÌ ÀåÄ¡¿¡ »ç¿ëµÇ°í ÀÖ´Â ÀåÄ¡ µå¶óÀ̹ö¸¦ Ç¥½ÃÇÑ´Ù('none' Ç׸ñÀº ¾Æ¹«·± µå¶óÀ̹öµµ »ç¿ëµÇÁö ¾ÊÀ½À» ÀǹÌÇÑ´Ù). <p> <item><bf>D:</bf>·Î ½ÃÀ۵Ǵ ÇàÀº ÀåÄ¡ µð½ºÅ©¸³ÅÍ(descriptor) Á¤º¸ÀÌ´Ù. <bf>Ver</bf>´Â ÀåÄ¡°¡ ¿ä±¸ÇÏ´Â USB »ç¾ç ¹öÀüÀ» Ç¥½ÃÇÑ´Ù. <bf>Cls</bf>´Â ÀåÄ¡°¡ ¿äûÇÏ´Â ÀåÄ¡ Ŭ·¡½º¸¦ Ç¥½ÃÇϸç 16Áø¼ö¿Í ¹®ÀÚ¿­·Î Ç¥½ÃÇÑ´Ù. <bf>Cls</bf> Ç׸ñ Áß <bf>00(>ifc)</bf>Àº ÀåÄ¡ Ŭ·¡½º »ç¾ç ¿ä±¸°¡ ÀÎÅÍÆäÀ̽º¿Í µ¶¸³ÀûÀÓÀ» ÀǹÌÇϸç ÀÎÅÍÆäÀ̽º µð½ºÅ©¸³ÅÍ´Â ÀåÄ¡ Ŭ·¡½º Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. <bf>Sub</bf>´Â ÀåÄ¡°¡ ¼ö¿ëÇÏ´Â ¼­ºê Ŭ·¡½º(<bf>Cls</bf> Ç׸ñ ¾È¿¡¼­)¸¦ Ç¥½ÃÇÑ´Ù. <bf>MxPS</bf>´Â ¿£µåÆ÷ÀÎÆ®(Endpoint) 0À¸·ÎºÎÅÍÀÇ ÆÐŶÀÇ ÃÖ´ë Å©±â¸¦ Ç¥½ÃÇÑ´Ù. <bf>Cfgs</bf>´Â ÀåÄ¡ÀÇ ¼³Á¤ °³¼ö¸¦ Ç¥½ÃÇÑ´Ù. <p> <item><bf>D:</bf>¿Í À¯»çÇÏ°Ô <bf>P:</bf>·Î ½ÃÀÛÇÏ´Â ÇàÀº ÀåÄ¡ µð½ºÅ©¸³ÅÍÀÇ Á¤º¸¸¦ Ç¥½ÃÇÏÁö¸¸ ÇÑ ÁÙ¿¡ Ç¥½ÃÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ºÐ¸®µÇ¾î ÀÖ´Ù. <bf>Vendor</bf>´Â ÀåÄ¡ÀÇ ÆǸÅÀÚ °íÀ¯ Äڵ带 Ç¥½ÃÇϸç <bf>ProdID</bf>´Â Á¦Ç° °íÀ¯ Äڵ带 Ç¥½ÃÇÑ´Ù. <bf>Rev</bf>´Â Á¦Ç° °³·® ¹øÈ£ÀÌ´Ù. <p> <item>USB »ç¾ç¼­ 9.7.1ÀýÀ» Âü°íÇϸé ÀåÄ¡ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù. <p> <item><bf>C:</bf>·Î ½ÃÀÛÇÏ´Â ÇàÀº ¼³Á¤ µð½ºÅ©¸³ÅÍÀÇ Á¤º¸ÀÌ´Ù. °¢ ÀåÄ¡ÀÇ <bf>C:</bf>ÇàÀÇ ¹øÈ£´Â <bf>#Cfgs</bf>¿¡ ÀÇÇØ ÇÒ´çµÈ´Ù. ¾Æ½ºÅ׸®Å© ¹®ÀÚ°¡ ºÙÀº Ç׸ñÀº ÇöÀç ¼³Á¤À» ÀǹÌÇÑ´Ù. <bf>#If</bf>´Â ÀåÄ¡ ÀÎÅÍÆäÀ̽º ¼ö¸¦ Ç¥½ÃÇÑ´Ù. <bf>Cfg#</bf>´Â ¾î¶² ¼³Á¤ÀÌ ÇöÀç »ç¿ëµÇ´ÂÁö¸¦ º¸¿©ÁØ´Ù. <bf>Atr</bf>Àº ÀåÄ¡ ¼Ó¼ºÀ» 16Áø¼ö·Î Ç¥½ÃÇÑ °ÍÀÌ´Ù(0x80Àº Àü·ÂÁö¿ø ¹ö½º, 0x40Àº ÀÚü Àü¿ø, 0x20Àº ¿ø°Ý ½Ãµ¿ °¡´É). <bf>MPwr</bf>Àº ÇöÀç ÀåÄ¡ ¼³Á¤¿¡¼­ÀÇ ÃÖ´ë Àü·Â »ç¿ë °ªÀÌ¸ç ¹Ð¸®¾ÏÆä¾î·Î Ç¥½ÃÇÑ´Ù. USB »ç¾ç¼­ 9.7.2ÀýÀ» Âü°íÇÏ¸é ¼³Á¤ µð½ºÅ©¸³ÅÍÀÇ Ãß°¡ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù. <p> <item><bf>I:</bf>·Î ½ÃÀÛÇÏ´Â ÇàÀº ÀÎÅÍÆäÀ̽º µð½ºÅ©¸³ÅÍÀÇ Á¤º¸ÀÌ´Ù. °¢ <bf>C:</bf>ÇàÀÇ <bf>I:</bf>Çà ¹øÈ£´Â <bf>#Ifs</bf> Ç׸ñ¿¡ ÀÇÇØ ÇÒ´çµÈ´Ù. <bf>If#</bf>´Â ÇØ´ç ÀåÄ¡ ¼³Á¤¿¡¼­ ¾î´À ÀÎÅÍÆäÀ̽º°¡ »ç¿ëµÇ´ÂÁö¸¦ Ç¥½ÃÇÑ´Ù. <bf>Alt</bf>´Â ÇØ´ç ÀÎÅÍÆäÀ̽º¿¡ ¾î¶² ´ëü ¼³Á¤ÀÌ ¼³Á¤µÇ¾î ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù. <bf>#EPs</bf>´Â ÇØ´ç ¿£µåÆ÷ÀÎÆ®ÀÇ ´ëü ¼³Á¤ °¡¿îµ¥ ¾ó¸¶³ª ¸¹Àº ¿£µåÆ÷ÀÎÆ®°¡ ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù. <bf>Cls</bf>´Â ´ëü ÀÎÅÍÆäÀ̽º ¼³Á¤ÀÌ ¾î´À Ŭ·¡½º¿¡ ÇØ´çµÇ´ÂÁö¸¦ 16Áø¼ö¿Í ¹®ÀÚ¿­·Î ³ªÅ¸³½´Ù. <bf>Sub</bf>´Â ÀÎÅÍÆäÀ̽ºÀÇ ´ëü ¼³Á¤ÀÌ ¾î´À ÇÏÀ§ Ŭ·¡½º¿¡ ÇØ´çµÇ´ÂÁö¸¦ ³ªÅ¸³½´Ù. <bf>Prot</bf>´Â ´ëü ÀÎÅÍÆäÀ̽º°¡ ¾î¶² ÀÎÅÍÆäÀ̽º ÇÁ·ÎÅäÄÝ(Ŭ·¡½º¿Í ÇÏÀ§Å¬·¡½º ÁýÇÕ °¡¿îµ¥¿¡¼­)¿¡ ÀûÇÕÇÑÁö¸¦ º¸¿©ÁØ´Ù. USB »ç¾ç¼­ 9.7.3ÀýÀ» Âü°íÇ϶ó. <p> <item><bf>F:</bf>·Î ½ÃÀÛÇÏ´Â ÇàÀº ÀÎÅÍÆäÀ̽º µð½ºÅ©¸³ÅÍÀÇ Á¤º¸ÀÌ´Ù. °¢°¢ÀÇ <bf>I:</bf> Çà¿¡¼­ÀÇ <bf>E:</bf>Çà ¹øÈ£´Â <bf>#EPs</bf> Ç׸ñ¿¡¼­ ÁÖ¾îÁø´Ù. ¿£µåÆ÷ÀÎÆ® 0Àº Ç¥½ÃµÇÁö ¾Ê´Â´Ù. <bf>Ad</bf>´Â ¿£µåÆ÷ÀÎÆ® ÁÖ¼Ò¸¦ ³ªÅ¸³»¸ç ¿£µåÆ÷ÀÎÆ®°¡ ÀÔ·Â/Ãâ·Â °¡¿îµ¥ ¾î´À °ÍÀÎÁö¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. <bf>Atr</bf>Àº ¿£µåÆ÷ÀÎÆ®¿¡ »ç¿ëµÇ´Â ¼Ó¼º(Àü¼Û ŸÀÔ)À» ³ªÅ¸³»¸ç Àü¼ÛŸÀÔÀ» ¼³¸íÇÏ´Â ¹®ÀÚ¿­ÀÌ µÚ¿¡ ³ª¿Â´Ù. <bf>MxPS</bf>´Â ÇØ´ç ¿£µåÆ÷ÀÎÆ®°¡ ÀûÀýÈ÷ ¼Û¼ö½ÅÇÒ ¼ö ÀÖ´Â ÃÖ´ë ÆÐŶÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù. µî½Ã Àü¼Û(isochronous transfer)ÀÇ °æ¿ì <bf>MxPS</bf>´Â ¿ä±¸µÇ´Â ´ë¿ªÆøÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù. <bf>Ivl</bf>Àº ¿£µåÆ÷ÀÎÆ® ÀÎÅÍ·´Æ® È£ÃâÀÇ °£°ÝÀ» ¹Ð¸®ÃÊ ´ÜÀ§·Î ³ªÅ¸³½´Ù. <bf>Ivl</bf>Àº ¹úÅ©¿Í Á¦¾î Àü¼Û(bulk and control transfers)¿¡¼­´Â ¹«½ÃµÇ¸ç µî½ÃÀü¼Û¿¡¼­´Â 1·Î ¼³Á¤µÈ´Ù. ¿£µåÆ÷ÀÎÆ® µð½ºÅ©¸³ÅÍ¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀº USB »ç¾ç¼­ 9.7.4ÀýÀ» º¸¶ó. </itemize> <p> <tt>/proc/bus/usb</tt>¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº <tt>linux/Documentation/proc_usb_format.txt</tt>¸¦ Âü°íÇ϶ó. <sect>ÀÚÁÖ Áú¹® ¹Þ´Â °Íµé(FAQs) <p> ÀÌÀåÀº ¹Ýº¹µÇ´Â Áú¹®µé¿¡ ´ëÇÑ ´äº¯ÀÌ´Ù. <p> <bf/µå¶óÀ̹ö¸¦ ¸¸µé·Á¸é ¾î¶»°Ô ÇؾßÇϳª¿ä/ <p> Ä¿³Î¼Ò½º¸¦ °øºÎÇ϶ó. ´ç½ÅÀÌ ¿øÇÏ´Â °Í°ú À¯»çÇÑ µå¶óÀ̹ö°¡ ÀÖÀ¸¸é ÀÛµ¿µÉ ¶§±îÁö °³Á¶Ç϶ó. ¿©±â¼­ À¯»çÇÏ´Ù´Â °ÍÀº ´ç½ÅÀÌ Àü¼ÛÇÏ°íÀÚ ÇÏ´Â °Í¿¡ °üÇÑ °ÍÀÌÁö ÀåÄ¡°¡ ¾î¶»°Ô »ý°å´ÂÁö¸¦ ¸»ÇÏ´Â °ÍÀÌ ¾Æ´Ï´Ù. <p> <bf/USB¿¡ °üÇÑ ÁÁÀº Ã¥ÀÌ ÀÖ´Ù¸é/ <p> ³ª´Â ´ÜÁö ÇÑ ±ÇÀ» Àоú´Âµ¥ ¸Å¿ì ºÎ½ÇÇÏ´Ù°í »ý°¢Çß´Ù. <url url="http://www.usb.org" name="http://www.usb.org">¿¡¼­ »ç¾ç¼­¸¦ ±¸Çغ¸±â¸¦ ±ÇÇÑ´Ù. ±×°ÍÀº ¹«·áÀ̸ç Àб⠽±°í ÃֽŠ³»¿ëµéÀÌ´Ù. <p> <bf/ƯÁ¤ ¾÷ü°¡ µ¶ÀÚÀûÀ¸·Î ¸¸µç(vendor specific) ÀåÄ¡¸¦ °®°í ÀÖ¾î¿ä. µð½ºÅ©¸³ÅÍ´Â ÀÌ·¸°Ô µÇ¾î ÀÖ±¸¿ä/ <p> µð½ºÅ©¸³ÅÍ´Â µå¶óÀ̹ö¸¦ ¸¸µå´Â µ¥¿¡ ÇʼöÀûÀ̳ª ±×°Í¸¸À¸·Î ÃæºÐÇÏÁö´Â ¾Ê´Ù. ¾÷ü·ÎºÎÅÍ Àú¼öÁØ ¼³°è ¼¼ºÎ³»¿ëÀ» ¾Ë¾Æ¾ß ÇÑ´Ù. °Ô´Ù°¡ µð½ºÅ©¸³ÅÍ°¡ »ç¾çÀ» ÁؼöÇÏÁö ¾Ê´Â´Ù ÇÏ¿© ³î¶óÁö ¸¶¶ó - ³»°¡ ÇØ ÁÙ ¼ö ÀÖ´Â ¸»Àº ±× ¾÷üÀÇ ÀåÄ¡¸¦ »ç¿ëÇÏÁö ¸»¶ó´Â°Ô ÀüºÎ´Ù. µð½ºÅ©¸³ÅÍ´Â ´Ü¼øÇÑ ÀåÄ¡¿ë µ¥ÀÌÅÍ ¹ÙÀÌÆ®À̸ç, ÀåÄ¡¸¦ ÀçÇÁ·Î±×·¡¹ÖÇϸé ÀåÄ¡ÀÇ ¿ëµµ¿¡ °ü°è¾øÀÌ ¾î¶² ¹®ÀÚ¸¦ Ç¥½ÃµÇ°Ô ÇÒ ¼ö ÀÖ´Ù. <p> <bf/µå¶óÀ̹ö¿¡ ¾î¶² ¸ÞÀÌÀú ³Ñ¹ö¿Í ¸¶ÀÌ³Ê ³Ñ¹ö¸¦ »ç¿ëÇØ¾ß Çϳª¿ä/ <p> ½ÇÇèÀû ¶Ç´Â ½ÃÇè¿ë ¹üÀ§ÀÇ ¹øÈ£¸¦ »ç¿ëÇ϶ó. ÇöÀç·Î¼­´Â USB¿¡ ÇÒ´çµÈ °ø½Ä ¸ÞÀÌÀú ³Ñ¹ö´Â ¾ø´Ù. ¸¶À̳ʴ ¾Æ¹«°Å³ª »ç¿ëÇ϶ó. <p> <bf/Sony Vaio laptop¿¡¼­ USB¸¦ »ç¿ëÇÏ°í ½ÍÀºµ¥¿ä/ <p> BIOS¿¡¼­ Plug-n-Pray ¿î¿µÃ¼Á¦ Áö¿ø Ç׸ñÀ» ¼±ÅÃÇÏÁö ¾ÊÀ¸¸é Àß ÀÛµ¿ÇÒ °ÍÀÌ´Ù. <p> <bf/USB-HOWTO ¹®¼­ÀÇ ÃÖ½ÅÆÇÀº ¾îµð¼­ ±¸Çϳª¿ä/ <p> ¿©±é´Ï´Ù <url url="http://www.dynamine.net/linux-usb/HOWTO" name="http://www.dynamine.net/linux-usb/HOWTO">. <sect>Á¤Á¤ <p> ÀÌ ¹®¼­¿¡ °üÇؼ­ ¾ê±âÇÒ °ÍÀÌ ÀÖÀ¸¸é µÇµµ·ÏÀ̸é <htmlurl url="mailto:brad.hards@dao.defence.gov.au" name="brad.hards@dao.defence.gov.au">·Î ¸ÞÀÏÀ» º¸³»´Â °ÍÀÌ ÁÁ´Ù. º¸³¾ ¶§´Â ¹öÀü ¹øÈ£ ($Revision: 1.2 $)¸¦ ¸í½ÃÇϵµ·Ï ÇÑ´Ù. <!-- ²ôÆ®! --> </article>