Bevezetés
Ebben a bejegyzésben összegyűjtöm mindazt az információt, amelyet a Logitech USB-s kormányok támogatásáról tudni érdemes.
A 2011-et megelőző időszakban még nem volt a Logitech kormányokhoz közvetlen kernel modul szintű támogatás, így azt egy hiánypótló konfiguráló programmal - LTWheelConf (Michael Bauer) - lehetett működtetni.
Ezt követően Simon Wood, kanadai kernel modul fejlesztő megírta és azóta is fejleszti a Logitech kormányok kernel szintű támogatását (köszönet érte!), ami mostanra teljes egészében kiváltja az LTWheelConf korábbi funkcióit és elérhetővé tesznek néhány közvetlen beállítást a kormányokhoz, sőt, a jövőben továbbiak is várhatóak.
A bemeneti jel
Azt kell érteni itt első sorban, hogy bármely kormányt használunk Linux alatt, azokat a generic hid driver a /dev/input/jsx - ként hozza létre, láttatja a rendszerben. Tehát a kormánytól a PC felé általában mindegyik kormány képes az aktuális helyzetéről (tengelyek és gombok) jelentéseket küldeni a rendszernek.
Ezeket a jelentéseket úgy tudjuk megtekinteni, hogy telepítjük a joystick csomagot:
sudo apt-get install joystick
majd futtatjuk jstest parancsot:
jstest /dev/input/jsx
az 'x' helyére a megfelelő sorszámot kell beírni, ami az első (egyetlen) joystick vagy kormány esetén js0
A kormányt, pedálokat, gombokat nyomkodva láthatjuk az alap kommunikáció meglétét
Kétirányú kommunikáció
Jó néhány kormány rendelkezik erő-visszacsatolásos (Force Feedback, továbbiakban csak FF) rendszerrel, aminek a konfigurálását egy kernel modulnak kell immáron elvégeznie, s ez a kommunikáció ellentétes irányú, vagyis a PC-től a kormány felé terjed. A kernel modul az ez irányú kommunikációt 'event' (pl /dev/input/event7) néven különbözteti meg a kormány felől bejövő üzenetektől (pl. 'dev/input/js0')
A kernel modul lehetővé teszi FF kormányok, úgymint
- Driving Force G25, G27, G29
- Driving Force GT
- Driving Force Pro
- Formula Force EX RX
konfigurálását, az erővisszacsatolás támogatását, autocentering módot és annak erősségének szabályozását, illetve a közel jövőben egy nagy hiányosság is befoltozásra kerül, jelesül a kombinált pedálok jelentése a rendszer felé. Ez utóbbi azért érdekes, mert van jó néhány népszerű játék (mint pl. Farming Simulator sorozat), ami e nélkül Linuxon, kormánnyal játszhatatlan.
A kormány és a driver ellenőrzése a rendszerben
Gyakorlatban a kormányok konfigurálása a következőképpen történik:
Kaptam egy tippet a fejlesztőtől, amivel ki / be lehet kapcsolni alapértelmezésben a kormány 'natíve' üzemmódját. Ez tapasztalataim szerint még nem egészen úgy működik, ahogy kellene, viszont e nélkül a rendszer tévesen ismerheti fel a kormányt és esetleg nem ad hozzá megfelelő támogatást.
Hozzuk létre egy fájlt a kormány alapértelmezett opcióinak:
sudo nano /etc/modprobe.d/logitech.conf
Majd írjuk bele a következő sort:
options hid-logitech lg4ff_no_autoswitch=0
Ha a kormány csatlakoztatva van, akkor vagy húzzuk ki és kis vártatva csatlakoztassuk ismét, vagy pedig a következő sorokkal távolítsuk el majd töltsük be újra a drivert:
sudo rmmod hid_logitech
sudo modprobe hid_logitech
Ezután - amennyiben 900 fokos a kormányunk -, próbáljuk meg elforgatni. Amennyiben sikerrel jártunk a kormányt teljes egészében el fogjuk tudni forgatni. Ha mégsem, akkor próbáljuk meg a fenti paramétert átírni 1-re, majd ismételten töltsük újra a kernel modult.
A kernel modul betöltése után a kormány beállításai megjelennek a /sys/bus/hid/drivers/logitech/ könyvtárban. Az egyszerűség kedvéért a sajátomat fogom használni (ami egy DFGT). Navigáljunk ide:
cd /sys/bus/hid/drivers/logitech/0003:046D:C29A.000D/
Az 'ls' paranccsal listázzuk ki a tartalmát:
alternate_modes country hidraw modalias range report_descriptor uevent
combine_pedals driver input power real_id subsystem
A kormány felismerésének ellenőrzése
Először is győződjünk meg róla, hogy a kormányunkat a driver helyesen ismerte fel:
cat alternate_modes
Itt csillagozva láthatjuk a felismert kormányt, illetve, hogy natív módban van-e.
A kormány elfordulási szögének ellenőrzése és beállítása
Bizonyos típusok (mint pl. a Driving Force G27,G29, GT) esetén át tudjuk állítani teljes elfordulásra a kormányt, illetve ellenőrizni tudjuk azt:
cat range
Ez az érték többnyire 270 vagy 900. Átírni a következő paranccsal lehet:
sudo echo 900 > range
Megj. ha a 900 fokos szögelfordulású kormányunkat le akarjuk korlátozni, akkor írjunk a 900 helyébe 270-et.
Kombinált pedálok
Néhány játék esetén szükség lehet a gáz és fékpedálok egy bemeneti tengelyre való ráirányítására, összegzésére a játék megfelelő működéshez.
Ennek a funkciónak a bekapcsolásához adjuk ki a következő parancsot:
sudo echo 1 > combine_pedals
Megj.: a 'combine_pedals' attributum jelenleg még tesztelés alatt van, azonban a jövőbeni kernelekbe várhatóan be fog kerülni hivatalos támogatásként, de akinek már most szüksége lenen rá, írjon egy levelet. Tudok küldeni patch-et a jelenlegi kernel forráshoz
A kormány automatikus középre húzása (autocentering)
Ez a Force Feedback-el rendelkező kormányok olyan funkciója, ami az igazi vezetéshez teszi nagyon hasonlóvá a szimulációt, hiszen a kormány az elforgatást követően visszahúz közép állásba, ahogy a valódi járművek, fokozva ezzel a játék élményt.
Az autocentering beállításához adjuk ki a következő parancsot:
ffset -a 50 /dev/input/by-id/usb-046d*event-joystick
Megj: az '-a' kapcsoló utáni paraméterrel 0-100 között állítható a középre húzás erőssége.
A kormány FF effekt erősségének beállítása
Az effektek erősségének beállítása ugyanúgy történik, mint az imént említett autocentering, csupán '-a' paraméter helyett '-g'-t kell használnunk.
Megj.: Tapasztalataim szerint ez idő tájt a Linuxon futó játékok többsége nem küld effekt jeleket a kormány felé, így jelenleg ez még nem sok mindenre használható.
Játék indítási hibák kiküszöbölése
Néhány esetben előfordul, hogy a játékok indításkor kikapcsolják az általunk beállított 'autocentering' funkciót, ami nagyon zavaró tud lenni. Ma még nem tudok erre jobb megoldást, minthogy egy késleltetett konfigurációval visszaíratni vele az értékeket. Ehhez hozzuk létre a következő fájlt:
sudo nano /usr/local/bin/setwheel
Írjuk bele a következőt:
#!/bin/sh
sleep 5
ffset -a 50 -g 50 /dev/input/by-id/usb-046d*event-joystick
exit 0
mentsük el és tegyük futtathatóvá:
chmod +x /usr/local/bin/setwheel
Ha Steam-es játékról van szó, akkor nyissuk meg a Steam interface-t, válasszuk ki a játékot (pl. Euro Truck Simulator 2), jobb egérgombbal kattintsunk a játékra, az előugró menüből válasszuk a 'tulajdonságok' menüpontot. A megnyíló párbeszédablak, 'általános' fülén található az 'indítási opciók beállítása...', ahová a következő paramétert írjuk be:
& sh /usr/local/bin/setwheel
Ha ez megvan akkor nyomjunk 'OK'-t.
Egyéb esetben a játék indító linkjének parancssorához fűzzük hozzá a fenti sort.
Ezt követően, ha elindítjuk a játékot, egy röpke 5 másodpercre kikapcsolja az 'autocentering'-et majd vissza és lehet játszani ;)
konklúzió
Láthatóan a kormányok konfigurálása még eléggé töredezett, hiányzik a konfigurációs fájlból való betöltés, játék profilizálás lehetősége mind szöveges terminálból, mind pedig a GUI-ból, de véleményem szerint alap szinten ezzel a kis leírással nagyjából már el lehet boldogulni vele.
Jó játékot!