Now let’s talk about known keys and values for them:
0x0 — iBootState
Speaks for itself
Values:
0x1 — iBootDebug
The most interesting key for us. That’s the one that can enable debug UARTs and several other things
Values:
kPowerNVRAMiBootDebugIAPSerial (1 << 0)
Enables primary debug UART (defined by DEBUG_SERIAL_PORT which is in its order defined by every iBoot target’s config header)
That’s what we need to set to get UART everywhere
kPowerNVRAMiBootDebugAltSerial (1 << 1)
Enables secondary debug UART (defined by DEBUG_SERIAL_PORT2)
No target in the leaked iBoot source code defines DEBUG_SERIAL_PORT2
kPowerNVRAMiBootDebugJtag (1 << 2)
No, it doesn’t enable SWD-debugging unfortunately, but enables SHMCON (High-level shared memory console interface)
Not sure what that is exactly, must be another debug interface
The rest of the iBootDebug values don’t seem to do anything interesting
0x2 — iBootStage
Speaks for itself
Values:
0x3 — iBootErrorCount
Remember that iBoot prints count of boot failures/panics in the end of its log? That’s where these counts are stored — lower 4 bits for boot failures and upper 4 bits for panics. That’s why they can’t be higher than 15
Something related to AMC — Apple Memory Controller
0x9 — iBootBootFlags0
0xA — iBootBootFlags1
Related to PMU
0xB— iBootEnterDFU
Another interesting key. If set to 0xA0, then on next boot LLB will enter DFU. Works since iOS 8
The easiest way to access Power NVRAM is DEBUG iBoot (or old enough RELEASE one with patched permission checks):
In case your device is too new to run iPhoneOS 3.0- iBoot and you haven’t got a DEBUG-one, soon I’ll post an instruction how to access it without these
• • •
Missing some Tweet in this thread? You can try to
force a refresh
Here is my little thread about yet another bug I found in A6 bootrom (and probably any other that boots from H2FMI PPN NAND)
As always, absolutely useless on its own
Look at this picture. The bootrom has just read LLB from a bootpage and is now ready to create a Memz structure out of it. Address - 0x10000000, size - 0x24C00, flags - IMAGE_OPTION_LOCAL_STORAGE
Since the size was 0x24C00, we expect to see nothing on range of 0x10024C00 - 0x10060000 (the end of load area), right? Wrong!
Although that’s most likely not your case if you got such a cable, but I did manage to break firmware on mine completely. So let’s start with restoring it
Both generations of Kong make use of NXP LPC1768 MCU (Cortex-M3) (along with Xilinx Spartan 6 FPGA, by the way), that can be reflashed over SWD
Back in February 2019, someone told me about “SHSH tag length underflow”, that allows “arbitrary memset”. The person failed to tell me which ROM it’s for
But for A4 ROM I found something similar. Look at this line of code:
Here is my little thread about Lightning video adapters – also known as Haywire – which are actually computers that feature Apple Secure Boot and run Darwin kernel
There’re 2 kinds of Haywire:
1. Lightning Digital AV Adapter (b137ap/iAccy1,1) – Lightning to HDMI adapter, supports both video and audio
2. Lightning to VGA Adapter (b165ap/iAccy1,2) – doesn’t support audio output for obvious reason
I was planning to keep this knowledge private, but damn it. This is a thread about Apple SWD cables, some things they can do and how to use them
For now I only have got KongSWD, so everything below applies to this type of cable first of all
f you’re reading this thread, you’ve most likely seen many photos with these weird Apple internal cables posted here, on Twitter, — Gorilla, Kong, Kanzi, Chimp, Flamingo, etc.