(HID) Gerät unter Linux ansteuern

Gast #7325446

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

Frank K. schrieb:

/dev/input/js* gibt Dir die Standardinfos (Buttons, Joysticks, ...) zurück.

Da tut sich was. Aber was ist das Format?

1
cat /dev/input/js0
2
T���T���T���T���T���T���T���T���T��T���  T���
Gast

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

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.