Pi Zero là HID: Làm cách nào để điều khiển Chuột PC từ Pi Zero thông qua USB?


10

Tôi đang hỏi điều này bởi vì tôi không tìm thấy bất cứ điều gì rõ ràng về chủ đề này sau khi tìm kiếm trong nhiều ngày. Vì vậy, tôi xin lỗi nếu câu hỏi đã tồn tại.

Tôi đang làm việc trong một dự án, chỉ để giải trí, nơi tôi muốn điều khiển chuột PC từ Raspberry Pi. Đầu vào của người dùng sẽ được thực hiện bởi bất kỳ loại phần cứng nào được kết nối với RP, nghi ngờ chính của tôi là về cách kiểm soát để gửi hướng dẫn di chuyển đến PC từ RP thông qua USB.

Tôi biết rằng tôi phải kích hoạt chế độ OTG để làm cho PC nhận ra nó là một thiết bị usb, nhưng tôi không biết làm thế nào để gửi chuyển động chuột đến PC thông qua USB và làm cho Windows / Linux hiểu nó. Tôi thấy rằng "Khung API tiện ích Linux-USB" tồn tại, nhưng không có ví dụ nào về việc sử dụng nó và tôi thực sự không biết liệu đó có phải là cách tiếp cận tốt nhất hay không.

Bạn có thể vui lòng cho tôi một số manh mối hoặc tài nguyên để giúp tôi không?

Cảm ơn rât nhiều.


Đây là một nơi để bắt đầu, tôi nghĩ: kernel.org/doc/Documentation/usb/gadget_hid.txt Có một hid_gadget_testchương trình được đề cập ở đó, tôi không có pi tiện dụng nhưng bạn có thể kiểm tra apt-file search hid_gadget_test(và apt install apt-filetrước tiên nếu cần).
goldilocks

@goldilocks Không, liên kết của bạn trông khá nổi bật, đó chắc chắn là phía bên phải của hàng rào. Mặt khác, những người lái xe HID thường xuyên nhưusbkbd.ko
Dmitry Grigoryev

@goldilocks nah, trong Linux, "tiện ích" luôn có nghĩa là chạy như nô lệ, không phải máy chủ lưu trữ.
hobbs

@hobbs Bạn nói đúng - Tôi đoán lần thứ hai ở đó bởi vì tôi không thể nhớ được kết thúc nào g_etherđược sử dụng khi buộc số 0 dưới dạng tiện ích ethernet (nhưng đó là phía nô lệ, trình điều khiển phía máy chủ là chung chung hơn usbnet).
goldilocks

Câu trả lời:


6

Hãy thử sử dụng g_hidmô-đun được đề cập bởi @goldilocks:

  1. Thêm một dòng dtoverlay=dwc2vào của bạn config.txtvà khởi động lại
  2. Chèn trình điều khiển trình điều khiển với modprobe g_hid
  3. Chạy đi hid_gadget_test /dev/hidg0 keyboard. Bạn có thể cần xây dựng chương trình trước, sử dụng mã mẫu được cung cấp ở đây .

Một cách khác, linh hoạt hơn để đạt được điều bạn muốn (không cần viết trình điều khiển tùy chỉnh) là sử dụng các tiện ích . Tôi biết ít nhất một dự án đã biến một máy tính ARM nhỏ thành bàn phím / chuột / gamepad USB / Bluetooth bằng cách tiếp cận này.

Thật không may, tình trạng của các tiện ích trên Rapsberry Pi là không chắc chắn. Chủ đề này cho thấy nó không hoạt động, nhưng không rõ tác giả đã cố gắng làm gì chính xác. Tuy nhiên, tôi khuyên bạn nên thử nó:

  1. Thêm một dòng dtoverlay=dwc2vào của bạn config.txtvà khởi động lại
  2. Chèn trình điều khiển FS tiện ích với modprobe gadgetfs
  3. Gắn kết hệ thống tập tin không gian người dùng với mkdir /dev/gadget; mount -t gadgetfs none /dev/gadget/

Nếu bạn không gặp lỗi tại thời điểm này, bạn sẽ có thể sử dụng các thư viện tiện ích như thế này để lập trình các thiết bị USB tùy chỉnh của mình.


1
Cảm ơn bạn rất nhiều vì câu trả lời của bạn! Tôi sẽ thử cả hai cách và cho bạn biết ngay khi tôi có thể.
Desproposeito

1
@Desproposeito Bạn đã bao giờ làm việc này chưa? Tôi thích một bản cập nhật
Sirens

@Sirens, tôi xin lỗi, mua tôi không thể làm cho nó hoạt động được :( Nhưng tôi sẽ thử một cách tiếp cận khác ngay khi tôi có thời gian để thử một cách khác.
Desproposeito

@Desproposeito Bạn có thể nói chính xác những gì bạn không thể làm việc? Bạn có thể modprobelái xe không? Bạn có thể gắn kết gadgetfs? Bạn có thể xây dựng và chạy hid_gadget_test?
Dmitry Grigoryev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.