From 97185bae75b16bea48d532aa5511417e485b1c06 Mon Sep 17 00:00:00 2001 From: Bastien Nocera 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