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.

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

- 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


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.

ichthyosaurus's picture

Did you decide if you also want to make the core open source? I would be very much interested in it, and I am more than sure I'm not alone with this :)! The two main reasons are privacy (e.g. making independent audits possible) and of course the possibility to contribute.

Do you have a public code repository? I would like to maybe get my hands dirty on the QML side.

unmaintained's picture

The idea behind the "unmaintained" reposoitoiry was to reuse some components I have lying around to prove if some concepts are viable (like bringing SIP or Zello functionality to SFOS).

Some of the compnents are used in other software that is not open-source and replacing them would be way beyond the scope of what I've been trying to accomplish with these apps.

The parts designed for the SFOS app, specifically the QML and Python parts, are both provided as open source and can be edited in place even without a public code repository. 



ichthyosaurus's picture

The idea behind the "unmaintained" reposoitoiry was to reuse some components I have lying around to prove if some concepts are viable (like bringing SIP or Zello functionality to SFOS).

Some of the compnents are used in other software that is not open-source and replacing them would be way beyond the scope of what I've been trying to accomplish with these apps.

I understand, but would you consider making the whole SIP application (including the code of the s1p binary) open source after it is out of the "proof of concept" phase? That would be really great! Proper support for SIP is a long wished-for feature in SFOS, and I'm really glad someone finally managed to build something. I'd really like to contribute, but I'm not comfortable contributing to apps that are not completely open.

The parts designed for the SFOS app, specifically the QML and Python parts, are both provided as open source and can be edited in place even without a public code repository.

Sure, they can be edited. Sadly, there's no hint on a license in the files. (Even if you want to place them in the public domain, I'd recommend e.g. a Creative Commons license.) If you would welcome contributions, please consider adding a proper license to the code, and placing it in a public repo.

unmaintained's picture

I've been convinced by others to dump some of the apps I've created over the years for my personal use to OpenRepos. This was never meant to be an "official" open source project in the first place. It kind-of evolved into much more than originally intended. 

olf's picture

@unmaintained, the point is (I think @zapotroin and @ichthyosaurus were also aiming in this direction), that a public source code repository at a proper source hoster (e.g., gitlab.com or github.com) would allow:

  • to collaborate easily, i.e. support you by enhancing code (bugfixes and contributions).
    As long as you do not grant commit rights to others, this has to happen in the form of Merge Requests (MRs), which provides you with full control of what you accept, adapt or reject.
    The fact, that the source code of s1p's QML files can be viewed, when deployed locally by installing it, is not a feasible base for collaboration.
  • to have a proper issue tracker at hand (optional), instead of filing and discussing bugs in this forum.
    I strongly recommend using an issue tracker sooner or later, because this forum discussion has already become quite lengthy (8 pages) and convoluted.
  • to have a proper wiki at hand (optional), in case there is more to document than the app description here at Openrepos is suitable for.

You lose nothing (AFAICS), except you were hoping to offer s1p as a paid app for SailfishOS some day.  But even that can be worked around (though I do not think it is worth the effort, as still no infrastructure for paid apps for SFOS exists), with the right licensing scheme (GPL / LGPL and compulsory CLA, as Digia (now "The Qt company") does it).

BTW, as there currently does not seem to be any indication of a specific license, at least the QML files are basically being placed in the public domain.  Any proper Free Software license (approved by the Open Source Initiative (OSI)), offers better protection of the author's and the users' interests.

P.S.: If it is helpful for you, I can provide some guidance for choosing a license, which fits s1p and your aims well.

unmaintained's picture

I'm not planning to release s1p as a paid app. As you mentioned, there is neither the infrastructure in place nor the user base available that would support this anyway.
The "juicy bits" are in the SIP libraries, etc. which are shared with my other projects outside the Sailfish realm and can't be open-sourced on a whim without considering possible, negative effects this may create. Developers have to eat, too :)

olf's picture

[...]  The "juicy bits" are in the SIP libraries, etc. which are shared with my other projects outside the Sailfish realm and can't be open-sourced on a whim without considering possible, negative effects this may create. Developers have to eat, too :)

This is well understandable; thank you for explaining the background.
Side note: Thoroughly understanding Digia's (now "The QT company") licensing and contribution model really might be helpful for evaluating the possibilities of "open sourcing" your SIP libraries in the distant future, then.  Their customers can freely choose between GPL / LGPL or a proprietory, paid license, plus contributors must sign a "Contributor Licensing Agreement (CLA)", which grants Digia the right to relicense contributions (i.e., using them for their proprietory Qt, plus changing the license of the Free Software Qt) but also guarantees contributors, that a Free Software Qt will always be maintained and published by Digia.  This is working really well for Digia for years (looking at their financial reports), because many of Digia's customers prefer to pay for a proprietory license than being oblieged by the (L)GPL to provide the source code of their own adaptions upon their customers' request.  Actually, the dire situation of Qt on SFOS is a direct consequence of this: Digia changed the licenses of their Free Software Qt (only feasible due to their CLA) from (L)GPLv2 to (L)GPLv3 years ago, and because Jolla does neither want to use (L)GPLv3 Software or pay for a proprietory Qt license, we are stuck at a completely outdated and unmaintained Qt version (v5.6, IIRC) on SFOS.
But "Yes", such a step has to be carefully considered, evaluated and designed, hence definitely cannot be done "in a whim".

Still I suggest to open a project at Github.com or Gitlab.com, in order to structure issues (technical ones and others, as this one) and to optionally employ a wiki (in which users could document their experiences / settings with various SIP providers, after granting all Git{hub|lab}-users edit-rights to specific wiki-pages or the whole s1p-wiki).  Maybe even without any source code at the beginning, until you decided upon a license for s1p's QML-components (my quick&dirty sugggestion is LGPLv2.1 for these).

Background: As you can gather from this TJC post there has been massive interest in the past 7 years to get SIP working (and VoLTE in the long run) on SFOS, but Jolla's slow development of this from the start seems to have halted since SFOS 2.0.0 in 2015.  You resolved this within weeks and a have also shown to be an excellent software maintainer: Kudos to you!

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'