Как подключить беспроводной джойстик Xbox 360 в Linux

    Общий рейтинг статьи: 0 (проголосовало 0 )
    Опубликовано:  [просмотров 680]


    Джойстик от приставки Xbox360 можно подключить к компьютеру двумя методами:

    • Проводным USB-подключением
    • При помощи специализированного приемника 

    Мы будем рассматривать именно второй метод который позволяет подключить к компьютеру до четырех джойстиков при помощи одного приемника.

    Приемник радиосигнала джойстика Xbox 360

    Ресивер как и геймпад можно купить например на AliExpress и значительно сэкономить. Так как в например в магазинах DNS приемник стоит 1200 рублей и джойстик 3600 рублей, а на AliExpress приемник можно приобрести за 500 рублей и соответственно геймпад за 1500.

    Приемник заказанный на AliExpress

    Джойстик заказанный на AliExpress

     

    Рассмотренное в этой статье оборудование было приобретено именно на AliExpress и показало себя в работе просто замечательно и мы приступаем к настройке.

    Сразу после подключения приемника проверьте, что оборудование определилось ядром Linux, для чего выполните следующую команду:

    # lsusbBus 006 Device 003: ID 045e:0291 Microsoft Corp. Xbox 360 Wireless Receiver for Windows

    Для работы с приемником джойстика Xbox 360 в Ubuntu Linux существует штатный пакет xboxdrv, но в большинстве руководств рекомендуется использовать сторонний репозиторий rael-gc и вот здесь и начинается некоторая путаница, так как:

    • Штатный пакет операционной системы называется xboxdrv и содержит только программы управления
    • Сторонний пакет из репозитория rael-gc называется ubuntu-xboxdrv и в свою очередь содержит описание сервиса, обработчик отключения штатного драйвера xpad и набор правил для Dbus

    Соответственно, вы можете использовать и штатный пакет, но вам придется проделать много дополнительных операций которые уже включены в пакет из репозитория rael-gc. Подключить репозиторий и установить пакет можно выполнив следующие команды:

    # apt-add-repository -y ppa:rael-gc/ubuntu-xboxdrv# apt-get update
    # apt-get install ubuntu-xboxdrv

    Как я уже говорил выше пакет содержит правило modprobe.d для блокировки загрузки модуля xpad и применение этого правила потребует перезагрузки компьютера.

    После перезагрузки демон будет запущен автоматически можно попробовать подключить джойстик к приемнику для чего включите геймпад Xbox 360, нажав кнопку Xbox, после чего нажмите кнопку на беспроводном приемнике. Индикатор начнет мигать зеленым цветом, указывая, что приемник ищет геймпад для подключения. 

    Кнопка синхронизации Xbox джойстика и приемника 

    Нажмите кнопку подключения в задней части геймпада Xbox 360. После этого геймпад Xbox 360 будет привязан к беспроводному приемнику. Эту операцию требуется выполнить только один раз при первоначальной установке геймпада.

    Теоретически этого должно быть достаточно и после описанных выше операций джойстиком можно пользоваться.

    В случае возникновения проблем остановите демон xboxdrv командой:

    # service xboxdrv stop

    Запустите демон вручную командой:

    # xboxdrv

    Если все прошло успешно, то мы получим сообщение:

    Controller:        Microsoft Xbox 360 Wireless ControllerVendor/Product:    045e:0291
    USB Path:          006:003
    Wireless Port:     0
    Controller Type:   Xbox360 (wireless)

    Your Xbox/Xbox360 controller should now be available as:
      /dev/input/js4
      /dev/input/event10

    Но не всегда запуск проходит гладко и возможен целый ряд потенциальных проблем. Например, если при запуске в виде демона он падает с ошибкой:

    [ERROR] XboxdrvDaemon::run(): fatal exception: failed to get unique dbus
    name: Connection ":1.23" is not allowed to own the service "org.seul.Xboxdrv" due to
    security policies in the configuration file

    То, вам требуется создать файл /etc/dbus-1/system.d/org.seul.Xboxdrv.conf следующего содержания и перезагрузить компьютер:

     <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS BusConfiguration 1.0//EN"
     "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
    <busconfig>
      <policy context="default">
        <allow own="org.seul.Xboxdrv"/>
      </policy>
    </busconfig>

    Или при запуске у вас может появиться ошибка:

    [ERROR] XboxdrvDaemon::process_match(): failed to launch ControllerThread: 
    Error couldn't claim the USB interface: LIBUSB_ERROR_BUSY

    Для устранения ошибки требуется запускать демона требуется с параметром --detach-kernel-driver:

    # xboxdrv --detach-kernel-driver --daemon

    Вероятно, вы пожелаете включить тактильную отдачу на геймпаде Xbox 360, для этого откройте файл /etc/default/xboxdrv/ и измените:

    FORCE_FEEDBACK=false

    на

    FORCE_FEEDBACK=true


    Обсуждение статьи

    Ваш комментарий: