|
| 1 | +// |
| 2 | +// DeviceModelNames.swift |
| 3 | +// URnetwork |
| 4 | +// |
| 5 | +// generated by scripts/generate_device_model_names.py — do not edit by hand. |
| 6 | +// Maps hardware identifiers (utsname.machine on iOS, sysctl hw.model on |
| 7 | +// macOS) to retail device names for the device spec. Source catalogs: |
| 8 | +// github.com/kyle-seongwoo-jun/apple-device-identifiers (MIT). |
| 9 | +// |
| 10 | + |
| 11 | +import Foundation |
| 12 | + |
| 13 | +enum DeviceModelNames { |
| 14 | + |
| 15 | + /// the retail name for a hardware identifier, e.g. |
| 16 | + /// "iPhone17,2" -> "iPhone 16 Pro Max". nil for unknown identifiers |
| 17 | + /// (newer devices than this table; the caller falls back to the |
| 18 | + /// identifier itself, which still beats the generic model) |
| 19 | + static func name(forIdentifier identifier: String) -> String? { |
| 20 | + return names[identifier] |
| 21 | + } |
| 22 | + |
| 23 | + private static let names: [String: String] = { |
| 24 | + var names = [String: String]() |
| 25 | + names.reserveCapacity(512) |
| 26 | + for line in table.split(separator: "\n") { |
| 27 | + if let tab = line.firstIndex(of: "\t") { |
| 28 | + names[String(line[..<tab])] = String(line[line.index(after: tab)...]) |
| 29 | + } |
| 30 | + } |
| 31 | + return names |
| 32 | + }() |
| 33 | + |
| 34 | + private static let table = """ |
| 35 | +Mac13,1 Mac Studio (2022) |
| 36 | +Mac13,2 Mac Studio (2022) |
| 37 | +Mac14,10 MacBook Pro (16-inch, 2023) |
| 38 | +Mac14,12 Mac mini (2023) |
| 39 | +Mac14,13 Mac Studio (2023) |
| 40 | +Mac14,14 Mac Studio (2023) |
| 41 | +Mac14,15 MacBook Air (15-inch, M2, 2023) |
| 42 | +Mac14,2 MacBook Air (M2, 2022) |
| 43 | +Mac14,3 Mac mini (2023) |
| 44 | +Mac14,5 MacBook Pro (14-inch, 2023) |
| 45 | +Mac14,6 MacBook Pro (16-inch, 2023) |
| 46 | +Mac14,7 MacBook Pro (13-inch, M2, 2022) |
| 47 | +Mac14,8 Mac Pro (2023) |
| 48 | +Mac14,9 MacBook Pro (14-inch, 2023) |
| 49 | +Mac15,10 MacBook Pro (14-inch, Nov 2023) |
| 50 | +Mac15,11 MacBook Pro (16-inch, Nov 2023) |
| 51 | +Mac15,12 MacBook Air (13-inch, M3, 2024) |
| 52 | +Mac15,13 MacBook Air (15-inch, M3, 2024) |
| 53 | +Mac15,14 Mac Studio (2025) |
| 54 | +Mac15,3 MacBook Pro (14-inch, Nov 2023) |
| 55 | +Mac15,4 iMac (24-inch, 2023, Two ports) |
| 56 | +Mac15,5 iMac (24-inch, 2023, Four ports) |
| 57 | +Mac15,6 MacBook Pro (14-inch, Nov 2023) |
| 58 | +Mac15,7 MacBook Pro (16-inch, Nov 2023) |
| 59 | +Mac15,8 MacBook Pro (14-inch, Nov 2023) |
| 60 | +Mac15,9 MacBook Pro (16-inch, Nov 2023) |
| 61 | +Mac16,1 MacBook Pro (14-inch, 2024) |
| 62 | +Mac16,10 Mac mini (2024) |
| 63 | +Mac16,11 Mac mini (2024) |
| 64 | +Mac16,12 MacBook Air (13-inch, M4, 2025) |
| 65 | +Mac16,13 MacBook Air (15-inch, M4, 2025) |
| 66 | +Mac16,2 iMac (24-inch, 2024, Two ports) |
| 67 | +Mac16,3 iMac (24-inch, 2024, Four ports) |
| 68 | +Mac16,5 MacBook Pro (16-inch, 2024) |
| 69 | +Mac16,6 MacBook Pro (14-inch, 2024) |
| 70 | +Mac16,7 MacBook Pro (16-inch, 2024) |
| 71 | +Mac16,8 MacBook Pro (14-inch, 2024) |
| 72 | +Mac16,9 Mac Studio (2025) |
| 73 | +Mac17,2 MacBook Pro (14-inch, M5) |
| 74 | +MacBook10,1 MacBook (Retina, 12-inch, 2017) |
| 75 | +MacBook5,2 MacBook (13-inch, Early 2009) |
| 76 | +MacBook6,1 MacBook (13-inch, Late 2009) |
| 77 | +MacBook7,1 MacBook (13-inch, Mid 2010) |
| 78 | +MacBook8,1 MacBook (Retina, 12-inch, Early 2015) |
| 79 | +MacBook9,1 MacBook (Retina, 12-inch, Early 2016) |
| 80 | +MacBookAir10,1 MacBook Air (M1, 2020) |
| 81 | +MacBookAir2,1 MacBook Air (Mid 2009) |
| 82 | +MacBookAir3,1 MacBook Air (11-inch, Late 2010) |
| 83 | +MacBookAir3,2 MacBook Air (13-inch, Late 2010) |
| 84 | +MacBookAir4,1 MacBook Air (11-inch, Mid 2011) |
| 85 | +MacBookAir4,2 MacBook Air (13-inch, Mid 2011) |
| 86 | +MacBookAir5,1 MacBook Air (11-inch, Mid 2012) |
| 87 | +MacBookAir5,2 MacBook Air (13-inch, Mid 2012) |
| 88 | +MacBookAir6,1 MacBook Air (11-inch, Early 2014) |
| 89 | +MacBookAir6,2 MacBook Air (13-inch, Early 2014) |
| 90 | +MacBookAir7,1 MacBook Air (11-inch, Early 2015) |
| 91 | +MacBookAir7,2 MacBook Air (13-inch, 2017) |
| 92 | +MacBookAir8,1 MacBook Air (Retina, 13-inch, 2018) |
| 93 | +MacBookAir8,2 MacBook Air (Retina, 13-inch, 2019) |
| 94 | +MacBookAir9,1 MacBook Air (Retina, 13-inch, 2020) |
| 95 | +MacBookPro10,1 MacBook Pro (Retina, 15-inch, Early 2013) |
| 96 | +MacBookPro10,2 MacBook Pro (Retina, 13-inch, Early 2013) |
| 97 | +MacBookPro11,1 MacBook Pro (Retina, 13-inch, Late 2013) |
| 98 | +MacBookPro11,2 MacBook Pro (Retina, 15-inch, Late 2013) |
| 99 | +MacBookPro11,3 MacBook Pro (Retina, 15-inch, Late 2013) |
| 100 | +MacBookPro11,4 MacBook Pro (Retina, 15-inch, Mid 2015) |
| 101 | +MacBookPro11,5 MacBook Pro (Retina, 15-inch, Mid 2015) |
| 102 | +MacBookPro12,1 MacBook Pro (Retina, 13-inch, Early 2015) |
| 103 | +MacBookPro13,1 MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports) |
| 104 | +MacBookPro13,2 MacBook Pro (13-inch, 2016, Four Thunderbolt 3 ports) |
| 105 | +MacBookPro13,3 MacBook Pro (15-inch, 2016) |
| 106 | +MacBookPro14,1 MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports) |
| 107 | +MacBookPro14,2 MacBook Pro (13-inch, 2017, Four Thunderbolt 3 ports) |
| 108 | +MacBookPro14,3 MacBook Pro (15-inch, 2017) |
| 109 | +MacBookPro15,1 MacBook Pro (15-inch, 2018) |
| 110 | +MacBookPro15,2 MacBook Pro (13-inch, 2018, Four Thunderbolt 3 ports) |
| 111 | +MacBookPro15,3 MacBook Pro (15-inch, 2019) |
| 112 | +MacBookPro15,4 MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) |
| 113 | +MacBookPro16,1 MacBook Pro (16-inch, 2019) |
| 114 | +MacBookPro16,2 MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| 115 | +MacBookPro16,3 MacBook Pro (13-inch, 2020, Two Thunderbolt 3 ports) |
| 116 | +MacBookPro16,4 MacBook Pro (16-inch, 2019) |
| 117 | +MacBookPro17,1 MacBook Pro (13-inch, M1, 2020) |
| 118 | +MacBookPro18,1 MacBook Pro (16-inch, 2021) |
| 119 | +MacBookPro18,2 MacBook Pro (16-inch, 2021) |
| 120 | +MacBookPro18,3 MacBook Pro (14-inch, 2021) |
| 121 | +MacBookPro18,4 MacBook Pro (14-inch, 2021) |
| 122 | +MacBookPro4,1 MacBook Pro (15-inch, Early 2008) |
| 123 | +MacBookPro5,1 MacBook Pro (15-inch, Late 2008) |
| 124 | +MacBookPro5,2 MacBook Pro (17-inch, Early 2009) |
| 125 | +MacBookPro5,3 MacBook Pro (15-inch, 2.53GHz, Mid 2009) |
| 126 | +MacBookPro5,5 MacBook Pro (13-inch, Mid 2009) |
| 127 | +MacBookPro6,1 MacBook Pro (17-inch, Mid 2010) |
| 128 | +MacBookPro6,2 MacBook Pro (15-inch, Mid 2010) |
| 129 | +MacBookPro7,1 MacBook Pro (13-inch, Mid 2010) |
| 130 | +MacBookPro8,1 MacBook Pro (13-inch, Early 2011) |
| 131 | +MacBookPro8,2 MacBook Pro (15-inch, Early 2011) |
| 132 | +MacBookPro8,3 MacBook Pro (17-inch, Early 2011) |
| 133 | +MacBookPro9,1 MacBook Pro (15-inch, Mid 2012) |
| 134 | +MacBookPro9,2 MacBook Pro (13-inch, Mid 2012) |
| 135 | +MacPro4,1 Mac Pro (Early 2009) |
| 136 | +MacPro5,1 Mac Pro (Mid 2010) |
| 137 | +MacPro6,1 Mac Pro (Late 2013) |
| 138 | +MacPro7,1 Mac Pro (2019) |
| 139 | +Macmini3,1 Mac mini (Early 2009) |
| 140 | +Macmini4,1 Mac mini (Mid 2010) |
| 141 | +Macmini5,1 Mac mini (Mid 2011) |
| 142 | +Macmini5,2 Mac mini (Mid 2011) |
| 143 | +Macmini6,1 Mac mini (Late 2012) |
| 144 | +Macmini6,2 Mac mini (Late 2012) |
| 145 | +Macmini7,1 Mac mini (Late 2014) |
| 146 | +Macmini8,1 Mac mini (2018) |
| 147 | +Macmini9,1 Mac mini (M1, 2020) |
| 148 | +arm64 iPhone Simulator |
| 149 | +i386 iPhone Simulator |
| 150 | +iMac10,1 iMac (21.5-inch, Late 2009) |
| 151 | +iMac11,2 iMac (21.5-inch, Mid 2010) |
| 152 | +iMac11,3 iMac (27-inch, Mid 2010) |
| 153 | +iMac12,1 iMac (21.5-inch, Mid 2011) |
| 154 | +iMac12,2 iMac (27-inch, Mid 2011) |
| 155 | +iMac13,1 iMac (21.5-inch, Late 2012) |
| 156 | +iMac13,2 iMac (27-inch, Late 2012) |
| 157 | +iMac14,1 iMac (21.5-inch, Late 2013) |
| 158 | +iMac14,2 iMac (27-inch, Late 2013) |
| 159 | +iMac14,4 iMac (21.5-inch, Mid 2014) |
| 160 | +iMac15,1 iMac (Retina 5K, 27-inch, Late 2014) |
| 161 | +iMac16,1 iMac (21.5-inch, Late 2015) |
| 162 | +iMac16,2 iMac (Retina 4K, 21.5-inch, Late 2015) |
| 163 | +iMac17,1 iMac (Retina 5K, 27-inch, Late 2015) |
| 164 | +iMac18,1 iMac (21.5-inch, 2017) |
| 165 | +iMac18,2 iMac (Retina 4K, 21.5-inch, 2017) |
| 166 | +iMac18,3 iMac (Retina 5K, 27-inch, 2017) |
| 167 | +iMac19,1 iMac (Retina 5K, 27-inch, 2019) |
| 168 | +iMac19,2 iMac (Retina 4K, 21.5-inch, 2019) |
| 169 | +iMac20,1 iMac (Retina 5K, 27-inch, 2020) |
| 170 | +iMac20,2 iMac (Retina 5K, 27-inch, 2020) |
| 171 | +iMac21,1 iMac (24-inch, M1, 2021) |
| 172 | +iMac21,2 iMac (24-inch, M1, 2021) |
| 173 | +iMac9,1 iMac (20-inch, Early 2009) |
| 174 | +iMacPro1,1 iMac Pro (2017) |
| 175 | +iPad1,1 iPad |
| 176 | +iPad1,2 iPad |
| 177 | +iPad11,1 iPad mini (5th generation) |
| 178 | +iPad11,2 iPad mini (5th generation) |
| 179 | +iPad11,3 iPad Air (3rd generation) |
| 180 | +iPad11,4 iPad Air (3rd generation) |
| 181 | +iPad11,6 iPad (8th generation) |
| 182 | +iPad11,7 iPad (8th generation) |
| 183 | +iPad12,1 iPad (9th generation) |
| 184 | +iPad12,2 iPad (9th generation) |
| 185 | +iPad13,1 iPad Air (4th generation) |
| 186 | +iPad13,10 iPad Pro (12.9-inch) (5th generation) |
| 187 | +iPad13,11 iPad Pro (12.9-inch) (5th generation) |
| 188 | +iPad13,16 iPad Air (5th generation) |
| 189 | +iPad13,17 iPad Air (5th generation) |
| 190 | +iPad13,18 iPad (10th generation) |
| 191 | +iPad13,19 iPad (10th generation) |
| 192 | +iPad13,2 iPad Air (4th generation) |
| 193 | +iPad13,4 iPad Pro (11-inch) (3rd generation) |
| 194 | +iPad13,5 iPad Pro (11-inch) (3rd generation) |
| 195 | +iPad13,6 iPad Pro (11-inch) (3rd generation) |
| 196 | +iPad13,7 iPad Pro (11-inch) (3rd generation) |
| 197 | +iPad13,8 iPad Pro (12.9-inch) (5th generation) |
| 198 | +iPad13,9 iPad Pro (12.9-inch) (5th generation) |
| 199 | +iPad14,1 iPad mini (6th generation) |
| 200 | +iPad14,10 iPad Air 13-inch (M2) |
| 201 | +iPad14,11 iPad Air 13-inch (M2) |
| 202 | +iPad14,2 iPad mini (6th generation) |
| 203 | +iPad14,3 iPad Pro (11-inch) (4th generation) |
| 204 | +iPad14,4 iPad Pro (11-inch) (4th generation) |
| 205 | +iPad14,5 iPad Pro (12.9-inch) (6th generation) |
| 206 | +iPad14,6 iPad Pro (12.9-inch) (6th generation) |
| 207 | +iPad14,8 iPad Air 11-inch (M2) |
| 208 | +iPad14,9 iPad Air 11-inch (M2) |
| 209 | +iPad15,3 iPad Air 11-inch (M3) |
| 210 | +iPad15,4 iPad Air 11-inch (M3) |
| 211 | +iPad15,5 iPad Air 13-inch (M3) |
| 212 | +iPad15,6 iPad Air 13-inch (M3) |
| 213 | +iPad15,7 iPad (A16) |
| 214 | +iPad15,8 iPad (A16) |
| 215 | +iPad16,1 iPad mini (A17 Pro) |
| 216 | +iPad16,2 iPad mini (A17 Pro) |
| 217 | +iPad16,3 iPad Pro 11-inch (M4) |
| 218 | +iPad16,4 iPad Pro 11-inch (M4) |
| 219 | +iPad16,5 iPad Pro 13-inch (M4) |
| 220 | +iPad16,6 iPad Pro 13-inch (M4) |
| 221 | +iPad17,1 iPad Pro 11-inch (M5) |
| 222 | +iPad17,2 iPad Pro 11-inch (M5) |
| 223 | +iPad17,3 iPad Pro 13-inch (M5) |
| 224 | +iPad17,4 iPad Pro 13-inch (M5) |
| 225 | +iPad2,1 iPad 2 |
| 226 | +iPad2,2 iPad 2 |
| 227 | +iPad2,3 iPad 2 |
| 228 | +iPad2,4 iPad 2 |
| 229 | +iPad2,5 iPad mini |
| 230 | +iPad2,6 iPad mini |
| 231 | +iPad2,7 iPad mini |
| 232 | +iPad3,1 iPad (3rd generation) |
| 233 | +iPad3,2 iPad (3rd generation) |
| 234 | +iPad3,3 iPad (3rd generation) |
| 235 | +iPad3,4 iPad (4th generation) |
| 236 | +iPad3,5 iPad (4th generation) |
| 237 | +iPad3,6 iPad (4th generation) |
| 238 | +iPad4,1 iPad Air |
| 239 | +iPad4,2 iPad Air |
| 240 | +iPad4,3 iPad Air |
| 241 | +iPad4,4 iPad mini 2 |
| 242 | +iPad4,5 iPad mini 2 |
| 243 | +iPad4,6 iPad mini 2 |
| 244 | +iPad4,7 iPad mini 3 |
| 245 | +iPad4,8 iPad mini 3 |
| 246 | +iPad4,9 iPad mini 3 |
| 247 | +iPad5,1 iPad mini 4 |
| 248 | +iPad5,2 iPad mini 4 |
| 249 | +iPad5,3 iPad Air 2 |
| 250 | +iPad5,4 iPad Air 2 |
| 251 | +iPad6,11 iPad (5th generation) |
| 252 | +iPad6,12 iPad (5th generation) |
| 253 | +iPad6,3 iPad Pro (9.7-inch) |
| 254 | +iPad6,4 iPad Pro (9.7-inch) |
| 255 | +iPad6,7 iPad Pro (12.9-inch) |
| 256 | +iPad6,8 iPad Pro (12.9-inch) |
| 257 | +iPad7,1 iPad Pro (12.9-inch) (2nd generation) |
| 258 | +iPad7,11 iPad (7th generation) |
| 259 | +iPad7,12 iPad (7th generation) |
| 260 | +iPad7,2 iPad Pro (12.9-inch) (2nd generation) |
| 261 | +iPad7,3 iPad Pro (10.5-inch) |
| 262 | +iPad7,4 iPad Pro (10.5-inch) |
| 263 | +iPad7,5 iPad (6th generation) |
| 264 | +iPad7,6 iPad (6th generation) |
| 265 | +iPad8,1 iPad Pro (11-inch) |
| 266 | +iPad8,10 iPad Pro (11-inch) (2nd generation) |
| 267 | +iPad8,11 iPad Pro (12.9-inch) (4th generation) |
| 268 | +iPad8,12 iPad Pro (12.9-inch) (4th generation) |
| 269 | +iPad8,2 iPad Pro (11-inch) |
| 270 | +iPad8,3 iPad Pro (11-inch) |
| 271 | +iPad8,4 iPad Pro (11-inch) |
| 272 | +iPad8,5 iPad Pro (12.9-inch) (3rd generation) |
| 273 | +iPad8,6 iPad Pro (12.9-inch) (3rd generation) |
| 274 | +iPad8,7 iPad Pro (12.9-inch) (3rd generation) |
| 275 | +iPad8,8 iPad Pro (12.9-inch) (3rd generation) |
| 276 | +iPad8,9 iPad Pro (11-inch) (2nd generation) |
| 277 | +iPhone1,1 iPhone |
| 278 | +iPhone1,2 iPhone 3G |
| 279 | +iPhone10,1 iPhone 8 |
| 280 | +iPhone10,2 iPhone 8 Plus |
| 281 | +iPhone10,3 iPhone X |
| 282 | +iPhone10,4 iPhone 8 |
| 283 | +iPhone10,5 iPhone 8 Plus |
| 284 | +iPhone10,6 iPhone X |
| 285 | +iPhone11,2 iPhone XS |
| 286 | +iPhone11,4 iPhone XS Max |
| 287 | +iPhone11,6 iPhone XS Max |
| 288 | +iPhone11,8 iPhone XR |
| 289 | +iPhone12,1 iPhone 11 |
| 290 | +iPhone12,3 iPhone 11 Pro |
| 291 | +iPhone12,5 iPhone 11 Pro Max |
| 292 | +iPhone12,8 iPhone SE (2nd generation) |
| 293 | +iPhone13,1 iPhone 12 mini |
| 294 | +iPhone13,2 iPhone 12 |
| 295 | +iPhone13,3 iPhone 12 Pro |
| 296 | +iPhone13,4 iPhone 12 Pro Max |
| 297 | +iPhone14,2 iPhone 13 Pro |
| 298 | +iPhone14,3 iPhone 13 Pro Max |
| 299 | +iPhone14,4 iPhone 13 mini |
| 300 | +iPhone14,5 iPhone 13 |
| 301 | +iPhone14,6 iPhone SE (3rd generation) |
| 302 | +iPhone14,7 iPhone 14 |
| 303 | +iPhone14,8 iPhone 14 Plus |
| 304 | +iPhone15,2 iPhone 14 Pro |
| 305 | +iPhone15,3 iPhone 14 Pro Max |
| 306 | +iPhone15,4 iPhone 15 |
| 307 | +iPhone15,5 iPhone 15 Plus |
| 308 | +iPhone16,1 iPhone 15 Pro |
| 309 | +iPhone16,2 iPhone 15 Pro Max |
| 310 | +iPhone17,1 iPhone 16 Pro |
| 311 | +iPhone17,2 iPhone 16 Pro Max |
| 312 | +iPhone17,3 iPhone 16 |
| 313 | +iPhone17,4 iPhone 16 Plus |
| 314 | +iPhone17,5 iPhone 16e |
| 315 | +iPhone18,1 iPhone 17 Pro |
| 316 | +iPhone18,2 iPhone 17 Pro Max |
| 317 | +iPhone18,3 iPhone 17 |
| 318 | +iPhone18,4 iPhone Air |
| 319 | +iPhone2,1 iPhone 3GS |
| 320 | +iPhone3,1 iPhone 4 |
| 321 | +iPhone3,2 iPhone 4 |
| 322 | +iPhone3,3 iPhone 4 |
| 323 | +iPhone4,1 iPhone 4s |
| 324 | +iPhone5,1 iPhone 5 |
| 325 | +iPhone5,2 iPhone 5 |
| 326 | +iPhone5,3 iPhone 5c |
| 327 | +iPhone5,4 iPhone 5c |
| 328 | +iPhone6,1 iPhone 5s |
| 329 | +iPhone6,2 iPhone 5s |
| 330 | +iPhone7,1 iPhone 6 Plus |
| 331 | +iPhone7,2 iPhone 6 |
| 332 | +iPhone8,1 iPhone 6s |
| 333 | +iPhone8,2 iPhone 6s Plus |
| 334 | +iPhone8,4 iPhone SE (1st generation) |
| 335 | +iPhone9,1 iPhone 7 |
| 336 | +iPhone9,2 iPhone 7 Plus |
| 337 | +iPhone9,3 iPhone 7 |
| 338 | +iPhone9,4 iPhone 7 Plus |
| 339 | +iPod1,1 iPod touch |
| 340 | +iPod2,1 iPod touch (2nd generation) |
| 341 | +iPod3,1 iPod touch (3rd generation) |
| 342 | +iPod4,1 iPod touch (4th generation) |
| 343 | +iPod5,1 iPod touch (5th generation) |
| 344 | +iPod7,1 iPod touch (6th generation) |
| 345 | +iPod9,1 iPod touch (7th generation) |
| 346 | +x86_64 iPhone Simulator |
| 347 | +""" |
| 348 | +} |
0 commit comments