Custom ringtones for your contacts

Yesterday I finished implementing the first release of a new program (ringtoned, i.e. ringtone daemon, i.e. I don’t have any imagination for program names) that allows setting a custom ringtone for specific contacts. Ringtoned tries to integrate nicely with the system:

  • You can select the default ringtone in Settings → Profiles as usual
  • To set a custom ringtone you go to the Contacts application, select the contact and press the new “Set custom ringtone” button in the menu
  • The dialog to set custom ringtones tries to be a perfect copy of the dialog to set the global ringtone
  • It works both for normal phone calls and GTalk/SIP/Skype calls, thanks to Telepathy
  • The ringtone is played only when the normal one would be played and at the same volume, thanks to some PulseAudio magic

Ringtoned also tries not to break your phone, if for any reasons it crashes the default behaviour should be restored. Nevertheless, this is just version 0.1, so it could be full of bugs and could make you miss phone calls. You have been warned! Moreover, replacing the default ringtone components with something more complex could make the ringtone start slightly later in case of heavy load, see my previous blog post. You have been warned again!

If you still want to give it a try, ringtoned is now in Maemo extras-devel under the name “Custom ringtones for your contacts”. If you don’t want to add the extras-devel repository (as it contains a lot of unstable software), you can download ringtoned directly from my personal repository:

Install per-contact-ringtones
Install from my personal repository
(follow the link on the N900 browser)

If you are interested in the source code, it’s in Collabora’s git repositories.

The are two major features that are missing at the moment: the ability to set a custom ringtone for anonymous phone calls and for calls from an unknown number, and the ability to set ringtones for groups and not only for single contacts. The former feature should be easy and it mainly just requires some UI, so it will be hopefully implemented shortly.
Groups are more difficult to implement because they are not supported at all by the Maemo address book; I would first have to implement support for groups and then add ringtones for the groups. I hope to be able to find time for this, but I cannot guarantee anything.

In a future post I will explain the architecture of ringtoned and how to extend it: the code that chooses the custom ringtone is actually just a small plugin of the ringtone daemon and it’s possible to write other similar plugins for different needs.

79 thoughts on “Custom ringtones for your contacts

  1. @Timothy:
    As I said there is no release yet 🙂
    I just wanted to tell people that I’m still working on this.

    The ringing sound on the caller side starts a bit earlier than on the callee side, so that’s not the proper way to measure it.
    The only proper way to measure the delay ringtoned adds it by adding some logging code to it (as I did for my performance improvement work).
    Another way that could be acceptable is to try *multiple times* to make the phone ring both with my program and without. The average difference of timing since you start the call to when the ringtone plays should show how big the delay is.


  2. Why is everything so complicate? Simply lock the screen on the N900 and dial your number. Once the screen will light make reports seconds. I have it about 5 seconds. The main implement a vibration! Since this is an even greater disadvantage than the delay track.


  3. Well, how about this…
    I can count when I see the pic€ure of my contact appears and there is no sound and after about 5 seconds the ringtone comes.

    anxious for the update!


  4. Hey guys,

    Be nice to Marco! He is doing this for free!!

    If any of us has to make a complaint, make it to NOKIA. They are greedy and inconsiderate. This custom ringtone app. is supposed to be standard feature with N900.



  5. mistake, sorry..

    Because your app. disables the vibration function, I had unistall it. After a quick reading of your comment, I installed the application again, and tested call, selecting the ringtone (in wav), calling from another telephone.

    I counted the number of rings and held my N900. No vibration was observed.

    My apologies for the misunderstanding and unfortunate comment.


  6. I am willing to pay money for his work if the application will finish it and will work vibration and will not wait 5 seconds.


  7. Hi Guruglaz,

    People like Marco certainly deserve some kind of reward; but I believe they create & share their work mainly upon their passion on programming & self-challenging. Let’s start rewarding them from expressing our appreciation & respect instead of blaming them for too slow or imperfect, agree my friend?

    Marco, I agree with Guruglaz that vibration is a priority issue over delay of ringtone. If N900 can resume vibro, at least it helps to eliminate missed calls. If vibro is not a more complicated problem, could you fix this first and release a upgrade; then work on the delay issue.



  8. Hi Marco. Great your on it.
    I would go with a log function to messure the delay. if it’s not to much extra work for you. I believe that log function can help you the most.
    Also consider a donate button. you deserve it.


    If you need a tester, you can contact me via my email.



  9. Another update, I found some bugs in Maemo that freezes dbus and makes it very noticeable when my program is running 😦
    This is probably the main cause of the delay you were noticing, I’m trying to get it fixed in Maemo and to find a workaround for ringtoned.

    Note that vibration and ringing are activated at the same time, so fixing vibration is not a way to workaround the delay.


  10. Thanks for the update, Marco.

    I guess the good news is you may have located the cause of the problem.

    I am still hanging there for your upgrade version.



  11. Being a bug in Maemo and not having access to that code I cannot do much, I’m just waiting for other people to understand the problem. The fix will probably be in a future version, but once the problem is understood I can try to work it around from ringtoned.


  12. Maybe that bug is the cause why Nokia didn’t implement it themselves…

    Is there any ringtoned related thread on ?


  13. @NightShift79:
    Nope, the problem is that my code interferes badly with the policy code for calls in Maemo. This is a bug in Maemo that has been reported and somebody is investigating it. In the meantime I found a workaround that should allow me to finally release a fixed version of ringtoned shortly o/


  14. hi barisione, thanks for new release. just install & try it but there’r problem. already reboot 2 times but still have problem. no delay anymore but no ringtone sound & no vibrate. i will try again maybe my n900 problem itself. anyway thank for update.


  15. ismail:
    It works fine for me.
    Can you please try this in a terminal:
    ringtonedctl stop
    ringtonedctl -d startwait > /home/user/MyDocs/ringtone.log

    Now call your phone, hang up, interrupt ringtoned with CTRl-C in the terminal and send me ( the ringtone.log file in your documents directory.


  16. I was with the same problem. Which is, no delay but also no sound and no vibration. I verified and I detected that I had an appication which is responsible for grouping contacts and set custom ringtones for each one of them. I removed it and after that I could hear the custom ringtone with no delay.
    However when I set to the default ringtone, I cannot hear it.
    Great progress man … 🙂
    The delay problem is gone. Only the vibration and the default ringtone are not working.



  17. @Sergio Ramos:
    What’s the name of this other program?
    Can you provide the logs (see my previous comment) for the case when it doesn’t ring?


  18. Hello Marco,

    You must have had a busy weekend. Thank you for spending your weekend to solve this problem.

    Yesterday, my wife complained she called 3 times and I did not answer. I am desperately waiting for your upgrade.

    However, after reading other users’ feedback after installing the upgrade, it sounds even worse for me if the default ringtone could not work and no vibration. I have some hundreds contacts in my phone and I only set custom ringtone for about 20. If the default ringtone does not work, I would still miss most calls. I think I’d better keep waiting.

    Marco, do you think other Apps. like Recaller and Outgoing Call Vibro may also cause conflict to your app.?



  19. Hi.

    Yeah, it’s very gread you found that workaround to temporarily fix the delay issue.

    But for me, it seems the new default ringtone issue… is still a point why I can’t use this great addon in this state.
    very bad…

    Also I was told the app ‘eSpeakCaller’ doesn’t work anymore with the latest version of ringtoned installed.


  20. …Oh, I must add that, after I deinstalled “Custom Ringtone for Contacts” and did a reboot, the N900

    told me “MALEFUNCTION”. another reboot succeded but loaded the default kernel settings. I’m using ‘kernel-power 2.6.28-maemo40’



  21. I deleted this program’s as cannot use the phone as it was before. 1. Does not work vibe. 2. No call for an incoming call. I look forward to working release from the author.


  22. Hey man. Good job. Now no delay, default and specific ringtones are working fine. Great progress. Only vibration is still not working.


  23. I just tried out the latest version, I am still having the same issue with my mp3 tones in which it neither vibrates nor plays. I cannot find my first post on here, I hope it wasn’t deleted. Thank you for your hard work, and I hope you can get this working. 🙂


Comments are closed.