quinta-feira, 21 de janeiro de 2010

Wii-remote como comando do XBMC através do WiiUse:


Anteriormente escrevi as instruções necessárias para usar o comando da Wii nos menus do XBMC através do xbmc-eventclients-wiiremote.

Funciona muito bem em computadores com sistemas de 32bits, mas se for de 64bits como é o caso do meu myHTPC que utiliza o Ubuntu de 64bits não funciona correctamente devido a problemas de conexões e desconexões sucessivas do wii-remote, coisa que parece ser comum nos sistemas de 64bits utilizando apenas o xbmc-eventclients-wiiremote que se encontra disponível no repositório oficial do xbmc!

Para contornar isso é preciso usar o wiiuse que é uma biblioteca escrita em C para ligar vários wii-remotes e utilizar todas as suas funcionalidades e botões. Com o wiiuse temos o wii-remote a funcionar no Ubuntu de 32 ou 64 bits sem problemas :)



As instruções para ligar o Wii-remote ao PC através do WiiUse:


1 - Vou efectuar o download do pacote fonte do XBMC e vou extrai-lo na minha home directory. (/home/nasp/xbmc-9.11/) este pacote inclui o wiiuse.

2 - Só preciso de compilar e criar o executável referente ao wiiuse que se encontra em ( /home/nasp/xbmc-9.11/tools/EventClients/Clients/WiiRemote )

3 - Mas antes é preciso fazer uma alteração num ficheiro com o nome io_nix.c que se encontra em ( /home/nasp/xbmc-9.11/tools/EventClients/Clients/WiiRemote/wiiuse_v0.12/src ). "Pois sem esta alteração o programa não funciona correctamente"

4 - Abrindo este ficheiro com um editor de texto como o gedit vou adicionar o seguinte na linha numero 174 do ficheiro io_nix.c ( ADICIONEI SÓ A LINHA A VERMELHO ) e salvei a alteração:

struct sockaddr_l2 addr;

memset(&addr, 0, sizeof (addr));
if (!wm || WIIMOTE_IS_CONNECTED(wm))
return 0;


5 - Agora já posso compilar o wiiuse, e na consola digito : cd /home/nasp/xbmc-9.11/tools/EventClients/Clients/WiiRemote

6 - E o comando para criar o executável, digito : make


7 - Como tudo correu bem sem erros foi criado um executável “WiiUse_WiiRemote” que passarei a utilizar na ligação. ( Atenção que este executável têm de correr sempre dentro da pasta onde estiver a subpasta do wiiuse_v0.12, porque necessita de algumas bibliotecas em C ai presentes!!)

8 - Faço o primeiro teste de ligação e na consola digito : ./WiiUse_WiiRemote


9 - Cliquei nos botões 1 e 2 do wii-remote ao mesmo tempo, e como a ligação foi bem sucedida (2 a 3 segundos de espera) o wii-remote vibrou e acendeu-se a luz do comando respeitante ao jogador 1. Se abrir o XBMC passarei a controlar logo os menus só com o wii-remote, pois todos os botões já se encontram configurados através do ficheiro joystick.WiiRemote.xml que se encontra presente em qualquer instalação do XBMC (na pasta system/keymaps).

10 - Como se pretende usar o wii-remote como único comando do XBMC, e mais concretamente do xbmc-standalone é preciso executar o comando no arranque do PC, para isso só preciso de adicionar o seguinte comando ao ficheiro rc.local : (colei o comando antes do final do ficheiro e antes de exit 0 )

sudo gedit /etc/rc.local

11 - Copiei e colei este comando :

cd /home/nasp/WiiRemote && ./WiiUse_WiiRemote

12 - Não se esqueçam que têm que ter bluetooth no PC, reconhecido e instalado ( sudo apt-get install bluez-utils )

Caso existam alguns erros na criação do executável apaguem tudo e antes de recomeçarem instalem estes pacotes:

sudo apt-get install build-essential libbluetooth-dev libxtst-dev

sudo apt-get install freeglut3 freeglut3-dbg freeglut3-dev libglu1-mesa libglu1-mesa-dev libglui2c2 libglui-dev libglut3 libglut3-dev blueman libsdl1.2-dev

Usar o wii-remote como comando do XBMC pode não ser a melhor opção só devido ao custo do comando em si, porque de resto funciona 5 estrelas!!!

3 comentários:

  1. ao executar o comando make, sempre acontecem os erros:

    make[1]: Saindo do diretório `/home/igor/xbmc-9.11/tools/EventClients/Clients/WiiRemote/wiiuse_v0.12/src'
    g++ -Wall -pipe -fPIC -funroll-loops WiiUse_WiiRemote.cpp wiiuse_v0.12/src/release-x86_64-linux-gnu/libwiiuse.so -o WiiUse_WiiRemote
    In file included from WiiUse_WiiRemote.cpp:18:
    WiiUse_WiiRemote.h:32:20: error: wiiuse.h: Arquivo ou diretório não encontrado
    In file included from WiiUse_WiiRemote.cpp:18:
    WiiUse_WiiRemote.h:98: error: ‘wiimote’ has not been declared
    WiiUse_WiiRemote.h: In constructor ‘CWiiController::CWiiController()’:
    WiiUse_WiiRemote.h:106: warning: deprecated conversion from string constant to ‘char*’
    WiiUse_WiiRemote.h: At global scope:
    WiiUse_WiiRemote.h:116: error: ‘wiimote’ was not declared in this scope
    WiiUse_WiiRemote.h:116: error: expected primary-expression before ‘)’ token
    WiiUse_WiiRemote.h:117: error: ‘wiimote’ was not declared in this scope
    WiiUse_WiiRemote.h:117: error: expected primary-expression before ‘)’ token
    WiiUse_WiiRemote.h:119: error: variable or field ‘EnableMotionSensing’ declared void
    WiiUse_WiiRemote.h:119: error: ‘wiimote’ was not declared in this scope
    WiiUse_WiiRemote.h:119: error: ‘wm’ was not declared in this scope
    WiiUse_WiiRemote.h:120: error: variable or field ‘DisableMotionSensing’ declared void
    WiiUse_WiiRemote.h:120: error: ‘wiimote’ was not declared in this scope
    WiiUse_WiiRemote.h:120: error: ‘wm’ was not declared in this scope
    WiiUse_WiiRemote.cpp:20: error: variable or field ‘get_keys’ declared void
    WiiUse_WiiRemote.cpp:20: error: ‘wiimote’ was not declared in this scope
    WiiUse_WiiRemote.cpp:20: error: ‘wm’ was not declared in this scope
    make: ** [all] Erro 1

    AJUDA!

    ResponderEliminar
  2. Igor

    Tenta recomeçar de novo e certificate que tens os pacotes todos instalados.

    Antes de recomeçar apaga o pasta xbmc-9.11 e faz nova extracção dos arquivos e tenta novamente.

    ResponderEliminar
  3. faltava instalar a biblioteca do wiiuse. pensei ter instalado anteriormente, quando não o tinha feito.
    http://sourceforge.net/projects/wiiuse/files/

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...

Popular no Blogue: