Итак, xpad.c теперь имеет поддержку контроллера XBOXONE. Я покупаю контроллер PowerA Spectra XBOXONE. Все, что он делает, это подключается и отключается. Тогда я заметил, что xpad не распознает контроллер, и решил отредактировать xpad.c и перекомпилировать.

Linux CtrlZ 3.18.7-sabayon # 1 SMP Mon 16.02 14:29:37 UTC 2015 x86_64 AMD A10-7850K Radeon R7, 12 вычислительных ядер 4C+8G AuthenticAMD GNU/Linux


пример

[660.061511] usb 3-2: новое высокоскоростное USB-устройство № 39 с использованием xhci_hcd
[660.205548] usb 3-2: найдено новое USB-устройство, idVendor = 24c6, idProduct = 542a
[660.205551] usb 3-2: Новые строки USB-устройств: Mfr = 1, Product = 2, SerialNumber = 3
[660.205554] USB 3-2: Продукт: Контроллер
[660.205555] usb 3-2: Производитель: Microsoft
[660.205557] usb 3-2: SerialNumber: 0000F2292EF239AD
[675.295032] usb 3-2: USB отключено, устройство № 39
[675.541979] usb 3-2: новое высокоскоростное USB-устройство № 40 с использованием xhci_hcd
[675.686018] usb 3-2: найдено новое USB-устройство, idVendor = 24c6, idProduct = 542a
[675.686022] usb 3-2: Новые строки USB-устройств: Mfr = 1, Product = 2, SerialNumber = 3
[675.686024] USB 3-2: Продукт: Контроллер
[675.686025] USB 3-2: Производитель: Microsoft
[675.686027] usb 3-2: SerialNumber: 0000F2292EF239AD


Используя приведенную выше информацию, я смог исправить xpad.c, включив в него следующие строки 207 и 311.


ПРИМЕР

206: {0x24c6, 0x5300, "Контроллер PowerA MINI PROEX", 0, XTYPE_XBOX360},
207: {0x24c6, 0x542a, "PowerA Spectra", 0, XTYPE_XBOXONE},
310: XPAD_XBOX360_VENDOR(0x24c6), / * контроллеры PowerA /
311: XPAD_XBOXONE_VENDOR(0x24c6), /
Контроллеры PowerA * /


Это сработало? Нет, но я приблизился к цели. Любые опытные разработчики ядра хотят помочь мне? Я большой n00b, когда дело доходит до редактирования драйверов. Базовое программирование я знаю, но это совсем другой уровень. Я готов учиться.

# Текущий вывод

[1217.579190] usb 3-2: новое высокоскоростное USB-устройство № 75 с использованием xhci_hcd
[1217.721294] usb 3-2: найдено новое USB-устройство, idVendor = 24c6, idProduct = 542a
[1217.721298] usb 3-2: Новые строки USB-устройств: Mfr = 1, Product = 2, SerialNumber = 3
[1217.721300] usb 3-2: Продукт: Контроллер
[1217.721302] usb 3-2: Производитель: Microsoft
[1217.721303] usb 3-2: SerialNumber: 0000F2292EF239AD
[1217.723396] вход: PowerA Spectra as /devices/pci0000:00/0000:00:10.1/usb3/3-2/3-2:1.0/input/input93
[1232.812766] USB 3-2: USB-разъём, устройство № 75
[1233.060659] usb 3-2: новое высокоскоростное USB-устройство № 76 с использованием xhci_hcd
[1233.203764] usb 3-2: найдено новое USB-устройство, idVendor = 24c6, idProduct = 542a
[1233.203768] usb 3-2: Новые строки USB-устройств: Mfr = 1, Product = 2, SerialNumber = 3
[1233.203771] usb 3-2: Продукт: Контроллер
[1233.203772] usb 3-2: Производитель: Microsoft
[1233.203774] usb 3-2: SerialNumber: 0000F2292EF239AD
[1233.205895] вход: PowerA Spectra as /devices/pci0000:00/0000:00:10.1/usb3/3-2/3-2:1.0/input/input94


Кажется, это не делает рукопожатие какого-то рода? Может быть, пытаясь говорить с контроллером, как его контроллер 360 вместо одного контроллера?

1 ответ1

0

Я обновил свое ядро до 3.19 на днях для поддержки контроллера xpad, чтобы также обнаружить, что мой контроллер PowerA Spectra не работает. После некоторого расследования с водителем я обнаружил, что вы говорите, что водитель не выполнял правильное рукопожатие. Это была не единственная проблема, которая у меня была, однако, в отличие от официального контроллера Xbone, у которого менялись оконечные точки входа / выхода, PowerA этого не делал (как на 360).

Чтобы добраться до сути, мне удалось заставить мой контроллер работать. Патч должен работать нормально, кроме конечных точек для официального контроллера, так как я не написал никакого кода для его обнаружения. Я не был уверен, стоит ли мне добавлять исключение для контроллера PowerA или для официального, но, скорее всего, скоро все уладится, если я отправлю вышестоящий патч. Чтобы исправить рукопожатие, мне нужно было также реализовать очередь пакетов, но мне повезло, что кто-то еще сделал это в патче ядра, который еще не был принят. Я включил их код в свой патч.

Файл патча (основанный на 3.19, но не думаю, что он изменился с 3.18) можно найти здесь. Надеюсь, вы можете использовать его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .