Jump to content

OnePlus 3T (oneplus-oneplus3t): Difference between revisions

From postmarketOS Wiki
MartinL (talk | contribs)
m add touchkeys
Susurrus (talk | contribs)
m Specify type
 
(36 intermediate revisions by 5 users not shown)
Line 8: Line 8:
| imagecaption = OnePlus 3T with Plasma Mobile UI
| imagecaption = OnePlus 3T with Plasma Mobile UI
| releaseyear = 2016
| releaseyear = 2016
| originalsoftware = OxygenOS 3.x (Android 6.0 "Marshmallow")
| originalsoftware = Android
| chipset = Qualcomm MSM8996Pro Snapdragon 821
| originalversion = 6.0 Marshmallow (OxygenOS 3.x)
| chipset = Qualcomm Snapdragon 821 (MSM8996Pro)
| cpu = 2x 2.35 GHz Kryo & 2x 1.6 GHz Kryo
| cpu = 2x 2.35 GHz Kryo & 2x 1.6 GHz Kryo
| gpu = Adreno 530
| gpu = Adreno 530
Line 16: Line 17:
| memory = 6 GB
| memory = 6 GB
| architecture = aarch64
| architecture = aarch64
| type = handset
<!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) -->
<!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) -->
| status_usbnet = Y <!-- USB networking does work? then put Y here and delete this comment -->
| status_usbnet = Y <!-- USB networking does work? then put Y here and delete this comment -->
| status_flashing = Y <!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. -->
| status_flashing = Y <!-- Flashing with "pmbootstrap flasher" works? Put Y here. It works the same for everything coming below. -->
| status_touch = Y <!-- Touch screen is working? You can also answer these questions with P for partially. -->
| status_touch = Y <!-- Touch screen is working? You can also answer these questions with P for partially. -->
| status_screen = Y <!-- The display is working? -->
| status_screen = P <!-- The display is working? -->
| status_wifi = Y <!-- Wireless network works? -->
| status_wifi = Y <!-- Wireless network works? -->
| status_xwayland = Y <!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? -->
| status_xwayland = Y <!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? -->
Line 28: Line 30:
| status_3d = P <!-- Hardware accelerated 3D graphics (e.g. with freedreno) -->
| status_3d = P <!-- Hardware accelerated 3D graphics (e.g. with freedreno) -->
| status_accel = <!-- The sensor that measures proper acceleration works -->
| status_accel = <!-- The sensor that measures proper acceleration works -->
| status_audio = <!-- Using the device's speakers/headphone jack works -->
| status_audio = P <!-- Using the device's speakers/headphone jack works -->
| status_bluetooth = <!-- It's possible to pair and use other devices via the bluetooth protocol -->
| status_bluetooth = Y <!-- It's possible to pair and use other devices via the bluetooth protocol -->
| status_camera = <!-- Taking photos and videos works. -->
| status_camera = <!-- Taking photos and videos works. -->
| status_gps = <!-- The Global Positioning System sensor works.  -->
| status_gps = <!-- The Global Positioning System sensor works.  -->
Line 37: Line 39:
| status = <!-- Text displayed in the "not booting" table on the Devices page , e.g "kernel compiles, doesn't boot" -->
| status = <!-- Text displayed in the "not booting" table on the Devices page , e.g "kernel compiles, doesn't boot" -->
| booting = yes <!-- The device is booting at all, can be yes/no *IMPORTANT* -->
| booting = yes <!-- The device is booting at all, can be yes/no *IMPORTANT* -->
| status_otg = P
| status_otg = Y
| status_nfc = Y


<!-- you can also use these lines if you need to:
<!-- you can also use these lines if you need to:
Line 47: Line 50:
| whet_dhry = 0.0
| whet_dhry = 0.0
Is OTG available, not used in wiki
Is OTG available, not used in wiki
| status_otg = -
| status_otg = Y
-->
-->
}}{{Based on SoC|Qualcomm_Snapdragon_820/821_(MSM8996)|Snapdragon 821}}
}}{{Based on SoC|Qualcomm_Snapdragon_820/821_(MSM8996)|Snapdragon 821}}
Line 85: Line 88:


== Installation ==
== Installation ==
Follow the usual [[Installation guide#Installation and flashing|flashing guide]]


<!-- add more sections below as necessary, e.g. WiFi, photos, ... -->
<syntaxhighlight lang="shell-session">
$ pmbootstrap init
$ pmbootstrap install
$ pmbootstrap flasher flash_rootfs
$ pmbootstrap flasher flash_kernel
</syntaxhighlight>
 
If the fastboot flash fails use the recovery mode:
 
{{note|'''NOTE''': The original recovery fails to sideload the zip file, [https://twrp.me/oneplus/oneplusthree.html#fastboot flash TWRP recovery] first}}
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap install --android-recovery-zip
$ pmbootstrap flasher --method=adb sideload
</syntaxhighlight>


== Mainline ==
== Mainline ==
Line 115: Line 131:


Samsung S6E3FA5R9S
Samsung S6E3FA5R9S
| Y
| P
| S6E3FA5R9S untested
| Panel does not resume from suspend, drivers not in mainline yet
|-
|-
|GPU
|GPU
Line 129: Line 145:
|-
|-
|Bluetooth
|Bluetooth
| P
| Y
| Bluetooth is detected but currently untested
| Tested and working using bluetoothctl
|-
|-
|Modem
|Modem
| rowspan = 2 | MSS<sup>1</sup>
| rowspan = 2 | MSS<sup>1</sup>
| N
| N
| Calls and SMS untested. Mobile data will require a driver for IPA.
| Calls and SMS untested. Mobile data requires WIP [https://gitlab.com/msm8996-mainline/linux/-/commits/msm8996-staging-ipa IPA 2.5 support] in IPA driver and modemmanager.
|-
|-
|GNSS
|GNSS
Line 142: Line 158:
|-
|-
|NFC
|NFC
| NXP PN544
| NXP PN66T (PN548 C2 + SmartMX)
| P
| Y
| Driver loads, untested
| NFC tags are detected, SmartMX secure element on SPI is not configured
|-
|-
|Audio Codec
|Audio Codec
| WCD9335 (Headphones, earpiece, microphones)
| WCD9335 (Headphones, earpiece, microphones)
NXP TFA9890 (Speaker)
NXP TFA9890 (Speaker)
| N
| P
| Untested, check if NXP TFA9890 has driver
| Headphone output works
|-
|-
|Video Codec
|Video Codec
Line 166: Line 182:
|Rear Camera
|Rear Camera
| Sensor: Sony IMX298
| Sensor: Sony IMX298
Lens actuator: ROHM BU63165GWL
| N
| N
| Needs dts, untested
| Needs dts, untested, no mainline driver
|-
|-
|Front Camera
|Front Camera
|Sensor: Samsung S5K3P8SP
|Sensor: Samsung S5K3P8SP
| N
| N
| Needs dts, untested
| Needs dts, untested,  no mainline driver
|-
|-
|Sensors
|Sensors
| SLPI/SSC<sup>1,2</sup>
| SLPI/SSC<sup>1,2</sup>
Gyroscope/Accelerometer
Gyroscope/Accelerometer: LSM6DS3


Magnetometer
Magnetometer: MMC3416PJ


Pressure
Pressure


Proximity + Light
Proximity + Light: APDS-9922
| N
| N
| [https://gitlab.com/msm8996-mainline/linux/-/commits/msm8996-staging-ssc Work in progress SSC driver].
| [https://gitlab.com/msm8996-mainline/linux/-/commits/msm8996-staging-ssc Work in progress SSC driver].
Line 192: Line 209:
|-  
|-  
|Touchkeys
|Touchkeys
| Synaptics s1302
| Synaptics S1302
| N
| Y
|
| Synaptics F1A driver not in mainline yet
|-
|-
|Fingerprint Reader
|Fingerprint Reader
|
| fpc1020
| N
| N
| Must confirm if SPI and/or GPIOs leading to it are accessible from the normal world. [https://gitlab.com/msm8996-mainline/linux/-/commits/msm8996-staging-fingerprint/ Work in progress fingerprint subsystem]. Needs driver.
| Must confirm if SPI and/or GPIOs leading to it are accessible from the normal world. [https://gitlab.com/msm8996-mainline/linux/-/commits/msm8996-staging-fingerprint/ Work in progress fingerprint subsystem]. Needs driver.
Line 204: Line 221:
|-
|-
|Buttons
|Buttons
| TLMM<sup>1,2</sup>/PM8996 GPIO<sup>2</sup> (Home, Volume Up)
| TLMM<sup>1,2</sup>/PM8996 GPIO<sup>2</sup> (Volume Up, Volume Down)
PM8994 PON/RESIN<sup>2</sup> (Power, Volume Down)
PM8994 PON<sup>2</sup> (Power)
| P
| Y
| Needs testing
|
|-
|Tri-state switch
| TLMM<sup>1,2</sup>/PM8996 GPIO<sup>2</sup>
| Y
|  
|-
|-
|Haptics
|Haptics
| PMI8996 Haptics<sup>2</sup>
| PMI8996 Haptics<sup>2</sup>
| N
| P
| Driver not upstream yet.
| Driver not upstream yet, direct play mode support is missing
|-
|-
|LEDs
|LEDs
| PM8994 LPG<sup>2</sup> (Keypad backlights)
| PMI8996 MPP<sup>2</sup> (touchkeys backlights)
PMI8996 LPG/Flash<sup>2</sup> (Status light, Flash)
PMI8996 LPG/Flash<sup>2</sup> (Status light, Flash)
| N
| P
| Will require a driver for flash.
| Status light and touchkeys backlights work. Flash will probably require a driver.
|-
|-
|}
|}
Line 226: Line 248:


== Known issues ==
== Known issues ==
* kernel oops on reboot https://gitlab.com/pmos-oneplus3t/linux/-/wikis/oneplus3t-mainline-reboot-oops-dmesg
* screen goes to suspend on power button press, resume does not work
* screen goes to suspend in about 30 seconds after tinydm starts (phosh/weston) and never resumes
* kernel oops on reboot https://gitlab.com/pmos-oneplus3t/linux/-/wikis/oneplus3t-mainline-reboot-oops-dmesg Workaround: https://gitlab.com/pmos-oneplus3t/linux/-/commit/13c0a5cf0feb296940c95753025222c022357cc4
* phone goes to suspend in about 2 minutes after tinydm starts (phosh/weston) and never resumes
* screen goes to suspend in about 30 seconds after tinydm phosh/weston) starts and never resumes. Fix: https://gitlab.com/msm8996-mainline/linux/-/merge_requests/12
 
== Troubleshooting ==
If the PostmarketOS screen shows "boot partition not found" after flashing, try using [[Installation from recovery mode|recovery]] installation method.
<syntaxhighlight lang="shell-session">
$ pmbootstrap install --android-recovery-zip
$ pmbootstrap flasher --method=adb sideload
$ # start ADB sideload in recovery (try TWRP or LOS recoveries if yours doesn't have this option)
< wait for any device >
* daemon not running; starting now at tcp:5038
* daemon started successfully
Total xfer: 1.09x                                                                                                         
[01:07:26] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[01:07:26] DONE!
</syntaxhighlight>
After ADB sideload is done, power down the phone completely, then boot it up again.


== See also ==
== See also ==

Latest revision as of 06:02, 20 October 2023


OnePlus 3T
OnePlus 3T with Plasma Mobile UI
OnePlus 3T with Plasma Mobile UI
Manufacturer OnePlus
Name 3T
Codename oneplus-oneplus3t
Released 2016
Type handset
Hardware
Chipset Qualcomm Snapdragon 821 (MSM8996Pro)
CPU 2x 2.35 GHz Kryo & 2x 1.6 GHz Kryo
GPU Adreno 530
Display 1080x1920 AMOLED
Storage 64/128 GB
Memory 6 GB
Architecture aarch64
Software
Original software Android
Original version 6.0 Marshmallow (OxygenOS 3.x)
postmarketOS
Category testing
Pre-built images no
Mainline yes
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
Works
Screen
Partial
Touchscreen
Works
Multimedia
3D Acceleration
Partial
Audio
Partial
Camera
No data
Camera Flash
No data
Connectivity
WiFi
Works
Bluetooth
Works
GPS
No data
NFC
Works
Modem
Calls
No data
SMS
No data
Mobile data
No data
Miscellaneous
FDE
No data
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

  • DrGit
  • MartinL

Maintainer(s)

Users owning this device

Good luck.

Unlocking the Bootloader

WARNING: Doing this will wipe ALL data on your device. Please backup all your personal data before continuing!

  1. Enable Developer options by tapping the build number 7 times in Settings > About
  2. Go to Developer options and enable both USB Debugging and OEM Unlocking
  3. Open a terminal window and type adb devices to verify your device is visible.
  4. Type adb reboot bootloader to reboot your device into fastboot mode.
  5. Type fastboot devices to verify once again that your device is visible.
  6. Type fastboot oem unlock. To navigate the on screen options use Volume Up/Down and select an option with the Power button.
  7. Congrats, your bootloader is now unlocked!


How to enter flash mode

  1. After the bootloader is unlocked press the Power button and you should see the warning screen. Press Volume Up/Down to open the boot options.
  2. Select Fastboot and press Power

You are now ready to flash.

Installation

$ pmbootstrap init
$ pmbootstrap install
$ pmbootstrap flasher flash_rootfs
$ pmbootstrap flasher flash_kernel

If the fastboot flash fails use the recovery mode:

Note NOTE: The original recovery fails to sideload the zip file, flash TWRP recovery first
$ pmbootstrap install --android-recovery-zip
$ pmbootstrap flasher --method=adb sideload

Mainline

MSM8996 common mainline kernel fork

Feature Components Status
USB Onsemi FUSB301 (extcon)

PMI8996 SMBCharger (OTG supply)

Y SMBCharger OTG VBUS driver not upstream.
UFS SAMSUNG KLUDG8J1CB-B0B1 (128GB) Y
Display MDSS1,2

Samsung S6E3FA3

Samsung S6E3FA5

Samsung S6E3FA5R9S

P Panel does not resume from suspend, drivers not in mainline yet
GPU Adreno 5301 Y Somewhat glitchy, causes some artifacts and tearing in GNOME and GTK4 due to a possible mesa bug. Can be mitigated by disabling binning by setting FD_MESA_DEBUG=nobin.
WiFi QCA6174a Y
Bluetooth Y Tested and working using bluetoothctl
Modem MSS1 N Calls and SMS untested. Mobile data requires WIP IPA 2.5 support in IPA driver and modemmanager.
GNSS N requires PDS support in gpsd
NFC NXP PN66T (PN548 C2 + SmartMX) Y NFC tags are detected, SmartMX secure element on SPI is not configured
Audio Codec WCD9335 (Headphones, earpiece, microphones)

NXP TFA9890 (Speaker)

P Headphone output works
Video Codec Venus1 N Untested
Battery TI BQ27541 3400mAh

PMI8996 SMBCharger/Fuel gauge2 SMB13512

P Fuel gauge works. Charger can reach its maximum current at 5V. Faster charging (9V) will require extra handling in the PMI8996 SMBCharger driver, and for better efficiency (and possibly even faster charging) a new driver for SMB1351.
Rear Camera Sensor: Sony IMX298

Lens actuator: ROHM BU63165GWL

N Needs dts, untested, no mainline driver
Front Camera Sensor: Samsung S5K3P8SP N Needs dts, untested, no mainline driver
Sensors SLPI/SSC1,2

Gyroscope/Accelerometer: LSM6DS3

Magnetometer: MMC3416PJ

Pressure

Proximity + Light: APDS-9922

N Work in progress SSC driver.
Touchscreen Synaptics S3320 Y
Touchkeys Synaptics S1302 Y Synaptics F1A driver not in mainline yet
Fingerprint Reader fpc1020 N Must confirm if SPI and/or GPIOs leading to it are accessible from the normal world. Work in progress fingerprint subsystem. Needs driver.

If SPI and GPIOs are secure, a driver for QSEECOM will be needed to load the vendor-provided trusted app, as well as something to communicate with it.

Buttons TLMM1,2/PM8996 GPIO2 (Volume Up, Volume Down)

PM8994 PON2 (Power)

Y
Tri-state switch TLMM1,2/PM8996 GPIO2 Y
Haptics PMI8996 Haptics2 P Driver not upstream yet, direct play mode support is missing
LEDs PMI8996 MPP2 (touchkeys backlights)

PMI8996 LPG/Flash2 (Status light, Flash)

P Status light and touchkeys backlights work. Flash will probably require a driver.

1: Internal component

2: Driver of component

Known issues

See also