From a6eaa4796b0fa6e91a64ef9cd5567f9a414d53fb Mon Sep 17 00:00:00 2001 From: Georgi Valkov Date: Mon, 22 Apr 2024 15:07:12 +0300 Subject: [PATCH] usbmuxd: update to the latest git version There have been no releases since 2020-06-16. Update to the latest git 360619c5f721f93f0b9d8af1a2df0b926fbcf281 Fix: --version did not print the version. [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] 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] https://github.com/libimobiledevice/usbmuxd/commit/c7a0dd9b82633ea347497626282e3051a469ef50 [2] https://github.com/openwrt/openwrt/commit/680f8738d02a1876ae4cd11aacf9cd56e520fadf Signed-off-by: Georgi Valkov --- utils/usbmuxd/Makefile | 16 +++++++++----- ...efault-mode-to-3-to-include-CDC-NCM-.patch | 22 +++++++++++++++++++ utils/usbmuxd/patches/002-version-print.patch | 11 ++++++++++ utils/usbmuxd/patches/010-config.patch | 2 +- 4 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 utils/usbmuxd/patches/001-Revert-usb-Set-default-mode-to-3-to-include-CDC-NCM-.patch create mode 100644 utils/usbmuxd/patches/002-version-print.patch diff --git a/utils/usbmuxd/Makefile b/utils/usbmuxd/Makefile index e584d9106c..16fc543ecd 100644 --- a/utils/usbmuxd/Makefile +++ b/utils/usbmuxd/Makefile @@ -8,18 +8,20 @@ include $(TOPDIR)/rules.mk PKG_NAME:=usbmuxd -PKG_VERSION:=1.1.1 -PKG_RELEASE:=2 +PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=https://www.libimobiledevice.org/downloads -PKG_HASH:=c0ec9700172bf635ccb5bed98daae607d2925c2bc3597f25706ecd9dfbfd2d9e +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/libimobiledevice/usbmuxd.git +PKG_SOURCE_DATE:=2023-10-11 +PKG_SOURCE_VERSION:=360619c5f721f93f0b9d8af1a2df0b926fbcf281 +PKG_MIRROR_HASH:=e674ee39abbbae6dea7364be8b8287db2e333d033c226d4b2ed95f2e61a78576 PKG_MAINTAINER:=Rosen Penev PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE_FILES:=COPYING.GPLv2 PKG_CPE_ID:=cpe:/a:libimobiledevice:usbmuxd +PKG_FIXUP:=autoreconf PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 @@ -47,7 +49,9 @@ define Package/usbmuxd/conffiles /etc/lockdown/SystemConfiguration.plist endef -CONFIGURE_ARGS += --with-systemd +CONFIGURE_ARGS += \ + --with-systemd \ + PACKAGE_VERSION=$(PKG_VERSION) define Package/usbmuxd/install $(INSTALL_DIR) $(1)/etc/hotplug.d/usb diff --git a/utils/usbmuxd/patches/001-Revert-usb-Set-default-mode-to-3-to-include-CDC-NCM-.patch b/utils/usbmuxd/patches/001-Revert-usb-Set-default-mode-to-3-to-include-CDC-NCM-.patch new file mode 100644 index 0000000000..66af857e46 --- /dev/null +++ b/utils/usbmuxd/patches/001-Revert-usb-Set-default-mode-to-3-to-include-CDC-NCM-.patch @@ -0,0 +1,22 @@ +From 906c7bbdd20e8d962f76364dea6e5486220c578b Mon Sep 17 00:00:00 2001 +From: Georgi Valkov +Date: Mon, 22 Apr 2024 23:13:48 +0300 +Subject: [PATCH] Revert "usb: Set default mode to 3 to include CDC NCM, and + fix a log message" + +This reverts commit c7a0dd9b82633ea347497626282e3051a469ef50. +--- + src/usb.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/src/usb.c ++++ b/src/usb.c +@@ -691,7 +691,7 @@ static void get_mode_cb(struct libusb_tr + unsigned char *data = libusb_control_transfer_get_data(transfer); + + char* desired_mode_char = getenv(ENV_DEVICE_MODE); +- int desired_mode = desired_mode_char ? atoi(desired_mode_char) : 3; ++ int desired_mode = desired_mode_char ? atoi(desired_mode_char) : 1; + int guessed_mode = guess_mode(context->dev, dev); + + // Response is 3:3:3:0 for initial mode, 5:3:3:0 otherwise. diff --git a/utils/usbmuxd/patches/002-version-print.patch b/utils/usbmuxd/patches/002-version-print.patch new file mode 100644 index 0000000000..4da31270ef --- /dev/null +++ b/utils/usbmuxd/patches/002-version-print.patch @@ -0,0 +1,11 @@ +--- a/src/main.c ++++ b/src/main.c +@@ -584,7 +584,7 @@ static void parse_opts(int argc, char ** + ++verbose; + break; + case 'V': +- printf("%s\n", PACKAGE_STRING); ++ printf("%s %s\n", PACKAGE_STRING, PACKAGE_VERSION); + exit(0); + case 'U': + drop_privileges = 1; diff --git a/utils/usbmuxd/patches/010-config.patch b/utils/usbmuxd/patches/010-config.patch index 31d9abcece..32c0e056de 100644 --- a/utils/usbmuxd/patches/010-config.patch +++ b/utils/usbmuxd/patches/010-config.patch @@ -1,6 +1,6 @@ --- a/src/conf.c +++ b/src/conf.c -@@ -126,7 +126,7 @@ const char *config_get_config_dir() +@@ -129,7 +129,7 @@ const char *config_get_config_dir() #ifdef __APPLE__ base_config_dir = strdup("/var/db"); #else