Jul 062012
 

Sometime ago I ported iodine to Android. It works, but it is not very stable and it is difficult to monitor if iodine is still running. MagicTunnel made it somewhat easier to manage, but didn’t solve the stability issue.

Since I found this unsatisfactory I developed my own DNS tunnel. The client is written in pure Java and the server is written in node.js. The client doesn’t even require root. My neighbour published the client application on Google Play and will take care of support and maintenance with me as second line. The source code is available on GitHub.

I am quite proud of this rather complex application!

DNS traffic is done through port 53 and iodine is element 53 of the periodic table.

Jun 122011
 

BackPackTrack for AndroidWhen I am traveling I like to display the route I have traveled so far for the people at home. To simplify this I wrote an open source Android application to keep track of my route automatically. To save batteries the application turns on the GPS of my Android phone periodically and tries to acquire an accurate location for some time. It is also possible to mark important locations manually (make waypoints), like an attraction or the hotel I am sleeping in. It is also possible to geocode an address (find the latitude/longitude for an address), for the case I forgot to make a waypoint. When I have internet access I can upload the route information to my weblog easily, maybe after I have reverse geocoded a few marked locations (find the address for a latitude/longitude). To make the upload to my weblog possible, I wrote a little WordPress plugin to extend the WordPress XML-RPC protocol. The route information is stored as a standard GPX file attached to a post which is automatically created at the first upload. The excellent XML Google Maps WordPress plugin can be used to display a map based on the GPX file (example).

Install now

QR code BackPackTrack for Android

Mar 132011
 

Sometimes it is useful to have a DNS tunnel to circumvent too strict firewalls.

I already had installed and configured an iodine server on my AVM FRITZ!Box Fon WLAN 7270 v2 using Freetz and wanted to have an iodine client on my already rooted Sony Ericssons Xperia X10 mini. I started with looking for a suitable TUN Driver for my phone. Luckily I found one on the XDA developers forum. Next I started looking for a iodine client ported to Android. I found this one, but it didn’t work on my phone. So I decide to port iodine myself. This appeared to be not so simple, because the Android Linux is not a standard Linux. I had to change the source code on several places to make it work. I have sent a patch to the author of iodine, so maybe it will be part of the iodine package in the near future.

If you want to build iodine for Android yourself, you can follow these steps:

  • Download and install the Android SDK
  • Download and install the Android NDK
  • Download and unpack iodine-0.6.0-rc1
  • cd iodine-0.6.0-rc1/src
  • make base64u.h base64u.c
  • patch -p1 <…/iodine-0.6.0-rc1-android-3.patch
  • …/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk

If the compilation succeeded, you can now try the executable on your phone:

  • adb push ./libs/armeabi/iodine /data/local/tmp
  • adb shell
  • su
  • cd /data/local/tmp
  • chmod 777 iodine
  • ./iodine

It will not work from an SD card, because Android mounts SD cards non-executable!

I choose iodine over dns2tcp, because it is possible to route all traffic through the tunnel. To start the iodine client and to setup routing I created a shell script. If you want to use this script, you have to fill in your own server details. It depends on busybox provided by Titanium backup and it assumes that a tunnel will be created over WiFi (device wlan0).

To copy the TUN Driver and the startup script to your phone:

  • adb push tun.ko /data/local/tmp
  • adb push iodine.sh /data/local/tmp

You can now try to setup a DNS tunnel on your phone:

  • adb shell
  • su
  • cd /data/local/tmp/
  • chmod 777 iodine_route.sh
  • iodine_route.sh

I use Script Manager to start the tunnel from my phone.

You can restore the default routing by disabling and enabling WiFi.

If you want to store iodine on a permanent location, you can re-mount your system partition read-write:

  • mount -o remount,rw -t yaffs2 /dev/block/mtdblock<your block number> /system
  • ../busybox cp /data/local/tmp/* /system/xbin

Tip: my hosting provider didn’t allowed me to set NS records for a sub-domain, that is why I used the FreeDNS service.

Fun facts:

  • iod = IP over DNS
  • DNS port number = 53 = atomic number of iodine

Download the patch, script and generic binary.

Update 19/5/2012: even easier now: MagicTunnel.

Update 6/7/2012: see here for my own DNS tunnel implementation.

Comments and questions are as always very welcome.

Dec 082010
 

CSipSimpleAl een poosje gebruik ik naar tevredenheid CSipSimple op mijn Android-telefoon. Met deze gebruikersvriendelijke applicatie is het mogelijk om VoIP-gesprekken te voeren via Wi-Fi, GPRS en 3G (de laatste twee alleen als je provider dat toelaat).

Ik gebruik deze applicatie regelmatig in het buitenland om via open draadloos netwerken goedkoop naar Nederland te bellen. Ik gebruik daarvoor dezelfde VoIP-provider die ik thuis gebruik; op dit moment Poivy, één van de Betamax-klonen (prijsvergelijking). Als ik nog voldoende Freedays heb, wat meestal het geval is, bel ik zelfs gratis. Ik gebruik liever geen Skype, omdat ik de voorkeur geef aan open source software.

Een groot voordeel van CSipSimple is de uitstekende integratie met de ingebouwde applicaties. Als je dat wilt, kun je bij elk gesprek kiezen of je via VoIP wilt bellen of niet. Ook is het mogelijk om ervoor te kiezen de via VoIP gevoerde gesprekken in de standaard gesprekkenlijst op te laten nemen. Prettig is verder dat de applicatie zeer actief wordt ontwikkeld en ondersteund.

Vandaag is versie 0.00-16-00 uitgekomen. De belangrijkste toevoeging voor mij is de G.729-codec (issue 8). Na het aanzetten van deze codec wordt het mogelijk om zelfs bij een lage bandbreedte (< 32 Kbps, dus haast niets) gesprekken van goede kwaliteit te voeren. De meeste providers ondersteunen deze codec naast de gebruikelijke G.711-codec (in ieder geval de Betamax-klonen en BudgetPhone). Om ervoor te zorgen dat de G.729-codec gekozen wordt als deze beschikbaar is, heb ik deze bovenaan in de lijst met codecs gezet.

Voor het instellen van een Betamax-kloon (gegevens Poivy) kan de basic wizard worden gebruikt, maar voor een betrouwbaar resultaat en om dit probleem te vermijden, is het nodig om het transport naar UDP te forceren in de expert wizard (de wizard kan gekozen worden door lang te drukken op een account). Verder is het verstandig om een STUN-server in te stellen om de kans zo groot mogelijk te maken dat firewalls niet in de weg zitten. Ik gebruik daarvoor stun.ekiga.net. Om onderbrekingen in het geluid te voorkomen, heb ik ook nog de clock rate op 8 KHz gezet (afhankelijk van de versie is dit nu standaard).

CSipSimple barcode

Let op: De meeste VoIP-applicaties werken op een Sony Ericsson X10 mini met Android 1.6 niet goed.

Tip: ik gebruik altijd de Android applicatie van Speedtest.net om te kijken of de verbinding snel genoeg is.

Update: omdat ik wat wilde bijdragen, heb ik CSipSimple in het Nederlands vertaald.

Jul 262010
 

Sinds kort heb ik een Sony Ericsson Xperia X10 mini, mijn eerste smartphone. Tot nog toe vond ik de meeste smartphones te groot en moest naar mijn mening de batterij te vaak opgeladen worden. De X10 mini is klein (83 x 50 x 16 mm), erg handig op reis en de batterij gaat een dag of drie mee (ik zet wel steeds Wifi, Bluetooth, de GPS en de achtergrond-services uit). Handsfree telefoneren en muziek luisteren doe ik met een Sony Ericsson MW600 Wireless Headset.

Ik heb op dit moment (1 november 2011) de volgende applicaties geïnstalleerd:

Deze lijst is met EyeOnApps gemaakt.

1. aLogcat [org.jtb.alogcat]
2. Andrometer [com.highwaynorth.andrometer]
3. Authenticator [com.google.android.apps.authenticator]
4. BackPackTrack [biz.bokhorst]
5. Betamax SMS Lite [com.boxedinsoftware.betamax.smslite]
6. Buienradar.nl [com.supportware.Buienradar]
7. c:geo [cgeo.geocaching]
8. Chrome to Phone [com.google.android.apps.chrometophone]
9. ClockSync [ru.org.amip.ClockSync]
10. ConvertPad – Unit Converter [com.mathpad.mobile.android.wt.unit]
11. CSipSimple [com.csipsimple]
12. DirectLease Tankservice [com.app_it_up.dl_tankservice]
13. EHBO [nl.rodekruis.android]
14. ES File Explorer [com.estrongs.android.pop]
15. EyeOnApps Free [eu.ekinci.eyeonapps.free(AdMob)
16. Facebook [com.facebook.katana]
17. Gemini App Manager [com.seasmind.android.gmappmgr]
18. Google Sky Map [com.google.android.stardroid]
19. GPS Status [com.eclipsim.gpsstatus2]
20. K-9 Mail [com.fsck.k9]
21. KeePassDroid [com.android.keepass]
22. Lookout [com.lookout]
23. Lunafaqt [com.lunafaqt]
24. Maps [com.google.android.apps.maps]
25. Moon 3D [ru.watabou.moon3d]
26. MSN: Mercury (Free) [im.mercury.android]
27. Network Speed [netspeed.pt]
28. NewsRob [com.newsrob]
29. OI File Manager [org.openintents.filemanager]
30. Open GPS Tracker [nl.sogeti.android.gpstracker]
31. OTPdroid [de.ub0r.android.otpdroid]
32. PayPal [com.paypal.android.p2pmobile]
33. Penetrate [org.underdev.penetrate(AdMob)
34. QR Droid [la.droid.qr]
35. Quick Battery [com.bwx.qs.battery]
36. RealCalc [uk.co.nickfines.RealCalc]
37. RecForge Lite [dje073.android.audiorecorderlite]
38. Satellite AR [com.agi.android.augmentedreality]
39. Script Manager ads [os.tools.scriptmanager]
40. Snowstorm application [se.f1nally.snowstorm]
41. Speed Test [org.zwanoo.android.speedtest(AdMob)
42. SpitsScoren [nl.technolution.spitsscoren.spa]
43. Tide Prediction [net.muchoviento.android.tide]
44. Titanium Backup [com.keramidas.TitaniumBackup]
45. Traffic Counter [com.carl.trafficcounter]
46. Translate [com.google.android.apps.translate]
47. Tropical Skies [com.TropicalSkies]
48. TuneIn Radio [tunein.player(AdMob)
49. Tweakers.net [com.icemobile.tweakers]
50. UPnPlay [cx.hoohol.silanoid]
51. wetter.com [com.wetter.androidclient]
52. WiFi Manager [org.kman.WifiManager]
53. Wifi Static [com.farproc.wifi.statIc]
54. WordPress [org.wordpress.android]
55. XDA [com.quoord.tapatalkxda.activity]

En natuurlijk iodine.

Mijn desktop zag er zo uit:

Nuttige links:

Tips:

  • Draai de smartphone een kwart slag bij slechte ontvangst van draadloze netwerken
  • Gebruik een statisch IP bij slechte ontvangst van een draadloos netwerk
  • Wanneer aangeven wordt dat er weinig geheugen is, worden geen SMS-berichten ontvangen!

Huidige (1 november 2011) software versie: MiniCM7 2.1.3

Ik gebruik overigens Simyo mobiel internet (niet beschikbaar in het buitenland). Instellingen:

  • APN: basicinternet
 Posted by at 12:10  Tagged with: