Posts Tagged 'Embedded SIP'

Open source SIP stack, media, STUN, and ICE for Symbian OS

Just yesterday I finished back porting the Symbian branch to the trunk, and I think it’s good to go.

It’s been a roller-coaster way, supporting Symbian. It’s not the most developer friendly OS to port your programs to (see Readers Write about Symbian, OS X, and the iPhone), but we knew that, and I felt that this should make a good challenge for PJLIB, to see if it lives to its extreme portability claim. So we first started the port on May 2006, created a Symbian branch based on, and estimated that the work will need couple of months work. It wasn’t long before we realized we needed more time, and we revised the target to September 2006. But we still missed the target anyway.

Only about two months later, on Nov 2006, where we really had all of the libraries ported (only sound device is missing). But by this time, this branch was lagging waay behind the trunk, so it will take significant efforts (and commitments) to bring the port into the trunk.

But finally we had gathered enough “motivations” to do this, few days back, and it’s here.

Symbian target is officially supported in the trunk. All libraries have been ported. All seems to be running fine. No more panics. No memory leaks. All is good to go. Sound device is still missing, unfortunately.

So what do we have for the Symbian port again? For those new to PJSIP projects, here’s all of them:

  • pjlib, our platform abstraction hero.
  • pjlib-util, an auxiliary library containing parts needed by upper layer libraries (things like text scanning, XML, DNS SRV resolution, and various encryption algorithm),
  • pjnath, a NAT helper library containing the latest STUN, TURN, and ICE,
  • pjmedia, the media stack,
  • pjsip, pjsip-ua, pjsip-simple, libraries containing the bunch of SIP features,
  • pjsua-lib, a library combining SIP, media, and DNS SRV/STUN/ICE into high level API, and
  • symbian_ua, a simple console based SIP user agent for Symbian, based on pjsua-lib.

Some screenshot? Sure:

SIP User Agent on Symbian Emulator

Screenshot of symbian_ua on S60 Emulator

It’s been fun programming on Symbian. Learning curve has been steep. The tools are not perfect. But now I think I’m relatively more comfortable with it, and it becomes just another target for coding.

For more information about using the Symbian port, please see Porting PJ to Symbian OS. The porting effort itself is tracked on this Symbian-Porting Trac page.

Have fun yourself!

How to start embedded SIP development on Blackfin uClinux

In the process of porting pjsip to Blackfin, you will need an appropriate embedded development board, software tools, and development host.

Embedded development board

  • There’s some choice of development boards, but for simplicity I suggest using the STAMP boards with its audio card.
  • You will need:
    • BF537-STAMP (available at Digi-Key)
    • AD1836A Audio Daughter Board (available at Digi-Key)
      • Again for simplicity, just order both the board and audio card from Digi-Key, even though technically you can contact your local distributor for Analog Devices. Certainly for people living in USA, it’s a no-brainer. I tried several places listed in the local distributor for UK, none have stock and certainly the audio card was hard to find. So I ordered from Digi-Key anyway, it was shipped within 24 hours. But I made the mistake of choosing Global Express Mail, it’s slooow and in the UK handled by ParcelForce. Enough said.
      • Be aware of customs, taxes, and the cost of collecting such taxes. For the UK, HMRC demanded about £55, and ParcelForce added £13.50 collection fee.
    • A straight-thru serial cable that ends in DB9 (9-pin) male. 180px-9_pin_d-sub_connector_male_closeup.jpg The other end depends on the serial port you have on your development host PC, usually you will need a 9-pin female plug. So look for a straight-thru (not null modem) 9-pin male to 9-pin female. In the UK I can recommend CableStar. Clear and fair pricing with fast delivery.
    • A network patch cable:
      • If you connect your Blackfin STAMP board directly to your development PC then you need a cross-over cable. Here’s one example on CableStar.
      • If you connect the board to a hub, then just a normal patch cable.

Software tools

  • All related embedded development tools can be downloaded from Blackfin Linux.
  • You will need:
    • A set of compilers, linkers called the Toolchain.
    • uClinux distribution
    • U-boot bootloader
  • I will detail the experience of setting up the development host with the tools above in another post.
  • Since I use Windows, I will also need coLinux as a host.

Development host

  • PC running Windows with coLinux. The docs/forum seems to suggest there is a Windows port of the tools, but the releases pages of the tools seems to be Linux only.
  • Available serial port. Modern PCs does not have this, so you may have to buy a USB-to-Serial adapter/dongle. Any make will do, I bought mine from eBay.
  • Available Ethernet LAN port if you want to connect the development board directly to your PC, which I recommend as it makes things a bit easier.

That’s all for now. In the next post I will connect them altogether, and hopefully have a running system.

Until then, if you have any suggestions or questions, just leave a comment!