]> git.ipfire.org Git - thirdparty/linux.git/commit
CDC-NCM: add support for Apple's private interface
authorOle André Vadla Ravnås <oleavr@frida.re>
Fri, 7 Jun 2024 07:40:17 +0000 (09:40 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 13 Jun 2024 01:57:03 +0000 (18:57 -0700)
commit3ec8d7572a69d142d49f52b28ce8d84e5fef9131
tree86c312d23650ca125dd2b7925127a9f9fa7c324c
parent6fc1b32291a05a869326917ecf9be526f0dcdf9a
CDC-NCM: add support for Apple's private interface

Available on iOS/iPadOS >= 17, where this new interface is used by
developer tools using the new RemoteXPC protocol.

This private interface lacks a status endpoint, presumably because there
isn't a physical cable that can be unplugged, nor any speed changes to
be notified about.

Note that NCM interfaces are not exposed until a mode switch is
requested, which macOS does automatically.

The mode switch can be performed like this:

        uint8_t status;
        libusb_control_transfer(device_handle,
                LIBUSB_RECIPIENT_DEVICE | LIBUSB_REQUEST_TYPE_VENDOR |
                LIBUSB_ENDPOINT_IN,
                82, /* bRequest */
                0,  /* wValue   */
                3,  /* wIndex   */
                &status,
                sizeof(status),
                0);

Newer versions of usbmuxd do this automatically.

Co-developed-by: Håvard Sørbø <havard@hsorbo.no>
Signed-off-by: Håvard Sørbø <havard@hsorbo.no>
Signed-off-by: Ole André Vadla Ravnås <oleavr@frida.re>
Link: https://lore.kernel.org/r/20240607074117.31322-1-oleavr@frida.re
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/usb/cdc_ncm.c