diff --git a/tools/fan_rpm_loop_test.sh b/tools/fan_rpm_loop_test.sh
new file mode 100755
index 0000000..cbebe24
--- /dev/null
+++ b/tools/fan_rpm_loop_test.sh
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# shim system-level operations to allow for unit testing
+MkDir()     { mkdir     "$@"; }
+Mv()        { mv        "$@"; }
+Sleep()     { sleep     "$@"; }
+SystemCtl() { systemctl "$@"; }
+
+# Store commanded rpm as thermal set-point.
+#
+# Arg:
+#   rpm - rpm set-point.
+CommandRpm() {
+  printf '%d\n' "$1" > /etc/thermal.d/set-point
+}
+
+# Sweep or step rpm over range.
+#
+# Args:
+#   start_rpm: start RPM value
+#   stop_rpm: stop RPM value
+#   num_steps: number of control steps; i.e., not including start.
+#   dwell: dwell time at each point, in seconds
+RunRpmSteps() {
+  local -i start_rpm=$1
+  local -i stop_rpm=$2
+  local -i num_steps=$3
+  local -i dwell=$4
+
+  # Rounding offset when dividing range into num_steps
+  local -i h=$((num_steps / 2))
+
+  # To avoid asymmetrical division behavior for negative numbers,
+  # rearrange negative slope to positive slope running backward;
+  # I.e., to run using loop variable p: {num_steps downto 0}.
+  local -i rpm0=$((start_rpm))
+  local -i range=$((stop_rpm - start_rpm))
+  local -i s=1
+  if ((range < 0)); then
+    ((rpm0 = stop_rpm))
+    ((range = -range))
+    ((s = -1))
+  fi
+
+  echo "Running RPM from ${start_rpm} to ${stop_rpm} in ${num_steps} steps"
+  CommandRpm "${start_rpm}"
+  SystemCtl start swampd.service
+  Sleep 60
+
+  local i
+  for ((i = 0; i <= num_steps; ++i)); do
+    local -i p=$((s < 0 ? num_steps - i : i))
+    local -i rpm=$((rpm0 + (range * p + h) / num_steps))
+    echo "Setting RPM to ${rpm} and sleep ${dwell} seconds"
+    CommandRpm "${rpm}"
+    Sleep "${dwell}"
+  done
+
+  SystemCtl stop swampd.service
+  Mv /tmp/swampd.log ~/"${start_rpm}_${stop_rpm}_${num_steps}_${dwell}.csv"
+  echo "Done!!"
+}
+
+# Sweep and step fans from min to max and max to min.
+#
+# Args:
+#   min_rpm: min RPM for the platform
+#   max_rpm: max RPM for the platform
+main() {
+  local min_rpm=$1
+  local max_rpm=$2
+
+  if ((min_rpm < 1 || max_rpm < min_rpm)); then
+    echo "Invalid arguments. Usage: fan_rpm_loop_test.sh <MIN_RPM> <MAX_RPM>"
+    return 1
+  fi
+
+  MkDir -p /etc/thermal.d/
+  SystemCtl stop swampd.service
+
+  RunRpmSteps "${min_rpm}" "${max_rpm}" 10 30
+  RunRpmSteps "${max_rpm}" "${min_rpm}" 10 30
+  RunRpmSteps "${min_rpm}" "${max_rpm}"  1 30
+  RunRpmSteps "${max_rpm}" "${min_rpm}"  1 30
+}
+
+return 0 2>/dev/null
+main "$@"
