loading...

Tuxmind

Xbox One controller bluetooth no Ubuntu 18.04

sábado, 21 de dezembro de 2019
Tuxmind
Para o gamepad do xbox funcionar pelo bluetooth você vai ter de instalar o sysfsutils.
sudo apt install sysfsutils
Depois tera de editar o /etc/sysfs.conf (com o sudo) e dicionar o seguinte no final do arquivo.
/module/bluetooth/parameters/disable_ertm=1
Depois e só salvar e reiniciar o pc.

O problema é que o ertm sempre ativo causa incompatibilidades com outros dispositivos bluetooth.
A solução é ativar o ertm sempre que queremos usar o gamepad e desativar quando não estiver a ser usado.
Mas... Vou ter de estar sempre a editar o /etc/sysfs.conf e a reiniciar a máquina? Claro que não! Vamos usar um shell script com três funcionalidades. Ativar o ertm, desativar o ertm e por fim verificar o estado (ver se está ativado ou não).


#!/bin/bash
#Este script ativa e desativa o ertm para xbox gamepad funcionar.
#O ertm causa instabilidade com outros dispositivos com bluetooth. Por isso ligar o ertm apenas quando precisar do gamepad.
#Para este script funcionar primeiro deve emparelhar o gamepad no ubuntu.
#Testado no ubuntu 18.04.3LTS
#tuxmind.blogspot.com

get_status()
{
ERTM=`cat /sys/module/bluetooth/parameters/disable_ertm`

if [ "$ERTM" = "Y" ]; then
  echo "[ ON ] ertm ativado para o gamepad"
elif [ "$ERTM" = "N" ]; then
  echo "[ OFF ] ertm desativado para o gamepad"
fi
}

liga_gamepad()
{
  sudo rfkill block bluetooth &&
  echo "[ OK ] a desligar bluetooth..." &&
  echo 1 | sudo tee /sys/module/bluetooth/parameters/disable_ertm &&
  echo "[ OK ] a ativar ertm..." &&
  sudo systemctl stop bluetooth.service &&
  echo "[ OK ] desativando serviço o bluetooth..." &&
  sudo modprobe -r btusb &&
  echo "[ OK ] removendo o modulo bluetooth btusb..." &&
  sudo modprobe btusb &&
  echo "[ OK ] adicionando o modulo bluetooth btusb..." &&
  sudo systemctl start bluetooth.service &&
  echo "[ OK ] ativando serviço o bluetooth..." &&
  sudo rfkill unblock bluetooth &&
  echo "[ OK ] a ligar bluetooth..." &&
  echo "[ OK ] ertm game pad on!" ||
  echo "[ ERRO ] script falhou"
}


desliga_gamepad()
{

  sudo rfkill block bluetooth &&
  echo "[ OK ] a desligar bluetooth..." &&
  echo 0 | sudo tee /sys/module/bluetooth/parameters/disable_ertm &&
  echo "[ OK ] a remover ertm..." &&
  sudo systemctl stop bluetooth.service &&
  echo "[ OK ] desativando serviço o bluetooth..." &&
  sudo modprobe -r btusb &&
  echo "[ OK ] removendo o modulo bluetooth btusb..." &&
  sudo modprobe btusb &&
  echo "[ OK ] adicionando o modulo bluetooth btusb..." &&
  sudo systemctl start bluetooth.service &&
  echo "[ OK ] ativando serviço o bluetooth..." &&
  echo "[ OK ] ertm game pad off!" ||
  echo "[ ERRO ] script falhou a desativar ertm"
}



case "$1" in
  "on")
  echo "a ligar gamepad..."
  liga_gamepad
  ;;
  "off")
  echo "a desligar gamepad..."
  desliga_gamepad
  ;;
  "status")
  get_status
  ;;
  *)
  echo "Erro. Parametros possíveis: [on] [off] [status] "
  ;;
esac

exit

Guarde com o nome de ertm_gamepad.sh e de permissão para executar através do comando:

chmod +x ertm_gamepad.sh

Para ativar o ertm:

ertm_gamepad.sh on

Para desativar:

ertm_gamepad.sh off

E se você já não se lembra se está ativado ou não:

ertm_gamepad.sh status

Este script foi testado no Ubuntu 18.04 LTS. Infelizmente não obtive sucesso a "emparelhar" o xbox controller  no Ubuntu 19.10 via bluetooth.

Nenhum comentário: