diff --git a/Raspberry.System/Board.cs b/Raspberry.System/Board.cs
index 4595242..e391128 100644
--- a/Raspberry.System/Board.cs
+++ b/Raspberry.System/Board.cs
@@ -90,7 +90,17 @@ public Processor Processor
get
{
Processor processor;
- return Enum.TryParse(ProcessorName, true, out processor) ? processor : Processor.Unknown;
+ if (Enum.TryParse(ProcessorName, true, out processor))
+ {
+ // Check to see if we're dealing with a Pi 4 Model B
+ // The Pi 4 Model B currently lies to us and tells us that it's a BCM2835
+ if (processor == Processor.Bcm2835 && Model == Model.Pi4)
+ processor = Processor.Bcm2711;
+
+ return processor;
+ }
+
+ return Processor.Unknown;
}
}
@@ -245,7 +255,8 @@ private Model LoadModel()
case 0x2082:
return Model.B3;
-
+ case 0x03111:
+ return Model.Pi4;
default:
return Model.Unknown;
}
@@ -268,6 +279,7 @@ private ConnectorPinout LoadConnectorPinout()
case Model.B2:
case Model.Zero:
case Model.B3:
+ case Model.Pi4:
return ConnectorPinout.Plus;
default:
diff --git a/Raspberry.System/Model.cs b/Raspberry.System/Model.cs
index c16174b..2cc7b7f 100644
--- a/Raspberry.System/Model.cs
+++ b/Raspberry.System/Model.cs
@@ -56,7 +56,12 @@ public enum Model
///
/// Pi 3 Model B.
///
- B3
+ B3,
+
+ ///
+ /// Pi 4
+ ///
+ Pi4
}
///
@@ -93,6 +98,8 @@ public static string GetDisplayName(this Model model)
return "Raspberry Pi Zero";
case Model.B3:
return "Raspberry Pi 3 Model B";
+ case Model.Pi4:
+ return "Raspberry Pi 4 Model B";
default:
throw new ArgumentOutOfRangeException("model");
diff --git a/Raspberry.System/Processor.cs b/Raspberry.System/Processor.cs
index 01e2b69..b9953d1 100644
--- a/Raspberry.System/Processor.cs
+++ b/Raspberry.System/Processor.cs
@@ -18,6 +18,16 @@ public enum Processor
///
/// Processor is a BCM2709.
///
- Bcm2709
+ Bcm2709,
+
+ ///
+ /// Processor is BCM2711
+ ///
+ Bcm2711,
+
+ ///
+ /// Processor is BCM2835
+ ///
+ Bcm2835
}
}
\ No newline at end of file