Custom ROM for the Galaxy S6 Flat (SM-G920F) and Edge (SM-G925F), with lots of Open Source Software.
=== Disclaimer ===
This ROM is made for S6 G920F and G925F only, flash at your own risk, warranty void (knox flag 0x1), I’m not responsible if your device bricks or whatever.
=== Why yet another ROM ===
I’m one of those few users who experienced sudden random reboots after updating stock firmware after rooting their device. So the following huge text may contain a taste of drama.
No custom ROM or even Stock ROM did work for me, because PLOD(tm) (pink led of doom & Knuckles). Only working ROM is CM13, but that’s lacking proper in-call mic (sometimes doesn’t work) and Camera, so it’s sadly a no-op.
So I was trying to figure out what goes wrong and try to build a ROM that does simply work for my device and not result in a myriad of random reboots. So here it is: my second customized stock android ROM (the first one was for some ARNOVA Tablet).
And since the ROM does now already exist, I was like:
„Hey, why not go to xda and publish it?“
so here I am. And maybe it will solve the issue for other users, too.
=== So what does cause those random reboots ===
I don’t know. No really, it’s difficult to say. What’s not causing it:
- xposed
- supersu
- user apps
Because bare stock ROM installed from KIES will do reboot randomly aswell. It’s a mix of kernel (Hacker Kernel gives less than others), build.prop (stock gives less than customized), Google Apps and other bloatware. So picking out a specific issue is difficult.
I also found out that ‚userspace‘ governor and power suspend mode improve stability across different ROMs, so this ROM does set them by default.
Of course devices that have severe hardware damage will still suffer from them, don’t expect my ROM to do wonders to broken devices.
=== Why only 920F ===
Because that’s the only model I own, I don’t like blind support, but I added G925F kernel upon request.
There are many great multi-device ROMs outwhere to choose from.
=== Removed Apps ===
all bloatware crap
=== GApps Vs. microG ===
This ROM comes in two flavours:
1. GApps
Usual Google Apps as you know them, nothing special to do.
2. microG
Open source Google Apps replacement. This ROM requires you to do
the following steps prior to be able to use the Play Store:
- go to microG settings and activate:
- main screen:
- device check-in (for cloud messaging)
- cloud messaging (for app push messages)
- UnifiedNlp Settings:
- configure location backends:
- choose Mozilla and grant permissions
- configure address lookup backends:
- choose Nominatim
- configure location backends:
- main screen:
- reboot device
- enter Play Store and login as usual
- et voila: you’re now on the most possible Open Source ROM for S6 (if we don’t take the non-fully-functional CM13 into account)
=== Added Apps & Features ===
lotsa awesome stuff, namely:
> blue means AROMA chooseable
> red means user app
- several build.prop changes (AROMA chooseable):
- enable Multi User UI
- shorter sensor delay
- faster boot/shutdown animation
- higher jpeg quality
- disable ADB, MTP, USB notification [TouchWiz SystemUI]
- less frequent WiFi scans
- power saving settings
- faster scrolling
- improved voice call clarity
- disable error checking
- disable sending usage data to Google
- installer auto-detects whether device is Flat or Edge and installs correct kernel version accordingly
- anti-knox build.prop
- testmenu script: access testmenu (allows changing SMSC)
- remount-ro script: remount / and /system read-only
- remount-rw script: remount / and /system read-write
- 999kernel init script: anti-random-reboot kernel settings
- The Legend of Zelda tones (It’s dangerous to reboot alone)
- Trebuchet or TouchWiz or T-UI Launcher
- GNU Bash Shell
- Busybox
- Super Su (system mode)
- choose Doze or No Doze Framework
- Play or Blank Store (only microG)
- Samsung or AOSP/DU Gallery
- Samsung or Open Camera
- when choosing one of the AOSP Keyboards the Flat Style Keyboard Xposed module will be installed aswell (powerful theming)
- Samsung or Hacker or AOSP/DU or Enhanced AOSP Keyboard
- AOSP or Samsung Dialer & Contacts
- TouchWiz is the original version, except for enabled System UI Tuner
- modified Good Lock brings the following changes compared to original:
- rounded recents (for traditional recents)
- rounded notifications
- centered clock
- WiFi icon on left
- Cellular icon on left
- removed unlock text
- quick pulldown from right side
- reduced notification panel paddings
- optional: version with zero padding chooseable
- carrier label on lockscreen on right
- statusbar on home and lock screen have the same height
- remove annoying notification if no user routine exists
- enable System UI Tuner (Settings > Applications)
- hide from Launcher (it’s accessible from expanded status bar)
- short click on status bar battery icon: screen of
- long click on status bar battery icon: show power menu
- other minor adjustments
- modified Good Lock UI or stock TouchWiz UI
- Oandbackup (backup/restore apps and data)
- AdAway (block annoying ads)
- Amaze Filemanager (beta with full MM support)
- Always On: Ambient Clock (always-on clock, battery, notifications)
- Clock (AOSP/DU)
- Calculator (AOSP)
- CyanogenMod Screencast (record your screen)
- Etar (Calendar replacement)
- F-Droid (App Store for open source apps)
- Face Slim (more privacy when facebooking)
- K-9 Mail (feature rich mail client)
- Lightning (fast and small web browser)
- Neo Power Menu (Xposed) fully customizable power menu, supports
- hardware reboot
- software reboot
- shutdown
- reboot to recovery
- reboot to bootloader
- reboot into safe mode
- take screenshot
- activate torchlight
- NewPipe (YouTube client with download support)
- QKSMS (open source version)
- Settings Editor Xposed Module (modify SecSettings2)
- Termux (best terminal client outwhere)
- Twidere (ultimate Twitter client)
- VLC (open source media player)
- XDA Labs
- Xposed Installer (new, materialized)
- several changes to Settings Application
- embed AdAway in connectiviy group
- embed Always On in device group
- embed Boot Manager in device group
- embed Xposed Installer in device group
- embed SuperSU in system group
- embed microG in system group (if choosen)
- embed Settings Editor in system group
- embed Neo Power Menu in system group
- hide all those apps from Launcher
- enable developer options by default
- remove ‚Manual‘ from system group
- several Samsung Bloatware (AROMA chooseable):
- Samsung Account
- Samsung Apps
- Samsung Theme Store
- Samsung Backup
- Samsung Voice
- Samsung Voice Note
- Samsung TTS
- Samsung Fonts
- Samsung Edge Features
- several csc changes (AROMA chooseable):
- show camera (Samsung Camera) shutter sound option
- show NFC icon in status bar when on
- show call recording button
- show block SMS and Call menu
- recents app protection (TouchWiz)
- extra quick toggles (TouchWiz)
- show data usage in notification panel (TouchWiz)
- show call button in call list (Samsung Dialer)
- non-chooseable system changes:
- disable FOTA / Sofware Update menu
- fully disabled KNOX / TIMA
- disabled wake disply on USB plug in/out
- added back ‚Once‘ / ‚Always‘ buttons to ‚Open With‘ Dialog
- enable all rotation modes
=== Recommended Apps ===
not included because reasons, but still cool:
- Easy XKCD (F-Droid)
- Overchan (F-Droid)
- KeePassDroid (F-Droid)
- Play Permissions (Xposed)
- Play Store Changelog (Xposed)
=== Notes ===
- You need to install Xposed Framework separately (not bundled)
- Recommended recovery is arter97’s TWRP version 3.0.2
- I recommend disabling wifi during standby (that is, if you don’t have mobile network active during standby) Play Store auto-updates, that usually improves stability for me
- If you’re on the GApps edition: I also recommend disabling Google ads and Google app verification in Settings > Apps > Google >> Ads / >> Security (because I don’t like those „features“, call me a tinfoil head :P)
- Further I recommend doing a TWRP backup after everything is setup and working fine (so that you can revert to a working state any time)
- If you’re on GNU/Linux, I recommend using gMtp for file transfer. ADB sometimes gives weird file permissions.
=== Issues ===
A List of issues, all minor, but I’ll still look into them, if I get some time to do so:
- You currently need to manually enable supplied Xposed modules (and restart your device), namely Boot Manager and Neo Power Menu on both editions, additionally Fake GApps on microG edition.
- Don’t create a new routine in Good Lock. This triggers some bug in it that causes uninstallation and leaves you without System UI (black screen, no statusbar and launcer, etc).
- ? You tell me.
=== Download ===
- ROM, TWRP flashable Modem and Boot, Samsung Bloatware, Archive
- Good-Lock UI (broken-out)
- TWRP Recovery (arter97)
- Fancy materialized TWRP themes
- Xposed Framework (wanam) [when NOT using Magisk]
- Xposed Framework (topjohnwu) [when using Magisk]
=== Installation ===
virgin S6:
- install TWRP, Modem and Bootloader via Odin
- go to recovery (possibly backup stock firmware)
- factory reset using TWRP
- install ROM
- reboot and setup
- go to recovery and install Xposed
- reboot > profit (?)
rooted S6:
- update TWRP
- reboot recovery
- update Modem and Bootloader
- reboot recovery (possibly backup current ROM)
- factory reset using TWRP
- install ROM
- reboot and setup
- go to recovery and install Xposed
- reboot > profit (?)
=== Update ===
– backup ROM in TWRP
route a) dirty flash
- install NanoROM
- reboot
route b) proper flash
- factory reset in TWRP
- install NanoROM
- reboot
- wait until Setup Wizard pops up
- reboot into TWRP
- restore /data (only /data) from previously made backup
- reboot
=== First Start ===
- setup phone normally
- [optional] go to Settings > AdAway and activate ad blocking
- go to Settings > Xposed Framework > Modules > Enable modules
- reboot > now [AdAway and] Xposed Modules are set up and working
=== Future ===
As my goal is to get my silly S6 properly working, I’m not going to add new features without heavily testing them and I won’t rush out any update because of a new change set.
I just wanna use my S6 properly (though I do have a Moto G 2015 aswell, but still).
=== Credits ===
That said this ROM contains work from other developers, that saved me a lot of time, because I could adjust already existing stuff.
If you feel like missing from this list, please inform me, I’ll add you as soon as possible.
Theese people contain:
- ChainFire (SuperSu)
- Wanam (Xposed for Sammy)
- ambasadii (PureStock ExtraLite)
- edgarf28 (XtreStoLite)
- Mentalmulso (WETA No Odin)
- thehacker911 (Hacker Kernel)
- Osmosis (Busybox, GNU Nano)
- 3lo0sh (GNU Bash Shell)
- alesimula (Trebuchet)
- My free time (for being sacrified)
- the authors of all included apps
- everyone I possibly forgot (you’re awesome!)
=== ChangeLog ===
7.0.1 20170214 minor bugfixes 7.0 20170212 updated system and apps to DQA7 updated applications: - Twidere (3.4.27) updated system components: - microG (0.2.4-64) - Magisk (11.1) - MagiskManager (4.1) - Play Services (10.2.98.440) - Play Store (7.5.08.M) removed applications: - Nano-Selinux-Enforce Magisk Module - no longer required with Magisk 11 removed system components: - Doze vs. NoDoze framework-res - now only default framework-res added applications: - SmartManager - SHealth installer changes: - no longer install SuperUser app when Magisk is installed (builtin) other changes: - show ROM information in SecSettings2 - Good-Lock allow fingerprint after reboot - remove Favorites from SecSettings2 - remove Emergency Mode from Reboot Menu bugs fixed: - GoodLock not working after clean install
=== Kernel Settings ===
For NanoROM you don't need tools like Synapse or Kernel Adiutor to modify kernel settings. It comes with it's own script to manage kernel settings. /su/su.d/999kernel === Configuration Files === By default the script has three pre-set configuration files: /etc/kernel/arter97.settings arter97 kernel /etc/kernel/hacker.settings Hacker Kernel /etc/kernel/stock.settings Samsung Kernel depending on your installed kernel the correct pre-set is loaded. Your own configuration needs to go to /etc/kernel/custom.settings User Settings it will always be loaded in favour of the pre-set configurations. If you don't want the script to do anything, create an empty file: /etc/kernel/disabled.settings and reboot, then the kernel default values will be used. Remove that file and reboot to let the script do it's work again. === File Format === The format of the configuration file is simple option=value for non-array values and option=( key1 value1 key2 value2 ... ... ) for array values (currently only the voltage table is an array). === Possible Options === The script covers most relevant options you might want to tweak. Note: even if the installed kernel does not support all settings, your configuration file must include all options, to ensure the script is properly working. Thus I recommended copying over one of the pre-set configuration files and modify it to your needs. Next follows a list of possible configuration options. 1] cpu_governor default values: arter97 userspace Hacker userspace stock userspace use the following command to check available governors: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors 2] io_scheduler default values: arter97 fiops Hacker sioplus stock cfq use the following command to check available schedulers: cat /sys/block/sda/queue/scheduler 3] io_readahead default values: arter97 2048 Hacker 2048 stock 2048 4] tcp_congestion default values: arter97 westwood Hacker reno stock cubic 5] power_suspend_mode default values: arter97 1 [userspace] {0, 3 unsupported} Hacker 1 [userspace] stock 1 [userspace] Note: 0 [autosleep] 1 [userspace] 2 [lcd] 3 [hybrid] 6] power_suspend_state default values: arter97 1 [on] Hacker 1 [on] stock 1 [on] Note: 1 [on] only possible when power_suspend_mode is 1 [userspace], else it'll always be 0 [off] 7] gentle_fair_sleepers default values: arter97 0 [off] {unsupported} Hacker 0 [off] stock 0 [off] {?} 8] big_max_freq default values: arter97 2400000 [2.4 GHz] Hacker 2400000 [2.4 GHz] stock 2400000 [2.4 GHz] use the following command to get the clock speeds for big core: cat /sys/devices/system/cpu/cpufreq/mp-cpufreq/cluster1_freq_table 9] big_min_freq default values: arter97 200000 [200 MHz] Hacker 200000 [200 MHz] stock 200000 [200 MHz] use the following command to get the clock speeds for big core: cat /sys/devices/system/cpu/cpufreq/mp-cpufreq/cluster1_freq_table 10] low_max_freq default values: arter97 1800000 [1.8 GHz] Hacker 1800000 [1.8 GHz] stock 1800000 [1.8 GHz] use the following command to get the clock speeds for low core: cat /sys/devices/system/cpu/cpufreq/mp-cpufreq/cluster0_freq_table 11] low_min_freq default values: arter97 200000 [200 MHz] Hacker 200000 [200 MHz] stock 200000 [200 MHz] use the following command to get the clock speeds for low core: cat /sys/devices/system/cpu/cpufreq/mp-cpufreq/cluster0_freq_table 12] arch_power default values: arter97 0 [off] {unsupported} Hacker 1 [on] stock 0 [off] {?} Note: architecture specific power saving options. 13] laptop_mode default values: arter97 0 [off] {unsupported} Hacker 0 [off] stock 0 [off] {?} 14] power_efficient default values: arter97 N [off] {unsupported} Hacker Y [on] stock N [off] {?} Note: power efficient work queues 15] kernel_samepage default values: arter97 0 [off] Hacker 0 [off] stock 0 [off] Note: kernel samepage merging reduces unrequired RAM usage, at slightly less battery life 16] kernel_samepage_sleep default values: arter97 100 [ms] Hacker 100 [ms] stock 100 [ms] Note: KSM scan intervall in milliseconds 17] kernel_samepage_cpu default values: arter97 95 [%] Hacker 95 [%] stock 95 [%] Note: KSM maximum cpu usage 18] swappiness default values: arter97 50 [%] Hacker 50 [%] stock 50 [%] Note: higher value = kernel puts off unused objects from RAM faster 19] dirty_writeback default values: arter97 0 [off] {?} Hacker 1 [on] stock 0 [off] {?} Note: delays writeback for faster operation, slightly higher chance of possible data loss when phone is crashing while writing data 20] adb_over_wifi default values: arter97 -1 [off] Hacker -1 [off] stock -1 [off] {?} Note: default for [on] is 5555 (equals to port) 21] low_volt_table default value (1800000:500000 1704000:625000 1600000:500000 1500000:637500 1400000:975000 1296000:925000 1200000:887500 1104000:850000 1000000:812500 900000:775000 800000:737500 700000:706250 600000:681250 500000:656250 400000:631250 300000:625000 200000:625000) [all kernels] Note: de/increment by multiples of 6250, eg: 625000 > 631250 > 637500 > ... Note: changing this array is only recommended if you know what you're doing. Wrong handling of this might result in data loss, unstable operating system or if you overdo it: hardware damage. 22] big_volt_table default value: (2400000:1062500 2304000:1062500 2200000:1062500 2100000:1050000 2000000:1012500 1896000:975000 1800000:937500 1704000:906250 1600000:875000 1500000:843750 1400000:818750 1300000:793750 1200000:775000 1100000:750000 1000000:725000 900000:706250 800000:687500 700000:668750 600000:650000 500000:650000 400000:650000 300000:650000 200000:625000) [all kernels] Note: de/increment by multiples of 6250, eg: 625000 > 631250 > 637500 > ... Note: changing this array is only recommended if you know what you're doing. Wrong handling of this might result in data loss, unstable operating system or if you overdo it: hardware damage.