PS3 클론 아케이드 게임 컨트롤러를 강제로 범용 숨기기

PS3 클론 아케이드 게임 컨트롤러를 강제로 범용 숨기기

나는 NETWAY GAMING ARCADE Fighter PS3/PC를 가지고 있습니다. 이 장치는 Windows에서 잘 작동하고 recalbox 4.1에서도 잘 작동하지만 제가 시도한 현재 Linux에서는 작동하지 않습니다.

recalbox 4.1(v4.4.13)에서 실행되는 동일한 버전을 포함하여 다양한 이전 버전을 사용하여 hid-sony를 다시 컴파일해 보았습니다. 최근 우분투에서 이 버전을 사용할 때 감지 기능이 향상된 것처럼 보이지만 여전히 실패합니다.

장치 로그는 다음과 같습니다.

RECALBOX user.info kernel: [  99.858844] usb 1-1.4: new full-speed USB device number 5 using dwc_otg
RECALBOX user.info kernel: [  99.980280] usb 1-1.4: New USB device found, idVendor=054c, idProduct=0268
RECALBOX user.info kernel: [  99.980789] usb 1-1.4: Mew USB device strings: Mfr=0, Product=2, SerialNunmber=0
RECALBOX user.info kernel: [  99.960296] usb 1-1.4: Product: USB Controller
RECALBOX user.info kernel: [ 100.135534] usb 1-1.4: USB disconnect, device number 5
RECALBOX user.info kernel: [ 100.135955] input: USB Controller as /devices/platform/soc/3f980000.usb/usb1/1—1/1-1.4/1-1.4:1.0/0003:054C:0268.0003/input/input2
RECALBOX user.info kernel: [ 100.136001] sony 0003:054C:0268.0003: input,hiddev0,hidraw2: USB HID v1.11 Joystick [USB Controller! on ush—3f980000.usb—1.4/input0
RECALBOX user.err kernel:  [ 100.136022] sony 0003:054C:0268.0003: can’t set operational mode: step 1
RECALBOX user.info kernel: [ 101.138844] usb 1-1.4: new full-speed USB device number 6 using dwc_otg
RECALBOX user.info kernel: [ 101.253950] usb 1-1.4: New USB device found, idVendor=1345, idProduct=3008
RECALBOX user.info kernel: [ 101.253959] usb 1-1.4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
RECALBOX user.info kernel: [ 101.253965] usb 1-1.4: Product: USB Controller
RECALBOX user.info kernel: [ 101.275011] input: USB Controller as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:1345:3008.0004/input/input3
RECALBOX user.info kernel: [ 101.275358] hid-generic 0003:1345:3008.0004: input,hidraw2: USB HID v1.10 Gamepad [USB Controller] on usb—3f980000.usb—1.4/inputO

(recalbox 4.1, 작업 진행 중)

ubuntu kernel: [ 4639.424468] usb 1-8: new full-speed USB device number 32 using xhci_hcd
ubuntu kernel: [ 4639.758139] usb 1-8: New USB device found, idVendor=054c, idProduct=0268, bcdDevice= 1.00
ubuntu kernel: [ 4639.758142] usb 1-8: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [ 4639.758145] usb 1-8: Product: USB Controller
ubuntu kernel: [ 4639.919303] sony 0003:054C:0268.0023: failed to retrieve feature report 0xf2 with the Sixaxis MAC address
ubuntu kernel: [ 4639.919558] sony 0003:054C:0268.0023: hiddev3,hidraw5: USB HID v81.11 Joystick [USB Controller] on usb-0000:15:00.0-8/input0
ubuntu kernel: [ 4639.919560] sony 0003:054C:0268.0023: failed to claim input
ubuntu kernel: [ 4639.919678] usb 1-8: USB disconnect, device number 32
ubuntu kernel: [ 4640.892687] usb 1-8: new full-speed USB device number 33 using xhci_hcd
ubuntu kernel: [ 4641.225377] usb 1-8: New USB device found, idVendor=1345, idProduct=3008, bcdDevice= 1.00
ubuntu kernel: [ 4641.225381] usb 1-8: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [ 4641.225383] usb 1-8: Product: USB Controller
ubuntu kernel: [ 4641.252351] sony 0003:1345:3008.0024: failed to retrieve feature report 0xf2 with the Sixaxis MAC address
ubuntu kernel: [ 4641.252760] sony 0003:1345:3008.0024: hiddev4,hidraw6: USB HID v81.10 Gamepad [USB Controller] on usb-0000:15:00.0-8/input0
ubuntu kernel: [ 4641.252762] sony 0003:1345:3008.0024: failed to claim input

(우분투 18.10 기본 모듈, 작동하지 않음)

ubuntu kernel: [20957.230577] usb 1-9: new full-speed USB device number 14 using xhci_hcd
ubuntu kernel: [20957.563354] usb 1-9: New USB device found, idVendor=054c, idProduct=0268, bcdDevice= 1.00
ubuntu kernel: [20957.563358] usb 1-9: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [20957.563360] usb 1-9: Product: USB Controller
ubuntu kernel: [20957.597896] input: USB Controller as /devices/pci0000:00/0000:00:01.2/0000:15:00.0/usb1/1-9/1-9:1.0/0003:054C:0268.000D/input/input27
ubuntu kernel: [20957.598255] sony 0003:054C:0268.000D: input,hiddev1,hidraw3: USB HID v1.11 Joystick [USB Controller] on usb-0000:15:00.0-9/input0
ubuntu kernel: [20957.724424] sony 0003:054C:0268.000D: can't set operational mode: step 1
ubuntu kernel: [20957.810926] sony: probe of 0003:054C:0268.000D failed with error -71
ubuntu kernel: [20957.811129] usb 1-9: USB disconnect, device number 14
ubuntu kernel: [20958.702612] usb 1-9: new full-speed USB device number 15 using xhci_hcd
ubuntu kernel: [20959.033593] usb 1-9: New USB device found, idVendor=1345, idProduct=3008, bcdDevice= 1.00
ubuntu kernel: [20959.033597] usb 1-9: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [20959.033599] usb 1-9: Product: USB Controller

(우분투 18.10 모듈 v4.4.13, 작동하지 않음)

Bus 001 Device 035: ID 1345:3008 Sino Lite Technology Corp. 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x1345 Sino Lite Technology Corp.
  idProduct          0x3008 
  bcdDevice            1.00
  iManufacturer           0 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     112
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              10

(lsusb-v)

내가 알아차린 것은 recalbox를 사용하면 장치가 결국 hid-generic에 의해 관리되지만 우분투용으로 컴파일된 동일한 버전의 hid-sony를 사용하면 hid-generic이 트리거되지 않고 hid-sony가 실패한다는 것입니다.

recalbox에서 발생하는 것처럼 hid-sony 대신 hid-generic으로 관리하도록 강제할 수 있는 방법이 있습니까? 아마도 USB 문제 때문일까요?

고쳐 쓰다:

나는 이 패치가 recalbox 4.1에서 작동하는 것과 동일한 hid-sony.c 드라이버 버전을 사용하는 우분투에서 작동하지 않는 것의 차이에 대한 이유라고 생각합니다.

https://patchwork.kernel.org/patch/8026101/

추가한 이후로 그런 것 같아요

#define USB_VENDOR_ID_SINO_LITE             0x1345
#define USB_DEVICE_ID_SINO_LITE_CONTROLLER  0x3008

hid-core.c는 hid_have_special_driver와 공급업체/장치 조합이 일치하는지 확인하기 때문에 게임패드는 hid-sony.c에 의해 관리됩니다.

그렇다면 전체 커널을 다시 컴파일하고 내 장치의 장치 식별자를 바꾸는 것 외에 다른 해결책이 있습니까?

hid quirks 또는 udev를 사용하여 게임패드가 운영 체제에 다른 장치 ID를 보고하도록 할 수 있습니까?

어떤 아이디어라도 감사드립니다!

답변1

내가 찾은숨다모듈에는 매개변수가 있습니다.특수 드라이버 무시모든 독점 드라이버를 무시하고 hid-generic을 사용하여 장치를 처리합니다.

hid-sony 모듈이 내 PS3 클론 아케이드 스틱을 제대로 지원하지 않았기 때문에 hid 모듈에 매개변수를 추가하면 문제가 해결되었습니다.

$ sudo vi /etc/modprobe.d/hid.conf
options hid ignore_special_drivers=1

$ sudo update-initramfs -u
$ reboot
$ tail /var/log/kern.log
ubuntu kernel: [  119.966133] usb 1-8: new full-speed USB device number 5 using xhci_hcd
ubuntu kernel: [  120.299429] usb 1-8: New USB device found, idVendor=054c, idProduct=0268, bcdDevice= 1.00
ubuntu kernel: [  120.299433] usb 1-8: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [  120.299435] usb 1-8: Product: USB Controller
ubuntu kernel: [  120.333900] input: USB Controller as /devices/pci0000:00/0000:00:01.2/0000:15:00.0/usb1/1-8/1-8:1.0/0003:054C:0268.0004/input/input18
ubuntu kernel: [  120.334403] hid-generic 0003:054C:0268.0004: input,hidraw3: USB HID v1.11 Joystick [USB Controller] on usb-0000:15:00.0-8/input0
ubuntu kernel: [  120.459845] usb 1-8: USB disconnect, device number 5
ubuntu kernel: [  121.434688] usb 1-8: new full-speed USB device number 6 using xhci_hcd
ubuntu kernel: [  121.765665] usb 1-8: New USB device found, idVendor=1345, idProduct=3008, bcdDevice= 1.00
ubuntu kernel: [  121.765669] usb 1-8: New USB device strings: Mfr=0, Product=2, SerialNumber=0
ubuntu kernel: [  121.765671] usb 1-8: Product: USB Controller
ubuntu kernel: [  121.791046] input: USB Controller as /devices/pci0000:00/0000:00:01.2/0000:15:00.0/usb1/1-8/1-8:1.0/0003:1345:3008.0005/input/input19
ubuntu kernel: [  121.851274] hid-generic 0003:1345:3008.0005: input,hidraw3: USB HID v1.10 Gamepad [USB Controller] on usb-0000:15:00.0-8/input0

그래도 원래 Sony 게임 컨트롤러가 있고 두 가지를 모두 사용하고 싶다면 특수 드라이버가 특정 VendorID/ProductID 조합을 무시할 수 있도록 하는 솔루션을 선호합니다.

관련 정보