Portál AbcLinuxu, 26. května 2025 04:47

Dotaz: Homemade jostick pod linuxem (Mjoy16)

1.4.2019 19:47 Daniel
Homemade jostick pod linuxem (Mjoy16)
Přečteno: 879×
Odpovědět | Admin
Příloha:
Dobrý den Zbastlil jsem joystick podle návodu na netu a nyní ho zkouším pod linuxem. Problém je, že systém nenajde část přepínačů, rotační spínače a HAT. Pod okny se musí použít mapper, ale jdou takže joy jako takový je ok.

Jtest jsem zkoušel a žádná redakce, takže je asi nevidí ani sytém.

A víc toho neumim :(

joy funguje jako HID

Díky za nápady

do přílohy jsem dal schéma zapojení matice připojené k Atmega
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 1.4.2019 20:03 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud nefunguje celý řádek matice, naznačovalo by to vadný spoj. Nebo může být chyba v programu v joysticku.

Pokud část přepínačů funguje, tak by joystick v systému měl být vidět, ne?
Hello world ! Segmentation fault (core dumped)
1.4.2019 20:51 Daniel
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Joy pod windows funguje takže v železe chyba není. Jde o to že v linuxu nejdou jen některé přepínače, některé fungují a osy také.

1.4.2019 21:06 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
HID posílá multimediální klávesy, ne? Nechybí ti jen namapování to Xek přes xmodmap? evtest (tj. přímo na úrovni input zařízení) je také nevidí?
1.4.2019 21:07 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
to -> do, pořád se mi to plete :-)
1.4.2019 22:09 Daniel
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
tak evtest je taky nevidí :(

ve výpisu jsou některé Event code s otazníkem

asi takhle:
    Event code 256 (BTN_0)
    Event code 257 (BTN_1)
    Event code 258 (BTN_2)
    Event code 259 (BTN_3)
    Event code 260 (BTN_4)
    Event code 261 (BTN_5)
    Event code 262 (BTN_6)
    Event code 263 (BTN_7)
    Event code 264 (BTN_8)
    Event code 265 (BTN_9)
    Event code 266 (?)
    Event code 267 (?)
    Event code 268 (?)
    Event code 269 (?)
    Event code 270 (?)
    Event code 271 (?)
    Event code 272 (BTN_LEFT)
    Event code 273 (BTN_RIGHT)
    Event code 274 (BTN_MIDDLE)
    Event code 275 (BTN_SIDE)
    Event code 276 (BTN_EXTRA)
    Event code 277 (BTN_FORWARD)
    Event code 278 (BTN_BACK)
    Event code 279 (BTN_TASK)
    Event code 280 (?)
    Event code 281 (?)
    Event code 282 (?)
    Event code 283 (?)
    Event code 284 (?)
    Event code 285 (?)
    Event code 286 (?)
    Event code 287 (?)
    Event code 288 (BTN_TRIGGER)
    Event code 289 (BTN_THUMB)
    Event code 290 (BTN_THUMB2)
    Event code 291 (BTN_TOP)
    Event code 292 (BTN_TOP2)
    Event code 293 (BTN_PINKIE)
    Event code 294 (BTN_BASE)
    Event code 295 (BTN_BASE2)
    Event code 296 (BTN_BASE3)
    Event code 297 (BTN_BASE4)
    Event code 298 (BTN_BASE5)
    Event code 299 (BTN_BASE6)
    Event code 300 (?)
    Event code 301 (?)
    Event code 302 (?)
    Event code 744 (?)
    Event code 745 (?)
    Event code 746 (?)
    Event code 747 (?)
    Event code 748 (?)
    Event code 749 (?)
    Event code 750 (?)
    Event code 751 (?)
    Event code 752 (?)
    Event code 753 (?)
    Event code 754 (?)
    Event code 755 (?)
    Event code 756 (?)
    Event code 757 (?)
    Event code 758 (?)
    Event code 759 (?)
    Event code 760 (?)
    Event code 761 (?)
    Event code 762 (?)
    Event code 763 (?)
    Event code 764 (?)
    Event code 765 (?)
    Event code 766 (?)
ale i některé z reagujícÍch tlačítek mají ten otazník pak je tu dost otazníků které nedělají nic

mám z toho dojem, že systém cosi tuší, ale neví co si má myslet jestli třeba nejde použít jinej ovladač

možná jsem to zamotal, nejsem zrovna admin :-/

Josef Kufner avatar 1.4.2019 22:13 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Myslím, že nejlepší odpověď ti poskytnou zdrojáky ovladačů. Asi někdo nepředpokládal příliš mnoho tlačítek a je tam nějaký limit vycucaný z prstu, který by měl stačit všem.
Hello world ! Segmentation fault (core dumped)
1.4.2019 22:21 Daniel
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Je to Human interface device ovladače žádný

2.4.2019 08:28 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Otazník mají ty, které nejsou v kernelu definované. Jinak Xka neumí pracovat s víc jak 256 eventama najednou a má problém když je i rozdíl max ID a min ID nad 256 (například #define KEY_ESC 1 a zároveň #define KEY_CALENDAR 0x18d), evdev pro terminál by měl jít přinutit.
2.4.2019 14:22 Daniel
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Bohužel jste všichni o několik levelů vejš, potřeboval bych víc "BFU" návod jak dál

Josef Kufner avatar 3.4.2019 18:31 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Obávám se, že v tomto směru máš prostě smůlu. Nejspíš jsi opravdu narazil na nějaké omezení v ovladačích či někde poblíž (ať už to je HID, evdev, xinput, nebo cokoliv po cestě).

Asi bych zkusil překompilovat jádro se zapnutým logováním u relevantních modulů vstupních zařízení. Vezmi návod pro tvou distibuci, jak se sestavuje balíček jádra a jen v configu (make menuconfig) zaškrtni navíc to logování. Možná tam uvidíš, jestli je někde nějaký problém. Případně si můžeš do zdrojáků jádra přidat trochu logování navíc.

Předpokládám, že to je spíše studijní projekt, takže nezbývá než popřát mnoho štěstí a zábavy ;-)
Hello world ! Segmentation fault (core dumped)
3.4.2019 22:22 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
To nic neznamená. Resp. znamená to jen tolik, že na ty kódy není namapovaná akce. Řešil jsem už svého času podobný problém, a teď to budu řešit znovu v souvislosti s panelem SMART Boardu, ale bohužel nestíhám dokumentovat všechno co dělám, takže když uplyne delší doba je třeba začít prakticky znovu. Jako teď. Mám to ale v pořadníku. Najdeš to pak zde.
1.4.2019 21:10 debian+
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Odpovědět | | Sbalit | Link | Blokovat | Admin
http://linuxos.sk/clanok/ako-na-konfiguraciu-hernych-ovladacov-2/
2.4.2019 17:30 MadCatX | skóre: 28 | blog: dev_urandom
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Pošli sem device deskriptor toho joysticku, ať víme, na co mají být která tlačítka vlastně namapovaná. Lze to udělat třeba z lsusb -v, které je vhodné pustit pod rootem. Výpis desktriptoru začíná řádkem Device descriptor: a může být docela dlouhý.
2.4.2019 18:27 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Hlavně ne jako sérii screenshotů :-)
2.4.2019 22:08 Daniel
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Tak tady to je

Jen ještě než se do toho pustíte musím čestně říct, že je do v podstatě blbost jeden šťoura s projektem joysticku, který už je na webu jen v archivech. Ať neinvestujete moc času. Měl bych výčitky svědomí. :)

Bus 001 Device 005: ID 0000:0002  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0000 
  idProduct          0x0002 
  bcdDevice            1.03
  iManufacturer           1 www.mindaugas.com
  iProduct                2 MJ16
  iSerial                 3 1.3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          2 MJ16
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              3 1.3
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.01
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     153
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)
3.4.2019 19:09 MadCatX | skóre: 28 | blog: dev_urandom
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Zrovna ten report descriptor - tedy to, co říká, jaký význam má který blok HID report packetu - je v tom výpisu *UNAVAILABLE*. To nevadí, lze jej získat několika dalšími způsoby. Ukázka na vypůjčené bezdrátové USB myši:

1) Přes debugfs less /sys/kernel/debug/hid/0003:0458:0185.0002. Ty čísla znamenají: ID zařízení, Vendor ID, Product ID, Interface No (nebo jak se tomu říká, jádro k němu vždycky připočte nějaký offset)

2) Přes usbhid-dump a hidrd-convert. usbhid-dump -s 001:008 kde 001 je číslo sběrnice a 008 číslo zařízení; to zjistíš z lsusb. Tohle bohužel vyplivne špatně čitelný syrový výstup. Klidně ho sem ale pošli, převod do lidsky srozumitelné formy zařídím. Případně by se provedl takto:

usbhid-dump -s 001:008 | grep -v : | xxd -r -p | /home/madcat/Misc/hidrd/src/hidrd-convert -o spec. Nástroj hidrd-convert roste tady.
5.4.2019 21:44 Dan79
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
2) způsob vrátil tohle a při opakování už jen první řádek

001:004:000:Failed to retrieve report descriptor: Pipe error 001:004:000:Failed to attach to the kernel driver: Entity not found

a ten druhý způsob nevím jak vyplnit znám jen vendor a product asi to nedělá všechno co to dělat má, tak vás nebudu trápit je to marginálie z ohledu kolik uživatelů tohle využije i tak to hlásí špatně počet os (zkusím to přemapovat pomocí pruzení autora článku z odkazu výše) :)

tohle vyplivl výpis jestli je něco z toho ID zařízení a Iterface No, nevím Každopádně díky, byli jste všichni moc hodní
80: USB 00.0: 0000 Unclassified device
  [Created at usb.122]
  Unique ID: n8KV.wznJ2PIm_z5
  Parent ID: 2UT6.WvppkBPnhU7
  SysFS ID: /devices/pci0000:00/0000:00:1a.7/usb1/1-3/1-3.3/1-3.3:1.0
  SysFS BusID: 1-3.3:1.0
  Hardware Class: unknown
  Model: "www.mindaugas.com MJ16"
  Hotplug: USB
  Vendor: usb 0x0000 "www.mindaugas.com"
  Device: usb 0x0002 "MJ16"
  Revision: "1.03"
  Serial ID: "1.3"
  Speed: 1.5 Mbps
  Module Alias: "usb:v0000p0002d0103dc00dsc00dp00ic03isc00ip00in00"
  Driver Info #0:
    Driver Status: usbhid is active
    Driver Activation Cmd: "modprobe usbhid"
  Config Status: cfg=new, avail=yes, need=no, active=unknown
  Attached to: #85 (Hub)
6.4.2019 03:33 MadCatX | skóre: 28 | blog: dev_urandom
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)
Máš to nějaké rozbité, zkusil bych ten forichtung odpojit od USB, nechat pár vteřin "vychladnout", zapojit znovu a vyčíst report descriptor. Některá zařízení si s USB reattachem neporadí a je potřeba je odpojit a zapojit znovu. Bus a Device ID zjistíš z lsusb, viz:
Bus 002 Device 003: ID 17ef:1003 Lenovo Integrated Smart Card Reader
Bus 002 Device 004: ID 05ac:12a8 Apple, Inc. iPhone5/5C/5S/6
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Zejména Device ID se může měnit pokaždé, když zařízení zapojíš, takže je potřeba vždycky mrknout do lsusb. Mimochodem, fakt, že ti to špatně hlásí počet os ukazuje na nesprávný HID deskriptor. V Linuxu se s tím dá všelijak šaškovat, v nejextrémnějším případě napsáním malého jaderného modulu, který HID vrstvě podstrčí upravený deskriptor.
11.4.2019 12:36 Dan79
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)

OK bádal jsem chvíli co je to ten deskriptor a nějak to zkoušet až to půjde ok se zdá být proveditelné

a terazky mně povězte čo si predstavujetě pod napsáním malého jaderného modulu, protože o tom nemám ani páru

dík
18.4.2019 13:38 Daniel
Rozbalit Rozbalit vše Re: Homemade jostick pod linuxem (Mjoy16)

OK dal jsem dohromady txt s HID deskriptorem

Teď bych potřeboval nejakou radu jak z toho udělat ovladač

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.