TetherJelly

Because sometimes your Jelly won’t tether without a loving kick … or two

Back in my HTC One (M7) days I could never get the device to properly provide a tethered connection. After ensuring that my carrier has all the correct settings and that I should be able to tether, I started googling for a solution and came across a  bug report and the discussion around the issue contained the fix. The suggested fix was a single command to get iptables to route the packets properly.
Android app on Google Play

Like any good scientist I was skeptic and had to make sure it works. So I tried running the command on my device and … viola! My tethered devices all screamed in joy for they had internet once again. Unfortunately the fix wouldn’t persist over reboots or disconnects so I’d have to run the command for every tethered connection. Running it via the adb shell wasn’t a huge issue, but if you had to run it directly on the device … PITA!

I wrote a little app, creatively named TetherJelly to run those commands for me. The app worked and tethering was once again a breeze. I decided to formally launch the app on the Google Play Store so that not only I can easily install it on my other devices, but others could use it too.

Root

Because TetherJelly runs a privileged command, it requires root privilege. In other words if your device is not rooted, well …. NO SOUP FOR YOU.

Unicorns

TetherJelly claims that it summons unicorns to fix the tethering issues (at least it implies as such). That’s a lie. There are no unicorns. What actually fixes your connection (if it in fact does fix it) is the following command:

iptables -tnat -A natctrl_nat_POSTROUTING -s192.168.0.0/16 -o usb_rmnet_0 -j MASQUERADE

The command above assumes that your mobile network interface (you know, your 3G, 4G, LTE, etc) is usb_rmnet_0 and that your local subnet is 192.168.0.0/16. Of course the two assumptions here (your mobile interface and subnet) are not pulled out of thin air. Both are extracted from your device configuration. The actual command to be executed is then generated with these values.

Glowing Reviews

Just like any app, some people liked TetherJelly and some didn’t, but imagine my surprise when I came across these one star ratings:


Young says ★☆☆☆☆

No go for sprint Rooted 4.1.2 Lg optimus g for sprint. No luck and cannot bypass sprint block.

Thanks Young. Sprint is blocking your tethering and I get the one star review? What a dick!


 Aaron Says ★☆☆☆☆

:c Does not work galaxy s4

Thanks Aaron. That is indeed a one star rating criteria. Nowhere in the description do I claim that this fixes any and all tethering issues. You could, however, report the issue and I may be able to fix it.


Early Access/Beta Builds

This is a one man show and I only have so much time that I can dedicate to my personal projects. I would use all the help I can get specially when it comes to testing. The worst person to test any code is the author of that code because developers have coder’s bias. It means we miss/ignore things that others see. If you’d like to help test TetherJelly (and get the fixes before everyone else), you can join the TetherJelly testers army in 3 easy steps:

  1. Join the TetherJelly community on Google+ to get access
  2. Let the Google Play Store know that you want to become a TetherJelly tester
  3. Download TetherJelly on Google Play Store

Every time a new build is to be released, you’ll get an update notification just as you would with any other app. Give it a try and if you run into any issues, report them either on the Google+ community or via the contact form below.

TetherJelly Feedback