{"id":4949,"date":"2022-01-02T18:47:07","date_gmt":"2022-01-02T09:47:07","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=4949"},"modified":"2022-01-02T18:47:11","modified_gmt":"2022-01-02T09:47:11","slug":"linux-usb-driver-xbox3601","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/linux-usb-driver-xbox3601\/","title":{"rendered":"linux usb driver xbox360(1)"},"content":{"rendered":"\n<p>\uc9d1\uc5d0\uc11c \ub180\uace0 \uc788\ub358 8\ub144 \uc804\uc5d0 \uad6c\ub9e4\ud55c xbox 360 \uc720\uc120 usb \ud328\ub4dc\ub97c raspberry pi4\uc5d0 \ub4f1\ub85d\ud558\uc5ec \uc0ac\uc6a9\ud558\uace0 \uc2f6\ub2e4. \ub098\uc628 \uc9c0 \uc624\ub798\ub418\uc5b4 \uc774\ubbf8 xpad \ub9ac\ub205\uc2a4 \ub4dc\ub77c\uc774\ubc84\uac00 \uacf5\uac1c\ub418\uc5b4 \uc788\ub2e4. \uadf8\ub7ec\ub098 usb, input\uc744 \ud55c\ubc88\uc5d0 \uc0ac\uc6a9\ud558\uc5ec \uc798 \uc774\ud574\ub418\uc9c0 \uc54a\ub294\ub2e4. \ub0a8\uc740 \ucd9c\uc7a5 \uae30\uac04 \uc911 \ucc9c\ucc9c\ud788 \uacf5\ubd80 \ud558\uae30\ub85c \ud588\ub2e4. <\/p>\n\n\n\n<p>usb\ub97c \ub4f1\ub85d\ud558\ub824\uba74 vendor id, product id, \uc5f0\uacb0\ub418\uba74 \uc2e4\ud589\ub418\ub294 call back probe, disconnect \ub4f1 \uc744 \uc54c\uc544\uc57c \ud55c\ub2e4. \uc778\ud130\ub137\uc5d0 \uacf5\uac1c\ub41c \uc88b\uc740 \uc790\ub8cc, \uc18c\uc2a4\ub97c \uacf5\ubd80\ud588\ub2e4. \uad00\ub828 \ucf54\ub4dc\ub294 <a href=\"https:\/\/github.com\/now0930\/xbox_driver.git\">\uc5ec\uae30<\/a>\uc5d0 \uc800\uc7a5\ud588\ub2e4.<\/p>\n\n\n\n<p>usb-devices\ub85c xbox \ud328\ub4dc\ub97c \ud655\uc778\ud558\uba74 (I\uac00 interface \uc778\ub4ef\ud558\ub2e4) 0, 1, 2, 3\uc778\ud130\ud398\uc774\uc2a4\uac00 \ub4f1\ub85d\ub418\uc9c0 \uc54a\uc558\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pi@raspberrypi:~\/rasp\/xbox_driver $ usb-devices \nT:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0\nD:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS= 8 #Cfgs=  1\nP:  Vendor=045e ProdID=028e Rev=01.14\nS:  Manufacturer=\u00a9Microsoft Corporation\nS:  Product=Controller\nS:  SerialNumber=0C59FC4\nC:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA\nI:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=5d Prot=01 Driver=(none)\nI:  If#=0x1 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=5d Prot=03 Driver=(none)\nI:  If#=0x2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=5d Prot=02 Driver=(none)\nI:  If#=0x3 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=fd Prot=13 Driver=(none)<\/pre>\n\n\n\n<p>usb_register_dev\ub85c interface 0, 1\uc744 \ub4f1\ub85d\ud588\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pi@raspberrypi:~\/rasp\/xbox_driver $ usb-devices \nT:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0\nD:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS= 8 #Cfgs=  1\nP:  Vendor=045e ProdID=028e Rev=01.14\nS:  Manufacturer=\u00a9Microsoft Corporation\nS:  Product=Controller\nS:  SerialNumber=0C59FC4\nC:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA\nI:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=5d Prot=01 Driver=xbox360\nI:  If#=0x1 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=5d Prot=03 Driver=xbox360\nI:  If#=0x2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=5d Prot=02 Driver=(none)\nI:  If#=0x3 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=fd Prot=13 Driver=(none)\n\npi@raspberrypi:~\/rasp\/xbox_driver $ dmesg \n[48226.848081] xpad is 0c15d4e5, xpad->udev is 14758ec9\n[48226.848101] interface is 913f883f\n[48226.848126] xbox360 1-1.1:1.0: interrupt in, out found. 55429370, 0119bb5d\n[48226.848528] xbox360 1-1.1:1.0: usb xbox360 driver was registerd\n[48226.848710] xpad is a5c87389, xpad->udev is 14758ec9\n[48226.848726] interface is f687e098\n[48226.848746] xbox360 1-1.1:1.1: interrupt in, out found. efcdcd2e, 2fcb2b2f\n[48226.849000] xbox360 1-1.1:1.1: usb xbox360 driver was registerd\n[48226.849162] xpad is 5c5394a1, xpad->udev is 14758ec9\n[48226.849178] interface is 7fa06804\n[48226.849196] xbox360 1-1.1:1.2: Could not find both interrupt-in and interrpt-out endpoints\n[48226.849211] error -6\n[48226.849304] xpad is 5c5394a1, xpad->udev is 14758ec9\n[48226.849320] interface is c9ea30ca\n[48226.849337] xbox360 1-1.1:1.3: Could not find both interrupt-in and interrpt-out endpoints\n[48226.849352] error -6\n[48226.849490] usbcore: registered new interface driver xbox360<\/pre>\n\n\n\n<p>\ucc38\uc870 \uc0ac\uc774\ud2b8.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/static.lwn.net\/images\/pdf\/LDD3\/ch13.pdf\">Linux Device Drivers, Third Edition,Chapter 13<\/a>, <\/li><li><a href=\"https:\/\/www.beyondlogic.org\/usbnutshell\/usb1.shtml#Introduction\">USB in a NutShell<\/a><\/li><li><a href=\"https:\/\/kernel.readthedocs.io\/en\/sphinx-samples\/writing_usb_driver.html\">Writing USB Device Drivers<a href=\"https:\/\/kernel.readthedocs.io\/en\/sphinx-samples\/writing_usb_driver.html#writing-usb-device-drivers\"><\/a><\/a><\/li><li><a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/master\/drivers\/usb\/usb-skeleton.c\">usb-skeleton.c<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uc9d1\uc5d0\uc11c \ub180\uace0 \uc788\ub358 8\ub144 \uc804\uc5d0 \uad6c\ub9e4\ud55c xbox 360 \uc720\uc120 usb \ud328\ub4dc\ub97c raspberry pi4\uc5d0 \ub4f1\ub85d\ud558\uc5ec \uc0ac\uc6a9\ud558\uace0 \uc2f6\ub2e4. \ub098\uc628 \uc9c0 \uc624\ub798\ub418\uc5b4 \uc774\ubbf8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[12],"tags":[775,949,53,1022,950],"class_list":["post-4949","post","type-post","status-publish","format-standard","hentry","category-12","tag-c","tag-driver","tag-linux","tag-skeleton","tag-usb"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4949","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=4949"}],"version-history":[{"count":7,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4949\/revisions"}],"predecessor-version":[{"id":4957,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4949\/revisions\/4957"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=4949"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=4949"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=4949"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}