# LineageOS 18.1 patches & tweaks for Samsung S5 Neo (s5neolte) This repository has the following patches such as: - Enable NFC service - Bypass safe volume warning dialog - Enable call recording - Bypasses all country restrictions - Replace Google DNS server references Original source code repositories: - [GitHub - LineageOS/android_device_samsung_s5neolte](https://github.com/LineageOS/android_device_samsung_s5neolte) - [GitHub - LineageOS/android_device_samsung_universal7580-common](https://github.com/LineageOS/android_device_samsung_universal7580-common) - [GitHub - LineageOS/android_hardware_samsung_nfc](https://github.com/LineageOS/android_hardware_samsung_nfc) - [GitHub - LineageOS/android](https://github.com/LineageOS/android) ## Usage Follow [Lineage OS for Samsung S5 Neo guide](https://wiki.lineageos.org/devices/s5neolte/build) **until** `brunch s5neolte` command. Before issuing that command, you need to put files of this repository in place. ## Some notes about the official LineageOS build guide - **DO NOT** install `recovery.img`. LineageOS Recovery is horrible, TWRP is great. Use TWRP. Thanks. If you mistakenly install `recovery.img` anyway, getting rid of it requires use of heimdall to flash back TWRP `recovery.img` (`heimdall flash --RECOVERY .img`) - Install only contents of LineageOS zip file `lineage-18.1-YYYYMMDD-UNOFFICIAL-s5neolte.zip` using TWRP - You may already have `repo` command pre-installed on your system - Use command `repo init -u https://github.com/LineageOS/android.git -b lineage-18.1` - `./extract-files.sh` commands relative to LineageOS source dir: - `device/samsung/universal7580-common/extract-files.sh` - `device/samsung/s5neolte/extract-files.sh` - Both must be executed - In order to `./extract-files.sh` commands fully succeed, you must have Samsung Android `6.0.1` preinstalled on your phone. Otherwise you get errors for missing files. ## LineageOS requirements for s5neolte - If you have original Samsung Android OS installed, it must be version `6.0.1`. LineageOS installation on phones using older Android versions (`5.1.1`, etc.) simply fails. - If you do not have Android `6.0.1` , get official Samsung update with [samloader](https://github.com/nlscc/samloader). Extract `zip` and `tar.md5` files, until you get all required `.img` and `.bin` files. Flash extracted `.bin` and `.img` files with [heimdall](https://github.com/Benjamin-Dobell/Heimdall) - Samloader [Arch Linux PKGBUILD (AUR)](https://aur.archlinux.org/packages/samloader-git/) - Take backup with TWRP before issuing `heimdall` commands - Relevant files are as follows: `boot.img`, `system.img`, `userdata.img`, `cm.bin`, `param.bin`, `sboot.bin`, `modem.bin`, `cache.img`, `hidden.img` - If you use custom recovery such as TWRP, **do not** flash `recovery.img` - File `S5NEOLTE__OPEN.pit` is a partition definition file. You may extract one directly from your phone using `heimdall`, as well. - You must patch heimdall to successfully flash your Samsung S5 Neo phone. Compile heimdall, and apply patch file [misc/heimdall/patch_filepartindex.patch](misc/heimdall/patch_filepartindex.patch). See [this GitHub issue](https://github.com/Benjamin-Dobell/Heimdall/issues/347) for details. - Heimdall source code: [GitHub - alexax66/Heimdall](https://github.com/alexax66/Heimdall) - Heimdall [Arch Linux PKGBUILD](https://github.com/archlinux/svntogit-community/tree/packages/heimdall/trunk) - Heimdall usage and command explanations: [SAMMobile - [Firmware]Restoring Stock Firmware with Heimdall](https://www.sammobile.com/forum/threads/45894-Restoring-Stock-Firmware-with-Heimdall) - Heimdall flash command for Samsung S5 Neo: `heimdall flash --BOOT boot.img --SYSTEM system.img --USERDATA userdata.img --CM cm.bin --PARAM param.bin --BOOTLOADER sboot.bin --RADIO modem.bin --CACHE cache.img --HIDDEN hidden.img` - **WARNING**: Use absolutely correct, Samsung provided files in `heimdall` command. Otherwise the flash process may fail and you end up with a bricked phone. - Flashing `USERDATA` is not necessary ## Additional tips - You may build parts of LineageOS using `mm` and `mmm` commands after sourcing `build/envsetup.sh` - This is useful for partial patches - For instance, building only `Dialer` APK, run `mmm packages/apps/Dialer` in lineage source root dir - If in any case, you get error message `cmd: unknown variable '$(PATH_OVERRIDE_SOONG)'`, run `breakfast ` command at Lineage OS source directory root again before issuing any other commands. Running `breakfast` command can take 10-15 minutes without any visible progress displayed - Before starting Lineage OS, you may need to wipe cache & Dalvik cache in TWRP (`Wipe -> Advanced Wipe -> [Dalvik / ART Cache, Cache]`) ### Init.d support No, do not use `/system/etc/init.d/` or look for such folders. Simply put your boot time scripts into `/data/adb/service.d/` folder, set their owner to `root:root` and permission bits to `0700`. You may give less restrictive permissions at your own risk. Default owner of these scripts seems to be `root:shell`. You may use TWRP to set owner & permission information. Optionally, folder `/data/adb/post-fs-data.d/` may be used, as well. #### Additional startup scripts Disable Captive Portal on startup. See: [disable_captiveportal.sh](init.d/disable_captiveportal.sh) ### DNS modifications Replaces Google DNS servers with `127.0.0.1` and `::1` addresses. See: [patch_localhost-dns_ntp_gps.patch](lineage_src_root/patch_localhost-dns_ntp_gps.patch), and the article [Fjortek.com - Enforced, encrypted, self-hosted DNS solution for Android devices](https://fjordtek.com/categories/news/2021/enforced-encrypted-self-hosted-dns-solution-for-android-devices/). ### Bromite webview Replaces built-in, prebuild Google Chromium webview with [Bromite webview](https://github.com/bromite/bromite). See: [chromium-webview/Android.mk](lineage_src_root/external/chromium-webview/Android.mk) ### Default input method: Replace LatinIME **1)** Download privacy friendly [simple-keyboard](https://github.com/rkkr/simple-keyboard/) and put source files into a new folder `packages/inputmethods/simple-keyboard/` **2)** Use Android Studio to compile the `simple-keyboard` from source code (unsigned APK, because `platform` certificate is used during AOSP build process). Once done, go to the next step. **3)** Get [Android.mk](lineage_src_root/packages/inputmethods/simple-keyboard/Android.mk) and [CleanSpec.mk](lineage_src_root/packages/inputmethods/simple-keyboard/CleanSpec.mk) for simple-keyboard. Put the files into the root folder of downloaded `simple-keyboard` source files. **4)** Remove default input method `LatinIME` from AOSP 11 compilation process by commenting out lines ``` PRODUCT_PACKAGES += \ LatinIME ``` in `build/make/target/product/handheld_product.mk` **5)** You need to add lines ``` PRODUCT_PACKAGES += \ SimpleKeyboard ``` into some `.mk` file of your choice.