diff --git a/tools/sst-info.sh b/tools/sst-info.sh
index 6005948..a1b15c8 100755
--- a/tools/sst-info.sh
+++ b/tools/sst-info.sh
@@ -4,6 +4,8 @@
 # Simply searches for all objects implementing known interfaces and prints out
 # the property values on those interfaces.
 
+set -e
+
 BUSCTL='busctl'
 XYZ='xyz.openbmc_project'
 OBJECT_MAPPER="$XYZ.ObjectMapper /xyz/openbmc_project/object_mapper $XYZ.ObjectMapper"
@@ -46,26 +48,87 @@
     $BUSCTL get-property $service $object $intf $prop
 }
 
+set_property() {
+    service=$1
+    object=$2
+    intf=$3
+    prop=$4
+    signature=$5
+    value=$6
+    $BUSCTL set-property $service $object $intf $prop $signature $value
+}
 
-cpu_paths=$(get_sub_tree_paths "/" 1 "$CPU_INTF")
-for cpu_path in $cpu_paths
-do
-    service=$(get_service_from_object $cpu_path 1 $CPU_INTF)
-    echo "Found SST on $cpu_path on $service"
-    for prop in $(get_property_names $service $cpu_path $CPU_INTF)
+show() {
+    cpu_paths=$(get_sub_tree_paths "/" 1 "$CPU_INTF")
+    for cpu_path in $cpu_paths
     do
-        echo "  $prop: $(get_property $service $cpu_path $CPU_INTF $prop)"
-    done
-
-
-    profiles=$(get_sub_tree_paths "$cpu_path" 1 "$CONFIG_INTF")
-    for profile in $profiles
-    do
-        echo
-        echo "  Found Profile $profile"
-        for prop in $(get_property_names $service $profile $CONFIG_INTF)
+        service=$(get_service_from_object $cpu_path 1 $CPU_INTF)
+        echo "Found SST on $cpu_path on $service"
+        for prop in $(get_property_names $service $cpu_path $CPU_INTF)
         do
-            echo "    $prop: $(get_property $service $profile $CONFIG_INTF $prop)"
+            echo "  $prop: $(get_property $service $cpu_path $CPU_INTF $prop)"
+        done
+
+
+        profiles=$(get_sub_tree_paths "$cpu_path" 1 "$CONFIG_INTF")
+        for profile in $profiles
+        do
+            echo
+            echo "  Found Profile $profile"
+            for prop in $(get_property_names $service $profile $CONFIG_INTF)
+            do
+                echo "    $prop: $(get_property $service $profile $CONFIG_INTF $prop)"
+            done
         done
     done
-done
+}
+
+set_cpu_prop() {
+    cpu_basename=$1
+    prop=$2
+    signature=$3
+    value=$4
+
+
+    cpu_paths=$(get_sub_tree_paths "/" 1 "$CPU_INTF")
+    for cpu_path in $cpu_paths
+    do
+        if [[ $cpu_path != *$cpu_basename ]]
+        then
+            continue
+        fi
+
+        if [[ "$prop" == "AppliedConfig" ]]
+        then
+            value=$cpu_path/$value
+        fi
+
+        service=$(get_service_from_object $cpu_path 1 $CPU_INTF)
+        set_property $service $cpu_path $CPU_INTF $prop $signature $value
+        return 0
+    done
+
+    echo "$cpu_basename not found"
+    return 1
+}
+
+if [[ ${DEBUG:=0} -eq 1 ]]
+then
+    set -x
+fi
+
+action=${1:-show}
+
+case "$action" in
+    show) show ;;
+    set-config) set_cpu_prop $2 AppliedConfig o $3 ;;
+    set-bf) set_cpu_prop $2 BaseSpeedPriorityEnabled b $3 ;;
+    *)
+        echo "Usage:"
+        echo "$0 (show|set-config|set-bf) [ARGS...]"
+        echo ""
+        echo "show (Default action) - show info"
+        echo "set-config cpuN configM - Set applied operating config for cpuN to configM"
+        echo "set-bf cpuN val - Set SST-BF enablement for cpuN to val (boolean)"
+        ;;
+esac
