Tunabelly Software

Remotely Deploy TG Pro

Silently install, license and setup preferences.

To get more information on how TG Pro works, the available features and how to use them, see our in-depth app tutorial. Or download the free 14-day trial and give it a try.
This will guide through the steps to remotely install, license and setup custom preferences for TG Pro. This is especially useful for enterprise environments where a system administrator will want to install TG Pro on multiple computers with a remote deployment tool. Just follow the steps below and if there are any issues, please feel free to reach out to us via email or Twitter.
 

Step 1

Copy TG Pro to the remote Mac
This is a fairly simple step as all that's necessary is to copy the TG Pro app bundle (.app) to the Applications folder on the remote Mac, or whichever folder is required.
Stacks Image 55192
 

Step 2

Gather required information
There are a few pieces of information that are required for the licensing and installing preferences. So it's best to gather these up now so it's all available for the next step:

  • The license key, which can be found in the order email that will be from Paddle / Tunabelly Software. Paddle is a 3rd party service we use for licensing. It will be in the form of XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX. For business / enterprise environments, each Mac requires a separate license.

    To purchase a license and get an immediate license key, use our checkout.

    To purchase 5 or more, or if it's for an educational facility, please email us to get a custom checkout with a discount pre-applied.

  • The macOS username that TG Pro will be installed for.
 

Step 3

Setup preferences that will be installed
The best feature of TG Pro is the flexibility it has, such as email notifications, Auto Boost fan control rules, what's shown in the menu bar icon, logging, etc. All of these are controlled by the preferences. As part of a remote deploy, the preferences need to be setup. The preferences will be installed from a plist file, which is a common format for them on macOS. A plist file can easily be edited by Xcode (free) or view the list of plist editors (paid) from the App Store.

Here's what it will look like when opened in Xcode:
Stacks Image 55206
Download the plist file below, which contains all available preferences, to get started:
Open the plist file (it may need to be unzipped depending on the browser used) and edit the key/value pairs to suit the requirements of the install. Below is a table of the available key/value pairs grouped by section, along with a description and possible values:
Application
Key Type Values Default Value Description
launchOnLogin Boolean Yes / No Yes If the app will be automatically launched on user login.
appMode (deprecated - do not use) Number 0 - Normal app

1 - Background only app (menubar and dock icon are hidden)
1 Which style the app will run as.
updateIntervalSecs Number 1-60 2 In seconds, how often the temperatures and fan speeds are updated, as well as the Auto Boost rules (when in Auto Boost fan control mode).
enableDebugOutput Boolean Yes / No No If extra logging, which can help to debug certain issues, will be written to the system console.
hideTutorialAlert Boolean Yes / No No If the alert to view the app tutorial will be shown or not. This alert will appear when opening the main window (and has an option to suppress future showings).
MenuBar Icon Content
Key Type Values Default Value Description
showTempInMenuBar Boolean Yes / No Yes If the first temperature will be shown.
menuBarTempSensorIndex Number (All are temperatures)

0 - Computer average

1 - Highest

3 - Average CPU

4 - Highest CPU

6 and up - Each temperature sensor in sequence. These are specific to the Mac model the app is running on.
1 The first temperature that will be shown in the menubar icon.
showTemp2InMenuBar Boolean Yes / No No If the second temperature will be shown.
menuBarTemp2SensorIndex Number (All are temperatures)

0 - Computer average

1 - Highest

3 - Average CPU

4 - Highest CPU

6 and up - Each temperature sensor in sequence. These are specific to the Mac model the app is running on.
4 The second temperature that will be shown in the menubar icon.
showFanInMenuBar Boolean Yes / No Yes If the fan speed will be shown.
menuBarFanSensorIndex Number (All are in RPM)

0 - Fan averages

2 and up - Each fan in sequence. These are specific to the Mac model the app is running on.
0 The fan RPM that will be shown in the menubar icon.
menuBarStackOrder Number 0 - Horizontal

1 - Vertical
1 The orientation of the menubar info.
useSmallerMenuFont Boolean Yes / No Yes If a smaller font size should be used when the menubar stack order is horizontal.
useShorterTitles Boolean Yes / No Yes If only numbers should be shown. Ex: 95 / 2000 instead of 95℃ / 2000 RPM
useColorInMenu Boolean Yes / No Yes If the temperatures should be color-coded. Higher temperatures will be orange or red.
useColorForOverrideSymbol Boolean Yes / No Yes If the override system symbol shown in the menubar will be colored.
showAppIcon Boolean Yes / No No If an icon will be shown to the left of the temperature / fan speed information.

Note: If no temperatures or fan speeds are enabled, this option will automatically be turned on.
Temperatures
Key Type Values Default Value Description
tempUnit Number 0 - Celsius

1 - Fahrenheit
0 Which temperature units to use.
checkDriveTemps Boolean Yes / No No If the hard drive temperatures should be polled and shown, using SMART.
Notifications
Key Type Values Default Value Description
useLocalNotifications Boolean Yes / No Yes If high temperature notifications should be shown. They will be displayed via the macOS Notification Center.

These are triggered by the limit preferences further down the list.
useEmailNotifications Boolean Yes / No No If an email should be sent when there's a high temperature.

These are triggered by the limit preferences further down the list.
emailUsername String Email Empty The username of the email account the notifications will be sent from.
silentSetup_emailPassword String Yes / No Empty The password of the email account the notifications will be sent from.

Note: This will be securely stored in the user's Keychain (and not saved in the normal preferences).
emailAllowEmptyPassword Boolean Yes / No No If an empty password for the email account is allowed.
emailOutgoingServer String Server Empty The outgoing mail server to use.
emailSMTPPort Number Usually 25, 465 or 587 Empty The port to use for the outgoing mail server.
emailSMTPEncryptionType Number 1 - None

2 - Start TLS

4 - TLS / SSL
1 The type of encryption to use when communicating with the outgoing mail server.
emailSendTo String Email Empty The email address the notifications should be sent to.
limitForSpecificArea Number 40-110℃

Note: The prefs are always stored in Celsius.
100 The limit at which local or email notifications will be triggered. This can be for any temperature sensor.
limitForHighestCPU Number 40-110℃

Note: The prefs are always stored in Celsius.
100 The limit at which local or email notifications will be triggered. This is only used for CPU temperature sensors.
showAutoBoostAlerts Boolean Yes / No No If a local notification / email should be triggered when Auto Boost rules are activated / deactivated.
showLastShutdownAlerts Boolean Yes / No Yes If a local notification / email should be triggered if the last shutdown reason is not normal.
showBatteryHealthAlerts Boolean Yes / No Yes If a local notification / email should be triggered if the battery health is not normal.
playSoundForNotifications Boolean Yes / No No If a sound should be played when a local notification is shown.
soundForNotifications String Name of sound to play Empty The name of the sound to play for the local notifications.
showSpecificAreaAlerts Boolean Yes / No Yes If a local notification / email should be triggered if any temperature is above the "limitForSpecificArea" preference.
showHighestCPUAlerts Boolean Yes / No No If a local notification / email should be triggered if any temperature is above the "limitForHighestCPU" preference.
Logging
Key Type Values Default Value Description
logToFile Boolean Yes / No No If the app will log temperatures, fan speeds, temperature alerts and diagnostic information.
logTemperatures Boolean Yes / No Yes If temperature will be logged.
logFanSpeeds Boolean Yes / No Yes If fan speeds will be logged.
logAlerts Boolean Yes / No Yes If temperature alerts, triggered by the limit values in the Notification preferences will be logged.
logDiagnostics Boolean Yes / No Yes If hardware diagnostics will be logged.
useISO8601DatesForLogs Boolean Yes / No Yes If the log file names (for startNewLogFileMode 1 or 2) use ISO 8601 formatted dates.
startNewLogFileMode Number When to create a new log file:

0 - Never

1 - On app startup

2 - Everyday at midnight
1 When a new log file should be created.
logFileFolderPath String Path to log file.

Example: "/Users/macuser/Desktop/TG Pro Log.csv"
~/Documents/TG Pro Log.csv The path to where the log file will be created and written.
Fan Control
Key Type Values Default Value Description
silentSetup_autoBoostConfigsBattery Array of Dictionaries Each dictionary is one Auto Boost rule that will be created and stored.

View the key/value pairs to use below.
Empty The array of key value pairs for each Auto Boost rule that will be used when the Mac is running on battery power.
silentSetup_autoBoostConfigsPowerSupply Array of Dictionaries Each dictionary is one Auto Boost rule that will be created and stored.

View the key/value pairs to use below.
Empty The array of key value pairs for each Auto Boost rule that will be used when the Mac is running on a power supply.
fanControlType Number 0 - System

1 - Manual
1 - Max for T2 Macs

2 - Auto Boost
2 - Auto Max for T2 Macs
0 Which fan control mode is active.
autoBoostGradualTime Number In seconds:

5 - 60
10 The time in seconds that the Auto Boost rule will take to complete the change in fan speed.
turnOffFanControlForSleep Boolean Yes / No Yes If the fan control will be reverted back to System when the Mac goes to sleep.
enableSystemOverrides
(For older non-T2 Macs)
Array Array of values of 0 (off) or 1 (on). Each value corresponds to the associated fan number. Empty Sets if the app has full control over the fan speeds, including lowering them.
useManualInsteadOfMax
(For newer T2 Macs)
Boolean Yes / No No If the app should use full control where the fan speeds can be adjusted, or always use maximum rpm.
useAutoBoostInsteadOfAutoMax
(For newer T2 Macs)
Boolean Yes / No No If the app should use full control where the fan speeds can be adjusted, or always use maximum rpm for all Auto Boost rules.
linkFanSpeeds Boolean Yes / No Yes For Macs that have multiple fans, whether or not the speeds are linked together when using the Manual mode sliders.
 
Auto Boost rules are stored in a proprietary format, so it's not easy possible to add them to the plist file. To resolve this, the rules can be described in the plist, and TG Pro will parse them, create the rules and store them.

When using Auto Boost rules, make sure the fan control mode is set to "Auto Boost" to enable this feature. Also worth noting is for Mac's that have the T2 chip (2018 MacBook Pro, MacBook Air, Mac Mini & iMac Pro), the option to override system control and use Auto Boost instead of Max Boost is necessary, otherwise the app will treat each rule as 100% fan speed. For more detail on why this is, please see this section in the app tutorial.

An example of what they look like in the plist:
Stacks Image 56184
The key/value pairs to use along with all the possible options:
Key Type Values Description
trigger String "Any" - Any sensor

"Average CPU" - The average temperature of all CPU sensors

"Highest CPU" - The highest temperature of all CPU sensors

"Always" - Always set the fan to the percent specified and does not use any sensors.
That will trigger the rule to activate.
fanName String "All" - Rule applies to all fans

"Insert fan name here" - If the rule should apply to a specific fan, the name of it can be used. Note that the fan names can be different depending on the Mac model the app is running on.
Which fans the rule will apply to.
fanPercent Number This is the percent that the fan speed should be set to.

0% = Minimum RPM

100% = Maximum RPM

Available values are between 0-100.
The fan speed that should be used.
tempThreshold Number The temperature that the rule gets triggered at.

Available values are between 40-110℃.
The temperature threshold that the rule will be activated.
Updates
Key Type Values Default Value Description
automaticallyCheckForUpdates Boolean Yes / No Yes If the app will be periodically check for updates.
 

Step 4

Copy plist file to the remote Mac
For this step, all that's required is to copy the preferences plist file that's been setup to the remote Mac. For this example, the path chosen will be:

/tmp/var/TG Pro/prefs to install.plist
Stacks Image 56675
Note: It is possible to have the plist file on a network share instead of copying it to the remote Mac, as described in the step below.
 

Step 5

Run install command line
TG Pro will be launched in a special mode that does not display any UI and silently installs the fan helper, licenses the app and installs the preferences.

The following table describes the available options:
Option Value Is Required Description
-silentSetup None Yes Tells TG Pro to launch in a special mode to silently install and setup everything.
-licenseKey String in the format:

XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
Yes The license key to use to activate the app.
-licenseEmail String Yes The email that the license will be activated with. This is not tied to the license key and can be any valid email address.
-prefsFilePath String in the format:

A fully qualified fie path
Yes The path to the plist file that contains the preferences and Auto Boost rules to install.

This can be a local or network path. This allows the plist file to be located on a network share and re-used for all installations.
-prefsUsername String Yes The macOS username that the preferences will be installed for.
Note: The command must be run as root to be able to install the fan helper.

Assuming that TG Pro is located in the root Applications folder, it will look something like this:

sudo "/Applications/TG Pro.app/Contents/MacOS/TG Pro" -silentSetup -licenseKey XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX -licenseEmail user@example.org -prefsFilePath "/var/tmp/TG Pro/prefs to install.plist" -prefsUsername macuser
Stacks Image 56659
TG Pro will now be setup with the provided preferences, licensed (trial dialog will not appear on launch) and full fan control. For fan control, a special helper app is installed in the following locations:

 /Library/PrivilegedHelperTools/com.tunabellysoftware.TGFanHelper
• /Library/LaunchDaemons/com.tunabellysoftware.TGFanHelper.plist
 

Finished

Important Notes
When TG Pro is installed remotely, it remembers this and will disable the following user prompts:
  • Alert on app launch if it's not in the Applications folder. This is to see if the user would like it to automatically move itself and re-launch.
  • Any rating alerts.
If you would like help with these steps or have any questions, please send us an email.
who we are
Tunabelly Software Inc. is a Canadian software development company.
contact us
what we do
Specialize in making amazing macOS, tvOS and iOS apps.