Inquiry)
Inquiry Regarding USB Network Connectivity Between an iPad (Wi‑Fi Model) and an Embedded Linux Device
- An embedded device (OS: Linux) is connected to an iPad (Wi‑Fi model) using a USB‑C cable.
- The ipheth driver is installed on the embedded device, and the iPad is recognized correctly.
- A web server is running on the embedded device.
To launch a browser on the iPad and access the web server running on the embedded device via a USB network connection.
Based on our verification, the iPad is not assigned an IP address, and therefore communication with the web server on the embedded device is not possible.
We would appreciate it if you could provide guidance on the following questions.
We would like to assign an IP address to the iPad (Wi‑Fi Model) so that it can communicate with the embedded device over a USB network connection.
- Is there a way to achieve this through the standard settings on the iPad?
- If this cannot be achieved through settings alone, are there any existing applications that provide this functionality?
- If no such application currently exists, is it technically possible to develop an application that enables this capability on iPadOS?
Information)
The USB‑C port on the embedded device is fixed in HOST mode. The embedded device operates as the USB host, and the iPad operates as a USB device.
When a cellular model iPad is connected and “Personal Hotspot” is enabled, an IP address is assigned via DHCP, and we have confirmed that the web server can be accessed from the iPad’s browser.
We are investigating whether a similar solution is possible with a Wi‑Fi model iPad.
My understanding is that your accessory is presenting a network interface to iOS much like, say, an USB Ethernet dongle would. In that case I’d expect iOS to assign IP addresses to that interface as long as the interface claims that it’s up. You can prototype this with an USB Ethernet dongle:
- Connect the dongle via Ethernet to the Internet.
- And then connect it to iOS.
- Verify that iOS has network connectivity over the Ethernet.
- Disconnect it from iOS.
- Disconnect the Ethernet dongle from the Internet, but leave it connected to your switch so that the link status stays up.
- Reconnect it to iOS.
You should see iOS bring up the interface with link-local IPv4 [1] and IPv6 addresses. Any app running on iOS should be able to communicate over that interface. For example, if you have a configure like this:
iPhone
|
USB Ethernet
|
----+----------------+--------------- isolated Ethernet
|
Mac
|
---------------------+--------------- Wi-Fi to Internet
Safari on the iPhone should be able to connect to a web server running on your Mac.
Once you get this running with an off-the-shelf USB Ethernet dongle, you can then compare that working setup with the failing setup for your accessory to see where things are going wrong.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] See RFC 3927 Dynamic Configuration of IPv4 Link-Local Addresses.