93c473948c
There is a custom (non-USB IF) extension to the USB standard: https://wicg.github.io/webusb/ This specification is published under the W3C Community Contributor Agreement, which in particular allows to implement the specification without any royalties. The specification allows USB gadgets to announce an URL to landing page and describes a Javascript interface for websites to interact with the USB gadget, if the user allows it. It is currently supported by Chromium-based browsers, such as Chrome, Edge and Opera on all major operating systems including Linux. This patch adds optional support for Linux-based USB gadgets wishing to expose such a landing page. During device enumeration, a host recognizes that the announced USB version is at least 2.01, which means, that there are BOS descriptors available. The device than announces WebUSB support using a platform device capability. This includes a vendor code under which the landing page URL can be retrieved using a vendor-specific request. Previously, the BOS descriptors would unconditionally include an LPM related descriptor, as BOS descriptors were only ever sent when the device was LPM capable. As this is no longer the case, this patch puts this descriptor behind a lpm_capable condition. Usage is modeled after os_desc descriptors: echo 1 > webusb/use echo "https://www.kernel.org" > webusb/landingPage lsusb will report the device with the following lines: Platform Device Capability: bLength 24 bDescriptorType 16 bDevCapabilityType 5 bReserved 0 PlatformCapabilityUUID {3408b638-09a9-47a0-8bfd-a0768815b665} WebUSB: bcdVersion 1.00 bVendorCode 0 iLandingPage 1 https://www.kernel.org Signed-off-by: Jó Ágila Bitsch <jgilab@gmail.com> Link: https://lore.kernel.org/r/Y8Crf8P2qAWuuk/F@jo-einhundert Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
159 lines
4.8 KiB
Plaintext
159 lines
4.8 KiB
Plaintext
What: /config/usb-gadget
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
This group contains sub-groups corresponding to created
|
|
USB gadgets.
|
|
|
|
What: /config/usb-gadget/gadget
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
|
|
The attributes of a gadget:
|
|
|
|
================ ============================================
|
|
UDC bind a gadget to UDC/unbind a gadget;
|
|
write UDC's name found in /sys/class/udc/*
|
|
to bind a gadget, empty string "" to unbind.
|
|
|
|
max_speed maximum speed the driver supports. Valid
|
|
names are super-speed-plus, super-speed,
|
|
high-speed, full-speed, and low-speed.
|
|
|
|
bDeviceClass USB device class code
|
|
bDeviceSubClass USB device subclass code
|
|
bDeviceProtocol USB device protocol code
|
|
bMaxPacketSize0 maximum endpoint 0 packet size
|
|
bcdDevice bcd device release number
|
|
bcdUSB bcd USB specification version number
|
|
idProduct product ID
|
|
idVendor vendor ID
|
|
================ ============================================
|
|
|
|
What: /config/usb-gadget/gadget/configs
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
This group contains a USB gadget's configurations
|
|
|
|
What: /config/usb-gadget/gadget/configs/config
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
The attributes of a configuration:
|
|
|
|
================ ======================================
|
|
bmAttributes configuration characteristics
|
|
MaxPower maximum power consumption from the bus
|
|
================ ======================================
|
|
|
|
What: /config/usb-gadget/gadget/configs/config/strings
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
This group contains subdirectories for language-specific
|
|
strings for this configuration.
|
|
|
|
What: /config/usb-gadget/gadget/configs/config/strings/language
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
The attributes:
|
|
|
|
================ =========================
|
|
configuration configuration description
|
|
================ =========================
|
|
|
|
|
|
What: /config/usb-gadget/gadget/functions
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
This group contains functions available to this USB gadget.
|
|
|
|
What: /config/usb-gadget/gadget/functions/<func>.<inst>/interface.<n>
|
|
Date: May 2014
|
|
KernelVersion: 3.16
|
|
Description:
|
|
This group contains "Feature Descriptors" specific for one
|
|
gadget's USB interface or one interface group described
|
|
by an IAD.
|
|
|
|
The attributes:
|
|
|
|
================= =====================================
|
|
compatible_id 8-byte string for "Compatible ID"
|
|
sub_compatible_id 8-byte string for "Sub Compatible ID"
|
|
================= =====================================
|
|
|
|
What: /config/usb-gadget/gadget/functions/<func>.<inst>/interface.<n>/<property>
|
|
Date: May 2014
|
|
KernelVersion: 3.16
|
|
Description:
|
|
This group contains "Extended Property Descriptors" specific for one
|
|
gadget's USB interface or one interface group described
|
|
by an IAD.
|
|
|
|
The attributes:
|
|
|
|
===== ===============================================
|
|
type value 1..7 for interpreting the data
|
|
|
|
- 1: unicode string
|
|
- 2: unicode string with environment variable
|
|
- 3: binary
|
|
- 4: little-endian 32-bit
|
|
- 5: big-endian 32-bit
|
|
- 6: unicode string with a symbolic link
|
|
- 7: multiple unicode strings
|
|
data blob of data to be interpreted depending on
|
|
type
|
|
===== ===============================================
|
|
|
|
What: /config/usb-gadget/gadget/strings
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
This group contains subdirectories for language-specific
|
|
strings for this gadget.
|
|
|
|
What: /config/usb-gadget/gadget/strings/language
|
|
Date: Jun 2013
|
|
KernelVersion: 3.11
|
|
Description:
|
|
The attributes:
|
|
|
|
============ =================================
|
|
serialnumber gadget's serial number (string)
|
|
product gadget's product description
|
|
manufacturer gadget's manufacturer description
|
|
============ =================================
|
|
|
|
What: /config/usb-gadget/gadget/os_desc
|
|
Date: May 2014
|
|
KernelVersion: 3.16
|
|
Description:
|
|
This group contains "OS String" extension handling attributes.
|
|
|
|
============= ===============================================
|
|
use flag turning "OS Descriptors" support on/off
|
|
b_vendor_code one-byte value used for custom per-device and
|
|
per-interface requests
|
|
qw_sign an identifier to be reported as "OS String"
|
|
proper
|
|
============= ===============================================
|
|
|
|
What: /config/usb-gadget/gadget/webusb
|
|
Date: Dec 2022
|
|
KernelVersion: 6.3
|
|
Description:
|
|
This group contains "WebUSB" extension handling attributes.
|
|
|
|
============= ===============================================
|
|
use flag turning "WebUSB" support on/off
|
|
bcdVersion bcd WebUSB specification version number
|
|
bVendorCode one-byte value used for custom per-device
|
|
landingPage UTF-8 encoded URL of the device's landing page
|
|
============= ===============================================
|