[Nexus 7 Android Development] vorcers:
Hey Guys,

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

Description of the issue:

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:

busybox modprobe snd-usb-audio

Activate NFS File System:

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:

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:

Android 5.1: Kernel: Grouper: boot-grouper-vorcers-gf5d7b8b-v18.zip ; Tilapia: boot-tilapia-vorcers-gf5d7b8b-v18.zip

Android 5.0.2: Kernel: Grouper: boot-grouper-vorcers-g6ff7a51-v16.zip ; Tilapia: boot-tilapia-vorcers-g6ff7a51-v16.zip

Android 4.4.4: Kernel: Grouper: boot-grouper-vorcers-g1e42d16-v13.zip ; Tilapia: boot-tilapia-vorcers-g1e42d16-v13.zip

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)

Android 4.3: Kernel: boot-grouper-vorcers-g1e8b3d8-v7.zip Kernelmodules: integrated

Android 4.2.2: Kernel: boot-grouper-vorcers-g05b777c-v4.zip Kernelmodules: kernelmodules-vorcers-g05b777c-v2.zip

Extra-Links:

My Repository for this Kernel (also contains old versions): https://www.mediafire.com/folder/j9iocde4l20c7/Kernel

Stock-Kernels: https://www.mediafire.com/folder/d3mj3k3v61jzu/Stock Kernels

A zip which contains the Patches and modifications I made: https://www.mediafire.com/folder/kvdmcsl16x0ox/Sources

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:

<device> <mountpoint> <fs-type> <options>

example:

It is is very importent that the options seperated by

one

space!

//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