Apple iPhone 8 (apple-d20)
Appearance
	
	
(Redirected from Apple iPhone 8 (apple-iphone10,1))
| This device is supported as part of a generic port. Refer to Apple_Generic_iDevice_(apple-idevice) for installation instructions and more information. | 
|  iPhone 8 | |
| Manufacturer | Apple | 
|---|---|
| Name | iPhone 8 | 
| Codename | apple-d20 | 
| Released | 2017 | 
| Type | handset | 
| Hardware | |
| Chipset | Apple A11 Bionic | 
| CPU | 2.39 GHz hexa-core 64-bit | 
| GPU | Custom Tri-Core Apple GPU | 
| Display | 750x1334 (326 ppi) Retina IPS LCD | 
| Storage | 64GB, 128GB, 256GB | 
| Memory | 2GB | 
| Architecture | aarch64 | 
| Software | |
| Original software The software and version the device was shipped with. | iOS 11 | 
| Extended version The most recent supported version from the manufacturer. | iOS 16.7.11 | 
| postmarketOS | |
| Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. | no | 
| Generic port | Apple_Generic_iDevice_(apple-idevice) | 
| Device package |  device-Apple_Generic_iDevice_apple-idevice | 
| Kernel package |  linux-apple-d20 | 
| Flashing Whether it is possible to flash the device with  pmbootstrap flasher. | Untested | 
|---|---|
| USB Networking After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system). | Untested | 
| Battery Whether charging and battery level reporting work. | Untested | 
| Screen Whether the display works; ideally with sleep mode and brightness control. | Untested | 
| Touchscreen | Untested | 
| Keyboard Whether the built-in physical keyboard works. | Untested | 
| Touchpad Whether the built-in touchpad works. | Untested | 
| Multimedia | |
| 3D Acceleration | Untested | 
| Audio Audio playback, microphone, headset and buttons. | Untested | 
| Camera | Untested | 
| IR TX | Untested | 
| Connectivity | |
| WiFi | Untested | 
| Bluetooth | Untested | 
| GPS | Untested | 
| NFC Near Field Communication | Untested | 
| Modem | |
| Calls | Untested | 
| SMS | Untested | 
| Mobile data | Untested | 
| Miscellaneous | |
| FDE Full disk encryption and unlocking with unl0kr. | Untested | 
| USB-A Whether the full-sized USB-A port works. | Untested | 
| USB OTG USB On-The-Go or USB-C Role switching. | Untested | 
| HDMI/DP Video and audio output with HDMI or DisplayPort. | Untested | 
| Sensors | |
| Accelerometer Handles automatic screen rotation in many interfaces. | Untested | 
| Magnetometer Sensor to measure the Earth's magnetism | Untested | 
| Ambient Light Measures the light level; used for automatic screen dimming in many interfaces. | Untested | 
| Proximity | Untested | 
| Hall Effect Measures magnetic fields; usually used as a flip cover sensor | Untested | 
| Barometer Sensor to measure air pressure | Untested | 
| Power Sensor Sensor to monitor current, voltage and power. Not fuel gauge! | Untested | 
Contributors
Users owning this device
- DeGAppitated
- Welpnotcopilot (Notes: iOS 16.7.11)
Mainline
A mainline fork for this device is available here with further instructions here. Still needs to be tested and ported to postmarketOS.
Booting a modified PostmarketOS Initramfs
Required files
- Checkra1n 1337
- PongoOS (with BootM) (Prebuilt binary)
- A supported kernel
- m1n1-idevice
- pongoterm
- initramfs.gz
Instructions
Building things
This section assumes you're on a linux system with all dependencies installed. (Possible on CachyOS as of 30. June, 2025.)
Linux
# Get the Kernel Config wget https://raw.githubusercontent.com/HoolockLinux/docs/refs/heads/master/config_16k mv config_16k .config # With GCC: make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image.gz dtbs # With CLANG: make -j$(nproc) ARCH=arm64 LLVM=1 Image.gz dtbs
pongoterm
# Get code wget https://github.com/checkra1n/PongoOS/raw/iOS15/scripts/pongoterm.c # Make sure to install libusb-1.0 gcc pongoterm.c -DUSE_LIBUSB -Os -lusb-1.0 -o pongoterm
Creating a m1n1 blob
cat m1n1.bin <(echo 'chosen.bootargs=loglevel=7 pmos.nosplash') \ <path to>/*.dtb \ <path to>/Image.gz \ <path to>/initramfs.new.gz > m1n1-linux.bin
Booting it
Booting PongoOS
Firstly, Enter DFU mode. This can be done using Palera1n.
palera1n -Dl
Sending and booting the Linux, initramfs images
printf '/send <path to>/m1n1-linux.bin\nbootm\n' | sudo <path to>/pongoterm
What do to now?
Currently, not much is possible.
Accessing the terminal
telnet 172.16.42.1 23
Unpacking and repacking the initramfs
You'd want to do this to add more software / modify the filesystem.
# Set up working directory mkdir initramfs mv initramfs.gz initramfs/ cd initramfs/ # Unpack the initramfs zcat initramfs.gz | sudo cpio -iv --make-directories # Remove the residue rm initramfs.gz # Do your modifications here! # E.G. sudo mv $(which neowofetch) bin/neowofetch # Re-pack it! find . | sudo cpio -ov --format=newc | gzip -c -1 > initramfs.gz
At this point, you can re-make the m1n1 blob and re-boot your iPhone 8 and you'll use the new initramfs.