Подключаем 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.