Microsoft Lumia 950 XL (microsoft-cityman)
This device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories. This means that it cannot be selected in pmbootstrap. Status: Kernel compiles and boots. Bringing-up other components |
![]() Lumia 950 XL booting Debian with Bluetooth status shown | |
Manufacturer | Microsoft |
---|---|
Name | Lumia 950 XL |
Codename | microsoft-cityman |
Released | 2015 |
Type | handset |
Hardware | |
Chipset | Qualcomm Snapdragon 810 (MSM8994) |
CPU |
Cortex-A53 (4) Cortex-A57 (4) |
GPU | Adreno 430 |
Display | 1440x2560 AMOLED |
Storage | 32GB eMMC and SD card slot |
Memory | 3GB |
Architecture | aarch64 |
Software | |
Original software The software and version the device was shipped with. |
Windows Mobile 10 |
Extended version The most recent supported version from the manufacturer. |
Windows Mobile |
postmarketOS | |
Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. |
no |
pmOS kernel The kernel version that runs on the device's port. |
mainline |
Flashing It is possible to flash the device with pmbootstrap flasher . |
Broken
|
---|---|
USB Networking After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system). |
Broken
|
Battery Charging and battery level reporting works |
Broken
|
Screen Display works. Ideally with sleep mode and brightness control. |
Works
|
Touchscreen |
Works
|
Multimedia | |
3D Acceleration |
Broken
|
Audio Audio playback, microphone, headset and buttons. |
Broken
|
Camera |
Broken
|
Connectivity | |
WiFi |
Partial
|
Bluetooth |
Partial
|
GPS |
Broken
|
Modem | |
Calls |
Broken
|
SMS |
Broken
|
Mobile data |
Broken
|
Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
Broken
|
Sensors | |
Accelerometer Auto screen rotation works in desktops e.g. Phosh or Plasma Mobile |
Broken
|
This device is a Windows Phone. See the Windows Mobile page for common tips, guides and troubleshooting steps |
This device is a Windows Phone. See the Windows Phone page for common tips, guides and troubleshooting steps |
Contributors
Maintainer(s)
Users owning this device
- Cewbdex (Notes: SS)
- CodingNagger
- Empyreal96 (Notes: Got bluetooth networking support and 5.7 kernel)
- FieryFlames (Notes: Running Windows 11)
- Illen (Notes: Runs WoA)
- Jja2000 (Notes: Linux wen?)
- Little-miss-synth (Notes: running WoA)
- Marissachan (Notes: Currently running Windows 10 on Arm)
- Sonic011gamer (Notes: chonk)
- SunshineBiscuit (Notes: I did a lot of things with it)
- ThatGeekZen (Notes: Non XL AT&T Model)
- Thejsa (Notes: Cityman/950 XL single SIM UK variant; formerly owned Talkman/non-XL)
How to enter flash mode
Windows Phone flash mode can be entered using WPInternals, thor2 or Windows Device Recovery Tool.
Most WoA images have USB mass storage mode available with Power + VolDown key sequence on boot. Alternatively, enter USB mass storage mode via WPInternals.
Because Lumia 950 XL uses standardized UEFI firmware, it is not necessary to flash the device once it is unlocked. Simply install boot-shim and the UEFI firmware similar to the way installing Windows 10 ARM on Lumia 950 XL, partition (Do not delete any partitions before and including EFIESP) and copy files to the device and it will boot.
Warning: Do not touch anything inside DPP partition or it will cause permanent damage to the device
Progress
A slightly patched kernel is available at https://dev.azure.com/imbushuo-personal/_git/Kernel.
A more patched and more functional kernel is available at https://github.com/WOA-Project/linux.
Although Lumia 950 XL supports ACPI, the arm64 ACPI support for Qualcomm platforms is limited to Windows-only. Hence a device tree is necessary for successful bring-up. The current device tree is available at here (old) or right there.
The progress is generic for all Linux distros.
- Processor bring-up and reset using PSCI (EL1) or spin-table (EL2, WIP!)
- I2C, GPIO, UART and a few more simple low-speed I/O
- GCC clocks
- Synaptics Touchscreen via I2C
- FrameBuffer via UEFI GOP @ 1080x1920
- Bluetooth via UART. Need rampatch and TLV firmware blobs similar to other QCA6174 chipsets.
- PCIe Root Port, the QCA6174 Wi-Fi NIC is visible, ath10k driver starts but currently stalls the system. Need rampatch and TLV firmware blobs similar to other QCA6174 chipsets.
Booting
- Unlock the device using WPInternals
- Install boot-shim and UEFI firmware
- Partition the device, create a new ESP partition for aarch64 (keep the ARM32 one) and a partition for the root filesystem
- Unpack root filesystem, install GRUB ARM64, kernel and device tree into the new ESP partition
A reference boot entry:
linux /vmlinuz-4.18.6-lumia-950xl-uefi nomodeset acpi=off video=efifb boot_delay=200 root=UUID=<Root Partition UUID> initrd /initrd.img-4.18.6-lumia-950xl-uefi devicetree /msm8994-microsoft-lumia-950xl.dtb