Подключаем DualShock 3 к Debian 12

Долгое время мне пришлось пользоваться игровым контроллером Logitech F310. Это хорошая “рабочая” лошадка. Он надёжный. Но есть и недостатки. Подключение только проводное и никакой вибрации.

Оба этих минуса отсутствуют у старшей модели линейки F710. Но на этот раз можно подключиться только беспроводным методом. Дополнительный минус заключается в типе беспроводного подключения. Никакого Bluetooth, только радиоканал через USB ресивер. Да и стоит он не самую маленькую сумму на сегодня.

При этом у меня давно без дела лежит контроллер от PlayStation 3. Сама приставка уже не при делах, а вот контроллер работает отлично. Есть возможность работы и в проводном и в беспроводном режиме по Bluetooth. Есть вибрация. В общем, весь комплект.

Недолго думая, подключаю контроллер к системе через mini-USB кабель. И чудо, оказывается, в стабильных на сегодня ядрах есть поддержка DualShock 3 прямо “из коробки”. Приятный бонус, ведь в прошлом приходилось немного попотеть.

Пробую отключить провод и подключить по Bluetooth. Засада. Постоянно вижу окно с предложением ввести PIN для “спаривания” устройств. Ввожу стандартный 0000, но это не помогает. Идём к поисковику.

ArchWiki, как всегда, радует. Вот статья о подключении геймпадов через Bluetooth. Там есть отличный раздел о том, что нужно поменять параметр ClassicBondedOnly на false. Кроме этого рекомендуется установить значение false и для UserspaceHID.

Оба этих флага нужно переключать из-за ограничений безопасности, учтите это. Установка их в false сделает систему потенциально более уязвимой.

В моём случае это необходимо, т.к. DualShock 3 просто откажется работать без изменения как минимум ClassicBondedOnly.

Вносим изменения в /etc/bluetooth/input.conf и перезагружаем сервис BT:

$ sudo sed -i 's/#ClassicBondedOnly=true/ClassicBondedOnly=false/g' \
    /etc/bluetooth/input.conf
$ sudo systemctl restart bluetooth.service

В случае, если у вас более свежая версия bluez чем 5.73, может потребоваться и установка UserspaceHID. Хотя, мне это на Debian 12 с bluez 5.66 не нужно:

$ sudo sed -i 's/#UserspaceHID=true/UserspaceHID=false/g' \
    /etc/bluetooth/input.conf
$ sudo systemctl restart bluetooth.service

Теперь просто нажимаем кнопку PS на DualShock 3 и видим, что он подключен к ПК. Очень приятно, что со временем “старое” железо всё лучше поддерживается в рамках ядра Linux. Есть нюансы, но всё же это проще, чем было раньше.

Журнал изменений

20 августа 2024 г.: заменил sudo tee на sudo sed -i.

Если Вы хотите обсудить содержание заметки, задать вопросы или предложить изменения, то со мной можно связаться в Telegram