8

I like that Facetime Continuity allows my phone to ring on my computer. But it repeats the sound aggressively and it loops way too fast..

I created a quieter tone with eight seconds before it loops. But I can't figure out where to put it.

Apparently in Yosemite you could unlock access to this folder and put it here:

  • /System/Library/PrivateFrameworks/ToneLibrary.framework/Versions/A/Resources/Ringtones/

But I don't see any info on where to put it in Sierra. Any thoughts?

3 Answers 3

5

To me, this other answer is no longer a viable solution on Catalina.

Specifically, /System/Library/PrivateFrameworks/ToneLibrary.framework/Versions/A/Resources/Ringtones/ is now a read-only filesystem. So even with System Integrity Protection disabled, I can’t use these steps tocopy the custom ringtone to the indicated folder.

1
  • 2
    Shouldn't this be a comment on the other answer, it doesn't offer its own new answer, right?
    – 5260452
    Commented Jan 15, 2022 at 2:40
3

Overview

Here are the steps that worked for me:

  1. Disable System Integrity Protection (see below for details).
  2. Put your custom ringtone file in /System/Library/PrivateFrameworks/ToneLibrary.framework/Versions/A/Resources/Ringtones/
  3. Edit the system's property list of ringtones at /System/Library/PrivateFrameworks/ToneKit.framework/Versions/A/Resources/TKRingtones.plist (see below for details).
  4. Choose your custom ringtone in FaceTime preferences.
  5. Re-enable System Integrity Protection (see below for details).

Enabling/Disabling System Integrity Protection

It looks like in macOS Sierra (actually starting from El Capitan), Apple has implemented a System Integrity Protection technology that restricts access to /System. In order to play around with custom ringtones, you would need to disable System Integrity Protection

To enable or disable System Integrity Protection [...]

  1. Boot to Recovery OS by restarting your machine and holding down the Command and R keys at startup.
  2. Launch Terminal from the Utilities menu.
  3. Enter the following command: $ csrutil enable [or use the command $ csrutil disable to disable System Integrity Protection]

After enabling or disabling System Integrity Protection on a machine, a reboot is required.

Sources: Apple Support, Apple Developer

Editing TKRingtones.plist

In order to make your custom ringtone show up in the list of ringtones in FaceTime preferences, you will need to edit the file /System/Library/PrivateFrameworks/ToneKit.framework/Versions/A/Resources/TKRingtones.plist using TextEdit (or some other text editor -- you can also use Xcode's developer tools for a nicer interface). Specifically, add <string>system:Custom Ringtone Name</string> at the location shown below (you should replace "Custom Ringtone Name" with the name of your ringtone file).

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    // lots of stuff omitted here
    <key>modern</key>
    <array>
        <string>&lt;default&gt;</string>
        <string>system:Custom Ringtone Name</string>
        <string>system:Apex</string>
        <string>system:Beacon</string>
        <string>system:Bulletin</string>
        // lots of stuff omitted here
    </array>
    <key>sort</key>
    <true/>
</dict>
</plist>
3
  • 1
    I've placed the file in the ringtone folder and that doesn't work. For Facetime, I think there's another location for the ringtones and alerts, but I don't know where. Any ideas? Commented Aug 12, 2017 at 19:04
  • Good point. I think the ringtone folder is correct, but the important thing is that you need to also add your custom ringtone as an entry to the list (TKRingtones.plist) of ringtones that FaceTime offers as options. I've edited my answer to reflect this. Commented Aug 13, 2017 at 8:02
  • did not work for me on Sierra.
    – Parker.j
    Commented Nov 12, 2017 at 22:09
1

I was trying to get this to work on Mac OS Ventura 13.2. The files' locations have not changed (by the way AlertTones can also theoretically be similarly changed) but I also encountered a problem writing to these locations.

However, disabling SIP, rebooting and going back to recovery mode, I was able to make all of the changes necessary to both plist and the Ringtones directory.

To my surprise when I reboot back to regular I found all my changes have been reverted. After some digging around, this seems to be related to the fact that on new Mac OS versions the root partition is actually mounted (in regular mode, as read only) based on a saved snapshot. When in recovery mode, you can change the files but you're essentially only changing a copy of the snapshot that was mounted by the OS. When you reboot, that copy is discarded and replaced by the original snapshot so every change you might have done is gone.

I was trying to figure out how to change the actual snapshot, but it seems it is not accessible. Possibly it is not even an actual file but rather a chunk of disk space that is simply dedicated for this data. I gave up on this after spending a few hours digging into things, I decided simply changing a ringtone is not worth that much time spent on.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .