• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!
  • Fill out your device list and let everyone know which phones you have!    Edit Your Device Inventory

[Kernel][CM7.2]For MiRaGe

Search This thread

frankusb

Senior Member
Mar 8, 2011
280
153
Hi,

I've built some kernels that can be applied to the MiRaGe CM7 build. Below are the changes of each kernel build.

The 16 BPP frame buffer uses 16 bits per pixel instead of 32 bits per pixel. This reduces the amount of memory used for the screen frame buffer. It also means that when Android updates the screen, it has to move half the amount of data. This has the potential to increase performance. The potential downside is color banding. Using fewer bits for each pixel reduces the number of colors that can be displayed. I haven't noticed a difference in how the screen looks.

Compiling the kernel for speed versus size tells the compiler to use more memory if it will make the code run faster. This tradeoff uses less than 256k more memory (the Nook has 524288k) for the kernel.

By default, the backlight is turned on and off at a base frequency of 128 times per second. If you are at 50% brightness it will be turned on and off 128 times in one second. The 256Hz kernel doubles the rate at which the backlight is turned on and off as some people can see the backlight flashing at 128Hz. Since the switching is done in an interrupt to the processor, there is more overhead at the higher frequency so it's not a free change. Only use if the default screen seems to flicker.

encore_kernel_07302012.zip:
- 16 BPP frame buffer
- Compiled with -O2 instead of -Os (speed instead of size)

encore_kernel_256Hz_07302012.zip:
- same as above and 256Hz backlight instead of 128Hz

encore_kernel_07122012.zip:
- 16 BPP frame buffer
- Compiled with -O2 instead of -Os (speed instead of size)

encore_kernel_256Hz_07122012.zip:
- same as above and 256Hz backlight instead of 128Hz

Attached are CWM zips you can apply to probably any recent MiRaGe build.

Frank
 

Attachments

  • encore_kernel_256Hz_07122012.zip
    2.9 MB · Views: 138
  • encore_kernel_07122012.zip
    2.9 MB · Views: 104
  • encore_kernel_256Hz_07302012.zip
    2.9 MB · Views: 138
  • encore_kernel_07302012.zip
    2.9 MB · Views: 226
  • wifi_SOD_patch.zip
    515.3 KB · Views: 154
Last edited:

mateorod

Inactive Recognized Developer
Nov 16, 2011
1,982
3,503
New Orleans
www.gigmasters.com
The kernel is the engine that drives your rom. It is the core of the system, responsible for drivers, modules and managing the communication between hardware and software, among other responsibilities. You already have one, you just don't have this one made just for you.

Looks like frankusb has put it into a flashable zip, so just flash it over your Mirage rom.

Alternatively, for emmc installs, you could just take out the uImage file from the zip, rename it to kernel and put it in any rom you want.

If you have an sd install, just replace the uImage in your boot partition with his.

------------------------------------------------------------------------------------------

off-topic

I've been following the 3.x kernel thread over at the Nook Tablet forum, as well as building and configuring my own from keyodi's source.

I'm not very good at it yet, though, and that's kind. My kernel builds tend to boot and I was able to enable the NAT stuff on my own (before the new .config was pushed) but that's as far as I have gone with it.

I wouldn't mind having a thread where kernel development was discussed, although frankusb, maybe you would rather keep the discussion on your kernel.

Here is fattire's post at the acclaim forum, urging people to try and build their own kernel. (with links and guides)
 

Henk Poley

Senior Member
Mar 24, 2011
64
17
For the uninitiated, what does this do? (layman's terms)

- The LEDs that bring light to the screen flash twice faster, so it should be less noticeable, especially at lower brightness levels and a darker room. You might have noticed that cameras (see Youtube) also see the Nook Color flickering.
- The screen is now updated at 60Hz instead of 44 frames per second. Most laptop/desktop LCDs are run at 60Hz. Can make it possible to have smoother graphics. Does give the programs a harder time to keep up if they try to do this, since they need to push 40% more image data per second.
- With half the bits (32 vs 16) to push to the display, graphics get slightly faster. I believe this is optional in Cyanogenmod settings.

---------- Post added at 07:47 AM ---------- Previous post was at 07:31 AM ----------

Over from the Mirage main topic:
I'm talking about the backlight. On a static image I can distinctly see the corners of the display in a stroboscopic effect when I move the Nook Color by hand. As if the image quickly disappears and then time travels to another spot ;). It's quite annoying and possibly tiring.

(Probably spaced ~78mm)
With this kernel build I now see the flickering at a reduced distance when I move the nook color by hand. It does look like half the distance, like it should :p

Still noticeable though.

There is a bug now, that ever so often 100% brightness in RootDim puts the backlight brightness all the way down. I wonder if the unmodified driver has a similar race condition in writing the value to the PWM divider register.
 
Last edited:
  • Like
Reactions: frankusb

bcvictory

Senior Member
Oct 6, 2011
566
482
Bendigo
The kernel is the engine that drives your rom. It is the core of the system, responsible for drivers, modules and managing the communication between hardware and software, among other responsibilities. You already have one, you just don't have this one made just for you.

Looks like frankusb has put it into a flashable zip, so just flash it over your Mirage rom.

Alternatively, for emmc installs, you could just take out the uImage file from the zip, rename it to kernel and put it in any rom you want.

If you have an sd install, just replace the uImage in your boot partition with his.

------------------------------------------------------------------------------------------

off-topic

I've been following the 3.x kernel thread over at the Nook Tablet forum, as well as building and configuring my own from keyodi's source.

I'm not very good at it yet, though, and that's kind. My kernel builds tend to boot and I was able to enable the NAT stuff on my own (before the new .config was pushed) but that's as far as I have gone with it.

I wouldn't mind having a thread where kernel development was discussed, although frankusb, maybe you would rather keep the discussion on your kernel.

Here is fattire's post at the acclaim forum, urging people to try and build their own kernel. (with links and guides)

Are you building for Nook Color or Tablet?

Sent from my NookColor using xda premium
 

frankusb

Senior Member
Mar 8, 2011
280
153
There is a bug now, that ever so often 100% brightness in RootDim puts the backlight brightness all the way down. I wonder if the unmodified driver has a similar race condition in writing the value to the PWM divider register.

You are very observant. This driver has an interesting detail.

There are cases where there is a 1/8 second delay before the brightness level is set.

I've noticed even before my change of frequency that sometimes when it dimmed the screen due to inactivity, it would flash full brightness.

Side note: This driver was originally written by Nokia, probably for either the 770 or N800. The 770 was my first internet tablet.

Frank
 

frankusb

Senior Member
Mar 8, 2011
280
153
I wouldn't mind having a thread where kernel development was discussed, although frankusb, maybe you would rather keep the discussion on your kernel.

I'm certainly OK with this thread discussing kernel development. I've been enjoying building the Nook kernel lately.

I doubt there's much to discuss about my particular kernel, at least so far, the changes are very minimal and mostly well known. The LED PWM frequency is the only new change.

Frank
 

manic77

Member
Mar 24, 2005
27
6
Ur kernel makes the reading easier on eyes. Especially white background isn't too bright on webpages.

I think CPU adds 5% performance gains too.

However, can I apply this kernel on top of future upcoming mirage releases?
 

mateorod

Inactive Recognized Developer
Nov 16, 2011
1,982
3,503
New Orleans
www.gigmasters.com
So...have you done any experimenting with different toolchains? I was originally using the one that I built making cm9, but then switched to the prebuilt linaro tool chain. I just recently installed the new 12.04 with 4.7 in it. I have seen the claim, (mrg666 makes it, for instance) that using certain toolchains gives performance advantages. I can't tell personally, but it's not like I put 'em through benchmarking or stress tests.

Anyway, the point is that I am debating building and configuring the 12.04 toolchain myself. What do you know, do you think it's worth it? I may just do it for the learning experience, regardless.
 

frankusb

Senior Member
Mar 8, 2011
280
153
So...have you done any experimenting with different toolchains? I was originally using the one that I built making cm9, but then switched to the prebuilt linaro tool chain. I just recently installed the new 12.04 with 4.7 in it. I have seen the claim, (mrg666 makes it, for instance) that using certain toolchains gives performance advantages. I can't tell personally, but it's not like I put 'em through benchmarking or stress tests.

Anyway, the point is that I am debating building and configuring the 12.04 toolchain myself. What do you know, do you think it's worth it? I may just do it for the learning experience, regardless.

I started with gcc 4.4 and then moved to Linaro 4.5. The kernel size got smaller but that's about all I can say. I have not come up with a good way to benchmark just the kernel (since that's all I'm recompiling). Android benchmarks don't seem repeatable to me. Way too much variance between runs. Also Android benchmarks aren't really testing just the kernel.

Then a source code change was required to move to Linaro 4.6. That's what I'm currently compiling with.

I did make one build with Linaro 4.7 from the 12.04 release but the kernel did not boot for me.

Frank
 

halrulez

Senior Member
Nov 30, 2007
920
200
I didn't think the screen could get any better. I would use this but every time the screen times out it doesn't want to turn back on or when it does it gets really dim and touch is non responsive.

Sent from my NookColor using Tapatalk 2
 

360Razir

Senior Member
Jan 6, 2011
564
86
Just installed Mirage 070512 and now confused as to which kernel to go with. Do I stick with the kernel from Mirage or do I flash one of the kernels in the OP? If OP, what are differences of the 3 kernels? I like the idea of 256, but not sure if 7/1 kernel also has 256? Appreciate any advice on this.

Sent from my NookColor using xda premium
 

frankusb

Senior Member
Mar 8, 2011
280
153
Just installed Mirage 070512 and now confused as to which kernel to go with. Do I stick with the kernel from Mirage or do I flash one of the kernels in the OP?

Your choice, the stock mrg666 kernel will work. Probably any of the 3 I built will work as well with the 070512 Mirage build.

If OP, what are differences of the 3 kernels? I like the idea of 256, but not sure if 7/1 kernel also has 256? Appreciate any advice on this.

The 3 kernels are snapshots in time of 3 mrg666 stock kernels with my changes listed. The 7/1 kernel does not have a 256Hz refresh rate. I'd be glad to make one for you if you or others are interested. The increased refresh rate didn't do anything for me, but a 16 bit frame buffer and a different optimization did.

Frank
 
  • Like
Reactions: Maverik18

360Razir

Senior Member
Jan 6, 2011
564
86
Your choice, the stock mrg666 kernel will work. Probably any of the 3 I built will work as well with the 070512 Mirage build.

The 3 kernels are snapshots in time of 3 mrg666 stock kernels with my changes listed. The 7/1 kernel does not have a 256Hz refresh rate. I'd be glad to make one for you if you or others are interested. The increased refresh rate didn't do anything for me, but a 16 bit frame buffer and a different optimization did.

Frank

Thanks for the feedback, Frank. I will start with your 7/1 kernel and go from there. If you can make 256 with 7/1 then great...I will gladly put it through its paces. Thanks for all your efforts thus far.

Sent from my NookColor using xda premium
 

Top Liked Posts

  • There are no posts matching your filters.
  • 12
    Hi,

    I've built some kernels that can be applied to the MiRaGe CM7 build. Below are the changes of each kernel build.

    The 16 BPP frame buffer uses 16 bits per pixel instead of 32 bits per pixel. This reduces the amount of memory used for the screen frame buffer. It also means that when Android updates the screen, it has to move half the amount of data. This has the potential to increase performance. The potential downside is color banding. Using fewer bits for each pixel reduces the number of colors that can be displayed. I haven't noticed a difference in how the screen looks.

    Compiling the kernel for speed versus size tells the compiler to use more memory if it will make the code run faster. This tradeoff uses less than 256k more memory (the Nook has 524288k) for the kernel.

    By default, the backlight is turned on and off at a base frequency of 128 times per second. If you are at 50% brightness it will be turned on and off 128 times in one second. The 256Hz kernel doubles the rate at which the backlight is turned on and off as some people can see the backlight flashing at 128Hz. Since the switching is done in an interrupt to the processor, there is more overhead at the higher frequency so it's not a free change. Only use if the default screen seems to flicker.

    encore_kernel_07302012.zip:
    - 16 BPP frame buffer
    - Compiled with -O2 instead of -Os (speed instead of size)

    encore_kernel_256Hz_07302012.zip:
    - same as above and 256Hz backlight instead of 128Hz

    encore_kernel_07122012.zip:
    - 16 BPP frame buffer
    - Compiled with -O2 instead of -Os (speed instead of size)

    encore_kernel_256Hz_07122012.zip:
    - same as above and 256Hz backlight instead of 128Hz

    Attached are CWM zips you can apply to probably any recent MiRaGe build.

    Frank
    3
    The kernel is the engine that drives your rom. It is the core of the system, responsible for drivers, modules and managing the communication between hardware and software, among other responsibilities. You already have one, you just don't have this one made just for you.

    Looks like frankusb has put it into a flashable zip, so just flash it over your Mirage rom.

    Alternatively, for emmc installs, you could just take out the uImage file from the zip, rename it to kernel and put it in any rom you want.

    If you have an sd install, just replace the uImage in your boot partition with his.

    ------------------------------------------------------------------------------------------

    off-topic

    I've been following the 3.x kernel thread over at the Nook Tablet forum, as well as building and configuring my own from keyodi's source.

    I'm not very good at it yet, though, and that's kind. My kernel builds tend to boot and I was able to enable the NAT stuff on my own (before the new .config was pushed) but that's as far as I have gone with it.

    I wouldn't mind having a thread where kernel development was discussed, although frankusb, maybe you would rather keep the discussion on your kernel.

    Here is fattire's post at the acclaim forum, urging people to try and build their own kernel. (with links and guides)
    1
    For the uninitiated, what does this do? (layman's terms)

    - The LEDs that bring light to the screen flash twice faster, so it should be less noticeable, especially at lower brightness levels and a darker room. You might have noticed that cameras (see Youtube) also see the Nook Color flickering.
    - The screen is now updated at 60Hz instead of 44 frames per second. Most laptop/desktop LCDs are run at 60Hz. Can make it possible to have smoother graphics. Does give the programs a harder time to keep up if they try to do this, since they need to push 40% more image data per second.
    - With half the bits (32 vs 16) to push to the display, graphics get slightly faster. I believe this is optional in Cyanogenmod settings.

    ---------- Post added at 07:47 AM ---------- Previous post was at 07:31 AM ----------

    Over from the Mirage main topic:
    I'm talking about the backlight. On a static image I can distinctly see the corners of the display in a stroboscopic effect when I move the Nook Color by hand. As if the image quickly disappears and then time travels to another spot ;). It's quite annoying and possibly tiring.

    (Probably spaced ~78mm)
    With this kernel build I now see the flickering at a reduced distance when I move the nook color by hand. It does look like half the distance, like it should :p

    Still noticeable though.

    There is a bug now, that ever so often 100% brightness in RootDim puts the backlight brightness all the way down. I wonder if the unmodified driver has a similar race condition in writing the value to the PWM divider register.
    1
    I'm having trouble downloading the 7-1 kernel from my desktop (404 not found). Mirror or link fix, please?

    Weird - uploaded to a file host as well.

    Frank
    1
    Just installed Mirage 070512 and now confused as to which kernel to go with. Do I stick with the kernel from Mirage or do I flash one of the kernels in the OP?

    Your choice, the stock mrg666 kernel will work. Probably any of the 3 I built will work as well with the 070512 Mirage build.

    If OP, what are differences of the 3 kernels? I like the idea of 256, but not sure if 7/1 kernel also has 256? Appreciate any advice on this.

    The 3 kernels are snapshots in time of 3 mrg666 stock kernels with my changes listed. The 7/1 kernel does not have a 256Hz refresh rate. I'd be glad to make one for you if you or others are interested. The increased refresh rate didn't do anything for me, but a 16 bit frame buffer and a different optimization did.

    Frank