From The iPhone Wiki
Jump to: navigation, search

This article discusses software internally used by Apple.

Acquiring a copy without Apple's consent is illegal and may result in being scammed.
Engaging in illegal activity is not condoned. This information is provided for educational purposes only.

"Drag To Unlock" screen. Text is "Drag To Unlock" and "Shut Down"
After "Drag To Unlock" screen, when you "Drag To Unlock", you get this screen. In order, "Start BurnIn", "Reset Test Environment", and "Quit"
BurnIn running tests after pressing the "Start BurnIn" button.
BurnIn when all tests are finished and device has passed each one successfully.
BurnIn when all tests are finished and device has failed one or more tests.

BurnIn is an internal diagnostics tool used used by Apple. It is used to verify whether all device hardware components are in proper working order. It is found in nearly all internal NonUI firmwares, and is launched via SwitchBoard.app. The BurnIn application is located within AppleInternal/Applications/SwitchBoard/BurnIn.app, and its icon is that of a flame.

Upon launch, the application will display either two or three buttons.

  • The first button labeled "Start BurnIn" runs selected BurnIn tests. It's worth noting that on firmwares after 8A133 BurnIn automatically runs Inferno (utility), disabling any ways of interacting with the device until tests are completed. On Apex 8A133, however, BurnIn instead launches its rarely-seen user interface, which is rather basic.

Its user interface features a spinner whilst the tests are being performed, as well as a timer that measures how long BurnIn tests have been running. Upon completion the user will be greeted with either a green screen, meaning the test was completed successfully, or a red screen indicating failures, which are also numbered. In both cases the user is instructed to collect logs. This UI is not found in later firmwares.

  • The second button labeled "Reset Test Environment" cancels any tests currently in progress. It cannot, however, close Inferno if it's currently running.
  • The third button labeled "Settings" is enabled on certain versions of BurnIn/certain NonUI firmwares, whereas it does not show up in others. If accessible, this button allows the user to select which tests BurnIn is to perform.


At boot, the /AppleInternal/Applications/SwitchBoard/BurnIn.app/BurnIn executable will run. It checks /AppleInternal/Diags/purpleskank/config.plist for configuration information, such as version (v3.0 in this case), where to store the logs (/Library/Logs/BurnIn/ in this case), what level to set the backlight to, and also, some kind of cleanup script is defined (/AppleInternal/Diags/Utilities/burnin_cleanup.sh). What it actually does is still not known though. Two log files are also left by it, by doing whatever is done. They are /Library/Logs/BurnIn/burning_log.xml and /Library/Logs/BurnIn/burnin_log.txt.

On older iPhone prototypes, BurnIn is launched by SkankPhone, a SpringBoard replacement. It starts /AppleInternal/Diags/purpleskank/factoryharness, which loads the configuration from config.plist file in the same directory. factoryharness loads the index.plist file from location specified in config.plist (default is /AppleInternal/Diags/purpleskank/tables/index.plist) and begins to execute the tests specified in index.plist. When tests are successful, logs from burnin process are saved to /AppleInternal/Diags/Logs/ (or to other directory that can be set in config.plist). In case of failure, a failures.plist file is created in Logs directory. If Burnin process has not been completed, file state.plist is parsed by factoryharness and it continues the burnin process. If burnin process has failed, SkankPhone shows a FAILURE screen and displays the contents of burnin_log.txt. To get rid of that screen, the user must select the Reset Test Environment option in SkankPhone, which executes /AppleInternal/Diags/Utilities/burnin_cleanup.sh.

External Links