---
name: "usb_gadget_get_string"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/usb_gadget_get_string"
---

# usb\_gadget\_get\_string(9)

fill out a string descriptor

## NAME

usb\_gadget\_get\_string - fill out a string descriptor

## SYNOPSIS

**int usb\_gadget\_get\_string(struct usb\_gadget\_strings \*** *table***, int** *id***, u8 \*** *buf***);**

## ARGUMENTS

*table*

of c strings encoded using UTF-8

*id*

string id, from low byte of wValue in get string descriptor

*buf*

at least 256 bytes, must be 16-bit aligned

## DESCRIPTION

Finds the UTF-8 string matching the ID, and converts it into a string descriptor in utf16-le. Returns length of descriptor (always even) or negative errno

If your driver needs stings in multiple languages, you'll probably “switch (wIndex) { ... }” in your ep0 string descriptor logic, using this routine after choosing which set of UTF-8 strings to use. Note that US-ASCII is a strict subset of UTF-8; any string bytes with the eighth bit set will be multibyte UTF-8 characters, not ISO-8859/1 characters (which are also widely used in C strings).

## AUTHOR

**David Brownell** \<dbrownell@users.sourceforge.net\>

Author.

## COPYRIGHT
