Archive for October 2007
30
Another SIP client ported to iPhone, doesn’t run :-(
1 Comment | Posted by mgamble in iPhone SIP
In my never ending quest to actually get a VoIP client working on the iPhone, I attempted to port minisip to the phone. After spending several hours working on getting the cross compiling going, I finally loaded the libraries and the binaries onto the phone and eagerly executed minisip only to be greated with the following:
bash-3.2# ./minisip_textui
Starting MiniSIP TextUI … welcome!
Creating TextUI
Semaphore::Semaphore: CreateSemaphore: Function not implemented
terminate called after throwing an instance of ‘SemaphoreException’
terminate called recursively
Abort trap
Damn! So close, yet so far away. I know audio doesn’t work yet, but if I can just get a command line SIP client to compile and run it would be an amazing first step in my mind. Oh well, back to the lab to keep on testing, coding, and hacking to see if I can actually get a working SIP client (even without audio) on the iPhone.
After working on getting gettext, glib, and some other basic libraries complied for the iPhone, I finally got sofsip-cli to compile (without media support at this point) but when I transfer the resulting libary to the phone, I get:
bash-3.2# ./bin/sofsip_cli
dyld: Symbol not found: _kSCCompAnyRegex
Referenced from: /usr/local/sofia-sip//lib/libsofia-sip-ua.0.dylib
Expected in: flat namespace
Trace/BPT trap
And that’s where I’m stuck, trying to figure out why that symbol is in my development environment, but doesn’t exist on the iPhone. If anyone knows what I’m doing wrong, please feel free to contact me – I’ve almost got a sip client going on the phone!
After working on the Asterisk iPhone port this weekend, I decided to try something a bit more complex and port the Sofia-SIP library to the iPhone. I had it working on my Nokia N770 tablet as a CLI SIP client and while it wasn’t pretty, it was a functional SIP phone. There are two key parts to getting this working on the iPhone:
- Port the Sofia-SIP core libraries, which is now complete (binaries are here)
- Port the simple cli client sofsip-cli. I’m in the progress of doing this now and hope to have something working soon. If everything goes as planned, I should have a working cli sip client on my iPhone. I’m not sure about the audio in/out, but I’ll cross that bridge when I get to it.
I’ll keep updating as I progress, but so far things are looking good.
A few people were asking me for a screenshot of iPhone Asterisk in action, so here it is:

I got an email tonight from a member of the Toronto Asterisk Users Group asking me what was the point of putting Asterisk on the iPhone, and I thought I’d share my initial thoughts:
First off, the project started for me as a way to play with the cross compiling toolchain for the iphone, and since Asterisk is a program I use and have written patches for in the past, it seemed like a logical choice for the first application to attempt to port. But after having it running for a few hours, I now can see it as a solid state asterisk box with 8 gigs of storage for $399 that is USB powered, so in effect, it is a fully portable PBX that doesn’t require a lot of power. Further, I could see cases were you would want to use it for demos (easier to move than a full system) or maybe for doing some IAX -> SIP trunk conversion while you are on the road. The uses are endless in my mind – if people use Asterisk on the WRT54G router, why not the iPhone?
This blog is currently under construction as most of my time right now is being spent on my port of Asterisk to the iPhone, but I figured a blog might be the better place to start posting the small updates on the development effort as it progresses. While I work on creating the rest of the blog, you can check out the page for the iphone asterisk port.
