[Kernel][surnia] Squid Kernel for Moto E LTE (2015)

Search This thread

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
This is my Squid Kernel for the 2015 Moto E LTE. It's based off the stock kernel available on Motorola's GitHub. Flash it using TWRP. Bug reports and contributions are welcome.

This is a development thread. Questions should go in the Q&A thread.

Disclaimer:
This is for the 2015 Moto E LTE only! Version r22b and up require ROMs with an updated ACDB (audio calibration database) loader, such as LineageOS 14.1 builds from January 2018 and newer. If your ROM has an incompatible ACDB loader, you may experience low audio volume. Stick with version r22 for Marshmallow ROMs (including stock) and older Nougat ROMs without an updated ACDB loader.

You must update your modem to the Android 5.1 version or newer for the r12 kernel and newer to work properly. You can find modems in the modems thread. If you can't find an up to date modem for your variant and are running a Marshmallow ROM, try the older r15c version. The r6-r11e kernels are for 5.1 ROMs only. Don't flash this on the 3G model. This kernel is provided AS-IS, with no warranties. I am not responsible for bricking your device. Flash at your own risk.

Features:
  • LED notification support
  • Moderately undervolted
  • Updated to Linux 3.10.108
  • Synced with latest CodeAurora changes
  • Improved memory caching backported from Linux 3.15
  • Improved storage performance
  • Optimized ARM crypto routines
  • Updated f2fs and WiFi drivers
  • FIOPS and BFQ I/O schedulers
  • Lionfish CPU governor
  • IntelliPlug CPU hotplug (by faux123)
  • KCAL MDP5 colour control (by savoca)
  • Improved zRAM backported from Linux 4.9
  • Vibration intensity control
  • Compiled with Linaro GCC 7.3 and optimized for Cortex A53
  • Stripped down and optimized configuration

Release History:
Code:
r23: August 15, 2018
- Fixed surnia front camera
- Tonnes of security patches
- Updated binder
- Compiled with Linaro GCC 7.3.1

r22b: January 13, 2018
- Audio driver fixes
- Requires a ROM with an updated ACDB loader

r22: January 11, 2018
- Security patches
- Updated camera drivers

r21: December 6, 2017
- Updated to Linux 3.10.108
- Security patches
- Oreo support related patches

r20: August 2, 2017
- Updated to Linux 3.10.107
- Tonnes of security patches from many places
- Updated sdcardfs from Google
- Updated WiFi driver from CAF
- Compiled with Linaro GCC 6.3.1

r19: January 1, 2017
- Added support for Nougat ROMs
- Updated zRAM from Linux 4.9
- Updated (optimized) FUSE from CAF
- Kernel ASLR and many info leak fixes
- ARM PXN support for exploit mitigation
- Tons of security updates
- Some CAF updated from LA.BR.1.2.9_rb1.10
- Fixed kernel panic on VPN disconnection
- Updated compiler to Linaro GCC 6.2.1

r18: November 8, 2016
- Tons of security updates
- Updated to Linux 3.10.104
- Updates from Motorola Harpia kernel
- GPU driver latency reduction

r17: August 16, 2016
- Security updates
- Updated to Linux 3.10.102
- CyanogenMod compatibility updates

r16g: May 16, 2016
- Security updates

r16f: April 14, 2016
- Reverted f2fs update
- Updated zRAM from Linux 4.4

r16d: April 8, 2016
- Security fixes
- Vibration intensity control
- Updated f2fs
- Patches for CM13 compatibility
- IntelliPlug disabled by default
- Built with Linaro GCC 5.3

r16: March 20, 2016
- Updated to Linux 3.10.101
- Updated to Motorola MPD24.107
- Updated WiFi driver from CAF
- IO optimizations under heavy load
- Miscellaneous bug and security fixes

r15c: March 5, 2016
- Updated to Linux 3.10.99
- Updated camera driver configuration
- Compatible with Marshmallow stock ROM

r15b: Feburary 27, 2016
- Updated to Linux 3.10.98
- ARMv8 crypto related fixes
- Use ARMv8 crypto for adopted storage

r15: February 6, 2016
- Updated to Linux 3.10.96
- Updated f2fs from Linux 4.5
- Kernel library optimizations
- Improved CFQ IO scheduler
- Improved kernel PRNG
- ARMv8 accelerated crypto support
- Better use of ARM instruction set
- Added minimum CPUs parameter for IntelliPlug
- Miscellaneous bug fixes

r14b: January 23, 2016
- Fixed low/poor call audio
- Security fix for CVE-2016-0728

r14: January 16, 2016
- MARSHMALLOW ONLY
- Updated to Motorola Marshmallow sources
- Updates from CAF LA.BR.1.2.7_rb1.1
- Security and bug fixes from Linux 3.12.52
- Compatible with Marshmallow stock ROM
- More than a dozen CAF security fixes
- Miscellaneous bug fixes
- Somewhat smoother animations

r12: December 25, 2015
- FOR CM13 ONLY!!!
- Updated to Linux 3.10.94
- Updated to LA.BR.1.1.3_rb1.41
- Updated zRAM
- Improved memory caching scheme from Linux 3.15
- Optimized memory allocation and management
- Optimized CPU scheduler
- Optimized performance event tracking

r11e: December 1, 2015
- Fixed some cpufreq races
- Minor bug fixes

r10g: November 11, 2015
- Patched Pronto CR-930533 vulnerability
- Fixed possible use-after-free in zRAM
- Updated to Linux 3.10.93
- Compiled with Linaro GCC 5.1

r10f: November 8, 2015
- Updated to Linux 3.10.92
- Updated to CAF LA.BR.1.1.3_rb1.36
- Updated to Moto Maxx 2 Kernel
- Security and stability improvements

r10d: October 26, 2015
- Fixed r10c SELinux regression on stock ROM

r10c: October 24, 2015
- Fixed encryption
- Patches for Android 6.0 compatibility

r10b: October 4, 2015
- Fixed move app to SD card issue
- Cleaned up DTBs to reduce size

r10: October 3, 2015
- Added KCAL colour control (by savoca)
- Added optimized crypto routines for ARM
- Updated to Linux 3.10.90
- Optimized memory performance
- General cleanup and optimization

r9e: October 1, 2015
- Updated to lux kernel sources
- Updated to Linux 3.10.89
- Updated to LA.BR.1.1.3_rb1.32
- Small tweaks and optimizations

r8: Septemver 15, 2015
- Updated to Linux 3.10.88
- Updated to LA.BR.1.13_rb1.29
- Improved zRAM backported from Linux 4.1
- WiFi driver background scan changes
- Added adaptive low memory killer
- Included the WLAN NV patch I had posted earlier

r7f: August 25, 2015
- Downgraded WiFi driver to LA.BR.1.1.2_rb1.18
- This actually fixes the WiFi crashes :D

r7e: August 25, 2015
- Added LED notification support
- Updated WiFi driver to LA.BR.1.2.4_rb1.14
- Maybe this will fix bootloop issues for affected users

r7d: August 23, 2015
- Updated everything to LA.BR.1.1.3_rb1.25
- There were some interesting WLAN driver changes
- Maybe this will fix WiFi bootloop issue in r7c

r7c: August 20, 2015
- Updated WiFi driver to LA.BR.1.1.3_rb1.23
- Maybe it will fix DHCP issues with certain routers

r7b: August 19, 2015
- New universal flashing script
- Works on any surnia variant and ROM

r7: August 19, 2015
- Updated to Linux 3.10.87
- Updated to Qualcomm LA.BR.1.1.3_rb1.24
- Updated to Motorola MMI-LPI23.72-9
- Added a few extra WiFi driver options
- Added CPU touch booster feature

r6: July 28, 2015
- Rebased for use on 5.1 ROMS ONLY
- Updated to Qualcomm's LA.BR.1.1.3_rb1.21 release
- Updated to Linux 3.10.84
- Updated WiFi drivers
- Added my new and original Lionfish CPU governor
- Added Conservative CPU governor
- Added faux123's IntelliPlug CPU hotplug implementation
- Added BFQ IO scheduler
- Numerous bug fixes

r5: April 21, 2015
- Updated to Linux 3.10.75
- Added FIOPS I/O scheduler
- Updated f2fs drivers backported from Linux 4.0
- Milder undervolt for improved stability and compatibility
- Uses full Boost Mobile ramdisk for CDMA variant

r4: April 15, 2015
- Updated to Linux 3.10.74
- Milder undervolt to better support all devices
- Cleaned up defconfig and device tree
- Various minor bugfixes

r3c: April 5, 2015
- Fixed still picture taking with front-facing camera

r3: April 4, 2015
- Initial public release

Downloads:
Main downloads tab

XDA:DevDB Information
Squid Kernel for Styx LTE, Kernel for the Moto E 2015

Contributors
squid2
Source Code: https://github.com/sultanqasim/android_kernel_motorola_msm8916

Kernel Special Features: undervolted, lionfish, fiops, intelliplug, latest Linux and Qualcomm fixes

Version Information
Status: Stable
Current Stable Version: r23
Stable Release Date: 2018-08-15

Created 2015-04-04
Last Updated 2018-08-15
 

Attachments

  • squid-r3-screenshot.png
    squid-r3-screenshot.png
    67.2 KB · Views: 124,689
Last edited:

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
Squid TWRP

I also have a TWRP build that uses my kernel, compiled from source with the OmniRom tree. Links for it are it are on the main download tab. My device tree for it is on GitHub. My device tree is based off Cybojenix's TWRP tree for this device, but it uses a special stripped down version of my kernel instead of the prebuilt stock kernel. That is why my TWRP is 4 MB smaller than the Cybojenix version.

The latest build of my TWRP shows the correct time and includes hardware encryption support (thanks @vlcdsm).

UPDATE: I've made a separate thread for this TWRP.
 
Last edited:

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
Installation Instructions

The r11e version is the latest for Lollipop 5.1 ROMs. CM12.1 users and LPI23.29 stock users should use the version posted here. Users of the new LPI23.72 stock 5.1.1 should use the osprey version instead. See squid_kernel_r11e-osprey-stock.zip

For CM13 and similar Marshmallow ROMs, use my latest version (r12 at the moment).

My suggested install procedure:
  1. Boot into TWRP (make sure you have a suitable ROM installed)
  2. Flash my kernel zip.
  3. Reboot into Android.

After following these steps, you will be running my new kernel. You can verify in Settings->About phone->Kernel version. If the ROM behaves strangely on first boot, reboot the phone. It should be stable after the second boot.

Attention 5.0 Stock ROM Users:
The latest versions of this kernel (r6 and up) are only for 5.1 ROMs. I suggest that you update to 5.1 if possible. If you need to stay on 5.0 and want my kernel, you will need to use the old r5 version.
 
Last edited:

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
Lionfish and Recommended Settings

My new Lionfish governor combines traits of the conservative, ondemand, and interactive governors. It is designed to maximize battery life without noticeably impacting performance. It responds quickly to heavy loads (similar to ondemand and interactive) while staying within the region of optimal CPU performance per watt. With moderate loads, it periodically votes to raise, maintain, or decrease the frequency. When there are enough votes to change the frequency, it is ramped up and down gradually. The voting mechanism reduces frequency jitter compared to ondemand and conservative. My testing had found that this governor uses moderate frequencies (where efficiency is optimal) more effectively than interactive, ondemand, and conservative. This improved frequency distribution results in a moderate reduction in CPU power consumption while maintaining responsiveness comparable to the interactive governor.

IntelliPlug is enabled by default in this kernel. The default governor is still interactive. For optimal performance and battery life, I recommend using the fiops IO scheduler, Lionfish governor, and lowering the CPU idle frequency to 400 MHz (from the default of 800 MHz). The combination of IntelliPlug, Lionfish, undervolting, and reducing idle to 400 MHz should result in a CPU power consumption reduction of around 20% compared to the stock kernel. This will typically correspond to 8-15% increase in battery life compared to the stock configuration.
 
Last edited:

torch2424

Senior Member
Jun 3, 2012
224
89
Well my phone is acting up, and I need to go ahead and start testing roms and things, but this seems like a great way to go! Anyone try this yet? Or will I be the first one? Thanks for your work dev!
 

pixiebob

Senior Member
May 29, 2010
627
133
montpellier
squid: your kernel is already interesting, developement sound promising.

report:no problem hang or bootloop during boot,

---------- Post added at 09:30 PM ---------- Previous post was at 09:19 PM ----------

wifi not working unable to turn on,
but camera seems to works definitely even with root.
 

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
squid: your kernel is already interesting, developement sound promising.

report:no problem hang or bootloop during boot,

---------- Post added at 09:30 PM ---------- Previous post was at 09:19 PM ----------

wifi not working unable to turn on,
but camera seems to works definitely even with root.

Hmm, WiFi works fine for me. My kernel requires signed kernel modules, but I do provide a Pronto WLAN driver signed for my kernel in the zip. Could you post the output of dmesg right after your phone boots up? Maybe that would give me a hint as to the cause.

Is anyone else having WiFi issues?
 
  • Like
Reactions: TechnoAnder

torch2424

Senior Member
Jun 3, 2012
224
89
Well my phone is acting up, and I need to go ahead and start testing roms and things, but this seems like a great way to go! Anyone try this yet? Or will I be the first one? Thanks for your work dev!

Alright! everything working great! Everything works on my end, but I did notice a SLIGHT slowdown on the device with this kernel, but hey it's totally worth it for the root and everything working :D

My Steps:
I came from a fresh device (Moto E 2015 4g Unlocked GSM) which I never took the time to do anything so here's what i did

1. Unlock Bootloader using this: http://xdaforums.com/moto-e-2015/development/tool-moto-e-toolkit-one-click-unlock-t3047150
- Just follow the step and it worked fine for me! however, It wouldnt allow me to flash the recovery, it would just crash so...
2. Install TWRP from this thread: http://xdaforums.com/moto-e-2015/orig-development/twrp-moto-e-2015-recovery-t3049726
- I had to boot into fastboot (Hold Power and volume Down) and boot into my linux (ubuntu) to run the commands and successfully install the recovery
3. Boot into recovery, and BACKUP BACKUP BACKUP!
- To boot into recovery, I boot into fastboot, then use the volume keys until the little Dialog says recovery, the press power. I made a backup with twrp, Forgetting this step sucks, never forget...
4. Flash the kernel
- I flashed the kernel from twrp first to see if it had root pre-installed but it doesn't (Didnt check, but there was no supersu so I'm assuming so). Also, didnt check camera at this point
5. Install superSU/Root from here: http://download.chainfire.eu/696/SuperSU/ . Thank you to spblinux for this post: http://xdaforums.com/showpost.php?p=59761431&postcount=46
- I flashed the zip through twrp, and everything is working fine, and this is where I am now!

Thanks to the dev for his work. I will report back with more usage and thoguhts later!

Edit: Sorry for the typos, I'm a lazy typer. And Dont forget to hit the thanks button to the devs, and also me if I helped you out!
Edit:Edit: The download link is in the first post, there's some tabs at the top that link to it! (Took me a while to fins it haha)
 
Last edited:

pixiebob

Senior Member
May 29, 2010
627
133
montpellier
Hmm, WiFi works fine for me. My kernel requires signed kernel modules, but I do provide a Pronto WLAN driver signed for my kernel in the zip. Could you post the output of dmesg right after your phone boots up? Maybe that would give me a hint as to the cause.

Is anyone else having WiFi issues?

here dmsg log, good luck
 

Attachments

  • dmsg.txt
    80.4 KB · Views: 270

torch2424

Senior Member
Jun 3, 2012
224
89
Well my phone is acting up, and I need to go ahead and start testing roms and things, but this seems like a great way to go! Anyone try this yet? Or will I be the first one? Thanks for your work dev!

Hmm, WiFi works fine for me. My kernel requires signed kernel modules, but I do provide a Pronto WLAN driver signed for my kernel in the zip. Could you post the output of dmesg right after your phone boots up? Maybe that would give me a hint as to the cause.

Is anyone else having WiFi issues?

Same here, no wifi issues for me! Thanks for the hard work!
 

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
here dmsg log, good luck

I looked through your dmesg log and didn't see anything too noteworthy. I saw one potentially relevant message (below) that came from a piece of code that I added.

Code:
<3>[   21.821810,1] subsys-pil-tz a21b000.qcom,pronto: wcnss: Failed to load blob wcnss.b11. Retrying. ERR -2

In my testing, I had encountered a race condition that caused WiFI firmware blobs to sometimes fail to load. I implemented a hack to retry loading firmware blobs if the initial loading failed. Quite often, at least one blob seems to fail to load the first time through, but it always works on the second attempt. The same thing happened on your end, as wcnss.b11 failed to load the first time through, but it successfully loaded on the second attempt. Anyway, I don't think this blob is the problem.

Have you tried rebooting and checking if WiFi works after that? I've never had any WiFi issues with my kernel, but I just want to rule out a race condition being the cause of your issue.

One more thing: Could you post the output of "cat /proc/modules" when WiFi is not working?
 

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
CDMA Variant Support

On the Q&A thread, bzo22 reported that the Boost Mobile version (XT1526) fails to read the SIM card when running this kernel. I did some preliminary investigation and found that the ramdisks differ. All Canadian variants of the XT1527 (Telus, Videotron, Rogers, and Wind) have the same CID and run the exact same software, free of carrier crapware, bloatware, or spyware. The unlocked variants sold on Motorola's website in the US should also be crapware free, though they have a different CID. However, the Boost Mobile variant is full of carrier specific stuff.
 
Last edited:

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
Test Kernel for CDMA Variant

Alright Boost Mobile people, I've made a test kernel for the CDMA variant. I don't know if it will work. Try it out and let me know whether or not your cellular connectivity works.

For some reason, XDA is giving me an "Upload Error: 500" when trying to post it to the downloads section, so I am attaching it to this post instead.

Reminder: THIS TEST KERNEL IS FOR THE LTE CDMA VARIANT (XT1526) ONLY! For the LTE GSM version (XT1527), use the normal version in the downloads section.
 

Attachments

  • squid_kernel_r3-CDMAtest.zip
    11.2 MB · Views: 363

pixiebob

Senior Member
May 29, 2010
627
133
montpellier
One more thing: Could you post the output of "cat /proc/modules" when WiFi is not working?

sorry but it does nothing:

adb shell
$ cat /proc/modules
cat /proc/modules

---------- Post added at 02:43 PM ---------- Previous post was at 02:24 PM ----------

Have you tried rebooting and checking if WiFi works after that? I've never had any WiFi issues with my kernel, but I just want to rule out a race condition being the cause of your issue.
?

i keep the kernel all the day and it is stable.
concerning wifi i try multiple time to reboot but always unable to turn on

i set minimal frequencie at 200 mhz but the kernel seem unable to reach this minimal ,i think undervolted is the reason of this difficulty being stable at lower frequencie,it is bad for battery life .
 
Last edited:

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
sorry but it does nothing:

adb shell
$ cat /proc/modules
cat /proc/modules

---------- Post added at 02:43 PM ---------- Previous post was at 02:24 PM ----------



i keep the kernel all the day and it is stable.
concerning wifi i try multiple time to reboot but always unable to turn on

i set minimal frequencie at 200 mhz but the kernel seem unable to reach this minimal ,i think undervolted is the reason of this difficulty being stable at lower frequencie,it is bad for battery life .

It looks like the kernel refuses to load modules on your phone. Rather strange, as the provided signed modules seem to work fine for everyone else. What happens when you do this on the phone:
Code:
su
insmod /system/lib/modules/pronto/pronto_wlan.ko

As for the 200 MHz step, I don't think undervolting has anything to do with it. It's probably the governor's fault. Try switching to the ondemand governor. I'm fairly confident that all frequencies will work. With that said, I found that setting the base frequency to 400 MHz gives a smoother experience without hurting battery life noticeably.
 
  • Like
Reactions: TechnoAnder

squid2

Recognized Developer
Mar 9, 2015
1,722
10,983
Ontario
i obtain this on su:

insmod /system/lib/modules/pronto/pronto_wlan.ko
insmod: init_module '/system/lib/modules/pronto/pronto_wlan.ko' failed (Required key not available)

You must have a module version mismatch. This shouldn't happen, as the correct modules are provided in the zip. Which recovery did you use to flash my kernel? Did you use the TWRP linked in the first post, a different TWRP, or a different recovery altogether? When you go into the Settings->About Phone, what does it indicate as the kernel version?
 
  • Like
Reactions: pixiebob

pixiebob

Senior Member
May 29, 2010
627
133
montpellier
You must have a module version mismatch. This shouldn't happen, as the correct modules are provided in the zip. Which recovery did you use to flash my kernel? Did you use the TWRP linked in the first post, a different TWRP, or a different recovery altogether? When you go into the Settings->About Phone, what does it indicate as the kernel version?

oh sorry i understand my mistake, i fastboot flash only boot.
i will install zip.file containing wifi driver.
 

Top Liked Posts

  • There are no posts matching your filters.
  • 94
    This is my Squid Kernel for the 2015 Moto E LTE. It's based off the stock kernel available on Motorola's GitHub. Flash it using TWRP. Bug reports and contributions are welcome.

    This is a development thread. Questions should go in the Q&A thread.

    Disclaimer:
    This is for the 2015 Moto E LTE only! Version r22b and up require ROMs with an updated ACDB (audio calibration database) loader, such as LineageOS 14.1 builds from January 2018 and newer. If your ROM has an incompatible ACDB loader, you may experience low audio volume. Stick with version r22 for Marshmallow ROMs (including stock) and older Nougat ROMs without an updated ACDB loader.

    You must update your modem to the Android 5.1 version or newer for the r12 kernel and newer to work properly. You can find modems in the modems thread. If you can't find an up to date modem for your variant and are running a Marshmallow ROM, try the older r15c version. The r6-r11e kernels are for 5.1 ROMs only. Don't flash this on the 3G model. This kernel is provided AS-IS, with no warranties. I am not responsible for bricking your device. Flash at your own risk.

    Features:
    • LED notification support
    • Moderately undervolted
    • Updated to Linux 3.10.108
    • Synced with latest CodeAurora changes
    • Improved memory caching backported from Linux 3.15
    • Improved storage performance
    • Optimized ARM crypto routines
    • Updated f2fs and WiFi drivers
    • FIOPS and BFQ I/O schedulers
    • Lionfish CPU governor
    • IntelliPlug CPU hotplug (by faux123)
    • KCAL MDP5 colour control (by savoca)
    • Improved zRAM backported from Linux 4.9
    • Vibration intensity control
    • Compiled with Linaro GCC 7.3 and optimized for Cortex A53
    • Stripped down and optimized configuration

    Release History:
    Code:
    r23: August 15, 2018
    - Fixed surnia front camera
    - Tonnes of security patches
    - Updated binder
    - Compiled with Linaro GCC 7.3.1
    
    r22b: January 13, 2018
    - Audio driver fixes
    - Requires a ROM with an updated ACDB loader
    
    r22: January 11, 2018
    - Security patches
    - Updated camera drivers
    
    r21: December 6, 2017
    - Updated to Linux 3.10.108
    - Security patches
    - Oreo support related patches
    
    r20: August 2, 2017
    - Updated to Linux 3.10.107
    - Tonnes of security patches from many places
    - Updated sdcardfs from Google
    - Updated WiFi driver from CAF
    - Compiled with Linaro GCC 6.3.1
    
    r19: January 1, 2017
    - Added support for Nougat ROMs
    - Updated zRAM from Linux 4.9
    - Updated (optimized) FUSE from CAF
    - Kernel ASLR and many info leak fixes
    - ARM PXN support for exploit mitigation
    - Tons of security updates
    - Some CAF updated from LA.BR.1.2.9_rb1.10
    - Fixed kernel panic on VPN disconnection
    - Updated compiler to Linaro GCC 6.2.1
    
    r18: November 8, 2016
    - Tons of security updates
    - Updated to Linux 3.10.104
    - Updates from Motorola Harpia kernel
    - GPU driver latency reduction
    
    r17: August 16, 2016
    - Security updates
    - Updated to Linux 3.10.102
    - CyanogenMod compatibility updates
    
    r16g: May 16, 2016
    - Security updates
    
    r16f: April 14, 2016
    - Reverted f2fs update
    - Updated zRAM from Linux 4.4
    
    r16d: April 8, 2016
    - Security fixes
    - Vibration intensity control
    - Updated f2fs
    - Patches for CM13 compatibility
    - IntelliPlug disabled by default
    - Built with Linaro GCC 5.3
    
    r16: March 20, 2016
    - Updated to Linux 3.10.101
    - Updated to Motorola MPD24.107
    - Updated WiFi driver from CAF
    - IO optimizations under heavy load
    - Miscellaneous bug and security fixes
    
    r15c: March 5, 2016
    - Updated to Linux 3.10.99
    - Updated camera driver configuration
    - Compatible with Marshmallow stock ROM
    
    r15b: Feburary 27, 2016
    - Updated to Linux 3.10.98
    - ARMv8 crypto related fixes
    - Use ARMv8 crypto for adopted storage
    
    r15: February 6, 2016
    - Updated to Linux 3.10.96
    - Updated f2fs from Linux 4.5
    - Kernel library optimizations
    - Improved CFQ IO scheduler
    - Improved kernel PRNG
    - ARMv8 accelerated crypto support
    - Better use of ARM instruction set
    - Added minimum CPUs parameter for IntelliPlug
    - Miscellaneous bug fixes
    
    r14b: January 23, 2016
    - Fixed low/poor call audio
    - Security fix for CVE-2016-0728
    
    r14: January 16, 2016
    - MARSHMALLOW ONLY
    - Updated to Motorola Marshmallow sources
    - Updates from CAF LA.BR.1.2.7_rb1.1
    - Security and bug fixes from Linux 3.12.52
    - Compatible with Marshmallow stock ROM
    - More than a dozen CAF security fixes
    - Miscellaneous bug fixes
    - Somewhat smoother animations
    
    r12: December 25, 2015
    - FOR CM13 ONLY!!!
    - Updated to Linux 3.10.94
    - Updated to LA.BR.1.1.3_rb1.41
    - Updated zRAM
    - Improved memory caching scheme from Linux 3.15
    - Optimized memory allocation and management
    - Optimized CPU scheduler
    - Optimized performance event tracking
    
    r11e: December 1, 2015
    - Fixed some cpufreq races
    - Minor bug fixes
    
    r10g: November 11, 2015
    - Patched Pronto CR-930533 vulnerability
    - Fixed possible use-after-free in zRAM
    - Updated to Linux 3.10.93
    - Compiled with Linaro GCC 5.1
    
    r10f: November 8, 2015
    - Updated to Linux 3.10.92
    - Updated to CAF LA.BR.1.1.3_rb1.36
    - Updated to Moto Maxx 2 Kernel
    - Security and stability improvements
    
    r10d: October 26, 2015
    - Fixed r10c SELinux regression on stock ROM
    
    r10c: October 24, 2015
    - Fixed encryption
    - Patches for Android 6.0 compatibility
    
    r10b: October 4, 2015
    - Fixed move app to SD card issue
    - Cleaned up DTBs to reduce size
    
    r10: October 3, 2015
    - Added KCAL colour control (by savoca)
    - Added optimized crypto routines for ARM
    - Updated to Linux 3.10.90
    - Optimized memory performance
    - General cleanup and optimization
    
    r9e: October 1, 2015
    - Updated to lux kernel sources
    - Updated to Linux 3.10.89
    - Updated to LA.BR.1.1.3_rb1.32
    - Small tweaks and optimizations
    
    r8: Septemver 15, 2015
    - Updated to Linux 3.10.88
    - Updated to LA.BR.1.13_rb1.29
    - Improved zRAM backported from Linux 4.1
    - WiFi driver background scan changes
    - Added adaptive low memory killer
    - Included the WLAN NV patch I had posted earlier
    
    r7f: August 25, 2015
    - Downgraded WiFi driver to LA.BR.1.1.2_rb1.18
    - This actually fixes the WiFi crashes :D
    
    r7e: August 25, 2015
    - Added LED notification support
    - Updated WiFi driver to LA.BR.1.2.4_rb1.14
    - Maybe this will fix bootloop issues for affected users
    
    r7d: August 23, 2015
    - Updated everything to LA.BR.1.1.3_rb1.25
    - There were some interesting WLAN driver changes
    - Maybe this will fix WiFi bootloop issue in r7c
    
    r7c: August 20, 2015
    - Updated WiFi driver to LA.BR.1.1.3_rb1.23
    - Maybe it will fix DHCP issues with certain routers
    
    r7b: August 19, 2015
    - New universal flashing script
    - Works on any surnia variant and ROM
    
    r7: August 19, 2015
    - Updated to Linux 3.10.87
    - Updated to Qualcomm LA.BR.1.1.3_rb1.24
    - Updated to Motorola MMI-LPI23.72-9
    - Added a few extra WiFi driver options
    - Added CPU touch booster feature
    
    r6: July 28, 2015
    - Rebased for use on 5.1 ROMS ONLY
    - Updated to Qualcomm's LA.BR.1.1.3_rb1.21 release
    - Updated to Linux 3.10.84
    - Updated WiFi drivers
    - Added my new and original Lionfish CPU governor
    - Added Conservative CPU governor
    - Added faux123's IntelliPlug CPU hotplug implementation
    - Added BFQ IO scheduler
    - Numerous bug fixes
    
    r5: April 21, 2015
    - Updated to Linux 3.10.75
    - Added FIOPS I/O scheduler
    - Updated f2fs drivers backported from Linux 4.0
    - Milder undervolt for improved stability and compatibility
    - Uses full Boost Mobile ramdisk for CDMA variant
    
    r4: April 15, 2015
    - Updated to Linux 3.10.74
    - Milder undervolt to better support all devices
    - Cleaned up defconfig and device tree
    - Various minor bugfixes
    
    r3c: April 5, 2015
    - Fixed still picture taking with front-facing camera
    
    r3: April 4, 2015
    - Initial public release

    Downloads:
    Main downloads tab

    XDA:DevDB Information
    Squid Kernel for Styx LTE, Kernel for the Moto E 2015

    Contributors
    squid2
    Source Code: https://github.com/sultanqasim/android_kernel_motorola_msm8916

    Kernel Special Features: undervolted, lionfish, fiops, intelliplug, latest Linux and Qualcomm fixes

    Version Information
    Status: Stable
    Current Stable Version: r23
    Stable Release Date: 2018-08-15

    Created 2015-04-04
    Last Updated 2018-08-15
    37
    Lionfish and Recommended Settings

    My new Lionfish governor combines traits of the conservative, ondemand, and interactive governors. It is designed to maximize battery life without noticeably impacting performance. It responds quickly to heavy loads (similar to ondemand and interactive) while staying within the region of optimal CPU performance per watt. With moderate loads, it periodically votes to raise, maintain, or decrease the frequency. When there are enough votes to change the frequency, it is ramped up and down gradually. The voting mechanism reduces frequency jitter compared to ondemand and conservative. My testing had found that this governor uses moderate frequencies (where efficiency is optimal) more effectively than interactive, ondemand, and conservative. This improved frequency distribution results in a moderate reduction in CPU power consumption while maintaining responsiveness comparable to the interactive governor.

    IntelliPlug is enabled by default in this kernel. The default governor is still interactive. For optimal performance and battery life, I recommend using the fiops IO scheduler, Lionfish governor, and lowering the CPU idle frequency to 400 MHz (from the default of 800 MHz). The combination of IntelliPlug, Lionfish, undervolting, and reducing idle to 400 MHz should result in a CPU power consumption reduction of around 20% compared to the stock kernel. This will typically correspond to 8-15% increase in battery life compared to the stock configuration.
    24
    Squid Kernel r19

    This is a pretty big release. The headline change is added support for Nougat ROMs. This kernel is still backwards compatible with Marshmallow ROMs. I also updated to newer compiler (Linaro GCC 6.2.1). However, there are a bunch of improvements beyond just catching up the the CyanogenMod 14.1 kernel.

    Updated zRAM
    I've updated zRAM to be mostly in sync with Linux 4.9. The main change is the adoption of what is called "per-cpu compression". Essentially, instead of having a fixed number of compression threads spread across all CPU cores that are moved around by the scheduler, there is one dedicated compression stream per online CPU core. Enforcing that compression streams stay fixed on a particular CPU improves caching performance and reduces overhead. Also, compression streams are now automatically added/removed as CPU cores are onlined/offlined. These changes improve zRAM performance by a few percentage points.

    Updated FUSE
    I've cherry-picked a patch series from CAF improving FUSE, the mechanism that facilitates implementing file systems in userspace. Android uses FUSE for SD cards (when not using esdfs or sdcardfs, as is the case on CM13). One improvement I improved is called writeback caching. Traditionally, when writing to a fuse device, the kernel passes data up to the fuse daemon one (128K) chunk at a time, and write() system calls don't complete till all the chunks are passed to fuse. Now, writes are cached in kernel, allowing write() to return more quickly, and fuse then gets cached chunks at its own pace without blocking the write() system call. The other improvement is called "short-circuiting", which allows the fuse userspace to instruct the kernel driver to perform certain IO operations directly, bypassing the userspace daemon. This can reduce overhead and latency. The FUSE changes in this release likely won't be hugely noticeable given the bottleneck is usually the slow speed of SD cards, but there should be some improvement.

    Security Improvements
    As usual, I incorporated all the security patches that made it into the CM/LineageOS kernel since the last release. However, I also scoured Kernel.org and CAF to bring in dozens more security fixes missing in the CM/LineageOS kernel. I plan to upstream the important fixes into the LineageOS kernel later when I get time.

    In addition to the usual reactive security patches, this release also adds some basic exploit mitigations. Nougat introduced kernel address space layout randomization (KASLR) to increase the difficulty of exploitation. However, the kernel has traditionally had a ton of logging messages leaking memory addresses, making it ineffecive. Searching Kernel.org and CAF, I found a bunch more patches fixing kernel address leaks, making KASLR less useless. There are probably still some things that can leak addresses, and KASLR is implemented rather weakly, but something is better than nothing. Another exploit mitigation I added is support for the ARM PXN bit that can mark userspace code as not executable in kernel context. This prevents a class of exploits known as "return to user".

    I also fixed an issue disconnecting from PPTP VPNs reported by @spiked_mistborn. It was a regression introduced by a mismerge I made in r17, leading to a double free.

    For whatever reason, the XDA downloads tab appears blank when logged in with my user account, so I can’t upload to the usual spot right now. In the interim, I’ve posted a build to MediaFire: http://www.mediafire.com/file/hunyec9k4kkl4v4/squid_kernel_r19-surnia.zip

    Finally, happy new year everyone!
    22
    Squid Kernel r10g

    I hadn't originally planned for this, but a new security vulnerability found in Pronto WLAN driver the forced me to do one more r10 series release. This release includes the Pronto security fix, a zRAM bug fix, and Linux 3.10.93.

    For this release, I switched from Linaro GCC 4.9.3 to Linaro GCC 5.1. The newer compiler produces slightly smaller and slightly faster binaries. I had originally tried out the new compiler for the past couple releases on lux, and there was a small but noticeable performance improvement in normal usage. I hope you enjoy the performance boost brought by the newer compiler.
    21
    Squid Kernel r20

    After a long break, I've prepared a new version of this kernel. This is mainly a maintenance release to get up to speed on security patches, as well as bring in various upstream bug fixes. This kernel is probably the best patched kernel available for this device family as of today - there are hundreds of security-relevant patches here that haven't yet made it to the LineageOS kernel. This is partly a matter of patching policy - for LineageOS, apart from ASB patches, we carefully assess necessity and impact of each change prior to inclusion, whereas here, if I see a security patch that looks relevant, I cherry-pick it without much further analysis. Backporting all these changes to to the LineageOS kernel will be a very time consuming undertaking.

    As before, the kernel should work on both Marshmallow and Nougat ROMs, and both stock and custom ROMs. The download is on the downloads tab.