diff options
-rw-r--r-- | include/libirecovery.h | 4 | ||||
-rw-r--r-- | src/libirecovery.c | 22 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/libirecovery.h b/include/libirecovery.h index 781123b..9b9ee01 100644 --- a/include/libirecovery.h +++ b/include/libirecovery.h @@ -59,6 +59,7 @@ extern "C" { #define CPID_IPAD32 0x8945 #define CPID_IPAD33 0x8945 #define CPID_IPHONE5 0x8950 +#define CPID_IPOD5G 0x8942 #define BDID_UNKNOWN -1 #define BDID_IPHONE2G 0x00 @@ -83,6 +84,7 @@ extern "C" { #define BDID_IPAD33 0x04 #define BDID_IPHONE51 0x00 #define BDID_IPHONE52 0x02 +#define BDID_IPOD5G 0x00 #define DEVICE_UNKNOWN -1 #define DEVICE_IPHONE2G 0 @@ -107,6 +109,7 @@ extern "C" { #define DEVICE_IPAD33 19 #define DEVICE_IPHONE51 20 #define DEVICE_IPHONE52 21 +#define DEVICE_IPOD5G 22 enum { kRecoveryMode1 = 0x1280, @@ -211,6 +214,7 @@ static struct irecv_device irecv_devices[] = { { 19, "iPad3,3", "j2aap", 0x04, 0x8945 }, { 20, "iPhone5,1", "n41ap", 0x00, 0x8950 }, { 21, "iPhone5,2", "n42ap", 0x02, 0x8950 }, + { 22, "iPod5,1", "n78ap", 0x00, 0x8942 }, { -1, NULL, NULL, -1, -1 } }; diff --git a/src/libirecovery.c b/src/libirecovery.c index 4db314b..e8ce634 100644 --- a/src/libirecovery.c +++ b/src/libirecovery.c @@ -1607,6 +1607,28 @@ irecv_error_t irecv_get_device(irecv_client_t client, irecv_device_t* device) { break; } break; + + case CPID_APPLETV31: + // AppleTV 3rd gen. iPad2,4 and iPod5,1 share the same ChipID, so we need to check the BoardID + if (irecv_get_bdid(client, &bdid) < 0) { + break; + } + switch (bdid) { + case BDID_APPLETV31: + device_id = DEVICE_APPLETV31; + break; + case BDID_IPAD24: + device_id = DEVICE_IPAD24; + break; + case BDID_IPOD5G: + device_id = DEVICE_IPOD5G; + break; + default: + device_id = DEVICE_UNKNOWN; + break; + } + break; + case CPID_IPHONE5: if (irecv_get_bdid(client, &bdid) < 0) { break; |