Использование контроллеров от Nintendo Switch в Cemu и Dolphin (Linux)

Сегодня я очнусь от своей глубокой дремы и расскажу, как использовать управление движениями от контроллера nintendo switch в нескольких эмуляторах, таких как Dolphin и Cemu, в Linux.

Пожалуйста, используйте ссылки на оригинальные руководства, чтобы проверить, не изменилось ли что-то за время после написания гайда, особенно если у вас возникли какие-то проблемы при выполнении этого гайда.

Video Version Ссылка на заголовок

Проверьте наличие hid_nintendo Ссылка на заголовок

Этот драйвер необходим для базовой поддержки контроллера nintendo и добавлен в современном ядре linux (возможно? Многие источники противоречат друг другу в этом вопросе), поэтому вы можете не устанавливать его вручную, но проверьте, что он у вас есть

  • откройте терминал
  • выполните команду sudo modinfo hid_nintendo.

Если вы получите информацию о модуле, то можете больше не беспокоиться.

  • На Fedora вы также можете попробовать установить sudo dnf install kernel-modules-extra и проверить еще раз.
  • Если все равно не получается, следуйте инструкциям из официального github-репозитория.

Вы также можете установить hid-nx-dkms вместо этого, для лучшей поддержки NS Online и некоторых других нестандартных контроллеров лицензированных nintendo.

Установите joycond Ссылка на заголовок

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

Проверьте, использует ли ваш дистрибутив systemd. Если нет, проверьте issue 28 на их github, а также ссылку на неофициальный OpenRC-скрипт для joycond. Если вы продвинутый пользователь, вы можете написать свой собственный скрипт инициализации и заставить его работать, но если вы читаете это руководство, вы, вероятно, не являетесь таковым.

Используйте следующие команды (внимательно читайте # комментарии перед копированием)

# замените sudo в командах ниже на doas или su, если вы не используете sudo
# установите пакеты разработчика libevdev (-dev / -devel)
sudo apt install libevdev-dev make cmake # на Debian/Ubuntu/Mint
# ИЛИ
sudo dnf install libevdev-devel libudev-devel c++ make cmake # на Fedora

# клонируйте репозиторий
git clone https://github.com/DanielOgorchock/joycond.git

# перейдите в клонированный репозиторий
cd joycond

# компиляция
cmake .
# установить скомпилированный пакет
sudo make install

# включить установленный сервис/демон
sudo systemctl enable --now joycond

После этого удалите или переместите папку joycond.

Оригинальные инструкции в проекте github

Установите joycond-cemuhook Ссылка на заголовок

Это скрипт, который использует DSU standart для отправки данных контроллера по локальной сети, а также данных управления движением в нашем случае.

# установите python3
sudo apt install python3 # на Debian/Ubuntu/Mint
# ИЛИ
sudo dnf install python3 # на Fedora

# установите pip, если он не установлен по умолчанию
python3 -m ensurepip

pip3 install git+https://github.com/joaorb64/joycond-cemuhook

Оригинальные инструкции в проекте github

Подключите контроллеры Ссылка на заголовок

  • Нажмите кнопку синхронизации на контроллере
  • Подключите его с помощью Bluetooth (интерфейс зависит от используемого DE).
  • Одновременно нажмите кнопки L и R, чтобы использовать джойконы как один, или SL и SR на каждом из них, чтобы использовать их по отдельности
  • Откройте терминал и выполните команду joycond-cemuhook.

Если вы получите ошибку о модуле ядра, выполните команду `sudo modprobe hid_nintendo, чтобы включить его

Настройте Dolphin Ссылка на заголовок

  • Зайдите в настройки входа
  • Нажмите кнопку Alternate Input Sources

Скриншот меню контроллеров в cemu с кнопкой “Alternate Input Sources” в фокусе

  • Включите клиент DSU с помощью галочки в открывшемся меню

Скриншот меню кнопки Альтернативные источники

  • Добавьте устройство, используя IP и порт из вывода joycond-cemuhook в терминале

Скриншот меню настройки контроллера DSU

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

Настройка Cemu (родной порт linux) Ссылка на заголовок

  • Нажмите кнопку плюс рядом с контроллером, чтобы выбрать меню конфигурации ввода

Скриншот меню ввода в Cemu с нажатой кнопкой плюс

  • Добавить DSU контроллер

Скриншот выпадающего меню с выбором DSU контроллера

  • Используйте выпадающее меню “Контроллер”, чтобы выбрать его, вам может потребоваться использовать клавиши со стрелками и клавишу ввода, так как сейчас отображается только один контроллер в одно время

  • Нажмите “Настройки” и отметьте пункт “Использовать управление движением”.

Скриншот меню ввода в cemu с нажатой кнопкой настроек Скриншот настроек в меню ввода в cemu с установленным флажком управления движением