Reduce Game Lag on Nexus 7 and Other Devices with Seeder Entropy Generator
Update: Due to questionable gains and inherent drawbacks, we recommend that users please read this explanation before proceeding.
Despite some truly top notch hardware, some high end Android devices still seem to have trouble with some games. There are mods out there to fix these lag issues, as the underlying cause usually equates to some issue with the processor not working to its full capacity. There is now a new fix for Nexus 7 devices to help reduce game lag.
XDA Senior Member lambgx02 originally posted the Seeder Entropy Generator to stop lag on various Android devices. The running premise was that most game lag was caused by entropy. As lambgx02 explains:
So, I was experiencing significant lag as we all do from time to time, and decided I was going to get to the bottom of it.
After tracing and debugging for hours, I discovered the source of 90% of Android’s lag. In a word, entropy (or lack thereof).
Google’s JVM, like Sun’s, reads from /dev/random. For all random data. Yes, the /dev/random that uses a very limited entropy pool.
Random data is used for all kinds of stuff.. UUID generation, session keys, SSL.. when we run out of entropy, the process blocks. That manifests itself as lag. The process cannot continue until the kernel generates more high quality random data.
So, I cross-compiled rngd, and used it to feed /dev/urandom into /dev/random at 1 second intervals.
The result of fixing this issue is that games run much, much smoother. XDA Recognized Contributor bradman117 tested and confirmed it worked for the Nexus 7 and posted where more users can see it. So far, users have have reported excellent results. Installation is easy as well, as it’s a simple zip to flash in recovery.
However, if you do decide to give it a shot be aware of the very real caveats of decreased security due to inferior random number generation, as well as decreased battery life. As stated by lambgx02:
- There is a (theoretical) security risk, in that seeding /dev/random with /dev/urandom decreases the quality of the random data. In practice, the odds of this being cryptographically exploited are far lower than the odds of someone attacking the OS itself (a much simpler challenge).
- This may adversely affect battery life, since it wakes every second. It does not hold a wakelock, so it shouldn’t have a big impact, but let me know if you think it’s causing problems. I can add a blocking read to the code so that it only executes while the screen is on. On the other hand, many of us attribute lag to lacking CPU power. Since this hack eliminates almost all lag, there is less of a need to overclock, potentially reducing battery consumption.
While lambgx02 states that the risk of being exploited due to the urandom -> random seeding is low, any increased risk is too much for a daily driven device in our book. We advise all those who are interested to give this a second thought, though, due to the potential risks. However, we understand why some in heavily controlled environments, where cryptographic strength is not of high importance, may want to give this a shot. To see more, check out the Nexus 7 thread as well as the original thread.