Jump to content

Fairphone 3 (fairphone-fp3)

From postmarketOS Wiki
Fairphone 3
Manufacturer Fairphone
Name 3
Codename fairphone-fp3
Model FP3
Released 2019
Type handset
Hardware
Chipset Qualcomm Snapdragon 632 (SDM632)
CPU 4x 1.8 GHz Kryo 250 Gold
4x 1.8 GHz Kryo 250 Silver
GPU Adreno 506
Display 1080x2160
Storage 64 GB
Memory 4 GB
Architecture aarch64
Software
Original software
The software and version the device was shipped with.
Android 9
Extended version
The most recent supported version from the manufacturer.
Android 13
Optional software eOS
FOSS bootloader no
postmarketOS
Category testing
Pre-built images
Whether pre-built images are available from the postmarketOS Installation page.
N
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
yes
pmOS kernel
The kernel version that runs on the device's port.
6.17.7
Unixbench score
Unixbench Whetstone/Dhrystone score. See Unixbench.
4123.8
Device package device-fairphone-fp3
Kernel package linux-postmarketos-qcom-msm8953
Features
Flashing
Whether it is possible to flash the device with pmbootstrap flasher.
Works
USB Networking
After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system).
Works
Internal storage
eMMC, SD cards, UFS...
Works
SD card
Also includes other external storage cards.
Works
Battery
Whether charging and battery level reporting work.
Broken
Screen
Whether the display works; ideally with sleep mode and brightness control.
Works
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
Audio playback, microphone, headset and buttons.
Partial
Camera
Broken
Camera Flash
Broken
Connectivity
WiFi
Works
Bluetooth
Works
GPS
Works
NFC
Near Field Communication
Works
Modem
Calls
Partial
SMS
Works
Mobile data
Works
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Works
USB OTG
USB On-The-Go or USB-C Role switching.
Works
Fingerprint
Fingerprint reader.
Broken
Sensors
Accelerometer
Handles automatic screen rotation in many interfaces.
Broken
Magnetometer
Sensor to measure the Earth's magnetism
Broken
Ambient Light
Measures the light level; used for automatic screen dimming in many interfaces.
Broken
Proximity
Broken
Haptics
Works

Description

The Fairphone 3(+) is a touchscreen-based smartphone made by Fairphone. The phone has a modular, repairable design and is "constructed out of responsibly-sourced, conflict-free, and recycled materials where possible".

Boot modes

By holding various button combinations while booting, the device can boot into different modes. Unplug from USB, power off the device and press and hold the below buttons to enter the specific boot mode.

Boot mode PWR Vol+ Vol-
Fastboot Y N Y
Recovery Y Y N
Download N N N

Installation

Note You should upgrade your phone to the latest official firmware before start tinkering with it. Development is mostly done on the latest firmware.

Unlock the bootloader according to the official instructions. You do not need to unlock critical partitions.

Manual install

  • Enter fastboot according to boot modes instructions above.
  • Firstly, flash the dtbo partition from here: fastboot flash dtbo dtbo.img
  • Secondly, flash the boot partition: pmbootstrap flasher flash_lk2nd
  • Thirdly, you have a few choices to flash the postmarketOS rootfs:
    • userdata partition (48.7GiB usable space): fastboot flash userdata *rootfs.img
    • SD memory card: dd if=*rootfs.img of=/dev/$blk_dev bs=8M status=progress
  • Finally, reboot the device: fastboot reboot

In order to access lk2nd's menu, during bootup when you see the warning screen about the unlocked bootloader, press the power button twice and then immediately hold the Volume Down button. You should now see a different looking boot menu.

Return to Android

Follow the instructions on the respective official page of Fairphone-OS or Murena-/e/OS to return to stock Android.

Partition layout

fdisk -lo Device,Start,End,Sectors,Size,Name /dev/mmcblk0

Disk /dev/mmcblk0: 58.24 GiB, 62537072640 bytes, 122142720 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 98101B32-BBE2-4BF2-A06E-2BB33D000C20
Device             Start       End   Sectors  Size Name
/dev/mmcblk0p1    131072    311295    180224   88M modem_a
/dev/mmcblk0p2    311296    491519    180224   88M modem_b
/dev/mmcblk0p3    524288    524289         2    1K fsc
/dev/mmcblk0p4    524296    524311        16    8K ssd
/dev/mmcblk0p5    524312    525335      1024  512K sbl1_a
/dev/mmcblk0p6    525336    526359      1024  512K sbl1_b
/dev/mmcblk0p7    526360    527383      1024  512K rpm_a
/dev/mmcblk0p8    527384    528407      1024  512K rpm_b
/dev/mmcblk0p9    528408    532503      4096    2M tz_a
/dev/mmcblk0p10   532504    536599      4096    2M tz_b
/dev/mmcblk0p11   536600    537111       512  256K devcfg_a
/dev/mmcblk0p12   537112    537623       512  256K devcfg_b
/dev/mmcblk0p13   537624    570391     32768   16M dsp_a
/dev/mmcblk0p14   570392    603159     32768   16M dsp_b
/dev/mmcblk0p15   603160    606231      3072  1.5M modemst1
/dev/mmcblk0p16   606232    609303      3072  1.5M modemst2
/dev/mmcblk0p17   655360    655423        64   32K DDR
/dev/mmcblk0p18   655424    658495      3072  1.5M fsg
/dev/mmcblk0p19   658496    658527        32   16K sec
/dev/mmcblk0p20   786432    808959     22528   11M splash
/dev/mmcblk0p21   917504    923647      6144    3M aboot_a
/dev/mmcblk0p22   923648    929791      6144    3M aboot_b
/dev/mmcblk0p23   929792    946175     16384    8M dtbo_a
/dev/mmcblk0p24   946176    962559     16384    8M dtbo_b
/dev/mmcblk0p25   962560    962687       128   64K vbmeta_a
/dev/mmcblk0p26   962688    962815       128   64K vbmeta_b
/dev/mmcblk0p27   962816   1093887    131072   64M boot_a
/dev/mmcblk0p28  1093888   1224959    131072   64M boot_b
/dev/mmcblk0p29  1224960   1227007      2048    1M devinfo
/dev/mmcblk0p30  1227008   7518463   6291456    3G system_a
/dev/mmcblk0p31  7518464  13809919   6291456    3G system_b
/dev/mmcblk0p32 13809920  15907071   2097152    1G vendor_a
/dev/mmcblk0p33 15907072  18004223   2097152    1G vendor_b
/dev/mmcblk0p34 18087936  18153471     65536   32M persist
/dev/mmcblk0p35 18153472  18155519      2048    1M misc
/dev/mmcblk0p36 18155520  18156543      1024  512K keystore
/dev/mmcblk0p37 18156544  18160639      4096    2M prodinfo
/dev/mmcblk0p38 18160640  18160703        64   32K config
/dev/mmcblk0p39 18160704  18684991    524288  256M oem
/dev/mmcblk0p40 18743296  18743359        64   32K limits
/dev/mmcblk0p41 18874368  18875391      1024  512K mota
/dev/mmcblk0p42 18875392  18877439      2048    1M dip
/dev/mmcblk0p43 18877440  18942975     65536   32M mdtp_a
/dev/mmcblk0p44 18942976  19008511     65536   32M mdtp_b
/dev/mmcblk0p45 19008512  19009535      1024  512K syscfg
/dev/mmcblk0p46 19009536  19017727      8192    4M mcfg
/dev/mmcblk0p47 19136512  19136767       256  128K lksecapp_a
/dev/mmcblk0p48 19136768  19137023       256  128K lksecapp_b
/dev/mmcblk0p49 19137024  19139071      2048    1M cmnlib_a
/dev/mmcblk0p50 19139072  19141119      2048    1M cmnlib_b
/dev/mmcblk0p51 19141120  19143167      2048    1M cmnlib64_a
/dev/mmcblk0p52 19143168  19145215      2048    1M cmnlib64_b
/dev/mmcblk0p53 19145216  19147263      2048    1M keymaster_a
/dev/mmcblk0p54 19147264  19149311      2048    1M keymaster_b
/dev/mmcblk0p55 19267584  19268095       512  256K apdp
/dev/mmcblk0p56 19268096  19268607       512  256K msadp
/dev/mmcblk0p57 19268608  19268623        16    8K dpo
/dev/mmcblk0p58 19268624  19399695    131072   64M logdump
/dev/mmcblk0p59 19399696  19400719      1024  512K frp
/dev/mmcblk0p60 19400720  19662863    262144  128M product_a
/dev/mmcblk0p61 19662864  19925007    262144  128M product_b
/dev/mmcblk0p62 19925008 122142686 102217679 48.7G userdata
/dev/mmcblk0p63        0         0         1  512B

Components

Component table

Component Model Notes
Modem Snapdragon X9 LTE
Power button PM8953 pwrkey
Volume down PM8953 resin
Volume up GPIO
Display HX83112B
Touchscreen HX83112B
Chipset SDM632
GPU Adreno 506
SD card sdhc_2
Internal storage sdhc_1
Camera flash PMI632
Audio codec WCD9326
Amplifier FP3: AW8898, FP3+: TAS2557
Earpiece
Speaker
Microphones
Vibration motor PMI632
WiFi WCN3680B
Bluetooth WCN3680B
GNSS/GPS
NFC NQ310
Fingerprint
Sixaxis
Light / Proximity
Magnetometer
Fuel gauge PMI632 qg
Charger PMI632 smb5

Battery

Warning WARNING: Do not allow your battery to fully deplete as you will reduce its lifespan.

There are no drivers for the fuel gauge and charger and you can not see the battery charge state in postmarketOS. Make sure you either switch to the slot where Android is installed from time to time, or you boot into eOS recovery to check the battery status and charge as needed.

Audio

No sound coming from the earpiece. Only the speaker works. No microphone is working.

Audio path:

  • CPU via I2S (quinary) to AW8898 (FP3) / TAS2557 (FP3+): speaker
  • CPU via SLIMbus to WCD9326: microphones, headphones, etc.
    • AMIC2 (using MIC_BIAS2) for headset mic
    • DMIC1 (using MIC_BIAS1) for main microphone next to USB port
    • DMIC2 (using MIC_BIAS3) for secondary microphone on top
    • HPH output is headset output (wired headphones)
    • EAR output is 'receiver' output (top speaker for calls)

Camera

Camera components
Camera Sensor EEPROM Actuator Bus
Rear (FP3) Sony IMX363 Belling BL24S64 ON Semi LC898217 D-PHY
Front (FP3) Samsung S5K4H7YX D-PHY
Rear (FP3+) Samsung S5KGM1SP Puya P24C64E Dongwoon DW9800W D-PHY
Front (FP3+) Samsung S5K3P9SP04 Puya P24C64E D-PHY

UART

Fairphone 3 UART pins

Contributors

Users owning this device


See also