Perangkat HID USB virtual

9

Saya sedang mengembangkan aplikasi yang akan berkomunikasi dengan perangkat USB HID yang terpasang. Masalahnya adalah bahwa belum ada perangkat nyata (sedang dikembangkan oleh bagian lain dari tim kami), jadi, saya benar-benar ingin memiliki beberapa cara untuk menirunya.

Utilitas ideal yang dapat saya pikirkan akan terlihat seperti ini: modul kernel, yang ketika dimuat, menciptakan dua node perangkat dalam sistem:

  • perangkat usb-hid virtual, yang tidak dapat dibedakan dari node perangkat usb-hid nyata, mungkin /dev/hidraw0; dan tentu saja perangkat ini harus dilihat oleh perpustakaan usb-hid apa pun yang saya gunakan, misalnya hidapi,.
  • simpul perangkat layanan, seperti /dev/virtual_hid_1.

Jadi, ketika ada orang yang menulis /dev/virtual_hid_1, data ini harus dibaca secara harfiah /dev/hidraw0, dan sebaliknya.

Dengan cara ini, saya dapat menulis beberapa aplikasi debug dalam bahasa apa pun yang saya inginkan, baik itu aplikasi pythonapa pun; seharusnya hanya menulis dan membaca dari dan ke /dev/virtual_hid_1. Akan sangat nyaman untuk pengembangan.

Apakah ada yang seperti ini?

Dmitry Frank
sumber

Jawaban:

5
  1. Anda mungkin tertarik dengan solusi perangkat keras yang murah, elegan, dan terbuka untuk meniru perangkat usb yang sedang dikembangkan: Papan micropython . (Saya tidak memiliki ketertarikan dengan perangkat keras ini).

    Ini adalah papan mandiri kecil yang menjalankan python 3 , dan dihubungkan ke usb tempat ia dapat muncul seperti, misalnya, mouse HID, atau keyboard HID. Anda cukup menyalin file sumber python Anda ke perangkat dan menjalankannya. Konsep yang indah.

    Ok, itu tidak benar-benar dimaksudkan untuk apa yang Anda inginkan, dan Anda mungkin perlu mengunduh SDK dan melakukan sedikit pekerjaan dalam C agar muncul persis seperti yang Anda butuhkan, tetapi sebagian besar kode Anda akan di python. Ada port serial level ttl, i2c, port dll.

  2. Untuk solusi alternatif, ada papan yang mengemulasi perangkat usb dengan python tapi saya tidak yakin apakah Anda dapat membeli produk jadi.

  3. Ada juga emulasi usb menggunakan usbip tanpa perangkat keras tambahan, yang saya belum melihatnya.

meuh
sumber
5

Anda mungkin mencari uhidmodul kernel. Lihat dokumentasi dalam sumber kernel :

Dengan UHID, driver transport ruang-pengguna dapat membuat perangkat hid-kernel untuk setiap perangkat yang terhubung ke bus yang dikendalikan oleh ruang-pengguna. API UHID mendefinisikan peristiwa I / O yang disediakan dari kernel ke ruang pengguna dan sebaliknya.

Ada contoh aplikasi ruang pengguna di ./samples/uhid/uhid-example.c

Marmarek
sumber