Jump to content

Samsung Galaxy Note 10.1 2014 LTE (samsung-lt03lte)

From postmarketOS Wiki
Samsung Galaxy Note 10.1 2014 LTE
Manufacturer Samsung
Name Galaxy Note 10.1 2014 LTE
Codename samsung-lt03lte
Model P605
Released 2013
Type tablet
Hardware
Chipset Qualcomm Snapdragon 800 (MSM8974)
CPU 4x 2.3 GHz Krait 400
GPU Adreno 330
Display 2560x1600, TFT LCD, 10.1"
Storage 16/32 GB
Memory 3 GB
Architecture armv7
Software
Original software
The software and version the device was shipped with.
Android 4.3
Extended version
The most recent supported version from the manufacturer.
Android 5.1.1
Optional software LineageOS
postmarketOS
Category testing
Pre-built images
Whether pre-built images are available from the postmarketOS Installation page.
no
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.15.11
Device package device-samsung-lt03lte
Kernel package linux-postmarketos-qcom-msm8974
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.
Partial
Screen
Whether the display works; ideally with sleep mode and brightness control.
Untested
Touchscreen
Untested
Stylus
Untested
Multimedia
3D Acceleration
Untested
Audio
Audio playback, microphone, headset and buttons.
Untested
Camera
Untested
Camera Flash
Untested
IR TX
Untested
IR RX
Untested
Connectivity
WiFi
Untested
Bluetooth
Untested
GPS
Untested
Modem
Calls
Untested
SMS
Untested
Mobile data
Untested
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Untested
USB OTG
USB On-The-Go or USB-C Role switching.
Untested
HDMI/DP
Video and audio output with HDMI or DisplayPort.
Untested
Sensors
Accelerometer
Handles automatic screen rotation in many interfaces.
Untested
Magnetometer
Sensor to measure the Earth's magnetism
Untested
Ambient Light
Measures the light level; used for automatic screen dimming in many interfaces.
Untested
Proximity
Untested
Hall Effect
Measures magnetic fields; usually used as a flip cover sensor
Untested
Haptics
Untested
Barometer
Sensor to measure air pressure
Untested
Power Sensor
Sensor to monitor current, voltage and power. Not fuel gauge!
Untested
Note This should be the same device as Samsung Galaxy Note 10.1 2014 (samsung-n1awifi) but with LTE and Qualcomm Snapdragon SoC instead of Samsung Exynos SoC.

The Samsung Galaxy Note 10.1 2014 is one of the earliest tablet devices that came with a built-in stylus. It is the larger cousin of the famous Galaxy Note 3 and a significant improvement in hardware and software over its predecessor, the original Note 10.1.

This variant of the device sports a 32-bit armv7 Snapdragon 800 SoC (System on Chip) which was the flagship chip at the time of the device's launch. It is also one of the earliest tablets to support LTE. The device is also built-well for the most part and is currently about 13 years old.

The device successfully boots PostmarketOS, but a lot of the hardware is yet to be enabled. Details of the supported features and hardware are available on the right.

It is quite the capable device, though, probably not by modern standards. The device is still usable for simple use cases, and more importantly, a test device for kernel tinkerers with this device who wish to learn about the Linux kernel and how systems with SoCs work.

A lot of hardware and drivers are yet to be enabled and a lot of questionable hardware choices yet to be discovered. Contributions to enable features are welcome. Happy tinkering!

Contributors

User:Darkaether worked on getting initial support for the device into lk2nd, the kernel package, and pmaports. Currently working on getting hardware enabled one step at a time as a hobby project to learn about the kernel, embedded systems, and PostmarketOS.

User:Kocourek is currently (as of end of November 2025) working on a close-to-mainline port for the device. However, it is a new hobby project and there is limited time, so no promises. Currently there is not much time for the project. Hope to get back to it in a few months. 🤞

Users owning this device

  • Darkaether (Notes: Running LineageOS. Working on porting postmarketOS. Currently working on booting and testing lk2nd on the device.)
  • Kocourek (Notes: working on a port for lolz to see how hard it is when other people have already done the hard work)


Local postmarketOS Development setup

Operating System

Any modern Linux should do.

Machine Capabilities

You'll need a machine that can compile the Linux kernel. Fortunately, this only needs to be done once and subsequent builds will be incremental in nature.

Alternatively, you can consider building remotely in a cloud VM if you have that facility available to you.

Note If you build remotely, you may not be able to use a lot of nice features in pmbootstrap related to flashing.

Device Development Setup

As this device is still in very early stages of support and is not usable as a tablet with postmarketOS, here is a possible setup that is proven to be working.

Device bootloader and OEM firmware

If your device still runs the manufacturer's software, ensure that your device has the latest OTA updates installed to ensure that the OEM bootloader is running the latest available software.

The OEM bootloader will always be the first bootloader on the device. Follow the instructions in the section below to install a second-stage bootloader called lk2nd to get some cool features and to boot postmarketOS.

Recovery

A custom recovery is helpful for flashing partitions and for backups. TWRP is a very popular recovery and works well on this device. Unfortunately, newer versions may not have support for this device, but version 3.0.2 works sufficiently well.

Primary OS

Running the manufacturer's Android OS has not been tested. Please add details here if you try it out.

A nice and tested option is to flash LineageOS and have that boot from internal storage. This is essential for things like charging as the battery drivers are not yet supported/enabled in postmarketOS. Additionally, it is very helpful for checking loaded drivers and hardware in a booting downstream kernel. Ensure you have root access in order to access these resources.

Booting postmarketOS

For development, postmarketOS can be booted from an external SD card by following the instructions in the below section. This makes it easy to test changes without flashing and re-flashing the internal flash storage. It also helps extend the lifespan of the device storage as it reduces write cycles to internal flash.

Using lk2nd

lk2nd is supported on this device. Check out Lk2nd/lk1st for more information about it.

Installing lk2nd

To build the latest lk2nd, navigate to the lk2nd repository and clone or download a copy of the main branch.

Build lk2nd for the msm8974 target with the following command:

$ make TOOLCHAIN_PREFIX=arm-none-eabi- lk2nd-msm8974

After successful completion, the lk2nd image would be available at build-lk2nd-msm8974/lk2nd.img.

Flash this file to the boot partition of the device using heimdall or a custom recovery such as TWRP. Be sure to have a backup of the boot partition handy. In case the device already has lk2nd installed, a new version of lk2nd can be installed using the fastboot flash lk2nd /path/to/lk2nd.img command.

Note If the device booted to Android previously, this step will prevent Android from booting as the device would now boot to lk2nd instead of the Android boot image. To address this, once lk2nd is installed, use fastboot commands after lk2nd boots up to flash the android boot image to the boot partition. lk2nd will flash the android boot image with an offset so both of them can co-exist. In case the boot image size is too large, fastboot will fail to flash it. In this case, it may be required to re-compile the kernel image from downstream source to see if a smaller image can be generated. This would happen if the boot partition was backed up using dd or TWRP.

Additional lk2nd features

To output lk2nd logs to the screen for debugging and other purposes, it is helpful to use the DEBUG_FBCON=1 option while building lk2nd.

To tell lk2nd to always boot to fastboot mode on every boot, the LK2ND_FORCE_FASTBOOT=1 option is helpful.

With these 2 options, the build command would be:

$ make DEBUG_FBCON=1 LK2ND_FORCE_FASTBOOT=1 TOOLCHAIN_PREFIX=arm-none-eabi- lk2nd-msm8974

Booting from an external SD card

For this device, lk2nd supports booting images from the external SD card. During development, it is helpful to build the device's postmarketOS boot and root filesystems, flash them to an SD card, and boot to it with lk2nd.

Note Ensure to use an SD card that is rated class 10 or higher. Attempting to boot from an SD card that is slower than this will result in data transfer errors and a failure to boot from the SD card.

How to enter flash mode

Device flash mode

With the device powered off, hold Volume Down + Power.

lk2nd fastboot mode

With the device powered off, hold Power. As soon as the device logo/lk2nd footer show up on screen, press Volume Down.

lk2nd shares the same key combination to enter flash mode as above. Due to this, it is a quick-reflex exercise to get into lk2nd fastboot mode during boot - Volume Down must be pressed right after the device logo/lk2nd footer show up on screen. Pressing it a bit too early would boot into the device's flash mode (not lk2nd's fastboot mode) and a bit too late would result in the combination being ignored.

During development, it is very helpful to set lk2nd to always boot to fastboot mode as described above.

Installation

Using pmbootstrap

Follow Installation/Using pmbootstrap. When asked for the device's vendor/codename, select samsung as the vendor and lt03lte as the codename.

When asked for extra packages, here are a few that are helpful to have on the device for debugging or for general utility:

  • vim
  • file
  • fastfetch
  • btop
  • x11vnc
  • evtest

When asked for the UI, select xfce4. This UI is simpler to work with during development stage as there is no hardware acceleration available at the moment. Checkout the xfce4 page for more information about this desktop environment.

Building a custom kernel

While the shared kernel package works out of box, you'll need to frequently build new kernels for the device as additional hardware is enabled in your development process.

The recommended way to build the kernel is to use the envkernel feature that pmbootstrap supports. More details about envkernel can be found here.

Clone the pmaports source

Start by cloning pmaports source if you haven't already:

$ git clone

Checkout the kernel source

You should use a personal fork if you wish to contribute changes.

$ git clone git@github.com:msm8974-mainline/linux.git

Setup envkernel

Ensure that you have the pmbootstrap source (you would have already done this as part of your pmbootstrap setup).

Note Replace /path/to/ below with the path to the directory where your pmbootstrap source is checked out.
$ cd linux
$ source /path/to/pmbootstrap/helpers/envkernel.sh

Follow the prompts to setup the chroot and the envkernel. This only takes a few minutes.

Copy the kernel config

The kernel config is available inside pmaports. The kernel config in this case is a common file for all devices that share this kernel package. Any device specific drivers, etc. are enabled via kernel modules.

Note Replace /path/to/ below with the path to the directory where your pmaports source is checked out.
$ cp /path/to/device/testing/linux-postmarketos-qcom-msm8974/config-postmarketos-qcom-msm8974.armv7 lt03lte.kconfig

Run make to build the config and kernel

While inside the kernel source and in the same terminal window where envkernel is activated:

$ make lt03lte.kconfig

This will setup your kernel config. Next, build the kernel. If your machine has more cores available, adding -j to the make command followed by the number of parallel threads you want can help speed up the kernel build.

$ make

Build the kernel package and device packages followed by device image

To build the packages for install, run:

$ pmbootstrap build --envkernel linux-postmarketos-qcom-msm8974 --force
$ pmbootstrap build device-samsung-lt03lte --force
$ pmbootstrap install

This will setup the necessary chroots, build the packages, and assemble the device image.

Flashing a built image to an SD card

If the image has been built remotely or you wish to flash a fresh image for the device each time, follow the steps below.

Export the image

$ pmbootstrap export

Convert the sparse image to a raw image

Use the simg2img tool to convert a sparse image to a raw image. Clone the repo locally, build it, and setup PATH so that the simg2img command is available for execution in your terminal.

Note Replace /path/to/ below with the path to the directory where your workspace is present.
$ simg2img /path/to/workspace/chroot_native/home/pmos/rootfs/samsung-lt03lte.img /tmp/output.raw.img

/tmp/output.raw.img is the file we will flash to the SD card.

Flashing the image to an SD card

Use your favourite flash tool to flash to an SD card. Balena Etcher works quite well, but any other tool should work fine too.

Inserting the SD card into the device and booting lk2nd should automatically pick up the SD card partitions and boot to postmarketOS!

Flashing with heimdall

$ pmbootstrap export
$ heimdall flash --BOOT /tmp/postmarketOS-export/boot.img --SYSTEM /tmp/postmarketOS-export/samsung-lt03lte.img

Contributing hardware enablement and kernel changes

Contributions for enabling more hardware, drivers, and other kernel changes are welcome!

To do so, there are a few things to keep in mind:

  • In the earlier steps where pmaports was cloned, you would instead need to create a fork in postmarketOS gitlab and clone that instead so you can raise an MR with your changes.
  • Remember to also change the path to pmaports in your pmbootstrap config to point to your local clone.
  • Changes to the device tree source (DTS) and the kernel are to be made to the kernel repo in GitHub. Create a personal fork and raise PRs with your changes.
  • Kconfig files in postmarketOS should never be modified manually. Use the pmbootstrap kconfig edit <name of package> command to edit the Kconfig.
Note Remember to zap your chroots before running pmbootstrap kconfig edit. When using envkernel, Rust is installed and will modify Rust related configs in the Kconfig. This is an unwanted change so ensure to use pmbootstrap zap to zap your chroots before modifying the Kconfig.
  • Reviews may take time - this SoC is quite old and is not a priority for many folks so be patient and allow for some time for code reviews for any code changes.
  • Before pushing new changes to the kernel package or the device package, be sure to uptick the release version in the APKBUILD file as it would be an update to the packages.

The downstream kernel for the device is available here. The downstream DTS for the device appears to be this one. These can be used as references while enabling additional hardware.

Issues and General Notes

Display

This device has a questionable hardware choice of using embedded DisplayPort instead of DSI for the display panel. While this doesn't sound too bad right away, the lack of devices using the old DisplayPort hardware on this SoC is very problematic as there are no references to go by. Additionally, the driver that was once used to handle eDP on this device has been deleted. :) reference link

There are newer eDP drivers, however, they are an entirely different hardware block with different clocks, etc. so may not be usable for this device.

One alternative for now, while we figure out the eDP drivers, is to use simpledrm which loads based on an existing simple-framebuffer which the original bootloader setup at boot up (and lk2nd leaves running). This strategy is used for a bunch of devices, however, has not been successful for this one. With this enabled, the driver is successfully initialized and X.org server is setup and functional, however, the display just stays fully blue.

The display can, however, be viewed over USB SSH using VNC. :) This hack is useful for testing things like the touchscreen and stylus as well as UI elements while the display is being figured out.

Using VNC

With simple-framebuffer and simpledrm setup, VNC can be used to get a display image over USB to the connected computer.

VNC Start (to be run on device over USB SSH)

$ sudo x11vnc -display :0 -auth /var/run/lightdm/root/:0

Any VNC client on the computer the device is connected to should be able to connect and bring up the output.

Testing Input devices without a screen

You can test input devices without a screen by using the evtest or xinput commands.

xinput

This is useful if your X Server is setup and working.

xinput CLI (to be run on device over USB SSH)

$ DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 sudo xinput

Testing a particular input 6 with xinput (to be run on device over USB SSH)

$ DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 sudo xinput test 6

evtest

This is useful for testing inputs without an X Server running.

List input devices (to be run on device over USB SSH)

$ cat /proc/bus/input/devices

Capture raw events from an input device (to be run on device over USB SSH)

$ sudo evtest /dev/input/event0

More details on evtest can be found here.

Additional info

Unixbench results

Note The numbers seem very low compared to the Exynos variants. Power/performance tweaking may be necessary to get better results.
========================================================================
   BYTE UNIX Benchmarks (Version 6.0.0)

   System: samsung-lt03lte: Linux
   OS: Linux -- 6.15.2 -- #1-postmarketos-qcom-msm8974 SMP PREEMPT Wed Nov 19 23:37:19 UTC
   Machine: armv7l (unknown)
   Language: en_US.utf8 (charmap="UTF-8", collate=)
   CPU 0: ARMv7 Processor rev 0 (v7l) (38.4 bogomips)
          
   CPU 1: ARMv7 Processor rev 0 (v7l) (38.4 bogomips)
          
   CPU 2: ARMv7 Processor rev 0 (v7l) (38.4 bogomips)
          
   CPU 3: ARMv7 Processor rev 0 (v7l) (38.4 bogomips)
          
   17:13:03 up 5 min,  0 users,  load average: 1.13, 1.04, 0.47; runlevel 

------------------------------------------------------------------------
Benchmark Run: Tue Oct 21 2025 17:13:03 - 17:17:47
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        2731989.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1070.4 MWIPS (10.0 s, 7 samples)

System Benchmarks Partial Index              BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    2731989.2    234.1
Double-Precision Whetstone                       55.0       1070.4    194.6
                                                                   ========
System Benchmarks Index Score (Partial Only)                          213.4

------------------------------------------------------------------------
Benchmark Run: Tue Oct 21 2025 17:17:47 - 17:22:36
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       10736475.8 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     4011.0 MWIPS (10.1 s, 7 samples)

System Benchmarks Partial Index              BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   10736475.8    920.0
Double-Precision Whetstone                       55.0       4011.0    729.3
                                                                   ========
System Benchmarks Index Score (Partial Only)                          819.1


See also