s1p

Rating: 
4.92857
Your rating: None Average: 4.9 (14 votes)

s1p is an experimental SIP client for Sailfish OS

This is software in an early stage of development - please don't expect it to work with every type of SIP server out there.

It also needs a restart after any changes to the settings.

Successfully tested with Asterisk chan_sip.

Please reference the log-id when writing a comment after submittimg a log. The id should be displayed at the bottom of the page if the log was successfully submitted. 

 

Screenshots: 

Keywords:

Changelog: 

- 0.0.2 initial release

- 0.0.3 adds log page

- 0.0.4 fixes registering issues with antisip.com

- 0.0.5 adds ringtones

- 0.0.6 improves UI and makes hanging up calls more reliable

- 0.0.7 fixes some issues with sipgate (inbound calls still broken)

- 0.0.8 fixes inbound calls with sipgate (cancelling outbound calls still broken)

- 0.0.9 fixes issues with outbound calls through sipgate

- 0.1.0 improves UI

- 0.1.1 adds contacts page

- 0.1.2 adds log upload

- 0.1.3 improves logging and handling of audio packets

- 0.1.4 enables audio output selection buttons

- 0.1.5 fixes issues with audio output selection

- 0.1.6 enables mute button

- 0.1.7 adds volume presets

- 0.1.8 makes some changes to how audio frames are handled

- 0.1.9 fixes choppy audio on some phones

- 0.2.0 adds G.711 μ-law codec, (hopefully) fixes some call-state issues

- 0.2.1 adds DNS SRV record lookup

- 0.2.2 fixes call status being sometimes overwritten by regstration status

- 0.2.3 adds initial DTMF support

- 0.2.4 adds preferrence for domain instead of IP in SIP dialogs and adds auth-name field to SIP account settings

- 0.2.5 adds improvements to power consumption, audio handler and playback buffer

- 0.2.6 adds configuration-file options for latency and audio buffer length

- 0.2.7 adds configuration dialog options for latency and audio buffer length

- 0.2.8 fixes issues with setting latency and buffer length

- 0.2.9 enables voicemail button, fixes issues with number input

- 0.3.0 adds options for bind address and regsiter frequency

- 0.3.1 sets default register frequency to 1 hour

- 0.3.2 fixes regsitering with sip.linphone.org

- 0.3.3 fixes previously broken default settings

- 0.3.4 adds support for display name

- 0.3.5 fixes proxy-authentication

- 0.3.6 allows a more flexible approach to call progess messages

- 0.3.7 reinstates stricter approach to call progess messages

Comments

amaretzek's picture

v 2.8, s1p started, no calls, 11h running, 26 minutes CPU, which makes 2.4% duty cycle. Guess this is ok.

unmaintained's picture

During a call CPU will, of course, go up but I think I've fixed the PA problem and usage should now get to normal after each call. 

amaretzek's picture

No excessive battery drain (2%/h) observed after calling with v29, around 2.5% duty cycle for s1p.

unmaintained's picture

Good to know, thank you.

mano's picture

I'd love to test, but I need to have a separate authenticating user than the sip account (number).
Do you have any plans implementing that in the near future?
Thanks a lot, shame on jolla for letting others do their work...
Maybe you'll on-board once telepathy-rakia and sofia-sip core packages will be finished? As high rated senior consultant :-)

unmaintained's picture

Auth-user should come with version 0.2.4
As to Jolla, there are maybe 10-15 users worldwide that  are interested in SIP for SFOS. The sad truth is that this would never make any economic sense to Jolla to  spend time on something such marginal compared to the much bigger issues they have to deal with (ancient browser engine comes to mind) right now.

mano's picture

Oh, and found that the registrar domain setting is also missing. Currently the resolved hostname is used. In case of a hostname provided for the registration server, I'd expect that one to be used. Setups where the domain corresponds to the IP, users can always enter the IP, instead of the hostname, but not vice versa :-)
Thanks!

unmaintained's picture

Should also come with 0.2.4

mano's picture

Incredible, thank you very much for that quick additions!
Could successfully test with my local pbx (slightly modified asterisk/chan_sip).
I noticed assymetric lag - s1p tx latency is ok, but the receiving buffer seems to be much too huge, which I estimate to be a whole second. Not qualified timed, but it's really some orders of magnitude more than the usual RTP latency with WiFi connected SIP phones here.
Has anybody else reported such a long delay for the receiving side? It doesn't matter if output is handsfree-speaker or earset - it always takes roundabout a second until the partner's audio plays back.
Thanks!

unmaintained's picture

Are there any differences to the delay with 0.2.5 ?

Bsingleto's picture

Patiently Waiting Your Next Update on a TOUCH TONE feature to round up this Voip for me. This is legitimate. I can soon have a working phone line. VoipCheap intergrates with

S1P

and it works. ( speaker phone always echoed with this service, so having it start on speaker phone so i know the call connected is great. Next i click speaker phone off and put it to my face where there no longer an echo on the receivers end. Sometimes my face will hit the mute / headphone / speaker button because the proximity sensor does not shut the screen off, but im okay with manully tapping the power on my xa2 button everytime to ensure the screen is off before putting it up to my face. Thats probably phone specific programming or so something to fix/add, idk) But adding the KeyPress/Touchtone would make it perfect for me/some of us.

unmaintained's picture

Have you been able to test the DTMF tones? 

I've tested it with Sipgate + Asterisk and it seems to work quite well.

The event duration is fixed at 500ms right now but this should not be an issue with most applications.

Bsingleto's picture

I noticed the update log and events log. Well thanks for adding 0.2.3 support DTMF. next when i look at the call events log it say: DEBUG {RTPServer DEBUG {RTPServer 2} Send Dtmf -event 3, end: false (or sometimes ) true duration: 4000 units and the none of the touch tones work with VoipCheap service here. Are you saying this should be changed to 500 units somehow? Can i do that?

unmaintained's picture

The line you've mentioned looks correct. Also 4000 units (=500ms) should be enough to trigger an action.

I've tested it with Asterisk, sipgate and colt.net so far and it worked every time but there are several ways how DTMF events can be transported. At the moment the only one supported with s1p is rfc2833.

Bramba's picture

Wow, I was waiting for this since five years! :-) Thank you very much for your AWESOME work!

Did anybody test it with SIP-provider Easybell already? I can login successfully both via wifi and mobile data, but have some issues with outgoing calls (incoming calls not yet tested).

Bug list:

- Outgoing calls with SIP-provider Easybell do not work (all calls end immediately after dialling) (-> *1)
- Sorting order in contacts list does not use existing config of phone address book (s1p inevitably sorts by first name, phone address book sorts by users config, e.g. family name)
- Last action (e.g. "Call ended") is displayed until a new action is carried out. I guess, displaying the last message for only about 10 seconds should be enough. :-)

(*1) From log file: DEBUG [SIPServer-1] HandleResponseTerminatedOther [blabla@blabla] - call terminated with code: 400 session description parsing failed

Could you provide a Github-repo so we can better support you with bugs and logs? :-)

Again - THANK YOU for your great efforts!

unmaintained's picture

You can upload the log from inside the app and just post the log-id (displayed at the bottom of the log page after upload) here should this make things easier.

Bramba's picture

Thank you for your kind reply! The corresponding log-ID is 25.

Is this data handled confidentially? It contains personal data...

unmaintained's picture

I've checked the log and the other endpint seem to complain about not beig able to parse SDP information. Does this happen with 0.2.5 as well?

unmaintained's picture

I don't have a Facebook account so won't post them there, promise :)
You can also delete single log entries that would contain passwords etc. before uploading them if that helps. 

Bsingleto's picture

OMG this thing works now. well, 1st, since i remembered my correct login in and password for my voip service, lol. I've been putting that in wrong probably all this time. next the VOIPCHEAP service that i use serve address is 77.72.169.134 with the 5060 port. Waiting a few hours after requesting SIP use via their/my settings online then checking back after a day clicking Enabled For SIP. It works, it really does. Been testing phone calls for the past three hours. ...mainly calling different businesses because i dont have any friends that i want to talk to. The top of my screen says 'Trying' and that is how i know it is working and logged in correctly to make outgoing calls. Im still testing it out but for the most part its good as its always sounded. Ive never used a different or more expensive provider which may work better in comparison, but considering how ive only paid 50 for service for close to a decade, im sticking with this company. A sad part is the touch tone key presses do not register at all so i cannot do any message trees or dial by extension type things (which is my perfered method of using the phone because who wants to talk to someone over the phone, not me)
Thanks for this sailfish os app that integrates with someones own VOIP provider! AND thanks for pushing out updates based on our feedback here. You deserve a coffee BTW where is the link to your paypal. I want to Send You COFFEE (two coffees if you get the Key Presses to register during calls)!

maier's picture

Problem solfed)))) ...next problem is the possibility to choose the speaker / mic devices. The menu has no response. Speaker is on by default and it's not possible to switch something.

unmaintained's picture

Which device are you using?

maier's picture

I'm using JP1 with an internal connection to a FritzBox 7490.
The internal phone counterpart is a Gigaset Dect phone or a computer connection with Linux and Empathy as SIP client. On the JP1 is used the speaker and the upper mic. And as I found out the mic is possible to toggle during a call but not easily. May there is a layout overlay with the called phone number.

unmaintained's picture

I've just posted SetSink to OpenRepos to try to find out what's going wrong.
Is a command-line app and should display the IDs of the ports in question.

You could also try to set the output port with setsink to check if there's any chance to make it work in s1p.

unmaintained's picture

Unfortunately I couldn't make my Jolla1 boot any more no matter how hard I've tried, even after replacing the battery. I suspect the PulseAudio configuration is slightly differen from the Sony devices (port names maybe). 
You could try to run the follwong command to find out the port names, should it be installed on your Jolla:
pactl list

c_mauderer's picture

Like many others, I'm very happy about a SIP-App too. But like normal for such a new app: I've got a problem and would like to report it. It's nothing critical so don't hesitate to ignore it if you don't have time or don't feel like taking a look at it.

I tried to use s1p as a client to a FritzBox 7560. Now I tried it with an internal call. I'm calling **620 (the internal number of s1p) from a DECT handset **610. Everything works fine (except that the speaker is on by default) which is really great work for such a new app. What doesn't work is hanging up. The audio connection is interrupted but the DECT handset doesn't receive the information that I hung up. Only when I hang up on the DECT handset too the connection is finally closed.

A log of the end of the connection is here:

[1] INFO handle_stdout - event frame: {'event': 'register_status', 'status': 19}
[1] INFO handle_event_frame - frame: {'event': 'register_status', 'status': 19}
[1] rec: b'{"event":"declined","from_peer":"christian","to_peer":"christian","outbound":true}\n'

[1] INFO handle_stdout - event frame: {'event': 'declined', 'from_peer': 'christian', 'to_peer': 'christian', 'outbound': True}
[1] INFO handle_event_frame - frame: {'event': 'declined', 'from_peer': 'christian', 'to_peer': 'christian', 'outbound': True}
b'PulseHandler - playback stream suspended - stream index: 0, suspended: false\n'
b'PulseHandler - unhandled message: &proto.Started{StreamIndex:0x0}\n'
[D] :86 - 1 handle_event_frame - unhandled event: declined
[1] INFO command_hangup - frame: {}
b'INFO [SIPServer-1] CommandHangup - hang-up call\n'
b'TRACE [SIPServer-1] HangupCall [9DBCA1B51AC44FC9@192.168.47.8], status: 17\n'
b'DEBUG [SIPServer-1] HangupCall [9DBCA1B51AC44FC9@192.168.47.8] - sending BYE\n'
[1] rec: b'{"event":"call_status","status":18}\n'

[1] INFO handle_stdout - event frame: {'event': 'call_status', 'status': 18}
[1] INFO handle_event_frame - frame: {'event': 'call_status', 'status': 18}
[1] rec: b'{"event":"call_bye","from_peer":"christian","to_peer":"**610","outbound":false}\n'

[1] INFO handle_stdout - event frame: {'event': 'call_bye', 'from_peer': 'christian', 'to_peer': '**610', 'outbound': False}
[1] INFO handle_event_frame - frame: {'event': 'call_bye', 'from_peer': 'christian', 'to_peer': '**610', 'outbound': False}
[1] rec: b'{"event":"result","command":"hangup","success":true}\n'

[1] INFO handle_stdout - event frame: {'event': 'result', 'command': 'hangup', 'success': True}
[1] INFO handle_event_frame - frame: {'event': 'result', 'command': 'hangup', 'success': True}
b'DEBUG [SIPServer-1] Bye [9DBCA1B51AC44FC9@192.168.47.8] - from: **610 (192.168.47.79:5060), ua: s1p, to: christian\n'
b'TRACE [SIPServer-1] UpdateCallStatus [9DBCA1B51AC44FC9@192.168.47.8] - updated status: 17 -> 18\n'
b'TRACE [SIPServer-1] WritePacket: 192.168.47.79:5060 => 192.168.47.8:5060 (BYE) sip:76A52E1F7FB9E00C9BBCC39384E96@192.168.47.8;transport=UDP\n'
b'BYE sip:76A52E1F7FB9E00C9BBCC39384E96@192.168.47.8;transport=UDP SIP/2.0\r\n'
b'Via: SIP/2.0/UDP 192.168.47.8:5060;branch=z9hG4bK830ADA8456674F32\r\n'
b'From: <sip:christian@fritz.box;transport=UDP>;tag=25642185\r\n'
b'To: <sip:**610@192.168.47.79:5060;transport=UDP>;tag=DDC4983E54787721\r\n'
b'Call-ID: 9DBCA1B51AC44FC9@192.168.47.8\r\n'
b'CSeq: 6 BYE\r\n'
b'Allow: INVITE, ACK, CANCEL, BYE\r\n'
b'Contact: <sip:christian@192.168.47.79:5060>\r\n'
b'Max-Forwards: 69\r\n'
b'User-Agent: s1p\r\n'
b'Content-Length: 0\r\n'
b'\r\n'
b'TRACE [SIPServer-1] HangupCall [3c571d3@192.168.47.79], status: 2\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
[D] handle_event_call_status:139 - handle_event_call_status - updating status:  17 -> 18
[D] handle_event_call_status:156 - handle_event_call_status - setup:  false ringing: false answered: false hangup: true
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'
b'TRACE [RTPServer-2] HandlePacket - playback stream not active\n'

That last message repeats till I hang up on my DECT handset.

unmaintained's picture

It looks like the BYE packet has been ignored by the FritzBox (there's no answer visible in the log above) for some reason, instead it keeps on sending audio packets, as indicated by the "playback stream not active" message.

 

c_mauderer's picture

I'll try to do some more analysis. Maybe I can find some reason.

c_mauderer's picture

I did some further analysis: A packet capture of a call using linphone and one with s1p. The most notable difference in the BYE packet is the "To" field. s1p is sending the following

sip:**610@192.168.47.79:5060;transport=UDP

linphone is sending the following:

sip:**610@fritz.box

Note the difference: s1p is sending a port and a ";transport=UDP" together with the address. Beneath that linphone does some address resolution. But I don't think that the address resolution is the relevant part.

You can find screenshots of the complete BYE packets here (for the next month):

s1p: https://nc.c-mauderer.de/index.php/s/GRCm9akECYYKBPJ

linphone: https://nc.c-mauderer.de/index.php/s/EAeqJ9SCcM68f5r

Edit: It seems that I caught the wrong BYE for s1p. That one is in the wrong direction. Please ignore it. I'll search for the correct one.

Edit2: Nope: It was the correct BYE sent from s1p to the fritzbox.

unmaintained's picture

That does not have to mean much at least not if the previous dialogs also used the same uri.

Pages