Pi Zero як HID: Як керувати ПК мишею з Pi Zero через USB?


10

Я запитую це, тому що я не знайшов нічого чіткого щодо цього предмету, шукаючи цілими днями. Отже, вибачте, якщо питання вже існує.

Я працюю над проектом, просто заради задоволення, де я хочу керувати ПК мишкою з Raspberry Pi. Введення користувачем буде здійснюватися будь-яким обладнанням, підключеним до RP, мій головний сумнів у тому, як контролювати надсилання інструкцій руху на ПК з RP через USB.

Я знаю, що мені потрібно ввімкнути режим OTG, щоб змусити ПК розпізнати його як USB-пристрій, але я не маю уявлення про те, як надсилати рухи миші на ПК через USB і змусити Windows / Linux це зрозуміти. Я виявив, що "Linux-USB Gadget API Framework" існує, але прикладу його використання немає, і я насправді не знаю, чи це найкращий підхід.

Чи можете ви, будь ласка, дати мені кілька підказок чи ресурсів, щоб допомогти мені?

Дуже дякую.

usb  pi-zero 

Ось з чого почати, я думаю: kernel.org/doc/Documentation/usb/gadget_hid.txt Там є hid_gadget_testзгадана програма, я не маю під рукою pi, але ви можете перевірити apt-file search hid_gadget_testapt install apt-fileспочатку, якщо потрібно).
goldilocks

@goldilocks Ні, ваше посилання виглядає вкрай точково, це, безумовно, права сторона огорожі. З іншого боку живуть постійні драйвери HID на кшталтusbkbd.ko
Дмитро Григор'єв

@goldilocks nah, в Linux "гаджет" завжди означає працювати як раб, а не хост.
варення

@hobbs Ви маєте рацію - я вдруге здогадався, тому що я не міг згадати, з якого кінця g_etherвикористовується тест при встановленні нуля як гаджета Ethernet (але це підлеглий бік, драйвер сторони хоста - більш загальний usbnet).
goldilocks

Відповіді:


5

Спробуйте використовувати g_hidмодуль, згаданий @goldilocks:

  1. Додайте рядок dtoverlay=dwc2до свого config.txtта перезавантажте
  2. Вставте драйвер драйвера modprobe g_hid
  3. Біжи hid_gadget_test /dev/hidg0 keyboard. Ви , можливо , буде потрібно побудувати програму перших, використовуючи приклад , наведений тут .

Інший, більш гнучкий спосіб досягти бажаного (без написання користувальницьких драйверів) - це використання ґаджетів . Я знаю принаймні один проект, який перетворив невеликий комп'ютер ARM на USB / Bluetooth клавіатуру / мишу / геймпад, використовуючи такий підхід.

На жаль, стан гаджетів на Rapsberry Pi невідомий. Ця нитка дозволяє припустити, що вона не працює, але незрозуміло, що саме намагався зробити автор. Я б запропонував все ж спробувати:

  1. Додайте рядок dtoverlay=dwc2до свого config.txtта перезавантажте
  2. Вставте драйвер FS гаджета modprobe gadgetfs
  3. Змонтуйте файлову систему файлової системи за допомогою mkdir /dev/gadget; mount -t gadgetfs none /dev/gadget/

Якщо в цей момент ви не отримаєте помилок, ви зможете використовувати бібліотеки gadgetfs на зразок цієї, щоб програмувати свої власні USB-пристрої.


1
Дуже дякую за вашу відповідь! Я спробую обидва способи і повідомляю вас, як тільки зможу.

1
@Desproposito Ви коли-небудь працювали? Я хотів би оновлення
Сирени

@Sirens, вибачте, купую, я не зміг би це зробити :( Але я спробую інший підхід, як тільки

@Desproposito Чи можете ви сказати, що саме ви не могли працювати? Ви вміли modprobeводіям? Не могли б ви змонтувати gadgetfs? Чи можете ви побудувати і запустити hid_gadget_test?
Дмитро Григор’єв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.