OnePlus 6 (oneplus-enchilada)
This page documents the status of mainline Linux on the OnePlus 6!
The OnePlus 6 is an incredibly powerful and efficient mobile device, well regarded and (bar the notch) an excellent portable work horse, getting mainline Linux working means not only freedom from proprietary software, and security updates as OnePlus please, but also the ability to boot any mobile or desktop distro.
The phone is currently capable of booting modern Linux with only a few patches, see the kernel here and check the table on the right (or above) for the hardware support checklist.
- The battery driver is pretty broken right now and will always show the battery as fully charged, be careful not to leave your phone unplugged running postmarketOS as the battery will drain until it's dead, requiring you to charge it while off for a short period before powering on your phone again (and potentially damaging the battery).
pick enchilada / fajita device depending on your taste :D
Most UIs work well, phosh is quite good, plasma mobile does seems to be more buggy.
For phosh set
/usr/share/phosh/phoc.ini under DSI-1 to fix scaling.
Now run the following to build and flash:
pmbootstrap install --split pmbootstrap export
Reboot back into bootloader mode after each of the following commands, replacing enchilada with fajita where appropriate.
fastboot erase dtbo fastboot flash vendor /tmp/postmarketOS-export/oneplus-enchilada-boot.img fastboot flash system /tmp/postmarketOS-export/oneplus-enchilada-root.img fastboot flash boot /tmp/postmarketOS-export/boot.img-oneplus-sdm845
Reboot and you should see dmesg on your screen :D
If you have flashing or booting issues, try first flashing the latest OxygenOS to the slot you want to install postmarketOS to (ie, flash in TWRP from your other slot). If you still have no luck, try flashing OOS 9 as the bootloader can be more forgiving.
It is possible to dual boot with android by following the guide above and using
to switch to your inactive slot before flashing.
A small number of users have reported their device being stuck on the bootloader unlocked screen after installing, follow the debugging steps below if that happens to you
The first and simplest debugging step is to see if the kernel is booting, this can be done by checking for a gadget mode device appearing in dmesg on your host, you can do this by putting the phone in fastboot mode and then running
dmesg -w in a terminal, opening another and running:
fastboot boot /tmp/postmarketOS-export/boot.img-oneplus-sdm845
The terminal running
dmesg -w should see output similar to the following:
[79239.786757] usb 1-3: new high-speed USB device number 10 using xhci_hcd [79240.031271] usb 1-3: New USB device found, idVendor=18d1, idProduct=d00d, bcdDevice= 1.00 [79240.031274] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [79240.031275] usb 1-3: Product: Android [79240.031276] usb 1-3: Manufacturer: Google [79240.031277] usb 1-3: SerialNumber: 5725c671 [79304.089875] usb 1-3: USB disconnect, device number 10 [79309.428896] usb 1-3: new high-speed USB device number 11 using xhci_hcd [79309.684225] usb 1-3: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.08 [79309.684227] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [79309.684229] usb 1-3: Product: RNDIS/Ethernet Gadget [79309.684230] usb 1-3: Manufacturer: Linux 5.8.0-rc6-oneplus-sdm845 with dwc3-gadget
Note the first device up until
USB disconnect is the phone appearing in fastboot mode, followed by it booting into the kernel.
If you don't see a
USB disconnect line, make sure you have run
fastboot erase dtbo. If you do but it is not followed by a new device appearing, try flashing a different version of OxygenOS to the slot you're on (ie by switching slots and then flashing the OTA from TWRP), OOS 9 can behave better. If you still have issues and have tried reflashing multiple times, feel free to contact
@kalube in the #mainline:postmarketos matrix channel.
Bluetooth does not show up in Phosh UI, but works fine with bluetoothctl, not sure why this is.
The power button **does** work, but it doesn't turn of the touch screen, as a result your inputs will still be registered with the screen off.
Feel like helping? Want to learn kernel development?
For detailed SDM845 specific instructions on initial device porting and building. Feel free to contact @kalube (or anyone) in the #postmarketos-mainline matrix channel if you're stuck.
How to enter flash mode
Unplug from USB, holdand until you see "Fastboot Mode" text.
Does work, tested with a bluetooth headset. Requires some messing about with bluetoothctl, doesn't appear in Phosh UI at all, although how much of this is device issues rather than Phosh issues I'm not sure.
sudo service bluetooth start
bluetoothctl [bluetooth]# power off [bluetooth]# power on [bluetooth]# default-agent [bluetooth]# scan on [bluetooth]# discoverable on [bluetooth]# devices [bluetooth]# pair <device> -- WAIT -- [bluetooth]# connect <device>
Some preliminary work for audio support is available on the wip/op6-5.9-rc8-audio branch. The device uses the SDM845
WCD934x codec which is mainlined, the speaker seems most likely to be the
MAX98927 which is also mainlined.
The adsp can be bought up with the following command after boot (as it will fail due to missing firmware in the initramfs)
echo start | sudo tee /sys/class/remoteproc/remoteproc1/state
alsa-utils and some other packages (?) should be installed, a UCM profile can then be generated from one of
/vendor/etc/mixer_paths*.xml, currently stuck here as it isn't apparent which are used for the speaker.
postmarketOS users that own the device
- Kernel sources
- pmaports!1221 Initial merge request.
- pmaports!1271 Updates to add panel mode and WiFi support.
- Enchilada device package
- Fajita device package
- Kernel package