Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package usbmuxd for openSUSE:Factory checked in at 2025-02-27 14:50:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/usbmuxd (Old) and /work/SRC/openSUSE:Factory/.usbmuxd.new.25152 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "usbmuxd" Thu Feb 27 14:50:52 2025 rev:39 rq:1248795 version:1.1.1+git69.523f700 Changes: -------- --- /work/SRC/openSUSE:Factory/usbmuxd/usbmuxd.changes 2025-02-03 21:46:34.462074115 +0100 +++ /work/SRC/openSUSE:Factory/.usbmuxd.new.25152/usbmuxd.changes 2025-02-27 14:53:56.063988493 +0100 @@ -1,0 +2,20 @@ +Sun Feb 23 23:42:17 UTC 2025 - sbra...@suse.com + +- Update to version 1.1.1+git69.523f700: + * Updated README + * Update libplist requirement to 2.6.0 and use PLIST_DICT helper + for cleaner code + * conf: fix false plist write error in config_set_device_record + * usb: add support for modes 4 and 5 + * usb: correctly display 10 Gbps USB 3.x + * usb: Revert default mode back to 1 + * device: Fix crash caused by wrong variable when logging an + error + * usb: Set default mode to 3 to include CDC NCM, and fix a log + message + * systemd: use runstatedir (drop usbmuxd-run-dir.patch). + * udev: Make sure iBridge (T1) doesn't end up in an unconfigured + state +- Refresh harden_usbmuxd.service.patch. + +------------------------------------------------------------------- Old: ---- usbmuxd-1.1.1+git48.01c94c7.tar.gz usbmuxd-run-dir.patch New: ---- usbmuxd-1.1.1+git69.523f700.tar.gz BETA DEBUG BEGIN: Old: message * systemd: use runstatedir (drop usbmuxd-run-dir.patch). * udev: Make sure iBridge (T1) doesn't end up in an unconfigured BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ usbmuxd.spec ++++++ --- /var/tmp/diff_new_pack.nnbO8e/_old 2025-02-27 14:53:57.844062766 +0100 +++ /var/tmp/diff_new_pack.nnbO8e/_new 2025-02-27 14:53:57.864063601 +0100 @@ -18,7 +18,7 @@ %{!?_udevrulesdir: %global _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d} Name: usbmuxd -Version: 1.1.1+git48.01c94c7 +Version: 1.1.1+git69.523f700 Release: 0 Summary: A socket daemon to multiplex connections from and to iOS devices License: GPL-2.0-only OR GPL-3.0-only @@ -27,7 +27,6 @@ Source: %{name}-%{version}.tar.gz Source1: %{name}.sysusers Source99: baselibs.conf -Patch2: usbmuxd-run-dir.patch Patch3: harden_usbmuxd.service.patch BuildRequires: autoconf BuildRequires: automake @@ -36,7 +35,7 @@ BuildRequires: pkgconfig BuildRequires: sysuser-tools BuildRequires: pkgconfig(libimobiledevice-1.0) >= 1.3.0 -BuildRequires: pkgconfig(libplist-2.0) >= 2.3.0 +BuildRequires: pkgconfig(libplist-2.0) >= 2.6.0 BuildRequires: pkgconfig(libusb-1.0) >= 1.0.9 BuildRequires: pkgconfig(systemd) BuildRequires: pkgconfig(udev) ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.nnbO8e/_old 2025-02-27 14:53:58.076072447 +0100 +++ /var/tmp/diff_new_pack.nnbO8e/_new 2025-02-27 14:53:58.084072781 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/libimobiledevice/usbmuxd</param> - <param name="changesrevision">01c94c77f59404924f1c46d99c4e5e0c7817281b</param></service></servicedata> + <param name="changesrevision">523f7004dce885fe38b4f80e34a8f76dc8ea98b5</param></service></servicedata> (No newline at EOF) ++++++ harden_usbmuxd.service.patch ++++++ --- /var/tmp/diff_new_pack.nnbO8e/_old 2025-02-27 14:53:58.200077621 +0100 +++ /var/tmp/diff_new_pack.nnbO8e/_new 2025-02-27 14:53:58.236079123 +0100 @@ -1,7 +1,7 @@ -Index: usbmuxd-1.1.1/systemd/usbmuxd.service.in +Index: usbmuxd-1.1.1+git69.523f700/systemd/usbmuxd.service.in =================================================================== ---- usbmuxd-1.1.1.orig/systemd/usbmuxd.service.in -+++ usbmuxd-1.1.1/systemd/usbmuxd.service.in +--- usbmuxd-1.1.1+git69.523f700.orig/systemd/usbmuxd.service.in ++++ usbmuxd-1.1.1+git69.523f700/systemd/usbmuxd.service.in @@ -3,5 +3,16 @@ Description=Socket daemon for the usbmux Documentation=man:usbmuxd(8) @@ -17,6 +17,6 @@ +ProtectControlGroups=true +RestrictRealtime=true +# end of automatic additions - ExecStart=@sbindir@/usbmuxd --user usbmux --systemd -S /run/usbmuxd -P /run/usbmuxd.pid - PIDFile=/run/usbmuxd.pid + ExecStart=@sbindir@/usbmuxd --user usbmux --systemd + PIDFile=@runstatedir@/usbmuxd.pid ++++++ usbmuxd-1.1.1+git48.01c94c7.tar.gz -> usbmuxd-1.1.1+git69.523f700.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/.github/workflows/build.yml new/usbmuxd-1.1.1+git69.523f700/.github/workflows/build.yml --- old/usbmuxd-1.1.1+git48.01c94c7/.github/workflows/build.yml 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/.github/workflows/build.yml 2025-02-01 21:07:39.000000000 +0100 @@ -1,6 +1,10 @@ name: build -on: [push] +on: + push: + pull_request: + schedule: + - cron: '0 0 1 * *' jobs: build-linux-ubuntu: @@ -14,28 +18,28 @@ run: | echo "target_triplet=`gcc -dumpmachine`" >> $GITHUB_ENV - name: fetch libplist - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v6 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libplist-latest_${{env.target_triplet}} repo: libimobiledevice/libplist - name: fetch libusbmuxd - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v6 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libusbmuxd-latest_${{env.target_triplet}} repo: libimobiledevice/libusbmuxd - name: fetch libimobiledevice-glue - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v6 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml name: libimobiledevice-glue-latest_${{env.target_triplet}} repo: libimobiledevice/libimobiledevice-glue - name: fetch libimobiledevice - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v6 with: github_token: ${{secrets.GITHUB_TOKEN}} workflow: build.yml @@ -49,7 +53,7 @@ done sudo cp -r extract/* / sudo ldconfig - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 - name: autogen @@ -65,9 +69,9 @@ run: | mkdir -p dest DESTDIR=`pwd`/dest make install - tar -C dest -cf usbmuxd.tar usr lib + tar -C dest -cf usbmuxd.tar --strip-components 1 . - name: publish artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: usbmuxd-latest_${{env.target_triplet}} path: usbmuxd.tar diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/README.md new/usbmuxd-1.1.1+git69.523f700/README.md --- old/usbmuxd-1.1.1+git48.01c94c7/README.md 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/README.md 2025-02-01 21:07:39.000000000 +0100 @@ -135,8 +135,8 @@ ## Links * Homepage: https://libimobiledevice.org/ -* Repository: https://git.libimobiledevice.org/usbmuxd.git -* Repository (Mirror): https://github.com/libimobiledevice/usbmuxd.git +* Repository: https://github.com/libimobiledevice/usbmuxd.git +* Repository (Mirror): https://git.libimobiledevice.org/usbmuxd.git * Issue Tracker: https://github.com/libimobiledevice/usbmuxd/issues * Mailing List: https://lists.libimobiledevice.org/mailman/listinfo/libimobiledevice-devel * Twitter: https://twitter.com/libimobiledev @@ -156,4 +156,4 @@ usbmuxd is an independent software application and has not been authorized, sponsored, or otherwise approved by Apple Inc. -README Updated on: 2022-04-04 +README Updated on: 2024-12-02 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/configure.ac new/usbmuxd-1.1.1+git69.523f700/configure.ac --- old/usbmuxd-1.1.1+git48.01c94c7/configure.ac 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/configure.ac 2025-02-01 21:07:39.000000000 +0100 @@ -21,14 +21,14 @@ # Checks for libraries. PKG_CHECK_MODULES(libusb, libusb-1.0 >= 1.0.9) -PKG_CHECK_MODULES(libplist, libplist-2.0 >= 2.3.0) +PKG_CHECK_MODULES(libplist, libplist-2.0 >= 2.6.0) PKG_CHECK_MODULES(libimobiledevice, libimobiledevice-1.0 >= 1.3.0, have_limd=yes, have_limd=no) PKG_CHECK_MODULES(limd_glue, libimobiledevice-glue-1.0 >= 1.0.0) AC_ARG_WITH([preflight], [AS_HELP_STRING([--without-preflight], [do not build with preflight worker support @<:@default=yes@:>@])], - [with_preflight=no], + [with_preflight=$withval], [with_preflight=yes]) if test "x$have_limd" = "xyes"; then @@ -40,7 +40,7 @@ AC_SUBST(libimobiledevice_CFLAGS) AC_SUBST(libimobiledevice_LIBS) CACHED_CFLAGS="$CFLAGS" - CFLAGS+=" $libimobiledevice_CFLAGS" + CFLAGS="$CFLAGS $libimobiledevice_CFLAGS" AC_CACHE_CHECK(for enum idevice_connection_type, ac_cv_enum_idevice_connection_type, AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ #include <libimobiledevice/libimobiledevice.h> @@ -75,7 +75,7 @@ AC_ARG_WITH([systemd], [AS_HELP_STRING([--without-systemd], [do not build with systemd support @<:@default=yes@:>@])], - [], + [with_systemd=$withval], [with_systemd=yes]) AC_ARG_WITH([systemdsystemunitdir], @@ -153,11 +153,16 @@ AC_SUBST([UDEV_SUB]) AC_SUBST([SYSTEMD_SUB]) -AS_COMPILER_FLAGS(GLOBAL_CFLAGS, "-g -Wall -Wextra -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith -Wwrite-strings -Wswitch-default -Wno-unused-parameter") +AS_COMPILER_FLAGS(GLOBAL_CFLAGS, "-Wall -Wextra -Wmissing-declarations -Wredundant-decls -Wshadow -Wpointer-arith -Wwrite-strings -Wswitch-default -Wno-unused-parameter") AC_SUBST(GLOBAL_CFLAGS) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) +# workaround for older autoconf versions +if test "x$runstatedir" == "x"; then + runstatedir=$localstatedir/run +fi + AC_CONFIG_FILES([ Makefile src/Makefile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/src/client.c new/usbmuxd-1.1.1+git69.523f700/src/client.c --- old/usbmuxd-1.1.1+git48.01c94c7/src/client.c 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/src/client.c 2025-02-01 21:07:39.000000000 +0100 @@ -31,6 +31,7 @@ #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> +#include <netinet/in.h> #include <netinet/tcp.h> #include <sys/un.h> #include <arpa/inet.h> @@ -451,10 +452,7 @@ plist_dict_set_item(l, "Blacklisted", plist_new_bool(0)); n = NULL; if (lc->info) { - n = plist_dict_get_item(lc->info, "BundleID"); - } - if (n) { - plist_dict_set_item(l, "BundleID", plist_copy(n)); + plist_dict_copy_item(l, lc->info, "BundleID", NULL); } plist_dict_set_item(l, "ConnType", plist_new_uint(0)); @@ -631,28 +629,11 @@ static void update_client_info(struct mux_client *client, plist_t dict) { - plist_t node = NULL; plist_t info = plist_new_dict(); - - node = plist_dict_get_item(dict, "BundleID"); - if (node && (plist_get_node_type(node) == PLIST_STRING)) { - plist_dict_set_item(info, "BundleID", plist_copy(node)); - } - - node = plist_dict_get_item(dict, "ClientVersionString"); - if (node && (plist_get_node_type(node) == PLIST_STRING)) { - plist_dict_set_item(info, "ClientVersionString", plist_copy(node)); - } - - node = plist_dict_get_item(dict, "ProgName"); - if (node && (plist_get_node_type(node) == PLIST_STRING)) { - plist_dict_set_item(info, "ProgName", plist_copy(node)); - } - - node = plist_dict_get_item(dict, "kLibUSBMuxVersion"); - if (node && (plist_get_node_type(node) == PLIST_UINT)) { - plist_dict_set_item(info, "kLibUSBMuxVersion", plist_copy(node)); - } + plist_dict_copy_item(info, dict, "BundleID", NULL); + plist_dict_copy_item(info, dict, "ClientVersionString", NULL); + plist_dict_copy_item(info, dict, "ProgName", NULL); + plist_dict_copy_item(info, dict, "kLibUSBMuxVersion", NULL); plist_free(client->info); client->info = info; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/src/conf.c new/usbmuxd-1.1.1+git69.523f700/src/conf.c --- old/usbmuxd-1.1.1+git48.01c94c7/src/conf.c 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/src/conf.c 2025-02-01 21:07:39.000000000 +0100 @@ -431,7 +431,7 @@ remove(device_record_file); /* store file */ - if (!plist_write_to_file(plist, device_record_file, PLIST_FORMAT_XML, 0)) { + if (plist_write_to_file(plist, device_record_file, PLIST_FORMAT_XML, 0) != PLIST_ERR_SUCCESS) { usbmuxd_log(LL_DEBUG, "Could not open '%s' for writing: %s", device_record_file, strerror(errno)); res = -ENOENT; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/src/device.c new/usbmuxd-1.1.1+git69.523f700/src/device.c --- old/usbmuxd-1.1.1+git48.01c94c7/src/device.c 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/src/device.c 2025-02-01 21:07:39.000000000 +0100 @@ -661,7 +661,7 @@ if(!(th->th_flags & TH_RST)) { usbmuxd_log(LL_INFO, "No connection for device %d incoming packet %d->%d", dev->id, dport, sport); if(send_anon_rst(dev, sport, dport, ntohl(th->th_seq)) < 0) - usbmuxd_log(LL_ERROR, "Error sending TCP RST to device %d (%d->%d)", conn->dev->id, sport, dport); + usbmuxd_log(LL_ERROR, "Error sending TCP RST to device %d (%d->%d)", dev->id, sport, dport); } return; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/src/main.c new/usbmuxd-1.1.1+git69.523f700/src/main.c --- old/usbmuxd-1.1.1+git48.01c94c7/src/main.c 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/src/main.c 2025-02-01 21:07:39.000000000 +0100 @@ -584,7 +584,7 @@ ++verbose; break; case 'V': - printf("%s\n", PACKAGE_STRING); + printf("%s %s\n", PACKAGE_NAME, PACKAGE_VERSION); exit(0); case 'U': drop_privileges = 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/src/usb.c new/usbmuxd-1.1.1+git69.523f700/src/usb.c --- old/usbmuxd-1.1.1+git48.01c94c7/src/usb.c 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/src/usb.c 2025-02-01 21:07:39.000000000 +0100 @@ -53,7 +53,7 @@ #define NUM_RX_LOOPS 3 struct usb_device { - libusb_device_handle *dev; + libusb_device_handle *handle; uint8_t bus, address; char serial[256]; int alive; @@ -83,7 +83,7 @@ static void usb_disconnect(struct usb_device *dev) { - if(!dev->dev) { + if(!dev->handle) { return; } @@ -114,9 +114,9 @@ collection_free(&dev->tx_xfers); collection_free(&dev->rx_xfers); - libusb_release_interface(dev->dev, dev->interface); - libusb_close(dev->dev); - dev->dev = NULL; + libusb_release_interface(dev->handle, dev->interface); + libusb_close(dev->handle); + dev->handle = NULL; collection_remove(&device_list, dev); free(dev); } @@ -177,7 +177,7 @@ { int res; struct libusb_transfer *xfer = libusb_alloc_transfer(0); - libusb_fill_bulk_transfer(xfer, dev->dev, dev->ep_out, (void*)buf, length, tx_callback, dev, 0); + libusb_fill_bulk_transfer(xfer, dev->handle, dev->ep_out, (void*)buf, length, tx_callback, dev, 0); if((res = libusb_submit_transfer(xfer)) < 0) { usbmuxd_log(LL_ERROR, "Failed to submit TX transfer %p len %d to device %d-%d: %s", buf, length, dev->bus, dev->address, libusb_error_name(res)); libusb_free_transfer(xfer); @@ -189,7 +189,7 @@ // Send Zero Length Packet xfer = libusb_alloc_transfer(0); void *buffer = malloc(1); - libusb_fill_bulk_transfer(xfer, dev->dev, dev->ep_out, buffer, 0, tx_callback, dev, 0); + libusb_fill_bulk_transfer(xfer, dev->handle, dev->ep_out, buffer, 0, tx_callback, dev, 0); if((res = libusb_submit_transfer(xfer)) < 0) { usbmuxd_log(LL_ERROR, "Failed to submit TX ZLP transfer to device %d-%d: %s", dev->bus, dev->address, libusb_error_name(res)); libusb_free_transfer(xfer); @@ -256,7 +256,7 @@ void *buf; struct libusb_transfer *xfer = libusb_alloc_transfer(0); buf = malloc(USB_MRU); - libusb_fill_bulk_transfer(xfer, dev->dev, dev->ep_in, buf, USB_MRU, rx_callback, dev, 0); + libusb_fill_bulk_transfer(xfer, dev->handle, dev->ep_in, buf, USB_MRU, rx_callback, dev, 0); if((res = libusb_submit_transfer(xfer)) != 0) { usbmuxd_log(LL_ERROR, "Failed to submit RX transfer to device %d-%d: %s", dev->bus, dev->address, libusb_error_name(res)); libusb_free_transfer(xfer); @@ -357,7 +357,7 @@ libusb_fill_control_setup(transfer->buffer, LIBUSB_ENDPOINT_IN, LIBUSB_REQUEST_GET_DESCRIPTOR, (uint16_t)((LIBUSB_DT_STRING << 8) | usbdev->devdesc.iSerialNumber), langid, 1024 + LIBUSB_CONTROL_SETUP_SIZE); - libusb_fill_control_transfer(transfer, usbdev->dev, transfer->buffer, get_serial_callback, usbdev, 1000); + libusb_fill_control_transfer(transfer, usbdev->handle, transfer->buffer, get_serial_callback, usbdev, 1000); if((res = libusb_submit_transfer(transfer)) < 0) { usbmuxd_log(LL_ERROR, "Could not request transfer for device %d-%d: %s", usbdev->bus, usbdev->address, libusb_error_name(res)); @@ -369,7 +369,7 @@ { struct libusb_transfer* ctrl_transfer = libusb_alloc_transfer(0); int ret = 0; - unsigned char* buffer = malloc(LIBUSB_CONTROL_SETUP_SIZE + context->wLength); + unsigned char* buffer = calloc(LIBUSB_CONTROL_SETUP_SIZE + context->wLength, 1); uint8_t bRequestType = LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN | LIBUSB_RECIPIENT_DEVICE; libusb_fill_control_setup(buffer, bRequestType, context->bRequest, context->wValue, context->wIndex, context->wLength); @@ -394,7 +394,7 @@ /// @param dev /// @param usbdev /// @param handle -/// @return 0 - undetermined, 1 - initial, 2 - valeria, 3 - cdc_ncm +/// @return 0 - undetermined, 1 - initial, 2 - valeria, 3 - cdc_ncm, 4 - usbeth+cdc_ncm, 5 - cdc_ncm direct static int guess_mode(struct libusb_device* dev, struct usb_device *usbdev) { int res, j; @@ -404,11 +404,21 @@ int bus = usbdev->bus; int address = usbdev->address; + if(devdesc.bNumConfigurations == 1) { + // CDC-NCM Direct + return 5; + } + if(devdesc.bNumConfigurations <= 4) { // Assume this is initial mode return 1; } + if(devdesc.bNumConfigurations == 6) { + // USB Ethernet + CDC-NCM + return 4; + } + if(devdesc.bNumConfigurations != 5) { // No known modes with more then 5 configurations return 0; @@ -595,7 +605,7 @@ usbdev->address = address; usbdev->devdesc = devdesc; usbdev->speed = 480000000; - usbdev->dev = handle; + usbdev->handle = handle; usbdev->alive = 1; usbdev->wMaxPacketSize = libusb_get_max_packet_size(dev, usbdev->ep_out); if (usbdev->wMaxPacketSize <= 0) { @@ -615,6 +625,9 @@ case LIBUSB_SPEED_SUPER: usbdev->speed = 5000000000; break; + case LIBUSB_SPEED_SUPER_PLUS: + usbdev->speed = 10000000000; + break; case LIBUSB_SPEED_HIGH: case LIBUSB_SPEED_UNKNOWN: default: @@ -696,10 +709,10 @@ // Response is 3:3:3:0 for initial mode, 5:3:3:0 otherwise. usbmuxd_log(LL_INFO, "Received response %i:%i:%i:%i for get_mode request for device %i-%i", data[0], data[1], data[2], data[3], context->bus, context->address); - if(desired_mode >= 1 && desired_mode <= 3 && + if(desired_mode >= 1 && desired_mode <= 5 && guessed_mode > 0 && // do not switch mode if guess failed guessed_mode != desired_mode) { - usbmuxd_log(LL_WARNING, "Switching device %i-%i mode to %i", context->bus, context->address, context->wIndex); + usbmuxd_log(LL_WARNING, "Switching device %i-%i mode to %i", context->bus, context->address, desired_mode); context->bRequest = APPLE_VEND_SPECIFIC_SET_MODE; context->wValue = 0; @@ -764,7 +777,7 @@ usbdev->address = address; usbdev->devdesc = devdesc; usbdev->speed = 0; - usbdev->dev = handle; + usbdev->handle = handle; usbdev->alive = 1; collection_init(&usbdev->tx_xfers); @@ -854,7 +867,7 @@ const char *usb_get_serial(struct usb_device *dev) { - if(!dev->dev) { + if(!dev->handle) { return NULL; } return dev->serial; @@ -862,7 +875,7 @@ uint32_t usb_get_location(struct usb_device *dev) { - if(!dev->dev) { + if(!dev->handle) { return 0; } return (dev->bus << 16) | dev->address; @@ -870,7 +883,7 @@ uint16_t usb_get_pid(struct usb_device *dev) { - if(!dev->dev) { + if(!dev->handle) { return 0; } return dev->devdesc.idProduct; @@ -878,7 +891,7 @@ uint64_t usb_get_speed(struct usb_device *dev) { - if (!dev->dev) { + if (!dev->handle) { return 0; } return dev->speed; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/systemd/Makefile.am new/usbmuxd-1.1.1+git69.523f700/systemd/Makefile.am --- old/usbmuxd-1.1.1+git48.01c94c7/systemd/Makefile.am 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/systemd/Makefile.am 2025-02-01 21:07:39.000000000 +0100 @@ -1,7 +1,7 @@ edit = \ $(SED) -r \ -e 's|@sbindir[@]|$(sbindir)|g' \ - -e 's|@localstatedir[@]|$(localstatedir)|g' \ + -e 's|@runstatedir[@]|$(runstatedir)|g' \ < $< > $@ || rm $@ if WANT_SYSTEMD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/systemd/usbmuxd.service.in new/usbmuxd-1.1.1+git69.523f700/systemd/usbmuxd.service.in --- old/usbmuxd-1.1.1+git48.01c94c7/systemd/usbmuxd.service.in 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/systemd/usbmuxd.service.in 2025-02-01 21:07:39.000000000 +0100 @@ -4,4 +4,4 @@ [Service] ExecStart=@sbindir@/usbmuxd --user usbmux --systemd -PIDFile=@localstatedir@/run/usbmuxd.pid +PIDFile=@runstatedir@/usbmuxd.pid diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/usbmuxd-1.1.1+git48.01c94c7/udev/39-usbmuxd.rules.in new/usbmuxd-1.1.1+git69.523f700/udev/39-usbmuxd.rules.in --- old/usbmuxd-1.1.1+git48.01c94c7/udev/39-usbmuxd.rules.in 2023-05-05 23:22:37.000000000 +0200 +++ new/usbmuxd-1.1.1+git69.523f700/udev/39-usbmuxd.rules.in 2025-02-01 21:07:39.000000000 +0100 @@ -4,7 +4,10 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="5ac/12[9a][0-9a-f]/*|5ac/190[1-5]/*|5ac/8600/*", TAG+="systemd" # Initialize iOS devices into "deactivated" USB configuration state and activate usbmuxd -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="5ac/12[9a][0-9a-f]/*|5ac/190[1-5]/*|5ac/8600/*", ACTION=="add", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}="0", OWNER="usbmux", @udev_activation_rule@ +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="5ac/12[9a][0-9a-f]/*|5ac/190[1-5]/*", ACTION=="add", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}="0", OWNER="usbmux", @udev_activation_rule@ +# but make sure iBridge (T1) doesn't end up in an unconfigured state +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="5ac/8600/*", ACTION=="add", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}="1", OWNER="usbmux", @udev_activation_rule@ + # Make sure properties don't get lost when bind action is called SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="5ac/12[9a][0-9a-f]/*|5ac/190[1-5]/*|5ac/8600/*", ACTION=="bind", ENV{USBMUX_SUPPORTED}="1", OWNER="usbmux"