NanoROM SM-G920/5FDI 7.0.1


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
  • 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 ===

=== 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 (
- 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.


=== 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:


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


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
			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
			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.