summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libirecovery.h4
-rw-r--r--src/libirecovery.c22
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;