Archive for the 'Porting' Category

PJSIP on Symbian Phone Works

[pjsip] PJSIP on Symbian Phone Works!:

This announcement is a bit late than planned (I promised to finish the Symbian port before Jan 2008), but we thought we’d give this a more thorough testing before announcing it, hence the delay.

In summary, PJSIP works and tested on Symbian S60 3rd Ed phone. Everything should work, including all SIP features, sound, STUN, and ICE. And we’ve made a tutorial on how to build and debug PJSIP on target device.

There have been some major changes along the way:

  • Carbide is now the preferred IDE rather than CodeWarrior. This is because CW has been deprecated by Nokia anyway.
  • Support for DSO is no longer enabled by default. It’s still supported, but you’d have to edit the MMP files slightly to build DSO outputs.

So what’s left to be done is for someone to create a nice open source Symbian softphone GUI on top of it. 😉

For more info:

pjmedia Running on iPod Touch: Good news for Open Source

The buzz on making phone calls from iPod Touch using software based on pjsip/pjmedia is picking up steam. Engadget, Tom Keating, even Andy Abramson of VoIP Watch has picked it up.

pjmedia is now up and running (screenshot courtesy of Touchmods):

pjmedia on iPod Touch screenshot

The imminent release of the software is also mentioned.

Because the developers are using pjsip and pjmedia under GPL that means the software is free and open source, and will be available to everyone! I am sure Matt Asay, recently posting about Apple and open source would be proud 🙂

VoIP on iPod Touch

eok did manage to make the Nintendo DS-based SIP app from Samuel running on the iPod Touch!!

VoIP confirmed!!! « iPod Touch Mods

After Nintendo DS, here is another pjsip port along the lines of VoIP on Consumer Devices product line: internet telephony on the iPod Touch. It needs a hardware modification to make activate the microphone though, so definitely not for the faint of heart!

Embedded RTP under µClinux on Nios2

I’m working on an application with PJMEDIA under uClinux on Nios2 environment. I have a stream audio with codec L16 48000 stereo and mono.This works good.

[pjsip] Resampling module add

It’s good to hear pjsip and pjmedia being ported on different embedded systems. The quote above relates to Nios II from Altera. Nowadays, running a media stacks such as RTP is very important for embedded processors such as Nios2.

If you have any other experience in using our protocol stacks on other embedded devices, please feel free to share it!

Making VoIP on Nintendo DS a reality: new open source SIP client available

SvSIP, a new VoIP client for Nintendo DS is making quite a stir! To name a few, Tom Keating, Engadget and Gizmodo also picked it up.

Congratulations are certainly in order for Samuel Vinson, for porting pjsip to Nintendo DS. I am going to try it out myself, as soon as I reconfigure my wi-fi back to WEP. (Update: Here’s my post on using pjsip on Nintendo DS)

And instead of a screen-shot, I’m going to give you one better: a complete video guide! (video created by therealbiglou) It demonstrates how to set it up, with final thoughts: “sound quality is very good”. The negatives include “low speaker volume” and “hard interface to follow”.

We’ll work with Samuel to tweak the volume The volume can now be controlled through a configuration setting, and regarding the interface… yeah I guess dumping a log file on screen is a million miles away from an iPhone! Oops I mentioned the i-word, I’m sure people will think it’s there for keyword stuffing.

But seriously, some comments on digg already saying it’s an “iPhone killer”. What do you think?

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!

Easy Setup of the Blackfin BF537-STAMP Development Board

The setup of a Blackfin BF537-STAMP board involves plugging in the AD1836A audio board, AC Adapter, network cable, serial cable, and using Hyperterminal to monitor boot-up sequence of the BF537 board.

This post builds on previous posts on porting pjsip to Blackfin and assembling components for embedded systems programming.

I will start with hardware setup as it is the easiest, so hopefully success at this will motivate you for the software setup, which can be, to use a technical term, fiddly.

Hardware setup

  1. Unpack the BF537 board and audio daughterboard.
  2. Plug the audio daughterboard to the mainboard, using the SPORT 0 connector. Match up pin 1 on both boards. You will end up with a dangling audio board, put some support under the audio board so it doesn’t strain the SPORT connector.
  3. Connect the BF537 board to the development PC using the serial and ethernet cable.
  4. Using HyperTerminal, connect to the serial port where the connecting cable is plugged in. As advised by the Blackfin uClinux docs website, use these setting:
  5. HyperTerminal Settings

  6. Plugin the AC adapter to the BF537 board. You should see lights turning on the board itself, and uClinux should be booting on your HyperTerminal console. You will end up in the uClinux prompt.
  7. Congratulations, you’ve successfully setup an embedded system! (Well, an embedded development environment really)

Software setup

The main steps in setting the tools needed are:

  1. Setup coLinux from Blackfin uClinux. Includes setting up networking so coLinux and BF537 board can see each other.
  2. Replace old toolchain in coLinux.
  3. In coLinux, download the uClinux distribution and U-Boot that matches the toolchain version.
  4. Replace U-Boot bootloader on BF537 board.
  5. Setup U-Boot to boot the uClinux downloaded in step 3.
  6. Use tftp server on coLinux so we can transfer file from host PC to BF537 board.

Steps in greater detail (with links to documentation as appropriate):

  1. Setup coLinux. I used the one available on Blackfin uClinux site and followed instructions from the documentation site.
  2. If your installation is successful you should be able to login to coLinux.
  3. Replacing the tool chain involves deleting the old one using apt-get remove and installing the new one using alien.
  4. Releases in Blackfin uClinux are named in the format of 2006R2, 2007R1 etc. It is important to know this because you need to have the same release of these software
    1. Toolchain
    2. uClinux
    3. U-Boot
  5. Upgrade the shipped U-Boot on the BF537 board with the latest one.
  6. Boot uClinux by downloading the image to BF 537 board.
  7. Now you can try the Hello World application.
  8. When you can compile and run the Hello World application, you are all set to begin real development!

Any questions or problems, just leave a comment.

Subscribe to blog updates

View Perry Ismangil's profile on LinkedIn

RSS PJSIP builds

  • An error has occurred; the feed is probably down. Try again later.