EN

Xbox Controller на Linux

Также доступно на английском

Надоел проводной геймпад

Я играю с сыном в Minecraft Dungeons и Lego-игры (сейчас это The Lego Movie Videogame). Сетап у нас такой:

  • транслируем через Steam Link с моего компьютера на телевизор в большой комнате.
  • играем с помощью проводных геймпадов.

Так как мы недавно переехали, то расположение PC vs TV стало неудобным (а пады надо подключать к компьютеру). Поэтому я решил сделать сыну сюрприз и себе подарок — купил два новых Xbox Wireless Controller.

Радостные мы принесли их домой, и я обнаружил, что пады просто не коннектятся нормально по bluetooth на Linux (у меня Pop!_OS 24.04).

Xbox Wireless Controller
Изображение сгенерировано AI (ChatGPT)

Bluetooth не хочет работать

Симптомы:

  • Пейринг происходит, но коннект не проходит, и отваливается с ошибкой “le-connection-abort-by-local”
  • Когда переводишь пад в режим пейринга (зажимаешь маленькую кнопку сверху пада) и пытаешься подключить его, то наблюдаешь бесконечные коннект / дисконнект.
  • Даже когда пейринг прошёл — центральная кнопка, которая подсвечивает статус подключения, всё равно медленно “моргает” и не становится стабильно-светящейся.

Что не помогло

Естественно, первое, на что я наткнулся, — это xpadneo.

  • Я сделал всё, что было указано в инструкциях, сбилдил, установил через DKMS.
  • Внёс исправления в Bluetooth-конфиг
  • Ребутнулся, удалил устройство из paired/trusted, перепейрил - не помогло
  • Попробовал через bluetoothctl: pair по мак-адресу, но проблема повторялась.

Я пошёл искать дальше. Вторая попытка заключалась в том, чтобы отключить ERTM (Enhanced ReTransmission Mode).

  • Я сделал всё, что необходимо, и отключил. Но и это не помогло.

Что помогло

Решение я нашёл в wiki Debian, где были перечислены все предыдущие решения, что я пытался использовать, плюс ещё одно, а именно — добавить в конфиг Bluetooth следующие параметры:

[General]
Privacy = device
JustWorksRepairing = always
Class = 0x000100
FastConnectable = true

К нашей радости, именно эти строки решили проблему, и мы смогли нормально поиграть в тот вечер. Не знаю точно, помог ли комплекс решений, или достаточно было бы только последних изменений, но wiki мне крайне помогла, надеюсь поможет и вам.