Sipdroid Error “Registration failed (404 not found)”

When I was first configuring Sipdroid, I kept getting a notification from Sipdroid “Registration failed (404 not found)”. I thought this meant that Sipdroid couldn’t find the pbxes.org server and I tried configuring it to talk directly to my SIP service (which didn’t work, either).

It turned out that the 404 error was extremely misleading. What it was really indicating was that my Trunk configuration in pbxes.org was non-functional. I had not correctly configured the Trunk to correctly access my SIP account. Once I read the instructions from my SIP provider and got the trunk to authenticate the 404 error disappeared.

The error should really be something more like “401 trunk not authorized”.

Advertisements

Google Voice + Sipdroid = Transparent Free International Calls

  Android is really exceeding all of my expectations. One fantastic feature of the Android platform is that all of the apps are on an equal footing. Third parties can hook into Intents and even replace whole features. Even the dialer.

Enter Sipdroid which is an open source SIP IP phone protocol client for Android. Sipdroid can either replace the dialer entirely, replace it when you have data network support or just hook the dialer so that when you dial a number ending in + with the built-in phone app, the call is made via Sipdroid.

Sipdroid works best with a freemium virtual call routing service, pbxes.org. Pbxes.org appears to be based on Asterisk and is sponsoring the development of Sipdroid. Google’s Gizmo5 “Guava” app is based on Sipdroid.

Things are tricky to set up mostly because of a derth of documentation and misleading error messages, but here is the gist:

  • Sipdroid talks to pbxes.org (theoretically not required)
  • Pbxes.org has one or more “trunks” which are logical phone lines. The trunk is a way to connect your 3rd party SIP phone account. (Pbxes will suggest some if you don’t already have one.)
  • Pbxes.org has one or more extensions and inbound and outbound routes. At its simplest, there is one trunk, one extension, one inbound route.
  • If you want to be able to send calls, then Pbxes needs an outbound route.

Sipdroid has several codecs so it can automatically scale the call quality to the available bandwidth. in the screenshot below, I have a call over Edge at 11Kb/s using thespeex codec.

sipdroid-incomming

sipdroid-in-progress

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

This is fantastic because what it allows me to do is have a SIP phone number in the USA that forwards calls to my phone when I am overseas as long as I have data service from the GSM network or from WiFi.

Voice Makes it Transparent

I want something even better. I want a single voicemail box and I don’t want people to have to know to call my SIP number. I want it all to be transparent. The key to this is doing an unconditional forward of my old number to Google Voice.

While pbxes.org offers basic voicemail service and will even email you an audio file, what I really want is to use my Google Voice voicemail.

You need a Google number and then use Google Voice to ring the SIP number and my Skype-out number, too. Google Voice says that it will only forward SIP calls to Gizmo5 accounts but it will actually forward to anything that has a dialable phone number.

call-routing

google-voice-routing It’s important to set the call timeout as long as possible on your SIP service to make sure that Google Voicemail will kick in before a network error does. Also, be careful not to create a dialing loop. If you are forwarding calls from a number to Voice, don’t have Voice dial that number. (See above where Voice is not dialing my AT&T number because that is what is forwarding to my Google number.)

Once I Google Voice is set up to forward to Sipdroid (and Skype), I can turn on forwarding of my old telephone number to Voice anytime I am going to be out of the country and I present a single number to the outside world and people can call me overseas without incurring any long distance charges. It is totally transparent to them. They don’t have to know about any of these numbers used to route the call.

Goodbye iPhone 3Gs, Hello Nexus One

nexus-one-logo

I have really enjoyed my iPhone and mobile Safari but AT&T and Apple will not unlock an iPhone for any reason. I am moving to Ghana and there is no way that I will be roaming with an AT&T international plan. It seems that iPhones are not yet sold in Ghana so I would have to try to buy an unlocked one in Amsterdam in transit or buy something in Ghana.

I couldn’t resist the new Google Nexus One. It was almost tailor-made for solving my problem. MTN in Ghana has 900MHz UMTS, which is supported by the Nexus One. And, of course, the Nexus One is sold unlocked.

Initial key selling points:

  • Unlocked
  • Can be tethered (via rooting or PDANet)
  • Integration with Google Apps
  • Multitasking
  • Not tied to iTunes or any other desktop software

Android is a Java-like VM called Dalvik which runs on top of a core Linux OS and some C libraries like WebKit and SQLite. I was definitely concerned that the phone would be sluggish or klunky. It is neither. It is fast and it is slick.

My initial impression is that this phone has everything that I loved about the iPhone and either has built-in or add-on fixes for all the things that annoyed me.

device

Initial observations:

  • Phone “activation” is dead simple. You sign in with a Google Apps, regular Google or Exchange account (or a combo) and you’re done.
  • This thing seems faster than the iPhone 3Gs.
  • WiFi performance is great and Edge (I’m still on AT&T) seems the same as the “3G” (which often falls back to Edge) performance I have been getting in my little slice of Washington, DC.
  • The Voice app is like Visual Voicemail on steroids. Yeah, sometimes the transcripts are bad but then you fall back to the same behavior as Visual Voicemail. Incidentally, you don’t need a Google number for Voice to work. It sets itself up with your carrier to replace the voicemail system provided by your carrier and you can turn it off if you want to go back.
  • Gadgets are a cool way to embed applications like calendar, weather and news and search right in your home screens.
  • The Google Market store for apps is well done and it’s a nice touch that there is an Amazon music store app.
  • Listen is fantastic at pulling down podcasts over the air and caching them. It also can pull them down in real time and I can still surf the web at the same time. On iPhone this wasn’t possible because the media streaming component of Safari is modal. You can’t do anything else with Safari unless you kill the stream.
  • I love that the alarm clock has a cock crowing ringtone.

I have been seeing more and more Droid phones popping up around town. This feels like the future.

C# as Universal Smart Phone Programming Language?

We started thinking about building a smart phone app to interface to PeopleMatrix. The obvious devices to support are BlackBerry, iPhone, Android and Windows Mobile. There is also Symbian but those devices are unusual in our primary market. Each one of these platforms has a totally different programming model:

  • BlackBerry –> Java ME + RIM libraries
  • iPhone –> Objective-C
  • Android –> Subset of Java 5 + Apache commons and  Android libraries
  • Windows Mobile –> C/C++ and .NET CF
  • Symbian –> Weird non-standard Symbian C++ variant and Qt

I just can’t envision anyone using their smartphone to interact with a sophisticated app on a screen the size or a postage stamp. That eliminates Blackberry and (many) Windows Mobile devices. Also, you have to prioritize developing for the device platforms that are growing. That means iPhone and Andoid. iPhone is very popular and Android has shown amazing growth.

The problem is that the development environment is totally different so that porting applications between Android and iPhone is a complete re-write. One ray of hope for leveraging code across these platforms is the Mono project. Novell is currently shipping a product called MonoTouch which compiles C# code into native binaries for the iPhone. The Mono guys also have Mono working on Android with proxy classes that call into the Android libraries. (In early testing Mono appears to out-perform Dalvik, too.)

If Mono on Android gets polished up like MonoTouch, that would make C# a first class programming language for a huge swath of the most exciting devices. The largest challenge for managing the codebase of an app is that it is very likely that each platform would require care to abstract access to platform-native APIs which would certainly include the GUI and other hardware interfaces.

Even so, I am watching Mono closely. Interesting times.

%d bloggers like this: