This is a documented list of known NonUI firmwares, used by Apple engineers in California to do engineering tests on prototype devices and also by factory workers on production ones during manufacturing. NonUI is based on production iOS ones, but adapted for internal engineering tests, development and debugging.
An iPhone 4 deathstar prototype. These models usually boot NonUI build
8A133.
An iPhone 12 Pro prototype booted to NonUI build
18A23581a.
They are known as "NonUI (No User Interface)" builds, because most applications are command line ones and the UI is different to that of a regular device. The SpringBoard replacement, named SwitchBoard, allows the launching of a GUI for some of those applications. Unlike production iOS firmwares, NonUI ones have the following differences:
- DEVELOPMENT fused bootloaders in
\Firmware\dfu\ and \Firmware\all_flash\all_flash.[board codename].factory[fa/sa]\.
- FACTORY fused SEP firmware in
\Firmware\all_flash\all_flash.[board codename].factory[fa/sa]\
- DEVELOPMENT fused kernelcache with more symbols (located in
/System/Library/Caches/com.apple.kernelcaches on the filesystem), and with individual kexts in /System/Library/Extensions.
- DEVELOPMENT dyld_shared_cache in
/System/Library/Caches/com.apple.dyld.
- DEBUG fused baseband firmware in
\Firmware\.
- Skankwerk (gear) logo image file in
\Firmware\all_flash\all_flash.[board codename].factoryfa\.
/AppleInternal folder, which the hierarchy inside get priority over hierarchy in /.
- No SpringBoard, requires the use of daemons to launch SwitchBoard.app as a multi-app launcher instead.
/usr and subfolders contain many UNIX command line utilities.
- SSH daemon is pre-installed as dropbear, can be connected to over usb
- Boot loader passes arguments to kernel (unlike RELEASE boot loaders as of iOS 5.0) which makes it easy to disable AMFI
- It has some additional Private Frameworks in
/System/Library/PrivateFrameworks for internal GUI apps and command line utilities.
- Most internal applications require the use of SkankKit (replacement for UIKit in NonUI firmwares) to produce special layers such as text on the framebuffer.
Unlike regular iOS Firmwares, NonUI ones are distributed in "restore bundles". Restore bundles are like contents of IPSW files which can be restored on devices using internal restore software such as PurpleRestore or AirSwitch. Release and NonUI "restore bundles" have the same packaging structure (bootloaders, kernel, restore ramdisk, update ramdisk and root filesystem), but can also include other files such as debug and development variants of each respective component.
Some interesting facts about NonUI
- Design: Apple seems to use the same GUI design from the production firmware to the factory one.
Production iOS 1.x to 6.x skeuomorphism design is also present on 1.x to 7.x NonUIs, but seems more excessive than production ones. For example, the "skankwerk" boot logo represents a real gear and many GUI icons are realistic or simply photos of real life things (especially in Operator). For newer versions, production iOS 8.x and above flat design is mostly used in 8.x and above NonUIs. For example, the new "Skankwerk" boot logo is a flat, simple white gear. Some newer internal applications like Earthbound also use a "flat" design.
- Other: The "skank" word is used to name multiple elements of NonUIs. For example, there is "SkankPhone", "SkankBattery" (the green battery shown in SwitchBoard), "Skankwerk" logo, "SkankKit" framework, "PurpleSkank" (used by BurnIn) and most likely others. The "skank" word seems to be a reference to "Skunkworks" projects, which are secrecy projects that are usually innovative. Read more about "Skunkworks" on Wikipedia.
iPhones
iPhone 2G
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 1.0
|
1A420
|
Alpine
|
03.06.01_G[1]
|
Originally available here, but was soon taken down.
|
| 4A57
|
04.02.13_G
|
-
|
| 1.1.2
|
3B48
|
04.02.13_G
|
-
|
| 1.1.3
|
4A102a
|
04.04.05_G
|
-
|
iPhone 3G
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 2.0.2
|
5C274a
|
Big Bear?
|
?
|
-
|
iPhone 3GS
iPhone 4
iPhone 4S
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 5.0
|
9A2264r
|
TellurideNanshan
|
?
|
-
|
| 6.0
|
10A23941a
|
SundanceNanshan
|
2.0.0.2
|
-
|
iPhone 5
iPhone 5c
iPhone 5s
iPhone 6
iPhone 6 Plus
iPhone 6s
iPhone 6s Plus
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 9.0
|
13A22120w
|
Monarch?
|
?
|
-
|
| 13A23161b
|
MonarchNanshan
|
?
|
-
|
iPhone SE (1st generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 9.3
|
13E180
|
Eagle?
|
4.70.10
|
Found on an FCC test report [7]
|
iPhone 7
iPhone 7 Plus
iPhone 8
iPhone 8 Plus
iPhone X
iPhone XR
iPhone XS
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 12.0
|
16A93020u
|
PeaceAni
|
?
|
-
|
iPhone XS Max
iPhone 12 Pro
iPhone 12 Pro Max
iPads
iPad (1st generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 3.2
|
7B3341e
|
Wildcat
|
?
|
-
|
| 7B5286a
|
?
|
Found by SonnyDickson, documented on 9to5mac
|
iPad (2nd generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 4.3
|
8F3178a
|
Durango
|
?
|
-
|
| 8F3191d
|
?
|
-
|
iPad (3rd generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 5.1
|
9B87
|
Hoodoo?
|
?
|
Found on an FCC test report [10]
|
iPad (4th generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 6.0
|
10A33901a
|
Sundance?
|
?
|
-
|
iPad (5th generation)
iPad (6th generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 11.3
|
15E61570l
|
Emet?
|
?
|
Found on an FCC test report [11]
|
| 15E61570m
|
?
|
This iPad is the only device that started with 11.3, so it is safe to assume it is this device. From @mcg29_ on Twitter
|
iPad mini (1st generation)
iPad mini (2nd generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 7.0.3
|
11B64940j
|
InnsbruckTaos?
|
?
|
-
|
| 10.3
|
14E62210l
|
Erie?
|
?
|
-
|
iPad mini (4th generation)
iPad mini (5th generation)
iPad Air (1st generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 7.0
|
11B34210y
|
InnsbruckTaosYabuli
|
?
|
This is for the iPad4,2 model.
|
| 7.0.1
|
11B34640l
|
Innsbruck?
|
?
|
-
|
iPad Air (2nd generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 8.1
|
12B331
|
OkemoTaos?
|
?
|
Found on an FCC test report [15]
|
| 12B33610i
|
?
|
From journaldulapin.com [16].
|
iPad Air (3rd generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 12.2
|
16E31120m
|
PeaceEYabuli
|
?
|
-
|
| 16E31520i
|
?
|
Found on an FCC test report [17]
|
iPad Pro (unreleased)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 9.0
|
13A165
|
Monarch
|
2.15.00 (debug)
|
This comes as a Restore Bundle, and is for J98/99AP
|
iPad Pro (9.7-inch) (1st generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 9.3
|
13E31820k
|
Eagle?
|
?
|
Found on an FCC test report [18]
|
iPad Pro (12.9-inch) (1st generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 9.1
|
13B72
|
Boulder?
|
?
|
Found on an FCC test report [19]
|
iPad Pro (12.9-inch) (2nd generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 10.3
|
14E232
|
Erie?
|
?
|
Found on an FCC test report [20]
|
| 14E32020u
|
?
|
Found on an FCC test report [21]
|
iPad Pro (10.5-inch)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 10.3
|
14E22020w
|
Erie?
|
?
|
Found on an FCC test report [22]
|
iPad Pro 12.9 (5th generation)
| Version
|
Build
|
Codename
|
Baseband
|
Comments
|
| 14.5
|
18E20700y
|
AzulE?
|
?
|
Found on a FCC test report [23]
|
iPods
iPod touch (1st generation)
| Version
|
Build
|
Codename
|
Comments
|
| 1.1
|
3A53
|
Snowbird
|
Found on an FCC test report [24]
|
iPod touch (3rd generation)
iPod touch (4th generation)
iPod touch (5th generation)
| Version
|
Build
|
Codename
|
Comments
|
| 6.0
|
10A351
|
Sundance?
|
Found on an FCC test report [25]
|
iPod touch (6th generation)