diff options
Diffstat (limited to 'source/a/upower/patches/0011-linux-Add-support-for-iPhone-XR-XS-models.patch')
-rw-r--r-- | source/a/upower/patches/0011-linux-Add-support-for-iPhone-XR-XS-models.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/source/a/upower/patches/0011-linux-Add-support-for-iPhone-XR-XS-models.patch b/source/a/upower/patches/0011-linux-Add-support-for-iPhone-XR-XS-models.patch new file mode 100644 index 000000000..2426e044b --- /dev/null +++ b/source/a/upower/patches/0011-linux-Add-support-for-iPhone-XR-XS-models.patch @@ -0,0 +1,76 @@ +From 97185bae75b16bea48d532aa5511417e485b1c06 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera <hadess@hadess.net> +Date: Wed, 17 Jun 2020 10:51:09 +0200 +Subject: [PATCH 1/4] linux: Add support for iPhone XR, XS models + +Modifying the udev serial to be acceptable as an hyphened UDID, as the +usbmux stack expects. + +Closes: #114 +--- + src/linux/up-device-idevice.c | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +diff --git a/src/linux/up-device-idevice.c b/src/linux/up-device-idevice.c +index a808269..d2fa0a1 100644 +--- a/src/linux/up-device-idevice.c ++++ b/src/linux/up-device-idevice.c +@@ -203,6 +203,28 @@ out: + return G_SOURCE_CONTINUE; + } + ++static char * ++get_device_uuid (GUdevDevice *native) ++{ ++ const char *uuid; ++ char *retval; ++ ++ uuid = g_udev_device_get_property (native, "ID_SERIAL_SHORT"); ++ if (uuid == NULL) ++ return NULL; ++ ++ if (strlen (uuid) != 24) ++ return g_strdup (uuid); ++ ++ /* new style UDID: add hyphen between first 8 and following 16 digits */ ++ retval = g_malloc0 (24 + 1 + 1); ++ memcpy (&retval[0], &uuid[0], 8); ++ retval[8] = '-'; ++ memcpy (&retval[9], &uuid[8], 16); ++ ++ return retval; ++} ++ + /** + * up_device_idevice_coldplug: + * +@@ -213,7 +235,7 @@ up_device_idevice_coldplug (UpDevice *device) + { + UpDeviceIdevice *idevice = UP_DEVICE_IDEVICE (device); + GUdevDevice *native; +- const gchar *uuid; ++ char *uuid; + const gchar *model; + UpDeviceKind kind; + +@@ -223,7 +245,7 @@ up_device_idevice_coldplug (UpDevice *device) + return FALSE; + + /* Get the UUID */ +- uuid = g_udev_device_get_property (native, "ID_SERIAL_SHORT"); ++ uuid = get_device_uuid (native); + if (uuid == NULL) + return FALSE; + +@@ -253,6 +275,8 @@ up_device_idevice_coldplug (UpDevice *device) + g_source_set_name_by_id (idevice->priv->start_id, + "[upower] up_device_idevice_start_poll_cb (linux)"); + ++ g_free (uuid); ++ + return TRUE; + } + +-- +2.27.0 + |