Pi Zero come HID: come controllare il mouse per PC da Pi Zero a USB?


10

Lo sto chiedendo perché non ho trovato nulla di chiaro su questo argomento dopo aver cercato per giorni. Quindi, mi dispiace se la domanda esiste già.

Sto lavorando a un progetto, solo per divertimento, dove voglio controllare il mouse del PC da Raspberry Pi. L'input dell'utente verrebbe effettuato da qualsiasi tipo di hardware collegato all'RP, il mio principale dubbio è su come controllare l'invio delle istruzioni di movimento al PC dall'RP tramite USB.

So che devo abilitare la modalità OTG per fare in modo che il PC lo riconosca come un dispositivo USB, ma non ho idea di come inviare i movimenti del mouse al PC tramite USB e far capire a Windows / Linux. Ho scoperto che esiste "Framework API per gadget Linux-USB", ma non esiste alcun esempio sull'utilizzo e in realtà non so se sia l'approccio migliore.

Potresti darmi alcuni indizi o risorse per aiutarmi?

Grazie mille.


Ecco un punto di partenza, penso: kernel.org/doc/Documentation/usb/gadget_hid.txt C'è un hid_gadget_testprogramma menzionato lì, non ho un pi utile ma potresti controllare apt-file search hid_gadget_test(e apt install apt-fileprima se necessario).
Riccioli d'oro

@goldilocks No, il tuo link sembra praticamente perfetto, è sicuramente il lato destro della recinzione. Dall'altro lato vivono regolari driver HID comeusbkbd.ko
Dmitry Grigoryev,

@goldilocks nah, in Linux, "gadget" significa sempre correre come slave, non come host.
Hobbs,

@hobbs Hai ragione - in un secondo momento ho indovinato lì perché non riuscivo a ricordare da quale fine g_etherviene utilizzato quando si lega lo zero come gadget Ethernet (ma è il lato slave, il driver lato host è il più generico usbnet).
riccioli d'oro

Risposte:


6

Prova a utilizzare il g_hidmodulo menzionato da @goldilocks:

  1. Aggiungi una linea dtoverlay=dwc2al tuo config.txte riavvia
  2. Inserire il driver con modprobe g_hid
  3. Corri hid_gadget_test /dev/hidg0 keyboard. Potrebbe essere necessario creare prima il programma, utilizzando il codice di esempio fornito qui .

Un altro modo più flessibile per raggiungere ciò che desideri (senza scrivere driver personalizzati) è utilizzare i gadget . Conosco almeno un progetto che ha trasformato un piccolo computer ARM in tastiera / mouse / gamepad USB / Bluetooth usando questo approccio.

Sfortunatamente, lo stato dei gadget su Rapsberry Pi è incerto. Questo thread suggerisce che non funziona, ma non è chiaro cosa l'autore abbia cercato di fare esattamente. Suggerirei di provarlo comunque:

  1. Aggiungi una linea dtoverlay=dwc2al tuo config.txte riavvia
  2. Inserire il driver FS gadget con modprobe gadgetfs
  3. Montare il filesystem userspace con mkdir /dev/gadget; mount -t gadgetfs none /dev/gadget/

Se non ricevi errori a questo punto, sarai in grado di utilizzare librerie di gadget come questa per programmare i tuoi dispositivi USB personalizzati.


1
Grazie mille per la tua risposta! Proverò in entrambi i modi e ti farò sapere appena posso.
Desproposito,

1
@Desproposito Hai mai funzionato? Mi piacerebbe un aggiornamento
Sirens

@Sirens, mi dispiace, compra non sono riuscito a farlo funzionare :( Ma proverò un altro approccio non appena avrò tempo di provare altri modi.
Desproposito

@Desproposito Potresti dire cosa esattamente non riesci a far funzionare? Sei stato in grado di modprobeguidare? Potresti montare gadgetfs? Potresti costruire ed eseguire hid_gadget_test?
Dmitry Grigoryev il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.