Lines Matching +full:usb +full:- +full:based
2 USB Raw Gadget
5 USB Raw Gadget is a gadget driver that gives userspace low-level control over
8 Like any other gadget driver, Raw Gadget implements USB devices via the
9 USB gadget API. Unlike most gadget drivers, Raw Gadget does not implement
10 any concrete USB functions itself but requires userspace to do that.
21 USB gadget layer for userspace. The key differences are:
23 1. Raw Gadget passes every USB request to userspace to get a response, while
24 GadgetFS responds to some USB requests internally based on the provided
28 2. Raw Gadget allows providing arbitrary data as responses to USB requests,
29 while GadgetFS performs sanity checks on the provided USB descriptors.
31 responses to USB requests.
38 capabilities. This allows the user to write UDC-agnostic gadgets.
40 5. Raw Gadget has an ioctl-based interface instead of a filesystem-based
46 The user can interact with Raw Gadget by opening ``/dev/raw-gadget`` and
47 issuing ioctl calls; see the comments in include/uapi/linux/usb/raw_gadget.h
53 1. Create a Raw Gadget instance by opening ``/dev/raw-gadget``.
57 Raw Gadget and react to those depending on what kind of USB gadget must
62 Nevertheless, Raw Gadget provides a UDC-agnostic way to write USB gadgets.
65 endpoints that the UDC driver has. Based on that, userspace must choose UDC
71 https://github.com/xairy/raw-gadget
76 Every Raw Gadget endpoint read/write ioctl submits a USB request and waits
77 until its completion. This is done deliberately to assist with coverage-guided
78 fuzzing by having a single syscall fully process a single USB request. This
84 - Report more events (suspend, resume, etc.) through
87 - Support ``O_NONBLOCK`` I/O. This would be another mode of operation, where
88 Raw Gadget would not wait until the completion of each USB request.
90 - Support USB 3 features (accept SS endpoint companion descriptor when
93 - Support ISO transfer features (expose ``frame_number`` for completed