Your rating: None Average: 4.9 (34 votes)

s1p is an experimental SIP client for Sailfish OS

Successfully tested with:

  • Asterisk
  • 3CX
  • Yate
  • FritzBox
  • sipgate.de
  • sipgate.co.uk
  • sipnet.ru
  • easyfone.de
  • linphone.org
  • cellip.com
  • easybell.de
  • eventphone.de
  • nfon.com
  • voip.ms
  • voipraider.com
  • peoplefone.de
  • messagenet.com
  • linkspace.it

(please add a comment if you have been able to make it work with a provider not listed above)

Please don't forget to restart the app after making any changes to the settings.

New Salfish versions block access to the contacts database for 3rd party apps. To be able to see your contacts in s1p you have to copy the database file (as root) into the s1p data directory:
devel-su cp -r ~/.local/share/system/privileged/Contacts/qtcontacts-sqlite/contacts.db ~/.local/share/harbour-s1p/




Application versions: 
File harbour-s1p-0.7.9-1.i486.rpm1.85 MB08/10/2020 - 17:24
File harbour-s1p-0.7.9-1.armv7hl.rpm1.82 MB08/10/2020 - 17:24
File harbour-s1p-0.8.0-1.i486.rpm1.85 MB08/10/2020 - 22:46
File harbour-s1p-0.8.0-1.armv7hl.rpm1.82 MB08/10/2020 - 22:46
File harbour-s1p-0.8.1-1.i486.rpm1.85 MB13/10/2020 - 11:40
File harbour-s1p-0.8.1-1.armv7hl.rpm1.82 MB13/10/2020 - 11:40
File harbour-s1p-0.8.2-1.i486.rpm1.86 MB14/10/2020 - 00:37
File harbour-s1p-0.8.2-1.armv7hl.rpm1.82 MB14/10/2020 - 00:37
File harbour-s1p-0.8.3-1.i486.rpm1.86 MB17/10/2020 - 11:16
File harbour-s1p-0.8.3-1.armv7hl.rpm1.82 MB17/10/2020 - 11:16
File harbour-s1p-0.8.4-1.i486.rpm1.9 MB21/10/2020 - 23:00
File harbour-s1p-0.8.4-1.armv7hl.rpm1.87 MB21/10/2020 - 23:00
File harbour-s1p-0.8.5-1.i486.rpm1.9 MB22/10/2020 - 09:43
File harbour-s1p-0.8.5-1.armv7hl.rpm1.87 MB22/10/2020 - 09:43
File harbour-s1p-0.8.6-1.i486.rpm1.9 MB25/10/2020 - 17:08
File harbour-s1p-0.8.6-1.armv7hl.rpm1.87 MB25/10/2020 - 17:08
File harbour-s1p-0.8.7-1.i486.rpm1.9 MB27/10/2020 - 23:32
File harbour-s1p-0.8.7-1.armv7hl.rpm1.87 MB27/10/2020 - 23:32
File harbour-s1p-0.8.8-1.i486.rpm1.91 MB31/10/2020 - 13:41
File harbour-s1p-0.8.8-1.armv7hl.rpm1.87 MB31/10/2020 - 13:41
File harbour-s1p-0.9.0-1.i486.rpm1.91 MB14/11/2020 - 23:12
File harbour-s1p-0.9.0-1.armv7hl.rpm1.88 MB14/11/2020 - 23:12
File harbour-s1p-0.9.1-1.i486.rpm1.92 MB24/11/2020 - 18:57
File harbour-s1p-0.9.1-1.armv7hl.rpm1.88 MB24/11/2020 - 18:57
File harbour-s1p-0.9.2-1.i486.rpm1.92 MB27/11/2020 - 13:14
File harbour-s1p-0.9.2-1.armv7hl.rpm1.88 MB27/11/2020 - 13:14
File harbour-s1p-0.9.3-1.armv7hl.rpm1.88 MB19/03/2021 - 16:46
File harbour-s1p-0.9.3-1.i486.rpm1.93 MB19/03/2021 - 16:46
File harbour-s1p-0.9.4-1.i486.rpm1.93 MB24/03/2021 - 17:31
File harbour-s1p-0.9.4-1.armv7hl.rpm1.88 MB24/03/2021 - 17:31
File harbour-s1p-0.9.5-1.i486.rpm1.93 MB26/03/2021 - 14:35
File harbour-s1p-0.9.5-1.armv7hl.rpm1.89 MB26/03/2021 - 14:35
File harbour-s1p-0.9.5-1.aarch64.rpm1.86 MB13/05/2021 - 13:41
File harbour-s1p-0.9.6-1.i486.rpm1.93 MB13/05/2021 - 18:33
File harbour-s1p-0.9.6-1.armv7hl.rpm1.88 MB13/05/2021 - 18:33
File harbour-s1p-0.9.6-1.aarch64.rpm1.86 MB13/05/2021 - 18:33
File harbour-s1p-0.9.7-1.aarch64.rpm1.86 MB14/07/2021 - 12:02
File harbour-s1p-0.9.7-1.i486.rpm1.93 MB14/07/2021 - 12:02
File harbour-s1p-0.9.7-1.armv7hl.rpm1.88 MB14/07/2021 - 12:02
File harbour-s1p-0.9.8-1.armv7hl.rpm1.88 MB18/07/2021 - 14:32
File harbour-s1p-0.9.8-1.i486.rpm1.93 MB18/07/2021 - 14:32
File harbour-s1p-0.9.8-1.aarch64.rpm1.86 MB18/07/2021 - 14:32
File harbour-s1p-0.9.9-1.aarch64.rpm1.48 MB09/04/2022 - 13:20
File harbour-s1p-0.9.9-1.armv7hl.rpm1.5 MB09/04/2022 - 13:20
File harbour-s1p-0.9.9-1.i486.rpm1.52 MB09/04/2022 - 13:20

- 0.9.9 disables sandboxing to fix startup issues
- 0.9.8 allows dialing numbers saved in notes field (and X-SIP field) from contacts.
- 0.9.7 fixes account description, disables issues tracker
- 0.9.6 fixes audio output selection issues introduced with Sailfish
- 0.9.5 added direct access to contacts.db, user accessible database may be not up to date, though
- 0.9.4 minor imporvements to input fields, copying numbers from call history
- 0.9.3 fixes issues with early media
- 0.9.2 fixes some issues with FritzBox
- 0.9.1 fixes some issues with linphone.org
- 0.9.0 fixes default primary account setting
- 0.8.9 adds support for multiple active accounts
- 0.8.8 adds auto-answer
- 0.8.7 opens active account section (instead of always the first section) in settings dialog.
- 0.8.6 adds avatar image for ongoing calls
- 0.8.5 fixes disappearing hangup cover action after a call has been answered
- 0.8.4 fixes double entries in call history, fixes lookup of contacts in call history
- 0.8.3 improves audio routing, removes annoying switch to pre-call audio state with last samples still being played.
- 0.8.2 adds log upload to issues tracker
- 0.8.1 introduces (optional) log file (~/.local/share/harbour-s1p/s1p.log)
- 0.8.0 fixes issues with additional incoming calls during an already establiched call
- 0.7.9 introduces changes to the binary size for faster startup
- 0.7.8 fixes deleting call history, adds remorse timer to delete
- 0.7.7 fixes adding SIM calls to history when disabled, adds experimental issues tracker.
- 0.7.6 adds cellular call history integration
- 0.7.5 adds better notification handling, bringing UI to foreground on incoming calls
- 0.7.4 fixes double notifications
- 0.7.3 adds notifications, changes the way SIP daemon and UI communicate enabling background operations in the future.
- 0.7.2 fixes microphone input with headsets
- 0.7.1 fixes issue with receiving rtp traffic when local IP changes
- 0.7.0 changes to external IP address handling, crash handling, length of call-id and tags
- 0.6.9 fixes screen unlock on incoming calls
- 0.6.8 adds support for hardware/headset buttons to configuration page
- 0.6.7 fixes server port data type
- 0.6.6 adds support for additional SIP accounts (only one at a time can be active)
- 0.6.5 testing FritzBox 7590 compatibility
- 0.6.4 adds less used DTMF digits (A-D,F) to pulley menu, reduces ambiguity with status messages
- 0.6.3 minor visual changes to the cover page
- 0.6.2 adds contact name lookup by phone number
- 0.6.1 adds minor visual improvements to the call history and contacts pages
- 0.6.0 adds minor visual improvements to the contacts page
- 0.5.9 adds voicemail icon and counter
- 0.5.8 adds default audio port selector to settings dialog
- 0.5.7 adds Yate compatibility
- 0.5.6 adds audible ringback tone
- 0.5.5 adds compatibility with Easybell
- 0.5.4 testing compatibility with Easybell
- 0.5.3 fixes issues with saving display names in call history
- 0.5.2 adds display name to call history
- 0.5.1 fixes phone number in history page
- 0.5.0 adds call history page
- 0.4.9 adds small visual improvements to the UI
- 0.4.8 improves compatibility with pjsip
- 0.4.7 fixes error in media description parser
- 0.4.6 improves compatibility with 3CX
- 0.4.5 adds rport option
- 0.4.4 allows to set bind port on the settings page
- 0.4.3 adds support for buttons on wired headsets to allow answering / hanging-up calls
- 0.4.2 adds display activation on incomming calls
- 0.4.1 fixes misleadling log entries related to RTP destination address
- 0.4.0 adds codec selector in settings dialog
- 0.3.9 adds locking down to one of the available codecs when answering a call
- 0.3.8 adds workaround for 3cx
- 0.3.7 reinstates stricter approach to call progess messages
- 0.3.6 allows a more flexible approach to call progess messages
- 0.3.5 fixes proxy-authentication
- 0.3.4 adds support for display name
- 0.3.3 fixes previously broken default settings
- 0.3.2 fixes regsitering with sip.linphone.org
- 0.3.1 sets default register frequency to 1 hour
- 0.3.0 adds options for bind address and regsiter frequency
- 0.2.9 enables voicemail button, fixes issues with number input
- 0.2.8 fixes issues with setting latency and buffer length
- 0.2.7 adds configuration dialog options for latency and audio buffer length
- 0.2.6 adds configuration-file options for latency and audio buffer length
- 0.2.5 adds improvements to power consumption, audio handler and playback buffer
- 0.2.4 adds preferrence for domain instead of IP in SIP dialogs and adds auth-name field to SIP account settings
- 0.2.3 adds initial DTMF support
- 0.2.2 fixes call status being sometimes overwritten by regstration status
- 0.2.1 adds DNS SRV record lookup
- 0.2.0 adds G.711 μ-law codec, (hopefully) fixes some call-state issues
- 0.1.9 fixes choppy audio on some phones
- 0.1.8 makes some changes to how audio frames are handled
- 0.1.7 adds volume presets
- 0.1.6 enables mute button
- 0.1.5 fixes issues with audio output selection
- 0.1.4 enables audio output selection buttons
- 0.1.3 improves logging and handling of audio packets
- 0.1.2 adds log upload
- 0.1.1 adds contacts page
- 0.1.0 improves UI
- 0.0.9 fixes issues with outbound calls through sipgate
- 0.0.8 fixes inbound calls with sipgate (cancelling outbound calls still broken)
- 0.0.7 fixes some issues with sipgate (inbound calls still broken)
- 0.0.6 improves UI and makes hanging up calls more reliable
- 0.0.5 adds ringtones
- 0.0.4 fixes registering issues with antisip.com
- 0.0.3 adds log page
- 0.0.2 initial release


amaretzek's picture

2.5 looks much better, something around 2.5 to 4 %/h. Also top looks better. Will update now..

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 :-)

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.

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


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 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@], status: 17\n'
b'DEBUG [SIPServer-1] HangupCall [9DBCA1B51AC44FC9@] - 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@] - from: **610 (, ua: s1p, to: christian\n'
b'TRACE [SIPServer-1] UpdateCallStatus [9DBCA1B51AC44FC9@] - updated status: 17 -> 18\n'
b'TRACE [SIPServer-1] WritePacket: => (BYE) sip:76A52E1F7FB9E00C9BBCC39384E96@;transport=UDP\n'
b'BYE sip:76A52E1F7FB9E00C9BBCC39384E96@;transport=UDP SIP/2.0\r\n'
b'Via: SIP/2.0/UDP;branch=z9hG4bK830ADA8456674F32\r\n'
b'From: <sip:christian@fritz.box;transport=UDP>;tag=25642185\r\n'
b'To: <sip:**610@;transport=UDP>;tag=DDC4983E54787721\r\n'
b'Call-ID: 9DBCA1B51AC44FC9@\r\n'
b'CSeq: 6 BYE\r\n'
b'Allow: INVITE, ACK, CANCEL, BYE\r\n'
b'Contact: <sip:christian@>\r\n'
b'Max-Forwards: 69\r\n'
b'User-Agent: s1p\r\n'
b'Content-Length: 0\r\n'
b'TRACE [SIPServer-1] HangupCall [3c571d3@], 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


linphone is sending the following:


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.