Вопрос или проблема
Я пытаюсь подключить контроллер Xbox One к своей системе Ubuntu. Что происходит, когда я пытаюсь сопрячь его по Bluetooth:
- Я открываю панель устройств Bluetooth в Ubuntu
- Я удерживаю кнопку на верхней части контроллера, пока индикатор не начнет быстро мигать
- Я сопрягаю контроллер в Ubuntu
Проблема в том, что, хотя он отображается как подключенный в Ubuntu, индикатор на контроллере не перестает мигать и он не распознается в играх на HTML5.
Может кто-нибудь посоветовать?
Правка: Я на Ubuntu 20.04.3 LTS
-
Установите драйвер для Xbox:
sudo apt install xboxdrv
-
Включите службы драйвера:
sudo systemctl enable xboxdrv.service && sudo systemctl start xboxdrv.service
У меня была аналогичная проблема, и я нашел ресурс, который предложил отключить ERTM, что потребует прав суперпользователя.
После выполнения этих шагов я смог держать контроллер подключенным.
Хотя я не тестировал его глубоко с какими-либо играми на своей системе. (Одна игра, Delver, не работала очень хорошо, но я не уверен, было ли это связано с игрой или вводом.)
Эта команда:
echo 1 > /sys/module/bluetooth/parameters/disable_ertm
Я обнаружил, что не могу запустить ее, используя sudo самостоятельно, поэтому мне пришлось выполнить это, чтобы дать мне возможность запускать с повышенными привилегиями.
sudo -s
И здесь я нашел первоначальную информацию относительно ERTM https://wiki.debian.org/Gamepad
И еще один ресурс, который дал мне советы по sudo! https://www.addictivetips.com/ubuntu-linux-tips/xbox-one-controllers-over-bluetooth-linux/
(Я все еще достаточно нов в терминале, поэтому именно так я узнал об этой функциональности sudo.)
Я следовал этим шагам @ChanganAuto и Помощь с Xbox One Controller и Bluetooth. По какой-то причине это все еще не сработало для меня.
У меня двойная загрузка с Windows. Поэтому я протестировал на установке Windows, чтобы увидеть, может ли контроллер подключиться к Windows (это также можно сделать, протестировав на виртуальной машине). Контроллер Xbox подключился в этой среде по Bluetooth. И после этого, когда я попытался снова на Linux, то это сработало для меня. Не знаю почему, но, возможно, это уникально для тех, кто использует двойную загрузку.
После того как в интернете не нашел решения, я продолжал работать день за днем, настраивая профили Bluetooth и наконец решил проблему. Я здесь, чтобы поделиться своим решением:
Прежде всего, если вы используете контроллер от первого производителя, используйте внешний USB Bluetooth, который должен подключиться без каких-либо настроек. Затем перейдите к решению ниже (это будет работать не только для Xbox, но и для сторонних универсальных Bluetooth-геймпадов, китайских Bluetooth-геймпадов, геймпадов EasySMX с режимом контроллера Nintendo Switch и некоторых Bluetooth-клавиатур).
Редактируйте /etc/bluetooth/input.conf (если не существует, создайте один) и измените параметры, чтобы они соответствовали следующей конфигурации:
# Файл конфигурации для службы ввода
# Этот раздел содержит параметры, которые не специфичны для какого-либо
# конкретного интерфейса
[General]
# Установите таймаут простоя (в минутах) перед отключением соединения
# (по умолчанию 0 - без таймаута)
#IdleTimeout=30
# Включите обработку протоколов HID в профиле ввода пользовательского пространства
# По умолчанию false (HIDP обрабатывается в модуле ядра HIDP)
UserspaceHID=true
# Ограничить подключения HID к связанным устройствам
# Профиль HID не указывает, что устройства должны быть связанными, однако некоторые
# платформа может хотеть удостовериться, что входящие соединения поступают только от связанных
# соединений устройств. Несколько старых мышей известны тем, что не поддерживают
# сопряжение/шифрование.
# По умолчанию true для безопасности.
ClassicBondedOnly=false
# Безопасность LE-обновления
# Включает обновления безопасности автоматически при необходимости.
# По умолчанию true для максимизации совместимости с устройствами.
LEAutoSecurity=false
Теперь ваше устройство будет подключаться, даже если ключ сопряжения не обменивался или Bluetooth-адаптер не смог обменяться ключами.
Ответ или решение
Решение проблемы с подключением контроллера Xbox One через Bluetooth на Ubuntu 20.04
Если вы столкнулись с проблемой подключения контроллера Xbox One к вашему компьютеру с Ubuntu 20.04.3 LTS через Bluetooth, и при этом контроллер не распознается в играх, несмотря на то, что в системе он отображается как подключенный, это может быть вызвано несколькими причинами. Рассмотрим шаги, которые могут помочь вам решить эту проблему.
Шаг 1: Проверка оборудования
-
Убедитесь в исправности контроллера. Проверьте, корректно ли он работает на другой системе. Это можно сделать, подключив контроллер к Windows или другим устройствам. Если контроллер работает на другой ОС, проблема, скорее всего, связана с конфигурацией Bluetooth на Ubuntu.
-
Использование внешнего Bluetooth-адаптера. Если ваш компьютер использует встроенный Bluetooth, попробуйте использовать внешний USB Bluetooth-адаптер, который может быть более совместимым с контроллерами Xbox.
Шаг 2: Установка необходимых пакетов
Для правильного функционирования контроллера в Ubuntu может потребоваться установка драйвера. Откройте терминал и введите следующие команды:
sudo apt install xboxdrv
sudo systemctl enable xboxdrv.service && sudo systemctl start xboxdrv.service
Эти команды установят и активируют драйвер для контроллера Xbox.
Шаг 3: Отключение ERTM
Некоторые пользователи сообщают, что отключение ERTM (Enhanced Retransmission Mode) решает проблему с подключением контроллера. Для этого выполните следующие действия:
- Откройте терминал и введите команду:
echo 1 > /sys/module/bluetooth/parameters/disable_ertm
Если у вас нет прав суперпользователя, выполните команду через sudo -s
, чтобы получить доступ к суперпользователю.
Шаг 4: Настройка конфигурации Bluetooth
Если предыдущие шаги не помогли, вам может понадобиться изменить конфигурацию Bluetooth.
- Создайте или отредактируйте файл
/etc/bluetooth/input.conf
и внесите следующие изменения:
# Configuration file for the input service
[General]
UserspaceHID=true
ClassicBondedOnly=false
LEAutoSecurity=false
Эти изменения помогут устранить проблемы с подключением и могут расширить совместимость с различными Bluetooth-устройствами.
Шаг 5: Повторное соединение
После внесения всех изменений, попробуйте снова подключить контроллер:
- Включите контроллер и пере установите соединение с Ubuntu через раздел Bluetooth.
- Убедитесь, что индикатор на контроллере прекращает мигать, и проверьте его работоспособность в играх или в тестовых приложениях.
Заключение
Если после выполнения всех вышеуказанных шагов ваш контроллер Xbox One по-прежнему не работает через Bluetooth, вероятно, проблема может быть в несовместимости конкретного Bluetooth-адаптера или специфических настройках вашей системы. В таком случае стоит рассмотреть возможность обновления системы или использования контроллера через USB-кабель.
Следуя этим рекомендациям, вы сможете устранить проблему с подключением контроллера Xbox One к вашей системе Ubuntu 20.04.