Your rating: None Average: 4.9 (32 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.




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

- 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


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.

unmaintained's picture

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

c_mauderer's picture

Thanks for the response. The URI isn't the same for linphone as well as for s1p. See SIP-stream for s1p and SIP stream for linphone.

In both cases the INVITE and ACK used a written name while the BUE used a somehow encoded name.

A big difference is that s1p seems to continue re-registering during the call.

Is there something that I could do to analyze that a bit more? I think your application is currently not open sourced? Would the recorded network streams help? I would prefere to send these via mail instead of a public comment section. So if they would be usefull please drop me a line to contact at c-mauderer.de.


unmaintained's picture

Re-Registering happens also during calls like with pretty much any other SIP user agent (but maybe the registartion happens more often), but this is always done as a separate dialog with a completely different Call-ID and should not interfere with active calls.

c_mauderer's picture

Not entirely sure what changed but the problem is solved with 0.2.4. Thank you very much for that.

unmaintained's picture

I'm happy to hear that. I've made some minor adjustmenst to when, which contact information is used and I suspect this to have made all the difference here.

maier's picture

Hi your problem with the calls should be solved now. I use the FritzBox 7490. The problem that you have the speaker on by default I have too but that I have also with the integrated solution from Jolla.

c_mauderer's picture

Hello @maier: No my problems aren't solved. I should have written the versions I'm using: I tried it with s1p 0.2.2 and a FritzOS 07.12 (latest one for the box).

emchella's picture

Great Thank you ..


maier's picture

Sorry for the delay. I sent the log now 3x but I can't find an ID at the end. ... it going on and on with logging. Situation don't change. After 1-5 seconds the red button looses focus get dark the green button gets light the red button is not responsible anymore.

unmaintained's picture

Could you please test it again? I've changed the code responsible setting various flags depeinding on the status of the call.

unmaintained's picture

I suspect something must be going on in the background that appears to the clent like the call would have been ended (thus disabling the button) e.g. a second dialog failing while the first is still active. 

maier's picture

Correct. ... I have the feeling that I have to call again to get the red button for a very short time activ.

unmaintained's picture

Could you please test it again with 0.2.0 and, should this issue still occur, send a log and reference the log-id here?

pasko's picture

Thanks again. Keep up the good work!

maier's picture

I installed the latest version. The sound is much better. The UI problems still exist. I have to push the call button before the red button accepts any push behavior. I already sent the log to you.

unmaintained's picture

Does it mean the call gets properly established (you can see the call timer) but the red button remains disabled?

maier's picture

I was playing around and it feels good expect the ending of a call. The UI has no response on the red button. Thanks for your work!

unmaintained's picture

Do you see any errors on the log page that would maybe indicate why this happened?

Bsingleto's picture

Ready to try this out. Couple days ago did a request for SIP access from my voip provider. Today, i enter in name. I enter in pswd, then i try to cut and paste the Server Address line and its un able to paste anything in the field. Whats going on with that? So i try to type each letter/dot in manually and everything on that line erases when i hit (enter) (period) or (forward slash) so I'm unable to see if this app works for me on sailfish os.

unmaintained's picture

As stated in the description there is an issue with resolving domain names. Please use the IP address of the SIP server instead.

defactofactotum's picture

Hi unmaintained, excuse my newbie ignorance, how can I find the IP address of my server (linphone). Could you add this info and an example in the app description? Thanks for your work

unmaintained's picture

I'm sorry, but I don't have any idea how a linphone server operates.

With other services you can often do a DNS lookup of the address:

IP address or host name: sipgate.com

sipgate.com has address

But it SIP can also have a more complicated DNS setup, so this basic approach may not always work.