´ÙÀ½
ÀÌÀü
Â÷·Ê
/procÀÇ USB Áö¿øÀ» À§Çؼ´Â Preliminary /proc/bus/usb support¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ±×¸®°í À§¿¡¼ ¼³¸íÇÑ´ë·Î ÀçÄÄÆÄÀÏÇÏ°í À缳ġÇ϶ó.
USBÀÇ /proc
Áö¿ø Ç׸ñÀº ÇöÀç 2°¡ÁöÀÇ ÀÎÅÍÆäÀ̽º¸¦ °®°í Àִµ¥, /proc/bus/usb/drivers
¿Í /proc/bus/usb/devices
ÀÌ´Ù.
/proc/bus/usb/drivers
´Â ÇöÀç µî·ÏµÈ µå¶óÀ̹ö ¸®½ºÆ®¸¦ º¸¿©ÁØ´Ù(µå¶óÀ̹ö°¡ ÀåÄ¡¿¡¼ »ç¿ëµÇÁö ¾Ê°í ÀÖ´õ¶óµµ). ¸ðµâ ¼³Ä¡ Å×½ºÆ®³ª ƯÁ¤(unknown) Ä¿³Î¿¡¼ USB Áö¿ø ¿©ºÎ¸¦ »ìÆ캼 ¶§ À¯¿ëÇÏ´Ù. ¾Æ·¡ÀÇ ¿¹¸¦ º¸¶ó.
[bradh@rachel bradh]$ more /proc/bus/usb/drivers
hub
printer
keyboard
mouse
/proc/bus/usb/devices
´Â ÇöÀç USB ¹ö½º¿¡ ¿¬°áµÈ ÀåÄ¡¿¡ ´ëÇÑ Á¤º¸¸¦ Ç¥½ÃÇÑ´Ù. °¢ ÀåÄ¡°¡ Á¦´ë·Î ¼³Á¤µÇ¾ú´ÂÁö¸¦ ÆľÇÇϴµ¥ À¯¿ëÇÏ´Ù. ¾Æ·¡ÀÇ ¿¹´Â ·çÆ®Çãºê, Çãºê, Å°º¸µå, ¸¶¿ì½º, ÇÁ¸°ÅÍ ¾î´ðÅÍ »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù.
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
/proc/bus/usb/devices °á°ú´Â ¸î °¡Áö ±×·ìÀ¸·Î ³ª´©¾îÁø´Ù.
- T:·Î ½ÃÀÛÇÏ´Â ÇàÀº ÅäÆú·ÎÁö(topology)ÀÌ´Ù. Lev´Â ÀåÄ¡ÀÇ ·¹º§À» Ç¥½ÃÇÑ´Ù. ·¹º§ 00Àº ·çÆ®ÇãºêÀÌ°í ·¹º§ 01Àº ·çÆ®Çãºê¿¡ ¿¬°áµÈ ÀåÄ¡, ·¹º§ 02´Â ·¹º§01ÀÎ Çãºê¿¡ ¿¬°áµÈ ÀåÄ¡ µîÀÌ´Ù. Prnt´Â ÀÌ ÀåÄ¡ÀÇ »óÀ§ ÀåÄ¡ÀÌ´Ù(00Àº ·çÆ®Çãºê¿Í ·çÆ®Çãºê¿¡ ¿¬°áµÈ ÀåÄ¡¸¦ ÀǹÌÇÑ´Ù). Port´Â »óÀ§ ÀåÄ¡ÀÇ Æ÷Æ®ÀÌ´Ù. 00Àº °¢ ÀåÄ¡ÀÇ Ã¹Â° Æ÷Æ®ÀÌ´Ù. Prnt/Port´Â °¢ ¹ö½º¿¡¼ À¯ÀÏÇÑ °ªÀ» °®´Â´Ù. ÅäÆú·ÎÁö ·¹º§ ¾È¿¡¼ ¹è¿ ¼ø¼¿¡ µû¶ó Cnt´Â ÇØ´ç ·¹º§¿¡¼ ÀÌ ÀåÄ¡ÀÇ ¹øÈ£¸¦ Ç¥½ÃÇÑ´Ù. ù ¹ø° ÀåÄ¡ÀÎ 01ºÎÅÍ ½ÃÀÛÇÑ´Ù. Dev#´Â ¹ö½º ¹è¿ ¼ø¼¿¡ µû¶ó ·¹º§¿¡ °ü°è¾ø´Â ÀåÄ¡ ¹øÈ£ÀÌ´Ù. Spd´Â ÀåÄ¡°¡ ÀÛµ¿µÇ´Â ¼Óµµ¸¦ Mbps·Î Ç¥½ÃÇÑ´Ù(ÇöÀç ¹öÀü¿¡¼´Â 1.5³ª 1.2ÀÌ´Ù). If#´Â ÇöÀç »ç¿ëµÇ´Â ÀÎÅÍÆäÀ̽º ¹øÈ£ÀÌ´Ù. MxCh´Â ÀÌ ÀåÄ¡¿¡ ¿¬°áµÉ ¼ö ÀÖ´Â ÃÖ´ë ÀåÄ¡ ¼öÀÌ´Ù. Çãºê ¿Ü¿¡´Â ¸ðµÎ 00ÀÌ´Ù. Driver´Â ÀÌ ÀåÄ¡¿¡ »ç¿ëµÇ°í ÀÖ´Â ÀåÄ¡ µå¶óÀ̹ö¸¦ Ç¥½ÃÇÑ´Ù('none' Ç׸ñÀº ¾Æ¹«·± µå¶óÀ̹öµµ »ç¿ëµÇÁö ¾ÊÀ½À» ÀǹÌÇÑ´Ù).
- D:·Î ½ÃÀ۵Ǵ ÇàÀº ÀåÄ¡ µð½ºÅ©¸³ÅÍ(descriptor) Á¤º¸ÀÌ´Ù. Ver´Â ÀåÄ¡°¡ ¿ä±¸ÇÏ´Â USB »ç¾ç ¹öÀüÀ» Ç¥½ÃÇÑ´Ù. Cls´Â ÀåÄ¡°¡ ¿äûÇÏ´Â ÀåÄ¡ Ŭ·¡½º¸¦ Ç¥½ÃÇϸç 16Áø¼ö¿Í ¹®ÀÚ¿·Î Ç¥½ÃÇÑ´Ù. Cls Ç׸ñ Áß 00(>ifc)Àº ÀåÄ¡ Ŭ·¡½º »ç¾ç ¿ä±¸°¡ ÀÎÅÍÆäÀ̽º¿Í µ¶¸³ÀûÀÓÀ» ÀǹÌÇϸç ÀÎÅÍÆäÀ̽º µð½ºÅ©¸³ÅÍ´Â ÀåÄ¡ Ŭ·¡½º Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ¾î¾ß ÇÑ´Ù. Sub´Â ÀåÄ¡°¡ ¼ö¿ëÇÏ´Â ¼ºê Ŭ·¡½º(Cls Ç׸ñ ¾È¿¡¼)¸¦ Ç¥½ÃÇÑ´Ù. MxPS´Â ¿£µåÆ÷ÀÎÆ®(Endpoint) 0À¸·ÎºÎÅÍÀÇ ÆÐŶÀÇ ÃÖ´ë Å©±â¸¦ Ç¥½ÃÇÑ´Ù. Cfgs´Â ÀåÄ¡ÀÇ ¼³Á¤ °³¼ö¸¦ Ç¥½ÃÇÑ´Ù.
- D:¿Í À¯»çÇÏ°Ô P:·Î ½ÃÀÛÇÏ´Â ÇàÀº ÀåÄ¡ µð½ºÅ©¸³ÅÍÀÇ Á¤º¸¸¦ Ç¥½ÃÇÏÁö¸¸ ÇÑ ÁÙ¿¡ Ç¥½ÃÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ºÐ¸®µÇ¾î ÀÖ´Ù. Vendor´Â ÀåÄ¡ÀÇ ÆǸÅÀÚ °íÀ¯ Äڵ带 Ç¥½ÃÇϸç ProdID´Â Á¦Ç° °íÀ¯ Äڵ带 Ç¥½ÃÇÑ´Ù. Rev´Â Á¦Ç° °³·® ¹øÈ£ÀÌ´Ù.
- USB »ç¾ç¼ 9.7.1ÀýÀ» Âü°íÇϸé ÀåÄ¡ µð½ºÅ©¸³ÅÍ¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
- C:·Î ½ÃÀÛÇÏ´Â ÇàÀº ¼³Á¤ µð½ºÅ©¸³ÅÍÀÇ Á¤º¸ÀÌ´Ù. °¢ ÀåÄ¡ÀÇ C:ÇàÀÇ ¹øÈ£´Â #Cfgs¿¡ ÀÇÇØ ÇÒ´çµÈ´Ù. ¾Æ½ºÅ׸®Å© ¹®ÀÚ°¡ ºÙÀº Ç׸ñÀº ÇöÀç ¼³Á¤À» ÀǹÌÇÑ´Ù. #If´Â ÀåÄ¡ ÀÎÅÍÆäÀ̽º ¼ö¸¦ Ç¥½ÃÇÑ´Ù. Cfg#´Â ¾î¶² ¼³Á¤ÀÌ ÇöÀç »ç¿ëµÇ´ÂÁö¸¦ º¸¿©ÁØ´Ù. AtrÀº ÀåÄ¡ ¼Ó¼ºÀ» 16Áø¼ö·Î Ç¥½ÃÇÑ °ÍÀÌ´Ù(0x80Àº Àü·ÂÁö¿ø ¹ö½º, 0x40Àº ÀÚü Àü¿ø, 0x20Àº ¿ø°Ý ½Ãµ¿ °¡´É). MPwrÀº ÇöÀç ÀåÄ¡ ¼³Á¤¿¡¼ÀÇ ÃÖ´ë Àü·Â »ç¿ë °ªÀÌ¸ç ¹Ð¸®¾ÏÆä¾î·Î Ç¥½ÃÇÑ´Ù. USB »ç¾ç¼ 9.7.2ÀýÀ» Âü°íÇÏ¸é ¼³Á¤ µð½ºÅ©¸³ÅÍÀÇ Ãß°¡ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
- I:·Î ½ÃÀÛÇÏ´Â ÇàÀº ÀÎÅÍÆäÀ̽º µð½ºÅ©¸³ÅÍÀÇ Á¤º¸ÀÌ´Ù. °¢ C:ÇàÀÇ I:Çà ¹øÈ£´Â #Ifs Ç׸ñ¿¡ ÀÇÇØ ÇÒ´çµÈ´Ù. If#´Â ÇØ´ç ÀåÄ¡ ¼³Á¤¿¡¼ ¾î´À ÀÎÅÍÆäÀ̽º°¡ »ç¿ëµÇ´ÂÁö¸¦ Ç¥½ÃÇÑ´Ù. Alt´Â ÇØ´ç ÀÎÅÍÆäÀ̽º¿¡ ¾î¶² ´ëü ¼³Á¤ÀÌ ¼³Á¤µÇ¾î ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù. #EPs´Â ÇØ´ç ¿£µåÆ÷ÀÎÆ®ÀÇ ´ëü ¼³Á¤ °¡¿îµ¥ ¾ó¸¶³ª ¸¹Àº ¿£µåÆ÷ÀÎÆ®°¡ ÀÖ´ÂÁö¸¦ º¸¿©ÁØ´Ù. Cls´Â ´ëü ÀÎÅÍÆäÀ̽º ¼³Á¤ÀÌ ¾î´À Ŭ·¡½º¿¡ ÇØ´çµÇ´ÂÁö¸¦ 16Áø¼ö¿Í ¹®ÀÚ¿·Î ³ªÅ¸³½´Ù. Sub´Â ÀÎÅÍÆäÀ̽ºÀÇ ´ëü ¼³Á¤ÀÌ ¾î´À ÇÏÀ§ Ŭ·¡½º¿¡ ÇØ´çµÇ´ÂÁö¸¦ ³ªÅ¸³½´Ù. Prot´Â ´ëü ÀÎÅÍÆäÀ̽º°¡ ¾î¶² ÀÎÅÍÆäÀ̽º ÇÁ·ÎÅäÄÝ(Ŭ·¡½º¿Í ÇÏÀ§Å¬·¡½º ÁýÇÕ °¡¿îµ¥¿¡¼)¿¡ ÀûÇÕÇÑÁö¸¦ º¸¿©ÁØ´Ù. USB »ç¾ç¼ 9.7.3ÀýÀ» Âü°íÇ϶ó.
- F:·Î ½ÃÀÛÇÏ´Â ÇàÀº ÀÎÅÍÆäÀ̽º µð½ºÅ©¸³ÅÍÀÇ Á¤º¸ÀÌ´Ù. °¢°¢ÀÇ I: Çà¿¡¼ÀÇ E:Çà ¹øÈ£´Â #EPs Ç׸ñ¿¡¼ ÁÖ¾îÁø´Ù. ¿£µåÆ÷ÀÎÆ® 0Àº Ç¥½ÃµÇÁö ¾Ê´Â´Ù. Ad´Â ¿£µåÆ÷ÀÎÆ® ÁÖ¼Ò¸¦ ³ªÅ¸³»¸ç ¿£µåÆ÷ÀÎÆ®°¡ ÀÔ·Â/Ãâ·Â °¡¿îµ¥ ¾î´À °ÍÀÎÁö¸¦ ³ªÅ¸³»´Â ¹®ÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. AtrÀº ¿£µåÆ÷ÀÎÆ®¿¡ »ç¿ëµÇ´Â ¼Ó¼º(Àü¼Û ŸÀÔ)À» ³ªÅ¸³»¸ç Àü¼ÛŸÀÔÀ» ¼³¸íÇÏ´Â ¹®ÀÚ¿ÀÌ µÚ¿¡ ³ª¿Â´Ù. MxPS´Â ÇØ´ç ¿£µåÆ÷ÀÎÆ®°¡ ÀûÀýÈ÷ ¼Û¼ö½ÅÇÒ ¼ö ÀÖ´Â ÃÖ´ë ÆÐŶÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù. µî½Ã Àü¼Û(isochronous transfer)ÀÇ °æ¿ì MxPS´Â ¿ä±¸µÇ´Â ´ë¿ªÆøÀÇ Å©±â¸¦ ³ªÅ¸³½´Ù. IvlÀº ¿£µåÆ÷ÀÎÆ® ÀÎÅÍ·´Æ® È£ÃâÀÇ °£°ÝÀ» ¹Ð¸®ÃÊ ´ÜÀ§·Î ³ªÅ¸³½´Ù. IvlÀº ¹úÅ©¿Í Á¦¾î Àü¼Û(bulk and control transfers)¿¡¼´Â ¹«½ÃµÇ¸ç µî½ÃÀü¼Û¿¡¼´Â 1·Î ¼³Á¤µÈ´Ù. ¿£µåÆ÷ÀÎÆ® µð½ºÅ©¸³ÅÍ¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀº USB »ç¾ç¼ 9.7.4ÀýÀ» º¸¶ó.
/proc/bus/usb
¿¡ °üÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº linux/Documentation/proc_usb_format.txt
¸¦ Âü°íÇ϶ó.
´ÙÀ½
ÀÌÀü
Â÷·Ê