Skip to content

Instantly share code, notes, and snippets.

@adamawolf
Last active March 4, 2024 07:48
Star You must be signed in to star a gist
Save adamawolf/3048717 to your computer and use it in GitHub Desktop.
List of Apple's mobile device codes types a.k.a. machine ids (e.g. `iPhone1,1`, `Watch1,1`, etc.) and their matching product names
i386 : iPhone Simulator
x86_64 : iPhone Simulator
arm64 : iPhone Simulator
iPhone1,1 : iPhone
iPhone1,2 : iPhone 3G
iPhone2,1 : iPhone 3GS
iPhone3,1 : iPhone 4
iPhone3,2 : iPhone 4 GSM Rev A
iPhone3,3 : iPhone 4 CDMA
iPhone4,1 : iPhone 4S
iPhone5,1 : iPhone 5 (GSM)
iPhone5,2 : iPhone 5 (GSM+CDMA)
iPhone5,3 : iPhone 5C (GSM)
iPhone5,4 : iPhone 5C (Global)
iPhone6,1 : iPhone 5S (GSM)
iPhone6,2 : iPhone 5S (Global)
iPhone7,1 : iPhone 6 Plus
iPhone7,2 : iPhone 6
iPhone8,1 : iPhone 6s
iPhone8,2 : iPhone 6s Plus
iPhone8,4 : iPhone SE (GSM)
iPhone9,1 : iPhone 7
iPhone9,2 : iPhone 7 Plus
iPhone9,3 : iPhone 7
iPhone9,4 : iPhone 7 Plus
iPhone10,1 : iPhone 8
iPhone10,2 : iPhone 8 Plus
iPhone10,3 : iPhone X Global
iPhone10,4 : iPhone 8
iPhone10,5 : iPhone 8 Plus
iPhone10,6 : iPhone X GSM
iPhone11,2 : iPhone XS
iPhone11,4 : iPhone XS Max
iPhone11,6 : iPhone XS Max Global
iPhone11,8 : iPhone XR
iPhone12,1 : iPhone 11
iPhone12,3 : iPhone 11 Pro
iPhone12,5 : iPhone 11 Pro Max
iPhone12,8 : iPhone SE 2nd Gen
iPhone13,1 : iPhone 12 Mini
iPhone13,2 : iPhone 12
iPhone13,3 : iPhone 12 Pro
iPhone13,4 : iPhone 12 Pro Max
iPhone14,2 : iPhone 13 Pro
iPhone14,3 : iPhone 13 Pro Max
iPhone14,4 : iPhone 13 Mini
iPhone14,5 : iPhone 13
iPhone14,6 : iPhone SE 3rd Gen
iPhone14,7 : iPhone 14
iPhone14,8 : iPhone 14 Plus
iPhone15,2 : iPhone 14 Pro
iPhone15,3 : iPhone 14 Pro Max
iPhone15,4 : iPhone 15
iPhone15,5 : iPhone 15 Plus
iPhone16,1 : iPhone 15 Pro
iPhone16,2 : iPhone 15 Pro Max
iPod1,1 : 1st Gen iPod
iPod2,1 : 2nd Gen iPod
iPod3,1 : 3rd Gen iPod
iPod4,1 : 4th Gen iPod
iPod5,1 : 5th Gen iPod
iPod7,1 : 6th Gen iPod
iPod9,1 : 7th Gen iPod
iPad1,1 : iPad
iPad1,2 : iPad 3G
iPad2,1 : 2nd Gen iPad
iPad2,2 : 2nd Gen iPad GSM
iPad2,3 : 2nd Gen iPad CDMA
iPad2,4 : 2nd Gen iPad New Revision
iPad3,1 : 3rd Gen iPad
iPad3,2 : 3rd Gen iPad CDMA
iPad3,3 : 3rd Gen iPad GSM
iPad2,5 : iPad mini
iPad2,6 : iPad mini GSM+LTE
iPad2,7 : iPad mini CDMA+LTE
iPad3,4 : 4th Gen iPad
iPad3,5 : 4th Gen iPad GSM+LTE
iPad3,6 : 4th Gen iPad CDMA+LTE
iPad4,1 : iPad Air (WiFi)
iPad4,2 : iPad Air (GSM+CDMA)
iPad4,3 : 1st Gen iPad Air (China)
iPad4,4 : iPad mini Retina (WiFi)
iPad4,5 : iPad mini Retina (GSM+CDMA)
iPad4,6 : iPad mini Retina (China)
iPad4,7 : iPad mini 3 (WiFi)
iPad4,8 : iPad mini 3 (GSM+CDMA)
iPad4,9 : iPad Mini 3 (China)
iPad5,1 : iPad mini 4 (WiFi)
iPad5,2 : 4th Gen iPad mini (WiFi+Cellular)
iPad5,3 : iPad Air 2 (WiFi)
iPad5,4 : iPad Air 2 (Cellular)
iPad6,3 : iPad Pro (9.7 inch, WiFi)
iPad6,4 : iPad Pro (9.7 inch, WiFi+LTE)
iPad6,7 : iPad Pro (12.9 inch, WiFi)
iPad6,8 : iPad Pro (12.9 inch, WiFi+LTE)
iPad6,11 : iPad (2017)
iPad6,12 : iPad (2017)
iPad7,1 : iPad Pro 2nd Gen (WiFi)
iPad7,2 : iPad Pro 2nd Gen (WiFi+Cellular)
iPad7,3 : iPad Pro 10.5-inch 2nd Gen
iPad7,4 : iPad Pro 10.5-inch 2nd Gen
iPad7,5 : iPad 6th Gen (WiFi)
iPad7,6 : iPad 6th Gen (WiFi+Cellular)
iPad7,11 : iPad 7th Gen 10.2-inch (WiFi)
iPad7,12 : iPad 7th Gen 10.2-inch (WiFi+Cellular)
iPad8,1 : iPad Pro 11 inch 3rd Gen (WiFi)
iPad8,2 : iPad Pro 11 inch 3rd Gen (1TB, WiFi)
iPad8,3 : iPad Pro 11 inch 3rd Gen (WiFi+Cellular)
iPad8,4 : iPad Pro 11 inch 3rd Gen (1TB, WiFi+Cellular)
iPad8,5 : iPad Pro 12.9 inch 3rd Gen (WiFi)
iPad8,6 : iPad Pro 12.9 inch 3rd Gen (1TB, WiFi)
iPad8,7 : iPad Pro 12.9 inch 3rd Gen (WiFi+Cellular)
iPad8,8 : iPad Pro 12.9 inch 3rd Gen (1TB, WiFi+Cellular)
iPad8,9 : iPad Pro 11 inch 4th Gen (WiFi)
iPad8,10 : iPad Pro 11 inch 4th Gen (WiFi+Cellular)
iPad8,11 : iPad Pro 12.9 inch 4th Gen (WiFi)
iPad8,12 : iPad Pro 12.9 inch 4th Gen (WiFi+Cellular)
iPad11,1 : iPad mini 5th Gen (WiFi)
iPad11,2 : iPad mini 5th Gen
iPad11,3 : iPad Air 3rd Gen (WiFi)
iPad11,4 : iPad Air 3rd Gen
iPad11,6 : iPad 8th Gen (WiFi)
iPad11,7 : iPad 8th Gen (WiFi+Cellular)
iPad12,1 : iPad 9th Gen (WiFi)
iPad12,2 : iPad 9th Gen (WiFi+Cellular)
iPad14,1 : iPad mini 6th Gen (WiFi)
iPad14,2 : iPad mini 6th Gen (WiFi+Cellular)
iPad13,1 : iPad Air 4th Gen (WiFi)
iPad13,2 : iPad Air 4th Gen (WiFi+Cellular)
iPad13,4 : iPad Pro 11 inch 5th Gen
iPad13,5 : iPad Pro 11 inch 5th Gen
iPad13,6 : iPad Pro 11 inch 5th Gen
iPad13,7 : iPad Pro 11 inch 5th Gen
iPad13,8 : iPad Pro 12.9 inch 5th Gen
iPad13,9 : iPad Pro 12.9 inch 5th Gen
iPad13,10 : iPad Pro 12.9 inch 5th Gen
iPad13,11 : iPad Pro 12.9 inch 5th Gen
iPad13,16 : iPad Air 5th Gen (WiFi)
iPad13,17 : iPad Air 5th Gen (WiFi+Cellular)
iPad13,18 : iPad 10th Gen
iPad13,19 : iPad 10th Gen
iPad14,3 : iPad Pro 11 inch 4th Gen
iPad14,4 : iPad Pro 11 inch 4th Gen
iPad14,5 : iPad Pro 12.9 inch 6th Gen
iPad14,6 : iPad Pro 12.9 inch 6th Gen
Watch1,1 : Apple Watch 38mm case
Watch1,2 : Apple Watch 42mm case
Watch2,6 : Apple Watch Series 1 38mm case
Watch2,7 : Apple Watch Series 1 42mm case
Watch2,3 : Apple Watch Series 2 38mm case
Watch2,4 : Apple Watch Series 2 42mm case
Watch3,1 : Apple Watch Series 3 38mm case (GPS+Cellular)
Watch3,2 : Apple Watch Series 3 42mm case (GPS+Cellular)
Watch3,3 : Apple Watch Series 3 38mm case (GPS)
Watch3,4 : Apple Watch Series 3 42mm case (GPS)
Watch4,1 : Apple Watch Series 4 40mm case (GPS)
Watch4,2 : Apple Watch Series 4 44mm case (GPS)
Watch4,3 : Apple Watch Series 4 40mm case (GPS+Cellular)
Watch4,4 : Apple Watch Series 4 44mm case (GPS+Cellular)
Watch5,1 : Apple Watch Series 5 40mm case (GPS)
Watch5,2 : Apple Watch Series 5 44mm case (GPS)
Watch5,3 : Apple Watch Series 5 40mm case (GPS+Cellular)
Watch5,4 : Apple Watch Series 5 44mm case (GPS+Cellular)
Watch5,9 : Apple Watch SE 40mm case (GPS)
Watch5,10 : Apple Watch SE 44mm case (GPS)
Watch5,11 : Apple Watch SE 40mm case (GPS+Cellular)
Watch5,12 : Apple Watch SE 44mm case (GPS+Cellular)
Watch6,1 : Apple Watch Series 6 40mm case (GPS)
Watch6,2 : Apple Watch Series 6 44mm case (GPS)
Watch6,3 : Apple Watch Series 6 40mm case (GPS+Cellular)
Watch6,4 : Apple Watch Series 6 44mm case (GPS+Cellular)
Watch6,6 : Apple Watch Series 7 41mm case (GPS)
Watch6,7 : Apple Watch Series 7 45mm case (GPS)
Watch6,8 : Apple Watch Series 7 41mm case (GPS+Cellular)
Watch6,9 : Apple Watch Series 7 45mm case (GPS+Cellular)
Watch6,10 : Apple Watch SE 40mm case (GPS)
Watch6,11 : Apple Watch SE 44mm case (GPS)
Watch6,12 : Apple Watch SE 40mm case (GPS+Cellular)
Watch6,13 : Apple Watch SE 44mm case (GPS+Cellular)
Watch6,14 : Apple Watch Series 8 41mm case (GPS)
Watch6,15 : Apple Watch Series 8 45mm case (GPS)
Watch6,16 : Apple Watch Series 8 41mm case (GPS+Cellular)
Watch6,17 : Apple Watch Series 8 45mm case (GPS+Cellular)
Watch6,18 : Apple Watch Ultra
Watch7,1 : Apple Watch Series 9 41mm case (GPS)
Watch7,2 : Apple Watch Series 9 45mm case (GPS)
Watch7,3 : Apple Watch Series 9 41mm case (GPS+Cellular)
Watch7,4 : Apple Watch Series 9 45mm case (GPS+Cellular)
Watch7,5 : Apple Watch Ultra 2
@mexmer
Copy link

mexmer commented Nov 1, 2023

https://gist.github.com/adamawolf/3048717#file-apple_mobile_device_types-txt-L132-L135

These should be the 3rd generation iPads, right?

i explained this before, it depends, how you count generation.
it's 5th gen of ipad pro, it has same cpu as ipad pro 12.9 5th gen
it's 3rd gen of ipad pro 11"

1st gen ipad pro was 9.7" and 12.9"
2nd gen ipad pro was 10.5" and 12.9"
3rd gen ipad pro was 11" and 12.9"
all following generations of ipad pro are 11" and 12.9"
so it really depends if you count gen for model series (ipad/ipad pro/ipad air), or specific model (eg. including size)

also apple didn't help with naming, when they introduced it, they named it one way, then later changed it, and in developer tools it was different way from start

if you look at current state, apple really name it ipad pro 11" 3rd gen (for model that is here marked 5th gen), but when 2nd gen of 11" came out, it was named as ipad pro 4th gen 11" (and 12.9" respectively), then they renamed it to 11" 2nd gen, when 3rd gen came out ... so there is really no best way, that will suite everyone.

there is another example, when 4th gen ipad came out, apple promoted is as New iPad, and was selling it as iPad, although previous one was sold as iPad 3 (and the one before was actual iPad 2 ... no gen in name)

@tamwei
Copy link

tamwei commented Nov 3, 2023

@mexmer
I got it, thank you for your explanation.

@timdiggins
Copy link

@mexmer re github repo, yes agreed - https://github.com/fieldnotescommunities/ios-device-identifiers already exists, and I'm happy to review PRs - could store it in both versions (strings and json) if that's a help.

@arturCwiklinsky, @GregOriol re json - curl https://raw.githubusercontent.com/fieldnotescommunities/ios-device-identifiers/master/ios-device-identifiers.json > ios-device-identifiers.json

@luoxixuan
Copy link

luoxixuan commented Dec 1, 2023 via email

@xwi88
Copy link

xwi88 commented Dec 1, 2023 via email

@arturCwiklinsky
Copy link

@mexmer re github repo, yes agreed - https://github.com/fieldnotescommunities/ios-device-identifiers already exists, and I'm happy to review PRs - could store it in both versions (strings and json) if that's a help.

@arturCwiklinsky, @GregOriol re json - curl https://raw.githubusercontent.com/fieldnotescommunities/ios-device-identifiers/master/ios-device-identifiers.json > ios-device-identifiers.json

I know about that but It's not easy to deserialize this json to list of POJOs in some languages. This is one is perfectly suited for python Dictionary.

@DennisWeirauch
Copy link

DennisWeirauch commented Jan 31, 2024

I wrote a little script to read the device mapping table from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/usr/standalone/device_traits.db and convert it to a plist file, which can then be added to your project

DEVICE_TRAITS_DATABASE=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/usr/standalone/device_traits.db
SQL_QUERY="SELECT DISTINCT CASE WHEN INSTR(ProductType, '-') > 0 THEN SUBSTR(ProductType, 1, INSTR(ProductType, '-') - 1) ELSE ProductType END, ProductDescription from DEVICES;"

sqlite3 -readonly -separator $'\t' $DEVICE_TRAITS_DATABASE "$SQL_QUERY" > devices.tsv

awk -F '\t' 'NR>0 { print "Add \":"$1"\" string \""$2"\"" }' devices.tsv > commands.txt

/usr/libexec/PlistBuddy -c 'Clear' DeviceModels.plist
while IFS= read -r command; do
    /usr/libexec/PlistBuddy -c "$command" DeviceModels.plist
done < commands.txt

Edit: Some iPad models have an additional "-A" or "-B" suffix. I adjusted the SQLite query to drop that suffix

@luoxixuan
Copy link

luoxixuan commented Jan 31, 2024 via email

@xperseguers
Copy link

@jwarchol
Copy link

Apple Vision Pro is RealityDevice14,1

@malcolmteas
Copy link

@luoxixuan
Copy link

luoxixuan commented Feb 22, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment