Instalacja bezprzewodowego pada do Xbox360 pod Ubuntu 12.10 (64 bit) teoria i praktyka

W dzisiejszym wpisie chciałbym opisać jak prawidłowo zainstalować pad bezprzewodowy do XBOX360 pod Ubuntu 12.10.. ponieważ sam nie jestem jakoś super oblatany w instalacji różnego typu urządzeń posłużę się pomocą ze strony społeczności. Na końcu podam źródło do tej pomocy. Zwrócę się też z prośbą do użytkowników DP, ponieważ mi instalacja się nie powiodła.. nie wiem czemu, więc może będziecie mi w stanie pomóc. Tekst oryginalny pochodzi z oficjalnej strony ubuntu.

Przygotowanie instalacji

Na początek małe wyjaśnienie..

pad Xbox'a 360 nie działa w technologii Bluetooth! Do jego prawidłowego działania konieczne jest posiadanie odbiornika (Wireless Gaming Receiver for Windows i jak zapewnia społeczność for Linux:)). Odbiornik ten należy podpiąć do gniazda USB. Przy okazji wspomniane jest, że kontroler pod Linux zachowuje się nieco inaczej niż pod Windows (diody szaleją) jednakże jego użytkowanie nie sprawia problemu. Istnieje również wsparcie dla starszych jąder (poniżej 2.6.26)

Instalacja

Po tym wprowadzeniu zaczynamy od instalacji paczki koniecznej do kompilacji nowych sterów:

- sudo apt-get install linux-headers-`uname -r` build-essential automake1.9

opcjonalnie możemy zainstalować pakiety do kalibracji pada:

- sudo apt-get install jscalibrator libgii1 libjsw2

nie jest to jednak konieczność.

Ściągnięcie i przygotowanie sterowników

Zaczynamy od stworzenia folderu do którego będą ściągnięte sterowniki. Nazwiemy go xpad. W konsoli wpisujemy:

- cd
- mkdir xpad

W tym momencie stworzyliśmy w katalogu domowym folder xpad. Musimy go teraz otworzyć i ściągnąć do niego pliki. Robimy to komendami:

- cd xpad
- wget "http://xbox-linux.cvs.sourceforge.net/*checkout*/xbox-linux/kernel-2.6/drivers/usb/input/xpad.c" "http://xbox-linux.cvs.sourceforge.net/*checkout*/xbox-linux/kernel-2.6/drivers/usb/input/xpad.h"

Tyle w kwestii ściągania. Kolejny etap to stworzenie pliku Makefile który "powie" linux'owi jakich plików nagłówkowych itp. ma użyć podczas kompilacji.

Stworzenie pliku Makefile

W celu stworzenia pliku wchodzimy do katalogu domowego i otwieramy folder xpad. Powinny znajdować się tam już 2 pliki: xpad.c; xpad.h (przynajmniej u mnie tyle się znajdowało:D) Otwieramy notatnik.. ja użyłem leafpad, ale może równie dobrze być każdy inny i wklejamy w notatniku:

KERNEL_PATH?=/usr/src/linux-headers-$(shell uname -r)

EXTRA_CFLAGS=-I$(shell pwd)

obj-m:=xpad.o

all:
$(MAKE) modules -C $(KERNEL_PATH) SUBDIRS=$(shell pwd)

install:
cp -f xpad.ko /lib/modules/$(shell uname -r)/kernel/drivers/input/joystick

Bardzo ważne jest w tym momencie sprawdzenie czy po all: oraz install: notatnik wstawił 8 spacji, czy jeden tabulator. Jeśli 8 spacji musimy poprzez edycje poprawić je na tabulator!!!! (Mi wstawił 8 spacji i konsola mnie oświeciła że trzeba to poprawić co pokazałem pod koniec wpisu:)) Po opisanych operacjach zapisujemy plik jako Makefile w folderze xpad. Teraz Linux już wie jak kompilować nasze stery. Zatem przechodzimy do następnego etapu..

Kompilacja i instalacja sterownika

Wracamy do terminala gdzie otworzyliśmy już folder xpad i wydajemy kolejno polecenia:

- make
- sudo make install
- sudo modprobe -r xpad
- sudo depmod -a
- sudo modprobe xpad

Skończyliśmy! Teraz aby przekonać się czy wszystko ok. podłączamy naszego pada i wpisujemy w konsoli:

- dmesg

w tym co nam wyświetli terminal szukamy czegoś w stylu: "Microsoft Xbox 360 Wireless Controller (PC)..." jest to znak niechybny, iż prawdopodobnie wszystko jest ok.

Tyle teoria.. no może nie tyle bo jest w źródłach z których korzystałem napisane: If the process return errors, you probably missed a step. , zatem moja instalacja nie powiodła się, albowiem prawdopodobnie pominąłem jakiś krok. Sprawdzam to zatem i żadnego pominięcia nie widzę, a konsola ciągle wypluwa mi:

chemik@chemik:~/xpad$ make
Makefile:11: *** brakujący separator (czyżby miał być TAB zamiast 8 spacji?). Stop.
chemik@chemik:~/xpad$ make
make modules -C /usr/src/linux-headers-3.5.0-18-generic SUBDIRS=/home/chemik/xpad
make[1]: Wejście do katalogu `/usr/src/linux-headers-3.5.0-18-generic'
CC [M] /home/chemik/xpad/xpad.o
/home/chemik/xpad/xpad.c:66:28: fatal error: linux/smp_lock.h: Nie ma takiego pliku ani katalogu
compilation terminated.
make[2]: *** [/home/chemik/xpad/xpad.o] Błąd 1
make[1]: *** [_module_/home/chemik/xpad] Błąd 2
make[1]: Opuszczenie katalogu `/usr/src/linux-headers-3.5.0-18-generic'
make: *** [all] Błąd 2

I w tym momencie zaczyna się praktyka. Niestety społeczność na ubuntu.pl niewiele mi pomogła i nabrała wody w usta. Zatem mam na koniec prośbę.. może ktoś z Was czytających podpowie mi skąd u mnie ten błąd (nie mówię o 8 spacjach) i co powinienem zrobić by w pełni cieszyć się moim padem??

Jak też obiecałem wszystkich zainteresowanych odsyłam do tekstu oryginalnego:

https://help.ubuntu.com/community/Xbox360Controller

Kończąc ten wpis dziękuję za wszelką pomoc i życzę Wam samych udanych instalacji!

EDIT

Znalazłem rozwiązanie mojego problemu na jednej z anglojęzycznych stron.. okazało się ono dosyć trywialne, jak wszystko o czym się już wie:D
Sprawa wygląda następująco:

Możemy sobie darować wszystkie opisane wyżej kroki i po prostu wpisać w konsoli jedna komendę:

- sudo apt-get install flightgear

Po tej komendzie system ściagnie ok. 630 MB zawierających sterownik i zainstaluje go. Oto i cała filozofia. Graczom życzę wielu chwil rozrywki z bezprzewodowym padem Xbox'a 360.