콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

linux usb driver xbox360(1)

집에서 놀고 있던 8년 전에 구매한 xbox 360 유선 usb 패드를 raspberry pi4에 등록하여 사용하고 싶다. 나온 지 오래되어 이미 xpad 리눅스 드라이버가 공개되어 있다. 그러나 usb, input을 한번에 사용하여 잘 이해되지 않는다. 남은 출장 기간 중 천천히 공부 하기로 했다.

usb를 등록하려면 vendor id, product id, 연결되면 실행되는 call back probe, disconnect 등 을 알아야 한다. 인터넷에 공개된 좋은 자료, 소스를 공부했다. 관련 코드는 여기에 저장했다.

usb-devices로 xbox 패드를 확인하면 (I가 interface 인듯하다) 0, 1, 2, 3인터페이스가 등록되지 않았다.

pi@raspberrypi:~/rasp/xbox_driver $ usb-devices 
T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS= 8 #Cfgs=  1
P:  Vendor=045e ProdID=028e Rev=01.14
S:  Manufacturer=©Microsoft Corporation
S:  Product=Controller
S:  SerialNumber=0C59FC4
C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=5d Prot=01 Driver=(none)
I:  If#=0x1 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=5d Prot=03 Driver=(none)
I:  If#=0x2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=5d Prot=02 Driver=(none)
I:  If#=0x3 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=fd Prot=13 Driver=(none)

usb_register_dev로 interface 0, 1을 등록했다.

pi@raspberrypi:~/rasp/xbox_driver $ usb-devices 
T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS= 8 #Cfgs=  1
P:  Vendor=045e ProdID=028e Rev=01.14
S:  Manufacturer=©Microsoft Corporation
S:  Product=Controller
S:  SerialNumber=0C59FC4
C:  #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
I:  If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=5d Prot=01 Driver=xbox360
I:  If#=0x1 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=5d Prot=03 Driver=xbox360
I:  If#=0x2 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=5d Prot=02 Driver=(none)
I:  If#=0x3 Alt= 0 #EPs= 0 Cls=ff(vend.) Sub=fd Prot=13 Driver=(none)

pi@raspberrypi:~/rasp/xbox_driver $ dmesg 
[48226.848081] xpad is 0c15d4e5, xpad->udev is 14758ec9
[48226.848101] interface is 913f883f
[48226.848126] xbox360 1-1.1:1.0: interrupt in, out found. 55429370, 0119bb5d
[48226.848528] xbox360 1-1.1:1.0: usb xbox360 driver was registerd
[48226.848710] xpad is a5c87389, xpad->udev is 14758ec9
[48226.848726] interface is f687e098
[48226.848746] xbox360 1-1.1:1.1: interrupt in, out found. efcdcd2e, 2fcb2b2f
[48226.849000] xbox360 1-1.1:1.1: usb xbox360 driver was registerd
[48226.849162] xpad is 5c5394a1, xpad->udev is 14758ec9
[48226.849178] interface is 7fa06804
[48226.849196] xbox360 1-1.1:1.2: Could not find both interrupt-in and interrpt-out endpoints
[48226.849211] error -6
[48226.849304] xpad is 5c5394a1, xpad->udev is 14758ec9
[48226.849320] interface is c9ea30ca
[48226.849337] xbox360 1-1.1:1.3: Could not find both interrupt-in and interrpt-out endpoints
[48226.849352] error -6
[48226.849490] usbcore: registered new interface driver xbox360

참조 사이트.

  • Linux Device Drivers, Third Edition,Chapter 13,
  • USB in a NutShell
  • Writing USB Device Drivers
  • usb-skeleton.c

이 글 공유하기:

  • Tweet
발행일 2022-01-02글쓴이 이대원
카테고리 생활코딩 태그 c, driver, linux, skeleton, usb

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 내비게이션

이전 글

raspberry pi4 bluetooth pairing with cli

다음 글

linux usb driver xbox360(2)

2025 5월
일 월 화 수 목 금 토
 123
45678910
11121314151617
18192021222324
25262728293031
4월    

최신 글

  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01
  • positioner(I/P) 2025-04-26

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.