LINUX.ORG.RU

Как запустить XboxDrv в режиме демона

 , ,


2

1

Как вы знаете, XboxDrv не работает в режиме демона. Он запускается, но геймпад не пробрасывает: либо не подключает устройство по evdev, либо не регистрирует геймпад в виде иксбоксового контроллера.

Выход один: Запустить его демоном без флага --daemon.

Но тут возникает проблема: при попытке запуска демона в обычном режиме xboxdrv — он падает из-за того, что занимает консоль интерактивным выводом.

РЕШЕНИЕ ЕСТЬ!!! Нужно использовать команду bash -c и вписать вначале nohup и в конце &.

# Systemd unit to enable xboxdrv driver for Xbox 360 controller
# Usage:
# save to /lib/systemd/system/xboxdrv-s44.service
# to start: sudo service xboxdrv-s44 start
# to enable on boot: sudo systemctl enable xboxdrv-s44

[Unit]
Description=Xbox controller driver daemon-S44

[Service]
Type=forking
User=root
ExecStart=/usr/bin/bash -c "nohup xboxdrv --evdev /dev/input/by-id/usb-DragonRise_Inc._Generic_USB_Joystick-event-joystick --axismap -Y1=Y1,-Y2=Y2 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RZ=y2 --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --evdev-keymap BTN_BASE5=tl,BTN_BASE6=tr --evdev-keymap BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE=lt,BTN_BASE2=rt --evdev-keymap BTN_BASE4=start,BTN_BASE3=back --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y --mimic-xpad --silent &"

[Install]
WantedBy=multi-user.target

Теперь у вас xboxdrv работает в режиме демона, поздравляю!



Проверено: Poisoned ()
Последнее исправление: hobbit (всего исправлений: 5)

Как вы знаете, XboxDrv не работает в режиме демона. Он запускается, но джойстик не пробрасывает.

А это бага такая? Т.е. режим предусмотрен, но не работает? И если да, знают ли об этом разработчики?

Так-то nohup вообще команда мощная и полезная и лишний пиар в виде такой заметки ей не помешает… ;)

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Лоровцы про этот баг знают. В режиме демона оно что-то делает с D-Bus и чего-то там не может сделать.

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

Проще через ноу-хап запускать, без режима демона.

Set440
() автор топика
Ответ на: комментарий от hobbit

Кажется есть что-то такое на багтрекерах программы и на многочисленных форумах, но там советуют жестокий с3к$ с флагами программы насчёт D-Bus. Разработчики там немного не от мира сего. В итоге у 80% пользователей этот режим не работает по всяким причинам.

Например поведение программы часто непредсказуемое. На ядре 6.5 она регистрирует и читает эмулированный джойстик без прав рут, тоесть раньше я в кедах в автозагрузке просто делал ярлычёк и оно работало.

Сейчас, при установке нового ссд — вскрылась ядерная регрессия, низкая производительность 3D при использовании SSD на свежих ядрах. Нормально работает только 6.1

Но хбохдрв на 6.1 хочет права рута, и судо в ярлычёк уже не впишешь.

Потому я для всех сочувствующих написал замеку как запустить программу без секса с бубном.

Set440
() автор топика
Последнее исправление: Set440 (всего исправлений: 1)
Ответ на: комментарий от mittorn

Screen, имхо, немного для другого. Например, для того, чтобы программу, которая должна висеть на сервере и которую демонизировать не получается в принципе, запустить в сеансе и отключиться от этого сеанса до лучших времён. Например, это официальный путь для запуска OpenSim(ulator), который его авторы умудрились написать на сишарпе и сделать консольно-интерактивную настройку. Вместо screen можно tmux взять, например.

А тут предлагается именно демонизация, пусть и не слишком стандартными средствами. Программу, обёрнутую nohup-ом, можно вставить в автозапуск и не страдать по сессиям. ТС так и сделал.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Точно. Целью был именно автозапуск от имени рута.

Set440
() автор топика
Ответ на: комментарий от hobbit

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

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

А зачем, если это просто драйвер??? Ну, т-е программа, эмулирующая устройство... драйвер же по-сути?

Эта программа просто вешает терминал сообщением, что «эмулированное устройство находится по такому-то адресу, и прочитано такое-то устройство, репортите баги туда-то, вроде всё работает, досвидания.»

Тоесть, вешает терминал одним сообщением, и больше ничего не хочет. Смысл там что-то вводить/выводить?

Без флага сайлент — оно просто для отладки сыпет сообщениями событий кнопок джойстиков, и фсё.

Set440
() автор топика
Ответ на: комментарий от mittorn

В скрине был какой-то ужасный баг. Я не знаю как там сейчас, но этот-самый гну-скрин жрёт 800 мегабайт оперативной памяти...

Надеюсь пофиксили уже.

Саклесс советует тмукс.

Хотя я в душе не понимаю, зачем для палки-ковырялки ХбохДрв запускать аж целый мультиплексор терминала...

По-моему, 70% посетителей лора могут скопировать себе системд-юнит, но не разберутся, как из сервиса в консоли выковырять тмукс или скрин, всмысле, как его достать на поверхность потом.

Ноу-хап всё-таки более лёгкое решение. Этот драйвер жрёт 8мб оперативной памяти, и нет смысла его скрином раздувать до гигабайта.

Set440
() автор топика
Ответ на: комментарий от Set440

Значит не нужно. Я просто прочитал про интерактивную работу с терминалом и подумал что тут логичней был бы screen, чем костыль с nohup

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

Когда софт именно хочет интерактивный терминал

Ну вот сабж, как я понял, интерактивности особо не хочет. Просто по умолчанию демонизироваться не хочет, и это лечится ноухапом.

А вот с опенсимом тяжёлый случай. Он с одной стороны серверное ПО, а с другой при запуске задаёт кучу вопросов по настройке. Я не знаю, каким там местом думали разработчики, но вот там выкатывание тяжёлой артиллерии в лице screen оказывается действительно уместным. :)))

hobbit ★★★★★
()
Ответ на: комментарий от Set440

хочет права рута, и судо в ярлычёк уже не впишешь

А в ярлычек путь до баш скрипта, в котором судо нельзя сделать?

serg002 ★★★
()
Последнее исправление: serg002 (всего исправлений: 1)

Угадал автора по заголовку

Werenter ★★★
()
Ответ на: комментарий от mx__

На ядре 6.5 он работает без судо, а на лтсном нужно судо.

Задача была в том, чтобы воткнуть его в автозагрузку от рута.

Set440
() автор топика
Ответ на: комментарий от Set440

А в автозагрузку путь до скрипта нельзя было указать, в котором уже был бы судо? Хотя, вариант с юнитом, конечно, стратегически лучше

serg002 ★★★
()
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от Set440

Хз как на 4х но на 5х оно точно работало и так.

mx__ ★★★★★
()

А какой смысл использовать геймпады от иксбокса если там такие танцы с бубном вокруг? Берешь 8bitdo или gulikit без проблем работают через bluetooth без всяких дополнительных драйверов, встроенный аккум, стики на датчиках Холла, стоят в два раза дешевле иксбоксовских.

AleksK ★★★
()
Ответ на: комментарий от Set440

Вопрос. Почему этот кусок кода вообще нужно как-то запускать от польлзователя, долбиться в dbus и извращаться с nohup, если это должен быть модуль ядра?

PPP328 ★★★★★
()
Ответ на: комментарий от AleksK

Разные юзкейсы бывают. Достался иксбокс от бабушки по наследству, мало ли.

Чувак просто запостил гайд. Полезно кому-то будет.

Gonzo ★★★★★
()
Ответ на: комментарий от AleksK

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

Set440
() автор топика
Ответ на: комментарий от PPP328

потому-что это эмулятор. Юзерспэйсный драйвер, да, но эмулятор.

Set440
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.