[KERNEL] [15/04/10][5.1/3G+WIFI][Fix for empty directories after mount] [V18]

Search This thread

vorcers

Senior Member
May 21, 2012
158
127
Hey Guys,

mkasick released in his thread a fix for the mounting problems in Android >= 4.2.

Description of the issue:
Android >= 4.2 breaks Dalvik-apps that mount file systems to be shared with other apps. This includes CifsManager, Mount Manager, essentially anything that mounts cifs shares, FUSE file sytems, etc. The symptom is that the mounted contents appear fine to app that peforms the mount operation (assuming the app itself provides the ability to browse the contents), but every other app only sees an empty directory at the mount point.

As I said - mkasick released a solution - so I compiled my own kernel. Now we can again easy mount cifs and others! All old apps should work. Only limitation: the mount point needs to be outside of /storage (and also /mnt/sdcard/). Fix for this: Mount within /data/media/0 -- android will redirect the mount so you can access the mounted-files from this folders.

The kernel is a "stock kernel" and also includes:
  • mkasick Patch
  • Built-In cifs, md4, utf8, nfs, f2fs (Since V17)
  • kexec hardboot patch (The full patch, allows boot as host and as guest)
  • As Modules: .ko: snd-usb-audio and all of its devices (Installed, but not modprobe'd since V17)
  • [Since V16/Android 5.0.2] Fix for baseband_xmm_power wakelock on tilapia (see Hints and Bugs since V16 / Android 5.0 / Lollipop ; for Android 4.4.4 see this post)

mkasick recommends in his thread to patch dalavik, but for the stock-roms it is easier to patch the kernel.


Known Bugs:
  • Since Android 5.0.X/V16: SELinux is now blocking the access of cifs/nfs even in read. Also nfs isn't loaded at boot time anymore. For more information look below.
  • Since Android 4.4.X: There is a known bug with mounting cifs (you can't write). The solution is (try at your own risk) here. If you want to do this workaround at boot-time, you can flash the zip linked here.
  • With SuperSU >= 1.50 && < 1.65 the mounted folders are empty. Please update! (For more Info see hide-box "SuperSU Information" below)

Hints and Bugs since V16 / Android 5.0 / Lollipop:

SELinux, cifs and nfs

SELinux is since Android 5.0 "more" enforced. Because of that, even the read on nfs / cifs isn't working anymore without disabling selinux by "setenforce permissive" as root. Be careful, disabling selinux is an security hole. USB is still working with selinux at enforcing.

Because of the same reason the nfs and sound modules are not loaded at boot anymore. Because I don't want to mess around with selinux at boot time, you can modprobe them yourself, if you need it. Run the following commands as root to use nfs / sound modules (a installed busybox is required):

Activate sound modules:
Code:
busybox modprobe snd-usb-audio

Activate NFS File System:
Code:
busybox modprobe nfs

Workaround for baseband_xmm_power wakelock

Some people have massive issues with tegra3 + cellular devices with the baseband_xmm_power wakelock. The wakelock drains all the battery. With V16 I included a possible fix for this. The fix is based on the work of jfmcbrayer and Sgt. Meow. By default, the fix isn't active and the kernel uses the stock behaviour.

If you want to disable the wakelock entirely, you can flash this zip: CWM_activate_baseband_xmm_power_wakelock_workaround_vorcers_rev2.zip

I used this this workaround for some time with Android 4.4.4 and I had no issues. Well, I did not test the mobile data... Please tell me, if something isn't working (And the workaround is active). I just wanted to get rid of that battery drain. I was on flight mode all time.

Technical:

The workaround is enabled by echoing a number into a baseband_xmm_power module parameters:
Code:
echo 0 > /sys/module/baseband_xmm_power/parameters/bb_timeout

Possible Values:
< 0 - disable workaround, stock behaviour [Default (-1)]
= 0 - disable the baseband_xmm_power wakelock completely
> 0 - how long the wakelock can stay active, every time the wakelock is triggered, in 10ths of a second. Meaning: Value 5 = 500 ms, 10 = 1 second, 20 = 2 seconds....

You find the patch I used in the actual Patchset. (Included since Android 5.0.2)


Downloads

(Kernels since v8 are only tested by me for the 3G version (tilapia) - but should also work with wifi (grouper).)

The flash of the kernel shouldn't break anything, but I recommend to backup your system.

Download-Links for grouper and tilapia:

In V11 the kernel modules are placed in /data instead of /system. If you are upgrade from < V11 and you want to delete the modules in /system, you can delete the folder "/system/vorcers_kernelmodules" manually, or you use this CWM-Zip to delete.


Download-Links only for grouper: (try on tilapia at your own risk)

Extra-Links:

Integration wishes for new kernelmodules to support new hardware are always welcome (you will get .ko's for my kernel)

Have a lot of fun!


Sources:
http://xdaforums.com/showthread.php?t=2106480 (Mount fix)
http://xdaforums.com/showthread.php?t=2104706 (Hardboot patch)
http://source.android.com/source/building-kernels.html
http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
http://nek0s.blogspot.de/2012/12/nexus-7-ramdisk.html


Changelog:

Android 5.1: gf5d7b8b-v18 (2015/04/10)
- Switched to gf5d7b8b / android-tegra3-grouper-3.1-lollipop-mr1
- Build-In nfs
- Disabled Module auto loading for snd-usb modules -- are still installed
- Added f2fs Filesystem, untested, standard is ext4

Android 5.0.2: g6ff7a51-v16 (2015/01/31)
- Switched to g1e42d16 / android-tegra3-grouper-3.1-lollipop-release
- Added Workaround for the baseband_xmm_power wakelock on tilapia (Please see "Hints and Bugs since V16 / Android 5.0 / Lollipop" for more information)
- NFS and Sound Modules are not loaded anymore by default but can loaded manual via "busybox modprobe nfs" / "busybox modprobe snd-usb-audio".

Android 4.4.4: g1e42d16-v13 (2014/06/06)
- Switched to g1e42d16 / android-tegra3-grouper-3.1-kitkat-mr2

Android 4.4.3: g4776c68-v12 (2014/06/03)
- Updated Grouper and Tilapia ramdisks for Android 4.4.3.

Android 4.4.2: g4776c68-v11 (2014/01/11)
- To save space in /system, the kernel-modules had been moved from /system/vorcers_kernelmodules to /data/vorcers_kernelmodules.
If you want to delete the modules in /system, you can use this zip: CWM_delete_system_vorcers_kernelmodules.zip
- Nothing else is new

Android 4.4.2: g4776c68-v10 (2013/12/11)
- Updated Kernel Config and Ramdisks. (Both changed in Android 4.4.2/KOT49H)

Android 4.4: g4776c68-v9 (2013/12/10)
- Created separate files for grouper and tilapia (their ramdisk differ, kernel not)

Android 4.4: g4776c68-v8 (2013/12/07)
- Switched to Android 4.4: g4776c68 ; KRT16O (?) ; android-tegra3-grouper-3.1-kitkat-mr1 KRT16S is gee1a0b2 / (?)(?) android-tegra3-grouper-3.1-kitkat-mr0 (?)(?)

Android 4.3: g1e8b3d8-v7 (2013/09/01)
- Modules Support for Android 4.3
- Packed all modules inside zip...
- I go back to the old version scheme and only count up the numbers...

Android 4.3: g1e8b3d8-v6 (2013/07/29)
- Forgot somehow UTF8
- Really added /proc/config.gz

Android 4.3: g1e8b3d8-v5-km-v4 (2013/07/25)
- Switched to Android 4.3: g1e8b3d8 ; jwr66v ; android-tegra3-grouper-3.1-jb-mr2
- This kernel has also: /proc/config.gz and an loadable module support (Stock has not)
- I also provided the patchset I used for Android 4.3

Android 4.2.2: g05b777c-v4-km-v2 (2013/02/19)
v4-Kernel (boot-grouper-vorcers-g05b777c-v4.zip):
- Switched to different version schema: boot-grouper-vorcers-<android-kernel-hash>-v<count of changes of kernel (overall)> ; For the kernelmodules it is: kernelmodules-vorcers-<android-kernel-hash>-v<count of changes of kernel-modules (overall)>. This means for you: if the number is higher, there is something new :D Version-Number at Changelog: <android-kernel-hash>-v<count of changes of kernel (overall)> -km-v<count of changes of kernel-modules (overall)>
- Added init.d (/system/etc/init.d/) support to the kernel/init.rc. If the directory exists, the scripts inside the directory get run via "run-parts" from busybox. This means: The script need to be runable (+x) and mustn't have an file-extension.
- Removed the mount of /mounts out of init.rc (is now in an script called by init.rc)
v2-Kernelmodules (kernelmodules-vorcers-g05b777c-v2.zip):
- Made a CWM flashable package which autoloads the modules in my kernel.

Android 4.2.1: v3 - boot-grouper-4.2.2-vorcers-v3.zip : (2013/02/15)
- Switched to Android 4.2.2 - Kernel, jdq39, g05b777c, android-tegra3-grouper-3.1-jb-mr1.1
- Added Modules for OTG-USB-Sound (see kernelmodules*.zip)
Android 4.2.0: v2 (2013/01/19)
- I added a tmpfs mount for /mounts, so you don't need to do "mount -o remount rw /" and create your inital-mountpoint yourself. /mounts is writeable by all apps. (done in init.rc)
Android 4.2.0: v1 (2013/01/19)
- inital release


SuperSU Information:

Information for SuperSU Users

It seemed that SuperSU >= 1.50 && < 1.65 doesn't work correctly with this kernel. Well, the Version 1.65 seems to work again (The folders where empty after mount). The SuperSU Version 1.45 worked the best. If you want to use 1.45, you can download the old Flashable-Version here: http://download.chainfire.eu/343/SuperSU/UPDATE-SuperSU-v1.45.zip.

As I said, the version 1.65 seems to work again. It maybe can happen, that the folders gets empty, after some time. This has been noticed with Version 1.60. But 1.65 not (yet).

If you still have problems with the empty folders on my kernel, you should try superuser by koush.

koush's superuser is opensource and is the same as in cyanogenmod. And with that, the mount-technique is working without bugs: https://play.google.com/store/apps/details?id=com.koushikdutta.superuser



Some gimmick: One"click"mount-Shell-Script

Because I want to get rid of stickmount, I written a little shell-script to mount all connected devices. It is very similar to stickmount, but it supports: ext, fat32, ntfs. Well, ntfs only, if you provide the path to an ntfs-3g binary. (In the variable NTFS_BINARY) I used in the script the paragon-ntfs binary. Just install the Paragon-App.

Download V2.2: http://www.mediafire.com/download/rjmsdt06cf0cp6b/oneclickmountv22.sh.gz
Download V3: http://www.mediafire.com/download/xppx2m3awcf3oq3/oneclickmount-v3-20130221172223.tar.gz

glimmling created a tasker apk for this script. I but it still bases on v11 of the script.

  • from v3 on, ocm needs -m parameter. If you want the old behavior, use "-m auto"
  • from v3 on, ocm also mounts /dev/block/sdX partitons (e.g. /dev/block/sda), but only if my script can use a busybox with blkid with TYPE output. (I provided one)
  • I added in v3 an fstab-like future usable with -f <file> see my example.
  • Please be careful with the new v3. I works, but I would call it "beta"...
  • You can't run ocm >= v3 inside /mnt/sdcard. All files (except for ocm.fstab and ocm-library) need the x right. Copy the files too /data/local/, "chmod 777 *" them and run ocm from /data/local.
example for ocm.fstab.
syntax:
Code:
<device> <mountpoint> <fs-type> <options>
example:
It is is very importent that the options seperated by one space!
Code:
//192.168.100.1/username username cifs username=<username>,password=password,ro
192.168.100.1:/home/username nfs nfs nolock,ro
/dev/sda1 sda1 ntfs

Thanks to:
mkasick - for the patch
farhanito - for the basic code in the .zip
glimmling - for the tasker apk's running the One"click"mount-Shell-Script
jfmcbrayer / Sgt. Meow - for the baseband_xmm_power wakelock workaround
 
Last edited:

glimmling

Senior Member
Jan 27, 2011
245
109
tuetenmensch.blogspot.com
Hi and thanks for this! :)

I'm a Linux noob and have some questions.
If I understand it correctly, I don't need Stickmount anymore with your kernel. Do I need to mount an usb stick in the terminal or is there a way to automate this with tasker for example?
What is the correct mount command syntax?

The old way to mount a network share with cifs manager in 4.1.2 I used this guide with external modules:
http://xdaforums.com/showpost.php?p=29055478&postcount=10

Can you please show an example configuration for Cifs Manager, when I use your kernel?

Many thanks!
 

vorcers

Senior Member
May 21, 2012
158
127
You still can use stickmount. You will see no difference, because stickmount uses the old "debuggerd" method. (Well, I did not test stickmount with the new fix, but it should work...)

For cifs:
I already included cifs in my kernel. You don't need to load them anymore. You can now easy use cifs manager, if you are mounting under /mounts (with the v2 of my kernel)

Here an screenshot of an configuration I use with CifsManager:

attachment.php


It is only important, to use a path in /mounts/. As I tested, CifsManager automatically creates the mount-point inside /mounts/.

It is possible, that applications which doesn't support browsing in file system, can't access /mounts. But some provide an option to the start directory or something like that (OfficeSuite for example) the directory just need to be set to /mounts. This is the reason, why stickmount uses an mountpoint inside /mnt/sdcard ... I am using OI Filemanager. It is a quite nice application. It also supports starting apps with the selected file.

I hope, I could help you.
 

Attachments

  • Screenshot_2013-01-19-17-20-27.jpg
    Screenshot_2013-01-19-17-20-27.jpg
    20.8 KB · Views: 40,603
Last edited:

glimmling

Senior Member
Jan 27, 2011
245
109
tuetenmensch.blogspot.com
AW: [KERNEL][WIFI][4.2.X] Included "Fix for empty app-mounted directories"

Thank you.
Cifs is working for me now, but I want to get rid of stickmount.
Since android 4.2.x I always get empty folders with stickmount, even with the latest version. I want to replace it with a new method. But I don't know the mount command and the device name to mount a standard usb-stick.

mount [devicename?] /mounts/usb ???

EDIT: I replaced stickmount with usb otg helper http://xdaforums.com/showthread.php?t=1588940. Now I can see the files of a mounted usb-stick in every app, no more empty folders.

Gesendet von meinem Nexus 7 mit Tapatalk 2
 
Last edited:

vorcers

Senior Member
May 21, 2012
158
127
Ah. I forgot USB-OTG helper. Well, with this app, the mounting of devices already worked without the fix. It also uses the "debuggerd" workaround like stickmount. You will need the kernel-fix only for mounting cifs.

I stay at my new oneclickmount-shellscript, because I want to know what the applications do ^^ I don't trust stickmount and usb-otg-helper...
 
  • Like
Reactions: Modulo

Doncabezon

Senior Member
Oct 1, 2010
144
14
This is a great! Question, since the mount point needs to be outside of /storage and /mnt/sdcard does that mean I can not use this to mount app data? ex. gameloft, etc (using Directory Bind)
 
Last edited:

bubbleguuum

Senior Member
Dec 23, 2010
7,016
2,745
It would be really awesome if a fix or hack to this issue (empty directories if app is not launched before mounting) could be found without requiring a kernel patch.

I tried the debuggerd method supposedly used by StickMount and found that it didn't work: app still sees empty mount if its process is started after mount.

Btw, app sees mounts if its process is started before because mounts are propagated in that case. They are just not inherited on process creation due to how zygote spawn app processes and initializes their mounts.

I never understood how hacking debuggerd could work to fix this issue as this is not much different to me than running a shell script invoking adb shell in loopback mode (requires root), since debuggerd and adbd run with identical priviledges:

Code:
setprop service.adb.tcp.port 5555
stop adbd
start adbd
adb connect localhost
adb shell mount ....

I've found a workaround that involves hijaking the obb directory by mounting whatever you want over /mnt/shell/emulated/obb. This directory is systematically bind mounted by the Zygote process in <external storage root>/Android/obb (see source code) when it spawns an app's process

Unfortunately this hack is not very usable because it has the side effect that any app expecting its data in the obb directory will not find it. And you can only mount one filesystem here.


Conclusion: with the new 4.2 multiuser support, Google made miserable all apps dealing with mounting.
 
Last edited:

YayYouFixedIt

Senior Member
Nov 21, 2012
538
67
Re: [KERNEL][WIFI][4.2.X] Included "Fix for empty app-mounted directories"

I havent tried this kernel yet, but it might appear by simply set the mount point to /data/media/0/MOUNTNAME
Might appear in storage that way.
worked for me using sshfsandroid mounting the pc harddrive over the wifi.
EDIT: I just flashed this kernel and its working the way I said. THANKS A BUNCH.:thumbup:
Sent from my Transformer TF101 using Tapatalk HD
 
Last edited:

vorcers

Senior Member
May 21, 2012
158
127
Half-OT: Did someone tested with the new fix the superuser-function in non-primary accounts?

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

Thanks vorcers,

Here is flashable zip of v2
http://www.mediafire.com/download.php?gnn4n5p8plhdkv8
Md5= 0394f49ae911ec7a2d7cf845c5916fb6

Hope you can figure out the /storage problem
Every other kernel should implement this fix :)

Sent from my Nexus 7 using Tapatalk 2

Very nice, If you don't object, I would use your zip in the future as base and would only offer .zip's.

This is a great! Question, since the mount point needs to be outside of /storage and /mnt/sdcard does that mean I can not use this to mount app data? ex. gameloft, etc (using Directory Bind)

As mkasick said in his patch, also fixing the /storage/ folder, can cause other problems:
mkasick in his patch said:
Unfortunately bind mounts from outside /storage may retain the recursive-shared property (bug?). This means any additional namespace-specific bind mounts (e.g., /storage/emulated/0/Android/obb) will also appear, shared in all namespaces, at their respective source paths (e.g., /mnt/shell/emulated/0/Android/obb), possibly leading to hundreds of /proc/mounts-visible bind mounts. As a workaround, mark /mnt/shell/emulated also as recursive-slave so that subsequent bind mounts are confined to their namespaces.

To "fix" the /storage problem, only 6 lines of the patch need to be removed. But it also can break the multiuser-feature. I will test it in the next days.

It would be really awesome if a fix or hack to this issue (empty directories if app is not launched before mounting) could be found without requiring a kernel patch.

As an alternative (which is not really an alternative...) is to use the dalavik patch. But I think the Kernel-Patch is easy for stock.
Anyway, I think there will never be a 100% solution without patching. Only Google can solve this problem, by changing their multiuser architecture... (Or they mark by stock the root folder as non-slave, but that wouldn't fix the /storage problem...)
 

Doncabezon

Senior Member
Oct 1, 2010
144
14
Re: [KERNEL][WIFI][4.2.X] Included "Fix for empty app-mounted directories"

What if I don't need multiuser support. Don't care much if it becomes broke, since my son has a kindle and my wife dare not touch my tablet save for playing Temple Run Brave

Sent from my Nexus 7 using xda premium
 

forceu

Senior Member
Jun 23, 2010
100
78
Thank you so much for that kernel! That is exactly what I have been looking for! :)
 

Doncabezon

Senior Member
Oct 1, 2010
144
14
Re: [KERNEL][WIFI][4.2.X] Included "Fix for empty app-mounted directories"

I havent tried this kernel yet, but it might appear by simply set the mount point to /data/media/0/MOUNTNAME
Might appear in storage that way.
worked for me using sshfsandroid mounting the pc harddrive over the wifi.
EDIT: I just flashed this kernel and its working the way I said. THANKS A BUNCH.:thumbup:
Sent from my Transformer TF101 using Tapatalk HD


So using this method, directory bind works?


Sent from my Nexus 7 using xda premium
 

YayYouFixedIt

Senior Member
Nov 21, 2012
538
67
Re: [KERNEL][WIFI][4.2.X] Included "Fix for empty app-mounted directories"

Actually it did seem too. No idea why. Both on the n7 and tf101 for sshfsandroid only.
But eventully I just made it mount to /Removable/pcharddrivefoldermountpointnamelong examplee:eek: and that was OK for me too. Ssomone mentioned it can be mounted anywhere outside storageed
EDIT: only using this kernel and I am using dirty aokp2.8 ATM.
I just checked again and the bind works as /data/media/0/PC which wouldnbe good if you want to download directly from dolphin into the PC.
 
Last edited:

ThurstonX

Senior Member
Oct 29, 2012
255
120
I added .zip's and released a new oneclickmount.sh version. :highfive:

Just wanted to give a HUGE THANKS for compiling your kernel and making it available, to farhanito for the flashable zip, and of course to mkasick for the concept :)

CIFS Manager works like a charm, and DeaDBeeF Player can see my shares, so me=HAPPY!

Nice to be on 4.2.1 now.
Y'all rule :highfive:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I'll just add that Mount Manager also works like a charm, automounting under /mounts whatever shares you define.
 
Last edited:

vorcers

Senior Member
May 21, 2012
158
127
I created a new oneclickmount version, with some bug-fixes.

http://xdaforums.com/attachment.php?attachmentid=1690089&d=1359582536

They appeared if you use more then one device at the nexus parallel. It simply only mounted one device.

I also set the standard-mountpoint to /data/media/0/mounts. With that, we can use our files also in /mnt/sdcard. :highfive: (Android re-directs it...)

This also works for bind's. I could bind /mounts/ to /data/media/0/mounts . It also works... Maybe someone helps that for using some games.
 
Last edited:
  • Like
Reactions: glimmling

Top Liked Posts

  • There are no posts matching your filters.
  • 21
    Hey Guys,

    mkasick released in his thread a fix for the mounting problems in Android >= 4.2.

    Description of the issue:
    Android >= 4.2 breaks Dalvik-apps that mount file systems to be shared with other apps. This includes CifsManager, Mount Manager, essentially anything that mounts cifs shares, FUSE file sytems, etc. The symptom is that the mounted contents appear fine to app that peforms the mount operation (assuming the app itself provides the ability to browse the contents), but every other app only sees an empty directory at the mount point.

    As I said - mkasick released a solution - so I compiled my own kernel. Now we can again easy mount cifs and others! All old apps should work. Only limitation: the mount point needs to be outside of /storage (and also /mnt/sdcard/). Fix for this: Mount within /data/media/0 -- android will redirect the mount so you can access the mounted-files from this folders.

    The kernel is a "stock kernel" and also includes:
    • mkasick Patch
    • Built-In cifs, md4, utf8, nfs, f2fs (Since V17)
    • kexec hardboot patch (The full patch, allows boot as host and as guest)
    • As Modules: .ko: snd-usb-audio and all of its devices (Installed, but not modprobe'd since V17)
    • [Since V16/Android 5.0.2] Fix for baseband_xmm_power wakelock on tilapia (see Hints and Bugs since V16 / Android 5.0 / Lollipop ; for Android 4.4.4 see this post)

    mkasick recommends in his thread to patch dalavik, but for the stock-roms it is easier to patch the kernel.


    Known Bugs:
    • Since Android 5.0.X/V16: SELinux is now blocking the access of cifs/nfs even in read. Also nfs isn't loaded at boot time anymore. For more information look below.
    • Since Android 4.4.X: There is a known bug with mounting cifs (you can't write). The solution is (try at your own risk) here. If you want to do this workaround at boot-time, you can flash the zip linked here.
    • With SuperSU >= 1.50 && < 1.65 the mounted folders are empty. Please update! (For more Info see hide-box "SuperSU Information" below)

    Hints and Bugs since V16 / Android 5.0 / Lollipop:

    SELinux, cifs and nfs

    SELinux is since Android 5.0 "more" enforced. Because of that, even the read on nfs / cifs isn't working anymore without disabling selinux by "setenforce permissive" as root. Be careful, disabling selinux is an security hole. USB is still working with selinux at enforcing.

    Because of the same reason the nfs and sound modules are not loaded at boot anymore. Because I don't want to mess around with selinux at boot time, you can modprobe them yourself, if you need it. Run the following commands as root to use nfs / sound modules (a installed busybox is required):

    Activate sound modules:
    Code:
    busybox modprobe snd-usb-audio

    Activate NFS File System:
    Code:
    busybox modprobe nfs

    Workaround for baseband_xmm_power wakelock

    Some people have massive issues with tegra3 + cellular devices with the baseband_xmm_power wakelock. The wakelock drains all the battery. With V16 I included a possible fix for this. The fix is based on the work of jfmcbrayer and Sgt. Meow. By default, the fix isn't active and the kernel uses the stock behaviour.

    If you want to disable the wakelock entirely, you can flash this zip: CWM_activate_baseband_xmm_power_wakelock_workaround_vorcers_rev2.zip

    I used this this workaround for some time with Android 4.4.4 and I had no issues. Well, I did not test the mobile data... Please tell me, if something isn't working (And the workaround is active). I just wanted to get rid of that battery drain. I was on flight mode all time.

    Technical:

    The workaround is enabled by echoing a number into a baseband_xmm_power module parameters:
    Code:
    echo 0 > /sys/module/baseband_xmm_power/parameters/bb_timeout

    Possible Values:
    < 0 - disable workaround, stock behaviour [Default (-1)]
    = 0 - disable the baseband_xmm_power wakelock completely
    > 0 - how long the wakelock can stay active, every time the wakelock is triggered, in 10ths of a second. Meaning: Value 5 = 500 ms, 10 = 1 second, 20 = 2 seconds....

    You find the patch I used in the actual Patchset. (Included since Android 5.0.2)


    Downloads

    (Kernels since v8 are only tested by me for the 3G version (tilapia) - but should also work with wifi (grouper).)

    The flash of the kernel shouldn't break anything, but I recommend to backup your system.

    Download-Links for grouper and tilapia:

    In V11 the kernel modules are placed in /data instead of /system. If you are upgrade from < V11 and you want to delete the modules in /system, you can delete the folder "/system/vorcers_kernelmodules" manually, or you use this CWM-Zip to delete.


    Download-Links only for grouper: (try on tilapia at your own risk)

    Extra-Links:

    Integration wishes for new kernelmodules to support new hardware are always welcome (you will get .ko's for my kernel)

    Have a lot of fun!


    Sources:
    http://xdaforums.com/showthread.php?t=2106480 (Mount fix)
    http://xdaforums.com/showthread.php?t=2104706 (Hardboot patch)
    http://source.android.com/source/building-kernels.html
    http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack,_Edit,_and_Re-Pack_Boot_Images
    http://nek0s.blogspot.de/2012/12/nexus-7-ramdisk.html


    Changelog:

    Android 5.1: gf5d7b8b-v18 (2015/04/10)
    - Switched to gf5d7b8b / android-tegra3-grouper-3.1-lollipop-mr1
    - Build-In nfs
    - Disabled Module auto loading for snd-usb modules -- are still installed
    - Added f2fs Filesystem, untested, standard is ext4

    Android 5.0.2: g6ff7a51-v16 (2015/01/31)
    - Switched to g1e42d16 / android-tegra3-grouper-3.1-lollipop-release
    - Added Workaround for the baseband_xmm_power wakelock on tilapia (Please see "Hints and Bugs since V16 / Android 5.0 / Lollipop" for more information)
    - NFS and Sound Modules are not loaded anymore by default but can loaded manual via "busybox modprobe nfs" / "busybox modprobe snd-usb-audio".

    Android 4.4.4: g1e42d16-v13 (2014/06/06)
    - Switched to g1e42d16 / android-tegra3-grouper-3.1-kitkat-mr2

    Android 4.4.3: g4776c68-v12 (2014/06/03)
    - Updated Grouper and Tilapia ramdisks for Android 4.4.3.

    Android 4.4.2: g4776c68-v11 (2014/01/11)
    - To save space in /system, the kernel-modules had been moved from /system/vorcers_kernelmodules to /data/vorcers_kernelmodules.
    If you want to delete the modules in /system, you can use this zip: CWM_delete_system_vorcers_kernelmodules.zip
    - Nothing else is new

    Android 4.4.2: g4776c68-v10 (2013/12/11)
    - Updated Kernel Config and Ramdisks. (Both changed in Android 4.4.2/KOT49H)

    Android 4.4: g4776c68-v9 (2013/12/10)
    - Created separate files for grouper and tilapia (their ramdisk differ, kernel not)

    Android 4.4: g4776c68-v8 (2013/12/07)
    - Switched to Android 4.4: g4776c68 ; KRT16O (?) ; android-tegra3-grouper-3.1-kitkat-mr1 KRT16S is gee1a0b2 / (?)(?) android-tegra3-grouper-3.1-kitkat-mr0 (?)(?)

    Android 4.3: g1e8b3d8-v7 (2013/09/01)
    - Modules Support for Android 4.3
    - Packed all modules inside zip...
    - I go back to the old version scheme and only count up the numbers...

    Android 4.3: g1e8b3d8-v6 (2013/07/29)
    - Forgot somehow UTF8
    - Really added /proc/config.gz

    Android 4.3: g1e8b3d8-v5-km-v4 (2013/07/25)
    - Switched to Android 4.3: g1e8b3d8 ; jwr66v ; android-tegra3-grouper-3.1-jb-mr2
    - This kernel has also: /proc/config.gz and an loadable module support (Stock has not)
    - I also provided the patchset I used for Android 4.3

    Android 4.2.2: g05b777c-v4-km-v2 (2013/02/19)
    v4-Kernel (boot-grouper-vorcers-g05b777c-v4.zip):
    - Switched to different version schema: boot-grouper-vorcers-<android-kernel-hash>-v<count of changes of kernel (overall)> ; For the kernelmodules it is: kernelmodules-vorcers-<android-kernel-hash>-v<count of changes of kernel-modules (overall)>. This means for you: if the number is higher, there is something new :D Version-Number at Changelog: <android-kernel-hash>-v<count of changes of kernel (overall)> -km-v<count of changes of kernel-modules (overall)>
    - Added init.d (/system/etc/init.d/) support to the kernel/init.rc. If the directory exists, the scripts inside the directory get run via "run-parts" from busybox. This means: The script need to be runable (+x) and mustn't have an file-extension.
    - Removed the mount of /mounts out of init.rc (is now in an script called by init.rc)
    v2-Kernelmodules (kernelmodules-vorcers-g05b777c-v2.zip):
    - Made a CWM flashable package which autoloads the modules in my kernel.

    Android 4.2.1: v3 - boot-grouper-4.2.2-vorcers-v3.zip : (2013/02/15)
    - Switched to Android 4.2.2 - Kernel, jdq39, g05b777c, android-tegra3-grouper-3.1-jb-mr1.1
    - Added Modules for OTG-USB-Sound (see kernelmodules*.zip)
    Android 4.2.0: v2 (2013/01/19)
    - I added a tmpfs mount for /mounts, so you don't need to do "mount -o remount rw /" and create your inital-mountpoint yourself. /mounts is writeable by all apps. (done in init.rc)
    Android 4.2.0: v1 (2013/01/19)
    - inital release


    SuperSU Information:

    Information for SuperSU Users

    It seemed that SuperSU >= 1.50 && < 1.65 doesn't work correctly with this kernel. Well, the Version 1.65 seems to work again (The folders where empty after mount). The SuperSU Version 1.45 worked the best. If you want to use 1.45, you can download the old Flashable-Version here: http://download.chainfire.eu/343/SuperSU/UPDATE-SuperSU-v1.45.zip.

    As I said, the version 1.65 seems to work again. It maybe can happen, that the folders gets empty, after some time. This has been noticed with Version 1.60. But 1.65 not (yet).

    If you still have problems with the empty folders on my kernel, you should try superuser by koush.

    koush's superuser is opensource and is the same as in cyanogenmod. And with that, the mount-technique is working without bugs: https://play.google.com/store/apps/details?id=com.koushikdutta.superuser



    Some gimmick: One"click"mount-Shell-Script

    Because I want to get rid of stickmount, I written a little shell-script to mount all connected devices. It is very similar to stickmount, but it supports: ext, fat32, ntfs. Well, ntfs only, if you provide the path to an ntfs-3g binary. (In the variable NTFS_BINARY) I used in the script the paragon-ntfs binary. Just install the Paragon-App.

    Download V2.2: http://www.mediafire.com/download/rjmsdt06cf0cp6b/oneclickmountv22.sh.gz
    Download V3: http://www.mediafire.com/download/xppx2m3awcf3oq3/oneclickmount-v3-20130221172223.tar.gz

    glimmling created a tasker apk for this script. I but it still bases on v11 of the script.

    • from v3 on, ocm needs -m parameter. If you want the old behavior, use "-m auto"
    • from v3 on, ocm also mounts /dev/block/sdX partitons (e.g. /dev/block/sda), but only if my script can use a busybox with blkid with TYPE output. (I provided one)
    • I added in v3 an fstab-like future usable with -f <file> see my example.
    • Please be careful with the new v3. I works, but I would call it "beta"...
    • You can't run ocm >= v3 inside /mnt/sdcard. All files (except for ocm.fstab and ocm-library) need the x right. Copy the files too /data/local/, "chmod 777 *" them and run ocm from /data/local.
    example for ocm.fstab.
    syntax:
    Code:
    <device> <mountpoint> <fs-type> <options>
    example:
    It is is very importent that the options seperated by one space!
    Code:
    //192.168.100.1/username username cifs username=<username>,password=password,ro
    192.168.100.1:/home/username nfs nfs nolock,ro
    /dev/sda1 sda1 ntfs

    Thanks to:
    mkasick - for the patch
    farhanito - for the basic code in the .zip
    glimmling - for the tasker apk's running the One"click"mount-Shell-Script
    jfmcbrayer / Sgt. Meow - for the baseband_xmm_power wakelock workaround
    5
    Version 12 released (Release for Android 4.4.3)

    Hey Guys,


    If someone is still using my kernel: I just released v12. It is the same kernel as in v11, but with a different ramdisk. (Android 4.4.3 changed the ramdisk)

    Please also note, that my kernel is still using the Kernel-Version "3.1.10-g4776c68" (From Android 4.4.0), because Google did not release the actual kernel-branches for Android 4.4.2/4.4.3 in the tegra-kernel archive. ("kitkat-mr2-release", Android 4.4.3 stock kernel is: "3.1.10-g1e42d16")


    This will be also my last release, because I don't think the 2012' Nexus 7 will get updates anymore. I will maybe create a updated version, if Google unlocks the tegra-kernel-4.4.3 branch.


    In this manner... So long guys!

    Have a good life and always fun with Android! :victory:

    vorcers
    4
    I just released v8 for Android 4.4 and everything seems to work.... :victory:

    Download: http://www.mediafire.com/download/48xo4axdd2dpwnh/boot-grouper-vorcers-g4776c68-v8.zip



    I tested cifs-mounting in /mounts/, OI Filemanager and mxplayer where able to access the files.... I did that with SuperSU 1.80.

    I used with this kernel the newer kernel sources, https://android.googlesource.com/kernel/tegra/+/android-tegra3-grouper-3.1-kitkat-mr1

    I think these are the sources for KRT16O / Android 4.4.1... but it also works with KRT16S.
    3
    Release of V18 / Android 5.1

    Hey Guys,

    since Google added the Android 5.1 Tilapia Image, I now "officially" release V18. The kernel is the same build as in the untested version, so, if you flashed the untested grouper v18, you don't need to reflash this again.

    As always: Links are in the first post.

    vorcers
    3
    I attached v4. For more Information look at the first post. I am also working hard to make a better One"Click"Mount. It will get something like fstab (to mount cifs and nfs and usb-devices and maybe other...) :highfive: You can follow my development at github: https://github.com/vorcers/oneclickmount

    @ThurstonX

    If you flash the kernelmodules*.zip at my kernel you will get (currently) also support for nfs and usb-audio. But if someone want some other kernel modules, I will compile and include them.

    And v4 includes init.d support via busybox's run-parts.

    @tobiasth

    To support mounting without hjack debuggerd you just need to flash the kernel - the rom itself don't need to be changed. mkasick modified the mount function of the kernel.

    You just need to mount your devices at /data/media/0/ to see them also inside /mnt/sdcard. Android redirects it. Some same does also stickmount. Stickmount runs with debuggerd his mount commands in the same level as the kernels with mkasick's patch. I will post a final statement and how bad stickmount is written in my thread soon: http://xdaforums.com/showthread.php?t=2062768 (The reason why it doesn't work, is that we tried to mount inside of /storage, but we needed to mount inside /data/media/0.) I will post the complete mount script which is in /system/bin/debuggerd written. I need to do it, because chainfire didn't it. I can't understand that... So everyone can use that and there are not only two apps which support mounting in android 4.2. (Soon three, onecklickmount will support the debuggerd method :) )