Como conectar um Wiimote a um sistema Fedora 19?

5

Como conectar um Wiimote para fins de controle remoto no Fedora?

(na verdade, é um clone wiimote de terceiros, como os vendidos na Amazon por 15 $)

    
por maxschlepzig 06.09.2013 / 15:57

1 resposta

7

O Fedora 19 é atual o suficiente para que a pilha bluetooth instalada venha com suporte a wiimote por padrão. Você pode conectar diretamente o wiimote como qualquer outro dispositivo bluetooth.

Emparelhamento básico

Se tudo funcionar bem, nenhum pino é necessário. No final do processo de emparelhamento, pode-se selecionar o wiimote como dispositivo de entrada no miniaplicativo bluetooth.

Dependendo do hardware, talvez algumas tentativas sejam necessárias primeiro (use o botão de reset dentro do compartimento da bateria) - um método é: depois que o computador 'vê' o hardware bluetooth, clique em conectar e pressione imediatamente 'reset' o dispositivo.

O símbolo bluetooth e / ou o menu de contexto mostram um emparelhamento bem-sucedido.

Com isso, apenas alguns botões funcionam (teclas para cima / para baixo / esquerda / direita, clique com o botão direito do mouse e espaço - é isso).

Assim, temos que configurar algum tipo de mapeamento.

Dependências necessárias

# yum install \
  git gcc strace strace autoconf automake libtool systemd-devel ncurses-devel
  xorg-x11-util-macros xorg-x11-proto-devel xorg-x11-server-devel

(o strace não é estritamente necessário, mas é útil verificar a permissão de problemas negados ao executar o xwiimote)

xwiimote

O repositório xwiimote contém a biblioteca básica do userspace que faz interface com o plug-in bluetooth-daemon e algumas ferramentas relacionadas.

Infelizmente, este software ainda não está empacotado para o Fedora.

Assim, temos que compilá-lo:

$ git clone https://github.com/dvdhrm/xwiimote.git
$ cd xwiimote
$ ./autogen.sh
$ ./configure --prefix=$HOME/local/xwiimote
$ make
$ make install

Alguns testes de hardware

$ ./xwiishow list
Listing connected Wii Remote devices:
  Found device #1: /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/bluetooth/hci0/hci0:11/0001:0002:0023.0032
End of device list

= > Emparelhamento funcionou, temos que corrigir as permissões para mais testes:

# chown root:juser /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/bluetooth/hci0/hci0:11/0001:0002:0023.0032/leds/*/brightness
# chmod g+w /sys/devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/bluetooth/hci0/hci0:11/0001:0002:0023.0032/leds/*/brightness

$ xinput --list
[..]
    ↳ Nintendo Wii Remote Accelerometer         id=9    [slave  keyboard (3)]
    ↳ Nintendo Wii Remote IR                    id=10   [slave  keyboard (3)]
    ↳ Nintendo Wii Remote                       id=11   [slave  keyboard (3)]
    ↳ Nintendo Wii Remote Extension             id=12   [slave  keyboard (3)]
    ↳ Nintendo Wii Remote Motion+               id=13   [slave  keyboard (3)]
[..]

= > mais alguns ajustes de permissão:

# chown root:juser /dev/input/event1[0123] /dev/input/event9
# chmod g+w /dev/input/event1[0123] /dev/input/event9

(o repositório xiimote também contém uma regra do udev de amostra para configuração de permissão na conexão, mas eles são necessários apenas para acesso direto como no xwiishow)

Inicie uma interface ncurses para testar botões, sensores, calibragem, etc.:

$ ./xwiishow 1

(onde 1 é o primeiro dispositivo)

Configuração real do Xorg

Existe um módulo xinput2 que ainda não está disponível nos repositórios de pacotes do Fedora / Fusion.

$ cd ..
$ git clone https://github.com/dvdhrm/xf86-input-xwiimote.git
$ cd xf86-input-xwiimote
$ ./autogen.sh
$ PKG_CONFIG_PATH=$HOME/local/xwiimote/lib/pkgconfig  ./configure --prefix=$HOME/local/xwiimote LDFLAGS="-L$HOME/local/xwiimote/lib -Wl,-R$HOME/local/xwiimote/lib"
$ make
$ make install

Verifique a configuração do caminho de tempo de execução:

$ ldd /home/gms/local/xwiimote/lib/xorg/modules/input/xwiimote_drv.so

(não deve exibir mensagens 'não encontradas')

Altere a configuração do Xorg para todo o sistema:

# cd /etc/X11/xorg.conf.d
# ln -s /home/juser/src/xf86-input-xwiimote/60-xorg-xwiimote.conf
# cd /usr/lib64/xorg/modules/input/
# ln -s /home/juser/local/xwiimote/lib/xorg/modules/input/xwiimote_drv.so

Efetue logout e reinicie o X.

Verifique através da ferramenta de linha de comando X xev : todos os botões devem agora enviar códigos de chave reais.

Por exemplo, com meu hardware, os padrões são: enter, left / right / up / down, espaço, 1, 2, esc, volume +/-

(que são padrões bastante sensatos)

Misc

O barato clone wiimote também veio com uma extensão 'nunchuck', que não funciona fora da caixa com xiishow - YMMV.

    
por 06.09.2013 / 15:57