OnePlus 5 (oneplus-cheeseburger): Difference between revisions
m →Links: Fixup links, mention 5T device pkg |
m →Mainline kernel: Update info and links to linux-5.6 branch commits :^) |
||
Line 282: | Line 282: | ||
This is heavily W.I.P currently, but it's coming along quite nicely. [https://imgur.com/a/Tb3LAK7 Here is an imgur gallery with some of the progress showcased]! | This is heavily W.I.P currently, but it's coming along quite nicely. [https://imgur.com/a/Tb3LAK7 Here is an imgur gallery with some of the progress showcased]! | ||
Here's a list of stuff that is currently (Linux | Here's a list of stuff that is currently (Linux 5.6) known to be working (in at least some capacity): | ||
* The kernel itself stays booted (i.e. no random panics) and is "stable" | * The kernel itself stays booted (i.e. no random panics) and is "stable" | ||
* UFS internal storage (<code>CONFIG_PHY_QCOM_UFS=y</code>) | * UFS internal storage (<code>CONFIG_PHY_QCOM_UFS=y</code>) | ||
* Display (via [https://github.com/JamiKettunen/linux-mainline-oneplus5/commit/ | * Display (via [https://github.com/JamiKettunen/linux-mainline-oneplus5/commit/704fce760059660aac6f1b236238d461806da34f <code>simplefb</code>] & <code>CONFIG_FB_SIMPLE=y</code>) | ||
* Xorg & Wayland (tested with [https://i.imgur.com/VgsaOtY.jpg MATE] & [https://i.imgur.com/dLItMIm.jpg Weston] respectively) | * Xorg & Wayland (tested with [https://i.imgur.com/VgsaOtY.jpg MATE] & [https://i.imgur.com/dLItMIm.jpg Weston] respectively) | ||
* Bluetooth (requires <code>crbtfw21.tlv</code> and <code>crnv21.bin</code> blobs from [https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/qca linux-firmware] + a <code>hciconfig hci0 up</code> in userspace) | * Bluetooth (requires <code>crbtfw21.tlv</code> and <code>crnv21.bin</code> blobs from [https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/qca linux-firmware] + a <code>hciconfig hci0 up</code> in userspace) | ||
* Touchscreen (using mainline Synaptics RMI4 I2C driver; [https://github.com/JamiKettunen/linux-mainline-oneplus5/commit/ | * Touchscreen (using mainline Synaptics RMI4 I2C driver; [https://github.com/JamiKettunen/linux-mainline-oneplus5/commit/52c1d076191888dbc4b7061d1881f3f0516c9652 definition in DTS]) | ||
* Anbox (install <code>postmarketos-anbox</code>; [https://github.com/JamiKettunen/linux-mainline-oneplus5/commit/ | * Anbox (install <code>postmarketos-anbox</code>; [https://github.com/JamiKettunen/linux-mainline-oneplus5/commit/5856e702df210fe4154e064df3ac2e5fd0adcd59 defconfig changes I made for LXC stuff]) | ||
* Power button ([https://github.com/JamiKettunen/linux-mainline-oneplus5/blob/device-oneplus-cheeseburger/arch/arm64/boot/dts/qcom/pm8998.dtsi#L41 in DTS]) | * Power button ([https://github.com/JamiKettunen/linux-mainline-oneplus5/blob/device-oneplus-cheeseburger/arch/arm64/boot/dts/qcom/pm8998.dtsi#L41 in DTS]) | ||
Revision as of 13:33, 20 April 2020
![]() | |
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 |
Extended version |
Android 7.1.1 (up to Android 9) on Linux 4.4 |
Mainline |
no |
Device package |
oneplus-dumpling ![]() |
Kernel package |
oneplus-dumpling ![]() |
Flashing |
Works
|
---|---|
USB Networking |
Works
|
Battery |
Broken
|
Screen |
Works
|
Touchscreen |
Works
|
Multimedia | |
3D Acceleration |
Broken
|
Audio |
Broken
|
Camera |
Broken
|
Connectivity | |
WiFi |
Broken
|
Bluetooth |
Broken
|
GPS |
Untested
|
Modem | |
Calls |
Broken
|
SMS |
Broken
|
Mobile data |
Broken
|
Miscellaneous | |
FDE |
Broken
|
USB OTG |
Works
|
Sensors | |
Accelerometer |
Untested
|
Contributors
- deathmist
- R0551 (mainlining)
Maintainer(s)
deathmist
Users owning this device
- Bdju (Notes: Android backup)
- Blitzwing (Notes: PMos just boot loops, so LineageOS it is)
- 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)
- Index986 (Notes: 6/64GB postmarketOS unstable)
- Langfingaz (Notes: Running LineageOS 20)
- Mtek89 (Notes: Running LineageOS 19.1, girlfriend's phone)
- Poipa
- Rebel1725
- Recorvus (Notes: mainline)
- Win.exe
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
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdb
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdc
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdd
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sde
oneplus5:~# fdisk -l -o Device,Start,End,Sectors,Size,Name /dev/sdf
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) known to be working (in at least some capacity):
- The kernel itself stays booted (i.e. no random panics) and is "stable"
- 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 + ahciconfig hci0 up
in userspace) - Touchscreen (using mainline Synaptics RMI4 I2C driver; definition in DTS)
- Anbox (install
postmarketos-anbox
; defconfig changes I made for LXC stuff) - Power button (in DTS)
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)