Samsung Galaxy S4 Mini LTE (samsung-serranolte)

From postmarketOS
Samsung Galaxy S4 Mini LTE
S4 Mini running PostmarketOS and Xfce4
S4 Mini running PostmarketOS and Xfce4
Manufacturer Samsung
Name Galaxy S4 Mini LTE
Codename samsung-serranolte
Released 2013
Category testing
Original software Android
Original version 4.4.2
Hardware
Chipset Qualcomm Snapdragon 400 (MSM8930)
CPU 1.7 GHz dual-core Krait 300
GPU Adreno 305
Display 960x540
Storage 8 GB, microSD
Memory 1.5GB
Architecture ARMv7
Type handset
Features
USB Networking
Works
Flashing
Works
Touchscreen
Works
Display
Works
WiFi
Works
FDE
Mainline
Broken
Battery
Works
3D Acceleration
Broken
Audio
Broken
Bluetooth
Broken
Camera
Broken
GPS
Broken
Mobile data
Broken
Internal storage
SMS
Works
Calls
Broken
USB OTG
NFC
Sensors
Accelerometer
Broken
Magnetometer
Ambient Light
Proximity
Hall Effect
Barometer
Power Sensor
Misc
Built-in DVB
Camera Flash
Keyboard
Touchpad
USB-A
HDMI/DP
Ir TX
Ir RX
Stylus
Memory Card
Haptics
Ethernet
FOSS bootloader


Contributors

  • rrooij (initial port)
  • scintill (USB network, modem)
  • maccraft123 (broken his s4mini)
  • Zocker1012 (broken glass, experimenting with edge channel)
  • Everyone else on IRC (feel free to put your name)

Users owning this device

  • Bastindo (Notes: I have several of these)
  • Gfgit (Notes: Boots LineageOS 18.1 kernel, WiFi needs fixing)
  • Ignapk (Notes: Current test subject)
  • Jakko
  • Mykhal (Notes: TODO; and elsewhere i9195 is named serranoltexx, so not sure)
  • Piero-e (Notes: international LTE / gt-i9195 / running unofficial /e/OS android.11 based (serranoltexx))
  • SmP971 (Notes: stock rom)
  • TPJS (Notes: Mint condition; stock so far)
  • Ungeskriptet


What works

  • Compiling the kernel
  • Flashing postmarketos
  • Booting
  • Screen display
  • Multi-touch
  • Plasma Mobile(slideshow mode)
  • Xfce
  • Mate
  • Weston
  • Touch screen (!1313)
  • USB Networking (!1260)
  • Sending SMS via terminal (!1314)
  • Accelerometer (echo 1 > /sys/class/input/input2/enable)
  • Proximity sensor (echo 1 > /sys/class/input/input4/enable)
  • Light sensor (echo 1 > /sys/class/input/input5/enable)
  • Power button (/dev/input/event0)
  • Volume/Home buttons (/dev/input/event8)
  • Menu/Back touch buttons (/dev/input/event9)

What does not work

  • HW acceleration (we need libhybris or mainlining or freedreno)
  • User Interface: gnome (stuck at boot animation)
  • User Interface: gnome-mobile (won't install through pmbootstrap)

Installation

Heimdall method (recommended)

Heimdall is a cross-platform and open-source tool suite used for flashing software onto Samsung devices which is integrated in pmbootstrap script.

To interact with the device through Heimdall you need to enter "flash mode": 1. Switch off the phone 2. Press and hold the VolumeDown, Home and Power buttons until a warning screen appears 3. Connect the phone to the computer 4. Press the VolumeUp button

Then the device can be interacted with through the pmbootstrap script:

   $ pmbootstrap flasher flash_rootfs # Flash the rootfs with postmarketOS distribution data
   $ pmbootstrap flasher flash_kernel # Flash the rootfs with the linux kernel

The phone might reboot after the flasher sub-command, if it does re-enter the flash mode as explained above and flash the remaining.

adb sideload method

The alternative method for those who want to maintain their custom recovery image is adb sideload from recoveries that support it e.g. TWRP

   $ pmbootstrap install --android-recovery-zip # Set up pmos for sideloading
   $ pmbootstrap flasher --method=adb sideload # Flash the pmos on the device through sideloading

Hardware

Component Model Notes
MUIC Texas Instruments TSU6721
eMMC Sandisk SEM08G 8GB
Charging PM8921 Uses PMIC
Volume/Power/Home keys GPIO
Touchscreen Atmel MXT336S
Capacitive keys Coreriver TC360
Gyroscope/Accelerometer TDK InvenSense MPU-6500
Light/Proximity sensor Sharp GP2A gp2a020
Magnetometer Yamaha YAS532
Audio msm8230tapansnd
Audio DAC Qualcomm WCD9304
Infrared blaster Lattice ice4
GPU Adreno 305
Wi-Fi/Bluetooth Qualcomm Atheros Prima (WCN3660)
NFC Broadcom BCM2079x
GPS ?
Modem ?
Front camera Samsung s5k6a3yx
Main camera Samsung s5k3h5xa

HID Buttons

See Troubleshooting:HID buttons

<nowiki>

evtest /dev/input/event9 shows these events:

Event type 0 (EV_SYN) Event type 1 (EV_KEY)

 Event code 102 (KEY_HOME)
 Event code 114 (KEY_VOLUMEDOWN)
 Event code 115 (KEY_VOLUMEUP)

Event type 5 (EV_SW)

 Event code 0 (SW_LID) state 0

evtest /dev/input/event10 shows these events:

Event type 0 (EV_SYN)

 Event type 1 (EV_KEY)
   Event code 158 (KEY_BACK)
   Event code 254 (?)
 Event type 3 (EV_ABS)
 Event type 17 (EV_LED)
   Event code 8 (LED_MISC) state 0

Notes

This newer kernel seems to boot. I've applied some patches on top. https://github.com/gfgit/android_kernel_samsung_msm8930-common/tree/fix_gcc6_build

Some devices have a samsung-serranoltexx codename which appears to be compatible with the image of samsung-serranolte, it's unknown what the difference is.

Mainline preliminary work

This section lists all information I've found online which can be useful to mainline this device. Please edit if you found more stuff to add.

Device tree for MSM8930 and experimental charger driver

https://github.com/flto/linux/tree/msm8930

This branch contains 12 commits to support MSM8930 and PM8291 charger plus some Nokia Lumia 625 (nokia-rm941) specific code that we should skip.

Other similar charger driver to use as reference code qcom_smbb

Touchscreen

exynos5420-peach-pit.dts#L660

exynos5420 board seems to have same touchscreen chip Atmel MXT336S (Datasheet PDF)

Kernel Docs

WiFi WCN3660

qcom_wcnss_iris.c#L170

Main Camera s5k3h5xa

Downstream kernel drive seems crashing at boot, still have to investigate. Did not yet try LineageOS 18.1 kernel. Did not yet found newer driver code.

There is a maybe relevant discussion on XDA cyanogenmod-10-2

Possible newer kernel AOSP Common

https://github.com/danascape/kernel-msm-5.4/

Need to find where it comes from

LineageOS repositories

(Taken from XDA LineageOS 18.1 for S4 Mini)

Kernel:

https://github.com/LineageOS/android_kernel_samsung_msm8930-common

Device trees (plus Android specific code):

https://github.com/LineageOS/android_device_samsung_msm8930-common

https://github.com/LineageOS/android_device_samsung_serrano-common

https://github.com/LineageOS/android_device_samsung_serrano3gxx

https://github.com/LineageOS/android_device_samsung_serranodsdd

https://github.com/LineageOS/android_device_samsung_serranoltexx

https://github.com/arco/android_device_samsung_serranoltespr

https://github.com/arco/android_device_samsung_serranolteusc

Links