Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
JonasVautherin opened this issue Aug 17, 2024 · 0 comments
Open

Comments

@JonasVautherin
Copy link

JonasVautherin commented Aug 17, 2024

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 😇.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant