Search This Blog

Tuesday, April 29, 2008

SIP UA for Android (+stack + RTP) released

Update: Nov-20-2008: Updated SDK + UA for 1.0 SDK released here. Also released jSTUN port for android here.



Hi folks, as promised, HSC released the ported SIP UA including the stack. This is an update to our previous 'stack only' release. We have overwritten the old release with this new one in our download area. You can get it from here (look for the post titled "SIP UA + Stack for Google Android).

This release includes a short illustrative manual on how to use the SIP client and some things you need to do to configure it (mostly because of the limitation of the android emulator and what it does(not) support as of the current date). We have also included a ported RTP stack with this release. Theoretically, this release is all set for a signalling + media use case. I say theoretically, because it seems the android emulator does not support audio capture, so everytime one tries to start a media conversation, the emulator crashes. Folks @ the android-dev group have confirmed this is currently not supported in the emulator (but works on their actual phone).



So naturally, we had no way of testing it, and therefore, the code is compiled, ready to test, and commented out :-)

Have fun. Some of you have asked us whether we plan to continue working on this. Sure - but no commitments. Some 'IMS zealots' in my company have started a side project to now make this UE IMS compliant (we do a lot of work on the IMS side, so a android IMS UE will be neat). When that happens, you will know. Naturally, it will be honoring the GPL way of life, since we will do on top of MJSIP.

Enjoy.

PS: If you intend to report this in other blogs/posts, I welcome you to do so. My request is to credit Hughes Systique Corporation with this port and not me as an individual (that is only fair, because there are others working on the port who are part of the company. Thanks)

37 comments:

  1. Did you guys attempt to simply stream a .wav file over RTP since audio capture is not supported ?

    ReplyDelete
  2. Hi, no, we did not. Do post here when you manage to get that done. Then you can atlease have a one-way sendonly recvonly stream ;-)

    ReplyDelete
  3. Hy there! I'm doing a project that have the same purpose of yours. I would like to know where did get the RTP stack implementation that were ported to android? Thks for the help.

    ReplyDelete
  4. It was a sample minimalistic RTP implementation provided by the mjsip folks. For a more complete RTP implementation in Java see http://jlibrtp.org/

    ReplyDelete
  5. Thanks. I've been at http://jlibrtp.org before but i am looking for a minimalistic implementation to start on. About the lack of support on the emulator, have you tried using the "-mic" option, that receive an WAV file as input? I've tried it, but i didn't have any success. Thanks!

    ReplyDelete
  6. Hi there, i would like to have a copy of the non-ported rtp stack implementation that u used. Thks folks!

    ReplyDelete
  7. It is already part of the ZIP file

    ReplyDelete
  8. HI Arjun,

    I was trying to use your SipUA. However, I am struck with the configuration etc. emulator says "calling...." but when I start wireshark , I dont see any SIP message.

    Probably I am wrong in configuration settings for emulator.

    I have a laptop at home on which I am running android emulator with your (HSC) SipUA.
    Can you please guide many users like me to how to setup the ports , enter LocalIP etc. do we need to use redir udp:port:port? do we need to do any port forwarding or disabling firewalls etc.

    I also have X-lite without any configuration yet.

    I saw your video. YOu have configured your x-lite with some sip server and proxy server. Actually I did not get what you said for configuring the x-lite. Did u say SIPfundo and proxy server?

    Did you install any SIP server in your LAN or have you used external sip service providers like sip phone for configuring android emulator and x-lite or is it not necessary to configure with any sip server for demo purposes.

    A step by step report would really help many users like me.

    Thanks,
    Jyothsna

    ReplyDelete
  9. Just wondering why you chose mjsip. What were the main reasons. From my understanding Jain SIP is much more actively developed.

    ReplyDelete
  10. @Fred,
    mostly it was familiarity. We had used MJSip (as well as pjsip) earlier for mobile apps - both lightweight, so we just decided to roll with it. Our IMS team is also using mjsip for teminal app prototypes so we thought it would be useful to go with the same stack so we can push out IMS changes too. That reminds me - we have IMS working too, need to find time to release it out..

    ReplyDelete
  11. Thanks for the quick response. About how much time did it take u to port it? And what were the major things you had to do to port the library? I might port libraries in the future and wanted to know what documents you followed to get the job done. I haven't used mjsip before so I might check out your library. I have worked with JAIN and pjsip before though.

    ReplyDelete
  12. Well, the small group of folks doing it were really dabbling around and not on it full time (or even half time), so its hard to say how long. In this mode, a first port was ready in a week. Then the team got busy, came back, got busy etc. etc. All in all, I think if it was a dedicated effort, the stack would not take more than a week (again, prototype quality). UA took some more time because of all the bugs in Android, waiting for the android folks to respond etc. The primary effort was to to ensure that module dependencies were met in android and then rewriting some parts that were different in android-java vs normal-java

    ReplyDelete
  13. My questions--

    1. will Tmobile freak out or be cool (as they are about many things-- unlocking phones for example) about this?

    2. What will latency be like?

    3. SIP is nasty behind NAT- requiring ssh tunneling and stuff to get around. As I doubt every G1 will have its own IP, I wonder what kind of connection will be possible with a SIP server on the internet.

    4. is there a java implementation of AIX2?

    W

    ReplyDelete
  14. is it down to a apk file now i dont see know any project with the java project with the sip for the android htc version....

    ReplyDelete
  15. Congrats on getting this up and running !
    Was just wondering whether there is any support for SIMPLE and presence/IM parts yet on this platform ?
    Thanks

    ReplyDelete
  16. Arjun, on 31.7. you told you have IMS working and you just needed time to release it. Now three months later i just wanted to ask if you still plan to release the IMS stack and if you can give a timeframe.

    Thanks,
    Thomas

    ReplyDelete
  17. Now that there is an actual Android device out, has there been any further advancement toward getting this to fully work? I work in an envrionment that has plentiful wifi access but for some reason the cell signals have a tough time making it down through 100ft of limestone, so a voip solution is a top priority for me.

    ReplyDelete
  18. @Michael: Since the stack is ported, you can use it to send SIMPLE messages.

    @Thomas: *Shuffling feet* *looking around* *shrug* - it is where we left it months ago. Its around 70% complete. We got busy doing some customer stuff :-p. Let me see if I can push it out soon.

    @James: We have ported it to the new SDK. G1 uses the new SDK. If you mean if we have investigated the media issue, no not yet
    Frankly, we got diverted doing other interesting (but non free) stuff.

    Now that the G1 is actually released, there is a lot of renewed interest. Let me see if I can get the updated version out soon.

    ReplyDelete
  19. I have encountered a error:

    The import android.view.Menu.Item cannot be resolved

    How do I resolve this?? android.view.Menu.Item not included in library?

    Thanks

    ReplyDelete
  20. Hi,

    change android.view.Menu.Item to android.view.MenuItem;

    Thanks

    ReplyDelete
  21. Is it true that The SIP UA for Android (+stack + RTP) was written based on Android SDK 0.9? Is there the one written based on Android SDK 1.0?

    Thanks

    ReplyDelete
  22. Thanks for your answer! Would be nice!

    ReplyDelete
  23. I have set up a 3CX proxy server on Windows XP and have X-lite 3.0 configured so that X-lite can register with 3CX proxy server. How do I configure SipDroid so that it can register with 3CX proxy server to make a phone call to X-Lite 3.0?

    ReplyDelete
  24. Folks, please see http://blog.roychowdhury.org/2008/11/17/updated-sip-stack-and-ua-for-android-sdk-10r1/ . We released the updated SIP stack and UA for Android SDK 1.0r1

    ReplyDelete
  25. Hi Thomas!

    For registering SipDroid on the Proxy, simply change the domain/realm from the configuration screen. Reload the client and you should be good to go. We have tested proxy based call routing using Brekeke and it was seamless.

    Regards
    Nitin

    ReplyDelete
  26. hi,
    However, for basic SIP registration, I still have no idea why it is related
    to audio capture. Without multimedia transmission, how come basic SIP function,
    such as instant message (only text part) cannot be supported in emulator.

    Any SIP command could be performing in Android or not without audio part?

    many thanks

    neo

    ReplyDelete
  27. @Neo,
    sure Registration and all non-voice related functions will work (IM included)

    ReplyDelete
  28. It looks like this program won't work any more thanks to Google removing javax.sound.* in the 0.9 API core library:
    http://code.google.com/android/migrating/m5-0.9/changes/changes-summary.html

    The new release of this code that is works with the 1.0 API says:
    "This release does not include the RTP stack as it is already a part of the released Android source code..."

    There does not appear to be an RTP stack built in to Android; someone please correct me if I am wrong.

    ReplyDelete
  29. Hi everyone,

    We are trying to incorporate instant messaging service in this UA. We are able to send messages successfully to the other end, but not able to receive any. I guess it's because incoming messages are intended for the SIP UA running on the emulator, but they don't get there, they get stuck on the machine as it doesn't see any application running on that port because UA is not running on the machine, it's actually running within the emulator (I see 'Port Unreachable' in the WireShark logs). I think for the same reason the UA doesn't take incoming calls. I tried using adb for port forwarding, but it didn't help.

    I would really appreciate if you could provide any help on this.
    Thanks in advance.

    ReplyDelete
  30. Hi,
    has anybody tried this on an actual device? I have been trying it on a G1, but an unable to get the G1 to register with the server. I have tried both via the 3G data transmission and via a wifi connection, I have also tried gateway solutions with my sip provider that support nat translation.

    Any suggestions gratefully recieved and would be happy to post feedback on the setup once i get this working.

    Regards

    Mark

    ReplyDelete
  31. @all, sorry for the late response. Christmas/New Year and all. Will revert to comments soon.

    ReplyDelete
  32. @all, I have locked this thread, because this is an old post. The more recent thread where we announced the 1.0SDK port is still open for comments. All responses to comments will be posted there.
    Link for that thread: is here

    ReplyDelete
  33. can anyone tell me if their droid x ever had a message saying another application is currently using SIP port! Can't start, and how do you get it off of your screen

    ReplyDelete