ToothFairyToothFairy

ToothFairy Manual

This manual is also available as a PDF (2.1 MB) and as multi-page online help.

1   Introduction

AirPods are great, but they don’t work quite as smoothly with Macs as they do iPhones. You can’t tell at a glance whether audio will play from the AirPods or your Mac’s built-in speaker, you have to dig into a Bluetooth submenu to connect, and then you have to go back to the menu to see when the AirPods are ready for use. ToothFairy streamlines this: just click an icon in the menu bar (or press a hotkey) to switch to the AirPods, and the icon always shows whether they’re connected.

  • Works with AirPods, as well as any Bluetooth device that you can connect to your Mac: headphones, speakers, headsets, game pad controllers, keyboards, mice, etc. (HomePod is not supported, as it is not a Bluetooth audio device.)
  • Click the hollow AirPods icon in the menu bar to switch to AirPods. It fills in to show they are connected and also displays a battery indicator. Now you know that it’s safe to start playing music; it won’t blast from your Mac’s internal speaker.
  • Supports multiple Bluetooth audio devices; you can choose a different icon and hotkey for each.
  • Get the best audio quality. macOS will normally use the SCO codec if it thinks you’re going to use the microphone. ToothFairy can ensure that it uses the higher quality AAC codec when you only care about audio output: listening to music or video or playing a game.
  • Disconnect a Bluetooth device by clicking the icon (or pressing the hotkey) again, so that you can switch back to your phone. AirPods and Beats devices with an Apple H1 or W1 chip do not need to be manually disconnected, and you can set them to avoid accidental disconnections when pressing the hotkey multiple times.
  • ToothFairy automatically launches at login, so it’s always there when you need it.
  • Optionally hide the Dock icon so it only appears in the menu bar. With the Dock icon hidden, you can right-click (or Control-click) the menu bar icon to access the settings.
  • Run a shell script when the AirPods are connected or disconnected, for example to notify you or to launch or quit another app. ToothFairy itself is also AppleScriptable, so you can control your devices from other apps (like Lacona) and automations.
  • Use with your Magic Mouse or Magic Keyboard to make sure the battery level doesn’t get too low, or to quickly reconnect them after charging or if they get disconnected.

Note: ToothFairy works with devices that can be connected via the macOS Bluetooth menu. Please make sure the devices you want to connect have been paired to the system correctly before using them with ToothFairy.

2   Installing and Updating

ToothFairy is available from the Mac App Store.

3   Menus

3.1   The ToothFairy Menu

After clicking on ToothFairy’s Dock icon, you will see the ToothFairy menu at the top-left of the screen, next to the Apple menu.

4   Preferences

ToothFairy’s Preferences window lets you add and remove devices and adjust the settings for each device. You can access the preferences by clicking on ToothFairy’s Dock icon or by Control-clicking one of the device icons in the menu bar.

settings

Click the Advanced… button to see additional settings:

advanced

4.1   Adding a Device

First, make sure that your Bluetooth device is paired with your Mac using the Bluetooth pane in System Preferences.

To begin using a Bluetooth device with ToothFairy, click the + button in the Preferences window. This will open the Bluetooth selector:

bluetooth connect

Click on the desired device and then click Select. Now your device will appear in the list at the left side of ToothFairy’s preferences:

settings

4.2   Menu bar icon (click to connect/disconnect)

ToothFairy adds an icon to your menu bar for each device:

easy

Click the menu bar icon to connect to the device, i.e. to begin playing audio through your AirPods or begin using your game controller. The icon will fill in to show that the device is connected. Now you know that it’s safe to start playing music; it won’t blast from your Mac’s internal speaker.

Click again to disconnect from the device. The icon will change to a hollow shape to show that the device is disconnected. This makes it possible to connect the device to a phone or other Mac. Some devices, such as Apple and Beats devices with W1 and H1 chips, don’t need to be manually disconnected. They will auto-disconnect when you try to connect them to another Mac.

You can use the pop-up menu in the preferences to choose the icon that best matches you device. Choose from icons for different types of headphones, speakers, mice, tablets, trackpads, keyboards, game controllers, and phones. Hold down the Option key when opening the pop-up menu to see the filled versions of the icons.

device icons

Can I rearrange the device icons in the menu bar?

Yes, you can hold down the Command key and then click and drag on the icons to control the order of the Bluetooth devices in the menu bar. You can also control how they are ordered in relation to other menu bar items such as the Wi-Fi menu and clock.

See also:

4.3   Show battery status in the menu bar

With this option enabled, ToothFairy will show a battery gauge next to the device’s icon in the menu bar:

battery status

This can help you see when it’s time to charge the battery, so that it doesn’t run out at an unexpected time.

You can see the precise battery percentage (including separate levels for left and right AirPods) by hovering over the icon to show the tooltip or by Control-clicking the icon to show the menu.

Why don’t I see the battery level?

You should see the battery level for any Bluetooth device supported by macOS. macOS has can read the battery level of popular Bluetooth devices such as AirPods, Magic Mouse, Magic Keyboard, and many common headphones and third-party input devices. Some devices report the battery level in a different way that doesn’t show up in the Bluetooth pane of System Preferences even though iOS (which supports more devices than macOS) may be able to show it. Currently, if macOS doesn’t show the battery level, ToothFairy won’t, either. If you have such a device, please contact us and let us know which device are you using. We may add direct support for popular devices in a future version of ToothFairy.

4.4   Global hotkey to connect/disconnect

You can set a hotkey for each device to quickly connect or disconnect it. Click Record Shortcut to configure the hotkey that you want. Click the × button if you no longer want to use the hotkey.

For example, you can press a hotkey when you want to begin playing audio through your AirPods. Or, since a Magic Mouse can become disconnected after charging, press the hotkey to reconnect it when you want to use it again (since you can’t click the icon using a disconnected mouse).

See also:

4.5   Launch at login

We recommend checking this box so that ToothFairy will automatically launch whenever you log into your Mac. This will ensure that your device icons and hotkeys are always available.

4.6   Hide Dock icon

Check this box if you don’t want to see ToothFairy’s icon in your Dock. You will still be able to access ToothFairy’s preferences by Control-clicking on any of the device icons in the menu bar.

Why do I see the Dock icon even after hiding it?

After you’ve checked the Hide Dock icon preference, you need to quit and relaunch ToothFairy in order for the change to take effect.

Also, macOS 10.14 includes a section of the Dock for recent applications, and this can include the icons even of applications that have hidden their icons. To hide ToothFairy from this section, first quit ToothFairy. Then you can either:

  • Click and hold on the ToothFairy Dock icon and choose Options ‣ Remove from Dock from the menu; or
  • Drag the ToothFairy icon off the Dock; or
  • Go to System Preferences ‣ Dock and uncheck Show recent applications in Dock to hide that section entirely.

4.7   Improve sound quality by disabling audio input from device

Devices such as AirPods have both speakers and microphones; they can be used for both audio output and audio input. With many such devices, macOS will normally use the SCO or SBC Bluetooth audio codec because this works with both output and input. It is a good choice if you are making a Skype call where you want to both listen and speak.

However, sometimes you may want to only listen, e.g. if you are playing music, watching a video, or playing a game. In this case, the SCO codec is not optimal because it has lower audio quality. A codec such AAC would provide better sounding audio, but it may not work with audio input. If you check the Improve sound quality by disabling audio input from device box, ToothFairy will tell macOS not to use the device’s microphone, which lets macOS use the higher quality codec that’s optimized for audio output.

It is still possible to do things that require audio input, e.g. starting a Skype call or talking to Siri. Depending on the app, macOS will either use the Mac’s internal microphone (e.g. Siri) or use the Bluetooth device’s microphone (e.g. FaceTime), automatically switching it to the lower quality SCO codec, overriding the change that ToothFairy made in System Preferences. If this happens, when you’re done using the app, you can tell ToothFairy to disconnect and reconnect the device to switch it back to the high-quality AAC codec.

Note: Often, the audio quality can be improved by quitting the Xcode Simulator.

4.8   Don’t disconnect when clicking icon or pressing hotkey

AirPods and Beats devices with an Apple H1 or W1 chip do not need to be manually disconnected, and you can set them to avoid accidental disconnections, e.g. if you didn’t mean to press the hotkey or if you press it multiple times when trying to connect. Additionally, ToothFairy will show the device menu when you click on the icon, without your having to right-click.

This is also useful to avoid accidentally disconnecting an important input device such as a mouse or keyboard.

See also:

4.9   Run shell script after connecting/disconnecting

ToothFairy itself is AppleScriptable:

applescript dictionary

ToothFairy can also trigger scripts to run automatically when you connect or disconnect a Bluetooth device. Here are some examples of what you can do:

Display a Notification in Notification Center

#!/usr/bin/osascript
display notification "Connected" with title "AirPods"

Speak a Phrase Using Text-to-Speech

#!/bin/sh
/usr/bin/say "AirPods Disconnected"

Connect Another Bluetooth Device

You can attach a script like this to your mouse so that when the mouse connects it auto-connects your keyboard at the same time:

#!/usr/bin/osascript
tell application "ToothFairy"
    set connected of device "Keyboard" to true
end tell

Disconnect Another Bluetooth Device

You can attach a script like this to your AirPods so that when the headphones connect your speaker disconnects:

#!/usr/bin/osascript
tell application "ToothFairy"
    set connected of device "Speaker" to false
end tell

Launch iTunes or Another App

#!/bin/sh
open -a "iTunes"

Some people also like to launch a certain game when connecting their headphones.

Start Playing an iTunes Playlist

#!/usr/bin/osascript
tell application "iTunes" to play playlist "My Playlist"

For more iTunes script ideas, see Doug’s AppleScripts.

Quit iTunes

#!/usr/bin/osascript
tell app "iTunes" to quit

Open Music.app

#!/bin/sh
open -a iTunes

Change the Sound Input or Output Device

macOS normally sets the sound input and output automatically when connecting a device. However, in some cases it may not switch them automatically or you may wish to specify different devices. You can do this by installing switchaudio-osx and using a script like this:

#!/bin/sh
SwitchAudioSource -t output -s "DeviceName"
SwitchAudioSource -t input -s "DeviceName"

Adjust the Volume

macOS normally remembers the volume for each device, but you can also set it via script each time ToothFairy connects a device:

#!/usr/bin/osascript
set volume output volume 25 without output muted
set volume input volume 75

Turn Off Bluetooth When Disconnecting

Some Macs will wake from sleep to try to connect to a nearby Bluetooth device that becomes available. This can be prevented by turning off Bluetooth on your Mac when disconnecting a device. You can do this by installing blueutil and using a script like this:

#!/bin/sh
blueutil --power 0

Connect to Another Mac When Disconnecting

Say that you have Mac A and Mac B that are on the same local network (mac-a.local and mac-b.local) and you want them to share a keyboard (named Keyboard in ToothFairy):

  1. Go to System Preferences ‣ Sharing and enable Remote Apple Events.

  2. On Mac A, set a disconnection script:

    #!/usr/bin/osascript
    tell application "ToothFairy" of machine "eppc://user:password@mac-b.local"
        set device "Keyboard"'s connected to true
    end tell
    

    You’ll need to fill in your username, password, and Bonjour name.

  3. On Mac B, set a disconnection script:

    #!/usr/bin/osascript
    tell application "ToothFairy" of machine "eppc://user:password@mac-a.local"
        set device "Keyboard"'s connected to true
    end tell
    

Now, whenever you disconnect the keyboard on one Mac, it will use AppleScript over the network to tell the other Mac to connect to it.

Prevent iTunes From Playing Automatically

Some Bluetooth headphones will make iTunes start playing automatically when you use another media player. You can prevent that by using this script when connecting to temporarily turn off the iTunes agent process:

#!/bin/sh
launchctl stop com.apple.rcd

Use this script when disconnecting to turn it back on:

#!/bin/sh
launchctl start com.apple.rcd

These scripts were contributed by a customer using macOS 10.14 and may not work on all Macs or with newer versions of macOS.

Add a Message to the System Log

#!/bin/sh
terminal-notifier -message "Connected AirPods" -title "ToothFairy"

This script requires Terminal Notifier.

Connect to iPhone’s Bluetooth Personal Hotspot

#!/usr/bin/osascript
set _deviceName to "Tom's iPhone"

tell application "System Events" to tell process "SystemUIServer"
    set _bluetoothMenu to (first menu bar item whose description is "bluetooth") of menu bar 1
    click _bluetoothMenu
    if exists menu item _deviceName of menu of _bluetoothMenu then
        tell (first menu item whose title is _deviceName) of menu of _bluetoothMenu
            click
            tell menu 1
                if exists menu item "Connect to Network" then
                    click menu item "Connect to Network"
                    return "Connecting..."
                else
                    key code 53 -- hit Escape to close BT menu
                    return "No connect button; is it already connected?"
                end if
            end tell
        end tell
    else
        key code 53 -- hit Escape to close BT menu
        return "Cannot find that device, check the name"
    end if
end tell

You’ll need to edit the script to include the proper _deviceName for your phone.

5   Frequently Asked Questions (FAQ)

5.1   What information should I include when I report a problem?

It will be faster and easier to help you if your e-mail includes the following information:

The version of macOS that you are using
Click on the Apple menu and choose About This Mac.
The version of ToothFairy that you are using
Click on the ToothFairy menu and choose About ToothFairy. (Please do not say “the latest version,” as this is ambiguous.)
Specific error information
Please see Sending in an Error Report.
If something isn’t working as you expect
Please describe what you did, what happened, and what you expected to happen instead. If possible, take a screenshot or two that illustrate the problem (see Sending in Screenshots).
If ToothFairy hangs or freezes
Please see Sending in a “Sample” Report.

5.1.1   Sending in an Error Report

If an error window appeared on your screen, please include the exact text of the error message in your e-mail. (It may help to use Copy and Paste.)

Please also send in any errors that were reported in the system log:

  1. From the ToothFairy Preferences window, click on the About tab. Then click the Save Diagnostic Report button.
  2. Choose a location such as your desktop and click Save. Saving the report may take a minute or so.
  3. Create an e-mail to toothfairy@c-command.com and drag the Diagnostic Report.tbz file into the e-mail message to include it as an attachment/enclosure.

If you can’t launch ToothFairy, you can access the log directly, rather than using the automated diagnostic reporter:

macOS 10.12 and Later

  1. Click on Finder in the Dock.
  2. From the Go menu, choose Utilities.
  3. Double-click the Console application.
  4. Click on your Mac under Devices at the left side of the window. (It may be necessary to first choose Show Sources from the View menu.)
  5. From the Action menu, choose All Messages. Make sure that Include Info Messages and Include Debug Messages are both unchecked.
  6. If Activities is selected (blue) in the toolbar, click it to turn off activities mode.
  7. If the main part of the window shows any recent error messages, select them (or choose Edit ‣ Select All).
  8. There are two ways to share the selected part of the log with us:
    • Easier: Click the Share button in the toolbar and choose Mail. (If you do not use Apple Mail as your mail client, you can instead Copy and Paste the log messages into your mail client.)
    • Preferred: Choose Edit ‣ Copy. Open TextEdit and Paste the text into a new plain text document. Save the TextEdit document to disk and attach it to your e-mail message.

macOS 10.11 and Earlier

  1. Click on Finder in the Dock.

  2. From the Go menu, choose Utilities.

  3. Double-click the Console application.

  4. Click on All Messages at the left of the window. (It may be necessary to first click the Show Log List toolbar button if you don’t see All Messages at the left.)

  5. If it shows any recent error messages, select them (or choose Edit ‣ Select All).

    Note: You may need to click the Earlier button at the bottom of the window to find errors that did not occur recently.

  6. Choose File ‣ Save Selection As… and save the file as My Log.log on your desktop.

  7. Drag this file into your e-mail message to include it as an attachment/enclosure.

5.1.2   Sending in a Bluetooth Log

If the problem is related to connecting or disconnecting via Bluetooth, you can save a Bluetooth diagnostic log by entering this command in Terminal:

sudo /System/Library/Frameworks/IOBluetooth.framework/Resources/BluetoothReporter

Finder will then open a window showing the BluetoothReporter_<date>.tar.gz report file.

5.1.3   Sending in Screenshots

To take a screenshot, hold down the Command and Shift keys and press the number 4. Then use the mouse to select the area of the screen that you want to take a picture of. This will create a file called Screen Shot <date> at <time>.png on your desktop. Pressing the keys again will create Screen Shot <date> at <new time>.png, etc.

You can also take screenshots using the File ‣ Take Screenshot command in the Preview application.

To send in screeenshots, drag the files into your e-mail window to attach them to your message. If you’re using Apple Mail, be sure to set the Image Size pop-up menu at the bottom of the message window to Actual Size.

5.1.4   Sending in a “Sample” Report

If a program is slow, hangs (e.g. with a spinning beachball), or freezes, a “sample” report can record what your Mac was doing in order to locate the source of the problem.

  1. Click on Finder in the Dock.
  2. From the Go menu, choose Utilities.
  3. Double-click the Activity Monitor program.
  4. Select ToothFairy in the Activity Monitor window.
  5. Do whatever it is in ToothFairy that causes the slowness, hang, or freeze. Immediately, click on Activity Monitor in the Dock and choose Sample Process from the View menu.
  6. After Activity Monitor has finished taking the sample, click the Save… button in the “Sample of ToothFairy” window. Save the file to your desktop and then include it in your e-mail message to toothfairy@c-command.com as an attachment. (Please do not copy and paste the text from the Activity Monitor window.)

5.1.5   Sending in Crash Log Files

Crash logs are stored in the folder:

/Users/<username>/Library/Logs/DiagnosticReports/

First click on the Finder in the Dock, then click on the Go menu, and hold down the Option key as you choose Library. Open the Logs folder, then DiagnosticReports.

Once you’ve opened the DiagnosticReports folder, find the most recent crash log file for the app that crashed and add it to your e-mail message to toothfairy@c-command.com as an attachment.

5.2   Why isn’t my device connecting?

ToothFairy works with devices that can be connected to your Mac via the macOS Bluetooth menu. If you can connect it via the system menu, you should be able to connect and disconnect it via ToothFairy. Here are some steps to try if you can’t get your device to connect or if it won’t stay connected:

  1. Make sure that Bluetooth is On in the Bluetooth pane in System Preferences. It can help to turn Bluetooth off and then back on again on your Mac, or to turn it off on other nearby devices.
  2. Make sure that your device is paired with your Mac using the Bluetooth pane of System Preferences. It sometimes helps to unpair the device in System Preferences and then re-pair it. (Just because you can see the device and connect to it from the Bluetooth menu does not mean that it is paired. Make sure that you check System Preferences.)
  3. Make sure that the device you are trying to connect is the same one that you added to ToothFairy. For example, if you got a new pair of AirPods, ToothFairy will still try to connect to the old AirPods (and report a timeout error) unless you’ve added the new ones to ToothFairy using the + button. Even if you haven’t gotten a new device, it can sometimes help to remove the device from ToothFairy using the - button and then add it back using the + button.
  4. Make sure the device’s battery is fully charged.
  5. Try restarting your Mac in Safe Mode. This will help rule out other software as the source of the problem, but it can also fix the problem (i.e. the Bluetooth device will continue working after you do a regular reboot).
  6. It can help to adjust your AirDrop settings (on your Macs and any nearby iOS devices). Bluetooth devices connect more reliably when AirDrop is off or set to Contacts Only.
  7. It can help to turn off Allow Handoff between this Mac and your iCloud devices in the General pane of System Preferences.
  8. If you have USB Overdrive installed, try temporarily turning it off or uninstalling it and see whether that helps.
  9. Try disconnecting any USB hubs from your Mac or nearby Macs.
  10. Check Apple’s Potential sources of Wi-Fi and Bluetooth interference guide.
  11. Try resetting your Mac’s Bluetooth module. You can do this by holding down the Shift and Option keys while clicking on the Bluetooth menu. Go to the Debug submenu and choose Reset the Bluetooth Module. Then restart your Mac.
  12. Apps like Bluetooth Inspector, iStumbler, and Apple’s Bluetooth Explorer can be used to diagnose connection problems.
  13. If you still can’t get it to work, save a Bluetooth log and a diagnostic report and send them to us for further assistance.

5.3   How can I switch back to an iPhone or other Mac?

ToothFairy makes it easy to connect a Bluetooth device such as AirPods to your Mac. If you connect the AirPods with ToothFairy and then put them back in the case, they will auto-reconnect to that Mac when you take them out of the case.

AirPods will auto-disconnect from the Mac when you try to use them with another computer or phone. Some other types of headphones need to be manually disconnected, by clicking the menu bar icon or pressing the hotkey, before they can be connected to another computer or phone.

To a Mac

To switch to using your AirPods with another Mac, you can use ToothFairy on that Mac to quickly connect them. To prevent macOS from auto-pairing certain Bluetooth audio devices, see this page.

To an iOS Device (Manually)

To switch to using your AirPods with an iPhone, you need to tell the iPhone to connect to them. (ToothFairy on the Mac cannot make the iPhone connect.) It is usually not necessary to go to the iOS Settings to do this. Most apps, and Control Center, have a button for switching the audio output. It looks like an upward-pointing triangle with a bunch of concentric circles.

To an iOS Device (Using Siri)

You can also create a Siri shortcut in iOS to quickly switch the audio output to a particular device:

  1. Connect the AirPods to your iPhone (as described in To an iOS Device (Manually)).

  2. Open the Shortcuts app.

  3. Tap the + button at the top right to create a new shortcut.

  4. Tap the button at the top right to name your shortcut (e.g. Play to AirPods) and set an icon.

  5. Tap Add Action and choose Set Playback Destination.

    play to airpods shortcut 1

  6. Where it says Set playback destination to iPhone, tap iPhone and change it to your device (e.g. Michael’s AirPods).

    play to airpods shortcut 2

  7. Tap Next and Done. Now you can switch the audio output to that device by running the shortcut, e.g. by telling Siri to “Play to AirPods” or by tapping the shortcut in the Shortcuts app or widget.

    play to airpods shortcut 3

To an iOS Device (Automatically)

You can also set your iPhone to automatically switch to AirPods when you open a certain app. This works even if your Mac is already using them:

  1. Connect the AirPods to your iPhone (as described in To an iOS Device (Manually)).

  2. Open the Shortcuts app.

  3. Tap Automation at the bottom of the screen.

    automation shortcut 1

  4. Tap Create Personal Automation.

    automation shortcut 2

  5. Scroll down and tap Open App.

    automation shortcut 3

  6. Tap Choose, select the app (or multiple apps), and tap Done.

  7. Tap Next.

  8. Tap Add Action and choose Set Playback Destination.

    play to airpods shortcut 1

  9. Where it says Set playback destination to iPhone, tap iPhone and change it to your device (e.g. Michael’s AirPods).

  10. Tap Next, uncheck Ask Before Running, and tap Done.

    automation shortcut 4

Keyboards

Some keyboards, such as the Apple Magic Keyboard can only be paired with one computer or iOS device at a time. Thus, to switch a Magic Keyboard between Macs you would need to pair it each time in System Preferences. Other keyboards—such as the Logitech K375s, K380, K580, and K811—support multiple devices, so you can switch simply using ToothFairy.

See Also

5.4   How can I turn off Automatic Device Switching?

When using a recent model of Apple or Beats earphones with macOS 11 or iOS 14, there is a feature called Automatic Device Switching. In some cases, this works well and you automatically hear the sound from the desired Mac or iPhone without having to connect the Bluetooth device. In other cases, it can cause problems. For some customers, the AirPods seem to randomly switch back and forth between devices. For others, they keep reconnecting to the same wrong Mac or iPhone, rather than staying with the one that you chose. In such cases, you may want to turn off Automatic Device Switching:

iOS 14

  1. Go to Settings ‣ Bluetooth.
  2. Tap the i button next to your device.
  3. Set Connect to This iPhone to When Last Connected to This iPhone.
  4. When you want your iPhone to connect to the device, use the audio output button, Siri, or an automatic Shortcut.

macOS 11

  1. Go to System Preferences ‣ Bluetooth.
  2. Click the Options button next to your device.
  3. Set Connect to This Mac to When Last Connected to This Mac.
  4. When you want your Mac to connect to the device, press ToothFairy’s hotkey or click the icon in the menu bar.

5.5   How can I rename a Bluetooth device?

  1. Open the Bluetooth pane of System Preferences.
  2. Make sure that your device is connected.
  3. Right-click on the device and choose Rename from the contextual menu. This will change the name throughout the system and in ToothFairy.

6   Legal Stuff

Copyright and Trademarks

ToothFairy and this manual are copyright © 2002–2021 by C-Command Software, LLC. All rights reserved.

ToothFairy is a trademark of C-Command Software, LLC. Mac is a registered trademark of Apple Computer. All other products mentioned are trademarks of their respective owners.

End User License Agreement

CAREFULLY READ THE FOLLOWING LICENSE AGREEMENT. YOU ACCEPT AND AGREE TO BE BOUND BY THIS LICENSE AGREEMENT BY DOWNLOADING AND INSTALLING THE PROGRAM. IF YOU DO NOT AGREE TO THIS LICENSE, THEN DO NOT DOWNLOAD AND INSTALL THE PROGRAM, AND REMOVE THE SOFTWARE FROM YOUR COMPUTER.

License Grant

“You” means the person or company who is being licensed to use the Software or Documentation. “We,” “us” and “our” means C-Command Software, LLC.

We hereby grant you a nonexclusive license to use one copy of the Software on any single computer, or on multiple computers only used by a single person. The Software is “in use” on a computer when it is loaded into temporary memory (RAM) or installed into the permanent memory of a computer—for example, a hard disk or other storage device.

Title

We remain the owner of all right, title and interest in the Software and related explanatory written materials (“Documentation”).

Archival or Backup Copies

You may copy the Software for backup and archival purposes, provided that the original and each copy is kept in your possession and that your installation and use of the Software does not exceed that allowed in the “License Grant” section above.

Things You May Not Do

The Software and Documentation are protected by United States copyright laws and international treaties. You must treat the Software and Documentation like any other copyrighted material—for example, a book. You may not:

  • copy the Documentation,
  • copy the Software except to make archival or backup copies as provided above,
  • sublicense, rent, lease or lend any portion of the Software or Documentation.

Transfers

You may transfer all your rights to use the Software and Documentation to another person or legal entity provided you transfer this Agreement, the Software and Documentation, including all copies, updates and prior versions to such person or entity and that you retain no copies, including copies stored on computer.

Limited Warranty

The software is provided “as is,” without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software. No employee, agent, dealer or distributor of ours is authorized to modify this limited warranty, nor to make any additional warranties.

Term and Termination

This license agreement takes effect upon your use of the software and remains effective until terminated. You may terminate it at any time by destroying all copies of the Software and Documentation in your possession. It will also automatically terminate if you fail to comply with any term or condition of this license agreement. You agree on termination of this license to destroy all copies of the Software and Documentation in your possession.

General Provisions

  1. This written license agreement is the exclusive agreement between you and us concerning the Software and Documentation and supersedes any prior purchase order, communication, advertising or representation concerning the Software.
  2. This license agreement may be modified only by a writing signed by you and us.
  3. This license agreement is governed by the laws of the State of New Hampshire.
  4. You agree that the Software will not be shipped, transferred or exported into any country or used in any manner prohibited by the United States Export Administration Act or any other export laws, restrictions or regulations.

Components

The following open-source components are used in ToothFairy:

  • Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England.

  • Core Foundation is available under the terms of the Apple Public Source License.

  • CwlDemangle.swift is Copyright © 2017 Matt Gallagher and is available under the Apache License v2.0 with Runtime Library Exception.

  • easy-ecc (currently here) is Copyright © 2013 Kenneth MacKay. All rights reserved.

    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  • GMEllipticCurveCrypto is Copyright © 2014 Richard Moore. All rights reserved.

    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  • Growl is Copyright © The Growl Project, 2004-2007. All rights reserved.

    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    3. Neither the name of Growl nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  • Thanks to Allan Odgaard for some code snippets that are used in the Software Update installer.

7   Version History

2.7.3—April 12, 2021
2.7.2—January 15, 2021
  • Fixed a bug that could cause ToothFairy to crash at launch on some Macs.
2.7.1—January 14, 2021
  • ToothFairy now runs natively on Apple Silicon Macs.
  • Added icon for AirPods Max.
  • The Run shell script after connecting/disconnecting section of the manual now has a sample script to connect the device to another Mac when disconnecting from the current one.
  • The Run shell script after connecting/disconnecting section of the manual now has a sample script that shows how to change the volume.
  • Worked around an issue that could prevent ToothFairy from launching on Macs with certain network configurations.
  • Fixed an issue adding new Bluetooth devices on macOS 11.
2.7—November 3, 2020
  • Redesigned the application icon for macOS 11 Big Sur.
  • Added new icons for AirPods Pro, Beats Studio 3, controller, headphones, Playstation, Powerbeats 2020, Siri Remote, and Xbox.
  • Added AppleScript support for listing devices, getting their properties, and toggling connections.
  • If the Don’t disconnect when clicking icon or pressing hotkey option is enabled for a device, you can now access that device’s menu with a regular click, rather than having to right-click or Control-click.
  • The Improve sound quality by disabling audio input from device option now works better when a Bluetooth device auto-connects rather than being connected via ToothFairy. It’s also more reliable in cases where macOS reports that it has set the audio input device but actually hasn’t.
  • Improved resizing the Advanced… preferences sheet.
  • The Advanced… preferences sheet now has a help button that explains the options and shows sample shell scripts and AppleScripts.
  • Updated the sample scripts in the Run shell script after connecting/disconnecting section of the manual.
  • Worked around an issue with macOS 11 where text in the device list would be vertically clipped.
  • Worked around some security changes in macOS 11 that made it impossible to save script changes.
  • Fixed a bug where ToothFairy could stuck in an error reporting loop if there was an error saving the scripts.
2.6.2—June 2, 2020
  • The How can I switch back to an iPhone or other Mac? section of the manual now describes how you can make your iPhone automatically switch back to AirPods (or another chosen Bluetooth device) when you open certain apps.
  • Added the How can I rename a Bluetooth device? section of the manual.
  • If macOS forgot that ToothFairy was set as a login item, it will now repair this at launch without your having to click the preferences checkbox.
  • Improved the Improve sound quality by disabling audio input from device and Why isn’t my device connecting? sections of the manual.
  • Adjusted the icons so that if you have a keyboard next to a trackpad, they line up.
  • The offset disconnected AirPods icon no longer looks uncentered.
  • Added Czech and Dutch localizations.
  • Fixed a bug where the Preferences window could be inappropriately shown at launch due to an interaction between macOS state restoration and the login item.
  • Tried to fix a crash due to a macOS bug after adding a new Bluetooth device.
2.6.1—December 30, 2019
  • Improved the details in the AirPods Pro icon.
  • Added another variant of the AirPods icon that’s slightly smaller, because some people prefer that size and also to help differentiate for those who have multiple pairs of AirPods.
  • The game controller icon no longer shows a wire.
  • You can now hold down the Option key when opening the icon pop-up menu to see the filled versions of the icons.
  • ToothFairy is faster at detecting when a device’s connection has been dropped without macOS noticing.
  • The How can I switch back to an iPhone or other Mac? section of the manual now tells how you can make a Siri shortcut to quickly switch an iOS device to a given audio device.
  • Updated the Adding a Device and Why isn’t my device connecting? sections of the manual.
  • When the Preferences window is already open, choosing the Preferences… menu command for a device will now select that device.
  • Closing the Advanced sheet now preserves the selected device.
2.6—October 29, 2019
  • Added icons for AirPods Pro, Beats X, Microsoft Surface Earbuds, and an alternate icon for a pair of regular AirPods that are positioned symmetrically rather than offset.
  • Adjusted the way battery levels map to gradations in the menu bar gauge.
  • Added a button to the About tab to open the ToothFairy manual.
  • Worked around a macOS bug that could prevent launching the app after using AirPlay.
  • Fixed a regression where the battery level wasn’t shown if it was exactly 100%.
  • Modernized the localizations.
  • Reduced the size of the app.
2.5.1—October 1, 2019
  • The battery gauge uses twice as many gradations as before to show the battery level more precisely.
  • The Control-click menu now shows the battery percentage on a separate line, to avoid having such a wide menu item.
  • If you rename a Bluetooth device, the name now updates in ToothFairy without having to relaunch the app.
  • The Bluetooth devices are now sorted by name in the Preferences window.
  • Adjusted the battery level tooltip text so that it doesn’t look funny if only one of the AirPods is connected.
  • Worked around a crash on macOS 10.15 that could occur if the system asked you for permission to allow ToothFairy to control your Bluetooth device and you declined.
  • Worked around a potential crash that could occur if a Bluetooth device’s name couldn’t be loaded.
  • All the settings are now documented in the manual.
2.5—April 17, 2019
  • Added menu bar icons for more devices: pair of AirPods, Powerbeats3, Powerbeats Pro, Beats Solo, headset, speakers (boombox, conference, cylinder, desktop, vertical), graphics tablet, game controller, Magic Mouse, 2-button mouse, Magic Trackpad 2 (top and side views), Magic Trackpad 1 (side view), iPhone, and tablet.
  • Clicking on a device in the menu bar now shows a menu with its name, connection status, and battery level, so you can see the information immediately instead of waiting for the tooltip to appear.
  • The Preferences window now explains that you can right-click (or Control-click) the menu bar icon to access the preferences when the Dock icon is hidden.
  • The Preferences window now explains that showing the battery status requires a device whose battery level appears in the Bluetooth pane in System Preferences.
  • Tweaked various Preferences window text to clarify the icon and audio input settings and how the new Apple H1 chip fits in.
  • Improved the Why don’t I see the battery level? and Why isn’t my device connecting? sections of the manual.
  • When reporting a Bluetooth error, ToothFairy now includes the hex code and error name to help look up the exact cause of the problem.
  • Fixed a regression where changing the icon didn’t work on macOS 10.11.
  • Updated code for Xcode 10.2 and Swift 5.
2.4.9—January 29, 2019
  • ToothFairy no longer shows an error window when you try to connect to a device that’s already connected.
  • ToothFairy now automatically retries connecting via Bluetooth to make it more likely that it will succeed without user intervention.
  • Improved the Why isn’t my device connecting? section of the manual.
  • Added the Why don’t I see the battery level? section of the manual.
  • Added accessibility labels for the device icon menu and menu bar status icon.
  • ToothFairy is more judicious about changing the audio input device, to avoid excessive Micro Snitch notifications.
  • Fixed a bug where some script text could be displayed with the wrong color in Dark Mode.
2.4.8—November 7, 2018
  • If there’s an error connecting to your Bluetooth device, ToothFairy now recommends to you how you can fix it.
  • Improved the wording in various user interface text.
  • Fixed a bug where the menu bar background color when clicking on the menu didn’t match the accent color on macOS 10.14 or the Graphite appearance on earlier versions.
  • Added the Why isn’t my device connecting? and Why do I see the Dock icon even after hiding it? sections of the manual.
  • The Credits sheet now links to the privacy policy.
  • Added accessibility descriptions in the Preferences window.
  • Improved the diagnostic report.
  • Error logging now includes more information about the error and the device it’s related to.
2.4.7—August 14, 2018
  • Added support for Dark Mode on macOS 10.14.
  • Revised various preferences text to improve clarity. For example:
    • Global hotkey to switch connection is now Global hotkey to connect/disconnect.
    • Hide dock icon (effect after next launch) is now Hide Dock icon (takes effect at next launch).
    • Audio output only is now Improve sound quality by disabling audio input.
    • Connection only mode is now Don’t disconnect when clicking icon or pressing hotkey.
  • Fixed a bug where the Audio output only option didn’t work, causing AirPods to be inappropriately set as the system audio input device.
  • Added the Save Diagnostic Report button.
  • Reduced the size of the application by having ToothFairy and its login item helper share the same copy of the Swift libraries.
  • Fixed the minimum widths of the OK buttons.
  • Reformatted the text in the credits sheet with fonts, styles, and clickable links.
2.4.6—July 11, 2018
  • The shell script text views now use a monospaced font for better readability of punctuation characters.
  • The shell script text views now disable automatic quote and dash substitution so that you don’t accidentally get smart punctuation in your scripts.
  • Fixed a bug where opening the Preferences window didn’t always bring it to the front.
  • Fixed a bug where the disconnection script was not run.
  • Fixed a bug where there was extra space at the end of the tooltip when hovering over the menu bar icon.
  • Fixed a bug where some of the menu bar icons were not centered when the battery indicator was visible.
  • Updated the German localization.
2.4.5—June 14, 2018
  • C-Command Software has acquired ToothFairy from the original developer, Yibin (Robin) Lu, who was no longer able to work on the app. We thank Robin for his work and look forward to continuing development of the app.
  • Restored compatibility with macOS 10.11.
  • The right-click menu now appears on mouse down instead of mouse up, for consistency with other menus.
  • Updated the copyright and credits.
  • Renamed the app from Tooth Fairy to ToothFairy.
  • Fixed a bug where the credits sheet didn’t have a minimum width.
  • Removed an .sdef file that’s not actually used.