[Galaxy S II Android Development] K9100ii:
Hello everyone,

For a while now, I have been building my own kernels with some additional features. Today, I have decided to try to implement a in-kernel, no-fuse ExFAT driver and I have been successful. The fuse implementation is very slow, but when I have implemented the kernel driver, the kernel driver is used instead and it appears to be much faster and also more reliable as files are copied entirely during the copy instead of continuing to sync in background after it seemingly stops copying. I have used this driver with some modifications: https://github.com/arter97/exfat-linux The modifications are required as the kernel we are using has lots and lots of backports that since this driver uses certain parameters depending on kernel version, the driver build process uses kernel parameters that no longer work on our kernel with lots of backports. If anyone is interested, I can build kernels. Along with a native, in-kernel ExFAT driver, I have extra features in my kernel:

CPU is overclocked to 1.4GHz by default (though you can change this back to 1.2GHz using the terminal or a kernel manager).

CPU voltage control implemented to be able to undervolt or even overvolt (I wouldn't suggest this!) the CPU via a typical SysFS interface. This is useful as undervolting can make the device run noticeably cooler, and I would suggest undervolting even if you intend to run with 1.2GHz. Controllable either by the usual echo command:

echo "<1.4GHz voltage> <1.3GHz voltage> <you get it...>" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

or a kernel manager like Kernel Adiutor.

Charging current control is implemented and controllable using another typical SysFS interface:

echo "<AC current> <Miscellaneous current> <USB current>" > /sys/devices/virtual/misc/charge_control/charge_current

Kernel managers don't seem to detect this.

Charging current is set to be slightly higher than default. No difference in battery temperature and we are also closer to USB specifications!

GPU clock control and voltage control is also implemented and is yet again controllable using another SysFS interface with MHz and millivolts respectively:

echo "<Step0> <Step1> <Step2> <Step3" > /sys/devices/virtual/misc/gpu_<clock/voltage>_control/gpu_control

Frequencies available are 54MHz, 66MHz, 108MHz, 160MHz, 200MHz, 267MHz, 330MHz (overclocking!), 400MHz, 440MHz and 520MHz. 267MHz is default for step 3. Kernel managers don't seem to detect this feature.

WiFi MAC address changing is somehow implemented, not sure how it works though. Maybe editing /efs?

I have set CONFIG_NTFS_FS to y, maybe NTFS is working but through fuse?

With ExFAT, we can now have decently performing SD cards that we can store files that are more than 4GB in size on.

If anyone is interested, I will make a new thread and will start building custom kernels with these features and release source code as well as prebuilt images. I will also offer my kernels as boot images with Magisk stable and Magisk canary ramdisks.

[MENTION=8356117]JaLoou[/MENTION], if you decide to want and use my kernel, don't start insulting me when something doesn't work (everything most probably works) or isn't your way ("terminul to complexx!!!1!11!!"), I just won't answer you.

Also, I am really concerned about boot image size with Magisk in the ramdisk. Right now, the boot image size is 7.8MB, near the 8MB limit. No modification boot images are at 7.7MB. Maybe we should consider re-pitting to maybe a 16MB or 20MB boot partition? We will have to reinstall things like the modem and take a nandroid backup before the re partition though.

EDIT: For those that build their own kernels or just want to look at the source code, it's here: https://github.com/TALUAtGitHub/android_kernel_samsung_smdk4412