diff --git a/oscar/SleepLib/loader_plugins/prs1_loader.cpp b/oscar/SleepLib/loader_plugins/prs1_loader.cpp
index 2debd6aa..389e3022 100644
--- a/oscar/SleepLib/loader_plugins/prs1_loader.cpp
+++ b/oscar/SleepLib/loader_plugins/prs1_loader.cpp
@@ -204,7 +204,7 @@ static QString ts(qint64 msecs)
 // for more than 2 values, just write the test manually and use UNEXPECTED_VALUE if it fails
 
 
-enum FlexMode { FLEX_None, FLEX_CFlex, FLEX_CFlexPlus, FLEX_AFlex, FLEX_RiseTime, FLEX_BiFlex, FLEX_AVAPS, FLEX_Unknown  };
+enum FlexMode { FLEX_None, FLEX_CFlex, FLEX_CFlexPlus, FLEX_AFlex, FLEX_RiseTime, FLEX_BiFlex, FLEX_AVAPS, FLEX_PFlex, FLEX_Unknown  };
 
 enum BackupBreathMode { PRS1Backup_Off, PRS1Backup_Auto, PRS1Backup_Fixed };
 
@@ -243,6 +243,7 @@ static const PRS1TestedModel s_PRS1TestedModels[] = {
     { "400X150", 0, 6, "DreamStation CPAP Pro" },
     { "500X110", 0, 6, "DreamStation Auto CPAP" },
     { "500X150", 0, 6, "DreamStation Auto CPAP" },
+    { "501X120", 0, 6, "DreamStation Auto CPAP with P-Flex" },
     { "500G110", 0, 6, "DreamStation Go Auto" },
     { "502G150", 0, 6, "DreamStation Go Auto" },
     { "600X110", 0, 6, "DreamStation BiPAP Pro" },
@@ -6138,6 +6139,9 @@ bool PRS1DataChunk::ParseSettingsF0V6(const unsigned char* data, int size)
                         break;
                     }
                     break;
+                case 0xB0:  // P-Flex
+                    flexmode = FLEX_PFlex;  // TOOD: There's a level present in the settings, does it have any effect?
+                    break;
                 default:
                     UNEXPECTED_VALUE(data[pos], "known flex mode");
                     break;
@@ -7995,6 +7999,7 @@ void PRS1Loader::initChannels()
     chan->addOption(FLEX_CFlex, QObject::tr("C-Flex"));
     chan->addOption(FLEX_CFlexPlus, QObject::tr("C-Flex+"));
     chan->addOption(FLEX_AFlex, QObject::tr("A-Flex"));
+    chan->addOption(FLEX_PFlex, QObject::tr("P-Flex"));
     chan->addOption(FLEX_RiseTime, QObject::tr("Rise Time"));
     chan->addOption(FLEX_BiFlex, QObject::tr("Bi-Flex"));
     chan->addOption(FLEX_AVAPS, QObject::tr("AVAPS"));