Jump to content

Samsung Galaxy J7 (2016) (samsung-j7xelte)

From postmarketOS Wiki
Samsung Galaxy J7 (2016)
Samsung Galaxy J7 (2016) running Phosh
Samsung Galaxy J7 (2016) running Phosh
Manufacturer Samsung
Name Galaxy J7 (2016)
Codename samsung-j7xelte
Released 2016
Type handset
Hardware
Chipset Samsung Exynos 7870 Octa
CPU 1.6GHz Octa-Core (Cortex-A53)
GPU Mali-T830 MP1
Display 720 x 1280 Super AMOLED
Storage 16 GB
Memory 2 GB
Architecture aarch64
Software
Original software
The software and version the device was shipped with.
Android 6.0.1 (Linux 3.18.14)
Extended version
The most recent supported version from the manufacturer.
Android 8.1 (Linux 3.18.14)
FOSS bootloader no
postmarketOS
Category testing
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
yes
Device package device-samsung-j7xelte
Kernel package linux-postmarketos-exynos7870
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).
Broken
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.
Partial
Touchscreen
Works
Multimedia
3D Acceleration
Works
Audio
Audio playback, microphone, headset and buttons.
Broken
Camera
Broken
Connectivity
WiFi
Works
Bluetooth
Broken
GPS
Broken
Modem
Calls
Broken
SMS
Broken
Mobile data
Broken
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Works
USB OTG
USB On-The-Go or USB-C Role switching.
Broken
Sensors
Accelerometer
Handles automatic screen rotation in many interfaces.
Broken

The Samsung Galaxy J7 (2016) is a smartphone released by Samsung in 2016.

Preparation

Before installing postmarketOS, check that OEM Unlock is enabled in Developer Options.

Make sure you log out of any associated accounts, such as Google or Samsung accounts, to prevent factory reset protection–related issues from arising.

Also, make a backup of all important data.

Installation

Choose "edge" as the channel, “samsung” as the vendor and “j7xelte” as the codename:

$ pmbootstrap init

Build the images:

$ pmbootstrap install

Power off the device, then press and hold Volume Down + Home + Power simultaneously to reboot into Download mode. Afterwards, you can flash the kernel and the rootfs using the standard method:

$ pmbootstrap flasher flash_kernel
$ pmbootstrap flasher flash_rootfs

Recommended configuration

  • Disable animations. By default, they are turned on and can make the interface feel slow.

Working features

Aside from the features marked as working, these are also confirmed to work:

  • Automatic kernel upgrade via boot-deploy
  • Firewall (nftables)

Partial features

Battery

Due to a lack of a driver in mainline, charging may be slower or unreliable. The fuelgauge driver, which shows the charge percentage, works fine.

Screen

The display works using a simple framebuffer, so brightness control does not work. This will be fixed once the display driver is added to mainline.

Troubleshooting

FDE unlock touchscreen not working

The touchscreen driver (melfas mip4) is built as a kernel module. When the rootfs is encrypted, the kernel cannot load this driver before decryption. As a result, the FDE unlock screen does not respond to touch. There are two workarounds:

  1. Do not use FDE.
  2. Recompile the kernel with envkernel. CONFIG_TOUCHSCREEN_MELFAS_MIP4 should be set to y instead of m.

Wi-Fi connection fails

The Wi-Fi firmware is outdated and does not support 5 GHz or WPA3. It can only connect to 2.4 GHz networks. If the 2.4 GHz encryption is set to WPA3-only or WPA2/WPA3 transition mode, it will refuse to connect and repeatedly prompt you for a new password, even if the correct one is entered. To fix this, set the encryption to WPA2-PSK only in your router's configuration menu.

Serial debugging

This device has an S2MU005 MUIC, which exposes UART when a cable with either 150K or 619K resistance is plugged in. See the serial debugging for general information on this topic.

In order to halt S-BOOT and get access to its console, you must hold volume down while the device is powering on, in addition to mashing the enter button in your serial console. The easiest way to do this is to first remove the battery, connect the USB debug cable, hold power down, then start spamming enter in your console while you reinsert the battery.

Once you have gained access to the S-BOOT console, you can configure the bootloader to persistently enable UART logging from the booted kernel:

S-BOOT # setenv CMDLINE console=ttySAC2,115200
S-BOOT # saveenv
S-BOOT # load_kernel
S-BOOT # boot

Partition table

Number  Start (sector)    End (sector)  Size Name
     1            8192           16383 4096K BOTA0
     2           16384           24575 4096K BOTA1
     3           24576           65535 20.0M EFS
     4           65536           81919 8192K CPEFS
     5           81920           90111 4096K m9kefs1
     6           90112           98303 4096K m9kefs2
     7           98304          106495 4096K m9kefs3
     8          106496          108543 1024K CARRIER
     9          108544          124927 8192K PARAM
    10          124928          190463 32.0M BOOT
    11          190464          268287 38.0M RECOVERY
    12          268288          284671 8192K OTA
    13          284672          292863 4096K CDMA-RADIO
    14          292864          473087 88.0M RADIO
    15          473088          475135 1024K TOMBSTONES
    16          475136          477183 1024K DNT
    17          477184          478207  512K PERSISTENT
    18          478208          502783 12.0M PERSDATA
    19          502784          507903 2560K RESERVED2
    20          507904         6651903 3000M SYSTEM
    21         6651904         7061503  200M CACHE
    22         7061504         7184383 60.0M HIDDEN
    23         7184384         7194623 5120K CP_DEBUG
    24         7194624        30763007 11.2G USERDATA

Notes

  • The SoC is capable of running in 64-bit, but the stock Android OS runs in 32-bit mode.
  • The postmarketOS port had a typo in the codename, where “jxelte” was used instead of “j7xelte”. This issue has been fixed.
  • By default, the rootfs is flashed into the userdata partition, which is slightly larger than the system partition.

Contributors

Users owning this device

See also