Open
Conversation
On older devices with iOS 5 and even before there is no "ProductName", only "ProductType" or "DeviceClass" (which is still present). usbmuxd fails to connect these devices, because it can't receive product name. "DeviceClass", like "ProductVersion", can be retrieved even in locked state, so this commit changes it to use that instead.
Some older devices (e.g. iOS 2.x) wouldn't allow querying the iOS version if the device is not paired. In this case we just assume an old version instead of erroring out, and this way the device will be made available.
with a fallback to get the version string from a .tarball-version file
…messages. Use USBMUXD_DEFAULT_DEVICE_MODE env. var. to let the user control desired mode.
Handle some memory issues.
- Find and use it when completing initialization - Mark device as not alive instead of directly closing it - Debug and plug memory leaks
…to ignore unexpected responses and complete initializations.
…actor to a separate function. This function can later be used to determine active mode.
Switch mode only if guess is different than desired mode.
On newer versions of systemd, there is an expectation that `/run` is used instead of `/var/run`. The current service file template can result in the following error message in the service: ``` systemd[1]: /lib/systemd/system/usbmuxd.service:7: PIDFile= references a path below legacy directory /var/run/, updating /var/run/usbmuxd.pid → /run/usbmuxd.pid; please update the unit file accordingly. ``` Prefer the `@runstatedir@` over `@localstatedir/run@` pattern as suggested by [1]. [1]: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
[1] changes to mode 3 CDC NCM by default. Revert back to mode 1: Originally mode 1 was used, where a tethered iPhone appears as an Ethernet interface, handled by the ipheth driver. This has been the default for many years and is known to work on iPhone 3G, 4S, 7 Plus, 11 and newer. Since [2-3] ipheth supports CDC NCM in mode 1, and configures the iPhone to use it. In mode 3, the Ethernet interface is handled by kmod-usb-net-cdc-ncm. This driver has better performance, but now the iPhone does not provide DHCP or Internet connectivity, so we should revert to mode 1. Analysing the network traffic, shows that both the iPhone and OpenWRT are DHCP clients. The iPhone does not act as a DHCP server. I can set a static IP on OpenWRT and lease 172.20.10.1 to the iPhone. Then I can ping the iPhone and I have IPv4 connectivity. However the iPhone does not provide Internet connectivity to OpenWRT. Maybe in mode 3, the iPhone is a client meant to receive Internet over USB and therefore it is not a gateway? Attempts to switch old iPhones, such as 3G and 4S to mode 3 fail. They remain in mode 1 and work correctly using the ipheth driver. Comparison, tested on iPhone 7 Plus and 11 - mode 1 eth0 kmod-usb-net-ipheth 264 Mbit/s DHCP server, Internet - mode 3 usb0 kmod-usb-net-cdc-ncm 304 Mbit/s DHCP client, no Internet [1] c7a0dd9 [2] torvalds/linux@a2d274c [3] openwrt/openwrt@680f873 Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
The '+=' operator used in configure.ac to append to the CFLAGS variable is present in Bash, but not the POSIX sh specification. Therefore, the aforementioned part of the configure.ac (from which the configure script is obtained) might not run correctly under non Bash-like POSIX compliant shells (dash - default shell on Debian, ash, etc). Bug: https://bugs.gentoo.org/924200 Signed-off-by: Zurab Kvachadze <zurabid2016@gmail.com>
iPhone 15 Pro/Pro Max support up to 10 Gbps USB 3.x. Add the necessary case to display the correct link speed. Requires libusb 1.0.22 (2018-03-25) or newer, introduced in libusb/libusb@7a91d7c
* Mode 4 USB Ethernet + CDC-NCM iOS >= 16.0 * Mode 5 CDC-NCM Direct only (no usbmux, no USB Ethernet, no PTP) iOS >= 17.0
Thanks to @xunmod for reporting!
PACKAGE_STRING, in some cases, might not include the version. Use PACKAGE_NAME PACKAGE_VERSION instead. Thanks to @httpstorm to point this out!
0163cd9 to
e9a0dce
Compare
A path traversal vulnerability was discovered in usbmuxd that allows arbitrary, unprivileged local users to delete and create files named `*.plist` as the `usbmux` user. See https://bugzilla.opensuse.org/show_bug.cgi?id=1254302
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.