diff --git a/preload/apps/spo2/__init__.py b/preload/apps/spo2/__init__.py
index 6775f040baf1a464d54ba38c792c044676c196d6..cf565d8e01a92ffa1cf95099f847291cbdbae8fc 100644
--- a/preload/apps/spo2/__init__.py
+++ b/preload/apps/spo2/__init__.py
@@ -1,5 +1,7 @@
 import max86150
 import display
+import utime
+import buttons
 
 
 class SPO2:
@@ -20,6 +22,7 @@ class SPO2:
         self.avg_pos = 0
         self.last_sample = 0.0
         self.filtered_value = 0.0
+        self.source = "Red"
 
     def open(self):
         def callback(datasets):
@@ -33,12 +36,21 @@ class SPO2:
 
         self.sensor = max86150.MAX86150(callback)
         while True:
-            pass
+            utime.sleep(.1)
+            if buttons.read(buttons.BOTTOM_RIGHT):
+                if self.source == "Red":
+                    self.source = "IR"
+                else:
+                    self.source = "Red"
+            while buttons.read(buttons.BOTTOM_RIGHT): pass
 
     def update_history(self, datasets):
         for val in datasets:
-            # get red value (first in tuple)
-            self.avg[self.avg_pos] = val.red
+            if self.source == "Red":
+                self.avg[self.avg_pos] = val.red
+            else:
+                self.avg[self.avg_pos] = val.infrared
+
             if self.avg_pos < 9:
                 self.avg_pos += 1
             else:
@@ -57,6 +69,7 @@ class SPO2:
 
     def draw_histogram(self):
         self.disp.clear(self.COLOR_BACKGROUND)
+        self.disp.print('Source: {0} '.format(self.source))
 
         # offset in pause_histogram mode
         window_end = len(self.history) - self.histogram_offset