eInk update modes - Nook Touch Android Development

There seems to be very little actual documentation on the various eInk update modes.
Most of the information seems to have been extracted from working code.
Some of that code does not seem to be optimal in any case.
I'd like to start this thread on a discussion of the update modes.
You can look at all the code posted, but the bottom line is that eInk mode is configured by passing six discrete pieces of information to the EPD driver.
These six pieces may be wrapped up into a single static entity.
Name of entity requesting change (for logging purposes only)
Region, one of enumRegion[] (Region 4-7)
A rectangle, normally {0, 0, 600, 800}
Wave, one of enumWave[] (GC, GU, DU, A2, GL16, AUTO)
Mode, one of enumMode[] (INACTIVE, ACTIVE, ONESHOT, CLEAR, ACTIVE_ALL, ONESHOT_ALL, CLEAR_ALL)
Threshold, an int 1-15, only applies to A2 mode
A2 is the one bit, fast drawing method. It leaves ghosting behind.
In some applications, you would like to enable faster scrolling in A2 mode and then have it revert to "normal" upon completion.
I have an application with a full screen scroll.
After experimenting with the values, these two configs seem to do the job nicely.
Code:
configA2Enter = makeConfig(rpc, waveEnums[WAVE_A2], regionEnums[REGION_6], modeEnums[MODE_ACTIVE_ALL], THRESHOLD);
configA2Exit = makeConfig(rpc, waveEnums[WAVE_AUTO], regionEnums[REGION_6], modeEnums[MODE_ACTIVE_ALL], 0);
No user intervention is necessary, it scrolls quickly and redraws a clean image when done.
(A view.invalidate() is necessary after you invoke configA2Exit)
Does anybody have any further insight into these values or suggestions for improving them?

Some additional information on the A2 ("no refresh", 1 bit) mode.
Some of the other modes can be selectively applied to portions of the screen.
The A2 mode may only be applied to the entire screen.
The threshold value, which some may construe as "brightness" or "contrast"
is the cutoff threshold between black and white of the original image.
A value of 1 will only generate black in the darkest areas of the original image.
A value of 15 will only generate white in the whitest areas of the original image.
That is, 1 will give you a light image, 15 a dark image.

Renate NST said:
Some additional information on the A2 ("no refresh", 1 bit) mode.
Some of the other modes can be selectively applied to portions of the screen.
The A2 mode may only be applied to the entire screen.
The threshold value, which some may construe as "brightness" or "contrast"
is the cutoff threshold between black and white of the original image.
A value of 1 will only generate black in the darkest areas of the original image.
A value of 15 will only generate white in the whitest areas of the original image.
That is, 1 will give you a dark image, 15 a light image.
Click to expand...
Click to collapse
Nice find! I didn't know that was a B/W threshold. But I think you meant "1 gives a light image and 15 a dark image".
I've just tried using this in NoRefreshToggle, but the result was not as good as before. The image is much more just solid black and white because you can't see the dither patterns that represent grey (they appear only at very specific white levels, which would be nice to tweak too).
What I actually use for "contrast" adjustment in NoRefreshToggle is a different approach. Using a fixed threshold of 14 (dark image), I've managed to lower the black level (turning it more greyish) to achieve a smaller color range. This way, the dither patterns appear more often. However, my technique to achieve this effect is not so elegant: I overlay the entire screen with a semi-transparent white pane. This has the inconvenient of controlling the pane visibility: whenever A2 mode is turned off (by user or system), I need to hide the pane View.
If I could temporarily avoid the automatic changing of screen modes by the system, this would be much simpler. I've had no success at this issue so far.

marspeople said:
I think you meant "1 gives a light image and 15 a dark image".
Click to expand...
Click to collapse
Yup, good catch. The preceding two sentences were correct. I edited the third.
I have a demo panning grayscales. It's easy to see where the threshold is occurring. Shown below.
Oh! I did see something about the dither modes.
They would certainly be useful for video, less so for text.
I think a system-wide use of A2 would be a bit counterproductive.
The fonts look better with 16 shades.
The best use would be to have browsers and viewers use A2 for panning and zooming.
And another thing:
I don't know how you are getting the dither in there, but since you are doing an overlay anyway,
maybe you should try a halftone screen approach to see how it would work.
The simplest halftone screen would be a checkerboard with two different transparencies.
That wouldn't sacrifice too much resolution.

Renate NST said:
I think a system-wide use of A2 would be a bit counterproductive.
Click to expand...
Click to collapse
i seems to me that n-r mode would be much more usefull if would could regulate when its on a and when off. Its quite pain running the app again and again. it seems to me that quicker reaction is much better than nicer pictures in average use - pdf reading, browsing, video, managing system...

marspeople said:
I've just tried using this in NoRefreshToggle, but the result was not as good as before. The image is much more just solid black and white because you can't see the dither patterns that represent grey (they appear only at very specific white levels, which would be nice to tweak too)
Click to expand...
Click to collapse
I don't think the dithering can be 'tweaked' as such. It's caused by the reduction of 24-bit color images to the 16-bit colorspace of the OS. Dithering is performed by the graphics hardware to prevent obvious colour banding, and there's no OpenGL functions to control dithering parameters.
The A2 mode seems to choose a threshold value for black in the 16-bit colorspace. Values above this are white. In order to obtain black and white dithering we have to pick values in the 24-bit colorspace which all lie in the same 16-bit band.
The easiest way I've found is to keep the R and G values at 255 and vary the B value. I think the default threshold lies at 255,255,198. If you start at that and increase the B value you get 7 dithered grey shades before you reach white.

Guys, as far as i know, eink display is build of tiny capsules, much smaller that one pixel is, and a chip is joining them into pixels. So mayby there is a way to divide single pixel into 2 or even 4? It is much much work, but it would make us easier draw some tones of monochrome? Example: to get dark gray, instead of displaying one of five black pixels white, we can make one's "subpixels" 3/4 black, 1/4 white.
Does it make sense/do you get it?

Renate NST said:
I think a system-wide use of A2 would be a bit counterproductive.
The fonts look better with 16 shades.
The best use would be to have browsers and viewers use A2 for panning and zooming.
Click to expand...
Click to collapse
I agree with you. But having temporary exclusive control of A2 mode would make my application more efficient. I don't intend to use A2 system-wide.
Renate NST said:
And another thing:
I don't know how you are getting the dither in there, but since you are doing an overlay anyway,
maybe you should try a halftone screen approach to see how it would work.
The simplest halftone screen would be a checkerboard with two different transparencies.
That wouldn't sacrifice too much resolution.
Click to expand...
Click to collapse
I just tried this but I've got nothing more than a simply darker and checkered image. I don't understand how it would be better.

marspeople said:
I don't understand how it would be better.
Click to expand...
Click to collapse
Well, halftone screens have been around forever.
Think of it this way, it would give you two different thresholds.
With a bigger pattern you would get more thresholds but a coarser pattern.
That is always the way with dithering or halftone.
Probably a screen would not work well with an underlying dither.

A useful observation from http://forum.xda-developers.com/showthread.php?t=1502723&page=11 is that by listening to the screen you can hear screen activity.
After a quick test I suspect ONESHOT mode allows the screen to enter a power saving mode (in which the screen is completely silent) after a few hundred ms of inactivity, while ACTIVE prevents it. No idea whether there are other issues involved.

The native Reader.apk uses GU, ONESHOT_ALL when turning pages.
Every 6th page it uses GC, ONESHOT_ALL.

In an overnight test with the nook screensaver / lock screen mode inhibited by my application and no screen updates, I obtained power consumption of 0.75% / hour with ONESHOT mode. In a previous test with ACTIVE mode I got ~7% / hour with the same scenario(!)
With fast screen updates of ~ 1Hz ONESHOT does not appear to give any power saving benefit over ACTIVE mode, and a quiet hiss can be heard from the screen at all times in both modes at this refresh rate. I think this indicates the ONESHOT mode allows the screen to enter a power saving mode after a period of inactivity.
Neither of these were scientific tests but I strongly suggest trying ONESHOT mode in favour of ACTIVE whenever using A2 mode.

Well, there must be some benefit sometime to the ACTIVE mode or they wouldn't have it.
It's hard to differentiate the different modes, but it seem that ACTIVE responds quicker with less delay.
I switch to ACTIVE_ALL, A2 for panning and switch back to ONESHOT_ALL, AUTO afterwards.
(I don't use full-time A2).
See my demo of panning: http://forum.xda-developers.com/showthread.php?t=1563645
I'm running about 7%/hour drain. My Nook is not suspending when I do a simple power button click. I don't know why.

A few folks seem to be using EpdController in a useful manner.
Their use of Java reflection is clever, but it's not supposed to be that difficult.
I wrote a Java stub (basically declarations) for EpdController and wrapped it in a jar.
If you just put this jar in your compilation classpath with your normal android.jar
then you will be able to use the EpdController without all the fuss and muss.
For example, in my latest (unreleased) version of UsbMode I want the blinker to go on and off cleanly:
Code:
EpdController.setRegion("UsbMode", EpdController.Region.APP_3, blinker, EpdController.Wave.DU);
That's it, one line, no initialization.
The EpdController class was designed to handle such trivial uses.
Note: This jar itself has no functionality, all the method bodies are {}.
You will have to import android.hardware.EpdController

The 1.2 update uses a different EpdController and has a new EpdRegionParams.
This may or may not break code written for previous versions.
The best way to write code to use EpdController is to have it detect if there is no Epd
(i.e. for other devices), the old version or the new version.
Wrap a try/catch around a Class.forName("android.hardware.EpdController").
Wrap a try/catch around a Class.forName("android.hardware.EpdRegionParams").
The new epd.jar in the signature will allow you to compile without using redirection both the old and the new.
For details on the changes, see: http://forum.xda-developers.com/showpost.php?p=35390192&postcount=8

Bump & additional info.
By experimenting and reading documentation for other eInk controllers I've figured out the following:
Controllers support different algorithms for updating the pixels depending on the precision of the gray scale required and the compensation for previous ghosting.
On the Nook, we have the choice of waveform modes:
GC
GU (gray update)
DU (direct update)
A2
GL16
AUTO (auto selection of algorithm)
The screen can be divided up into regions where different algorithms may be used.
Some controllers support 15 regions, ours supports 8.
4 of these regions are earmarked for system usage, specifically:
Toast (popups)
Keyboard (soft keyboard layout)
Dialog (popups)
Overlay
The remaining 4 regions are left for the user.
Note: "HwRegion" is an enum for the complete 8 regions, "Region" is an enum for the 4 user regions.
An example: In my audio recorder I have two regions set aside for the VU bar graphs.
By setting these two regions to DU I get rid of update clutter and the response is quicker.
Currently, the EpdController in the Nook only operates with portrait coordinates.
If you wish to use this while in landscape mode you will have to rotate the coordinates first yourself.
It's sometimes hard to see exactly what/if some EPD setting is doing.
A good way to check it is to set a region for one half the width of whatever active graphic element you are trying to improve.
The difference can be very clear.

Renate NST said:
There seems to be very little actual documentation on the various eInk update modes.
Most of the information seems to have been extracted from working code.
Some of that code does not seem to be optimal in any case.
I'd like to start this thread on a discussion of the update modes.
You can look at all the code posted, but the bottom line is that eInk mode is configured by passing six discrete pieces of information to the EPD driver.
These six pieces may be wrapped up into a single static entity.
Name of entity requesting change (for logging purposes only)
Region, one of enumRegion[] (Region 4-7)
A rectangle, normally {0, 0, 600, 800}
Wave, one of enumWave[] (GC, GU, DU, A2, GL16, AUTO)
Mode, one of enumMode[] (INACTIVE, ACTIVE, ONESHOT, CLEAR, ACTIVE_ALL, ONESHOT_ALL, CLEAR_ALL)
Threshold, an int 1-15, only applies to A2 mode
A2 is the one bit, fast drawing method. It leaves ghosting behind.
In some applications, you would like to enable faster scrolling in A2 mode and then have it revert to "normal" upon completion.
I have an application with a full screen scroll.
After experimenting with the values, these two configs seem to do the job nicely.
Code:
configA2Enter = makeConfig(rpc, waveEnums[WAVE_A2], regionEnums[REGION_6], modeEnums[MODE_ACTIVE_ALL], THRESHOLD);
configA2Exit = makeConfig(rpc, waveEnums[WAVE_AUTO], regionEnums[REGION_6], modeEnums[MODE_ACTIVE_ALL], 0);
No user intervention is necessary, it scrolls quickly and redraws a clean image when done.
(A view.invalidate() is necessary after you invoke configA2Exit)
Does anybody have any further insight into these values or suggestions for improving them?
Click to expand...
Click to collapse
Excellent work! Do you happen to understand/can write up what the various fast mode/no refresh hacks do/how they use these different modes?
I've had X 'running' on my nook but only by triggering a full refresh every few seconds, and wondered how I could be more selective.
My reading of Norefresh was that it was doing something like parsing android log structures for areas that have changed.
Is there an easy way to trigger a refresh of part of the display from userspace, preferably directly on the driver or fb?
As for where the dithering is done, my guesswork is this is done by a blob running on the DSP module within the OMAP (which is perhaps the only interesting use of it I've seen).
Dave

Just done some playing writing directly to the entires in /sys/class/graphics/fb0 ; so for example:
echo -n 100,100,200,200,0,14 > epd_area
echo 2 > epd_refresh
causes the square 100,100->200,200 to be refreshed
the 14 being REGION(8)+CLEAR(4)+ONESHOT(2)
the 0 is wvfid+threshold*65536 I think.
I've put some code that runs under X to trigger updates; here (actually the comment is wrong, it's currently using oneshot+clear);
I never managed to get active to work.
http://forum.xda-developers.com/showthread.php?p=42393733#post42393733
Dave

Related

LCD Panels - Some Answers

Ok I have seen a lot of confusion over the months regarding the LCD Panel fitted to the Kaiser, I will attempt to answer most of these issues here.
Hardware: The kaiser series is fitted with a 2.8 inch 240x320 TFT LCD panel, which means that it 240 pixels wide by 320 pixels deep, the optimum density of this LCD panel is 143 Pixels per Inch.
Resolution: This refers to the screen resolution that the Operating System will use to display on the LCD panel, the 3 most common being 240x320, 320x428 and 320x480, the reason this is possible is that the OS is capable of fooling the display into using the fixed 240x320 panel to display more pixels, ( it does not really have more pixels, it just looks like it).
DPI: DPI or Dots Per Inch, also known as Density, and correctly known as PPI or Pixels Per Inch, this refers to the number of pixels the screen displays in a One Inch Square on the screen. As I noted above, the actual PPI of the LCD panel is 143 PPI, this is fixed by the hardware, and cannot really be changed, however since the LCD is software driven, it can be persuaded to look as if it is displaying more or less pixels in that same area.
Panel Type: This refers to the actual LCD panel fitted to your device, there are 3 types fitted to the Kaiser series, one manufactured by Sony, the other two by Topoly. While the 3 different types of panel are functionally identical, they differ at the electronic level. On Windows Mobile this difference can be detected by the OS, however on Android this is not possible, so the panel type must be set in the parameters passed to the kernel at boot time, either in default.txt when booting from SD, or hardcoded in the NBH when booting from Nand. Also there is no easy way of telling which panel type is fitted to any given Kaiser, since the panel type was chosen by HTC depending on price and availability and stock at the time of manufacture, so any model of Kaiser can have any of these types fitted.
The main problems encountered with the display are usually solved by changing the Panel Type, either by editing default.txt, or reflashing the correct NBH, ( note that you can also edit the kernel parameters of an NBH using a Hex Editor, however this would be a relatively advanced method, since an error could cause major issues).
Changing screen resolution and density: As noted above there are 3 main resolutions used, 240x320, 320x428 and 320x480. These easy to change either by editing default.txt, or flashing an NBH, depending on how you run Android, resolution is usually a personal choice. Density is not as easy to change, although Rogue Tools by Myn, (available in Market, and discussed here: http://forum.xda-developers.com/showthread.php?t=667581), is excellent for this purpose, there are various common PPI settings, and again mostly personal choice, a little experimentation with resolution and density will allow you to find what you prefer.
Hope this helps clear things up a little
Thanks for this, it helps alot!
vertical lines issue
just to add to the above: the vertical lines issue some have is related to choosing the wrong panel type. Chosing the correct one will solve the problem.
Wrong panel make errors display, ok! But Can it lead to additional consumption of the battery?
Dark-Side said:
Wrong panel make errors display, ok! But Can it lead to additional consumption of the battery?
Click to expand...
Click to collapse
I suspect it may, since display errors such as vertical streaks, pixel errors, colour issues etc are actually caused by a mismatch between the OS drivers and the actual physical electronics, and it's possible that the panel may demand more power than it would normally, I'd have to bench test this to be sure, but it's probably easier just to use the correct panel type setting.
The correct panel type should lead to a 'normal' demand on the battery.
zenity said:
I suspect it may, since display errors such as vertical streaks, pixel errors, colour issues etc are actually caused by a mismatch between the OS drivers and the actual physical electronics, and it's possible that the panel may demand more power than it would normally, I'd have to bench test this to be sure, but it's probably easier just to use the correct panel type setting.
The correct panel type should lead to a 'normal' demand on the battery.
Click to expand...
Click to collapse
I use panel 2... I go to use panel 3 to test this. panel 1 make for me pixel errors. I'll report here.
Thank you
EDIT: no difference between panel 2 or 3 on my kais130
Thanks! That helps a lot.
I havd a thought, which is to change a physical LCD panel for my kaiser, HVGA or VGA... Is that possible? I would look into some electronic files later...
i guess that our chip has max resolution only 320x240 so no higher resolution
but as I look in the pdadb.net there are some devices with higher resolution and same chipset as ours so perhaps it is possible
It is unlikely to be possible to use another panel, since there are a lot of differences with the interface, it's not just the chipset, but how it's wired, plus higher resolution panels may need extra address lines which are not present in our kaisers.
For those of you experimenting with LCD Density settings. You may wish to try the following density settings.
100
121
144
169
196
Remember, pixels are square, so the density settings should reflect this, also the extreme ends of this table are just that, extreme
zenity said:
For those of you experimenting with LCD Density settings. You may wish to try the following density settings.
100
121
144
169
196
Remember, pixels are square, so the density settings should reflect this, also the extreme ends of this table are just that, extreme
Click to expand...
Click to collapse
density 106 works very well with 240x320 if the build is designed for 320x480. I'm using that on the CyanogenMod port. Haven't tried it with other builds though. I did try 107 once with another build but that did not turn out very well.
106? that should really look a little blurry, but I think it depends on the resolution that the build was designed for, however I think I'd find it a little small personally, have you tried 100? it should look clearer than 106, although I have noticed that some people just prefer a certain density regardless of the actual mathematically 'correct' one.
zenity said:
...
Panel Type:....
.... On Windows Mobile this difference can be detected by the OS, however on Android this is not possible, ...
Click to expand...
Click to collapse
So how do I detect which panel in winmo?
I don't like the idea of just stabbing blindly in the dark and hoping I get it right.
Basically? Stab in the dark, there is no way in wm or android to know which type is fitted, type 2 seems most common, and is usually a 'safe' default, if the graphics/colours are wrong, you probably have type 1, if you have issues waking from sleep then you probably have type 3. So try panel 2 first.
Sent from my HTC Dream using Tapatalk
I'm running Android on my HTC Tilt and am using panel 2. I tried panel 1 and the colors were off so Panel 2 seems good.
But the problem I am having is that when I open up the dialer, it doesn't fit correctly on the screen, the bar which shows which numbers you have entered covers up the numbers 1,2,3 and the sides are cropped.
Everything else seems to be fine why is the dialer messed up?
Should I try changing density its at default right now.
I personally like to use 110, but every time I open detail application on Market, it gave me force close. Facebook for Android does that too (I mean FC) whenever I open detail message or upload picture from gallery.. I've tried 106, 104 and 100 and still having the same problem.. it's not happening when I use 120 for density, everything seems work properly normal.. is that common or I have to do something to fix that problem?
Thats not normal behaviour for market, although it has been known to be a little flakey on some builds, however this is unlikely to be related to lcd density, since density only affects the visual appearance of the screen, not the OS itself.
Which Panel?2 or 3?
Am using HTC Tytn II and recently i tried almost all Android builds(donut,eclair,froyo) on my device.panel 1 shows some pixel errors and panel 2 and 3 makes no big difference for me, both settings showing a white flash screen on wake up!
and panel 3 i feel little smudge,not sure.panel 2 wake up with white flash screen and follows by grains(just like noisy TV screen).All these for two seconds.after that TYTN II behave normally.Any body can help me please?
stajan said:
Am using HTC Tytn II and recently i tried almost all Android builds(donut,eclair,froyo) on my device.panel 1 shows some pixel errors and panel 2 and 3 makes no big difference for me, both settings showing a white flash screen on wake up!
and panel 3 i feel little smudge,not sure.panel 2 wake up with white flash screen and follows by grains(just like noisy TV screen).All these for two seconds.after that TYTN II behave normally.Any body can help me please?
Click to expand...
Click to collapse
As previously stated, panel 2 is the most common of all.
As for the white flash and grainy display, this is due to the fact that we have to "fake v-sync" in order to display anything on our screens. Remember, Android was not designed for our Kaisers, but developers got it to run, piece by little piece, really well on our devices. There will always be drawbacks to this as the hardware doesn't really meet the requirements of what Android was developed for.
If you want to see whats going on when you have a white screen or snow, slide the keyboard open and press "Fn-left softkey". this brings up a screen that shows you what Android is doing.
To return to the main screen, press "Fn-right softkey".
Hope this helps...

[Kernel MOD] (Auto)brightness corrections

Hi,
this is a topic I want to start in order to help the development of more intelligent brightness control for Galaxy S (probably regional variants of it will benefit as well).
It began with my PM to some of kernel DEVs that I've noticed brownish color instead of black on ONE brightness setting. My idea was to omit that one brightness level.
Overnight, I already got two responses. One that it should be no problem and one that the link I sent might lead to fixing the problem I mentioned as well (color correction).
The other, connected to brightness topic, thing I've noticed is that auto control of it is retarded. First, it's too jumpy without any reason (like let's say change of outside brightness) and second it likes to set level that burn the eyeballs. I've never had such problem on my CM Hero.
Here's my original PM:
embrion said:
Hi,
I'm PMing you as the most popular kernels coders.
Long story short: SAMOLED screens like to make black or similar colors brownish at low brightness. I've (and not only me) noticed that there's a step just about min. when it starts to be brown and a next step after that it magically stops. The idea is to omit this step at all or just in auto brightness table. I believe It's doable by using those methods.
The original story begins here from the first half of #522 post
Like I've wrote there, this problem exists in all kernels and all color temperature variants of them + stock one.
If you're interested, please respond me. If not, also respond as I'd like to know if I can count on anything.
Thanks
Click to expand...
Click to collapse
Some links that might help:
[SOLUTION] Fix for minimum screen brightness! [10/13 - adjustable]
Kernel makers, please add the ability to adjust auto brightness.
[APP] Different auto-brightness
Gizmodo - Why iPhone 4 and Android Brightness Controls Are Effectively Useless
My random thoughts:
One option would be fooling the sensor that it is less bright than it is
Another, more proper I believe, it to modify some brightness tables to leave extreme brightness levels to extreme outside light situations. This one would also help skipping this "brown" brightness level as like I said, it looks to be only one level
Color correction MIGHT fix "brown" problem too, but I'm not sure as COLD and WARM kernel variants didn't changed this brown problem (unless colors are optimized only for some of the levels like I've read at VOODOO site)
CM 6 already has such brightness level options in Settings-> CM Settings - > User interface -> Automatic backlight -> Use custom(just checked on my Hero) so probably lot of code can be reused (as I believe there is CM for Galaxy S)
Kernel DEVs, fell free to hijack this thread. It is to help your cooperation (unless each one of you prefer to solve problems on they own ) Btw. don't be offended if I didn't included you in the DEVs list I've sent my PM. It was late and I PMed only those I've noticed that they kernels I've used. All of you are more than welcomed.
Other, please don't post "I cannot see any brown", and those one that can see it, please stop posting about info after first 5 people do
I'm so happy to read this threat. I had posted questions about display and auto brightness a couple of months ago in the questions section but never received any credible responses.
My problem is that when I turn auto brightness on, not only does my display get exceptionally dark, but it becomes very noticeable that e.g. grey turns more brownish. Comparing my display to yet another Galaxy S confirmed my suspicions that this is not they way the display is supposed operate, i.e. compared to mine the other Galaxy stayed a lot brighter in equal lighting conditions and the grey remained grey (instead of brownish-grey like mine). I compared the grey tones of the numeric buttons in the stock Dialer APP to conclude this.
I suspectED the light sensor might be defective, but I have run the test menu on a couple of Galaxies (*#0589#) and the units always display the same values when put next to mine.
You might see why this is bugging me so much, it seems my galaxy's display is not using less battery even though I get less brightness than the others on auto brightness. Unless I manually bump up the brightness to full the colors on my screen look dull (grey turns Brownish, and over all it looks not as alive) as compared to other units. Simply bumping the brightness up is of course not an option, this drain the battery like crazy.
EDIT: I too have tried the various Kernels, hardcore warm and cold, voodoo w/ color fix sadly all to no avail
EDIT2: @embrion The above all doesn't explain why our phones have this problem, but the far majority of Galaxy S phones doesn't. Of course I cannot statistically back this up, but I have not physically seen any other device that gets brown on autobrightness like ours. Any Ideas?
Do you say your friend's Galaxy S doesn't turn brownish or it does but gives higher brightness than your device in same lighting conditions?
embrion said:
Do you say your friend's Galaxy S doesn't turn brownish or it does but gives higher brightness than your device in same lighting conditions?
Click to expand...
Click to collapse
It does not turn brown and appears much brighter in equal lighting w/ auto brightness ON. I edited my post above, please read again if it was unclear before. Thank you!!
You should check it at manual brightness at level set few steps higher than min. I'd like to separate brownish display problem at one brightness level from inproper light sensor measure
embrion said:
You should check it at manual brightness at level set few steps higher than min. I'd like to separate brownish display problem at one brightness level from inproper light sensor measure
Click to expand...
Click to collapse
Like I said, the light sensor does not give an improper measure, the readings in *#0589# menu are equal across the devices (including mine). The brownish color tones do, to some degree, disappear if the brightness bar is set two ticks to the right of minimum.
(Auto)brightness corrections
Original Auto Brightness level is too high & sluggish.
It 's need to fix like a voodoo Brightness level fix (2.1 only).
schiphol said:
Like I said, the light sensor does not give an improper measure, the readings in *#0589# menu are equal across the devices (including mine). The brownish color tones do, to some degree, disappear if the brightness bar is set two ticks to the right of minimum.
Click to expand...
Click to collapse
Yes, mine too. Second step from min. setting. I'll ask guys at my local forums to get some statistics. If your friend doesn't have such problem at the same color/theme than it must be display fault
embrion said:
Yes, mine too. Second step from min. setting. I'll ask guys at my local forums to get some statistics. If your friend doesn't have such problem at the same color/theme than it must be display fault
Click to expand...
Click to collapse
Which CSC code do you have? I mine was originally XEN (Netherlands). The units I tested that did not have the problem were all DBT (german Sim free). Just asked my brother and he says his phone also gets brownish (also XEN). Have to check product codes later, will update then.
Mine is XEE (Orange, Poland)
Supercurio did some tinkering with those settings:
https://github.com/project-voodoo/l...a2/Kernel/drivers/video/samsung/s3cfb_mdnie.c
I suspect this is the file we need to modify;
Code:
mDNIe_data_type mDNIe_UI[]=
{
#ifdef CONFIG_VOODOO_MDNIE
// Voodoo color: optimized UI mode
// reduce the sharpness filter radius to make it much closer
// to the real fuzzyness introduced by the SAMOLED Pentile pattern
// color saturation boost on everything is also disabled because
// it causes harm on stock settings (exaggerated colors)
0x0084, 0x0040,
0x0090, 0x0000,
0x0094, 0x0FFF,
0x0098, 0x005C,
0x009C, 0x0613,
0x00AC, 0x0000,
0x00B4, 0x0A00,
0x00C0, 0x0400,
0x00C4, 0x7200,
0x00C8, 0x008D,
0x00D0, 0x00C0,
END_SEQ, 0x0000,
Any thoughts and datasheet quotations on this? Because seriously I see just random numbers in this.
Some interesting code begins around line 315, but seriously I'm clueless
Another interesting file:
https://github.com/project-voodoo/l...2/Kernel/drivers/video/samsung/s3cfb_tl2796.c
My screen has brownish/reddish deep grays on brightness settings under 16-17%. However when I set it over 17% and use screen filter app deep grays are NOT brownish/reddish, this means there is definitely something with lower brightness settings.
Xan, check out the link I've posted in the first post. He gives sources that might be helpful
And the problem appears only at 2nd step of brightness (counted from zero brightness)
embrion said:
Xan, check out the link I've posted in the first post. He gives sources that might be helpful
And the problem appears only at 2nd step of brightness (counted from zero brightness)
Click to expand...
Click to collapse
@embrion so did you pm Supercurio? What did he say? It's too bad this color/sharpness fixing will probably be put on a back burner what with Gingerbread and CM7 development. D*RN IT! I tried an app in the market that is more precise than the built-in slider. Try it out Adjbrightness (free). I punched in all values possible between 2-255. The tipping point (where the browness is gone) lies at when you go from 34 to 35. Is this the same for everyone suffering from this problem. Please remove all apps like e.g. 'screen filter' before you try!
For me crucial step is going from
/ # echo 53 > /sys/devices/platform/s3cfb/spi_gpio.3/spi3.0/backlight/s5p_bl/brightness
to 54, however I'm running trasig's voodoo.
While 54 and over looks ok, lower values are... reddish/pinkish.
@schiphol: yes I did but no response. In dark colored Gingerbread era, this problem will be become more and more evident.
@xan: dzieki I'll flash latest Darky as it is based on trasig's voodoo and try your fix.
--edited--
Supercurio just responded me, I'll let you know about results
embrion said:
@schiphol: yes I did but no response. In dark colored Gingerbread era, this problem will be become more and more evident.
@xan: dzieki I'll flash latest Darky as it is based on trasig's voodoo and try your fix.
--edited--
Supercurio just responded me, I'll let you know about results
Click to expand...
Click to collapse
No fix there, just a different behaviour...
Would like to see this in next voodoo, might even write some simple user interface for this.
I have an idea but its not quite clear yet, however if this patch will let most users 'calibrate' their screens.. I think I'll give simple GUI a shot.
@embrion
Could you perhaps upload the screenshots you talked about in R64's thread so I can replicate. Because of different kernels and settings I want to try and establish beyond a doubt that the problem we're having is of the same nature and root cause. Thanks
This wont be visible on screenshots. You need to make a photo, problably with DSLR and know how to do it
I'll try it today and let you know
According to Supercurio, this is Samsung's color profile deviation, not SAMOLED fault itself.
Anything software broken can be software fixed
@schiphol, xan: yes, it won't be noticed at screenshots, I've already compared R64's black notification bar screenshots and my brown ones. Color picker showed a little difference in color (R:24, G:24, B:24 or something VS RGB: 0, 0, 0 - true black). Such difference should'n be visible and is not visible from software screenshot point of view but Samsung color profile makes 24,24,24 brown IN REAL LIFE while 0,0,0 is still black. I repeat, they're both black at screenshots no matter which brightness level is set, but only 0,0,0 black doesn't look like brown when viewed by bare human eye. Samsung profile at this brightness treats 24,24,24 as brown while it should as black.
--edited--
You're right, Xan. It's just another, ( but 1337 ) method of changing the brightness. I thought there's a plaintext table with levels accessible to change by hand
Hi Ok I have kept the brightness at 2 clicks to the right from minimum to stop grey from looking grey-brown all through today. Now my display accounts for 95% of the battery usage, it has never been this high before. The battery is at 25% whilst I only used the display for 44 minutes.
Thats ridiculous battery drainage and should be taken into careful consideration when a fix is developed for this issue. Are you guys having a similar experience??

Better control over brightness

For amateur astronomy use, I needed to be able to bring down my A43's LCD brightness to a very low level. After a bit of experimenting, here is a very simple app that lets you have a darker screen than the OS normally allows:
http://code.google.com/p/superdim
It requires root.
This is my first independent Android app, so no doubt I screwed up in some way.
arpruss said:
For amateur astronomy use, I needed to be able to bring down my A43's LCD brightness to a very low level. After a bit of experimenting, here is a very simple app that lets you have a darker screen than the OS normally allows:
http://www.mediafire.com/?zwsg7aeqtcqogpm
It requires root.
This is my first independent Android app, so no doubt I screwed up in some way.
Click to expand...
Click to collapse
Nice, if you need it, make it. Personally, I find using Night Mode in Chainfire better than simply turning down brightness. It turns the brightness down, and renders everything in red, or whatever color you choose, but red is the correct choice to retain night sensitivity.
Obviously, I probably wouldn't watch a movie like that, but it's great for when I'm bow-fishing by full moon and want to change songs or something without wrecking my night vision.
For astronomy purposes, ChainFire3D's night mode won't be enough. At the lowest normal system backlight setting, if one is fully dark adapted under a dark sky, the amount of light leaking through the black pixels will be enormous--the screen will look grey rather than black (well, I haven't tried it, but I have experience with other devices). What one needs to do for serious night vision protection is to BOTH turn the view to red with ChainFire3D AND dim the backlight to a very low level with this app. And I am not even sure this will be fully satisfactory, because on my A43 the amount of light leakage is really big.
By the way, I posted a new version and source, and renamed the project to SuperDim. I also added a toggle for the power LED, since they made it green rather than red.
arpruss said:
For astronomy purposes, ChainFire3D's night mode won't be enough. At the lowest normal system backlight setting, if one is fully dark adapted under a dark sky, the amount of light leaking through the black pixels will be enormous--the screen will look grey rather than black (well, I haven't tried it, but I have experience with other devices). What one needs to do for serious night vision protection is to BOTH turn the view to red with ChainFire3D AND dim the backlight to a very low level with this app. And I am not even sure this will be fully satisfactory, because on my A43 the amount of light leakage is really big.
By the way, I posted a new version and source, and renamed the project to SuperDim. I also added a toggle for the power LED, since they made it green rather than red.
Click to expand...
Click to collapse
Hmm. That's good to know for the A43. I'd like to know what you think of the night mode in chainfire, just because there aren't many other people who worry about this topic. I live in St. Louis, a big city, so you probably have less ambient light, but I also wonder if my A101 gets darker than the A43. Even at night, I can turn it down to the point that I really can't read a damn thing.
Great idea with the Power LED. Once again, I don't think light levels drop low enough in St. Louis for it to bother me, but I hadn't even thought of disabling it.
To really be dark adapted, you need to be away from white light for about 45 minutes. (Though I find that after 15 minutes the payoff diminishes.) It's not going to happen outdoors in a big city.
I added profiles (three night, two day), and integrated SuperDim with ChainFire3D, so if you have ChainFire3D installed, you can control its night mode directly from SuperDim, and even include its night mode setting in a profile.
For my own use, I wanted a red screen dim profile for astronomy, a green screen dim profile for reading books in the dark, a dim full color profile for other night use, a bright green profile sometimes for reading books in the day, and a full color bright profile. But you can save whatever you want in the five profile slots.
I've been using figuring out the light control stuff for SuperDim as an opportunity for learning how to program for Android in preparation for writing (not from scratch--I got a donation of the AstroTools source code under the GPL to start with, and I may port some code from open2sky and AstroInfo for PalmOS) a high-end astronomy app. (I'm an experienced PalmOS developer, but quite new to Android.) I'm actually quite pleased. I was dreading java (I've usually developed in C), but I am finding Android development, especially with Eclipse, surprisingly pleasant.
arpruss said:
To really be dark adapted, you need to be away from white light for about 45 minutes. (Though I find that after 15 minutes the payoff diminishes.) It's not going to happen outdoors in a big city.
I added profiles (three night, two day), and integrated SuperDim with ChainFire3D, so if you have ChainFire3D installed, you can control its night mode directly from SuperDim, and even include its night mode setting in a profile.
For my own use, I wanted a red screen dim profile for astronomy, a green screen dim profile for reading books in the dark, a dim full color profile for other night use, a bright green profile sometimes for reading books in the day, and a full color bright profile. But you can save whatever you want in the five profile slots.
I've been using figuring out the light control stuff for SuperDim as an opportunity for learning how to program for Android in preparation for writing (not from scratch--I got a donation of the AstroTools source code under the GPL to start with, and I may port some code from open2sky and AstroInfo for PalmOS) a high-end astronomy app. (I'm an experienced PalmOS developer, but quite new to Android.) I'm actually quite pleased. I was dreading java (I've usually developed in C), but I am finding Android development, especially with Eclipse, surprisingly pleasant.
Click to expand...
Click to collapse
Yeah, my point exactly. I'm about 15 miles away from the city when out on the river, but that's not really far enough to get out of the city's light pollution.
Great work integrating with Chainfire. I'll give it a try next time I'm out. It should be nice having everything in one place.
I'll be looking forward to the astronomy app. It's been a looong time since I've worked on one, but I still have the DOS version of CyberSky I helped develop, so I guess I still have a fondness for them.
I posted 0.23, fixing a bug that made day2 = day1.
And I posted 0.30, adding support for toggling keyboard and button backlight on devices that have them.
I use screen filter to make my screen dimmer..
its in the market..
1. As far as I can tell, Screen Filter doesn't adjust the backlight--it only lowers the LCD pixel intensity. As a result, even if you turn Screen Filter to something really low like 2%, if you take your device to a dark area, you'll see a grey glow coming from the screen, because the backlight leaks through the black pixels.
To remedy the grey glow issue, you need to turn the backlight down, but the OS only lets you turn it so far down (10/255 on my A43; some phones only allow 20/255) without directly writing to /sys/class/leds/lcd-backlight/brightness (which needs root, and is what SuperDim does).
I also suspect that in a dark area, with brightness set to a low value, lowering backlight will produce a more visually attractive image than Screen Filter, because lowering the backlight will make a black background be fairly black.
That's all for backlit LCD screens. OLED screens are a completely different kettle of fish, and SuperDim won't help you much there (though it'll still let you set themes controlling LEDs and ChainFire3D nightmode).
2. I generalized the code a little so it should let you control whatever LEDs your device has, as long as they have a /sys/class/leds/*/brightness interface.
3. By the way, ChainFire3D's nightmode is a touch imperfect: if you set it to red, I think it just turns off the green and blue channels. That means that green and blue visual elements cease to be visible. A somewhat better nightmode would convert the image from RGB to grayscale, and then turn off the green and blue channels. I don't know how easy to implement that would be--I don't know enough about GL blending (I tried to google but couldn't find an answer simple enough for me to understand).
arpruss said:
1. As far as I can tell, Screen Filter doesn't adjust the backlight--it only lowers the LCD pixel intensity. As a result, even if you turn Screen Filter to something really low like 2%, if you take your device to a dark area, you'll see a grey glow coming from the screen, because the backlight leaks through the black pixels.
To remedy the grey glow issue, you need to turn the backlight down, but the OS only lets you turn it so far down (10/255 on my A43; some phones only allow 20/255) without directly writing to /sys/class/leds/lcd-backlight/brightness (which needs root, and is what SuperDim does).
I also suspect that in a dark area, with brightness set to a low value, lowering backlight will produce a more visually attractive image than Screen Filter, because lowering the backlight will make a black background be fairly black.
That's all for backlit LCD screens. OLED screens are a completely different kettle of fish, and SuperDim won't help you much there (though it'll still let you set themes controlling LEDs and ChainFire3D nightmode).
2. I generalized the code a little so it should let you control whatever LEDs your device has, as long as they have a /sys/class/leds/*/brightness interface.
3. By the way, ChainFire3D's nightmode is a touch imperfect: if you set it to red, I think it just turns off the green and blue channels. That means that green and blue visual elements cease to be visible. A somewhat better nightmode would convert the image from RGB to grayscale, and then turn off the green and blue channels. I don't know how easy to implement that would be--I don't know enough about GL blending (I tried to google but couldn't find an answer simple enough for me to understand).
Click to expand...
Click to collapse
I assumed it did convert to greyscale first before tinting, but you may be right. I'll have to think how to test that.
msticninja said:
I assumed it did convert to greyscale first before tinting, but you may be right. I'll have to think how to test that.
Click to expand...
Click to collapse
Quick test: If you set CF3D to blue, anything that's pure yellow goes black. For example, if you go to SuperDim, the left half of the brightness adjustment bar is yellow and disappears completely.
Another test: go with the browser to http://www.w3schools.com/html/html_colors.asp in red mode. Notice that the blue 0000FF and green 00FF00 samples can't be distinguished from 000000 black, while the red FF0000 can't be distinguished from white FFFFFF.
arpruss said:
Quick test: If you set CF3D to blue, anything that's pure yellow goes black. For example, if you go to SuperDim, the left half of the brightness adjustment bar is yellow and disappears completely.
Another test: go with the browser to http://www.w3schools.com/html/html_colors.asp in red mode. Notice that the blue 0000FF and green 00FF00 samples can't be distinguished from 000000 black, while the red FF0000 can't be distinguished from white FFFFFF.
Click to expand...
Click to collapse
Seems like pretty clear results to me. I wonder if converting to greyscale first would even be feasible, from a coding, and from a processor cycle standpoint. It would have to use extra power, but I wonder how much. It doesn't really matter for me, everything I need to do is doable, but interesting nonetheless.
msticninja said:
Seems like pretty clear results to me. I wonder if converting to greyscale first would even be feasible, from a coding, and from a processor cycle standpoint. It would have to use extra power, but I wonder how much. It doesn't really matter for me, everything I need to do is doable, but interesting nonetheless.
Click to expand...
Click to collapse
There may be a way of hardware accelerating this.

[Q] Z1compact: getting minimum brightness LOWER

Hello Everyone,
I have a problem with my amami and I doubt I am the only one but for some reason people do hardly complain: the brightness even at lowest possible setting is still too bright.
I had this back when I had original FW and I am having the same issue with CM11 (latest nightlies). Using manual control or auto-brightness doesn't make much difference, i.e. in a totally dark room the ambient light sensor reports 0Lux and the screen is still too bright.
I found a workaround already (the ScreenFilter app that people recommend all over the internet) but it sucks because it heavily reduces the picture quality, i.e. visibly reduces contrast and especially the gray color resolution. And it also doesn't reduce power consumption like real brightness value change would do.
I looked around for possible solutions and there is a trick with writting a new value of current limit to Linux settings (some mA value between 0 and 20 to some max_current file in procfs). And this really helps but also impacts the maximum brightness, the screen is hardly ready in sun light with reduced current.
Is there a silver bullet? I am thinking about writing an app for that but it would require SU permissions and is kinda dirty to implement. Can anyone recommend a better solution?
have you tried the xposed Modul "minimum brightness" ?
Install Lux Brightness. from play store.
You can overboost it or make the screen so dark that you can't even see it.
Another great screen mod is Twilight which basically dims the screen red based on clock so it helps fall sleep faster when using phone before bed.
New Folder said:
Install Lux Brightness. from play store.
Click to expand...
Click to collapse
Yes, another vote for Lux. It lets you set brightness to negative levels, mine is usually around -50%. https://play.google.com/store/apps/details?id=com.vito.lux&hl=en
Vote for Lux here too.
Nothing comes close
camaro322hp said:
Yes, another vote for Lux. It lets you set brightness to negative levels, mine is usually around -50%. https://play.google.com/store/apps/details?id=com.vito.lux&hl=en
Click to expand...
Click to collapse
Thanks for the hint. I tried the Lite version and AFAICS it simply uses the same trick as ScreenFilter and other "sub-zero" regulators, putting an alpha overlay on top of the image stack.
You can identify this kludge easily by looking at the button areas, they don't get darker anymore. And you can see the black level not getting real black, i.e. the power consumption is not reduced.
However, Lux seems to be one of the better toys because of the plugin interface. Unfortunately there is no HW plugin for Sony devices but judging by the quick look at the Nexus-4 plugin (it's open source!!) it should be possible to adopt this method to Z1 as well. So, maybe when someone could eventually implement that.
xposed Modul "minimum brightness" works, i tested it for you. you can make the screen dim to complete black with your normal display brightness slider without grey or black overlay. it just sets down the minimum brightness level to 1 or 0 (default is 10 or 20), so it should also work with enabled auto brightness
chertVdetali said:
I looked around for possible solutions and there is a trick with writting a new value of current limit to Linux settings (some mA value between 0 and 20 to some max_current file in procfs). And this really helps but also impacts the maximum brightness, the screen is hardly ready in sun light with reduced current.
Click to expand...
Click to collapse
As far as i remember, /proc is only used to call upon information, not to set specific values. What you are looking for is placed within /sys.
To be precise in /sys/devices/leds-qpnp-ee125e00/leds/wled:backlight/. There you will find a file called max_current with which you can easily control the brightness and set it to a very low level. Note that this actually dims the screen and not just applies a filter like most apps do...
One drawback is that the value will change again after you restarted the device. I set up a little flow with Automate β that takes care of this for me. I find this solution a lot better than all the screen filter apps.
This is true for CyanogenMod 11 and GreatDevs Kernel. It might be different on Stock. I know that the path for my Nexus 7 is sys/class/leds/lcd-backlight.
I hope this helps you a little bit.
rob rich said:
xposed Modul "minimum brightness" works, i tested it for you. you can make the screen dim to complete black with your normal display brightness slider without grey or black overlay. it just sets down the minimum brightness level to 1 or 0 (default is 10 or 20), so it should also work with enabled auto brightness
Click to expand...
Click to collapse
I am wondering how you can claim that the result is complete black. Calling this black is like saying "TN monitors have good black values" (I know such people, they change their mind quickly when they see my Eizo with a VA panel at night).
No, seriously, the default was already 10 (see config.xml in cm11 repo) and the difference between 1 and 10 is hardly visible. It's still way too bright for work without eye strain in the darkness.
@Wooaarr: thanks, this is apparently the way to go, I just need to find time to configure it. And yes, of course, the file is in sysfs and not procfs (automated typing, when I grew up with Linux there was no sysfs out there ).
chertVdetali said:
I am wondering how you can claim that the result is complete black. Calling this black is like saying "TN monitors have good black values" (I know such people, they change their mind quickly when they see my Eizo with a VA panel at night).
No, seriously, the default was already 10 (see config.xml in cm11 repo) and the difference between 1 and 10 is hardly visible. It's still way too bright for work without eye strain in the darkness.
@Wooaarr: thanks, this is apparently the way to go, I just need to find time to configure it. And yes, of course, the file is in sysfs and not procfs (automated typing, when I grew up with Linux there was no sysfs out there ).
Click to expand...
Click to collapse
when i disable autobrightness and push the slider to the left my screen goes completely off, so you wanna say that screen off isnt black? funny
chertVdetali said:
Thanks for the hint. I tried the Lite version and AFAICS it simply uses the same trick as ScreenFilter and other "sub-zero" regulators, putting an alpha overlay on top of the image stack.
You can identify this kludge easily by looking at the button areas, they don't get darker anymore. And you can see the black level not getting real black, i.e. the power consumption is not reduced.
However, Lux seems to be one of the better toys because of the plugin interface. Unfortunately there is no HW plugin for Sony devices but judging by the quick look at the Nexus-4 plugin (it's open source!!) it should be possible to adopt this method to Z1 as well. So, maybe when someone could eventually implement that.
Click to expand...
Click to collapse
Interesting information, I did not know that. You are correct, the navigation buttons are brighter than the rest of the screen at negative values. I had noticed that before but didn't know why. Works well enough for me though.
rob rich said:
when i disable autobrightness and push the slider to the left my screen goes completely off, so you wanna say that screen off isnt black? funny
Click to expand...
Click to collapse
Well, you claim that it works for me because you tested it on your device. So... yeah, why not, I could say what you mentioned above just following the same logics. :silly:

Changing your DPI Settings (No-Root)

Hi all, please see the below thread. Only sharing the info as this was posted on the Verizon N4 forum.
http://forum.xda-developers.com/note-4-verizon/general/root-want-to-modify-dpi-t2960644
Hope this helps...
As indicated below some touchwiz native apps are affected.
List of known affected applications by changing DPI settings:
S-View (for S-View covers -- slightly misaligned but functional)
Touchwiz Stock Dialer (slightly misaligned but functional -- other non-stock options exist such as Hangouts or ExDialer)
Fingerprint lockscreen (arrow pointing to finger print scanner off center)
Exchange email (stock Samsung Email)
Stock Camera App
Just FYI to get some easy download links:
http://forum.xda-developers.com/note-4-verizon/general/root-want-to-modify-dpi-t2960644
Enable USB debugging on yer phone
-> http://www.mediafire.com/download/a4hd8y0c1iakysk/Samsung-Usb-Driver-v1.5.49.0.exe
Samsung USB drivers you'll need installed
-> http://forum.xda-developers.com/showthread.php?p=48915118#post48915118
ADB / Fastboot installer
navigate to C:\adb\ and then run the command they give in the thread
adb shell wm density 540
(not confirmation will be sent but your phone should prompt you to 'allow' your computer to send adb commands to it.).
Restart phone
DPI settings are now at 540. original DPI settings are 640 BTW
imnoob55 said:
Hi all, please see the below thread. Only sharing the info as this was posted on the Verizon N4 forum.
http://forum.xda-developers.com/note-4-verizon/general/root-want-to-modify-dpi-t2960644
Hope this helps...
Click to expand...
Click to collapse
I came across that thread a few hours ago. It's pretty neat to be able to drop the density and make more use of display space (could even drop it down to 384 and make it look more like a tablet), but it has its problems. Samsung apps (Dialer, camera, S Note, S-View, etc) will lose their screen alignment and/or only cover a portion of the screen when altering the density. Finding an alternate dialer was easy enough, but I'm having trouble finding a camera app similar to stock in quality, and was unsuccessful at replacing the S-View...
redphazon said:
I came across that thread a few hours ago. It's pretty neat to be able to drop the density and make more use of display space (could even drop it down to 384 and make it look more like a tablet), but it has its problems. Samsung apps (Dialer, camera, S Note, S-View, etc) will lose their screen alignment and/or only cover a portion of the screen when altering the density. Finding an alternate dialer was easy enough, but I'm having trouble finding a camera app similar to stock in quality, and was unsuccessful at replacing the S-View...
Click to expand...
Click to collapse
Yup unfortunately that is a side-effect of doing this. Only way to do it that I am aware of conventionally would be via xposed or loading in custom TW apps, both not possible. Hangout dialer works well, for this. TW stock browser is not affected. My S-Note is not affected either, too. Dialer and S-View are (not unusable, they just are not center-aligned any longer as their height/width are set on static widths rather than proportional % when Samsung set up the layout.) Maybe they'll change that in L.
BTW I use Nova for launcher and Hangouts as my dialer. I do use an s-view case, though, which is of course impacted.
imnoob55 said:
Yup unfortunately that is a side-effect of doing this. Only way to do it that I am aware of conventionally would be via xposed or loading in custom TW apps, both not possible. Hangout dialer works well, for this. TW stock browser is not affected. My S-Note is not affected either, too. Dialer and S-View are (not unusable, they just are not center-aligned any longer as their height/width are set on static widths rather than proportional % when Samsung set up the layout.) Maybe they'll change that in L.
BTW I use Nova for launcher and Hangouts as my dialer. I do use an s-view case, though, which is of course impacted.
Click to expand...
Click to collapse
I'm also using Nova Launcher. I did download ExDialer at first, but I went to Hangouts Dialer instead since ExDialer has a trial period and costs money.
S Note is largely unaffected yes, but when you open the camera for copying documents, the square used for aligning the camera with the document is off-center. It doesn't seem to hurt functionality in any way, though. Oddly enough, the camera when used in S Note is fullscreen...
As far as S-View goes, I'm thinking about removing the flip cover. S-View is nice, but I'm always trying to not get smudges on the cover screen on top of the phone display, so the cover is a little bit cumbersome to me when holding it. Seeing how much better the phone looks at a lower density makes me lean even closer to just getting rid of it. That leaves me with just the camera replacement...
Exchange email is also broken... when you reply to an email, the screen font is set to eleventybillion.
-----
Sent with my Galaxy Note 4
Can anyone confirm if this impacts the play store? Typically changing the dpi on the whole device would prevent the play store from downloading some apps.
Sent from my SAMSUNG-SM-N910A using XDA Free mobile app
jfenton78 said:
Can anyone confirm if this impacts the play store? Typically changing the dpi on the whole device would prevent the play store from downloading some apps.
Sent from my SAMSUNG-SM-N910A using XDA Free mobile app
Click to expand...
Click to collapse
I haven't seen any problems with the Play Store yet, though I haven't been installing much of anything, either. The few apps I've installed so far gave me no trouble.
Also, just found out that the stock camera has no problems with accurate button detection when the phone is turned sideways for landscape rotation, though it's still not fullscreen. You have to guess where the buttons are on the screen in portrait when the density is changed.
Couple of tips:
if you get an error about the device being offline make sure you've got the current ADB installed. The link provided for the adb and fastboot didn't work for me because the file didn't install. The program is just an auto run zip file. you can open with 7-zip and just extract the adb files.
also if you get an error about the device being unauthorized you must select no action on the windows pop up and always perform this action. the phone should then get a pop up with the RSA key number and ask you to authorize. hope this helps.
540 DPI is pretty nice.
I was okay with the dialer and lockscreen, but the camera made me go back to 640. In vertical shooting mode, the touch points for all the icons, including the shutter button, is misaligned and is very annoying. What a shame as 540 looked AWESOME.
cj00ta said:
Exchange email is also broken... when you reply to an email, the screen font is set to eleventybillion.
-----
Sent with my Galaxy Note 4
Click to expand...
Click to collapse
Thanks! Just added to the top thread under impacted apps
Does this effectively change the resolution? I'm curious if lowering the DPI would give positive improvement to high-end game performance. Can anyone shed some light here?
Conkrete said:
Does this effectively change the resolution? I'm curious if lowering the DPI would give positive improvement to high-end game performance. Can anyone shed some light here?
Click to expand...
Click to collapse
It doesn't change the resolution. What it changes is the drawing size of on-screen content which is directly from the 'dpi setting' of the phone.
It's a little complicated to explain but this is how it works;
The phone's default screen density (DPI) setting 640, this is done because that's how many dots per inch of the physical screen there is (a phone of similar screen size would have a similar dpi). This value is stored in your phone's build.prop and is read by numerous applications, it might not match exactly the 'real' dpi of the screen but its normally very close to it.
By changing it lower in dpi you're instructing to applications you actually have a smaller screen size, thus to fit content (i.e words not being HUGE on a small screen) content is drawn to that dpi setting you're providing in build.prop.
Now to go into why we have certain issues when changing the dpi.
This is basically due to how the app did its layout sizing (do I base content on "actual size" of the screen-size or do I base it on "actual density" of the screen density in build.prop? Most apps, since they're targeting to be used with dozens of devices of all sorts of different sizes, will be designed where the layout of content is dependent upon dpi. A layout would be I want a rectangular box on the bottom that has height 10px and width 100%, so that effectively means the width is based on the proportion of the screen size (the OS controls this, its just a matter of scaling). This is why you once had 5 items to show now has 8 items to show in a listbox. The size of the listbox in this case would be based on actual density while the content (text etc.) inside would be based on actual size (scaling I would think is limited to a min/max actual size for text).
Samsung can get away with this on their stock apps because in their mind when they build their roms they are only going to be used on that specific device. They're starting to go away from this, however, and are starting to make their layouts more typical that of a normal application. You have somewhat less control of the layout going from actual size to actual density.
*keep in mind you can actually set parameters for both. Such as if I wanted something to be 10% in width but only up to 2.5 inches in actual size this effectively means that it will scale until it reaches 2.5" and then scale no longer.
I hope that makes sense. Resolution really doesn't have a role at all in this, you're always at the same resolution (4K) and this is handled by the lower-level kernel and GPU firmware. I don't think there's a way to change this at the app layer but than again I have really no background in android development.
*please if anything comes off as inaccurate please point out, I am from a XAML/.NET development background and linux/unix embedded systems and really I focused on back-end/databases/services and not really front-endy stuff. This is how it is handled in XAML though and I have seen android uses the same principals.
imnoob55 said:
It doesn't change the resolution. What it changes is the drawing size of on-screen content which is directly from the 'dpi setting' of the phone.
It's a little complicated to explain but this is how it works;
The phone's default screen density (DPI) setting 640, this is done because that's how many dots per inch of the physical screen there is (a phone of similar screen size would have a similar dpi). This value is stored in your phone's build.prop and is read by numerous applications, it might not match exactly the 'real' dpi of the screen but its normally very close to it.
By changing it lower in dpi you're instructing to applications you actually have a smaller screen size, thus to fit content (i.e words not being HUGE on a small screen) content is drawn to that dpi setting you're providing in build.prop.
Now to go into why we have certain issues when changing the dpi.
This is basically due to how the app did its layout sizing (do I base content on "actual size" of the screen-size or do I base it on "actual density" of the screen density in build.prop? Most apps, since they're targeting to be used with dozens of devices of all sorts of different sizes, will be designed where the layout of content is dependent upon dpi. A layout would be I want a rectangular box on the bottom that has height 10px and width 100%, so that effectively means the width is based on the proportion of the screen size (the OS controls this, its just a matter of scaling). This is why you once had 5 items to show now has 8 items to show in a listbox. The size of the listbox in this case would be based on actual density while the content (text etc.) inside would be based on actual size (scaling I would think is limited to a min/max actual size for text).
Samsung can get away with this on their stock apps because in their mind when they build their roms they are only going to be used on that specific device. They're starting to go away from this, however, and are starting to make their layouts more typical that of a normal application. You have somewhat less control of the layout going from actual size to actual density.
*keep in mind you can actually set parameters for both. Such as if I wanted something to be 10% in width but only up to 2.5 inches in actual size this effectively means that it will scale until it reaches 2.5" and then scale no longer.
I hope that makes sense. Resolution really doesn't have a role at all in this, you're always at the same resolution (4K) and this is handled by the lower-level kernel and GPU firmware. I don't think there's a way to change this at the app layer but than again I have really no background in android development.
*please if anything comes off as inaccurate please point out, I am from a XAML/.NET development background and linux/unix embedded systems and really I focused on back-end/databases/services and not really front-endy stuff. This is how it is handled in XAML though and I have seen android uses the same principals.
Click to expand...
Click to collapse
Extremely helpful and great info. Possibly the best response I've received from XDA. Thank you for the info. I have found a couple root apps that claim to change resolution but I've been hoping to find a non-root alternative.

Categories

Resources