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. 





- 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


explit's picture

Fritzbox seems to work basicaly. Don't tested much, but this is a big success for many users in Germany

unmaintained's picture

FritzBox, being an appliance, would also be super hard for me to debug, so I'm really glad to read that.

pasko's picture


Thank you very much for this app. Looks very promising.

I'm willing to help debugging or providing logs if necessary. My configuration includes an Asterisk server with chan-sip with a few clients, including a Linphone client in an Ubuntu box and an Nokia N9 sip client.

I miss the option to use alphabetic characters in the address field from previous versions, since the accounts in my Asterisk server are defined with non-numeric user names.

I have also noticed some timeout problems with stablished calls as logged by the Asterisk server.

Best regards.

unmaintained's picture

As a work around you can use copy & paste to dial non-numeric destinations. I know that's not ideal and I think about how to make it optional. 


pasko's picture


I just noticed the 'paste' icon in the UI. :)

Thank you very much again for your work.

Best regards.

Fly86's picture

There are actually some people including me ;)
Anyway it would be nice if it worked like 1998 :-)

unmaintained's picture

I've added "1998 mode" in 0.1.4  :)

Fly86's picture

Good work.Good working App. Unfortunaly the sound does not come from the earpiece. Would be great if that can still be changed.

unmaintained's picture

You mean people are still holdng their phones to their ears like it's 1998 ?


amaretzek's picture

version 0.0.5, if server is reachable via dev tun, it tries to send via wlan dev. Didn't investigate further.

amaretzek's picture

version 0.0.5, on first incomming call, after picking up, the server (asterisk) says "Invalid contact uri (missing sip: or sips:)" and "Invalid URI: parse_uri failed to acquire hostport".
On a second incomming call, it behaves different.
First outgoing seems "ok", audio distorted (too high volume??), increased lag from far end to local.
Second outgoing, hang up on local doesn't terminate audio.

unmaintained's picture

I will try to add a way to submit log files later. Right now trying to fix all these issues would be just guess work.

amaretzek's picture

I meant, that was from the server log. I can put logs on my web server, if you want...

Domi's picture

Nice application. Thanks! It works on a Cisco CME with outgoing calls. In one direction the voice is not that bad. On a Fritzbox the registration fails. There exists on the Fritzbox the limitation that the username must be the same as the used number...

unmaintained's picture

Auth-user and user name in "From" share the same variable so they must be equal at the moment.

Domi's picture

With 0.0.4 registration and call as client on a fritzbox works :-)

Is the next version video included?

unmaintained's picture

I'm glad it works - without an actual FritzBox debugging would be a nightnmare I think.
Video will maybe come at some point down the line once audio calls turn out to work reliably. 

HoSnoopy's picture

I tried to connect with a Fritz!Box. It doesnt connect:

b'DEBUG [SIPServer-1] HandleResponseUnhandled [13f93f33@] - unhandled response ignored - from: ulistelefix (, ua: FRITZ!OS, to: ulistelefix\n'
b'TRACE [SIPServer-1] HandleResponseUnhandled [13f93f33@] - payload: => (481 Call Leg/Transaction Does Not Exist)\n'

I just tried it, maybe it is helpful for you? ;-)

unmaintained's picture

Unfortunately that seems to be only the last part of the transaction. The FritzBox answering to a request with 481 would mean it somehow can't match it to a previous request.
I'm afraid it may take a while to iron out such things, unfortunately.

zipotron's picture

Thanks for the App! Just a question. Witch kind of license have the program? I case of be OpenSource. Can we have the repo link? I would like to collaborate

unmaintained's picture

The Python + QML parts are OpenSource, the SIP part is proprietary at the moment.

I haven't decided yet what to do about it. I guess id depends on people actually being interested in SIP on SFOS or not.

bc77's picture


I am interested. I am using sipgate.de als SIP Provider..

unmaintained's picture

Have you tried it with sipgate?
You will have to use their IP address instead of sipgate.de, though.

dubliner's picture

I am also extremely interested. In fact, it's the major thing missing for me with SFOS. However, I have been unable to get it working.

On my Asterisk server I keep getting "SIP/2.0 401 Unauthorized" (pjsip logger) while the status on s1p never changes from "network_ready" no matter how simple a password I choose.

So, I tried registering s1p with Antisip. Here the status on s1p changed from "network_ready" to "not_allowed".

Of course, I verified username and password in both situations several times.

Any hints?

unmaintained's picture

Do you have a way to start it from the command line and to analyze the optput?

sailfish-qml harbour-s1p

Please be aware before posting things that the output could contain IPs, usernames and the password in clear text.

dubliner's picture

I just installed harbour-s1p-0.0.3-1 and this is what I see when I try to connect to Antisip:

b'ERROR [SIPServer-1] CreateDialog [4273f45e@] - on request: REGISTER, cseq: , from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'
b'DEBUG [SIPServer-1] Register [4273f45e@] - from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'
b'DEBUG [SIPServer-1] HandleRequestRegister [4273f45e@] - REGISTER declined - from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'
b'DEBUG [SIPServer-1] WritePacket - out: => (405 Method Not Allowed)\n'
b'DEBUG [SIPServer-1] AnswerAck [4273f45e@] - from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'
b'DEBUG [SIPServer-1] WritePacket - out: => (ACK) sip:#hidingMyNumber#@\n'
b'DEBUG [SIPServer-1] HandleRequestAck [4273f45e@] - ACK - ignored - from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'
b'DEBUG [SIPServer-1] HandleRequestAck [4273f45e@] - ACK - ignored - from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber# => (REGISTER) sip:sip.antisip.com:5060\n'
[1] rec: b'{"event":"not_allowed","from_peer":"#hidingMyNumber#","to_peer":"#hidingMyNumber#","outbound":true}\n'

[1] INFO handle_stdout - event frame: {'event': 'not_allowed', 'from_peer': '#hidingMyNumber#', 'to_peer': '#hidingMyNumber#', 'outbound': True}
[1] INFO handle_event_frame - frame: {'event': 'not_allowed', 'from_peer': '#hidingMyNumber#', 'to_peer': '#hidingMyNumber#', 'outbound': True}
[D] :15 - 1 handle_event_frame - event: not_allowed
b'ERROR [RTPServer-2] Run - read error: read udp recvmsg: interrupted system call\n'

So, it's 405 Method not allowed in this case. Not sure why port 9004 shows up, though.

BTW, which service are you connecting to in your setup?

unmaintained's picture

Someting got totatlly confused here, the following line means that it's basically speaking to itself: 

out: =>

What is the local IP address and what should be the IP of the SIP registrar?

Port 9004 is the default RTP port and can be ignored for now as it has nothing to do with the register attempt.

dubliner's picture

That's exactly what I thought. The phone is trying to connect to itself which makes no sense at all. The phone's IP was the

I also use Asterisk 16/FreePBX. However, debugging is a little more difficult since that server is also on a network, just like the phone when I plug in USB.

Are you using the plain standard pjsip extension on FreePBX for your s1p setup?

P.S. When I change sip.antisip.com into it stops at "network_ready". Can't give any further info as I am not at my PC now.

unmaintained's picture

I'm using an ancient FreePBX with chan_sip :)

Coud be pjsip is handling something differently.
I'll try to check out antisip later.

dubliner's picture

Indeed, chan_sip is working. Too bad it's considered deprecated (the current FreePBX doesn't leave any doubts about that). I really wonder what's keeping s1p from working with pjsip? I have a variety of devices successfully connected just using the standard pjsip settings.

As for connecting to Antisip using their IP address, this resulted in status "400 Content-Length mis-match":

b'ERROR [SIPServer-1] CreateDialog [5f4f351f@] - on request: REGISTER, cseq: , from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'

b'DEBUG [SIPServer-1] Register [5f4f351f@] - from: #hidingMyNumber# (, ua: s1p, to: #hidingMyNumber#\n'

b'DEBUG [SIPServer-1] WritePacket - out: => (REGISTER) sip:\n'

b'DEBUG [SIPServer-1] HandleResponseUnhandled [5f4f351f@] - unhandled response ignored - from: #hidingMyNumber# (, ua: , to: #hidingMyNumber#\n'

b'TRACE [SIPServer-1] HandleResponseUnhandled [5f4f351f@] - payload: => (400 Content-Length mis-match)\n'