2012-12-11

raspberry pi + bluetooth + dualshock 3

Jak wspomniałem TUTAJ zakupiłem klucz bluetooth na USB. Co zrobić żeby go uruchomić?




Podobnie jak z wifi sprawdzamy czy został poprawnie wykryty (np przez lsusb). W moim przypadku:
Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Następnie należy zainstalować wymagane paczki
apt-get install bluetooth bluez-utils blueman
upewniamy się, że uruchomiony jest demon
/etc/init.d/bluetooth status
po czym możemy włączyć bluetooth w telefonie czy laptopie i zweryfikować, czy da się go wykryć z RPI
# hcitool scan
Scanning ...

        xx:xx:xx:xx:xx:xx      n/a
U mnie szybko wykryło mojego laptopa.

Ponadto możemy zweryfikować czy wszystko w porządku w:
# hciconfig -a
hci0:   Type: BR/EDR  Bus: USB
        BD Address: xx:xx:xx:xx:xx:xx  ACL MTU: 384:8  SCO MTU: 64:8
        UP RUNNING PSCAN
        RX bytes:1520 acl:0 sco:0 events:47 errors:0
        TX bytes:458 acl:0 sco:0 commands:47 errors:0
        Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
        Link policy: RSWITCH HOLD SNIFF PARK
        Link mode: SLAVE ACCEPT
        Name: 'raspberrypi-0'
        Class: 0x420100
        Service Classes: Networking, Telephony
        Device Class: Computer, Uncategorized
        HCI Version: 2.0 (0x3)  Revision: 0x7a6
        LMP Version: 2.0 (0x3)  Subversion: 0x7a6
        Manufacturer: Cambridge Silicon Radio (10)
Oczywiście bardzo istotne jest tu zasilanie, którego jakości bardzo potrzebuje ten klucz. Przypadkiem wysunęła mi się wtyczka zasilania od powered huba i bluetooth niezbyt chciał działać. Pojawiały się błędy I/O error, connection timeout i hciconfig też lekko szalał.

Z działającym bluetooth można podłączyć np klawiaturę i mysz lub jeśli mamy problem z wifi lub nie mamy internetu w domu - teoretycznie możemy udostępnić internet z telefonu poprzez bluetooth i umożliwić dostęp dla RPI. 

Ja mam plan związany z kontrolerem do PlayStation - Dualshock 3.

Źródło: productreview.com

Znalazłem fajny, krótki opis TUTAJ
Pokrótce podstawowe kroki:

Ściągamy kod i kompilujemy:
wget http://www.pabr.org/sixlinux/sixpair.c
gcc -o sixpair sixpair.c -lusb
Podłączamy Dualshock kablem USB do RPI i odpalamy:
sudo ./sixpair

Current Bluetooth master: xx:xx:xx:xx:xx:xx 
Setting master bd_addr to: xx:xx:xx:xx:xx:xx
W ten sposób parujemy DS3 i RPI. 

Następnie:
wget http://sourceforge.net/projects/qtsixa/files/QtSixA%201.5.1/QtSixA-1.5.1-src.tar.gz
tar xfvz QtSixA-1.5.1-src.tar.gz
cd QtSixA-1.5.1/sixad
make
sudo mkdir -p /var/lib/sixad/profiles
sudo checkinstall
czyli ściągamy pakiet qtsixa i kompilujemy moduł sixad.
Po czym uruchamiamy jednorazowo:
sudo sixad --start
lub startujemy demon sixad.

Już oczywiście możemy odłączyć kabel Dualshock (potrzebny tylko do parowania) i po wciśnięciu przycisku PS - diody powinny radośnie zaświecić i kontroler powinien przez chwilę wibrować.

W syslog widać będzie coś w tym stylu:
Dec  10 17:14:18 raspberrypi kernel: [  188.457540] input: PLAYSTATION(R)3 Controller (xx:xx:xx:xx:xx:xx) as /devices/virtual/input/input2
Dec  10 17:14:22 raspberrypi sixad-sixaxis[2407]: Connected 'PLAYSTATION(R)3 Controller (xx:xx:xx:xx:xx:xx)' [Battery 05]
Czyli misja zakończona sukcesem (szczególnie fajnie, że przy wykorzystaniu klucza za 1€)
Co teraz z tym zrobić? Mam mały plan - ale szczegóły wkrótce.

W międzyczasie polecam przejrzeć jeszcze linki na temat bluetooth i raspberry:
czy też ogólnie o współpracy Dualshock z Linuxem : 

Przy okazji - jeśli ktoś nie ma PS3, a ma np Wii - może również podpiąć ich kontroler. Szczegóły np. http://www.brianhensley.net/2012/08/wii-controller-raspberry-pi-python.html.

Brak komentarzy:

Prześlij komentarz