adq


Andrew de Quincey's livejournal


Previous Entry Share Next Entry
GAN / UMA / WIFI Calling / Signal Booster on the Galaxy S II
adq
I've been happily using my Galaxy S II for the last few months, and of course I've replaced the original firmware with a custom one.

However, recently a colleague acquired one as well. His had the stock Orange firmware, and has a special app called "Signal Boost". Searching around, I found that this is actually an implementation of GAN / UMA. I'd heard of this technology, but wasn't aware it was available with Android. As it turns out, it has been implemented by Kineto. The net effect is the phone will tunnel through your local WIFI and use that instead of the GSM network. This is quite handy if you're in a crap signal area. Of course, your mobile nework has to support it, and luckily Orange do in the UK.

I'm using cyanogenmod 7.1 on my phone, and as this is a proprietary impementation of GAN, it is not included. However, they have included the kernel-side device, gan-eth required by the proprietary user space code, which makes things a lot easier.

Basically, we need to extract a few files from the Orange ROM and add them into the cyanogen ROM on the phone, and that's about it: I have it working on my phone now.

Instructions



The following instructions are using Linux for the extraction, and cyanogenmod on the phone, but I assume they'll be similar for other ROMs.

Oh, and obviously doing this is entirely at your own risk, will void your warranty and eat your gerbils etc etc.

You will need:

  • 7zip

  • Orange UK rom image downloaded from this page. Grab the BVKG3 one for Orange UK.

  • The simg2img utility from here (you'll need to compile it). If you run Arch Linux, there's an AUR build for it called "ext4_utils".

  • ADB, and developer mode enabled on the phone.



The following will extract the files on the Linux machine:
7z x GT-I9100_ORA_I9100BVKG3_I9100BVKG2_I9100ORAKG3.exe
tar xf GT-I9100_ORA_I9100BVKG3_I9100BVKG2_I9100ORAKG3.TAR
simg2img cache.img cache.raw
mkdir c
mount -o loop cache.raw c
cp c/recovery/sec_csc.zip .
unzip sec_csc.zip
umount c
simg2img factoryfs.img factoryfs.raw
mount -o loop factoryfs.raw c
cp c/lib/libsec-ril.so .
umount c


Now, copy and paste the following into a text file called "default.prop":
rild.libpath=/system/lib/librilswitch.so
rilswitch.vendorlibpath=/system/lib/libsec-ril.so
rilswitch.ganlibpath=/system/lib/libganril.so


After that, you'll have all the files needed. Plug in your phone to USB to push the files across with adb as follows:
adb shell remount -o rw,remount /system
adb push system/lib/libganril.so /system/lib
adb push system/lib/libkineto.so /system/lib
adb push system/lib/librilswitch.so /system/lib
adb push system/app/WiFi-Calling.apk /system/app
adb push libsec_ril.so /system/lib
adb push default.prop /system


Finally, reboot the phone, go to the Signal boost app, and enable it. After a few seconds (assuming your wifi is strong enough) the red house icon on your status bar should go green, and the GSM signal bars should drop to 0. If you use "adb logcat", you can see lots of output as it negotiates the connection.

Observations



I originally tried this using the libsec-ril.so that came with cyanogen, but logcat showed rild crashed as soon as I tried to enable wifi calling. The one from the orange rom solved this. I'm assuming it either needs some sort of co-operation from the hardware RIL, or unloading the RIL on the fly hadn't ever really been tested before.

It sounds like its switching the RIL implementation on the fly, which is quite cool.

I wish this was a standard feature of android; it might encourage more networks to support it.

This is one of the things I'm looking forward to when I upgrade my phone.

I do wonder if Orange charge you the same amount for calls made using GAN. Probably.

Yeah, they do I think. Other networks don't. Kinda annoying, but if you weren't able to use it 'cos of no signal /anyway/, I suppose its better.

Also, a very cheap way of phoning home when abroad!

Argh, although it seems when people call me, they can't hear my voice.

Strangely enough, if I call them, they can hear me ok... more fiddling required, obviously!

This is fantastic. There are many people who want this over on xda developer forums! I have no idea how to implement this into my current custom rom however please keep up the good work and I'm sure many people will incorporate this into their custom roms

Hi Andrew, has there been any news on the silence issue when people call you? Thank you for your work, much appreciated.

Sorry not had the time recently. I must try again now my phone is on ics.