OnePlus 5 (oneplus-cheeseburger)
![]() | |
Manufacturer | OnePlus |
---|---|
Name |
5/ 5T |
Codename | oneplus-cheeseburger, oneplus-dumpling |
Released | 2017 |
Hardware | |
Chipset | Qualcomm MSM8998 Snapdragon 835 |
CPU | 4x 2.45 GHz Cortex-A73 + 4x 1.90 GHz Cortex-A53 |
GPU | Adreno 540 |
Display | 1080x1920/1080x2160 Optic AMOLED (5/5T) |
Storage | 64 or 128 GB UFS 2.1 |
Memory | 6 or 8 GB LPDDR4X RAM |
Architecture | aarch64 |
Software | |
Original software | Android 7.1.1 (up to Android 9) on Linux 4.4 |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | partial |
Flashing |
Works |
---|---|
USB Networking |
Works |
Internal storage |
No data |
SD card |
No data |
Battery |
Broken |
Screen |
Works |
Touchscreen |
Works |
Multimedia | |
3D Acceleration |
Broken |
Audio |
Broken |
Camera |
Broken |
Camera Flash |
No data |
Connectivity | |
WiFi |
Broken |
Bluetooth |
Works |
GPS |
No data |
NFC |
No data |
Modem | |
Calls |
Broken |
SMS |
Broken |
Mobile data |
Broken |
Miscellaneous | |
FDE |
Broken |
USB OTG |
Works |
HDMI/DP |
No data |
Sensors | |
Accelerometer |
No data |
Magnetometer |
No data |
Ambient Light |
No data |
Proximity |
No data |
Hall Effect |
No data |
Haptics |
No data |
Barometer |
No data |
Contributors
- deathmist
- R0551 (mainlining)
Maintainer(s)
deathmist
Users owning this device
- Bdju (Notes: Android backup)
- Cherryband
- CubeCat (Notes: Tinkering device, battery is pretty bad)
- Dartvader316 (Notes: 8/128 GB)
- Deathmist (Notes: 8/128 GB model)
- Double-hash (Notes: 8/128 GB, damaged usb-c port)
- EspiDev (Notes: 6/64 GB Plasma Mobile)
- Frost I7 (Notes: AlphaDroid 3.1)
- Langfingaz (Notes: Running LineageOS 20)
- Mtek89 (Notes: Running LineageOS 19.1, girlfriend's phone)
- Poipa
Fastboot mode
The OnePlus 5/5T uses fastboot
as its flashing protocol.
To enter fastboot mode, hold FastBoot Mode
can be seen on the display.
Installation
Unlocking the bootloader
If your bootloader is still locked at this point, you need to unlock it to proceed.
WARNING: Doing this WILL delete all your data on the device as a security precaution, so backup all your data before continuing!
There are plenty of guides online describing how to do this, but the run-down should be as follows:
- Enable
Developer options
by tapping the build number 7 times inSettings
>About
- Go back and enter
Developer options
to enable bothUSB Debugging
andOEM Unlocking
- Install the
android-tools-fastboot
orandroid-tools
package depending on your machine's distro - Power down your OnePlus 5 & enter
fastboot
mode using the instructions above this section - Open a terminal window and verify your phone is displayed under
fastboot devices
to continue - Run
fastboot oem unlock
and follow the instructions on screen. Navigate menus with and select an option with the button. - Congrats, you should now have an unlocked bootloader on your device!
Setup build env & create flashables
Install pmbootstrap
on your build machine and start following the steps below:
pmbootstrap init pmbootstrap install
NOTICE: Both phosh
and plasma-mobile
are NOT working at all currently; this should be solved later by mainlining and using the freedreno
DRM driver for graphics & mesa
3D acceleration.
Flashing the device
To begin the flashing process, boot your device to fastboot
mode (if you haven't already). The standard flashing process goes as follows:
pmbootstrap flasher flash_rootfs pmbootstrap flasher flash_kernel sudo fastboot reboot
If you instead want to install the pmOS root filesystem on userdata
partition (around 56 or 120 GB) instead of the system
partition (3 GB), run the following instead as the flash_rootfs command:
pmbootstrap flasher flash_rootfs --partition userdata
During e.g. rapid kernel development you can simply boot the new image instead of always flashing to the device boot
partition like so:
pmbootstrap flasher boot
LEDs
Currently you can control a whole bunch of the LEDs present on the device via sysfs
by writing values to their brightness control files as root
:
Screen brightness (0-255) can be adjusted:
echo 255 > /sys/class/leds/lcd-backlight/brightness
The backlight for physical buttons can be enabled (1) or disabled (0):
echo 1 > /sys/class/leds/button-backlight/brightness
Notification light color & brightness (0-255) are controllable:
- Red:
echo 255 > /sys/class/leds/red/brightness
- Green:
echo 255 > /sys/class/leds/green/brightness
- Blue:
echo 255 > /sys/class/leds/blue/brightness
Control of the rear camera flashlight (/sys/class/leds/torch-light*/brightness
) seems to be broken via sysfs anyway right now.
Partition layout
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sda
Disk /dev/sda: 113.55 GiB, 121911640064 bytes, 29763584 sectors Disk model: KLUDG8V1EE-B0C1 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 8192 bytes / 8192 bytes Disklabel type: gpt Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20 Device Start End Sectors Size Name /dev/sda1 6 7 2 8K ssd /dev/sda2 8 8199 8192 32M persist /dev/sda3 8200 73735 65536 256M cache /dev/sda4 73736 73991 256 1M misc /dev/sda5 73992 74119 128 512K keystore /dev/sda6 74120 74247 128 512K frp /dev/sda7 74248 76807 2560 10M oem_dycnvbk /dev/sda8 76808 79367 2560 10M oem_stanvbk /dev/sda9 79368 79623 256 1M param /dev/sda10 79624 81647 2024 7.9M reserve1 /dev/sda11 81648 85695 4048 15.8M reserve2 /dev/sda12 85696 85823 128 512K config /dev/sda13 85824 29763578 29677755 113.2G userdata
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdb
Disk /dev/sdb: 4 MiB, 4194304 bytes, 1024 sectors Disk model: KLUDG8V1EE-B0C1 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 8192 bytes / 8192 bytes Disklabel type: gpt Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20 Device Start End Sectors Size Name /dev/sdb1 6 1018 1013 4M xbl
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdc
Disk /dev/sdc: 4 MiB, 4194304 bytes, 1024 sectors Disk model: KLUDG8V1EE-B0C1 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 8192 bytes / 8192 bytes Disklabel type: gpt Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20 Device Start End Sectors Size Name /dev/sdc1 6 1018 1013 4M xblbak
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdd
Disk /dev/sdd: 128 MiB, 134217728 bytes, 32768 sectors Disk model: KLUDG8V1EE-B0C1 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 8192 bytes / 8192 bytes Disklabel type: gpt Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20 Device Start End Sectors Size Name /dev/sdd1 6 13 8 32K reserve /dev/sdd2 14 14 1 4K cdt /dev/sdd3 15 270 256 1M ddr /dev/sdd4 271 32762 32492 126.9M last_parti
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sde
Disk /dev/sde: 4 GiB, 4294967296 bytes, 1048576 sectors Disk model: KLUDG8V1EE-B0C1 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 8192 bytes / 8192 bytes Disklabel type: gpt Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20 Device Start End Sectors Size Name /dev/sde1 6 133 128 512K rpm /dev/sde2 134 261 128 512K rpmbak /dev/sde3 262 773 512 2M tz /dev/sde4 774 1285 512 2M tzbak /dev/sde5 1286 1413 128 512K hyp /dev/sde6 1414 1541 128 512K hypbak /dev/sde7 1542 1545 4 16K sec /dev/sde8 1546 1673 128 512K pmic /dev/sde9 1674 1801 128 512K pmicbak /dev/sde10 1802 29961 28160 110M modem /dev/sde11 29962 34057 4096 16M dsp /dev/sde12 34058 35081 1024 4M mdtpsecapp /dev/sde13 35082 36105 1024 4M mdtpsecappbak /dev/sde14 36106 36361 256 1M dip /dev/sde15 36362 44553 8192 32M mdtp /dev/sde16 44554 46601 2048 8M abl /dev/sde17 46602 48649 2048 8M ablbak /dev/sde18 48650 52745 4096 16M LOGO /dev/sde19 52746 69129 16384 64M boot /dev/sde20 69130 85513 16384 64M boot_aging /dev/sde21 85514 871945 786432 3G system /dev/sde22 871946 888329 16384 64M recovery /dev/sde23 888330 888330 1 4K devinfo /dev/sde24 888331 888586 256 1M bluetooth /dev/sde25 888587 888714 128 512K keymaster /dev/sde26 888715 888842 128 512K keymasterbak /dev/sde27 888843 888970 128 512K cmnlib /dev/sde28 888971 889098 128 512K cmnlibbak /dev/sde29 889099 889226 128 512K cmnlib64 /dev/sde30 889227 889354 128 512K cmnlib64bak /dev/sde31 889355 889418 64 256K apdp /dev/sde32 889419 889482 64 256K msadp /dev/sde33 889483 889483 1 4K dpo /dev/sde34 889484 897839 8356 32.7M splash /dev/sde35 897840 897840 1 4K limits /dev/sde36 897841 898096 256 1M toolsfv /dev/sde37 898097 900144 2048 8M logfs /dev/sde38 900145 900656 512 2M sti /dev/sde39 900657 900688 32 128K devcfg /dev/sde40 900689 917072 16384 64M logdump /dev/sde41 917073 917104 32 128K storsec /dev/sde42 917105 917136 32 128K storsecbak /dev/sde43 917137 917648 512 2M fw_4j1ed /dev/sde44 917649 918160 512 2M fw_8v1ee /dev/sde45 918161 918672 512 2M fw_4g9n4 /dev/sde46 918673 919184 512 2M fw_4t0n8 /dev/sde47 919185 1048570 129386 505.4M minidump /dev/sde48 927377 927377 0 0B last_parti
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdf
Disk /dev/sdf: 1.51 GiB, 1610612736 bytes, 393216 sectors Disk model: KLUDG8V1EE-B0C1 Units: sectors of 1 * 4096 = 4096 bytes Sector size (logical/physical): 4096 bytes / 4096 bytes I/O size (minimum/optimal): 8192 bytes / 8192 bytes Disklabel type: gpt Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20 Device Start End Sectors Size Name /dev/sdf1 6 517 512 2M modemst1 /dev/sdf2 518 1029 512 2M modemst2 /dev/sdf3 1030 1541 512 2M fsg /dev/sdf4 1542 1542 1 4K fsc /dev/sdf5 1543 1670 128 512K md5 /dev/sdf6 1671 263814 262144 1G vendor /dev/sdf7 263815 393182 129368 505.4M reserve3 /dev/sdf8 267863 267863 0 0B last_parti
Mainline kernel
This is heavily W.I.P currently, but it's coming along quite nicely. Here is an imgur gallery with some of the progress showcased!
Here's a list of stuff that is currently (Linux 5.6.13) known to be working (in at least some capacity):
- UFS internal storage (
CONFIG_PHY_QCOM_UFS=y
) - Display (via
simplefb
&CONFIG_FB_SIMPLE=y
) - Xorg & Wayland (tested with MATE & Weston respectively)
- Bluetooth (requires
crbtfw21.tlv
andcrnv21.bin
blobs from linux-firmware + arc-update add bluetoothd default
in userspace along with the relevantbluez
packages) - Touchscreen (using mainline Synaptics RMI4 I2C driver; definition in DTS + relevant defconfig changes)
- Anbox (install
postmarketos-anbox
; defconfig changes I made for LXC stuff) - Power button (in DTS)
- Volume keys (added under MSM8998 PMIC GPIOs)
- Keypad backlight (only applicable to regular OnePlus 5; added under MSM8998 PMIC GPIOs & controllable with
/sys/class/leds/button-backlight/brightness
)
And that's about it for now. Next up would be USB as I've been doing this blind and don't exactly have a great setup to debug stuff / get logs :p
Check the links below for source code.
Building
It's easiest to build mainline (for pmOS anyway) with pmbootstrap, so get that setup and remember the install location (in this guide ~/pmOS/pmbootstrap
is an example).
After you've run through the installation steps found on this site at least once please pmbootstrap extract
& save the produced downstream boot.img
to a known location as we'll reuse the initramfs found inside later.
Next start following the instructions below:
git clone https://github.com/JamiKettunen/linux-mainline-oneplus5 cd linux-mainline-oneplus5/ source ~/pmOS/pmbootstrap/helpers/envkernel.sh # adjust to match where you've cloned PMB yourself make defconfig make -j`nproc`
Boot image generation
Now that the kernel image and DTBs have been built we can assemble a bootable Android-friendly boot.img (assuming you're still in the root of the cloned kernel dir):
pmbootstrap chroot -- apk add abootimg android-tools mkbootimg dtbtool export DEVICE=`pmbootstrap config device | cut -d'-' -f2` WORK=`pmbootstrap config work` PMOS_BOOT_IMG_PATH="~/pmOS/downstream-boot.img" export TEMP="$WORK/chroot_native/tmp/mainline/" DTB="$PWD/.output/arch/arm64/boot/dts/qcom/msm8998-$DEVICE.dtb" rm -r "$TEMP"; mkdir -p "$TEMP" cat .output/arch/arm64/boot/Image.gz "$DTB" > "$TEMP/Image.gz-dtb" cp "$PMOS_BOOT_IMG_PATH" "$TEMP/boot.img" # replace "$PMOS_BOOT_IMG_PATH" with the known location of a pmOS downstream boot.img pmbootstrap chroot -- abootimg -u /tmp/mainline/boot.img -k /tmp/mainline/Image.gz-dtb -c "bootsize=67108864"
At this point you get to choose whether to boot
the new kernel image or more "permanently" flash
it on the device's boot partition instead ^^
Boot: pmbootstrap chroot -- fastboot boot /tmp/mainline/boot.img
Flash: pmbootstrap chroot -- fastboot flash boot /tmp/mainline/boot.img
NOTE: Sometimes running pmbootstrap flasher list_devices
once is needed to get the device detected in fastboot mode!
Links
- pmaports!908 Initial merge request
- pmaports!1110 OnePlus 5T merge request
- OnePlus 5 device package
- OnePlus 5T device package
- Shared kernel package
- LineageOS downstream kernel fork
- Device mainline kernel W.I.P source (deathmist)
- Linux mainline kernel source (torvalds)