Tuesday, March 12, 2013

Android 2.3.5 Tethering error on Stratosk Semaphore 1.7.0

Who apply ?
Ok, so this may be an older issue, but I just found it now when I needed the functionality and will describe below.
Note: it appears at least at the Stratosk kernel Semaphore JVS 1.7.0 (Android 2.3.5).
About this kernel, see interesting facts here:

We have several Wi-Fi devices, at least one with 3G module and a valid Internet subscription and we want to share the Internet connection (create hotspot) from the 3G device to the other Wi-Fi devices.
In this case, 2 things should be done from the 3G device:

1. Enable 3G Internet connection:

2. Enable tethering from Settings -> Wireless and network -> Tethering -> Mobile AP:

If this works from the start, then it is not an issue.
But, after you checked "Mobile AP", if you get an "Error" message right below the "Mobile AP" and you do not have the blue Wi-Fi tethering icon on your notification bar, then you have the same problem that I had.

What can be done?
First of all, your device should be rooted.
Note: I assume device is rooted because whoever tries to put this kernel has probably tried to root the device before.

OK, so the error in cause is just an inactivation issue.
Practically, the Android scripts to enable tethering exists on the system, but they are deactivated.
We will have to use some shell commands from the Android console.
For this, you have to download an Android shell console emulator.
Note: I successfully used "Android Terminal Emulator" market app which is free.

Run the shell console emulator app and type at the "$" prompt the following:

su -root
(this will switch to root user mode)

(this will display the mounted Android partitions)
Note: We are interested in "/system" partition to which we want to copy a file, but it has "ro" right access (read-only) and we cannot write a file until we make this partition writable.

mount -o remount,rw /system
(this makes the "/system" partition writable)
Note: we may check the "/system" is writable by typing "mount" again and see the "rw" rights near "/system" partition.

cat /res/scripts/enable_netfilter > /system/etc/init.d/enable_netfilter
(this copies the "enable_netfilter" activation script to the Android initialization folder)

chmod u+x /system/etc/init.d/enable_netfilter
(this marks as executable the "enable_netfilter" script)

(this will reboot Android to apply the changes at Android initialization)

... the only think left is to enjoy tethering works ...