(HID) Gerät unter Linux ansteuern

Gast #7325446
Lesenswert?

Wie geht man vor, um ein Gerät (via Systemtreiber) unter Linux anzusteuern? Konkret geht es um ein Playstation 5 Gamepad namens "DualSense". Das hat Bluetooth und USB. Beides funktioniert unter Linux. Es hat Gimmicks wie LEDs, Touchpad (steuert Maus), Beschleunigungssensor, Vibration, Mikrofon und Lautsprecher (USB, aber scheint einen Vibrator/VCM anzusprechen, denn für Audio reicht es nicht) und wohl noch nicht unterstütztes Einstellen der Trigger-Kräfte (Force-Feedback).

Erstes Ziel wäre, es über das System auszulesen (Tasten, Achsen, Sensor, Touch) und anzusteuern (LED, Vibration).

Welche Möglichkeiten/Ebenen gibt es dazu heutzutage (habe vor 20 Jahren mal was mit 'nem USB-Gerät gemacht)?

Treiber https://github.com/torvalds/linux/blob/master/drivers/hid/hid-playstation.c

Zwei Projekte habe ich gefunden:

C via Treiber (älter) https://github.com/nowrep/dualsensectl/blob/main/main.c

Python / GUI via Gerätedateien https://github.com/cow-killer/dualsense-led-configurator

Gast #7325775
Lesenswert?

Das hier hilft nicht wesentlich weiter:

#include <stdlib.h> #include <stdio.h>

struct input_event { struct timeval time; unsigned short type; unsigned short code; unsigned int value; };

1
int main(void) {
2

3
  FILE *fp;
4

5
  fp = fopen("/dev/input/js0", "rb");
6
  if(!fp) {
7
        perror("File opening failed");
8
        return EXIT_FAILURE;
9
    }
10

11
    while(1){
12
        struct input_event ie;
13
        size_t ret_code = fread(&ie, sizeof ie, 1, fp);
14

15
        printf("time:  %ld \ntype:  %u\ncode:  %u\nvalue: %u\n\n", ie.time, ie.type, ie.code, ie.value);
16
    }
17

18
  fclose(fp);
19
  
20
  return EXIT_SUCCESS;
21
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren