Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Saitek p580 rumble.  (Прочитано 2885 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн drug12gh

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Saitek p580 rumble.
« : 05 Январь 2009, 20:29:19 »
При включении определился как /dev/input/js0 без особых проблем, но отчаянно не работает ForceFeedback. Тот же bzflag предлагает два режима, но ни один не даёт эффекта... Нагуглил дрова для p2500 сказано, что должны подходить ко всей серии. Компилиться отказываются, пишут следующее:
control9@control9-desktop:~/SP2500$ make
make -C /lib/modules/2.6.27-11-generic/build M=/home/control9/SP2500 modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-11-generic'
  CC [M]  /home/control9/SP2500/saitek_p2500.o
/home/control9/SP2500/saitek_p2500.c:38:26: error: linux/config.h: No such file or directory
/home/control9/SP2500/saitek_p2500.c:122: error: implicit declaration of function ‘NBITS’
/home/control9/SP2500/saitek_p2500.c:122: error: variably modified ‘flags’ at file scope
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_input_event’:
/home/control9/SP2500/saitek_p2500.c:184: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c:241: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_upload_effect’:
/home/control9/SP2500/saitek_p2500.c:272: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c:291: error: ‘struct input_dev’ has no member named ‘ff_effects_max’
/home/control9/SP2500/saitek_p2500.c:395: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
/home/control9/SP2500/saitek_p2500.c:396: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
/home/control9/SP2500/saitek_p2500.c:397: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_open’:
/home/control9/SP2500/saitek_p2500.c:413: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c: In function ‘sp2500_erase_effect’:
/home/control9/SP2500/saitek_p2500.c:434: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_close’:
/home/control9/SP2500/saitek_p2500.c:459: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c:467: error: ‘struct input_dev’ has no member named ‘ff_effects_max’
/home/control9/SP2500/saitek_p2500.c:471: error: ‘struct input_dev’ has no member named ‘ff_effects_max’
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_flush’:
/home/control9/SP2500/saitek_p2500.c:481: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c:485: error: ‘struct input_dev’ has no member named ‘ff_effects_max’
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_process_packet’:
/home/control9/SP2500/saitek_p2500.c:509: error: implicit declaration of function ‘input_regs’
/home/control9/SP2500/saitek_p2500.c: In function ‘SP2500_probe’:
/home/control9/SP2500/saitek_p2500.c:660: warning: passing argument 6 of ‘usb_fill_int_urb’ from incompatible pointer type
/home/control9/SP2500/saitek_p2500.c:667: error: incompatible types in assignment
/home/control9/SP2500/saitek_p2500.c:668: error: ‘struct input_dev’ has no member named ‘private’
/home/control9/SP2500/saitek_p2500.c:677: error: ‘struct input_dev’ has no member named ‘upload_effect’
/home/control9/SP2500/saitek_p2500.c:682: error: ‘struct input_dev’ has no member named ‘ff_effects_max’
/home/control9/SP2500/saitek_p2500.c: At top level:
/home/control9/SP2500/saitek_p2500.c:754: error: unknown field ‘owner’ specified in initializer
/home/control9/SP2500/saitek_p2500.c:754: warning: initialization from incompatible pointer type
make[2]: *** [/home/control9/SP2500/saitek_p2500.o] Error 1
make[1]: *** [_module_/home/control9/SP2500] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-11-generic'
make: *** [modules] Error 2

lsusb:
control9@control9-desktop:~/SP2500$ lsusb
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 005: ID 0f30:0111 Jess Technology Co., Ltd
Bus 001 Device 006: ID 0566:3002 Monterey International Corp.
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
dmesg|tail после подключения.
control9@control9-desktop:~/SP2500$ dmesg|tail
[ 1732.643158] sr 1:0:0:0: [sr0] Add. Sense: No seek complete
[ 1732.643165] end_request: I/O error, dev sr0, sector 9034432
[ 1732.643178] Buffer I/O error on device sr0, logical block 1129304
[ 1737.862449] ISO 9660 Extensions: Microsoft Joliet Level 3
[ 1737.863351] ISOFS: changing to secondary root
[ 7176.296135] usb 1-1: USB disconnect, address 5
[ 7177.782517] usb 1-1: new low speed USB device using uhci_hcd and address 7
[ 7178.028075] usb 1-1: configuration #1 chosen from 1 choice
[ 7178.058905] input: Jess Tech Colour Rumble Pad as /devices/pci0000:00/0000:00:10.0/usb1/1-1/1-1:1.0/input/input9
[ 7178.084681] input,hidraw0: USB HID v1.10 Joystick [Jess Tech Colour Rumble Pad] on usb-0000:00:10.0-1
Заранее благодарен.
ubuntu 8.10 ядро 2.6.27-11-generic
« Последнее редактирование: 05 Январь 2009, 20:37:50 от drug12gh »

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #1 : 05 Январь 2009, 23:04:43 »
этот драйвер:
а) сделан для очень старого ядра, примерно 2.6.1х
б) поддерживает только P2500, но скорее всего и другие

а вот тестеры с другими девайсами мне как раз нужны...
я сейчас приделываю поддержку forcefeedback для saitek в ядре 2.6.28, по сути переношу туда этот драйвер.

Оффлайн drug12gh

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #2 : 06 Январь 2009, 13:35:37 »
ну можешь считать что один тестер есть. только как я понимаю нужно будет делать даунгрейд ядра?..."( а про совместимость с другими продуктами серии писал сам автор этой дровины, что скорее всего есть, хотя не исключал того, что придётся слегка переписать.
И вот ещё вопрос - куда из пакета input-utils подевался fftest?
*ушёл в гугль по поводу даунгрейда ядрышка

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #3 : 06 Январь 2009, 13:53:01 »
ну можешь считать что один тестер есть. только как я понимаю нужно будет делать даунгрейд ядра?..."( а про совместимость с другими продуктами серии писал сам автор этой дровины, что скорее всего есть, хотя не исключал того, что придётся слегка переписать.
И вот ещё вопрос - куда из пакета input-utils подевался fftest?
*ушёл в гугль по поводу даунгрейда ядрышка
ничего не надо делать. жди. я напишу, когда будет патч для нового ядра. для теста лучше будет использовать ubuntu 9.04 (ядро от неё).
а вот за fftest -- в гугл. могу выложить исходники сюда.

ЗЫ обрати внимание, у тебя джойстик не от saitek, так что не факт. что он заработает с этим драйвером.

Оффлайн drug12gh

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #4 : 06 Январь 2009, 20:58:58 »
9.04... ничего не скажешь, скоро"))))
джой - сайтек - я уж не знаю чего он так определяется... но сайтек чистопородный"))
fftest - рылся так и не нашёл чегой-то... кинь сырец плз

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #5 : 07 Январь 2009, 00:13:21 »
9.04... ничего не скажешь, скоро"))))
джой - сайтек - я уж не знаю чего он так определяется... но сайтек чистопородный"))
fftest - рылся так и не нашёл чегой-то... кинь сырец плз
определяется он так, потому что не saitek. его просто под маркой saitek выпускают.

вот свежие исходники с патчем для х64

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #6 : 27 Январь 2009, 14:14:08 »
так, есть кое что интересное: оказывается, девайсы от saitek сделаны по стандарту (с небольшим собственным дополнением) -- значит свой драйвер для force feedback не нужен, а в драйвере hid-pidff похоже есть бага, надо разобраться почему он не цепляет геймпад...

drug12gh ты тут?
есть задание:
1) идёшь на usblyzer.com, качаешь триальный usblyzer (венда есть надеюсь? если нет -- ставь в виртуалбоксе) и ставшь его
2) ставишь родные драйвера от saitek, если их ещё нет (это нужно только для теста эффектов, другого простого способа проверить я не видел)
3) отсоединяешь геймпад, запускаешь usblyzer (после установки он просит перегрузиться -- сделай это)
4) жмёшь меню Capture -> Capture Settings
5) там снимаешь галки со всего кроме группы "URB Functions"
6) отмечаешь "Capture Hot-plugged Devices"
7) меняешь "URB Transfer Buffer" на что-нить не меньше 1К
8) жмёшь ок, затем кнопку "Capture" (или меню Capture -> Start capture)
9) втыкаешь геймпад (если в виртуалбоксе, отмечаешь его галочкой, чтобы винда его получила)
10) затем открываешь панель управление -> принтеры и прочий хлам -> игровые контроллеры
11) выбираешь свой и жмёшь свойства
12) на первой вкладке будет возможность потестить FF: жми по очереди кнопки, на которые что-то играет (чтобы выяснить порядок и какие -- отключи на время захват), не забывай делать паузы 2-3 секунды между нажатиями каждой
13) в конце закрой диалог свойств -- всё, после этого можно останавливать захват
14) в usblyzere сохраняешь в файл полученные данные, файл шлёшь мне -- в нём будет достаточно информации, чтобы понять есть ли шансы у твоего девайса

Оффлайн ksv1986

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #7 : 03 Апрель 2009, 07:34:05 »
Случайно наткнулся на этот форум, когда пытался собрать этот же драйвер. У меня Saitek P2600, так как судя по другим темам у dmig такой же, отчет usblyzer будет лишним. Как я понял, патч для hid так и не увидел пока свет... Так как сам имею некоторый опыт в разработке для linux (но не модулей ядра, к сожалению), хотел бы поспособствовать в реализации. Мне нужны примерные идеи, в какую сторону гуглить, какие api разбирать, в каком месте что не цепляется. Исходники ядра (2.6.26.8-83.1 и 2.6.29-114.1 для opensuse 11.1) есть.

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #8 : 03 Апрель 2009, 09:55:32 »
ksv1986 не надо ничего делать. FF уже заработал.
собсно проблемы:
1) этот геймпад реализует стандарт PID, но реализует не до конца -- это 1 патч для драйвера hid-pidff.
2) в hid дескрипторе девайса ошибка -- длина одного отчёта указана на байт меньше, чем он есть на самом деле. из-за этого геймпад никогда не заработает со стандартным драйвером в любой ос. здесь делается quirk для конкретного девайса -- исправление дескриптора hid. пока не решили, как реализовать это -- этот quirk будет первым для hid-pidff.
3) существует некий косяк, не то в геймпаде, не то в драйвере (скорее всего), который заставляет девайс (или драйвер) зависнуть после определённой последовательности действий.

да, если интересно: http://markmail.org/message/iifceb66nkbmdxzr

Оффлайн ksv1986

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #9 : 03 Апрель 2009, 13:04:12 »
Огромное спасибо за ссылку! Бегло почитал, но уловить момент, с которого ff стал инициироваться и выдавать какую-то отдачу не смог. На выходных перечитаю, попробую собрать модуль с патчами и потестить.

Оффлайн dmig

  • Старожил
  • *
  • Сообщений: 1668
    • Просмотр профиля
Re: Saitek p580 rumble.
« Ответ #10 : 03 Апрель 2009, 15:06:07 »
Огромное спасибо за ссылку! Бегло почитал, но уловить момент, с которого ff стал инициироваться и выдавать какую-то отдачу не смог. На выходных перечитаю, попробую собрать модуль с патчами и потестить.
в патчах там куча дебага, просмотри их преже чем накатывать.

да! тестил я всё это в jaunty, на ядре .28

 

Страница сгенерирована за 0.059 секунд. Запросов: 22.