Архив за March, 2007

Управление рабочим столом с помощью Wii Remote

Вчера я стал счастливым обладателем игровой видеоприставки Nintendo Wii. Так как при этом я являюсь счастливым обладателем компьютера с Debian GNU/Linux, то мне конечно же захотелось сделать так же, как на этом видео-ролике :)

Вот что для этого необходимо:

  • Wii Remote (сама приставка не нужна!)
  • Debian GNU/Linux 4.0 (другой дистрибутив тоже подойдёт, но инструкции я привожу именно для Debian)
  • Две свечки (это такие штуки из воска, которые создают романтическую атмосферу). Они нужны в качестве источника IR излучения.

Нужно установить некоторые пакеты:

sudo aptitude bluez-utils python-bluez python-xlib
  1. Скачать “драйвер” для Wii Remote отсюда (есть SVN-репозитарий – https://svn.forthewiin.org/wmd/trunk). На самом деле это никакой не драйвер, т.к. с ядром он не взаимодействует. Это просто Python скрипт для обработки сигналов с Wii Remote
  2. “Пропатчить” файл /usr/share/python-support/python-xlib/Xlib/protocol/display.py (из пакета python-xlib). В нём нужно заменить:
    recv = self.socket.recv(4096)

    на

    recv = self.socket.recv(2048)

    Возможно, этот шаг можно пропустить. Я не знаю точно, для чего это нужно :)

  3. Выполнить команды:

    sudo modprobe uinput
    sudo chmod a+rwx /dev/input/uinput

    Без этого кнопки на Wiimote не работали.

  4. Теперь нужно определить адрес вашего Wiimote. Нажимаем одновременно кнопки 1 и 2 на Wiimote, при этом он на 30 секунд переходит в режим discovery. Выполняем команду:

    andrey@cornelius:~$ hcitool scan
    Scanning ...
            00:19:1D:73:30:69       Nintendo RVL-CNT-01
    

    Среди найденных устройств должен появится и Wiimote. В моём случае его адрес 00:19:1D:73:30:69

  5. Прописываем этот адрес в wmd/Config.py (параметр MY_WIIMOTE_ADDR)
  6. В том же файле отключаем ненужные модули:
    'DISABLE_PYLAB': 1,
    'DISABLE_PYGAME': 1,
    'DISABLE_PYOSD': 1,
  7. Зажигаем свечки :) и ставим их перед монитором на расстоянии 20-25 см. друг от друга
  8. Нажимаем одновременно кнопки 1 и 2 и запускаем WMD.py
  9. Если повезёт так же как мне, то будет работать :)
  10. Хвастаемся перед друзьями

Удачи!