Skip to content

How is the tethering enabled (i.e. at the USB protocol level)? #256

@JonasVautherin

Description

@JonasVautherin

My understanding is that this usbmuxd is the reverse-engineered counterpart of lockdownd that runs on iOS.

For tethering, usbmuxd sets the USB configuration on the iOS device (which makes a new ethernet interface eth* appear) and then does a bunch of things to somehow enable the tethering. If I only set_configuration, then the eth* interface is set as NO_CARRIER.

I would be interested in understanding what happens at the USB level. As in: what exactly is needed on top of setting the USB configuration for the tethering to be setup properly?

I see that there is at least some "VERSION" packet, followed by some "SETUP" packet, followed by a bunch of "TCP" packets. And after that, somehow, the network interface is active and usbmuxd can be killed 😎.

Also is it something specific to Apple devices, or is it something that happens with other drivers that do ethernet-over-usb? And couldn't this be done directly in ipheth?

I am interested and willing to learn how this works 😇.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions