Apple iPhone 8 (apple-d20)
Appearance
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 |
![]() |
Kernel package |
![]() |
Flashing 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 Charging and battery level reporting works |
Untested
|
Screen Display works. Ideally with sleep mode and brightness control. |
Untested
|
Touchscreen |
Untested
|
Keyboard Build in physical keyboard |
Untested
|
Touchpad Build in Touchpad |
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 Full-sized USB-A port works (Usually applicable to SBCs and laptops). |
Untested
|
USB OTG USB On-The-Go or USB-C Role switching |
Untested
|
HDMI/DP Video and audio output with HDMI or Display Port works. |
Untested
|
Sensors | |
Accelerometer Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile |
Untested
|
Magnetometer Sensor to measure magnetism |
Untested
|
Ambient Light |
Untested
|
Proximity |
Untested
|
Hall Effect Also known as 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
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.