{"id":4958,"date":"2022-01-11T12:00:10","date_gmt":"2022-01-11T03:00:10","guid":{"rendered":"https:\/\/now0930.pe.kr\/wordpress\/?p=4958"},"modified":"2022-01-13T09:33:38","modified_gmt":"2022-01-13T00:33:38","slug":"linux-usb-driver-xbox3602","status":"publish","type":"post","link":"https:\/\/now0930.pe.kr\/wordpress\/linux-usb-driver-xbox3602\/","title":{"rendered":"linux usb driver xbox360(2)"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">LED \uc81c\uc5b4\ud558\uae30<\/h4>\n\n\n\n<p>xbox 360 \ucee8\ud2b8\ub864\ub7ec\uac00 4\uac1c LED\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \ucd1d 4\uba85 \ud50c\ub808\uc774\uc5b4\uac00 \uc788\uc744 \uacbd\uc6b0 1 ~ 4\uae4c\uc9c0 \uc2dc\uacc4 \ubc29\ud5a5\uc73c\ub85c \ub7a8\ud504\ub97c \ucf1c\uc8fc\uac8c \ub41c\ub2e4. usb -&gt; input \ubc84\ud2bc \uc785\ub825\uc744 \ubc1b\uc544 \ub4e4\uc774\uae30 \uc804 \uac04\ub2e8\ud574 \ubcf4\ub294 LED \uc81c\uc5b4\ub97c \ud574\ubcf4\uae30\ub85c \ud588\ub2e4. \ud558..\uc5b4\ub835\ub2e4. \uc785\ub825 \ubc1b\uc544\ub4e4\uc774\ub294 \uac83 \ubcf4\ub2e4 \ub354 \uc5b4\ub824\uc6b4 \ub4ef \ud558\ub2e4.<\/p>\n\n\n\n<p>cdev_led_register\ub97c \uc2e4\ud589\ud558\uba74 \/sys\/class\/led\uc5d0 led \ubaa8\ub4c8\uc774 \ub4f1\ub85d\ub41c\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:\/sys\/class\/leds $ dmesg | tail -20\n[ 7044.723682] leds xpad_led: Setting an LED's brightness failed (-524)\n[ 7044.723824] disconnected\n[ 7344.482279] xpad is 56bd80be, xpad->udev is 7ea0c81d\n[ 7344.482296] interface is 49be3431\n[ 7344.482318] xbox360 1-1.1:1.0: interrupt in, out found. 2cedb0f6, 62b37858\n[ 7344.482579] xbox360 1-1.1:1.0: usb xbox360 driver was registerd\n[ 7344.482861] xpad is db7e959d, xpad->udev is 7ea0c81d\n[ 7344.482875] interface is c0605ae3\n[ 7344.482893] xbox360 1-1.1:1.1: interrupt in, out found. 6497d636, 4bf83f77\n[ 7344.483394] xbox360 1-1.1:1.1: usb xbox360 driver was registerd\n[ 7344.483545] usb 1-1.1: Led xpad_led renamed to xpad_led_1 due to name collision\n[ 7344.483699] xpad is 2c597e01, xpad->udev is 7ea0c81d\n[ 7344.483713] interface is dfef8df2\n[ 7344.483730] xbox360 1-1.1:1.2: Could not find both interrupt-in and interrpt-out endpoints\n[ 7344.483743] error -6\n[ 7344.483824] xpad is 2c597e01, xpad->udev is 7ea0c81d\n[ 7344.483837] interface is f1417f63\n[ 7344.483852] xbox360 1-1.1:1.3: Could not find both interrupt-in and interrpt-out endpoints\n[ 7344.483865] error -6\n[ 7344.483985] usbcore: registered new interface driver xbox360\n\n\npi@raspberrypi:\/sys\/class\/leds $ ls -tl\ntotal 0\nlrwxrwxrwx 1 root root 0 Jan  4 23:52 xpad_led -> ..\/..\/devices\/platform\/scb\/fd500000.pcie\/pci0000:00\/0000:00:00.0\/0000:01:00.0\/usb1\/1-1\/1-1.1\/leds\/xpad_led\nlrwxrwxrwx 1 root root 0 Jan  4 23:52 xpad_led_1 -> ..\/..\/devices\/platform\/scb\/fd500000.pcie\/pci0000<\/pre>\n\n\n\n<p>xbox \ucee8\ud2b8\ub864\ub7ec\uac00 \ucd1d 4\uac1c\ub97c \ub4f1\ub85d\ud560 \uc218 \uc788\ub294\ub370, \uc778\ud130\ub7fd\ud2b8\ub85c 2\uac1c\ub97c \ub4f1\ub85d\ud560 \uc218 \uc788\ub2e4. \ub098\uba38\uc9c0 2\uac1c\ub294 \ubb34\uc5c7\uc778\uc9c0 \ubaa8\ub974\uaca0\ub2e4. \uc554\ud2bc xpad.c\ub294 2\ubc88\ub9cc \ub4f1\ub85d\ud588\ub2e4.<\/p>\n\n\n\n<p>CDEV_LED\ub85c \ub4f1\ub85d\uc744 \ud558\uba74 brightness_set \ud568\uc218\ub97c overload \ud560 \uc218 \uc788\ub2e4. brightness_set -&gt; xpad_led_set -&gt; xpad_send_led_command\uc73c\ub85c \uc5f0\uacb0\ud55c\ub2e4. xpad_send_led_command \uc548\uc5d0\uc11c LED \uc81c\uc5b4\ud558\ub294 \ud328\ud0b7\uc744 \ub9cc\ub4e4\uc5b4 URB\uc5d0 \ub123\uc5b4 \uc900\ub2e4. urb-&gt;transfer_buffer_length\ub97c \uc798 \ub123\uc5b4\uc918\uc57c URB \ud328\ud0b7\uc744 \uc804\uc1a1\ud55c\ub2e4.<\/p>\n\n\n\n<p>\uc778\ud130\ub7fd\ud2b8\ub85c \ud55c\ubc88 \ub4f1\ub85d\ud558\uba74 \uc77c\uc815 \uc8fc\uae30\ub85c \uacc4\uc18d \uba85\ub839\uc744 \uc2e4\ud589\ud55c\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=\"\">[  340.057841] xpad is c97d9e68, xpad->udev is decb56d0\n[  340.057858] interface is d89e5572\n[  340.057871] cur_altsetting is 2\n[  340.057893] xbox360 1-1.1:1.0: interrupt in, out found. 00000000, 3b46194c\n[  340.058231] xbox360 1-1.1:1.0: usb xbox360 driver was registerd\n[  340.058253] dma output address 6ce62de4 with size 64, point to f2c4e403 was allocated\n[  340.058266] actual address is 6ce62de4\n[  340.058280] urb was allocated\n[  340.058292] xpad->endpoint_out->bInterval is 8\n[  340.058306] XPAD_OUT_LED_IDX: 2\n[  340.058318] XPAD_NUM_OUT_PACKETS: 3\n[  340.058440] xpad->led_command->data[0]:1,[1]:3,[2]:10, with 3 len\n[  340.058463] xpad_send_led_command: completed\n[  340.058828] usbcore: registered new interface driver xbox360\n[  359.127170] usbcore: deregistering interface driver xbox360\n[  359.127225] xpad address is c97d9e68, intf is d89e5572\n[  359.129187] xpad->led_command->data[0]:1,[1]:3,[2]:0, with 3 len\n[  359.129217] xbox360 1-1.1:1.0: xpad_send_led_command - usb_submit_urb failed with -ENOENT\n[  359.131553] xpad led was unregistered\n[  359.131575] dma output address 6ce62de4 with size 64 was freed\n[  359.131590] disconnected<\/pre>\n\n\n\n<p>10\ubc88\uc744 \ubcf4\ub0b4\uba74 LED\uac00 rotate \ud55c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-\uc784\ubca0\ub4dc-\ud578\ub4e4\ub7ec wp-block-embed-\uc784\ubca0\ub4dc-\ud578\ub4e4\ub7ec wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n <iframe loading=\"lazy\" title=\"XBOX \ucee8\ud2b8\ub864\ub7ec LED \uc81c\uc5b4\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/rgmjHCC3Yc8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe> \n<\/div><\/figure>\n\n\n\n<p>&#8211;\ucd94\uac00&#8211;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>interrupt \ub4f1\ub85d, usb_submit_urb \uc644\ub8cc \ud568\uc218(xpad_irq_outfn) \ub4f1\ub85d.<\/li><li>set_brightness\ub85c led \ubc1d\uae30 \uc870\uc815 \ud568\uc218\uc5d0 \ub4f1\ub85d.<\/li><li>xpad->urb_active == true\uc77c \uacbd\uc6b0 \uba85\ub839\uc5d0 \ub9de\ub294 \ud328\ud0b7 \ub9cc\ub4e4\uc5b4 \uc804\uc1a1.<\/li><li>xpad_irq_outfn \uc548\u3154\uc11c xpad->urb_active = false\ub85c \uc218\uc815. xpad->urb_active\uac00 \uc5c6\uc73c\uba74 \uc77c\uc815 \uc8fc\uae30\ub85c \uacc4\uc18d \uc2e4\ud589\ub428.<\/li><\/ul>\n\n\n\n<p>\ucc38\uc870 \uc0ac\uc774\ud2b8.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/programmerall.com\/article\/9757808317\/\" target=\"_blank\" rel=\"noreferrer noopener\">Programmer all<\/a><\/li><li><a href=\"https:\/\/embeddedguruji.blogspot.com\/2018\/12\/linux-usb-device-driver-part5-usb.html\">Embedded Guru, Part5<\/a><\/li><li><a href=\"http:\/\/www.cs.albany.edu\/~sdc\/CSI500\/linux-2.6.31.14\/Documentation\/DocBook\/usb\/re34.html\">struct urb<\/a><\/li><li><a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/driver-api\/usb\/URB.html\">USB request block<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>LED \uc81c\uc5b4\ud558\uae30 xbox 360 \ucee8\ud2b8\ub864\ub7ec\uac00 4\uac1c LED\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4. \ucd1d 4\uba85 \ud50c\ub808\uc774\uc5b4\uac00 \uc788\uc744 \uacbd\uc6b0 1 ~ 4\uae4c\uc9c0 \uc2dc\uacc4 \ubc29\ud5a5\uc73c\ub85c \ub7a8\ud504\ub97c [&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,1023,53,1022,950],"class_list":["post-4958","post","type-post","status-publish","format-standard","hentry","category-12","tag-c","tag-driver","tag-led","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\/4958","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=4958"}],"version-history":[{"count":7,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4958\/revisions"}],"predecessor-version":[{"id":4974,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/posts\/4958\/revisions\/4974"}],"wp:attachment":[{"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=4958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=4958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/now0930.pe.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=4958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}