Welcome to XDA

Search to go directly to your device's forum

Register an account

Unlock full posting privileges

Ask a question

No registration required
Post Reply

[APP][4.4+][2014.12.22] CF.lumen v2.75 [ROOT]

OP Chainfire

9th April 2014, 11:10 PM   |  #1  
Chainfire's Avatar
OP Senior Moderator / Senior Recognized Developer - Where is my shirt?
Thanks Meter: 57,067
9,527 posts
Join Date:Joined: Oct 2007
Donate to Me

CF.lumen adapts the colors on your Android device based on the position of the sun, or your custom configuration.

When using the default settings, your display will get a warmer tint (lower color temperature) when the sun is down, vastly reducing strain on the eyes. This will take some getting used to, though! The colors also match closer to common artificial light sources, than the daytime light you get from the sun. Blue light makes your brain want to stay awake, and a lower color temperatures reduces the amount of blue displayed; using this in the evening also reduces your brain's effort to keep you awake at night, and can be beneficial to your sleeping pattern. (For your laptop/computer, see find f.lux for this functionality)

During sleeping hours by default a red filter is used. Red strains your eyes the least, and retains your night vision.

Light sensor

The light sensor can be used to automagically adjust the color: switch to the sleep filter in full dark, or to the day filter (usually none) under bright lights.

Because light sensor quality varies wildly between devices, a calibration option is provided. Most devices seem to work fine with sliders set all the way to the left, others need them to be set all the way to the right. Experiment as needed, but be warned that some devices simply cannot distinguish between evening indoor lighting and full darkness, and this feature may thus not work well for you.

Color filters

Several filters are provided. Those named after a color (red, green, blue, amber, salmon) do not limit the display to those colors, but convert the displayed image to grayscale first, then display that image in levels of the selected color, instead of levels of all channels (white). This preserves details that would otherwise be lost.

Grayscale, invert colors, temperature adjustment and custom R/G/B adjustment filters are also provided.


The master color filter setting also has an option for colorblindness enhancement, with settings for protanopia/anomaly, deuteranopia/anomaly and tritanopia/anomaly. These options redistribute colors across the spectrum, in theory enhancing clarity and color detail.

No claims are made to the effectiveness of these filters, but positive reports have been received from testers. Also note that these filters were thought up by Google engineers - CF.lumen just includes them.

Pro version

Upgrading to CF.lumen Pro will support my developments, remove all nags, unlock the option to start at device boot (make sure you test your configuration first), and unlocks notification options. It also enabled Tasker integration.

In Pro mode, the notification adds convenient buttons to quickly disable the current filter or switch to sleep mode, and you can switch the notification to when enabled mode, which shows the notification only when a color filter is active.

In non-Pro mode, the notification only asks you to upgrade to Pro. It may seem that notification is just there to annoy you, but it actually prevents Android from randomly killing the background service taking care of all the work. Getting rid of it without getting the service killed can be done by going to Settings -> Apps -> CF.lumen and unticking Show notifications.

As in the past CF.lumen was part of Chainfire3D, if you have the Pro package of the latter installed, Pro mode will also be enabled.


When no color filter is active, there should not be any noticeable performance impact. When a filter is active, impact depends on device and what you are doing. On some devices we have tested there was no performance impact at all, on others it was slightly noticeable.

For CF.lumen to work, hardware compositing (not rendering!) has to be disabled, so the more surfaces that need to be rendered, the bigger the impact. As a result, even on devices where you do notice an impact, you're more likely to notice it in regular apps, and less likely to notice it when playing video or games, as the latter generally use only a single surface.


Nightmode - now called 'sleep mode' in CF.lumen - was actually the kick-off of Chainfire3D's development, and the later arrival of the original CF.lumen additionally containing the functionality to change color temperature based on the sun's position. Completely different (and no longer possible) techniques were used to get similar results. There were fewer options, and the filters limited display to the selected channels instead of the currently used much higher quality method of displaying luminance levels on the selected channel.


Keep in mind that Android's rendering system changes over time. This app was possible in the old days of Android, and then wasn't possible for a long time. Only with KitKat did it become possible to make this work again. As such, you should be aware that this app may simply stop working on future Android versions without the possibility of a fix.

Scary permissions

By far most permissions are used only for Google Maps to set your location, and Google Play to provide for In-App Purchases. I cannot make any claims as to what information the Google components do or do not send to Google servers, but no information is sent to me or anyone else (than Google).


Get CF.lumen at Google Play

It needs Android 4.4 KitKat or newer!

Attached Thumbnails
Click image for larger version

Name:	screenshot-phone-small-ui-1.png
Views:	15749
Size:	71.8 KB
ID:	2678219   Click image for larger version

Name:	screenshot-phone-small-ui-2.png
Views:	15228
Size:	63.2 KB
ID:	2678222   Click image for larger version

Name:	screenshot-phone-small-home-day.jpg
Views:	15925
Size:	38.7 KB
ID:	2678223   Click image for larger version

Name:	screenshot-phone-small-home-sundown.jpg
Views:	15759
Size:	87.1 KB
ID:	2678224   Click image for larger version

Name:	screenshot-phone-small-home-sleep.png
Views:	15147
Size:	161.0 KB
ID:	2678225  
Last edited by Chainfire; 23rd December 2014 at 12:11 AM.
The Following 115 Users Say Thank You to Chainfire For This Useful Post: [ View ]
9th April 2014, 11:12 PM   |  #2  
Chainfire's Avatar
OP Senior Moderator / Senior Recognized Developer - Where is my shirt?
Thanks Meter: 57,067
9,527 posts
Join Date:Joined: Oct 2007
Donate to Me
Walkthrough video


Non-GApps firmwares

This app uses Maps for manual location setting, and Play for purchasing Pro. An increasing number of users do not have GApps, for privacy, security, and other concerns. If the app is installed on such a firmware, your location will be determined using the normal location API (without manual override, so your phone has to be able to determine your location). As I do not want to deprive anyone from the potential health benefits of sleeping better, the app operates in Pro mode if you do not have the Play store installed (PayPal'ing me beer money is always an option).

The APK is attached to this post for those not using Google Play (only).

Under no circumstances are you allowed to (re-)distribute this APK
(v2.00: 32, v2.05: 180, v2.10: 164, v2.16: 288, v2.25: 118, v2.40: 555, v2.50: 546, v2.60: 39, v2.61: 132, v2.66: 27, v2.71: 563, v2.74: 388)
Attached Files
File Type: apk CF.lumen-v2.75.apk - [Click for QR Code] (802.1 KB, 672 views)
Last edited by Chainfire; 23rd December 2014 at 12:11 AM.
The Following 39 Users Say Thank You to Chainfire For This Useful Post: [ View ]
9th April 2014, 11:12 PM   |  #3  
Chainfire's Avatar
OP Senior Moderator / Senior Recognized Developer - Where is my shirt?
Thanks Meter: 57,067
9,527 posts
Join Date:Joined: Oct 2007
Donate to Me
2014.12.22 - v2.75
- Change notification flags
- Fix driver detection issue which could lead to bootloops on devices with symlinked busybox
- Work-around one case of bootloops, detect that case, and warn about it

2014.12.02 - v2.74
- Fix remote control issue

2014.11.19 - v2.72
- Fix issue with in-app billing

2014.11.14 - v2.71
- Hide notification from (secure) lockscreens on L
- Check free space before installing driver

2014.11.06 - v2.70
- Tasker integration (Pro only)

2014.11.05 - v2.66 - RELEASE NOTES
- Android 5.0 fixes
- 64-bit fixes
- Performance improvement

2014.10.22 - 2.61
- Fix UI bug where settings wouldn't open sometimes

2014.10.22 - 2.60 - RELEASE NOTES
- Fixed a name issue with the recovery installer
- Automatically restart service when app is updated
- Expanded theme options, including material (basic)
- SELinux policy patches for LPX13D
- Experimental support for arm64, x86-64, mips64

2014.07.02 - 2.51
- Fix: ignore light sensor triggered sleep if forced awake during sleep hours

2014.07.01 - 2.50
- Installer fixes for latest AOSP
- Installer fixes for Android "L" Preview
- Added wake button to notification during sleep mode, which goes to sundown mode and is the default tap response - in contrast to disable, which disables all filters and is the default tap response while not sleeping
- Fixed issue where starting CF.lumen would not start the driver/service when not using Pro, and nothing would happen regarding screen colors, no matter which buttons you push

2014.04.16 - 2.40 - RELEASE NOTES
- Added brightness control to filters (actionbar option)
- Added option to wake from sleep mode when an alarm goes off
- Added option to install via custom recovery
- Added backuptool support (survive custom ROM nightlies) - un/re-install driver to activate if coming from an older version
- Fixed setting sleep filter to disabled using day filter at night instead of sundown filter
- Fixed filters occasionally sticking while modifying settings

2014.04.14 - 2.25 - RELEASE NOTES
- Various UI tweaks
- Added gradual filter fading, configurable for sunrise, sunset, sleep and sensor events
- Added notification icon options (keep notification but hide icon)
- Added light sensor based wake from sleep option
- Added driver update needed notification
- Added option to switch between light, dark, and device themes
- Added quick toggle menu items to main activity
- Improved (Pro) notification behavior - en/disable now default tap option when active
- Fixed kelvin and R/G/B choices not being saved between filter selections
- Fixed "Upgrade to Pro" from notification sometimes not working
- Fixed text wrapping on light calibration dialog

2014.04.11 - 2.15
- Fixed driver installation problem when using Superuser instead of SuperSU

2014.04.11 - 2.10
- Fixed crash on driver (un)install

2014.04.10 - v2.05
- Fixed a number of force closes

2014.04.10 - v2.00
- Initial public release
Last edited by Chainfire; 23rd December 2014 at 12:11 AM.
The Following 17 Users Say Thank You to Chainfire For This Useful Post: [ View ]
10th April 2014, 06:28 PM   |  #4  
Senior Member
Thanks Meter: 242
788 posts
Join Date:Joined: Jul 2011
Is there any practical difference between this and Lux?

Sent from my Nexus 5 using XDA Premium 4 mobile app
10th April 2014, 06:50 PM   |  #5  
Senior Member
Thanks Meter: 51
129 posts
Join Date:Joined: Feb 2013
Originally Posted by rlaw

Is there any practical difference between this and Lux?

Sent from my Nexus 5 using XDA Premium 4 mobile app

See walkthrough video on YouTube, and you will get the answer.

Sent from my Nexus 4 using Tapatalk
The Following User Says Thank You to leninke For This Useful Post: [ View ]
10th April 2014, 07:01 PM   |  #6  
Senior Member
Thanks Meter: 71
262 posts
Join Date:Joined: Jan 2007
Is it possible that you could add Tasker compatibility? If not, are there public intents available to control cf.lumen through Tasker intents? Thanks for updating this great app.
The Following User Says Thank You to jackattack For This Useful Post: [ View ]
10th April 2014, 08:55 PM   |  #7  
erikieperikie's Avatar
Senior Member
Flag Enschede
Thanks Meter: 33
124 posts
Join Date:Joined: Dec 2011
Donate to Me
EDIT: The latest update(s) fixed my problems. Thanks CF! Will buy if I like the app after a few days of use.

I would love to include a logcat, but I simply don't have the time today or tomorrow. If needed, I'll post one this weekend.

When the app runs for the first time: grant su access, then I see the "please install cf.lumen driver". I click install, device reboots after a few secs, after reboot I wait for some time before opening the app again. When I open it, it asks me the same thing: install the driver. Wasn't the driver installed, or doesn't it detect the driver?

PHONE: Nexus 4, ROM: Paranoid Android 4.2 BETA 4 (that's Android 4.4.2 if you don't know), KERNEL: franco.Kernel #204.

On my first try I had Nexus Display Control (also by Franco) installed. My guess was the apps aren't compatible. After uninstalling both apps, reboot, installed cf.lumen again, install driver, reboot: same problem. So for now no cf.lumen for me. Just eye strain.

I hope this helps you find the bug or incompatibility I have!
Last edited by erikieperikie; 12th April 2014 at 02:12 PM. Reason: bugs fixed
11th April 2014, 01:28 AM   |  #8  
kodirovshchik's Avatar
Senior Member
Flag Dneprodzerzinsk
Thanks Meter: 66
178 posts
Join Date:Joined: Aug 2013
Thumbs up 4.0+
Excellent, and we need it for Android 4.0+
The Following 2 Users Say Thank You to kodirovshchik For This Useful Post: [ View ]
11th April 2014, 01:37 AM   |  #9  
Senior Member
Flag Rochester, NY
Thanks Meter: 93
511 posts
Join Date:Joined: Nov 2009
No love for 4.1 - 4.3 makes me a sad panda
The Following User Says Thank You to SirBindy For This Useful Post: [ View ]
11th April 2014, 01:41 AM   |  #10  
Senior Member
Thanks Meter: 1,184
904 posts
Join Date:Joined: Jun 2012
Originally Posted by kodirovshchik

Excellent, and we need it for Android 4.0+

+1. Although I favour the cool-factor and performance of custom ROMs, it's always nice to be able to get a similar experience on stock ROM (which is ICS for me), considering that there are no stable custom ROMs on my device at the moment. I'm actually in the midst of custom ROM development for my device, though I work on CM10.2. (There are others who work on KitKat). It would be much appreciated if the @Chainfire could add support for lower Android versions.

Post Reply Subscribe to Thread
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes