Samsung Galaxy S4 Mini LTE (samsung-serranolte)

== 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 ==
== What works ==
* Compiling the kernel
* Flashing postmarketos
* Booting
* Screen display
* Multi-touch
* Plasma Mobile(slideshow mode)
* Xfce
* Mate
* Weston
* Touch screen ()
* USB Networking ()
* Sending SMS via terminal ()
* 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 ==
* initial pull request
* Kernel used: https://github.com/LineageOS/android_kernel_samsung_msm8930-common
* Unable to install on S4 Mini (samsung-i9195)
* 
*