Подключение и настройка геймпада Xbox 360 в Ubuntu Linux

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

 
 
Логотип GITA-DEV

Автор: Черноусов Антон aka Gita-Dev
Опубликовано: 25 Фев 2018 (последние правки 3 месяца)

apt-get dev install kernel ubuntu

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

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

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

Беспроводной адаптер для подключения джойстика Xbox360

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

Покупка приемника Xbox360 на AliExpress

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

# lsusb | grep Xbox
Bus 001 Device 007: ID 045e:0291 Microsoft Corp. Xbox 360 Wireless Receiver for Windows

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

# lsmod | grep xpad
xpad                   32768  0
ff_memless             16384  1 xpad

Обратите внимание, что штатный модуль входящий в поставку ядра, хотя и находит геймпад, обрабатывает все нажатия клавиш, он содержит ряд конструктивных недостатков, которые вряд ли когда то будут решены. Первое, что вас скорее всего не устроит, это отсутствие виброотдачи в ядерном модуле xpad, а второе, на что я обратил внимание в процессе эксплуатации, это то, что при отключении геймпада (например, при переходе его в спящий режим) из списка устройств (в каталоге /dev/) пропадает устройство /dev/input/js0, что вызывает сбои в работе некоторых эмуляторов и игр (считается, что во время игры не стоит выдергивать геймпад на ходу).

 

Для работы с приемником джойстика 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 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

Похожие статьи

Тестирование эмулятора Play Station 3 для Linux

Тестирование эмулятора Play Station 3 для Linux

Довольно часто я стал натыкаться, на статьи посвященные эмулятору игровой консоли Play Station 3 и судя по всему ее можно уже пробовать. Так как я нигде не нашел вменяемых описаний минимальных требований к железу у эмулятора Play Station 3 RPCS3, я решил самостоятельно протестировать на имеющемся железе последнюю версию из git-репозитария. В обсуждении этого эмулятора в профильной группе на FaceBook утверждалось, что в ряд игр можно уже играть, но лучше уж самому проверить чем слушать фантастов от IT.


Эмуляция консоли Super Nintendo в современных дистрибутивах Linux (сборка Snes9X)

Эмуляция консоли Super Nintendo в современных дистрибутивах Linux (сборка Snes9X)

В современных дистрибутивах Ubuntu Linux больше нет единственного нормального эмулятора Super Nintendo под названием Snes9X. Стоит отметить, что есть конечно и универсальные комбайны которые позволяют сразу же эмулировать множество консолей, но у всех у них есть ряд недостатков и если посмотреть на Windows-платформу, то при создании сборников игр именно Snes9X используется в качестве эмулятора по умолчанию. И хотя из за ряда несовместимостей пакета Snes9x больше нет в поставке по умолчанию, мы можем его собрать с некоторыми приседаниями.


Мультисистемный эмулятор Mednafen и GUI Mednaffe - установка из GIT репозитария

Мультисистемный эмулятор Mednafen и GUI Mednaffe - установка из GIT репозитария

Как наверное знают мои друзья, да и вообще все кто читает мой блог, есть у меня одно хобби. Мне нравятся разного рода ретро-игры (видимо в детстве я не наигрался) и я иной раз люблю поиграть в какой-нибудь лютый винтаж. Для того чтобы поиграть в rom-дампы того же NES или Sega требуется эмулятор, причем их есть множество каждый из которых со своими достоинствами и недостатками. Сегодня я расскажу как установить в Linux один из мультисистемных эмуляторов.


Отзывы и комментарии