Таблица совместимости функций DualSense в играх на Linux, общие советы и решения


Здесь будут описаны некоторые хитрости и общие советы по настройке Wine/DualSense для Linux, а также таблица совместимости со всей информацией, которую мне удалось собрать. Список будет со временем пополняться и изменяться в зависимости от того, удастся ли исправить те или иные проблемы, связанные с геймпадом от Sony.

Таблица совместимости игр

https://docs.google.com/spreadsheets/d/1YvnaCKplTCEyWBWw-ypcDK1N_saDmuygA3RWhpcO8Ak/edit#gid=0

Если вашей игры нет в списке, это не значит, что она не работает, автор чисто физически не может протестировать абсолютно все игры на планете. Если у вас есть положительные тесты, вы можете отправить сообщение мне с вашими настройками запуска.

Исправления работоспособности DualSense
Общие исправления для DualSense

Ниже приведены команды для исправления работы DualSense в играх:

Способ первый (универсальный)

Открываем файл:
sudo nano /etc/udev/rules.d/80-dualsense.rules
и вставляем строчку ниже

SUBSYSTEM=="sound", ACTION=="change", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ce6", ENV{SOUND_DESCRIPTION}="Wireless Controller"

И перезагружаем правила командой:
sudo udevadm control --reload-rules

Способ второй (только для пользователей с системой звука pipewire)

Открываем файл:
nano ~/.config/wireplumber/main.lua.d/80-dualsense.lua
и вставляем в него конфиг

rule = {
    matches = {
        {
            { "node.name", "matches", "*DualSense_Wireless_Controller*" },
        },
    },
    apply_properties = {
        ["node.description"] = "Wireless Controller",
    },
}

table.insert(alsa_monitor.rules,rule)

Перезагружаем pipewire командой:
systemctl --user restart pipewire wireplumber

Важно!

Первый фикс применяется глобально ко всем играм с пропатченным WINE или PROTON версии 8.X и выше
Второй фикс применяется только для пользователей с системой звука pipewire вместо pulseaudio. Применение данного фикса не требует первого, при этом оба фикса не конфликтуют между собой

Примечание: для распознавания DualSense игрой необходимо включить параметр “DINPUT PROTOCOL” в настройках PP. PROTON_LG или WINE_LG должны быть версии 8.X и выше. Рекомендуются версии 9.X и выше.

image

Для работы всех функций DualSense должен быть подключен по проводному соединению USB Type-C! (желательно в гнездо USB 3.1 и выше)

Также для работы Haptic Feedback (Тактильной отдачи) необходимо включить звук DualSense Wireless Controller в настройках звука, например в KDE (громкость больше 0)

image

Исправление Haptic Feedback

На примере игры Alan Wake 2.

  1. Открываем окно запуска нашей игры. В данном примере “AlanWake2.exe”
    и выбираем из списка WINE и меняем на “PROTON_LG-9-5-1” (или выше). В PREFIX стираем DEFAULT и пишем свой префикс, например “AW2” (без кавычек).
  2. Переходим в НАСТРОЙКИ и активируем опцию DINPUT PROTOCOL (важно!). Ползунок должен быть в правом положении.
    image
  3. Сохраняем изменения и запускаем игру.

Дополнительная проверка работы Haptic Feedback: открываем программу pavucontrol или в моем случае Helvum. Если присутствуют две колонки со звуком и одна из них проецирует звук на DualSense Wireless Controller (PS5), то все сделано правильно (колонки может и не быть, так как в этот момент вы могли переключиться на клавиатуру + мышь. Следует протестировать вибрацию непосредственно в игре).


image

Отдельные исправления для игр
Animal Well

Добавьте “грязный” хак для второй колонки. Подробнее описано в статье под спойлером “Грязный” хак для использования Haptic Feedback… ниже.


image

Genshin Impact

В настройках игры переключить тип управления с “Клавиатура/Мышь” на “Геймпад”

GhostWire: Tokyo

В последнем обновлении иконки кнопок геймпада отображаются от геймпада Xbox, но DualSense игрой распознается и все функции работают корректно:


image

Scars Above

Та же самая проблема, что и в GhostWire: Tokyo: все функции DualSense работают, но вместо привычных кнопок показываются иконки от геймпада Xbox (что не мешает играть).

"Грязный" хак для использования Haptic Feedback (Тактильной отдачи/HD вибрации) везде

Для работоспособности хака необходима программа, которая реализует “patchbay” механику, например pavucontrol или в моем случае Helvum.
Открываем pavucontrol/Helvum и любую программу/бразуер/игру, где есть звук.
Теперь в левой стороне видим, что у нас отображаются отдельные колонки со звуком (устройств может быть больше или меньше в зависимости от установок системы).

image

У меня включена игра Apex Legends, на ней и протестируем. Как видно на скриншоте, весь звук сейчас передается на мои наушники. Но что, если звук будет передаваться одновременно и наушникам, и геймпаду? Добавим Output_FL и output_FR в playback_RL и playback_RR соответственно. Тянем Output_FL в playback_RL с помощью мыши и точно так же с Output_FR в playback_RR. Наглядный пример:
image

Если в игре играет музыка, ее вибрация передается непосредственно в DualSense благодаря технологии Haptic Feedback, основанной на звуке.
Вот так легко мы можем внедрить свою поддержку Haptic Feedback, даже если это не задумано изначально разработчиком. =)

Программы/Софт
Программа dualsensectl для настройки геймпада DualSense

Доступна программа со всякими настройками для геймпада DualSense под названием dualsensectl
Ссылка: https://github.com/nowrep/dualsensectl

Вкратце можно изменять подсветку, делать собственные адаптивные триггеры, узнать примерный процент зарядки, включать/выключать микрофон и динамик, проверять моторчики тактильной вибрации и отдачи триггеров и т.д.

Удобная программа с графическим интерфейсом для настройки своих адаптивных триггеров и не только

Ссылка: https://github.com/Etaash-mathamsetty/trigger-control

Источники

https://www.pcgamingwiki.com/wiki/
https://github.com/ValveSoftware/Proton/issues/5900/
https://github.com/ClearlyClaire/wine
https://github.com/ClearlyClaire/wine/commits/proton-wine-9.0-1%2Bdualsense/
https://github.com/nowrep/dualsensectl
https://github.com/Etaash-mathamsetty/trigger-control

2 Likes