diff --git a/Docs/Configuration.md5 b/Docs/Configuration.md5 index c9c1830a367..10ce1bdcd15 100644 --- a/Docs/Configuration.md5 +++ b/Docs/Configuration.md5 @@ -1 +1 @@ -8210fca135f6adfade7f26b418e10ab9 +b6d1384b2c506501f6c1c41f77aa7473 diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf index 66e18573bb1..c7771567059 100644 Binary files a/Docs/Configuration.pdf and b/Docs/Configuration.pdf differ diff --git a/Docs/Configuration.tex b/Docs/Configuration.tex index 100c18b3d02..4cd24241ba0 100755 --- a/Docs/Configuration.tex +++ b/Docs/Configuration.tex @@ -94,7 +94,7 @@ \vspace{0.2in} - Reference Manual (1.0.0) + Reference Manual (1.0.1) \vspace{0.2in} diff --git a/Docs/Differences/Differences.pdf b/Docs/Differences/Differences.pdf index 6652b009a0d..ab0eaf387af 100644 Binary files a/Docs/Differences/Differences.pdf and b/Docs/Differences/Differences.pdf differ diff --git a/Docs/Differences/Differences.tex b/Docs/Differences/Differences.tex index 302c82cdfbf..29b986e80cf 100644 --- a/Docs/Differences/Differences.tex +++ b/Docs/Differences/Differences.tex @@ -1,7 +1,7 @@ \documentclass[]{article} %DIF LATEXDIFF DIFFERENCE FILE -%DIF DEL PreviousConfiguration.tex Thu May 2 23:04:27 2024 -%DIF ADD ../Configuration.tex Thu May 2 23:04:51 2024 +%DIF DEL PreviousConfiguration.tex Fri May 10 15:27:32 2024 +%DIF ADD ../Configuration.tex Fri May 10 15:27:32 2024 \usepackage{lmodern} \usepackage{amssymb,amsmath} @@ -154,7 +154,7 @@ \vspace{0.2in} - Reference Manual (\DIFdelbegin \DIFdel{0.9.9}\DIFdelend \DIFaddbegin \DIFadd{1.0.0}\DIFaddend ) + Reference Manual (1.0\DIFdelbegin \DIFdel{.0}\DIFdelend \DIFaddbegin \DIFadd{.1}\DIFaddend ) \vspace{0.2in} @@ -212,9 +212,8 @@ \section{Introduction}\label{introduction} \subsection{Generic Terms}\label{generic-terms} \begin{itemize} -\DIFaddbegin -\DIFaddend \item +\item \texttt{plist} --- Subset of ASCII Property List format written in XML, also know as XML plist format version 1. Uniform Type Identifier (UTI): \texttt{com.apple.property-list}. Plists consist of @@ -282,9 +281,8 @@ \section{Configuration}\label{configuration-overview} \subsection{Configuration Terms}\label{configuration-terms} \begin{itemize} -\DIFaddbegin -\DIFaddend \item +\item \texttt{OC\ config} --- OpenCore Configuration file in \texttt{plist} format named \texttt{config.plist}. It provides an extensible way to configure OpenCore and is structured to be separated into multiple @@ -955,9 +953,8 @@ \subsection{Introduction}\label{acpiintro} \subsection{Properties}\label{acpiprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ array}\\ \textbf{Failsafe}: Empty\\ @@ -997,9 +994,8 @@ \subsection{Properties}\label{acpiprops} \subsection{Add Properties}\label{acpipropsadd} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Comment}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty\\ @@ -1032,9 +1028,8 @@ \subsection{Add Properties}\label{acpipropsadd} \subsection{Delete Properties}\label{acpipropsdelete} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{All}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false} (Only delete the first matched table)\\ @@ -1458,9 +1453,8 @@ \subsection{MmioWhitelist Properties}\label{booterpropsmmio} \subsection{Patch Properties}\label{booterpropspatch} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -1556,13 +1550,11 @@ \subsection{Quirks Properties}\label{booterpropsquirks} \tightlist \item No better slide exists (all the memory is used) \item \texttt{slide=0} is forced (by an argument or safe mode) - \item KASLR (slide) is unsupported (this is \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.7 or older) + \item KASLR (slide) is unsupported (this is Mac OS X 10.7 or older) \end{itemize} - This quirk \DIFaddbegin \DIFadd{typically }\DIFaddend requires \texttt{ProvideCustomSlide} \DIFaddbegin \DIFadd{and - }\texttt{\DIFadd{AvoidRuntimeDefrag}} \DIFaddend to be enabled \DIFdelbegin \DIFdel{and - typically also requires enabling }\texttt{\DIFdel{AvoidRuntimeDefrag}} %DIFAUXCMD -\DIFdelend to function + This quirk typically requires \texttt{ProvideCustomSlide} and + \texttt{AvoidRuntimeDefrag} to be enabled to function correctly. Hibernation is not supported when booting with a relocation block, which will only be used if required when the quirk is enabled. @@ -1691,7 +1683,7 @@ \subsection{Quirks Properties}\label{booterpropsquirks} \textbf{Description}: Fix errors in early Mac OS X boot.efi images. Modern secure PE loaders will refuse to load \texttt{boot.efi} images from - \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.4 to \DIFaddbegin \DIFadd{macOS }\DIFaddend 10.12 due to these files containing \texttt{W\^{}X} errors + Mac OS X 10.4 to macOS 10.12 due to these files containing \texttt{W\^{}X} errors (in all versions) and illegal overlapping sections (in 10.4 and 10.5 32-bit versions only). @@ -1720,7 +1712,7 @@ \subsection{Quirks Properties}\label{booterpropsquirks} within their filesystem. \end{itemize} - \emph{Note 3}: This quirk is needed for \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.4 to \DIFaddbegin \DIFadd{macOS }\DIFaddend 10.12 (and + \emph{Note 3}: This quirk is needed for Mac OS X 10.4 to macOS 10.12 (and higher, if Apple secure boot is not enabled), but only when the firmware itself includes a modern, more secure PE COFF image loader. This applies to current builds of OpenDuet, and to OVMF if built from audk source code. @@ -1876,7 +1868,7 @@ \subsection{Quirks Properties}\label{booterpropsquirks} \emph{Note 2}: The need for this quirk is determined by early boot failures. This quirk replaces \texttt{EnableWriteUnprotector} on firmware supporting Memory Attribute Tables (MAT). This quirk is typically unnecessary when using - \texttt{OpenDuetPkg} but may be required to boot \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.6, and earlier, for + \texttt{OpenDuetPkg} but may be required to boot Mac OS X 10.6, and earlier, for reasons that are as yet unclear. \item @@ -2017,9 +2009,8 @@ \subsection{Introduction}\label{devpropsintro} \subsection{Properties}\label{devpropsprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Sets device properties from a map (\texttt{plist\ dict}) @@ -2098,9 +2089,8 @@ \subsection{Introduction}\label{kernelintro} \subsection{Properties}\label{kernelprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ array}\\ \textbf{Failsafe}: Empty\\ @@ -2186,9 +2176,8 @@ \subsection{Properties}\label{kernelprops} \subsection{Add Properties}\label{kernelpropsadd} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2284,9 +2273,8 @@ \subsection{Add Properties}\label{kernelpropsadd} \subsection{Block Properties}\label{kernelpropsblock} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2353,9 +2341,8 @@ \subsection{Block Properties}\label{kernelpropsblock} \subsection{Emulate Properties}\label{kernelpropsemu} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Cpuid1Data}\\ \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ \textbf{Failsafe}: All zero\\ @@ -2461,9 +2448,8 @@ \subsection{Emulate Properties}\label{kernelpropsemu} \subsection{Force Properties}\label{kernelpropsforce} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2534,9 +2520,8 @@ \subsection{Force Properties}\label{kernelpropsforce} \subsection{Patch Properties}\label{kernelpropspatch} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -3036,7 +3021,7 @@ \subsection{Quirks Properties}\label{kernelpropsquirks} \texttt{XhciPortLimit}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ - \textbf{Requirement}: 10.11\DIFaddbegin \DIFadd{+ }\DIFaddend (not required for older)\\ + \textbf{Requirement}: 10.11+ (not required for older)\\ \textbf{Description}: Patch various kexts (AppleUSBXHCI.kext, AppleUSBXHCIPCI.kext, IOUSBHostFamily.kext) to remove USB port count limit of 15 ports. @@ -3055,9 +3040,8 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} to install and troubleshoot such macOS installations. \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{CustomKernel}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -3074,13 +3058,13 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Use \texttt{kernelcache} with different checksums when available. - On \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.6 and earlier, \texttt{kernelcache} filename has a checksum, which essentially + On Mac OS X 10.6 and earlier, \texttt{kernelcache} filename has a checksum, which essentially is \texttt{adler32} from SMBIOS product name and EfiBoot device path. On certain firmware, the EfiBoot device path differs between UEFI and macOS due to ACPI or hardware specifics, rendering \texttt{kernelcache} checksum as always different. This setting allows matching the latest \texttt{kernelcache} with a suitable architecture - when the \texttt{kernelcache} without suffix is unavailable, improving \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.6 boot + when the \texttt{kernelcache} without suffix is unavailable, improving Mac OS X 10.6 boot performance on several platforms. \item @@ -3090,7 +3074,7 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \textbf{Description}: Prefer specified kernel architecture (\texttt{i386}, \texttt{i386-user32}, \texttt{x86\_64}) when available. - On \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.7 and earlier, the XNU kernel can boot with architectures different from + On Mac OS X 10.7 and earlier, the XNU kernel can boot with architectures different from the usual \texttt{x86\_64}. This setting will use the specified architecture to boot macOS when it is supported by the macOS and the configuration: @@ -3104,9 +3088,9 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \tightlist \item On macOS, 64-bit capable processors are assumed to support \texttt{SSSE3}. This is not the case for older 64-bit capable Pentium - processors, which cause some applications to crash on \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6. This behaviour + processors, which cause some applications to crash on Mac OS X~10.6. This behaviour corresponds to the \texttt{-legacy} kernel boot argument. - \item This option is unavailable on \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.4 and 10.5 when running on 64-bit firmware + \item This option is unavailable on Mac OS X~10.4 and 10.5 when running on 64-bit firmware due to an uninitialised 64-bit segment in the XNU kernel, which causes AppleEFIRuntime to incorrectly execute 64-bit code as 16-bit code. \end{itemize} @@ -3143,20 +3127,20 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \texttt{x86\_64}, \texttt{i386}, \texttt{i386-user32}. \end{enumerate} - Unlike \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.7 (where certain board identifiers are treated as \texttt{i386} - only machines), and \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.5 or earlier (where \texttt{x86\_64} is not supported - by the macOS kernel), \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6 is very special. The architecture choice on \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6 + Unlike Mac OS X~10.7 (where certain board identifiers are treated as \texttt{i386} + only machines), and Mac OS X~10.5 or earlier (where \texttt{x86\_64} is not supported + by the macOS kernel), Mac OS X~10.6 is very special. The architecture choice on Mac OS X~10.6 depends on many factors including not only the board identifier, but also the macOS product type (client vs server), macOS point release, and amount of RAM. The detection of all these is complicated and impractical, as several point releases had implementation flaws resulting in a failure to properly execute the server detection in the first place. - For this reason when \texttt{Auto} is set, OpenCore on \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6 falls back + For this reason when \texttt{Auto} is set, OpenCore on Mac OS X~10.6 falls back to the \texttt{x86\_64} architecture when it is supported by the board, as - on \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.7. The 32-bit \texttt{KernelArch} options can still be configured + on Mac OS X~10.7. The 32-bit \texttt{KernelArch} options can still be configured explicitly however. A 64-bit Mac model compatibility matrix corresponding to actual - EfiBoot behaviour on \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.6.8 and 10.7.5 is outlined below. + EfiBoot behaviour on Mac OS X 10.6.8 and 10.7.5 is outlined below. \begin{center} \begin{tabular}{|p{0.9in}|c|c|c|c|} @@ -3386,21 +3370,6 @@ \subsubsection{Boot Algorithm}\label{bootalgorithm} \subsection{Properties}\label{miscprops} \begin{enumerate} -\DIFdelbegin %DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Boot}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ dict}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Apply the boot configuration described in the - }%DIFDELCMD < \hyperref[miscbootprops]{Boot Properties} %%% -\DIFdel{section below. -}\DIFdelend \item \texttt{BlessOverride}\\ @@ -3418,14 +3387,13 @@ \subsection{Properties}\label{miscprops} but unlike predefined bless paths, they have the highest priority. \item - \DIFaddbegin \texttt{\DIFadd{Boot}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dict}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Apply the boot configuration described in the - }\hyperref[miscbootprops]{Boot Properties} \DIFadd{section below. -} + \texttt{Boot}\\ + \textbf{Type}: \texttt{plist\ dict}\\ + \textbf{Description}: Apply the boot configuration described in the + \hyperref[miscbootprops]{Boot Properties} section below. \item - \DIFaddend \texttt{Debug}\\ + \texttt{Debug}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Apply debug configuration described in the \hyperref[miscdebugprops]{Debug Properties} section below. @@ -3829,168 +3797,8 @@ \subsection{Boot Properties}\label{miscbootprops} \hyperref[uefiaudioprops]{\texttt{UEFI Audio Properties}} section for details. \item - \DIFdelbegin \texttt{\DIFdel{PollAppleHotKeys}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Enable }\texttt{\DIFdel{modifier hotkey}} %DIFAUXCMD -\DIFdel{handling in the OpenCore picker. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{In addition to }\texttt{\DIFdel{action hotkeys}}%DIFAUXCMD -\DIFdel{, which are partially described in the }\DIFdelend \texttt{PickerMode}\DIFdelbegin \DIFdel{section and are typically handled by Apple BDS, modifier keys handled by the operating system - bootloader (}\texttt{\DIFdel{boot.efi}}%DIFAUXCMD -\DIFdel{) also exist. These keys allow changing the behaviour of the - operating system by providing different boot modes. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{On certain firmware, using modifier keys may be problematic due to driver incompatibilities. - To workaround this problem, this option allows registering certain hotkeys in a more permissive - manner from within the OpenCore picker. Such extensions include support for tapping on key - combinations before selecting the boot item, and for reliable detection of the }\texttt{\DIFdel{Shift}} %DIFAUXCMD -\DIFdel{key - when selecting the boot item, in order to work around the fact that hotkeys which are continuously - held during boot cannot be reliably detected on many PS/2 keyboards. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This list of known }\texttt{\DIFdel{modifier hotkeys}} %DIFAUXCMD -\DIFdel{includes: - }%DIFDELCMD < \begin{itemize} -\begin{itemize}%DIFAUXCMD -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{CMD+C+MINUS}} %DIFAUXCMD -\DIFdel{--- disable board compatibility checking. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{CMD+K}} %DIFAUXCMD -\DIFdel{--- boot release kernel, similar to }\texttt{\DIFdel{kcsuffix=release}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{CMD+S}} %DIFAUXCMD -\DIFdel{--- single user mode. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{CMD+S+MINUS}} %DIFAUXCMD -\DIFdel{--- disable KASLR slide, requires disabled SIP. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{CMD+V}} %DIFAUXCMD -\DIFdel{--- verbose mode. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Shift+Enter}}%DIFAUXCMD -\DIFdel{, }\texttt{\DIFdel{Shift+Index}} %DIFAUXCMD -\DIFdel{--- safe mode, may be used in - combination with }\texttt{\DIFdel{CTRL+Enter}}%DIFAUXCMD -\DIFdel{, }\texttt{\DIFdel{CTRL+Index}}%DIFAUXCMD -\DIFdel{. - } -\end{itemize}%DIFAUXCMD -%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{ShowPicker}}%DIFAUXCMD -\DIFdelend \\ - \textbf{Type}: \DIFdelbegin \texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Show a simple picker to allow boot entry selection. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{TakeoffDelay}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -\DIFdel{, 32 bit}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Delay in microseconds executed before handling - the OpenCore picker startup and }\texttt{\DIFdel{action hotkeys}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Introducing a delay may give extra time to hold the right }\texttt{\DIFdel{action hotkey}} - %DIFAUXCMD -\DIFdel{sequence to, for instance, boot into recovery mode. On most systems, the appearance - of the initial boot logo is a good indication of the time from which hotkeys can be - held down. Earlier than this, the key press may not be registered. On some platforms, - setting this option to a minimum of }\texttt{\DIFdel{5000-10000}} %DIFAUXCMD -\DIFdel{microseconds is also required - to access }\texttt{\DIFdel{action hotkeys}} %DIFAUXCMD -\DIFdel{due to the nature of the keyboard driver. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{If the boot chime is configured (see audio configuration options) then at the expense - of slower startup, an even longer delay of half to one second (}\texttt{\DIFdel{500000-1000000}}%DIFAUXCMD -\DIFdel{) - may be used to create behaviour similar to a real Mac, where the chime itself can be used - as a signal for when hotkeys can be pressed. The boot chime is inevitably later in the boot - sequence in OpenCore than on Apple hardware, due to the fact that non-native drivers - have to be loaded and connected first. Configuring the boot chime and adding this longer - additional delay can also be useful in systems where fast boot time and/or slow monitor signal - synchronisation may cause the boot logo not to be shown at all on some boots or reboots. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Timeout}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -\DIFdel{, 32 bit}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Timeout in seconds in the OpenCore picker before - automatic booting of the default boot entry. Set to }\texttt{\DIFdel{0}} %DIFAUXCMD -\DIFdel{to disable. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PickerMode}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\DIFdelend \texttt{plist\ string}\\ + \texttt{PickerMode}\\ + \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Builtin}\\ \textbf{Description}: Choose picker used for boot management. @@ -4081,8 +3889,8 @@ \subsection{Boot Properties}\label{miscbootprops} \begin{itemize} \tightlist \item \texttt{Acidanthera\textbackslash GoldenGate} --- macOS 11 styled icon set. - \item \texttt{Acidanthera\textbackslash Syrah} --- \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{OS X }\DIFaddend 10.10 styled icon set. - \item \texttt{Acidanthera\textbackslash Chardonnay} --- \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.4 styled icon set. + \item \texttt{Acidanthera\textbackslash Syrah} --- OS X 10.10 styled icon set. + \item \texttt{Acidanthera\textbackslash Chardonnay} --- Mac OS X 10.4 styled icon set. \end{itemize} For convenience purposes there also are predefined aliases: @@ -4094,81 +3902,73 @@ \subsection{Boot Properties}\label{miscbootprops} \item \texttt{Default} --- \texttt{Acidanthera\textbackslash GoldenGate}. \end{itemize} -\DIFaddbegin \item - \texttt{\DIFadd{PollAppleHotKeys}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Enable }\texttt{\DIFadd{modifier hotkey}} \DIFadd{handling in the OpenCore picker. -} +\item + \texttt{PollAppleHotKeys}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Enable \texttt{modifier hotkey} handling in the OpenCore picker. - \DIFadd{In addition to }\texttt{\DIFadd{action hotkeys}}\DIFadd{, which are partially described in the }\texttt{\DIFadd{PickerMode}} - \DIFadd{section and are typically handled by Apple BDS, modifier keys handled by the operating system - bootloader (}\texttt{\DIFadd{boot.efi}}\DIFadd{) also exist. These keys allow changing the behaviour of the + In addition to \texttt{action hotkeys}, which are partially described in the \texttt{PickerMode} + section and are typically handled by Apple BDS, modifier keys handled by the operating system + bootloader (\texttt{boot.efi}) also exist. These keys allow changing the behaviour of the operating system by providing different boot modes. -} - \DIFadd{On certain firmware, using modifier keys may be problematic due to driver incompatibilities. + On certain firmware, using modifier keys may be problematic due to driver incompatibilities. To workaround this problem, this option allows registering certain hotkeys in a more permissive manner from within the OpenCore picker. Such extensions include support for tapping on key - combinations before selecting the boot item, and for reliable detection of the }\texttt{\DIFadd{Shift}} \DIFadd{key + combinations before selecting the boot item, and for reliable detection of the \texttt{Shift} key when selecting the boot item, in order to work around the fact that hotkeys which are continuously held during boot cannot be reliably detected on many PS/2 keyboards. -} - \DIFadd{This list of known }\texttt{\DIFadd{modifier hotkeys}} \DIFadd{includes: - }\begin{itemize} + This list of known \texttt{modifier hotkeys} includes: + \begin{itemize} \tightlist - \item \texttt{\DIFadd{CMD+C+MINUS}} \DIFadd{--- disable board compatibility checking. - }\item \texttt{\DIFadd{CMD+K}} \DIFadd{--- boot release kernel, similar to }\texttt{\DIFadd{kcsuffix=release}}\DIFadd{. - }\item \texttt{\DIFadd{CMD+S}} \DIFadd{--- single user mode. - }\item \texttt{\DIFadd{CMD+S+MINUS}} \DIFadd{--- disable KASLR slide, requires disabled SIP. - }\item \texttt{\DIFadd{CMD+V}} \DIFadd{--- verbose mode. - }\item \texttt{\DIFadd{Shift+Enter}}\DIFadd{, }\texttt{\DIFadd{Shift+Index}} \DIFadd{--- safe mode, may be used in - combination with }\texttt{\DIFadd{CTRL+Enter}}\DIFadd{, }\texttt{\DIFadd{CTRL+Index}}\DIFadd{. - }\end{itemize} - -\item - \texttt{\DIFadd{ShowPicker}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Show a simple picker to allow boot entry selection. -} + \item \texttt{CMD+C+MINUS} --- disable board compatibility checking. + \item \texttt{CMD+K} --- boot release kernel, similar to \texttt{kcsuffix=release}. + \item \texttt{CMD+S} --- single user mode. + \item \texttt{CMD+S+MINUS} --- disable KASLR slide, requires disabled SIP. + \item \texttt{CMD+V} --- verbose mode. + \item \texttt{Shift+Enter}, \texttt{Shift+Index} --- safe mode, may be used in + combination with \texttt{CTRL+Enter}, \texttt{CTRL+Index}. + \end{itemize} \item - \texttt{\DIFadd{TakeoffDelay}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ integer}}\DIFadd{, 32 bit}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{0}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Delay in microseconds executed before handling - the OpenCore picker startup and }\texttt{\DIFadd{action hotkeys}}\DIFadd{. -} + \texttt{ShowPicker}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Show a simple picker to allow boot entry selection. - \DIFadd{Introducing a delay may give extra time to hold the right }\texttt{\DIFadd{action hotkey}} - \DIFadd{sequence to, for instance, boot into recovery mode. On most systems, the appearance +\item + \texttt{TakeoffDelay}\\ + \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Delay in microseconds executed before handling + the OpenCore picker startup and \texttt{action hotkeys}. + + Introducing a delay may give extra time to hold the right \texttt{action hotkey} + sequence to, for instance, boot into recovery mode. On most systems, the appearance of the initial boot logo is a good indication of the time from which hotkeys can be held down. Earlier than this, the key press may not be registered. On some platforms, - setting this option to a minimum of }\texttt{\DIFadd{5000-10000}} \DIFadd{microseconds is also required - to access }\texttt{\DIFadd{action hotkeys}} \DIFadd{due to the nature of the keyboard driver. -} + setting this option to a minimum of \texttt{5000-10000} microseconds is also required + to access \texttt{action hotkeys} due to the nature of the keyboard driver. - \DIFadd{If the boot chime is configured (see audio configuration options) then at the expense - of slower startup, an even longer delay of half to one second (}\texttt{\DIFadd{500000-1000000}}\DIFadd{) + If the boot chime is configured (see audio configuration options) then at the expense + of slower startup, an even longer delay of half to one second (\texttt{500000-1000000}) may be used to create behaviour similar to a real Mac, where the chime itself can be used as a signal for when hotkeys can be pressed. The boot chime is inevitably later in the boot sequence in OpenCore than on Apple hardware, due to the fact that non-native drivers have to be loaded and connected first. Configuring the boot chime and adding this longer additional delay can also be useful in systems where fast boot time and/or slow monitor signal synchronisation may cause the boot logo not to be shown at all on some boots or reboots. -} \item - \texttt{\DIFadd{Timeout}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ integer}}\DIFadd{, 32 bit}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{0}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Timeout in seconds in the OpenCore picker before - automatic booting of the default boot entry. Set to }\texttt{\DIFadd{0}} \DIFadd{to disable. -} + \texttt{Timeout}\\ + \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Timeout in seconds in the OpenCore picker before + automatic booting of the default boot entry. Set to \texttt{0} to disable. -\DIFaddend \end{enumerate} +\end{enumerate} \subsection{Debug Properties}\label{miscdebugprops} @@ -4436,126 +4236,111 @@ \subsection{Debug Properties}\label{miscdebugprops} \end{enumerate} -\DIFaddbegin \subsection{\DIFadd{Entry Properties}}\label{miscentryprops} +\subsection{Entry Properties}\label{miscentryprops} \begin{enumerate} \item - \texttt{\DIFadd{Arguments}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Arbitrary ASCII string used as boot arguments (load options) + \texttt{Arguments}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Arbitrary ASCII string used as boot arguments (load options) of the specified entry. -} \item - \texttt{\DIFadd{Auxiliary}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Set to }\texttt{\DIFadd{true}} \DIFadd{to hide this entry - when }\texttt{\DIFadd{HideAuxiliary}} \DIFadd{is also set to }\texttt{\DIFadd{true}}\DIFadd{. - Press the }\texttt{\DIFadd{Spacebar}} \DIFadd{key to enter ``Extended Mode'' and display the entry when hidden. -} + \texttt{Auxiliary}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Set to \texttt{true} to hide this entry + when \texttt{HideAuxiliary} is also set to \texttt{true}. + Press the \texttt{Spacebar} key to enter ``Extended Mode'' and display the entry when hidden. \item - \texttt{\DIFadd{Comment}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Arbitrary ASCII string used to provide a human readable + \texttt{Comment}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Arbitrary ASCII string used to provide a human readable reference for the entry. Whether this value is used is implementation defined. -} \item - \texttt{\DIFadd{Enabled}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Set to }\texttt{\DIFadd{true}} \DIFadd{activate this entry. -} + \texttt{Enabled}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Set to \texttt{true} activate this entry. \item - \texttt{\DIFadd{Flavour}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{Auto}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Specify the content flavour for this entry. - See }\hyperref[oc-attr-use-flavour-icon]{\texttt{OC\_ATTR\_USE\_FLAVOUR\_ICON}} \DIFadd{flag for documentation. -} + \texttt{Flavour}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Auto}\\ + \textbf{Description}: Specify the content flavour for this entry. + See \hyperref[oc-attr-use-flavour-icon]{\texttt{OC\_ATTR\_USE\_FLAVOUR\_ICON}} flag for documentation. \item - \texttt{\DIFadd{FullNvramAccess}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Disable }\texttt{\DIFadd{OpenRuntime}} \DIFadd{NVRAM protection during usage of a tool. -} + \texttt{FullNvramAccess}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Disable \texttt{OpenRuntime} NVRAM protection during usage of a tool. - \DIFadd{This disables all of the NVRAM protections provided by - }\texttt{\DIFadd{OpenRuntime.efi}}\DIFadd{, during the time a tool is in use. It should + This disables all of the NVRAM protections provided by + \texttt{OpenRuntime.efi}, during the time a tool is in use. It should normally be avoided, but may be required for instance if a tool needs to access NVRAM directly without the redirections put in place by - }\texttt{\DIFadd{RequestBootVarRouting}}\DIFadd{. -} + \texttt{RequestBootVarRouting}. - \emph{\DIFadd{Note}}\DIFadd{: This option is only valid for }\texttt{\DIFadd{Tools}} \DIFadd{and cannot be - specified for }\texttt{\DIFadd{Entries}} \DIFadd{(is always }\texttt{\DIFadd{false}}\DIFadd{). -} + \emph{Note}: This option is only valid for \texttt{Tools} and cannot be + specified for \texttt{Entries} (is always \texttt{false}). \item - \texttt{\DIFadd{Name}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Human readable entry name displayed in the OpenCore picker. -} + \texttt{Name}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Human readable entry name displayed in the OpenCore picker. \item - \texttt{\DIFadd{Path}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Entry location depending on entry type. -} + \texttt{Path}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Entry location depending on entry type. \begin{itemize} \tightlist - \item \texttt{\DIFadd{Entries}} \DIFadd{specify external boot options, and therefore take device - paths in the }\texttt{\DIFadd{Path}} \DIFadd{key. Care should be exercised as these values are not checked. - Example: }\texttt{\DIFadd{PciRoot(0x0)/Pci(0x1,0x1)/.../\textbackslash EFI\textbackslash COOL.EFI}} - \item \texttt{\DIFadd{Tools}} \DIFadd{specify internal boot options, which are part of the bootloader - vault, and therefore take file paths relative to the }\texttt{\DIFadd{OC/Tools}} \DIFadd{directory. - Example: }\texttt{\DIFadd{OpenShell.efi}}\DIFadd{. - }\end{itemize} - -\item - \texttt{\DIFadd{RealPath}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Pass full path to the tool when launching. -} + \item \texttt{Entries} specify external boot options, and therefore take device + paths in the \texttt{Path} key. Care should be exercised as these values are not checked. + Example: \texttt{PciRoot(0x0)/Pci(0x1,0x1)/.../\textbackslash EFI\textbackslash COOL.EFI} + \item \texttt{Tools} specify internal boot options, which are part of the bootloader + vault, and therefore take file paths relative to the \texttt{OC/Tools} directory. + Example: \texttt{OpenShell.efi}. + \end{itemize} - \DIFadd{This should typically be disabled as passing the tool directory may be unsafe with +\item + \texttt{RealPath}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Pass full path to the tool when launching. + + This should typically be disabled as passing the tool directory may be unsafe with tools that accidentally attempt to access files without checking their integrity. Reasons to enable this property may include cases where tools cannot work without external files or may need them for enhanced functionality such as - }\texttt{\DIFadd{memtest86}} \DIFadd{(for logging and configuration), or }\texttt{\DIFadd{Shell}} \DIFadd{(for + \texttt{memtest86} (for logging and configuration), or \texttt{Shell} (for automatic script execution). -} - \emph{\DIFadd{Note}}\DIFadd{: This option is only valid for }\texttt{\DIFadd{Tools}} \DIFadd{and cannot be - specified for }\texttt{\DIFadd{Entries}} \DIFadd{(is always }\texttt{\DIFadd{true}}\DIFadd{). -} + \emph{Note}: This option is only valid for \texttt{Tools} and cannot be + specified for \texttt{Entries} (is always \texttt{true}). \item - \texttt{\DIFadd{TextMode}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Run the entry in text mode instead of graphics mode. -} + \texttt{TextMode}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Run the entry in text mode instead of graphics mode. - \DIFadd{This setting may be beneficial for some older tools that require text output + This setting may be beneficial for some older tools that require text output as all the tools are launched in graphics mode by default. Refer to the - }\hyperref[uefioutputprops]{Output Properties} \DIFadd{section below for information on text modes. -} + \hyperref[uefioutputprops]{Output Properties} section below for information on text modes. \end{enumerate} -\DIFaddend \subsection{Security Properties}\label{miscsecurityprops} +\subsection{Security Properties}\label{miscsecurityprops} \begin{enumerate} @@ -4766,186 +4551,7 @@ \subsection{Debug Properties}\label{miscdebugprops} \textbf{Description}: Password salt used when \texttt{EnablePassword} is set. \item - \DIFdelbegin %DIFDELCMD < \label{securevaulting} -%DIFDELCMD < %%% -\texttt{\DIFdel{Vault}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{Secure}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Enables the OpenCore vaulting mechanism. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Valid values: -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -\begin{itemize}%DIFAUXCMD -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Optional}} %DIFAUXCMD -\DIFdel{--- require nothing, no vault is enforced, insecure. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Basic}} %DIFAUXCMD -\DIFdel{--- require }\texttt{\DIFdel{vault.plist}} %DIFAUXCMD -\DIFdel{file present - in }\texttt{\DIFdel{OC}} %DIFAUXCMD -\DIFdel{directory. This provides basic filesystem integrity - verification and may protect from unintentional filesystem corruption. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Secure}} %DIFAUXCMD -\DIFdel{--- require }\texttt{\DIFdel{vault.sig}} %DIFAUXCMD -\DIFdel{signature file for - }\texttt{\DIFdel{vault.plist}} %DIFAUXCMD -\DIFdel{in }\texttt{\DIFdel{OC}} %DIFAUXCMD -\DIFdel{directory. This includes }\texttt{\DIFdel{Basic}} - %DIFAUXCMD -\DIFdel{integrity checking but also attempts to build a trusted bootchain. - } -\end{itemize}%DIFAUXCMD -%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The }\texttt{\DIFdel{vault.plist}} %DIFAUXCMD -\DIFdel{file should contain SHA-256 hashes for all files used by OpenCore. - The presence of this file is highly recommended to ensure that unintentional file modifications - (including filesystem corruption) do not go unnoticed. To create this file automatically, use the - }\href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\texttt{\DIFdel{create\_vault.sh}}%DIFAUXCMD -} - %DIFAUXCMD -\DIFdel{script. Notwithstanding the underlying file system, the path names and cases between }\texttt{\DIFdel{config.plist}} - %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{vault.plist}} %DIFAUXCMD -\DIFdel{must match. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The }\texttt{\DIFdel{vault.sig}} %DIFAUXCMD -\DIFdel{file should contain a raw 256 byte RSA-2048 signature from a SHA-256 - hash of }\texttt{\DIFdel{vault.plist}}%DIFAUXCMD -\DIFdel{. The signature is verified against the public key embedded - into }\texttt{\DIFdel{OpenCore.efi}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{To embed the public key, either one of the following should be performed: -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -\begin{itemize}%DIFAUXCMD -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Provide public key during the }\texttt{\DIFdel{OpenCore.efi}} %DIFAUXCMD -\DIFdel{compilation in - }\href{https://github.com/acidanthera/OpenCorePkg/blob/master/Platform/OpenCore/OpenCoreVault.c}{\texttt{\DIFdel{OpenCoreVault.c}}%DIFAUXCMD -} %DIFAUXCMD -\DIFdel{file. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Binary patch }\texttt{\DIFdel{OpenCore.efi}} %DIFAUXCMD -\DIFdel{replacing zeroes with the public key - between }\texttt{\DIFdel{=BEGIN OC VAULT=}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{==END OC VAULT==}} %DIFAUXCMD -\DIFdel{ASCII markers. - } -\end{itemize}%DIFAUXCMD -%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The RSA public key 520 byte format description can be found in Chromium OS documentation. - To convert the public key from X.509 certificate or from PEM file use - }\href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\DIFdel{RsaTool}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The complete set of commands to: -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -\begin{itemize}%DIFAUXCMD -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Create }\texttt{\DIFdel{vault.plist}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Create a new RSA key (always do this to avoid loading old configuration). - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Embed RSA key into }\texttt{\DIFdel{OpenCore.efi}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Create }\texttt{\DIFdel{vault.sig}}%DIFAUXCMD -\DIFdel{. - } -\end{itemize}%DIFAUXCMD -%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Can look as follows: -}%DIFDELCMD < \begin{lstlisting}[label=createvault, style=ocbash] -%DIFDELCMD < %%% -%DIF < DIFVRB cd /Volumes/EFI/EFI/OC -%DIF < DIFVRB /path/to/create_vault.sh . -%DIF < DIFVRB /path/to/RsaTool -sign vault.plist vault.sig vault.pub -%DIF < DIFVRB off=$(($(strings -a -t d OpenCore.efi | grep "=BEGIN OC VAULT=" | cut -f1 -d' ')+16)) -%DIF < DIFVRB dd of=OpenCore.efi if=vault.pub bs=1 seek=$off count=528 conv=notrunc -%DIF < DIFVRB rm vault.pub -%DIFDELCMD < \end{lstlisting} -%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note 1}}%DIFAUXCMD -\DIFdel{: While it may appear obvious, an external - method is required to verify }\texttt{\DIFdel{OpenCore.efi}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{BOOTx64.efi}} %DIFAUXCMD -\DIFdel{for - secure boot path. For this, it is recommended to enable UEFI SecureBoot - using a custom certificate and to sign }\texttt{\DIFdel{OpenCore.efi}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{BOOTx64.efi}} - %DIFAUXCMD -\DIFdel{with a custom key. More details on customising secure boot on modern firmware - can be found in the }\href{https://habr.com/post/273497/}{\DIFdel{Taming UEFI SecureBoot}} - %DIFAUXCMD -\DIFdel{paper (in Russian). -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note 2}}%DIFAUXCMD -\DIFdel{: Regardless of this option, }\texttt{\DIFdel{vault.plist}} %DIFAUXCMD -\DIFdel{is always used when - present, and both }\texttt{\DIFdel{vault.plist}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{vault.sig}} %DIFAUXCMD -\DIFdel{are used and required - when a public key is embedded into }\texttt{\DIFdel{OpenCore.efi}}%DIFAUXCMD -\DIFdel{, and errors will abort the - boot process in either case. Setting this option allows OpenCore to warn the user if - the configuration is not as required to achieve an expected higher security level. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{ScanPolicy}\\ + \texttt{ScanPolicy}\\ \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ \textbf{Failsafe}: \texttt{0x10F0103}\\ \textbf{Description}: Define operating system detection policy. @@ -5129,104 +4735,92 @@ \subsection{Debug Properties}\label{miscdebugprops} For more details on how to configure Apple Secure Boot with UEFI Secure Boot, refer to the \hyperref[uefisecureboot]{UEFI Secure Boot} section. -\DIFaddbegin \item \label{securevaulting} - \texttt{\DIFadd{Vault}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{Secure}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Enables the OpenCore vaulting mechanism. -} +\item \label{securevaulting} + \texttt{Vault}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Secure}\\ + \textbf{Description}: Enables the OpenCore vaulting mechanism. - \DIFadd{Valid values: -} + Valid values: \begin{itemize} \tightlist - \item \texttt{\DIFadd{Optional}} \DIFadd{--- require nothing, no vault is enforced, insecure. - }\item \texttt{\DIFadd{Basic}} \DIFadd{--- require }\texttt{\DIFadd{vault.plist}} \DIFadd{file present - in }\texttt{\DIFadd{OC}} \DIFadd{directory. This provides basic filesystem integrity + \item \texttt{Optional} --- require nothing, no vault is enforced, insecure. + \item \texttt{Basic} --- require \texttt{vault.plist} file present + in \texttt{OC} directory. This provides basic filesystem integrity verification and may protect from unintentional filesystem corruption. - }\item \texttt{\DIFadd{Secure}} \DIFadd{--- require }\texttt{\DIFadd{vault.sig}} \DIFadd{signature file for - }\texttt{\DIFadd{vault.plist}} \DIFadd{in }\texttt{\DIFadd{OC}} \DIFadd{directory. This includes }\texttt{\DIFadd{Basic}} - \DIFadd{integrity checking but also attempts to build a trusted bootchain. - }\end{itemize} + \item \texttt{Secure} --- require \texttt{vault.sig} signature file for + \texttt{vault.plist} in \texttt{OC} directory. This includes \texttt{Basic} + integrity checking but also attempts to build a trusted bootchain. + \end{itemize} - \DIFadd{The }\texttt{\DIFadd{vault.plist}} \DIFadd{file should contain SHA-256 hashes for all files used by OpenCore. + The \texttt{vault.plist} file should contain SHA-256 hashes for all files used by OpenCore. The presence of this file is highly recommended to ensure that unintentional file modifications (including filesystem corruption) do not go unnoticed. To create this file automatically, use the - }\href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\texttt{\DIFadd{create\_vault.sh}}} - \DIFadd{script. Notwithstanding the underlying file system, the path names and cases between }\texttt{\DIFadd{config.plist}} - \DIFadd{and }\texttt{\DIFadd{vault.plist}} \DIFadd{must match. -} + \href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\texttt{create\_vault.sh}} + script. Notwithstanding the underlying file system, the path names and cases between \texttt{config.plist} + and \texttt{vault.plist} must match. - \DIFadd{The }\texttt{\DIFadd{vault.sig}} \DIFadd{file should contain a raw 256 byte RSA-2048 signature from a SHA-256 - hash of }\texttt{\DIFadd{vault.plist}}\DIFadd{. The signature is verified against the public key embedded - into }\texttt{\DIFadd{OpenCore.efi}}\DIFadd{. -} + The \texttt{vault.sig} file should contain a raw 256 byte RSA-2048 signature from a SHA-256 + hash of \texttt{vault.plist}. The signature is verified against the public key embedded + into \texttt{OpenCore.efi}. - \DIFadd{To embed the public key, either one of the following should be performed: -} + To embed the public key, either one of the following should be performed: \begin{itemize} \tightlist - \item \DIFadd{Provide public key during the }\texttt{\DIFadd{OpenCore.efi}} \DIFadd{compilation in - }\href{https://github.com/acidanthera/OpenCorePkg/blob/master/Platform/OpenCore/OpenCoreVault.c}{\texttt{\DIFadd{OpenCoreVault.c}}} \DIFadd{file. - }\item \DIFadd{Binary patch }\texttt{\DIFadd{OpenCore.efi}} \DIFadd{replacing zeroes with the public key - between }\texttt{\DIFadd{=BEGIN OC VAULT=}} \DIFadd{and }\texttt{\DIFadd{==END OC VAULT==}} \DIFadd{ASCII markers. - }\end{itemize} + \item Provide public key during the \texttt{OpenCore.efi} compilation in + \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Platform/OpenCore/OpenCoreVault.c}{\texttt{OpenCoreVault.c}} file. + \item Binary patch \texttt{OpenCore.efi} replacing zeroes with the public key + between \texttt{=BEGIN OC VAULT=} and \texttt{==END OC VAULT==} ASCII markers. + \end{itemize} - \DIFadd{The RSA public key 520 byte format description can be found in Chromium OS documentation. + The RSA public key 520 byte format description can be found in Chromium OS documentation. To convert the public key from X.509 certificate or from PEM file use - }\href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\DIFadd{RsaTool}}\DIFadd{. -} + \href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{RsaTool}. - \DIFadd{The complete set of commands to: -} + The complete set of commands to: \begin{itemize} \tightlist - \item \DIFadd{Create }\texttt{\DIFadd{vault.plist}}\DIFadd{. - }\item \DIFadd{Create a new RSA key (always do this to avoid loading old configuration). - }\item \DIFadd{Embed RSA key into }\texttt{\DIFadd{OpenCore.efi}}\DIFadd{. - }\item \DIFadd{Create }\texttt{\DIFadd{vault.sig}}\DIFadd{. - }\end{itemize} - - \DIFadd{Can look as follows: -}\DIFmodbegin -\begin{lstlisting}[label=createvault, style=ocbash,alsolanguage=DIFcode] -%DIF > cd /Volumes/EFI/EFI/OC -%DIF > /path/to/create_vault.sh . -%DIF > /path/to/RsaTool -sign vault.plist vault.sig vault.pub -%DIF > off=$(($(strings -a -t d OpenCore.efi | grep "=BEGIN OC VAULT=" | cut -f1 -d' ')+16)) -%DIF > dd of=OpenCore.efi if=vault.pub bs=1 seek=$off count=528 conv=notrunc -%DIF > rm vault.pub + \item Create \texttt{vault.plist}. + \item Create a new RSA key (always do this to avoid loading old configuration). + \item Embed RSA key into \texttt{OpenCore.efi}. + \item Create \texttt{vault.sig}. + \end{itemize} + + Can look as follows: +\begin{lstlisting}[label=createvault, style=ocbash] +cd /Volumes/EFI/EFI/OC +/path/to/create_vault.sh . +/path/to/RsaTool -sign vault.plist vault.sig vault.pub +off=$(($(strings -a -t d OpenCore.efi | grep "=BEGIN OC VAULT=" | cut -f1 -d' ')+16)) +dd of=OpenCore.efi if=vault.pub bs=1 seek=$off count=528 conv=notrunc +rm vault.pub \end{lstlisting} -\DIFmodend - \emph{\DIFadd{Note 1}}\DIFadd{: While it may appear obvious, an external - method is required to verify }\texttt{\DIFadd{OpenCore.efi}} \DIFadd{and }\texttt{\DIFadd{BOOTx64.efi}} \DIFadd{for + \emph{Note 1}: While it may appear obvious, an external + method is required to verify \texttt{OpenCore.efi} and \texttt{BOOTx64.efi} for secure boot path. For this, it is recommended to enable UEFI SecureBoot - using a custom certificate and to sign }\texttt{\DIFadd{OpenCore.efi}} \DIFadd{and }\texttt{\DIFadd{BOOTx64.efi}} - \DIFadd{with a custom key. More details on customising secure boot on modern firmware - can be found in the }\href{https://habr.com/post/273497/}{\DIFadd{Taming UEFI SecureBoot}} - \DIFadd{paper (in Russian). -} - - \emph{\DIFadd{Note 2}}\DIFadd{: Regardless of this option, }\texttt{\DIFadd{vault.plist}} \DIFadd{is always used when - present, and both }\texttt{\DIFadd{vault.plist}} \DIFadd{and }\texttt{\DIFadd{vault.sig}} \DIFadd{are used and required - when a public key is embedded into }\texttt{\DIFadd{OpenCore.efi}}\DIFadd{, and errors will abort the + using a custom certificate and to sign \texttt{OpenCore.efi} and \texttt{BOOTx64.efi} + with a custom key. More details on customising secure boot on modern firmware + can be found in the \href{https://habr.com/post/273497/}{Taming UEFI SecureBoot} + paper (in Russian). + + \emph{Note 2}: Regardless of this option, \texttt{vault.plist} is always used when + present, and both \texttt{vault.plist} and \texttt{vault.sig} are used and required + when a public key is embedded into \texttt{OpenCore.efi}, and errors will abort the boot process in either case. Setting this option allows OpenCore to warn the user if the configuration is not as required to achieve an expected higher security level. -} -\DIFaddend \end{enumerate} +\end{enumerate} \subsection{Serial Properties}\label{miscserialprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Custom}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Update serial port properties in \texttt{BaseSerialPortLib16550}. @@ -5260,9 +4854,8 @@ \subsection{Serial Properties}\label{miscserialprops} \subsubsection{Serial Custom Properties}\label{miscserialcustprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{BaudRate}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{115200}\\ @@ -5379,275 +4972,7 @@ \subsubsection{Serial Custom Properties}\label{miscserialcustprops} \end{enumerate} -\DIFdelbegin \subsection{\DIFdel{Entry Properties}}%DIFAUXCMD -\addtocounter{subsection}{-1}%DIFAUXCMD -%DIFDELCMD < \label{miscentryprops} -%DIFDELCMD < - -%DIFDELCMD < \begin{enumerate} -\begin{enumerate}%DIFAUXCMD -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Arguments}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Arbitrary ASCII string used as boot arguments (load options) - of the specified entry. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Auxiliary}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Set to }\texttt{\DIFdel{true}} %DIFAUXCMD -\DIFdel{to hide this entry - when }\texttt{\DIFdel{HideAuxiliary}} %DIFAUXCMD -\DIFdel{is also set to }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{. - Press the }\texttt{\DIFdel{Spacebar}} %DIFAUXCMD -\DIFdel{key to enter ``Extended Mode'' and display the entry when hidden. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Comment}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Arbitrary ASCII string used to provide a human readable - reference for the entry. Whether this value is used is implementation defined. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Enabled}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Set to }\texttt{\DIFdel{true}} %DIFAUXCMD -\DIFdel{activate this entry. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Flavour}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{Auto}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Specify the content flavour for this entry. - See }%DIFDELCMD < \hyperref[oc-attr-use-flavour-icon]{\texttt{OC\_ATTR\_USE\_FLAVOUR\_ICON}} %%% -\DIFdel{flag for documentation. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{FullNvramAccess}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Disable }\texttt{\DIFdel{OpenRuntime}} %DIFAUXCMD -\DIFdel{NVRAM protection during usage of a tool. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This disables all of the NVRAM protections provided by - }\texttt{\DIFdel{OpenRuntime.efi}}%DIFAUXCMD -\DIFdel{, during the time a tool is in use. It should - normally be avoided, but may be required for instance if a tool needs - to access NVRAM directly without the redirections put in place by - }\texttt{\DIFdel{RequestBootVarRouting}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This option is only valid for }\texttt{\DIFdel{Tools}} %DIFAUXCMD -\DIFdel{and cannot be - specified for }\texttt{\DIFdel{Entries}} %DIFAUXCMD -\DIFdel{(is always }\texttt{\DIFdel{false}}%DIFAUXCMD -\DIFdel{). -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Name}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Human readable entry name displayed in the OpenCore picker. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Path}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Entry location depending on entry type. -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Entries}} %DIFAUXCMD -\DIFdel{specify external boot options, and therefore take device - paths in the }\texttt{\DIFdel{Path}} %DIFAUXCMD -\DIFdel{key. Care should be exercised as these values are not checked. - Example: }\texttt{\DIFdel{PciRoot(0x0)/Pci(0x1,0x1)/.../\textbackslash EFI\textbackslash COOL.EFI}} - %DIFAUXCMD -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Tools}} %DIFAUXCMD -\DIFdel{specify internal boot options, which are part of the bootloader - vault, and therefore take file paths relative to the }\texttt{\DIFdel{OC/Tools}} %DIFAUXCMD -\DIFdel{directory. - Example: }\texttt{\DIFdel{OpenShell.efi}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{RealPath}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Pass full path to the tool when launching. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This should typically be disabled as passing the tool directory may be unsafe with - tools that accidentally attempt to access files without checking their integrity. - Reasons to enable this property may include cases where tools cannot work - without external files or may need them for enhanced functionality such as - }\texttt{\DIFdel{memtest86}} %DIFAUXCMD -\DIFdel{(for logging and configuration), or }\texttt{\DIFdel{Shell}} %DIFAUXCMD -\DIFdel{(for - automatic script execution). -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This option is only valid for }\texttt{\DIFdel{Tools}} %DIFAUXCMD -\DIFdel{and cannot be - specified for }\texttt{\DIFdel{Entries}} %DIFAUXCMD -\DIFdel{(is always }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{). -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{TextMode}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Run the entry in text mode instead of graphics mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This setting may be beneficial for some older tools that require text output - as all the tools are launched in graphics mode by default. Refer to the - }%DIFDELCMD < \hyperref[uefioutputprops]{Output Properties} %%% -\DIFdel{section below for information on text modes. -}%DIFDELCMD < - - -\end{enumerate}%DIFAUXCMD -%DIFDELCMD < \end{enumerate} -%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \section{NVRAM}\label{nvram} +\section{NVRAM}\label{nvram} \subsection{Introduction}\label{nvramintro} @@ -5704,9 +5029,8 @@ \subsection{Introduction}\label{nvramintro} \subsection{Properties}\label{nvramprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Sets NVRAM variables from a map (\texttt{plist\ dict}) @@ -6178,9 +5502,8 @@ \section{PlatformInfo}\label{platforminfo} \subsection{Properties}\label{platforminfoprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{Automatic}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -6213,49 +5536,43 @@ \subsection{Properties}\label{platforminfoprops} is set to \texttt{true}. \item - \DIFaddbegin \texttt{\DIFadd{DataHub}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dictionary}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Update Data Hub fields in non-}\texttt{\DIFadd{Automatic}} \DIFadd{mode. -} + \texttt{DataHub}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update Data Hub fields in non-\texttt{Automatic} mode. - \emph{\DIFadd{Note}}\DIFadd{: This section is ignored and may be removed when - }\texttt{\DIFadd{Automatic}} \DIFadd{is }\texttt{\DIFadd{true}}\DIFadd{. -} + \emph{Note}: This section is ignored and may be removed when + \texttt{Automatic} is \texttt{true}. \item - \texttt{\DIFadd{Generic}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dictionary}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Update all fields in }\texttt{\DIFadd{Automatic}} \DIFadd{mode. -} + \texttt{Generic}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update all fields in \texttt{Automatic} mode. - \emph{\DIFadd{Note}}\DIFadd{: This section is ignored but may not be removed when - }\texttt{\DIFadd{Automatic}} \DIFadd{is }\texttt{\DIFadd{false}}\DIFadd{. -}\item - \texttt{\DIFadd{Memory}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dictionary}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Define custom memory configuration. -} + \emph{Note}: This section is ignored but may not be removed when + \texttt{Automatic} is \texttt{false}. +\item + \texttt{Memory}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Define custom memory configuration. - \emph{\DIFadd{Note}}\DIFadd{: This section is ignored and may be removed when - }\texttt{\DIFadd{CustomMemory}} \DIFadd{is }\texttt{\DIFadd{false}}\DIFadd{. -}\item - \texttt{\DIFadd{PlatformNVRAM}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dictionary}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Update platform NVRAM fields in non-}\texttt{\DIFadd{Automatic}} \DIFadd{mode. -} + \emph{Note}: This section is ignored and may be removed when + \texttt{CustomMemory} is \texttt{false}. +\item + \texttt{PlatformNVRAM}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update platform NVRAM fields in non-\texttt{Automatic} mode. - \emph{\DIFadd{Note}}\DIFadd{: This section is ignored and may be removed when - }\texttt{\DIFadd{Automatic}} \DIFadd{is }\texttt{\DIFadd{true}}\DIFadd{. -}\item - \texttt{\DIFadd{SMBIOS}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dictionary}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Update SMBIOS fields in non-}\texttt{\DIFadd{Automatic}} \DIFadd{mode. -} + \emph{Note}: This section is ignored and may be removed when + \texttt{Automatic} is \texttt{true}. +\item + \texttt{SMBIOS}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update SMBIOS fields in non-\texttt{Automatic} mode. - \emph{\DIFadd{Note}}\DIFadd{: This section is ignored and may be removed when - }\texttt{\DIFadd{Automatic}} \DIFadd{is }\texttt{\DIFadd{true}}\DIFadd{. -}\item - \DIFaddend \texttt{UpdateDataHub}\\ + \emph{Note}: This section is ignored and may be removed when + \texttt{Automatic} is \texttt{true}. +\item + \texttt{UpdateDataHub}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Update Data Hub fields. These fields are read @@ -6367,395 +5684,71 @@ \subsection{Properties}\label{platforminfoprops} as they are not standardised and are added by Apple. Unlike SMBIOS, they are always stored in the \texttt{Big Endian} format. -\DIFdelbegin %DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Generic}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ dictionary}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Update all fields in }\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This section is ignored but may not be removed when - }\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{is }\texttt{\DIFdel{false}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{DataHub}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ dictionary}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Update Data Hub fields in non-}\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This section is ignored and may be removed when - }\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{is }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Memory}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ dictionary}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Define custom memory configuration. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This section is ignored and may be removed when - }\texttt{\DIFdel{CustomMemory}} %DIFAUXCMD -\DIFdel{is }\texttt{\DIFdel{false}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PlatformNVRAM}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ dictionary}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Update platform NVRAM fields in non-}\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This section is ignored and may be removed when - }\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{is }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{SMBIOS}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ dictionary}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Update SMBIOS fields in non-}\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This section is ignored and may be removed when - }\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{is }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{. -}\DIFdelend \end{enumerate} - -\subsection{\DIFdelbegin \DIFdel{Generic }\DIFdelend \DIFaddbegin \DIFadd{DataHub }\DIFaddend Properties}\DIFdelbegin %DIFDELCMD < \label{platforminfogeneric} -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \label{platforminfodatahub} -\DIFaddend +\end{enumerate} + +\subsection{DataHub Properties}\label{platforminfodatahub} \begin{enumerate} -\DIFaddbegin - -\DIFaddend \item - \texttt{\DIFdelbegin \DIFdel{SpoofVendor}\DIFdelend \DIFaddbegin \DIFadd{ARTFrequency}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{boolean}\DIFdelend \DIFaddbegin \DIFadd{integer}\DIFaddend }\DIFaddbegin \DIFadd{, 64-bit}\DIFaddend \\ - \textbf{Failsafe}: \texttt{\DIFdelbegin \DIFdel{false}\DIFdelend \DIFaddbegin \DIFadd{0}\DIFaddend } \DIFaddbegin \DIFadd{(Automatic)}\DIFaddend \\ - \textbf{Description}: Sets \DIFdelbegin \DIFdel{SMBIOS vendor fields to }\DIFdelend \DIFdelbegin \texttt{\DIFdel{Acidanthera}}%DIFDELCMD < \MBLOCKRIGHTBRACE%%% -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{It can be dangerous to use ``Apple'' in - SMBIOS vendor fields for reasons outlined in the - }\DIFdelend \DIFaddbegin \texttt{\DIFadd{ARTFrequency}} \DIFadd{in - }\DIFaddend \texttt{\DIFdelbegin \DIFdel{SystemManufacturer}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{description. -However, certain firmware may not provide - valid values otherwise, which could obstruct the operation of some software. -}\DIFdelend \DIFaddbegin \DIFadd{gEfiProcessorSubClassGuid}}\DIFadd{. -}\DIFaddend - - \DIFdelbegin %DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{AdviseFeatures}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Updates }\texttt{\DIFdel{FirmwareFeatures}} %DIFAUXCMD -\DIFdel{with supported bits. -}\DIFdelend \DIFaddbegin \DIFadd{This value contains CPU ART frequency, also known as crystal clock frequency. + +\item + \texttt{ARTFrequency}\\ + \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \textbf{Failsafe}: \texttt{0} (Automatic)\\ + \textbf{Description}: Sets \texttt{ARTFrequency} in + \texttt{gEfiProcessorSubClassGuid}. + + This value contains CPU ART frequency, also known as crystal clock frequency. Its existence is exclusive to the Skylake generation and newer. The value is specified in Hz, and is normally 24 MHz for the client Intel segment, 25 MHz for the server Intel segment, and 19.2 MHz for Intel Atom CPUs. macOS till 10.15 inclusive assumes 24 MHz by default. -}\DIFaddend - - \DIFdelbegin \DIFdel{Added bits to }\texttt{\DIFdel{FirmwareFeatures}}%DIFAUXCMD -\DIFdel{: -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -\begin{itemize}%DIFAUXCMD -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE}} %DIFAUXCMD -\DIFdel{(}\texttt{\DIFdel{0x1}}%DIFAUXCMD -\DIFdel{) - - Without this bit, it is not possible to reboot to Windows installed on - a drive with an EFI partition that is not the first partition on the disk. }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{FW\_FEATURE\_SUPPORTS\_UEFI\_WINDOWS\_BOOT}} %DIFAUXCMD -\DIFdel{(}\texttt{\DIFdel{0x20000000}}%DIFAUXCMD -\DIFdel{) - - Without this bit, it is not possible to reboot to Windows installed on - a drive with an EFI partition that is the first partition on the disk. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{FW\_FEATURE\_SUPPORTS\_APFS}} %DIFAUXCMD -\DIFdel{(}\texttt{\DIFdel{0x00080000}}%DIFAUXCMD -\DIFdel{) - - Without this bit, - it is not possible to install macOS on an APFS disk. }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{FW\_FEATURE\_SUPPORTS\_LARGE\_BASESYSTEM}} %DIFAUXCMD -\DIFdel{(}\texttt{\DIFdel{0x800000000}}%DIFAUXCMD -\DIFdel{) - - Without this bit, it is not possible to install macOS versions with large - BaseSystem images, such as macOS 12. - } -\end{itemize}%DIFAUXCMD -%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \emph{Note}: On \DIFdelbegin \DIFdel{most newer firmwares these bits are already set, the option - may be necessary when "upgrading" the firmware with new features. }%DIFDELCMD < -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \DIFadd{Intel Skylake X ART frequency may be a little less (approx. 0.25\%) than + \emph{Note}: On Intel Skylake X ART frequency may be a little less (approx. 0.25\%) than 24 or 25 MHz due to special EMI-reduction circuit as described in - }\href{https://github.com/acidanthera/bugtracker/issues/448#issuecomment-524914166}{\DIFadd{Acidanthera Bugtracker}}\DIFadd{. -}\DIFaddend \item - \DIFdelbegin \texttt{\DIFdel{MaxBIOSVersion}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Sets }\texttt{\DIFdel{BIOSVersion}} %DIFAUXCMD -\DIFdel{to }\texttt{\DIFdel{9999.999.999.999.999}}%DIFAUXCMD -\DIFdel{, recommended for legacy - Macs when using }\texttt{\DIFdel{Automatic}} %DIFAUXCMD -\DIFdel{PlatformInfo, to avoid BIOS updates in - unofficially supported macOS - versions. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{\DIFdelbegin \DIFdel{SystemMemoryStatus}\DIFdelend \DIFaddbegin \DIFadd{BoardProduct}\DIFaddend }\\ + \href{https://github.com/acidanthera/bugtracker/issues/448#issuecomment-524914166}{Acidanthera Bugtracker}. +\item + \texttt{BoardProduct}\\ \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \DIFdelbegin \texttt{\DIFdel{Auto}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{Empty (Not installed)}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Indicates whether system memory is upgradable in - }\DIFdelend \DIFaddbegin \DIFadd{Sets }\texttt{\DIFadd{board-id}} \DIFadd{in - }\DIFaddend \texttt{\DIFdelbegin \DIFdel{PlatformFeature}\DIFdelend \DIFaddbegin \DIFadd{gEfiMiscSubClassGuid}\DIFaddend }. \DIFdelbegin \DIFdel{This controls the visibility of the Memory tab in ``About This Mac''. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Valid values: -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{Auto}} %DIFAUXCMD -\DIFdel{--- use the original }\texttt{\DIFdel{PlatformFeature}} %DIFAUXCMD -\DIFdel{value . - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{The value found on Macs is equal to SMBIOS - }\DIFaddend \texttt{\DIFdelbegin \DIFdel{Upgradable}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{--- explicitly unset }\texttt{\DIFdel{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY}} - %DIFAUXCMD -\DIFdel{(}\texttt{\DIFdel{0x2}}%DIFAUXCMD -\DIFdel{) in }\texttt{\DIFdel{PlatformFeature}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{BoardProduct}} \DIFadd{in ASCII}\DIFaddend . -\item - \texttt{\DIFdelbegin \DIFdel{Soldered}\DIFdelend \DIFaddbegin \DIFadd{BoardRevision}\DIFaddend }\DIFdelbegin \DIFdel{--- explicitly set }\texttt{\DIFdel{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY}} - %DIFAUXCMD -\DIFdel{(}\texttt{\DIFdel{0x2}}%DIFAUXCMD -\DIFdel{) in }\texttt{\DIFdel{PlatformFeature}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: On certain Mac models, such as the }\texttt{\DIFdel{MacBookPro10,x}} %DIFAUXCMD -\DIFdel{and any }\texttt{\DIFdel{MacBookAir}}%DIFAUXCMD -\DIFdel{, - SPMemoryReporter.spreporter will ignore }\texttt{\DIFdel{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY}} - %DIFAUXCMD -\DIFdel{and assume that system memory is non-upgradable. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{ProcessorType}}%DIFAUXCMD -\DIFdelend \\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{integer}\DIFdelend \DIFaddbegin \DIFadd{data}\DIFaddend }\DIFaddbegin \DIFadd{, 1 byte}\DIFaddend \\ - \textbf{Failsafe}: \texttt{0}\DIFdelbegin \DIFdel{(Automatic)}\DIFdelend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Refer to SMBIOS }\DIFdelend \DIFaddbegin \DIFadd{Sets }\DIFaddend \texttt{\DIFdelbegin \DIFdel{ProcessorType}%DIFDELCMD < \MBLOCKRIGHTBRACE%%% -\DIFdel{. }%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{SystemProductName}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified or not installed)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Refer to SMBIOS }\texttt{\DIFdel{SystemProductName}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{board-rev}} \DIFadd{in - }\texttt{\DIFadd{gEfiMiscSubClassGuid}}\DIFadd{. The value found on Macs seems to correspond - to internal board revision (e.g. }\texttt{\DIFadd{01}}\DIFadd{)}\DIFaddend . -\item - \texttt{\DIFdelbegin \DIFdel{SystemSerialNumber}\DIFdelend \DIFaddbegin \DIFadd{DevicePathsSupported}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{integer}\DIFaddend }\DIFaddbegin \DIFadd{, 32-bit}\DIFaddend \\ - \textbf{Failsafe}: \DIFdelbegin \DIFdel{Empty (OEM specified or not }\DIFdelend \DIFaddbegin \texttt{\DIFadd{0}} \DIFadd{(Not }\DIFaddend installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Refer to SMBIOS }\DIFdelend \DIFaddbegin \DIFadd{Sets }\texttt{\DIFadd{DevicePathsSupported}} \DIFadd{in - }\texttt{\DIFadd{gEfiMiscSubClassGuid}}\DIFadd{. Must be set to }\DIFaddend \DIFdelbegin \texttt{\DIFdel{SystemSerialNumber}}%DIFDELCMD < \MBLOCKRIGHTBRACE%%% -\DIFdel{.}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Specify special string value }\texttt{\DIFdel{OEM}} %DIFAUXCMD -\DIFdel{to extract current value from NVRAM - (}%DIFDELCMD < \texttt{%%% -\DIFdel{SSN}\DIFdelend \DIFaddbegin \DIFadd{1}\DIFaddend \DIFdelbegin \DIFdel{variable) or SMBIOS and use it throughout the sections. - This feature can only be used on Mac-compatible firmware}\DIFdelend \DIFaddbegin \DIFadd{for + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{board-id} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{BoardProduct} in ASCII. +\item + \texttt{BoardRevision}\\ + \textbf{Type}: \texttt{plist\ data}, 1 byte\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Sets \texttt{board-rev} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs seems to correspond + to internal board revision (e.g. \texttt{01}). +\item + \texttt{DevicePathsSupported}\\ + \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ + \textbf{Failsafe}: \texttt{0} (Not installed)\\ + \textbf{Description}: Sets \texttt{DevicePathsSupported} in + \texttt{gEfiMiscSubClassGuid}. Must be set to \texttt{1} for AppleACPIPlatform.kext to append SATA device paths to - }\texttt{\DIFadd{Boot\#\#\#\#}} \DIFadd{and }\texttt{\DIFadd{efi-boot-device-data}} \DIFadd{variables. - Set to }\texttt{\DIFadd{1}} \DIFadd{on all modern Macs}\DIFaddend . -\item - \texttt{\DIFdelbegin \DIFdel{SystemUUID}\DIFdelend \DIFaddbegin \DIFadd{FSBFrequency}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{integer}\DIFaddend }, \DIFdelbegin \DIFdel{GUID}\DIFdelend \DIFaddbegin \DIFadd{64-bit}\DIFaddend \\ - \textbf{Failsafe}: \DIFdelbegin \DIFdel{Empty (OEM specified or not installed}\DIFdelend \DIFaddbegin \texttt{\DIFadd{0}} \DIFadd{(Automatic}\DIFaddend )\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Refer to SMBIOS }\DIFdelend \DIFaddbegin \DIFadd{Sets }\DIFaddend \texttt{\DIFdelbegin \DIFdel{SystemUUID}\DIFdelend \DIFaddbegin \DIFadd{FSBFrequency}\DIFaddend } \DIFaddbegin \DIFadd{in - }\texttt{\DIFadd{gEfiProcessorSubClassGuid}}\DIFaddend . - - \DIFdelbegin \DIFdel{Specify special string value }\texttt{\DIFdel{OEM}} %DIFAUXCMD -\DIFdel{to extract current value from NVRAM - (}\texttt{\DIFdel{system-id}} %DIFAUXCMD -\DIFdel{variable) or SMBIOS and use it throughout the sections. - Since not every firmware implementation has valid (and unique) values, this - feature is not applicable to some setups, and may provide unexpected results. It is highly recommended to specify the UUID explicitly. Refer to - }\DIFdelend \DIFaddbegin \DIFadd{Sets CPU FSB frequency. This value equals to CPU nominal frequency divided + \texttt{Boot\#\#\#\#} and \texttt{efi-boot-device-data} variables. + Set to \texttt{1} on all modern Macs. +\item + \texttt{FSBFrequency}\\ + \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \textbf{Failsafe}: \texttt{0} (Automatic)\\ + \textbf{Description}: Sets \texttt{FSBFrequency} in + \texttt{gEfiProcessorSubClassGuid}. + + Sets CPU FSB frequency. This value equals to CPU nominal frequency divided by CPU maximum bus ratio and is specified in Hz. Refer to - }\DIFaddend \texttt{\DIFdelbegin \DIFdel{UseRawUuidEncoding}\DIFdelend \DIFaddbegin \DIFadd{MSR\_NEHALEM\_PLATFORM\_INFO}\DIFaddend }\DIFdelbegin \DIFdel{to determine how SMBIOS value is parsed. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{MLB}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified or not installed) }%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Refer to SMBIOS }\texttt{\DIFdel{BoardSerialNumber}}%DIFAUXCMD -\DIFdel{. -}\DIFdelend \DIFaddbegin \DIFadd{~(}\texttt{\DIFadd{CEh}}\DIFadd{) MSR value to determine + \texttt{MSR\_NEHALEM\_PLATFORM\_INFO}~(\texttt{CEh}) MSR value to determine maximum bus ratio on modern Intel CPUs. -}\DIFaddend - - \DIFdelbegin \DIFdel{Specify special string value }\texttt{\DIFdel{OEM}} %DIFAUXCMD -\DIFdel{to extract current value from NVRAM - (}\texttt{\DIFdel{MLB}} %DIFAUXCMD -\DIFdel{variable) or SMBIOS and use it throughout the sections. -This feature can only be used on Mac-compatible firmware}\DIFdelend \DIFaddbegin \emph{\DIFadd{Note}}\DIFadd{: This value is not used on Skylake and newer but is still provided - to follow suit}\DIFaddend . -\item - \texttt{\DIFdelbegin \DIFdel{ROM}\DIFdelend \DIFaddbegin \DIFadd{InitialTSC}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{multidata}\DIFdelend \DIFaddbegin \DIFadd{integer}\DIFaddend }, \DIFdelbegin \DIFdel{6 bytes}\DIFdelend \DIFaddbegin \DIFadd{64-bit}\DIFaddend \\ - \textbf{Failsafe}: \DIFdelbegin \DIFdel{Empty (OEM specified or not installed)}\DIFdelend \DIFaddbegin \texttt{\DIFadd{0}}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Refer to - }\DIFdelend \DIFaddbegin \DIFadd{Sets }\DIFaddend \DIFdelbegin \texttt{\DIFdel{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}}%DIFDELCMD < \MBLOCKRIGHTBRACE%%% -\DIFdel{. }%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Specify special string value}\texttt{\DIFdel{OEM}} %DIFAUXCMD -\DIFdel{to extract current value from NVRAM - (}\texttt{\DIFdel{ROM}} %DIFAUXCMD -\DIFdel{variable) and use it throughout the sections. - This feature can only be used on Mac-compatible firmware. -}%DIFDELCMD < - -%DIFDELCMD < \end{enumerate} -%DIFDELCMD < - -%DIFDELCMD < %%% -\subsection{\DIFdel{DataHub Properties}}%DIFAUXCMD -\addtocounter{subsection}{-1}%DIFAUXCMD -%DIFDELCMD < \label{platforminfodatahub} -%DIFDELCMD < - -%DIFDELCMD < \begin{enumerate} -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \texttt{\DIFadd{InitialTSC}} \DIFadd{in - }\texttt{\DIFadd{gEfiProcessorSubClassGuid}}\DIFadd{. Sets initial TSC value, normally 0. -}\DIFaddend \item + + \emph{Note}: This value is not used on Skylake and newer but is still provided + to follow suit. +\item + \texttt{InitialTSC}\\ + \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Sets \texttt{InitialTSC} in + \texttt{gEfiProcessorSubClassGuid}. Sets initial TSC value, normally 0. +\item \texttt{PlatformName}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (Not installed)\\ @@ -6763,75 +5756,31 @@ \subsection{\DIFdel{DataHub Properties}}%DIFAUXCMD \texttt{gEfiMiscSubClassGuid}. The value found on Macs is \texttt{platform} in ASCII. \item - \texttt{\DIFdelbegin \DIFdel{SystemProductName}\DIFdelend \DIFaddbegin \DIFadd{SmcBranch}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{data}\DIFaddend }\DIFaddbegin \DIFadd{, 8 bytes}\DIFaddend \\ + \texttt{SmcBranch}\\ + \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{\DIFdelbegin \DIFdel{Model}\DIFdelend \DIFaddbegin \DIFadd{RBr}\DIFaddend } in - \texttt{gEfiMiscSubClassGuid}. \DIFdelbegin \DIFdel{The value found on Macs is equal to SMBIOS - }\DIFdelend \DIFaddbegin \DIFadd{Custom property read by - }\texttt{\DIFadd{VirtualSMC}} \DIFadd{or }\texttt{\DIFadd{FakeSMC}} \DIFadd{to generate SMC }\DIFaddend \texttt{\DIFdelbegin \DIFdel{SystemProductName}\DIFdelend \DIFaddbegin \DIFadd{RBr}\DIFaddend } - \DIFdelbegin \DIFdel{in Unicode}\DIFdelend \DIFaddbegin \DIFadd{key}\DIFaddend . -\item - \texttt{\DIFdelbegin \DIFdel{SystemSerialNumber}\DIFdelend \DIFaddbegin \DIFadd{SmcPlatform}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{data}\DIFaddend }\DIFaddbegin \DIFadd{, 8 bytes}\DIFaddend \\ + \textbf{Description}: Sets \texttt{RBr} in + \texttt{gEfiMiscSubClassGuid}. Custom property read by + \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{RBr} + key. +\item + \texttt{SmcPlatform}\\ + \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{\DIFdelbegin \DIFdel{SystemSerialNumber}\DIFdelend \DIFaddbegin \DIFadd{RPlt}\DIFaddend } in - \texttt{gEfiMiscSubClassGuid}. \DIFdelbegin \DIFdel{The value found on Macs is equal to SMBIOS - }\DIFdelend \DIFaddbegin \DIFadd{Custom property read by - }\texttt{\DIFadd{VirtualSMC}} \DIFadd{or }\texttt{\DIFadd{FakeSMC}} \DIFadd{to generate SMC }\DIFaddend \texttt{\DIFdelbegin \DIFdel{SystemSerialNumber}\DIFdelend \DIFaddbegin \DIFadd{RPlt}\DIFaddend } - \DIFdelbegin \DIFdel{in Unicode}\DIFdelend \DIFaddbegin \DIFadd{key}\DIFaddend . -\item - \texttt{\DIFdelbegin \DIFdel{SystemUUID}\DIFdelend \DIFaddbegin \DIFadd{SmcRevision}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{data}\DIFaddend }, \DIFdelbegin \DIFdel{GUID}\DIFdelend \DIFaddbegin \DIFadd{6 bytes}\DIFaddend \\ + \textbf{Description}: Sets \texttt{RPlt} in + \texttt{gEfiMiscSubClassGuid}. Custom property read by + \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{RPlt} + key. +\item + \texttt{SmcRevision}\\ + \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{\DIFdelbegin \DIFdel{system-id}\DIFdelend \DIFaddbegin \DIFadd{REV}\DIFaddend } in - \texttt{gEfiMiscSubClassGuid}. \DIFdelbegin \DIFdel{The value found on Macs is equal to SMBIOS - }\DIFdelend \DIFaddbegin \DIFadd{Custom property read by - }\texttt{\DIFadd{VirtualSMC}} \DIFadd{or }\texttt{\DIFadd{FakeSMC}} \DIFadd{to generate SMC }\DIFaddend \texttt{\DIFdelbegin \DIFdel{SystemUUID}\DIFdelend \DIFaddbegin \DIFadd{REV}\DIFaddend } - \DIFdelbegin \DIFdel{(with swapped byte order)}\DIFdelend \DIFaddbegin \DIFadd{key}\DIFaddend . -\item - \DIFdelbegin \texttt{\DIFdel{BoardProduct}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (Not installed)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Sets }\texttt{\DIFdel{board-id}} %DIFAUXCMD -\DIFdel{in - }\texttt{\DIFdel{gEfiMiscSubClassGuid}}%DIFAUXCMD -\DIFdel{. The value found on Macs is equal to SMBIOS - }\texttt{\DIFdel{BoardProduct}} %DIFAUXCMD -\DIFdel{in ASCII. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{BoardRevision}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ data}}%DIFAUXCMD -\DIFdel{, 1 byte}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Sets }\texttt{\DIFdel{board-rev}} %DIFAUXCMD -\DIFdel{in - }\texttt{\DIFdel{gEfiMiscSubClassGuid}}%DIFAUXCMD -\DIFdel{. The value found on Macs seems to correspond - to internal board revision (e.g. }\texttt{\DIFdel{01}}%DIFAUXCMD -\DIFdel{). -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{StartupPowerEvents}\\ + \textbf{Description}: Sets \texttt{REV} in + \texttt{gEfiMiscSubClassGuid}. Custom property read by + \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{REV} + key. +\item + \texttt{StartupPowerEvents}\\ \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Sets \texttt{StartupPowerEvents} in @@ -6885,233 +5834,157 @@ \subsection{\DIFdel{DataHub Properties}}%DIFAUXCMD event (Same as \texttt{PRSTS} bit 15) \end{itemize} \item - \texttt{\DIFdelbegin \DIFdel{InitialTSC}\DIFdelend \DIFaddbegin \DIFadd{SystemProductName}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{integer}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\DIFdelbegin \DIFdel{, 64-bit}\DIFdelend \\ - \textbf{Failsafe}: \DIFdelbegin \texttt{\DIFdel{0}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{Empty (Not installed)}\DIFaddend \\ - \textbf{Description}: Sets \texttt{\DIFdelbegin \DIFdel{InitialTSC}\DIFdelend \DIFaddbegin \DIFadd{Model}\DIFaddend } in - \texttt{\DIFdelbegin \DIFdel{gEfiProcessorSubClassGuid}\DIFdelend \DIFaddbegin \DIFadd{gEfiMiscSubClassGuid}\DIFaddend }. \DIFdelbegin \DIFdel{Sets initial TSC value , normally 0. -}\DIFdelend \DIFaddbegin \DIFadd{The value found on Macs is equal to SMBIOS - }\texttt{\DIFadd{SystemProductName}} \DIFadd{in Unicode. -}\DIFaddend \item - \texttt{\DIFdelbegin \DIFdel{FSBFrequency}\DIFdelend \DIFaddbegin \DIFadd{SystemSerialNumber}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{integer}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\DIFdelbegin \DIFdel{, 64-bit}\DIFdelend \\ - \textbf{Failsafe}: \DIFdelbegin \texttt{\DIFdel{0}} %DIFAUXCMD -\DIFdel{(Automatic}\DIFdelend \DIFaddbegin \DIFadd{Empty (Not installed}\DIFaddend )\\ - \textbf{Description}: Sets \texttt{\DIFdelbegin \DIFdel{FSBFrequency}\DIFdelend \DIFaddbegin \DIFadd{SystemSerialNumber}\DIFaddend } in - \texttt{\DIFdelbegin \DIFdel{gEfiProcessorSubClassGuid}\DIFdelend \DIFaddbegin \DIFadd{gEfiMiscSubClassGuid}\DIFaddend }. \DIFdelbegin %DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Sets CPU FSB frequency. This value equals to CPU nominal frequency divided - by CPU maximum bus ratio and is specified in Hz. -Refer to - }\DIFdelend \DIFaddbegin \DIFadd{The value found on Macs is equal to SMBIOS - }\texttt{\DIFadd{SystemSerialNumber}} \DIFadd{in Unicode. -}\item - \DIFaddend \texttt{\DIFdelbegin \DIFdel{MSR\_NEHALEM\_PLATFORM\_INFO}\DIFdelend \DIFaddbegin \DIFadd{SystemUUID}\DIFaddend }\DIFdelbegin \DIFdel{~(}\texttt{\DIFdel{CEh}}%DIFAUXCMD -\DIFdel{)MSR value to determine - maximum bus ratio on modern Intel CPUs. -}\DIFdelend \DIFaddbegin \\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\DIFadd{, GUID}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (Not installed)}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Sets }\texttt{\DIFadd{system-id}} \DIFadd{in - }\texttt{\DIFadd{gEfiMiscSubClassGuid}}\DIFadd{. The value found on Macs is equal to SMBIOS - }\texttt{\DIFadd{SystemUUID}} \DIFadd{(with swapped byte order). -}\end{enumerate} -\DIFaddend - -\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This value is not used on Skylake and newer but is still provided - to follow suit. -}\DIFdelend \DIFaddbegin \subsection{\DIFadd{Generic Properties}}\label{platforminfogeneric} + \texttt{SystemProductName}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{Model} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{SystemProductName} in Unicode. +\item + \texttt{SystemSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{SystemSerialNumber} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{SystemSerialNumber} in Unicode. +\item + \texttt{SystemUUID}\\ + \textbf{Type}: \texttt{plist\ string}, GUID\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{system-id} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{SystemUUID} (with swapped byte order). +\end{enumerate} + +\subsection{Generic Properties}\label{platforminfogeneric} \begin{enumerate} -\DIFaddend \item - \texttt{\DIFdelbegin \DIFdel{ARTFrequency}\DIFdelend \DIFaddbegin \DIFadd{AdviseFeatures}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{integer}\DIFdelend \DIFaddbegin \DIFadd{boolean}\DIFaddend }\DIFdelbegin \DIFdel{, 64-bit}\DIFdelend \\ - \textbf{Failsafe}: \texttt{\DIFdelbegin \DIFdel{0}\DIFdelend \DIFaddbegin \DIFadd{false}\DIFaddend }\DIFdelbegin \DIFdel{(Automatic)}\DIFdelend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Sets }\DIFdelend \DIFaddbegin \DIFadd{Updates }\DIFaddend \texttt{\DIFdelbegin \DIFdel{ARTFrequency}\DIFdelend \DIFaddbegin \DIFadd{FirmwareFeatures}\DIFaddend } \DIFdelbegin \DIFdel{in - }\texttt{\DIFdel{gEfiProcessorSubClassGuid}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{with supported bits}\DIFaddend . - - \DIFdelbegin \DIFdel{This value contains CPU ART frequency, also known as crystal clock frequency. - Its existence is exclusive to the Skylake generation and newer. - The value is specified - in Hz, and is normally 24 MHz for the client Intel segment, 25 MHz for the server Intel segment, - and 19.2 MHz for Intel Atom CPUs. - macOS till 10.15 inclusive assumes 24 MHz by default. - }\DIFdelend \DIFaddbegin \DIFadd{Added bits to }\texttt{\DIFadd{FirmwareFeatures}}\DIFadd{: -}\DIFaddend +\item + \texttt{AdviseFeatures}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Updates \texttt{FirmwareFeatures} with supported bits. + + Added bits to \texttt{FirmwareFeatures}: - \DIFaddbegin \begin{itemize} - \item \texttt{\DIFadd{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE}} \DIFadd{(}\texttt{\DIFadd{0x1}}\DIFadd{) + \begin{itemize} + \item \texttt{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE} (\texttt{0x1}) - Without this bit, it is not possible to reboot to Windows installed on a drive with an EFI partition that is not the first partition on the disk. - }\item \texttt{\DIFadd{FW\_FEATURE\_SUPPORTS\_UEFI\_WINDOWS\_BOOT}} \DIFadd{(}\texttt{\DIFadd{0x20000000}}\DIFadd{) + \item \texttt{FW\_FEATURE\_SUPPORTS\_UEFI\_WINDOWS\_BOOT} (\texttt{0x20000000}) - Without this bit, it is not possible to reboot to Windows installed on a drive with an EFI partition that is the first partition on the disk. - }\item \texttt{\DIFadd{FW\_FEATURE\_SUPPORTS\_APFS}} \DIFadd{(}\texttt{\DIFadd{0x00080000}}\DIFadd{) + \item \texttt{FW\_FEATURE\_SUPPORTS\_APFS} (\texttt{0x00080000}) - Without this bit, it is not possible to install macOS on an APFS disk. - }\item \texttt{\DIFadd{FW\_FEATURE\_SUPPORTS\_LARGE\_BASESYSTEM}} \DIFadd{(}\texttt{\DIFadd{0x800000000}}\DIFadd{) + \item \texttt{FW\_FEATURE\_SUPPORTS\_LARGE\_BASESYSTEM} (\texttt{0x800000000}) - Without this bit, it is not possible to install macOS versions with large BaseSystem images, such as macOS 12. - }\end{itemize} + \end{itemize} - \DIFaddend \emph{Note}: On \DIFdelbegin \DIFdel{Intel Skylake X ART frequency may be a little less (approx. -0.25\%) than - 24 or 25 MHz due to special EMI-reduction circuit as described in }\href{https://github.com/acidanthera/bugtracker/issues/448#issuecomment-524914166}{\DIFdel{Acidanthera Bugtracker}}%DIFAUXCMD -\DIFdel{. -}\DIFdelend \DIFaddbegin \DIFadd{most newer firmwares these bits are already set, the option + \emph{Note}: On most newer firmwares these bits are already set, the option may be necessary when "upgrading" the firmware with new features. -} -\DIFaddend \item - \DIFaddbegin \texttt{\DIFadd{MLB}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified or not installed)}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Refer to SMBIOS }\texttt{\DIFadd{BoardSerialNumber}}\DIFadd{. -} +\item + \texttt{MLB}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{BoardSerialNumber}. - \DIFadd{Specify special string value }\texttt{\DIFadd{OEM}} \DIFadd{to extract current value from NVRAM - (}\texttt{\DIFadd{MLB}} \DIFadd{variable) or SMBIOS and use it throughout the sections. + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{MLB} variable) or SMBIOS and use it throughout the sections. This feature can only be used on Mac-compatible firmware. -} \item - \texttt{\DIFadd{MaxBIOSVersion}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Sets }\texttt{\DIFadd{BIOSVersion}} \DIFadd{to }\texttt{\DIFadd{9999.999.999.999.999}}\DIFadd{, recommended for legacy - Macs when using }\texttt{\DIFadd{Automatic}} \DIFadd{PlatformInfo, to avoid BIOS updates in unofficially supported macOS + \texttt{MaxBIOSVersion}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Sets \texttt{BIOSVersion} to \texttt{9999.999.999.999.999}, recommended for legacy + Macs when using \texttt{Automatic} PlatformInfo, to avoid BIOS updates in unofficially supported macOS versions. -} \item - \DIFaddend \texttt{\DIFdelbegin \DIFdel{DevicePathsSupported}\DIFdelend \DIFaddbegin \DIFadd{ProcessorType}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ integer}\DIFdelbegin \DIFdel{, 32-bit}\DIFdelend \\ - \textbf{Failsafe}: \texttt{0} (\DIFdelbegin \DIFdel{Not }\DIFdelend \DIFaddbegin \DIFadd{Automatic)}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Refer to SMBIOS }\texttt{\DIFadd{ProcessorType}}\DIFadd{. -} + \texttt{ProcessorType}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0} (Automatic)\\ + \textbf{Description}: Refer to SMBIOS \texttt{ProcessorType}. \item - \texttt{\DIFadd{ROM}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ multidata}}\DIFadd{, 6 bytes}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified or not }\DIFaddend installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Sets }\DIFdelend \DIFaddbegin \DIFadd{Refer to - }\texttt{\DIFadd{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}}\DIFadd{. -} + \texttt{ROM}\\ + \textbf{Type}: \texttt{plist\ multidata}, 6 bytes\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}. - \DIFadd{Specify special string value }\texttt{\DIFadd{OEM}} \DIFadd{to extract current value from NVRAM - (}\texttt{\DIFadd{ROM}} \DIFadd{variable) and use it throughout the sections. + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{ROM} variable) and use it throughout the sections. This feature can only be used on Mac-compatible firmware. -} \item - \texttt{\DIFadd{SpoofVendor}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Sets SMBIOS vendor fields to }\DIFaddend \texttt{\DIFdelbegin \DIFdel{DevicePathsSupported}\DIFdelend \DIFaddbegin \DIFadd{Acidanthera}}\DIFadd{. -} + \texttt{SpoofVendor}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Sets SMBIOS vendor fields to \texttt{Acidanthera}. - \DIFadd{It can be dangerous to use ``Apple'' in SMBIOS vendor fields for reasons outlined in the - }\texttt{\DIFadd{SystemManufacturer}} \DIFadd{description. However, certain firmware may not provide + It can be dangerous to use ``Apple'' in SMBIOS vendor fields for reasons outlined in the + \texttt{SystemManufacturer} description. However, certain firmware may not provide valid values otherwise, which could obstruct the operation of some software. -} \item - \texttt{\DIFadd{SystemMemoryStatus}\DIFaddend }\DIFdelbegin \DIFdel{in - }\texttt{\DIFdel{gEfiMiscSubClassGuid}}%DIFAUXCMD -\DIFdel{. -Must be set to }\texttt{\DIFdel{1}} %DIFAUXCMD -\DIFdel{for AppleACPIPlatform. kext to append SATA device paths to - }\DIFdelend \DIFaddbegin \\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{Auto}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Indicates whether system memory is upgradable in }\texttt{\DIFadd{PlatformFeature}}\DIFadd{. + \texttt{SystemMemoryStatus}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Auto}\\ + \textbf{Description}: Indicates whether system memory is upgradable in \texttt{PlatformFeature}. This controls the visibility of the Memory tab in ``About This Mac''. -} - \DIFadd{Valid values: -} + Valid values: \begin{itemize} \tightlist - \item \texttt{\DIFadd{Auto}} \DIFadd{--- use the original }\texttt{\DIFadd{PlatformFeature}} \DIFadd{value. - }\item \texttt{\DIFadd{Upgradable}} \DIFadd{--- explicitly unset }\texttt{\DIFadd{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY}} - \DIFadd{(}\texttt{\DIFadd{0x2}}\DIFadd{) in }\texttt{\DIFadd{PlatformFeature}}\DIFadd{. - }\item \texttt{\DIFadd{Soldered}} \DIFadd{--- explicitly set }\texttt{\DIFadd{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY}} - \DIFadd{(}\texttt{\DIFadd{0x2}}\DIFadd{) in }\texttt{\DIFadd{PlatformFeature}}\DIFadd{. - }\end{itemize} - - \emph{\DIFadd{Note}}\DIFadd{: On certain Mac models, such as the }\texttt{\DIFadd{MacBookPro10,x}} \DIFadd{and any }\DIFaddend \texttt{\DIFdelbegin \DIFdel{Boot\#\#\#\#}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{and }%DIFDELCMD < \texttt{%%% -\DIFdel{efi-boot-device-data}\DIFdelend \DIFaddbegin \DIFadd{MacBookAir}\DIFaddend }\DIFdelbegin \DIFdel{variables.Set to }\DIFdelend \DIFaddbegin \DIFadd{, - SPMemoryReporter.spreporter will ignore }\DIFaddend \texttt{\DIFdelbegin \DIFdel{1}\DIFdelend \DIFaddbegin \DIFadd{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY}\DIFaddend } - \DIFdelbegin \DIFdel{on all modern Macs. -}\DIFdelend \DIFaddbegin \DIFadd{and assume that system memory is non-upgradable. -} + \item \texttt{Auto} --- use the original \texttt{PlatformFeature} value. + \item \texttt{Upgradable} --- explicitly unset \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} + (\texttt{0x2}) in \texttt{PlatformFeature}. + \item \texttt{Soldered} --- explicitly set \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} + (\texttt{0x2}) in \texttt{PlatformFeature}. + \end{itemize} -\DIFaddend \item - \texttt{\DIFdelbegin \DIFdel{SmcRevision}\DIFdelend \DIFaddbegin \DIFadd{SystemProductName}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{data}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\DIFdelbegin \DIFdel{, 6 bytes}\DIFdelend \\ - \textbf{Failsafe}: Empty (\DIFdelbegin \DIFdel{Not }\DIFdelend \DIFaddbegin \DIFadd{OEM specified or not }\DIFaddend installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Sets }\texttt{\DIFdel{REV}} %DIFAUXCMD -\DIFdel{in - }\texttt{\DIFdel{gEfiMiscSubClassGuid}}%DIFAUXCMD -\DIFdel{. Custom property read by - }\texttt{\DIFdel{VirtualSMC}} %DIFAUXCMD -\DIFdel{or }\texttt{\DIFdel{FakeSMC}} %DIFAUXCMD -\DIFdel{to generate SMC }\DIFdelend \DIFaddbegin \DIFadd{Refer to SMBIOS }\DIFaddend \texttt{\DIFdelbegin \DIFdel{REV}\DIFdelend \DIFaddbegin \DIFadd{SystemProductName}\DIFaddend }\DIFdelbegin \DIFdel{key}\DIFdelend . -\item - \texttt{\DIFdelbegin \DIFdel{SmcBranch}\DIFdelend \DIFaddbegin \DIFadd{SystemSerialNumber}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{data}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\DIFdelbegin \DIFdel{, 8 bytes}\DIFdelend \\ - \textbf{Failsafe}: Empty (\DIFdelbegin \DIFdel{Not }\DIFdelend \DIFaddbegin \DIFadd{OEM specified or not }\DIFaddend installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Sets }\DIFdelend \DIFaddbegin \DIFadd{Refer to SMBIOS }\DIFaddend \texttt{\DIFdelbegin \DIFdel{RBr}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{in - }\texttt{\DIFdel{gEfiMiscSubClassGuid}}%DIFAUXCMD -\DIFdel{. -Custom property read by - }\DIFdelend \DIFaddbegin \DIFadd{SystemSerialNumber}}\DIFadd{. -} + \emph{Note}: On certain Mac models, such as the \texttt{MacBookPro10,x} and any \texttt{MacBookAir}, + SPMemoryReporter.spreporter will ignore \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} + and assume that system memory is non-upgradable. + +\item + \texttt{SystemProductName}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{SystemProductName}. +\item + \texttt{SystemSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{SystemSerialNumber}. - \DIFadd{Specify special string value }\DIFaddend \texttt{\DIFdelbegin \DIFdel{VirtualSMC}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{or }\texttt{\DIFdel{FakeSMC}} %DIFAUXCMD -\DIFdel{to generate SMC }\DIFdelend \DIFaddbegin \DIFadd{OEM}} \DIFadd{to extract current value from NVRAM - (}\DIFaddend \texttt{\DIFdelbegin \DIFdel{RBr}\DIFdelend \DIFaddbegin \DIFadd{SSN}\DIFaddend } \DIFdelbegin \DIFdel{key. - }\DIFdelend \DIFaddbegin \DIFadd{variable) or SMBIOS and use it throughout the sections. + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{SSN} variable) or SMBIOS and use it throughout the sections. This feature can only be used on Mac-compatible firmware. -}\DIFaddend \item - \texttt{\DIFdelbegin \DIFdel{SmcPlatform}\DIFdelend \DIFaddbegin \DIFadd{SystemUUID}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{data}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }, \DIFdelbegin \DIFdel{8 bytes}\DIFdelend \DIFaddbegin \DIFadd{GUID}\DIFaddend \\ - \textbf{Failsafe}: Empty (\DIFdelbegin \DIFdel{Not }\DIFdelend \DIFaddbegin \DIFadd{OEM specified or not }\DIFaddend installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Sets }\DIFdelend \DIFaddbegin \DIFadd{Refer to SMBIOS }\DIFaddend \texttt{\DIFdelbegin \DIFdel{RPlt}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{in - }\texttt{\DIFdel{gEfiMiscSubClassGuid}}%DIFAUXCMD -\DIFdel{. -Custom property read by - }\DIFdelend \DIFaddbegin \DIFadd{SystemUUID}}\DIFadd{. -} +\item + \texttt{SystemUUID}\\ + \textbf{Type}: \texttt{plist\ string}, GUID\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{SystemUUID}. - \DIFadd{Specify special string value }\DIFaddend \texttt{\DIFdelbegin \DIFdel{VirtualSMC}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{or }\texttt{\DIFdel{FakeSMC}} %DIFAUXCMD -\DIFdel{to generate SMC }\texttt{\DIFdel{RPlt}} - %DIFAUXCMD -\DIFdel{key. - }\DIFdelend \DIFaddbegin \DIFadd{OEM}} \DIFadd{to extract current value from NVRAM - (}\texttt{\DIFadd{system-id}} \DIFadd{variable) or SMBIOS and use it throughout the sections. + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{system-id} variable) or SMBIOS and use it throughout the sections. Since not every firmware implementation has valid (and unique) values, this feature is not applicable to some setups, and may provide unexpected results. It is highly recommended to specify the UUID explicitly. Refer to - }\texttt{\DIFadd{UseRawUuidEncoding}} \DIFadd{to determine how SMBIOS value is parsed. -}\DIFaddend \end{enumerate} + \texttt{UseRawUuidEncoding} to determine how SMBIOS value is parsed. +\end{enumerate} \subsection{Memory Properties}\label{platforminfomemory} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{DataWidth}\\ \textbf{Type}: \texttt{plist\ integer}, 16-bit\\ \textbf{Failsafe}: \texttt{0xFFFF} (unknown)\\ @@ -7269,9 +6142,8 @@ \subsection{Memory Properties}\label{platforminfomemory} \subsubsection{Memory Device Properties}\label{platforminfomemorydevice} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{AssetTag}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Unknown}\\ @@ -7351,9 +6223,8 @@ \subsubsection{Memory Device Properties}\label{platforminfomemorydevice} \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{BID}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (Not installed)\\ @@ -7361,74 +6232,44 @@ \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_BID}. \item - \texttt{\DIFdelbegin \DIFdel{ROM}\DIFdelend \DIFaddbegin \DIFadd{FirmwareFeatures}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ data}, \DIFdelbegin \DIFdel{6 }\DIFdelend \DIFaddbegin \DIFadd{8 }\DIFaddend bytes\\ + \texttt{FirmwareFeatures}\\ + \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: \DIFaddbegin \DIFadd{This variable comes in pair with }\texttt{\DIFadd{FirmwareFeaturesMask}}\DIFadd{. - }\DIFaddend Specifies the values of NVRAM variables\DIFaddbegin \DIFadd{: - }\begin{itemize} + \textbf{Description}: This variable comes in pair with \texttt{FirmwareFeaturesMask}. + Specifies the values of NVRAM variables: + \begin{itemize} \tightlist - \item \DIFaddend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{HW\_ROM}\DIFdelend \DIFaddbegin \DIFadd{FirmwareFeatures}\DIFaddend } - \DIFdelbegin \DIFdel{and - }\DIFdelend \DIFaddbegin \item \DIFaddend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{ROM}\DIFdelend \DIFaddbegin \DIFadd{ExtendedFirmwareFeatures}\DIFaddend } - \DIFdelbegin \DIFdel{. -}\DIFdelend \DIFaddbegin \end{itemize} -\DIFaddend + \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeatures} + \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeatures} + \end{itemize} \item - \texttt{\DIFdelbegin \DIFdel{MLB}\DIFdelend \DIFaddbegin \DIFadd{FirmwareFeaturesMask}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{data}\DIFaddend }\DIFaddbegin \DIFadd{, 8 bytes}\DIFaddend \\ + \texttt{FirmwareFeaturesMask}\\ + \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: \DIFaddbegin \DIFadd{This variable comes in pair with }\texttt{\DIFadd{FirmwareFeatures}}\DIFadd{. - }\DIFaddend Specifies the values of NVRAM variables\DIFaddbegin \DIFadd{: - }\begin{itemize} + \textbf{Description}: This variable comes in pair with \texttt{FirmwareFeatures}. + Specifies the values of NVRAM variables: + \begin{itemize} \tightlist - \item \DIFaddend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{HW\_MLB}\DIFdelend \DIFaddbegin \DIFadd{FirmwareFeaturesMask}\DIFaddend } - \DIFdelbegin \DIFdel{and - }\DIFdelend \DIFaddbegin \item \DIFaddend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{MLB}\DIFdelend \DIFaddbegin \DIFadd{ExtendedFirmwareFeaturesMask}\DIFaddend } - \DIFdelbegin \DIFdel{. -}\DIFdelend \DIFaddbegin \end{itemize} -\DIFaddend + \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeaturesMask} + \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask} + \end{itemize} \item - \texttt{\DIFdelbegin \DIFdel{FirmwareFeatures}\DIFdelend \DIFaddbegin \DIFadd{MLB}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{data}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\DIFdelbegin \DIFdel{, 8 bytes}\DIFdelend \\ + \texttt{MLB}\\ + \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{This variable comes in pair with }\texttt{\DIFdel{FirmwareFeaturesMask}}%DIFAUXCMD -\DIFdel{. - }\DIFdelend Specifies the values of NVRAM variables - \DIFdelbegin \DIFdel{: - }%DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdelend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{FirmwareFeatures}\DIFdelend \DIFaddbegin \DIFadd{HW\_MLB}\DIFaddend } \DIFdelbegin %DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{and - }\DIFaddend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{ExtendedFirmwareFeatures}\DIFdelend \DIFaddbegin \DIFadd{MLB}\DIFaddend }\DIFdelbegin %DIFDELCMD < \end{itemize} -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \DIFadd{. -}\DIFaddend - -\item - \texttt{\DIFdelbegin \DIFdel{FirmwareFeaturesMask}\DIFdelend \DIFaddbegin \DIFadd{ROM}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ data}, \DIFdelbegin \DIFdel{8 }\DIFdelend \DIFaddbegin \DIFadd{6 }\DIFaddend bytes\\ + \textbf{Description}: Specifies the values of NVRAM variables + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_MLB} and + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB}. + +\item + \texttt{ROM}\\ + \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: \DIFdelbegin \DIFdel{This variable comes in pair with }\texttt{\DIFdel{FirmwareFeatures}}%DIFAUXCMD -\DIFdel{. - }\DIFdelend Specifies the values of NVRAM variables - \DIFdelbegin \DIFdel{: - }%DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdelend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{FirmwareFeaturesMask}\DIFdelend \DIFaddbegin \DIFadd{HW\_ROM}\DIFaddend } \DIFdelbegin %DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{and - }\DIFaddend \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:\DIFdelbegin \DIFdel{ExtendedFirmwareFeaturesMask}\DIFdelend \DIFaddbegin \DIFadd{ROM}\DIFaddend }\DIFdelbegin %DIFDELCMD < \end{itemize} -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \DIFadd{. -}\DIFaddend + \textbf{Description}: Specifies the values of NVRAM variables + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_ROM} and + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}. \item \texttt{SystemSerialNumber}\\ @@ -7452,17 +6293,16 @@ \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \subsection{SMBIOS Properties}\label{platforminfosmbios} \begin{enumerate} -\DIFaddbegin - -\DIFaddend \item - \DIFaddbegin \texttt{\DIFadd{BIOSReleaseDate}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: BIOS Information (Type 0) --- BIOS Release Date}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Firmware release date. Similar to - }\texttt{\DIFadd{BIOSVersion}}\DIFadd{. May look like }\texttt{\DIFadd{12/08/2017}}\DIFadd{. -}\item - \DIFaddend \texttt{BIOSVendor}\\ + +\item + \texttt{BIOSReleaseDate}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: BIOS Information (Type 0) --- BIOS Release Date\\ + \textbf{Description}: Firmware release date. Similar to + \texttt{BIOSVersion}. May look like \texttt{12/08/2017}. +\item + \texttt{BIOSVendor}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: BIOS Information (Type 0) --- Vendor\\ @@ -7499,176 +6339,23 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} UUID: 151B0907-10F9-3271-87CD-4BF5DBECACF5 \end{verbatim} \item - \texttt{\DIFdelbegin \DIFdel{BIOSReleaseDate}\DIFdelend \DIFaddbegin \DIFadd{BoardAssetTag}\DIFaddend }\\ + \texttt{BoardAssetTag}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: \DIFdelbegin \DIFdel{BIOS Information (Type 0) --- BIOS Release Date}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Firmware release date. Similar to - }\texttt{\DIFdel{BIOSVersion}}%DIFAUXCMD -\DIFdel{. May look like }\texttt{\DIFdel{12/08/2017}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{SystemManufacturer}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System }\DIFdelend \DIFaddbegin \DIFadd{Baseboard (or Module) }\DIFaddend Information (Type \DIFdelbegin \DIFdel{1}\DIFdelend \DIFaddbegin \DIFadd{2}\DIFaddend ) --- \DIFdelbegin \DIFdel{Manufacturer}\DIFdelend \DIFaddbegin \DIFadd{Asset - Tag}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{OEM manufacturer of the particular board. Use failsafe - unless strictly required. Do not override to contain }\texttt{\DIFdel{Apple\ Inc.}} - %DIFAUXCMD -\DIFdel{on non-Apple hardware, as this confuses numerous services present in - the operating system, such as firmware updates, eficheck, as well as - kernel extensions developed in Acidanthera, such as Lilu and its - plugins. In addition it will also make some operating systems - such as Linux unbootable. -}\DIFdelend \DIFaddbegin \DIFadd{Asset tag number. Varies, may be empty or - }\texttt{\DIFadd{Type2\ -\ Board\ Asset\ Tag}}\DIFadd{. -}\DIFaddend \item - \DIFdelbegin \texttt{\DIFdel{SystemProductName}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System Information (Type 1), Product Name}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Preferred Mac model used to mark the device as - supported by the operating system. This value must be specified by any - configuration for later automatic generation of the related values in - this and other SMBIOS tables and related configuration parameters. If - }\texttt{\DIFdel{SystemProductName}} %DIFAUXCMD -\DIFdel{is not compatible with the target operating - system, }\texttt{\DIFdel{-no\_compat\_check}} %DIFAUXCMD -\DIFdel{boot argument may be used as an - override. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: If }\texttt{\DIFdel{SystemProductName}} %DIFAUXCMD -\DIFdel{is unknown, and related - fields are unspecified, default values should be assumed as being set - to }\texttt{\DIFdel{MacPro6,1}} %DIFAUXCMD -\DIFdel{data. The list of known products can be found in - }\texttt{\DIFdel{AppleModels}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{\DIFdelbegin \DIFdel{SystemVersion}\DIFdelend \DIFaddbegin \DIFadd{BoardLocationInChassis}\DIFaddend }\\ + \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Asset + Tag\\ + \textbf{Description}: Asset tag number. Varies, may be empty or + \texttt{Type2\ -\ Board\ Asset\ Tag}. +\item + \texttt{BoardLocationInChassis}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: \DIFdelbegin \DIFdel{System Information (Type 1) --- Version}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Product iteration version number. May look like - }\texttt{\DIFdel{1.1}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{SystemSerialNumber}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System }\DIFdelend \DIFaddbegin \DIFadd{Baseboard (or Module) }\DIFaddend Information (Type \DIFdelbegin \DIFdel{1}\DIFdelend \DIFaddbegin \DIFadd{2}\DIFaddend ) --- \DIFdelbegin \DIFdel{Serial Number}\DIFdelend \DIFaddbegin \DIFadd{Location - in Chassis}\DIFaddend \\ - \textbf{Description}\DIFdelbegin \DIFdel{: Product serial number in defined format. Known - formats are described in - }\href{https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/macserial/FORMAT.md}{\DIFdel{macserial}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{SystemUUID}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdelend : \DIFdelbegin \texttt{\DIFdel{plist\ string}}%DIFAUXCMD -\DIFdel{, GUID}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System Information (Type 1) --- UUID}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: A UUID is an identifier that is designed to be unique across both time and space. It requires no central registration - process. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{SystemSKUNumber}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System Information (Type 1) --- SKU Number}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Mac Board ID (}\texttt{\DIFdel{board-id}}%DIFAUXCMD -\DIFdel{). May look like - }\texttt{\DIFdel{Mac-7BA5B2D9E42DDD94}} %DIFAUXCMD -\DIFdel{or - }\DIFdelend \DIFaddbegin \DIFadd{Varies, may be empty or - }\DIFaddend \texttt{\DIFdelbegin \DIFdel{Mac-F221BEC8}%DIFDELCMD < \MBLOCKRIGHTBRACE %%% -\DIFdel{in older - models. -Sometimes it can be just empty. -}\DIFdelend \DIFaddbegin \DIFadd{Part\ Component}}\DIFadd{. -}\DIFaddend \item - \DIFdelbegin \texttt{\DIFdel{SystemFamily}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System Information (Type 1) --- Family}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Family name. May look like }\texttt{\DIFdel{iMac\ Pro}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{BoardManufacturer}\\ + \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Location + in Chassis\\ + \textbf{Description}: Varies, may be empty or + \texttt{Part\ Component}. +\item + \texttt{BoardManufacturer}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) - @@ -7685,29 +6372,7 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} \texttt{Mac-7BA5B2D9E42DDD94} or \texttt{Mac-F221BEC8} in older models. \item - \DIFdelbegin \texttt{\DIFdel{BoardVersion}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: Baseboard (or Module) Information (Type 2) - - Version}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Board version number. Varies, may match - }\texttt{\DIFdel{SystemProductName}} %DIFAUXCMD -\DIFdel{or }\texttt{\DIFdel{SystemProductVersion}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{BoardSerialNumber}\\ + \texttt{BoardSerialNumber}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Serial @@ -7716,28 +6381,7 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} formats are described in \href{https://github.com/acidanthera/macserial/blob/master/FORMAT.md}{macserial}. \item - \DIFdelbegin \texttt{\DIFdel{BoardAssetTag}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty (OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: Baseboard (or Module) Information (Type 2) --- Asset - Tag}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Asset tag number. Varies, may be empty or - }\texttt{\DIFdel{Type2\ -\ Board\ Asset\ Tag}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{BoardType}\\ + \texttt{BoardType}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0} (OEM specified)\\ \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Board @@ -7746,103 +6390,48 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} processor, memory, and I/O) or \texttt{0xB} (Processor/Memory Module). Refer to Table 15 -- Baseboard: Board Type for details. \item - \texttt{\DIFdelbegin \DIFdel{BoardLocationInChassis}\DIFdelend \DIFaddbegin \DIFadd{BoardVersion}\DIFaddend }\\ + \texttt{BoardVersion}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) \DIFdelbegin \DIFdel{--- Location - in Chassis}\DIFdelend \DIFaddbegin \DIFadd{- - Version}\DIFaddend \\ - \textbf{Description}: \DIFaddbegin \DIFadd{Board version number. }\DIFaddend Varies, may \DIFdelbegin \DIFdel{be empty or }\DIFdelend \DIFaddbegin \DIFadd{match - }\texttt{\DIFadd{SystemProductName}} \DIFadd{or }\DIFaddend \texttt{\DIFdelbegin \DIFdel{Part\ Component}\DIFdelend \DIFaddbegin \DIFadd{SystemProductVersion}\DIFaddend }. + \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) - + Version\\ + \textbf{Description}: Board version number. Varies, may match + \texttt{SystemProductName} or \texttt{SystemProductVersion}. \item - \texttt{\DIFdelbegin \DIFdel{ChassisManufacturer}\DIFdelend \DIFaddbegin \DIFadd{ChassisAssetTag}\DIFaddend }\\ + \texttt{ChassisAssetTag}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- \DIFdelbegin \DIFdel{Manufacturer}\DIFdelend \DIFaddbegin \DIFadd{Asset Tag - Number}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Board manufacturer. All rules of - }\texttt{\DIFdel{SystemManufacturer}} %DIFAUXCMD -\DIFdel{do apply. -}%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{ChassisType}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}} %DIFAUXCMD -\DIFdel{(OEM specified)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: System Enclosure or Chassis (Type 3) --- Type}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Chassis type }\DIFdelend \DIFaddbegin \DIFadd{Chassis type name. Varies, could be empty or - }\texttt{\DIFadd{MacBook-Aluminum}}\DIFaddend . -\DIFdelbegin \DIFdel{Refer to Table 17 --- System - Enclosure or - Chassis Types for details. -}\DIFdelend \item - \texttt{\DIFdelbegin \DIFdel{ChassisVersion}\DIFdelend \DIFaddbegin \DIFadd{ChassisManufacturer}\DIFaddend }\\ + \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Asset Tag + Number\\ + \textbf{Description}: Chassis type name. Varies, could be empty or + \texttt{MacBook-Aluminum}. +\item + \texttt{ChassisManufacturer}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- \DIFdelbegin \DIFdel{Version}\DIFdelend \DIFaddbegin \DIFadd{Manufacturer}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Should match }\texttt{\DIFdel{BoardProduct}}%DIFAUXCMD -\DIFdel{. }\DIFdelend \DIFaddbegin \DIFadd{Board manufacturer. All rules of - }\texttt{\DIFadd{SystemManufacturer}} \DIFadd{do apply. -}\DIFaddend \item + \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Manufacturer\\ + \textbf{Description}: Board manufacturer. All rules of + \texttt{SystemManufacturer} do apply. +\item \texttt{ChassisSerialNumber}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Version\\ \textbf{Description}: Should match \texttt{SystemSerialNumber}. \item - \texttt{\DIFdelbegin \DIFdel{ChassisAssetTag}\DIFdelend \DIFaddbegin \DIFadd{ChassisType}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{integer}\DIFaddend }\\ - \textbf{Failsafe}: \DIFdelbegin \DIFdel{Empty }\DIFdelend \DIFaddbegin \texttt{\DIFadd{0}} \DIFaddend (OEM specified)\\ - \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- \DIFdelbegin \DIFdel{Asset Tag - Number}\DIFdelend \DIFaddbegin \DIFadd{Type}\DIFaddend \\ - \textbf{Description}: Chassis type\DIFdelbegin \DIFdel{name. Varies, could be empty or - }\texttt{\DIFdel{MacBook-Aluminum}}%DIFAUXCMD -\DIFdelend . \DIFdelbegin %DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PlatformFeature}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -\DIFdel{, 32-bit}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0xFFFFFFFF}} %DIFAUXCMD -\DIFdel{(OEM specified on Apple hardware, do not provide the table otherwise)}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{SMBIOS}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{APPLE\_SMBIOS\_TABLE\_TYPE133}} %DIFAUXCMD -\DIFdel{- - }\texttt{\DIFdel{PlatformFeature}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Platform features bitmask (Missing on older Macs). Refer to }\href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{\DIFdel{AppleFeatures.h}} %DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{Refer to Table 17 --- System - Enclosure or Chassis Types }\DIFaddend for details. -\item - \texttt{\DIFdelbegin \DIFdel{SmcVersion}\DIFdelend \DIFaddbegin \DIFadd{ChassisVersion}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{data}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\DIFdelbegin \DIFdel{, 16 bytes}\DIFdelend \\ - \textbf{Failsafe}: \DIFdelbegin \DIFdel{All zero }\DIFdelend \DIFaddbegin \DIFadd{Empty }\DIFaddend (OEM specified\DIFdelbegin \DIFdel{on Apple hardware, do not provide the table otherwise}\DIFdelend )\\ - \textbf{SMBIOS}: \DIFdelbegin \texttt{\DIFdel{APPLE\_SMBIOS\_TABLE\_TYPE134}} %DIFAUXCMD -\DIFdel{- }\texttt{\DIFdel{Version}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{System Enclosure or Chassis (Type 3) --- Version}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{ASCII string containing SMC version in upper case. -Missing on T2 based Macs. -}\DIFdelend \DIFaddbegin \DIFadd{Should match }\texttt{\DIFadd{BoardProduct}}\DIFadd{. -}\DIFaddend \item + \texttt{ChassisType}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0} (OEM specified)\\ + \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Type\\ + \textbf{Description}: Chassis type. Refer to Table 17 --- System + Enclosure or Chassis Types for details. +\item + \texttt{ChassisVersion}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Version\\ + \textbf{Description}: Should match \texttt{BoardProduct}. +\item \texttt{FirmwareFeatures}\\ \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: \texttt{0} (OEM specified on Apple hardware, 0 otherwise)\\ @@ -7865,15 +6454,15 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} for details. Lower 32 bits match \texttt{FirmwareFeaturesMask}. Upper 64 bits match \texttt{ExtendedFirmwareFeaturesMask}. \item - \DIFaddbegin \texttt{\DIFadd{PlatformFeature}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ integer}}\DIFadd{, 32-bit}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{0xFFFFFFFF}} \DIFadd{(OEM specified on Apple hardware, do not provide the table otherwise)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: }\texttt{\DIFadd{APPLE\_SMBIOS\_TABLE\_TYPE133}} \DIFadd{- - }\texttt{\DIFadd{PlatformFeature}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Platform features bitmask (Missing on older Macs). Refer to - }\href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{\DIFadd{AppleFeatures.h}} \DIFadd{for details. -}\item - \DIFaddend \texttt{ProcessorType}\\ + \texttt{PlatformFeature}\\ + \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ + \textbf{Failsafe}: \texttt{0xFFFFFFFF} (OEM specified on Apple hardware, do not provide the table otherwise)\\ + \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE133} - + \texttt{PlatformFeature}\\ + \textbf{Description}: Platform features bitmask (Missing on older Macs). Refer to + \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{AppleFeatures.h} for details. +\item + \texttt{ProcessorType}\\ \textbf{Type}: \texttt{plist\ integer}, 16-bit\\ \textbf{Failsafe}: \texttt{0} (Automatic)\\ \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE131} - @@ -7888,81 +6477,80 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} For a full list of available values and their limitations (the value will only apply if the CPU core count matches), refer to the Apple SMBIOS definitions header \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleSmBios.h}{here}. -\DIFaddbegin \item - \texttt{\DIFadd{SmcVersion}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ data}}\DIFadd{, 16 bytes}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: All zero (OEM specified on Apple hardware, do not provide the table otherwise)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: }\texttt{\DIFadd{APPLE\_SMBIOS\_TABLE\_TYPE134}} \DIFadd{- }\texttt{\DIFadd{Version}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: ASCII string containing SMC version in upper case. +\item + \texttt{SmcVersion}\\ + \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ + \textbf{Failsafe}: All zero (OEM specified on Apple hardware, do not provide the table otherwise)\\ + \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE134} - \texttt{Version}\\ + \textbf{Description}: ASCII string containing SMC version in upper case. Missing on T2 based Macs. -}\item - \texttt{\DIFadd{SystemFamily}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1) --- Family}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Family name. May look like }\texttt{\DIFadd{iMac\ Pro}}\DIFadd{. -}\item - \texttt{\DIFadd{SystemManufacturer}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1) --- Manufacturer}\\ - \textbf{\DIFadd{Description}}\DIFadd{: OEM manufacturer of the particular board. Use failsafe - unless strictly required. Do not override to contain }\texttt{\DIFadd{Apple\ Inc.}} - \DIFadd{on non-Apple hardware, as this confuses numerous services present in +\item + \texttt{SystemFamily}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Family\\ + \textbf{Description}: Family name. May look like \texttt{iMac\ Pro}. +\item + \texttt{SystemManufacturer}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Manufacturer\\ + \textbf{Description}: OEM manufacturer of the particular board. Use failsafe + unless strictly required. Do not override to contain \texttt{Apple\ Inc.} + on non-Apple hardware, as this confuses numerous services present in the operating system, such as firmware updates, eficheck, as well as kernel extensions developed in Acidanthera, such as Lilu and its plugins. In addition it will also make some operating systems such as Linux unbootable. -}\item - \texttt{\DIFadd{SystemProductName}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1), Product Name}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Preferred Mac model used to mark the device as +\item + \texttt{SystemProductName}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1), Product Name\\ + \textbf{Description}: Preferred Mac model used to mark the device as supported by the operating system. This value must be specified by any configuration for later automatic generation of the related values in this and other SMBIOS tables and related configuration parameters. If - }\texttt{\DIFadd{SystemProductName}} \DIFadd{is not compatible with the target operating - system, }\texttt{\DIFadd{-no\_compat\_check}} \DIFadd{boot argument may be used as an + \texttt{SystemProductName} is not compatible with the target operating + system, \texttt{-no\_compat\_check} boot argument may be used as an override. -} - \emph{\DIFadd{Note}}\DIFadd{: If }\texttt{\DIFadd{SystemProductName}} \DIFadd{is unknown, and related + \emph{Note}: If \texttt{SystemProductName} is unknown, and related fields are unspecified, default values should be assumed as being set - to }\texttt{\DIFadd{MacPro6,1}} \DIFadd{data. The list of known products can be found in - }\texttt{\DIFadd{AppleModels}}\DIFadd{. -}\item - \texttt{\DIFadd{SystemSKUNumber}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1) --- SKU Number}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Mac Board ID (}\texttt{\DIFadd{board-id}}\DIFadd{). May look like - }\texttt{\DIFadd{Mac-7BA5B2D9E42DDD94}} \DIFadd{or }\texttt{\DIFadd{Mac-F221BEC8}} \DIFadd{in older + to \texttt{MacPro6,1} data. The list of known products can be found in + \texttt{AppleModels}. +\item + \texttt{SystemSKUNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- SKU Number\\ + \textbf{Description}: Mac Board ID (\texttt{board-id}). May look like + \texttt{Mac-7BA5B2D9E42DDD94} or \texttt{Mac-F221BEC8} in older models. Sometimes it can be just empty. -}\item - \texttt{\DIFadd{SystemSerialNumber}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1) --- Serial Number}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Product serial number in defined format. Known +\item + \texttt{SystemSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Serial Number\\ + \textbf{Description}: Product serial number in defined format. Known formats are described in - }\href{https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/macserial/FORMAT.md}{\DIFadd{macserial}}\DIFadd{. -}\item - \texttt{\DIFadd{SystemUUID}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\DIFadd{, GUID}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1) --- UUID}\\ - \textbf{\DIFadd{Description}}\DIFadd{: A UUID is an identifier that is designed to be + \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/macserial/FORMAT.md}{macserial}. +\item + \texttt{SystemUUID}\\ + \textbf{Type}: \texttt{plist\ string}, GUID\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- UUID\\ + \textbf{Description}: A UUID is an identifier that is designed to be unique across both time and space. It requires no central registration process. -}\item - \texttt{\DIFadd{SystemVersion}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (OEM specified)}\\ - \textbf{\DIFadd{SMBIOS}}\DIFadd{: System Information (Type 1) --- Version}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Product iteration version number. May look like - }\texttt{\DIFadd{1.1}}\DIFadd{. -}\DIFaddend \end{enumerate} +\item + \texttt{SystemVersion}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Version\\ + \textbf{Description}: Product iteration version number. May look like + \texttt{1.1}. +\end{enumerate} \section{UEFI}\label{uefi} @@ -8056,7 +6644,7 @@ \subsection{Drivers}\label{uefidrivers} builtin \texttt{KeySupport}, which may work better or worse depending on the firmware. \\ \href{https://github.com/acidanthera/OpenCorePkg}{\texttt{OpenPartitionDxe}}\textbf{*} & Partition management driver with Apple Partitioning Scheme support. - This driver can be used to support loading older DMG recoveries such as \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{OS X }\DIFaddend 10.9 + This driver can be used to support loading older DMG recoveries such as OS X 10.9 using Apple Partitioning Scheme, or for loading other macOS Installers where these were created using the Apple Partitioning Scheme (creating macOS Installers using GPT avoids the need for this). OpenDuet already includes this driver. \\ @@ -8890,7 +7478,7 @@ \subsubsection{Managing macOS updates when using emulated NVRAM} The first reboot should correctly select \texttt{macOS Installer}. For second and subsequent reboots, if a \texttt{macOS Installer} entry is still present it should be manually selected (using just Enter, not \texttt{CTRL+Enter}). Once a \texttt{macOS Installer} entry is no longer present, the entry for the new OS will still be automatically selected if it was the previous boot default. -If not, it should be manually selected (at this point, \texttt{CTRL+Enter} is a good idea as any final remaining \DIFdelbegin \DIFdel{installion }\DIFdelend \DIFaddbegin \DIFadd{installation }\DIFaddend restarts +If not, it should be manually selected (at this point, \texttt{CTRL+Enter} is a good idea as any final remaining installation restarts will be to this entry). \emph{Note 1}: When using emulated NVRAM but not installing from within an existing installed macOS (i.e. when installing from @@ -8898,10 +7486,10 @@ \subsubsection{Managing macOS updates when using emulated NVRAM} \href{https://applelife.ru/posts/916248}{forum post} (in Russian) for additional options. -\emph{Note 2}: After upgrading from an \DIFdelbegin \DIFdel{ealier }\DIFdelend \DIFaddbegin \DIFadd{earlier }\DIFaddend macOS version to macOS Sonoma, the \texttt{Launchd.command} script should be +\emph{Note 2}: After upgrading from an earlier macOS version to macOS Sonoma, the \texttt{Launchd.command} script should be reinstalled, as a different strategy is required in order for NVRAM to be saved successfully. -\emph{Note 3}: In macOS Sonoma the following additional constraints apply to the ESP \DIFdelbegin \DIFdel{paritition }\DIFdelend \DIFaddbegin \DIFadd{partition }\DIFaddend on which +\emph{Note 3}: In macOS Sonoma the following additional constraints apply to the ESP partition on which OpenCore is installed, in order for the \texttt{Launchd.command} script to work successfully: \begin{itemize} @@ -8913,9 +7501,8 @@ \subsubsection{Managing macOS updates when using emulated NVRAM} \subsection{Properties}\label{uefiprops} \begin{enumerate} -\DIFaddbegin -\DIFaddend \item +\item \texttt{APFS}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Provide APFS support as configured in the @@ -9180,36 +7767,31 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} \end{itemize} \item - \DIFaddbegin \texttt{\DIFadd{GraphicsInputMirroring}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: + \texttt{GraphicsInputMirroring}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Apple’s own implementation of AppleEvent prevents keyboard input during graphics applications from appearing on the basic console input stream. -} - \DIFadd{With the default setting of }\texttt{\DIFadd{false}}\DIFadd{, OpenCore's builtin implementation of AppleEvent replicates this behaviour. -} + With the default setting of \texttt{false}, OpenCore's builtin implementation of AppleEvent replicates this behaviour. - \DIFadd{On non-Apple hardware this can stop keyboard input working in graphics-based applications such as Windows BitLocker + On non-Apple hardware this can stop keyboard input working in graphics-based applications such as Windows BitLocker which use non-Apple key input methods. -} - \DIFadd{The recommended setting on all hardware is }\texttt{\DIFadd{true}}\DIFadd{. -} + The recommended setting on all hardware is \texttt{true}. - \emph{\DIFadd{Note}}\DIFadd{: AppleEvent's default behaviour is intended to prevent unwanted queued keystrokes from appearing + \emph{Note}: AppleEvent's default behaviour is intended to prevent unwanted queued keystrokes from appearing after exiting graphics-based UEFI applications; this issue is already handled separately within OpenCore. -} \begin{itemize} \tightlist - \item \texttt{\DIFadd{true}} \DIFadd{--- Allow keyboard input to reach graphics mode apps which are not using Apple input protocols. - }\item \texttt{\DIFadd{false}} \DIFadd{--- Prevent key input mirroring to non-Apple protocols when in graphics mode. - }\end{itemize} + \item \texttt{true} --- Allow keyboard input to reach graphics mode apps which are not using Apple input protocols. + \item \texttt{false} --- Prevent key input mirroring to non-Apple protocols when in graphics mode. + \end{itemize} \item - \DIFaddend \texttt{KeyInitialDelay}\\ + \texttt{KeyInitialDelay}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{50} (500ms before first key repeat)\\ \textbf{Description}: Configures the initial delay before keyboard key repeats in the @@ -9282,110 +7864,40 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} \end{itemize} \item - \texttt{\DIFdelbegin \DIFdel{GraphicsInputMirroring}\DIFdelend \DIFaddbegin \DIFadd{PointerDwellClickTimeout}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{boolean}\DIFdelend \DIFaddbegin \DIFadd{integer}\DIFaddend }\\ - \textbf{Failsafe}: \texttt{\DIFdelbegin \DIFdel{false}\DIFdelend \DIFaddbegin \DIFadd{0}\DIFaddend }\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Apple’s own implementation of AppleEvent prevents keyboard input during graphics applications from appearing - on the basic console input stream. - }%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{With the default setting of }\texttt{\DIFdel{false}}%DIFAUXCMD -\DIFdel{, OpenCore's builtin implementation of AppleEvent replicates this behaviour}\DIFdelend \DIFaddbegin \DIFadd{Configure pointer dwell-clicking single left click timeout in + \texttt{PointerDwellClickTimeout}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Configure pointer dwell-clicking single left click timeout in milliseconds in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see }\texttt{\DIFadd{AppleEvent}} \DIFadd{setting)}\DIFaddend . + Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - \DIFdelbegin \DIFdel{On non-Apple hardware this can stop keyboard input working in graphics-based applications such as Windows BitLocker - which use non-Apple key input methods. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The recommended setting on all hardware is }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: AppleEvent's default behaviour is intended to prevent unwanted queued keystrokes from appearing - after exiting graphics-based UEFI applications; this issue is already handled separately within OpenCore}\DIFdelend \DIFaddbegin \DIFadd{When the timeout expires, a single left click is issued at the current position. - }\texttt{\DIFadd{0}} \DIFadd{indicates the timeout is disabled}\DIFaddend . - -\DIFdelbegin %DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < %%% -\DIFdelend \item - \texttt{\DIFdelbegin \DIFdel{true}\DIFdelend \DIFaddbegin \DIFadd{PointerDwellDoubleClickTimeout}\DIFaddend }\DIFdelbegin \DIFdel{--- Allow keyboard input to reach graphics mode apps which are not using Apple input protocols. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{false}} %DIFAUXCMD -\DIFdel{--- Prevent key input mirroring to non-Apple protocols when in graphics mode. - }%DIFDELCMD < \end{itemize} -%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PointerPollMin}}%DIFAUXCMD -\DIFdelend \\ + When the timeout expires, a single left click is issued at the current position. + \texttt{0} indicates the timeout is disabled. + +\item + \texttt{PointerDwellDoubleClickTimeout}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure \DIFdelbegin \DIFdel{minimal pointer polling period in - ms. -}\DIFdelend \DIFaddbegin \DIFadd{pointer dwell-clicking single left double click timeout in + \textbf{Description}: Configure pointer dwell-clicking single left double click timeout in milliseconds in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see }\texttt{\DIFadd{AppleEvent}} \DIFadd{setting). -}\DIFaddend - - \DIFdelbegin \DIFdel{This is the minimal period the OpenCore builtin AppleEvent driver polls - pointer devices (e.g. mice, trackpads)for motion events. -The current implementation defaults to 10 ms. - Setting }\DIFdelend \DIFaddbegin \DIFadd{When the timeout expires, a single left double click is issued at the current position. - }\DIFaddend \texttt{0} \DIFdelbegin \DIFdel{leaves this - default unchanged}\DIFdelend \DIFaddbegin \DIFadd{indicates the timeout is disabled}\DIFaddend . - -\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: The OEM Apple implementation uses a polling rate of 2 ms. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \item - \texttt{\DIFdelbegin \DIFdel{PointerPollMax}\DIFdelend \DIFaddbegin \DIFadd{PointerDwellRadius}\DIFaddend }\\ + Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). + + When the timeout expires, a single left double click is issued at the current position. + \texttt{0} indicates the timeout is disabled. + +\item + \texttt{PointerDwellRadius}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure \DIFdelbegin \DIFdel{maximum pointer polling period in ms. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This is the - maximum period the OpenCore builtin AppleEvent driver polls - pointer devices (e.g. mice, trackpads)for motion events. -The period - is increased up to this value as long as the devices do not respond - in time. The current implementation defaults to 80 ms. Setting - }\texttt{\DIFdel{0}} %DIFAUXCMD -\DIFdel{leaves this default unchanged. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Certain trackpad drivers often found in Dell laptops can be very slow - to respond when no physical movement happens. This can affect - OpenCanopy and FileVault 2 user interface responsiveness and loading times. - Increasing the polling periods can reduce the impact}\DIFdelend \DIFaddbegin \DIFadd{pointer dwell-clicking tolerance radius in pixels in the + \textbf{Description}: Configure pointer dwell-clicking tolerance radius in pixels in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see }\texttt{\DIFadd{AppleEvent}} \DIFadd{setting)}\DIFaddend . -\DIFaddbegin + Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - \DIFadd{The radius is scaled by }\texttt{\DIFadd{UIScale}}\DIFadd{. When the pointer leaves this radius, the timeouts for }\texttt{\DIFadd{PointerDwellClickTimeout}} - \DIFadd{and }\texttt{\DIFadd{PointerDwellDoubleClickTimeout}} \DIFadd{are reset and the new position is the centre + The radius is scaled by \texttt{UIScale}. When the pointer leaves this radius, the timeouts for \texttt{PointerDwellClickTimeout} + and \texttt{PointerDwellDoubleClickTimeout} are reset and the new position is the centre for the new dwell-clicking tolerance radius. -}\DIFaddend -\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: The OEM Apple implementation uses a polling rate of 2 ms. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \item +\item \texttt{PointerPollMask}\\ \textbf{Type}: \texttt{plist\ integer, 32 bit}\\ \textbf{Failsafe}: \texttt{-1}\\ @@ -9413,46 +7925,39 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} (see \texttt{AppleEvent} setting). \item - \DIFaddbegin \texttt{\DIFadd{PointerPollMax}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ integer}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{0}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Configure maximum pointer polling period in ms. -} + \texttt{PointerPollMax}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Configure maximum pointer polling period in ms. - \DIFadd{This is the maximum period the OpenCore builtin AppleEvent driver polls + This is the maximum period the OpenCore builtin AppleEvent driver polls pointer devices (e.g. mice, trackpads) for motion events. The period is increased up to this value as long as the devices do not respond in time. The current implementation defaults to 80 ms. Setting - }\texttt{\DIFadd{0}} \DIFadd{leaves this default unchanged. -} + \texttt{0} leaves this default unchanged. - \DIFadd{Certain trackpad drivers often found in Dell laptops can be very slow + Certain trackpad drivers often found in Dell laptops can be very slow to respond when no physical movement happens. This can affect OpenCanopy and FileVault 2 user interface responsiveness and loading times. Increasing the polling periods can reduce the impact. -} - \emph{\DIFadd{Note}}\DIFadd{: The OEM Apple implementation uses a polling rate of 2 ms. -} + \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. \item - \texttt{\DIFadd{PointerPollMin}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ integer}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{0}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Configure minimal pointer polling period in ms. -} + \texttt{PointerPollMin}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Configure minimal pointer polling period in ms. - \DIFadd{This is the minimal period the OpenCore builtin AppleEvent driver polls + This is the minimal period the OpenCore builtin AppleEvent driver polls pointer devices (e.g. mice, trackpads) for motion events. The current - implementation defaults to 10 ms. Setting }\texttt{\DIFadd{0}} \DIFadd{leaves this + implementation defaults to 10 ms. Setting \texttt{0} leaves this default unchanged. -} - \emph{\DIFadd{Note}}\DIFadd{: The OEM Apple implementation uses a polling rate of 2 ms. -} + \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. \item - \DIFaddend \texttt{PointerSpeedDiv}\\ + \texttt{PointerSpeedDiv}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{1}\\ \textbf{Description}: Configure pointer speed divisor in the OpenCore re-implementation @@ -9480,92 +7985,7 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} optionally be modified in combination with \texttt{PointerSpeedDiv}, according to user preference, to achieve customised mouse movement scaling. -\DIFdelbegin %DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PointerDwellClickTimeout}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Configure pointer dwell-clicking single left click timeout in - milliseconds in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see }\texttt{\DIFdel{AppleEvent}} %DIFAUXCMD -\DIFdel{setting). -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{When the timeout expires, a single left click is issued at the current position. - }\texttt{\DIFdel{0}} %DIFAUXCMD -\DIFdel{indicates the timeout is disabled. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PointerDwellDoubleClickTimeout}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Configure pointer dwell-clicking single left double click timeout in - milliseconds in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see }\texttt{\DIFdel{AppleEvent}} %DIFAUXCMD -\DIFdel{setting). -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{When the timeout expires, a single left double click is issued at the current position. - }\texttt{\DIFdel{0}} %DIFAUXCMD -\DIFdel{indicates the timeout is disabled. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{PointerDwellRadius}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ integer}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{0}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Configure pointer dwell-clicking tolerance radius in pixels in the - OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see }\texttt{\DIFdel{AppleEvent}} %DIFAUXCMD -\DIFdel{setting). -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The radius is scaled by }\texttt{\DIFdel{UIScale}}%DIFAUXCMD -\DIFdel{. When the pointer leaves this radius, the timeouts for }\texttt{\DIFdel{PointerDwellClickTimeout}} - %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{PointerDwellDoubleClickTimeout}} %DIFAUXCMD -\DIFdel{are reset and the new position is the centre - for the new dwell-clicking tolerance radius. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \end{enumerate} +\end{enumerate} \subsection{Audio Properties}\label{uefiaudioprops} @@ -9781,15 +8201,14 @@ \subsection{Drivers Properties}\label{uefidriversprops} \begin{enumerate} \item - \DIFaddbegin \texttt{\DIFadd{Arguments}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Some OpenCore plugins accept optional additional arguments + \texttt{Arguments}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Some OpenCore plugins accept optional additional arguments which may be specified as a string here. -} \item - \DIFaddend \texttt{Comment}\\ + \texttt{Comment}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty\\ \textbf{Description}: Arbitrary ASCII string used to provide human readable @@ -9802,26 +8221,7 @@ \subsection{Drivers Properties}\label{uefidriversprops} \textbf{Description}: If \texttt{false} this driver entry will be ignored. \item - \DIFdelbegin \texttt{\DIFdel{Path}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: Empty}%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Path of file to be loaded as a UEFI driver - from }\texttt{\DIFdel{OC/Drivers}} %DIFAUXCMD -\DIFdel{directory. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{LoadEarly}\\ + \texttt{LoadEarly}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Load the driver early in the OpenCore boot process, before NVRAM setup. @@ -9830,12 +8230,11 @@ \subsection{Drivers Properties}\label{uefidriversprops} given driver and purpose. \item - \texttt{\DIFdelbegin \DIFdel{Arguments}\DIFdelend \DIFaddbegin \DIFadd{Path}\DIFaddend }\\ + \texttt{Path}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Some OpenCore plugins accept optional additional arguments - which may be specified as a string here}\DIFdelend \DIFaddbegin \DIFadd{Path of file to be loaded as a UEFI driver - from }\texttt{\DIFadd{OC/Drivers}} \DIFadd{directory}\DIFaddend . + \textbf{Description}: Path of file to be loaded as a UEFI driver + from \texttt{OC/Drivers} directory. \end{enumerate} @@ -9997,200 +8396,15 @@ \subsection{Output Properties}\label{uefioutputprops} \begin{enumerate} \item - \texttt{\DIFdelbegin \DIFdel{InitialMode}\DIFdelend \DIFaddbegin \DIFadd{ClearScreenOnModeSwitch}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{boolean}\DIFaddend }\\ - \textbf{Failsafe}: \texttt{\DIFdelbegin \DIFdel{Auto}\DIFdelend \DIFaddbegin \DIFadd{false}\DIFaddend }\\ - \textbf{Description}: \DIFdelbegin \DIFdel{Selects the internal }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{mode in - which }\texttt{\DIFdel{TextRenderer}} %DIFAUXCMD -\DIFdel{will operate. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Available values are }\texttt{\DIFdel{Auto}}%DIFAUXCMD -\DIFdel{, }\texttt{\DIFdel{Text}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{Graphics}}%DIFAUXCMD -\DIFdel{. - }\texttt{\DIFdel{Text}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{Graphics}} %DIFAUXCMD -\DIFdel{specify the named mode. }\texttt{\DIFdel{Auto}} - %DIFAUXCMD -\DIFdel{uses the current mode of the system }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol when - one exists, defaulting to }\texttt{\DIFdel{Text}} %DIFAUXCMD -\DIFdel{mode otherwise. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{UEFI firmware typically supports }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{with two - rendering modes: }\texttt{\DIFdel{Graphics}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{Text}}%DIFAUXCMD -\DIFdel{. }\DIFdelend Some types of firmware \DIFdelbegin \DIFdel{do not provide a native }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{and rendering modes. OpenCore - and macOS expect text to only be shown in }\texttt{\DIFdel{Text}} %DIFAUXCMD -\DIFdel{mode but - graphics to be drawn in any mode, and this is how the OpenCore }\texttt{\DIFdel{Builtin}} - %DIFAUXCMD -\DIFdel{renderer behaves. Since this is not required by the UEFI specification, behaviour - of the system }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol, when it exists, may vary. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{TextRenderer}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ string}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{BuiltinGraphics}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Chooses renderer for text going through standard - console output. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Currently two renderers are supported: }\texttt{\DIFdel{Builtin}} %DIFAUXCMD -\DIFdel{and - }\texttt{\DIFdel{System}}%DIFAUXCMD -\DIFdel{. The }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{renderer uses firmware services - for text rendering, however with additional options provided to sanitize the output. The }\texttt{\DIFdel{Builtin}} %DIFAUXCMD -\DIFdel{renderer bypasses firmware - services and performs text rendering on its own. Each renderer - supports a different set of options. It is recommended to use the - }\texttt{\DIFdel{Builtin}} %DIFAUXCMD -\DIFdel{renderer, as it supports HiDPI modeand uses - full screen resolution. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Each renderer provides its own }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol - (in the case of }\texttt{\DIFdel{SystemGeneric}} %DIFAUXCMD -\DIFdel{only, this passes some - operations through to the system }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol, - if one exists). -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{Valid values of this option are combinations of the renderer to use - and the }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{mode to set on the underlying system - }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol before starting. To control the initial - mode of the provided }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol once started, use - the }\texttt{\DIFdel{InitialMode}} %DIFAUXCMD -\DIFdel{option. -}%DIFDELCMD < - -%DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{BuiltinGraphics}} %DIFAUXCMD -\DIFdel{--- Switch to - }\texttt{\DIFdel{Graphics}} - %DIFAUXCMD -\DIFdel{modethen use }\texttt{\DIFdel{Builtin}} %DIFAUXCMD -\DIFdel{renderer with - custom }\texttt{\DIFdel{ConsoleControl}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{BuiltinText}} %DIFAUXCMD -\DIFdel{--- Switch to }\texttt{\DIFdel{Text}} - %DIFAUXCMD -\DIFdel{mode then use }\texttt{\DIFdel{Builtin}} %DIFAUXCMD -\DIFdel{renderer with - custom }\texttt{\DIFdel{ConsoleControl}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{only clear part of the screen when switching + \texttt{ClearScreenOnModeSwitch}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Some types of firmware only clear part of the screen when switching from graphics to text mode, leaving a fragment of previously drawn images visible. This option fills the entire graphics screen with black colour before switching to - text mode}\DIFaddend . -\DIFdelbegin %DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{SystemGraphics}} %DIFAUXCMD -\DIFdel{--- Switch to }\texttt{\DIFdel{Graphics}} - %DIFAUXCMD -\DIFdel{mode then use }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{renderer with - custom }\texttt{\DIFdel{ConsoleControl}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{SystemText}} %DIFAUXCMD -\DIFdel{--- Switch to }\texttt{\DIFdel{Text}} - %DIFAUXCMD -\DIFdel{mode then use }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{renderer with - custom }\texttt{\DIFdel{ConsoleControl}}%DIFAUXCMD -\DIFdel{. - }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\texttt{\DIFdel{SystemGeneric}} %DIFAUXCMD -\DIFdel{--- Use }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{renderer with - custom a }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{protocol which passes its mode set and - get operations through to system }\texttt{\DIFdel{ConsoleControl}} %DIFAUXCMD -\DIFdel{when it exists. - }%DIFDELCMD < \end{itemize} -%DIFDELCMD < %%% -\DIFdelend - - \DIFdelbegin \DIFdel{The use of }\texttt{\DIFdel{BuiltinGraphics}} %DIFAUXCMD -\DIFdel{is straightforward. - For most platforms, it is necessary to enable }\texttt{\DIFdel{ProvideConsoleGop}} - %DIFAUXCMD -\DIFdel{and set }\texttt{\DIFdel{Resolution}} %DIFAUXCMD -\DIFdel{to }\texttt{\DIFdel{Max}}%DIFAUXCMD -\DIFdel{. The }\texttt{\DIFdel{BuiltinText}} %DIFAUXCMD -\DIFdel{variant is - an alternative to }\texttt{\DIFdel{BuiltinGraphics}} %DIFAUXCMD -\DIFdel{for some very old and defective - laptop firmware, which can only draw in }\texttt{\DIFdel{Text}} %DIFAUXCMD -\DIFdel{mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The use of }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{protocols is more complicated. Typically, - the preferred setting is }\texttt{\DIFdel{SystemGraphics}} %DIFAUXCMD -\DIFdel{or }\texttt{\DIFdel{SystemText}}%DIFAUXCMD -\DIFdel{. - Enabling }\texttt{\DIFdel{ProvideConsoleGop}}%DIFAUXCMD -\DIFdel{, setting }\texttt{\DIFdel{Resolution}} %DIFAUXCMD -\DIFdel{to - }\texttt{\DIFdel{Max}}%DIFAUXCMD -\DIFdel{, enabling }\texttt{\DIFdel{ReplaceTabWithSpace}} %DIFAUXCMD -\DIFdel{is useful on almost - all platforms. }\texttt{\DIFdel{SanitiseClearScreen}}%DIFAUXCMD -\DIFdel{, }\texttt{\DIFdel{IgnoreTextInGraphics}}%DIFAUXCMD -\DIFdel{, - and }\texttt{\DIFdel{ClearScreenOnModeSwitch}} %DIFAUXCMD -\DIFdel{are more specific, and their use - depends on the firmware. -}%DIFDELCMD < + text mode. -%DIFDELCMD < %%% -\DIFdelend \emph{Note}: \DIFdelbegin \DIFdel{Some Macs, such as the }\texttt{\DIFdel{MacPro5,1}}%DIFAUXCMD -\DIFdel{, may have incompatible - console output when using modern GPUs, and thus only }\DIFdelend \DIFaddbegin \DIFadd{This option only applies to }\DIFaddend \texttt{\DIFdelbegin \DIFdel{BuiltinGraphics}\DIFdelend \DIFaddbegin \DIFadd{System}\DIFaddend } \DIFdelbegin \DIFdel{may work for them in such cases. -NVIDIA GPUs may require additional - }\href{https://github.com/acidanthera/bugtracker/issues/1280}{\DIFdel{firmware upgrades}}%DIFAUXCMD -\DIFdel{. -}\DIFdelend \DIFaddbegin \DIFadd{renderer. -}\DIFaddend + \emph{Note}: This option only applies to \texttt{System} renderer. \item \texttt{ConsoleFont}\\ @@ -10240,53 +8454,19 @@ \subsection{Output Properties}\label{uefioutputprops} \emph{Note}: This field is best left empty on most types of firmware. \item - \texttt{\DIFdelbegin \DIFdel{Resolution}\DIFdelend \DIFaddbegin \DIFadd{DirectGopRendering}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{string}\DIFdelend \DIFaddbegin \DIFadd{boolean}\DIFaddend }\\ - \textbf{Failsafe}: \DIFdelbegin \DIFdel{Empty (Maintain current screen resolution)}\DIFdelend \DIFaddbegin \texttt{\DIFadd{false}}\DIFaddend \\ - \textbf{Description}: \DIFdelbegin \DIFdel{Sets console output screen resolution}\DIFdelend \DIFaddbegin \DIFadd{Use builtin graphics output protocol renderer for console}\DIFaddend . - - \DIFdelbegin %DIFDELCMD < \begin{itemize} -%DIFDELCMD < \tightlist -%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Set to }\DIFdelend \DIFaddbegin \DIFadd{On certain firmware, such as on the }\DIFaddend \texttt{\DIFdelbegin \DIFdel{WxH@Bpp}\DIFdelend \DIFaddbegin \DIFadd{MacPro5,1}\DIFaddend }\DIFdelbegin \DIFdel{(e.g. }\texttt{\DIFdel{1920x1080@32}}%DIFAUXCMD -\DIFdel{) or }\texttt{\DIFdel{WxH}} - %DIFAUXCMD -\DIFdel{(e.g. }\texttt{\DIFdel{1920x1080}}%DIFAUXCMD -\DIFdel{) formatted string to request custom resolution - from GOP if available. }%DIFDELCMD < \item %%% -\item %DIFAUXCMD -\DIFdel{Set to }\texttt{\DIFdel{Max}} %DIFAUXCMD -\DIFdel{to attempt using the largest - available screen resolution. - }%DIFDELCMD < \end{itemize} -%DIFDELCMD < %%% -\DIFdelend \DIFaddbegin \DIFadd{, this may provide better + \texttt{DirectGopRendering}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Use builtin graphics output protocol renderer for console. + + On certain firmware, such as on the \texttt{MacPro5,1}, this may provide better performance or fix rendering issues. However, this option is not recommended unless there is an obvious benefit as it may result in issues such as slower scrolling. -}\DIFaddend - - \DIFdelbegin \DIFdel{On HiDPI screens }\texttt{\DIFdel{APPLE\_VENDOR\_VARIABLE\_GUID}} %DIFAUXCMD -\texttt{\DIFdel{UIScale}} - %DIFAUXCMD -\DIFdel{NVRAM variable may need to be set to }\texttt{\DIFdel{02}} %DIFAUXCMD -\DIFdel{to enable HiDPI scaling - in }\texttt{\DIFdel{Builtin}} %DIFAUXCMD -\DIFdel{text renderer , FileVault 2 UEFI password interface, - and boot screen logo. Refer to the }%DIFDELCMD < \hyperref[nvramvarsrec]{Recommended Variables} -%DIFDELCMD < %%% -\DIFdel{section for details. }%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This will fail when console handle has no GOP protocol. When - the firmware does not provide it, it can be added with }\texttt{\DIFdel{ProvideConsoleGop}} - %DIFAUXCMD -\DIFdel{set to }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdelend \DIFaddbegin \DIFadd{This renderer fully supports }\texttt{\DIFadd{AppleEg2Info}} \DIFadd{protocol and will provide + + This renderer fully supports \texttt{AppleEg2Info} protocol and will provide screen rotation for all EFI applications. In order to provide seamless rotation - compatibility with }\texttt{\DIFadd{EfiBoot}}\DIFadd{, builtin }\texttt{\DIFadd{AppleFramebufferInfo}} \DIFadd{should - also be used, i.e. it may need to be overridden on Mac EFI}\DIFaddend . + compatibility with \texttt{EfiBoot}, builtin \texttt{AppleFramebufferInfo} should + also be used, i.e. it may need to be overridden on Mac EFI. \item \texttt{ForceResolution}\\ @@ -10303,69 +8483,7 @@ \subsection{Output Properties}\label{uefioutputprops} \texttt{OpenDuetPkg} implementation currently only supports Intel iGPUs and certain ATI GPUs. \item - \DIFdelbegin \texttt{\DIFdel{ClearScreenOnModeSwitch}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Some types of firmware only clear part of the screen when switching - from graphics to text mode, leaving a fragment of previously drawn images visible. - This option fills the entire graphics screen with black colour before switching to - text mode. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This option only applies to }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{renderer. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{DirectGopRendering}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Use builtin graphics output protocol renderer for console. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{On certain firmware, such as on the }\texttt{\DIFdel{MacPro5,1}}%DIFAUXCMD -\DIFdel{, this may provide better - performance or fix rendering issues. However, this option is not recommended unless - there is an obvious benefit as it may result in issues such as slower scrolling. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This renderer fully supports }\texttt{\DIFdel{AppleEg2Info}} %DIFAUXCMD -\DIFdel{protocol and will provide - screen rotation for all EFI applications. In order to provide seamless rotation - compatibility with }\texttt{\DIFdel{EfiBoot}}%DIFAUXCMD -\DIFdel{, builtin }\texttt{\DIFdel{AppleFramebufferInfo}} %DIFAUXCMD -\DIFdel{should - also be used, i.e. it may need to be overridden on Mac EFI. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{GopBurstMode}\\ + \texttt{GopBurstMode}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Enable write-combining (WC) caching for GOP memory, if system firmware has not @@ -10419,37 +8537,26 @@ \subsection{Output Properties}\label{uefioutputprops} \emph{Note}: This option only applies to the \texttt{System} renderer. \item - \texttt{\DIFdelbegin \DIFdel{ReplaceTabWithSpace}\DIFdelend \DIFaddbegin \DIFadd{InitialMode}\DIFaddend }\\ - \textbf{Type}: \texttt{plist\ \DIFdelbegin \DIFdel{boolean}\DIFdelend \DIFaddbegin \DIFadd{string}\DIFaddend }\\ - \textbf{Failsafe}: \texttt{\DIFdelbegin \DIFdel{false}\DIFdelend \DIFaddbegin \DIFadd{Auto}\DIFaddend }\\ - \textbf{Description}: \DIFaddbegin \DIFadd{Selects the internal }\texttt{\DIFadd{ConsoleControl}} \DIFadd{mode in - which }\texttt{\DIFadd{TextRenderer}} \DIFadd{will operate. -} + \texttt{InitialMode}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Auto}\\ + \textbf{Description}: Selects the internal \texttt{ConsoleControl} mode in + which \texttt{TextRenderer} will operate. - \DIFadd{Available values are }\texttt{\DIFadd{Auto}}\DIFadd{, }\texttt{\DIFadd{Text}} \DIFadd{and }\texttt{\DIFadd{Graphics}}\DIFadd{. - }\texttt{\DIFadd{Text}} \DIFadd{and }\texttt{\DIFadd{Graphics}} \DIFadd{specify the named mode. }\texttt{\DIFadd{Auto}} - \DIFadd{uses the current mode of the system }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol when - one exists, defaulting to }\texttt{\DIFadd{Text}} \DIFadd{mode otherwise. -} + Available values are \texttt{Auto}, \texttt{Text} and \texttt{Graphics}. + \texttt{Text} and \texttt{Graphics} specify the named mode. \texttt{Auto} + uses the current mode of the system \texttt{ConsoleControl} protocol when + one exists, defaulting to \texttt{Text} mode otherwise. - \DIFadd{UEFI firmware typically supports }\texttt{\DIFadd{ConsoleControl}} \DIFadd{with two - rendering modes: }\texttt{\DIFadd{Graphics}} \DIFadd{and }\texttt{\DIFadd{Text}}\DIFadd{. }\DIFaddend Some types of firmware - do not \DIFdelbegin \DIFdel{print tab characters or everything - that follows them, causing difficulties in using the UEFI Shell's builtin - text editor to edit property lists and other documents. This option makes the console - output spaces instead of tabs}\DIFdelend \DIFaddbegin \DIFadd{provide a native }\texttt{\DIFadd{ConsoleControl}} \DIFadd{and rendering modes. OpenCore - and macOS expect text to only be shown in }\texttt{\DIFadd{Text}} \DIFadd{mode but - graphics to be drawn in any mode, and this is how the OpenCore }\texttt{\DIFadd{Builtin}} - \DIFadd{renderer behaves. Since this is not required by the UEFI specification, behaviour - of the system }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol, when it exists, may vary}\DIFaddend . - -\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This option only applies to }\texttt{\DIFdel{System}} %DIFAUXCMD -\DIFdel{renderer. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \item + UEFI firmware typically supports \texttt{ConsoleControl} with two + rendering modes: \texttt{Graphics} and \texttt{Text}. Some types of firmware + do not provide a native \texttt{ConsoleControl} and rendering modes. OpenCore + and macOS expect text to only be shown in \texttt{Text} mode but + graphics to be drawn in any mode, and this is how the OpenCore \texttt{Builtin} + renderer behaves. Since this is not required by the UEFI specification, behaviour + of the system \texttt{ConsoleControl} protocol, when it exists, may vary. + +\item \texttt{ProvideConsoleGop}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -10492,48 +8599,43 @@ \subsection{Output Properties}\label{uefioutputprops} was mandatory and not configurable. Please do not use this unless required. \item - \DIFaddbegin \texttt{\DIFadd{ReplaceTabWithSpace}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Some types of firmware do not print tab characters or everything + \texttt{ReplaceTabWithSpace}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Some types of firmware do not print tab characters or everything that follows them, causing difficulties in using the UEFI Shell's builtin text editor to edit property lists and other documents. This option makes the console output spaces instead of tabs. -} - \emph{\DIFadd{Note}}\DIFadd{: This option only applies to }\texttt{\DIFadd{System}} \DIFadd{renderer. -} + \emph{Note}: This option only applies to \texttt{System} renderer. \item - \texttt{\DIFadd{Resolution}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: Empty (Maintain current screen resolution)}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Sets console output screen resolution. -} + \texttt{Resolution}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Maintain current screen resolution)\\ + \textbf{Description}: Sets console output screen resolution. \begin{itemize} \tightlist - \item \DIFadd{Set to }\texttt{\DIFadd{WxH@Bpp}} \DIFadd{(e.g. }\texttt{\DIFadd{1920x1080@32}}\DIFadd{) or }\texttt{\DIFadd{WxH}} - \DIFadd{(e.g. }\texttt{\DIFadd{1920x1080}}\DIFadd{) formatted string to request custom resolution + \item Set to \texttt{WxH@Bpp} (e.g. \texttt{1920x1080@32}) or \texttt{WxH} + (e.g. \texttt{1920x1080}) formatted string to request custom resolution from GOP if available. - }\item \DIFadd{Set to }\texttt{\DIFadd{Max}} \DIFadd{to attempt using the largest + \item Set to \texttt{Max} to attempt using the largest available screen resolution. - }\end{itemize} + \end{itemize} - \DIFadd{On HiDPI screens }\texttt{\DIFadd{APPLE\_VENDOR\_VARIABLE\_GUID}} \texttt{\DIFadd{UIScale}} - \DIFadd{NVRAM variable may need to be set to }\texttt{\DIFadd{02}} \DIFadd{to enable HiDPI scaling - in }\texttt{\DIFadd{Builtin}} \DIFadd{text renderer, FileVault 2 UEFI password interface, - and boot screen logo. Refer to the }\hyperref[nvramvarsrec]{Recommended Variables} - \DIFadd{section for details. -} + On HiDPI screens \texttt{APPLE\_VENDOR\_VARIABLE\_GUID} \texttt{UIScale} + NVRAM variable may need to be set to \texttt{02} to enable HiDPI scaling + in \texttt{Builtin} text renderer, FileVault 2 UEFI password interface, + and boot screen logo. Refer to the \hyperref[nvramvarsrec]{Recommended Variables} + section for details. - \emph{\DIFadd{Note}}\DIFadd{: This will fail when console handle has no GOP protocol. When - the firmware does not provide it, it can be added with }\texttt{\DIFadd{ProvideConsoleGop}} - \DIFadd{set to }\texttt{\DIFadd{true}}\DIFadd{. -} + \emph{Note}: This will fail when console handle has no GOP protocol. When + the firmware does not provide it, it can be added with \texttt{ProvideConsoleGop} + set to \texttt{true}. \item - \DIFaddend \texttt{SanitiseClearScreen}\\ + \texttt{SanitiseClearScreen}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Some types of firmware reset screen resolutions to a failsafe @@ -10546,79 +8648,72 @@ \subsection{Output Properties}\label{uefioutputprops} an empty string for this option to work. \item - \DIFaddbegin \texttt{\DIFadd{TextRenderer}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ string}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{BuiltinGraphics}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Chooses renderer for text going through standard + \texttt{TextRenderer}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{BuiltinGraphics}\\ + \textbf{Description}: Chooses renderer for text going through standard console output. -} - \DIFadd{Currently two renderers are supported: }\texttt{\DIFadd{Builtin}} \DIFadd{and - }\texttt{\DIFadd{System}}\DIFadd{. The }\texttt{\DIFadd{System}} \DIFadd{renderer uses firmware services + Currently two renderers are supported: \texttt{Builtin} and + \texttt{System}. The \texttt{System} renderer uses firmware services for text rendering, however with additional options provided to - sanitize the output. The }\texttt{\DIFadd{Builtin}} \DIFadd{renderer bypasses firmware + sanitize the output. The \texttt{Builtin} renderer bypasses firmware services and performs text rendering on its own. Each renderer supports a different set of options. It is recommended to use the - }\texttt{\DIFadd{Builtin}} \DIFadd{renderer, as it supports HiDPI mode and uses + \texttt{Builtin} renderer, as it supports HiDPI mode and uses full screen resolution. -} - \DIFadd{Each renderer provides its own }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol - (in the case of }\texttt{\DIFadd{SystemGeneric}} \DIFadd{only, this passes some - operations through to the system }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol, + Each renderer provides its own \texttt{ConsoleControl} protocol + (in the case of \texttt{SystemGeneric} only, this passes some + operations through to the system \texttt{ConsoleControl} protocol, if one exists). -} - \DIFadd{Valid values of this option are combinations of the renderer to use - and the }\texttt{\DIFadd{ConsoleControl}} \DIFadd{mode to set on the underlying system - }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol before starting. To control the initial - mode of the provided }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol once started, use - the }\texttt{\DIFadd{InitialMode}} \DIFadd{option. -} + Valid values of this option are combinations of the renderer to use + and the \texttt{ConsoleControl} mode to set on the underlying system + \texttt{ConsoleControl} protocol before starting. To control the initial + mode of the provided \texttt{ConsoleControl} protocol once started, use + the \texttt{InitialMode} option. \begin{itemize} \tightlist - \item \texttt{\DIFadd{BuiltinGraphics}} \DIFadd{--- Switch to }\texttt{\DIFadd{Graphics}} - \DIFadd{mode then use }\texttt{\DIFadd{Builtin}} \DIFadd{renderer with - custom }\texttt{\DIFadd{ConsoleControl}}\DIFadd{. - }\item \texttt{\DIFadd{BuiltinText}} \DIFadd{--- Switch to }\texttt{\DIFadd{Text}} - \DIFadd{mode then use }\texttt{\DIFadd{Builtin}} \DIFadd{renderer with - custom }\texttt{\DIFadd{ConsoleControl}}\DIFadd{. - }\item \texttt{\DIFadd{SystemGraphics}} \DIFadd{--- Switch to }\texttt{\DIFadd{Graphics}} - \DIFadd{mode then use }\texttt{\DIFadd{System}} \DIFadd{renderer with - custom }\texttt{\DIFadd{ConsoleControl}}\DIFadd{. - }\item \texttt{\DIFadd{SystemText}} \DIFadd{--- Switch to }\texttt{\DIFadd{Text}} - \DIFadd{mode then use }\texttt{\DIFadd{System}} \DIFadd{renderer with - custom }\texttt{\DIFadd{ConsoleControl}}\DIFadd{. - }\item \texttt{\DIFadd{SystemGeneric}} \DIFadd{--- Use }\texttt{\DIFadd{System}} \DIFadd{renderer with - custom a }\texttt{\DIFadd{ConsoleControl}} \DIFadd{protocol which passes its mode set and - get operations through to system }\texttt{\DIFadd{ConsoleControl}} \DIFadd{when it exists. - }\end{itemize} - - \DIFadd{The use of }\texttt{\DIFadd{BuiltinGraphics}} \DIFadd{is straightforward. - For most platforms, it is necessary to enable }\texttt{\DIFadd{ProvideConsoleGop}} - \DIFadd{and set }\texttt{\DIFadd{Resolution}} \DIFadd{to }\texttt{\DIFadd{Max}}\DIFadd{. The }\texttt{\DIFadd{BuiltinText}} \DIFadd{variant is - an alternative to }\texttt{\DIFadd{BuiltinGraphics}} \DIFadd{for some very old and defective - laptop firmware, which can only draw in }\texttt{\DIFadd{Text}} \DIFadd{mode. -} + \item \texttt{BuiltinGraphics} --- Switch to \texttt{Graphics} + mode then use \texttt{Builtin} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{BuiltinText} --- Switch to \texttt{Text} + mode then use \texttt{Builtin} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{SystemGraphics} --- Switch to \texttt{Graphics} + mode then use \texttt{System} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{SystemText} --- Switch to \texttt{Text} + mode then use \texttt{System} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{SystemGeneric} --- Use \texttt{System} renderer with + custom a \texttt{ConsoleControl} protocol which passes its mode set and + get operations through to system \texttt{ConsoleControl} when it exists. + \end{itemize} - \DIFadd{The use of }\texttt{\DIFadd{System}} \DIFadd{protocols is more complicated. Typically, - the preferred setting is }\texttt{\DIFadd{SystemGraphics}} \DIFadd{or }\texttt{\DIFadd{SystemText}}\DIFadd{. - Enabling }\texttt{\DIFadd{ProvideConsoleGop}}\DIFadd{, setting }\texttt{\DIFadd{Resolution}} \DIFadd{to - }\texttt{\DIFadd{Max}}\DIFadd{, enabling }\texttt{\DIFadd{ReplaceTabWithSpace}} \DIFadd{is useful on almost - all platforms. }\texttt{\DIFadd{SanitiseClearScreen}}\DIFadd{, }\texttt{\DIFadd{IgnoreTextInGraphics}}\DIFadd{, - and }\texttt{\DIFadd{ClearScreenOnModeSwitch}} \DIFadd{are more specific, and their use + The use of \texttt{BuiltinGraphics} is straightforward. + For most platforms, it is necessary to enable \texttt{ProvideConsoleGop} + and set \texttt{Resolution} to \texttt{Max}. The \texttt{BuiltinText} variant is + an alternative to \texttt{BuiltinGraphics} for some very old and defective + laptop firmware, which can only draw in \texttt{Text} mode. + + The use of \texttt{System} protocols is more complicated. Typically, + the preferred setting is \texttt{SystemGraphics} or \texttt{SystemText}. + Enabling \texttt{ProvideConsoleGop}, setting \texttt{Resolution} to + \texttt{Max}, enabling \texttt{ReplaceTabWithSpace} is useful on almost + all platforms. \texttt{SanitiseClearScreen}, \texttt{IgnoreTextInGraphics}, + and \texttt{ClearScreenOnModeSwitch} are more specific, and their use depends on the firmware. -} - \emph{\DIFadd{Note}}\DIFadd{: Some Macs, such as the }\texttt{\DIFadd{MacPro5,1}}\DIFadd{, may have incompatible - console output when using modern GPUs, and thus only }\texttt{\DIFadd{BuiltinGraphics}} - \DIFadd{may work for them in such cases. NVIDIA GPUs may require additional - }\href{https://github.com/acidanthera/bugtracker/issues/1280}{\DIFadd{firmware upgrades}}\DIFadd{. -} + \emph{Note}: Some Macs, such as the \texttt{MacPro5,1}, may have incompatible + console output when using modern GPUs, and thus only \texttt{BuiltinGraphics} + may work for them in such cases. NVIDIA GPUs may require additional + \href{https://github.com/acidanthera/bugtracker/issues/1280}{firmware upgrades}. \item - \DIFaddend \texttt{UIScale}\\ + \texttt{UIScale}\\ \textbf{Type}: \texttt{plist\ integer}, 8 bit\\ \textbf{Failsafe}: \texttt{-1}\\ \textbf{Description}: User interface scaling factor. @@ -10715,7 +8810,7 @@ \subsection{ProtocolOverrides Properties}\label{uefiprotoprops} \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Replaces the Apple Framebuffer Info protocol with a builtin version. This may be used to override framebuffer information on VMs and legacy Macs - to improve compatibility with legacy EfiBoot such as the one in \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.4. + to improve compatibility with legacy EfiBoot such as the one in Mac OS X 10.4. \emph{Note}: The current implementation of this property results in it only being active when GOP is available (it is always equivalent to \texttt{false} otherwise). @@ -10863,19 +8958,17 @@ \subsection{Quirks Properties}\label{uefiquirkprops} this option tries to force enable it. \item - \DIFaddbegin \texttt{\DIFadd{DisableSecurityPolicy}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Disable platform security policy. -} + \texttt{DisableSecurityPolicy}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Disable platform security policy. - \emph{\DIFadd{Note}}\DIFadd{: This setting disables various security features of the firmware, + \emph{Note}: This setting disables various security features of the firmware, defeating the purpose of any kind of Secure Boot. Do NOT enable if using UEFI Secure Boot. -} \item - \DIFaddend \texttt{EnableVectorAcceleration}\\ + \texttt{EnableVectorAcceleration}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Enable AVX vector acceleration of SHA-512 and SHA-384 hashing algorithms. @@ -10893,32 +8986,7 @@ \subsection{Quirks Properties}\label{uefiquirkprops} firmware. Use BIOS to enable virtualization where possible. \item - \DIFdelbegin \texttt{\DIFdel{DisableSecurityPolicy}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Disable platform security policy. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\emph{\DIFdel{Note}}%DIFAUXCMD -\DIFdel{: This setting disables various security features of the firmware, - defeating the purpose of any kind of Secure Boot. Do NOT enable if using - UEFI Secure Boot. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\DIFdelend \texttt{ExitBootServicesDelay}\\ + \texttt{ExitBootServicesDelay}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Adds delay in microseconds after \texttt{EXIT\_BOOT\_SERVICES} @@ -11012,65 +9080,8 @@ \subsection{Quirks Properties}\label{uefiquirkprops} \end{itemize} \item - \DIFdelbegin \texttt{\DIFdel{ResizeUsePciRbIo}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Use PciRootBridgeIo for }\DIFdelend \texttt{ResizeGpuBars}\DIFdelbegin \DIFdel{and }\texttt{\DIFdel{ResizeAppleGpuBars}} -%DIFAUXCMD -%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{The quirk makes }\texttt{\DIFdel{ResizeGpuBars}} %DIFAUXCMD -\DIFdel{and }\texttt{\DIFdel{ResizeAppleGpuBars}} %DIFAUXCMD -\DIFdel{use }\texttt{\DIFdel{PciRootBridgeIo}} %DIFAUXCMD -\DIFdel{instead of PciIo. - This is needed on systems with a buggy }\texttt{\DIFdel{PciIo}} %DIFAUXCMD -\DIFdel{implementation where trying to configure - Resizable BAR results in }\texttt{\DIFdel{Capability I/O Error}}%DIFAUXCMD -\DIFdel{. Typically this is required on - older systems which have been modified with }\href{https://github.com/xCuri0/ReBarUEFI}{\DIFdel{ReBarUEFI}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{ShimRetainProtocol}}%DIFAUXCMD -\DIFdelend \\ - \textbf{Type}: \DIFdelbegin \texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: Request Linux Shim to keep protocol installed for subsequent image loads. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdel{This option is only required if chaining OpenCore from Shim. It must be set in order to allow - OpenCore to launch items which are verified by certificates present in Shim, but not in the - system Secure Boot database. -}%DIFDELCMD < - -%DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{ResizeGpuBars}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\DIFdelend \texttt{plist\ integer}\\ + \texttt{ResizeGpuBars}\\ + \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{-1}\\ \textbf{Description}: Configure GPU PCI BAR sizes. @@ -11125,31 +9136,28 @@ \subsection{Quirks Properties}\label{uefiquirkprops} like \href{https://github.com/xCuri0/ReBarUEFI}{ReBarUEFI}. \item - \DIFaddbegin \texttt{\DIFadd{ResizeUsePciRbIo}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Use PciRootBridgeIo for }\texttt{\DIFadd{ResizeGpuBars}} \DIFadd{and }\texttt{\DIFadd{ResizeAppleGpuBars}} + \texttt{ResizeUsePciRbIo}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Use PciRootBridgeIo for \texttt{ResizeGpuBars} and \texttt{ResizeAppleGpuBars} - \DIFadd{The quirk makes }\texttt{\DIFadd{ResizeGpuBars}} \DIFadd{and }\texttt{\DIFadd{ResizeAppleGpuBars}} \DIFadd{use }\texttt{\DIFadd{PciRootBridgeIo}} \DIFadd{instead of PciIo. - This is needed on systems with a buggy }\texttt{\DIFadd{PciIo}} \DIFadd{implementation where trying to configure - Resizable BAR results in }\texttt{\DIFadd{Capability I/O Error}}\DIFadd{. Typically this is required on - older systems which have been modified with }\href{https://github.com/xCuri0/ReBarUEFI}{\DIFadd{ReBarUEFI}}\DIFadd{. -} + The quirk makes \texttt{ResizeGpuBars} and \texttt{ResizeAppleGpuBars} use \texttt{PciRootBridgeIo} instead of PciIo. + This is needed on systems with a buggy \texttt{PciIo} implementation where trying to configure + Resizable BAR results in \texttt{Capability I/O Error}. Typically this is required on + older systems which have been modified with \href{https://github.com/xCuri0/ReBarUEFI}{ReBarUEFI}. \item - \texttt{\DIFadd{ShimRetainProtocol}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: Request Linux Shim to keep protocol installed for subsequent image loads. -} + \texttt{ShimRetainProtocol}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Request Linux Shim to keep protocol installed for subsequent image loads. - \DIFadd{This option is only required if chaining OpenCore from Shim. It must be set in order to allow + This option is only required if chaining OpenCore from Shim. It must be set in order to allow OpenCore to launch items which are verified by certificates present in Shim, but not in the system Secure Boot database. -} \item - \DIFaddend \texttt{TscSyncTimeout}\\ + \texttt{TscSyncTimeout}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Attempts to perform TSC synchronisation with a specified timeout. @@ -11211,14 +9219,13 @@ \subsection{ReservedMemory Properties}\label{uefirsvdprops} reference for the entry. Whether this value is used is implementation defined. \item - \DIFaddbegin \texttt{\DIFadd{Enabled}}\\ - \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ - \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ - \textbf{\DIFadd{Description}}\DIFadd{: This region will not be reserved unless set to }\texttt{\DIFadd{true}}\DIFadd{. -} + \texttt{Enabled}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: This region will not be reserved unless set to \texttt{true}. \item - \DIFaddend \texttt{Size}\\ + \texttt{Size}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Size of the reserved memory region, must be page-aligned (4 KBs). @@ -11249,27 +9256,7 @@ \subsection{ReservedMemory Properties}\label{uefirsvdprops} \item \texttt{PalCode} --- \texttt{EfiPalCode} \end{itemize} -\DIFdelbegin %DIFDELCMD < \item -\item%DIFAUXCMD -%DIFDELCMD < %%% -\texttt{\DIFdel{Enabled}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Type}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{plist\ boolean}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Failsafe}}%DIFAUXCMD -\DIFdel{: }\texttt{\DIFdel{false}}%DIFAUXCMD -%DIFDELCMD < \\ -%DIFDELCMD < %%% -\textbf{\DIFdel{Description}}%DIFAUXCMD -\DIFdel{: This region will not be reserved unless set to }\texttt{\DIFdel{true}}%DIFAUXCMD -\DIFdel{. -}%DIFDELCMD < - -%DIFDELCMD < %%% -\DIFdelend \end{enumerate} +\end{enumerate} \section{Troubleshooting}\label{troubleshooting} @@ -11290,7 +9277,7 @@ \subsection{Legacy Apple OS}\label{legacyapple} for a list of the bundled device-specific builds for legacy operating systems. However, as this may not always be accurate, the latest versions are listed below. -\subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{OS X }\DIFaddend 10.8 and 10.9}\label{legacy108} +\subsubsection{OS X 10.8 and 10.9}\label{legacy108} \begin{itemize} \item Disk images on these systems use the Apple Partitioning Scheme @@ -11304,31 +9291,31 @@ \subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{OS X loading in order to inject networking or audio drivers. \end{itemize} -\subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.7}\label{legacy107} +\subsubsection{Mac OS X 10.7}\label{legacy107} \begin{itemize} \item All previous issues apply. \item \texttt{SSSE3} support (not to be confused with \texttt{SSE3} support) - is a hard requirement for \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.7 kernel. + is a hard requirement for Mac OS X 10.7 kernel. \item Many kexts, including \texttt{Lilu} when 32-bit kernel is used and a lot of \texttt{Lilu} plugins, are - unsupported on \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.7 and older as they require newer - kernel APIs, which are not part of the \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.7 SDK. - \item Prior to \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{OS X}\DIFaddend ~10.8 KASLR sliding is not supported, which + unsupported on Mac OS X~10.7 and older as they require newer + kernel APIs, which are not part of the Mac OS X~10.7 SDK. + \item Prior to OS X~10.8 KASLR sliding is not supported, which will result in memory allocation failures on firmware that utilise lower memory for their own purposes. Refer to \href{https://github.com/acidanthera/bugtracker/issues/1125}{acidanthera/bugtracker\#1125} for tracking. \end{itemize} -\subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.6}\label{legacy106} +\subsubsection{Mac OS X 10.6}\label{legacy106} \begin{itemize} \item All previous issues apply. - \item \texttt{SSSE3} support is a requirement for \DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.6 kernel + \item \texttt{SSSE3} support is a requirement for Mac OS X 10.6 kernel with 64-bit userspace enabled. This limitation can mostly be lifted by enabling the \texttt{LegacyCommpage} quirk. - \item Last released installer images for \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6 are \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6.7 + \item Last released installer images for Mac OS X~10.6 are Mac OS X~10.6.7 builds \texttt{10J3250} (for \texttt{MacBookPro8,x}) and \texttt{10J4139} (for \texttt{iMac12,x}), without Xcode). These images are limited to their target model identifiers and have no @@ -11336,9 +9323,9 @@ \subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac O (with \texttt{ACDT} suffix) without model restrictions can be found \href{https://archive.org/details/10.6.7-10j3250-disk-images}{here} (\href{https://mega.nz/folder/z5YUhYTb#gA\_IRY5KMuYpnNCg7kR3ug}{MEGA Mirror}), - assuming \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6 is legally owned. Refer to the \texttt{DIGEST.txt} file + assuming Mac OS X~10.6 is legally owned. Refer to the \texttt{DIGEST.txt} file for details. Note that these are the earliest tested - versions of \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.6 with OpenCore. + versions of Mac OS X~10.6 with OpenCore. \end{itemize} Model checking may also be erased by editing \texttt{OSInstall.mpkg} @@ -11369,7 +9356,7 @@ \subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac O hdiutil convert ReadWrite.dmg -format UDZO -o ReadOnly.dmg \end{lstlisting} -\subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.5}\label{legacy105} +\subsubsection{Mac OS X 10.5}\label{legacy105} \begin{itemize} \item All previous issues apply. @@ -11381,25 +9368,25 @@ \subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac O \texttt{Mkext} kext injection will still work without noticeable performance drain and will be chosen automatically when \texttt{KernelCache} is set to \texttt{Auto}. - \item Last released installer image for \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.5 is \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.5.7 + \item Last released installer image for Mac OS X~10.5 is Mac OS X~10.5.7 build \texttt{9J3050} (for \texttt{MacBookPro5,3}). Unlike the others, this image is not limited to the target model identifiers and can be used as is. The original \texttt{9J3050} image can be found \href{https://archive.org/details/10.5.7-9-j-3050}{here} (\href{https://mega.nz/folder/inRBTarD#zanf7fUbviwz3WHBU5xpCg}{MEGA Mirror}), - assuming \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.5 is legally owned. Refer to the \texttt{DIGEST.txt} file + assuming Mac OS X~10.5 is legally owned. Refer to the \texttt{DIGEST.txt} file for details. Note that this is the earliest tested - version of \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.5 with OpenCore. + version of Mac OS X~10.5 with OpenCore. \end{itemize} -\subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac OS X }\DIFaddend 10.4}\label{legacy104} +\subsubsection{Mac OS X 10.4}\label{legacy104} \begin{itemize} \item All previous issues apply. \item This macOS version has a hard requirement to access all the optional packages on the second DVD disk installation media, requiring either two disks or USB media installation. - \item Last released installer images for \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.4 are \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.4.10 + \item Last released installer images for Mac OS X~10.4 are Mac OS X~10.4.10 builds \texttt{8R4061a} (for \texttt{MacBookPro3,1}) and \texttt{8R4088} (for \texttt{iMac7,1})). These images are limited to their target model identifiers as on newer macOS versions. @@ -11407,9 +9394,9 @@ \subsubsection{\DIFdelbegin \DIFdel{macOS }\DIFdelend \DIFaddbegin \DIFadd{Mac O model restrictions can be found \href{https://archive.org/details/10.4.10-8-r-4088-acdt}{here} (\href{https://mega.nz/folder/D3ASzLzA\#7sjYXE2X09f6aGjol\_C7dg}{MEGA Mirror}), - assuming \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.4 is legally owned. Refer to the \texttt{DIGEST.txt} file + assuming Mac OS X~10.4 is legally owned. Refer to the \texttt{DIGEST.txt} file for details. Note that these are the earliest tested - versions of \DIFdelbegin \DIFdel{macOS}\DIFdelend \DIFaddbegin \DIFadd{Mac OS X}\DIFaddend ~10.4 with OpenCore. + versions of Mac OS X~10.4 with OpenCore. \end{itemize} \subsection{UEFI Secure Boot}\label{uefisecureboot} diff --git a/Docs/Differences/PreviousConfiguration.tex b/Docs/Differences/PreviousConfiguration.tex index e3d7dfa5be2..100c18b3d02 100755 --- a/Docs/Differences/PreviousConfiguration.tex +++ b/Docs/Differences/PreviousConfiguration.tex @@ -94,7 +94,7 @@ \vspace{0.2in} - Reference Manual (0.9.9) + Reference Manual (1.0.0) \vspace{0.2in} @@ -152,6 +152,7 @@ \section{Introduction}\label{introduction} \subsection{Generic Terms}\label{generic-terms} \begin{itemize} + \item \texttt{plist} --- Subset of ASCII Property List format written in XML, also know as XML plist format version 1. Uniform Type Identifier @@ -220,6 +221,7 @@ \section{Configuration}\label{configuration-overview} \subsection{Configuration Terms}\label{configuration-terms} \begin{itemize} + \item \texttt{OC\ config} --- OpenCore Configuration file in \texttt{plist} format named \texttt{config.plist}. It provides an extensible way @@ -891,6 +893,7 @@ \subsection{Introduction}\label{acpiintro} \subsection{Properties}\label{acpiprops} \begin{enumerate} + \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ array}\\ @@ -931,6 +934,7 @@ \subsection{Properties}\label{acpiprops} \subsection{Add Properties}\label{acpipropsadd} \begin{enumerate} + \item \texttt{Comment}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -964,6 +968,7 @@ \subsection{Add Properties}\label{acpipropsadd} \subsection{Delete Properties}\label{acpipropsdelete} \begin{enumerate} + \item \texttt{All}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -1388,6 +1393,7 @@ \subsection{MmioWhitelist Properties}\label{booterpropsmmio} \subsection{Patch Properties}\label{booterpropspatch} \begin{enumerate} + \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -1484,11 +1490,11 @@ \subsection{Quirks Properties}\label{booterpropsquirks} \tightlist \item No better slide exists (all the memory is used) \item \texttt{slide=0} is forced (by an argument or safe mode) - \item KASLR (slide) is unsupported (this is macOS 10.7 or older) + \item KASLR (slide) is unsupported (this is Mac OS X 10.7 or older) \end{itemize} - This quirk requires \texttt{ProvideCustomSlide} to be enabled and - typically also requires enabling \texttt{AvoidRuntimeDefrag} to function + This quirk typically requires \texttt{ProvideCustomSlide} and + \texttt{AvoidRuntimeDefrag} to be enabled to function correctly. Hibernation is not supported when booting with a relocation block, which will only be used if required when the quirk is enabled. @@ -1617,7 +1623,7 @@ \subsection{Quirks Properties}\label{booterpropsquirks} \textbf{Description}: Fix errors in early Mac OS X boot.efi images. Modern secure PE loaders will refuse to load \texttt{boot.efi} images from - macOS 10.4 to 10.12 due to these files containing \texttt{W\^{}X} errors + Mac OS X 10.4 to macOS 10.12 due to these files containing \texttt{W\^{}X} errors (in all versions) and illegal overlapping sections (in 10.4 and 10.5 32-bit versions only). @@ -1646,7 +1652,7 @@ \subsection{Quirks Properties}\label{booterpropsquirks} within their filesystem. \end{itemize} - \emph{Note 3}: This quirk is needed for macOS 10.4 to 10.12 (and + \emph{Note 3}: This quirk is needed for Mac OS X 10.4 to macOS 10.12 (and higher, if Apple secure boot is not enabled), but only when the firmware itself includes a modern, more secure PE COFF image loader. This applies to current builds of OpenDuet, and to OVMF if built from audk source code. @@ -1802,7 +1808,7 @@ \subsection{Quirks Properties}\label{booterpropsquirks} \emph{Note 2}: The need for this quirk is determined by early boot failures. This quirk replaces \texttt{EnableWriteUnprotector} on firmware supporting Memory Attribute Tables (MAT). This quirk is typically unnecessary when using - \texttt{OpenDuetPkg} but may be required to boot macOS 10.6, and earlier, for + \texttt{OpenDuetPkg} but may be required to boot Mac OS X 10.6, and earlier, for reasons that are as yet unclear. \item @@ -1943,6 +1949,7 @@ \subsection{Introduction}\label{devpropsintro} \subsection{Properties}\label{devpropsprops} \begin{enumerate} + \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ dict}\\ @@ -2022,6 +2029,7 @@ \subsection{Introduction}\label{kernelintro} \subsection{Properties}\label{kernelprops} \begin{enumerate} + \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ array}\\ @@ -2108,6 +2116,7 @@ \subsection{Properties}\label{kernelprops} \subsection{Add Properties}\label{kernelpropsadd} \begin{enumerate} + \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -2204,6 +2213,7 @@ \subsection{Add Properties}\label{kernelpropsadd} \subsection{Block Properties}\label{kernelpropsblock} \begin{enumerate} + \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -2271,6 +2281,7 @@ \subsection{Block Properties}\label{kernelpropsblock} \subsection{Emulate Properties}\label{kernelpropsemu} \begin{enumerate} + \item \texttt{Cpuid1Data}\\ \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ @@ -2377,6 +2388,7 @@ \subsection{Emulate Properties}\label{kernelpropsemu} \subsection{Force Properties}\label{kernelpropsforce} \begin{enumerate} + \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -2448,6 +2460,7 @@ \subsection{Force Properties}\label{kernelpropsforce} \subsection{Patch Properties}\label{kernelpropspatch} \begin{enumerate} + \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -2948,7 +2961,7 @@ \subsection{Quirks Properties}\label{kernelpropsquirks} \texttt{XhciPortLimit}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ - \textbf{Requirement}: 10.11 (not required for older)\\ + \textbf{Requirement}: 10.11+ (not required for older)\\ \textbf{Description}: Patch various kexts (AppleUSBXHCI.kext, AppleUSBXHCIPCI.kext, IOUSBHostFamily.kext) to remove USB port count limit of 15 ports. @@ -2967,6 +2980,7 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} to install and troubleshoot such macOS installations. \begin{enumerate} + \item \texttt{CustomKernel}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -2984,13 +2998,13 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Use \texttt{kernelcache} with different checksums when available. - On macOS 10.6 and earlier, \texttt{kernelcache} filename has a checksum, which essentially + On Mac OS X 10.6 and earlier, \texttt{kernelcache} filename has a checksum, which essentially is \texttt{adler32} from SMBIOS product name and EfiBoot device path. On certain firmware, the EfiBoot device path differs between UEFI and macOS due to ACPI or hardware specifics, rendering \texttt{kernelcache} checksum as always different. This setting allows matching the latest \texttt{kernelcache} with a suitable architecture - when the \texttt{kernelcache} without suffix is unavailable, improving macOS 10.6 boot + when the \texttt{kernelcache} without suffix is unavailable, improving Mac OS X 10.6 boot performance on several platforms. \item @@ -3000,7 +3014,7 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \textbf{Description}: Prefer specified kernel architecture (\texttt{i386}, \texttt{i386-user32}, \texttt{x86\_64}) when available. - On macOS 10.7 and earlier, the XNU kernel can boot with architectures different from + On Mac OS X 10.7 and earlier, the XNU kernel can boot with architectures different from the usual \texttt{x86\_64}. This setting will use the specified architecture to boot macOS when it is supported by the macOS and the configuration: @@ -3014,9 +3028,9 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \tightlist \item On macOS, 64-bit capable processors are assumed to support \texttt{SSSE3}. This is not the case for older 64-bit capable Pentium - processors, which cause some applications to crash on macOS~10.6. This behaviour + processors, which cause some applications to crash on Mac OS X~10.6. This behaviour corresponds to the \texttt{-legacy} kernel boot argument. - \item This option is unavailable on macOS~10.4 and 10.5 when running on 64-bit firmware + \item This option is unavailable on Mac OS X~10.4 and 10.5 when running on 64-bit firmware due to an uninitialised 64-bit segment in the XNU kernel, which causes AppleEFIRuntime to incorrectly execute 64-bit code as 16-bit code. \end{itemize} @@ -3053,20 +3067,20 @@ \subsection{Scheme Properties}\label{kernelpropsscheme} \texttt{x86\_64}, \texttt{i386}, \texttt{i386-user32}. \end{enumerate} - Unlike macOS~10.7 (where certain board identifiers are treated as \texttt{i386} - only machines), and macOS~10.5 or earlier (where \texttt{x86\_64} is not supported - by the macOS kernel), macOS~10.6 is very special. The architecture choice on macOS~10.6 + Unlike Mac OS X~10.7 (where certain board identifiers are treated as \texttt{i386} + only machines), and Mac OS X~10.5 or earlier (where \texttt{x86\_64} is not supported + by the macOS kernel), Mac OS X~10.6 is very special. The architecture choice on Mac OS X~10.6 depends on many factors including not only the board identifier, but also the macOS product type (client vs server), macOS point release, and amount of RAM. The detection of all these is complicated and impractical, as several point releases had implementation flaws resulting in a failure to properly execute the server detection in the first place. - For this reason when \texttt{Auto} is set, OpenCore on macOS~10.6 falls back + For this reason when \texttt{Auto} is set, OpenCore on Mac OS X~10.6 falls back to the \texttt{x86\_64} architecture when it is supported by the board, as - on macOS~10.7. The 32-bit \texttt{KernelArch} options can still be configured + on Mac OS X~10.7. The 32-bit \texttt{KernelArch} options can still be configured explicitly however. A 64-bit Mac model compatibility matrix corresponding to actual - EfiBoot behaviour on macOS 10.6.8 and 10.7.5 is outlined below. + EfiBoot behaviour on Mac OS X 10.6.8 and 10.7.5 is outlined below. \begin{center} \begin{tabular}{|p{0.9in}|c|c|c|c|} @@ -3296,11 +3310,6 @@ \subsubsection{Boot Algorithm}\label{bootalgorithm} \subsection{Properties}\label{miscprops} \begin{enumerate} -\item - \texttt{Boot}\\ - \textbf{Type}: \texttt{plist\ dict}\\ - \textbf{Description}: Apply the boot configuration described in the - \hyperref[miscbootprops]{Boot Properties} section below. \item \texttt{BlessOverride}\\ @@ -3317,6 +3326,12 @@ \subsection{Properties}\label{miscprops} or \texttt{\textbackslash EFI\textbackslash Microsoft\textbackslash Boot\textbackslash bootmgfw.efi}, but unlike predefined bless paths, they have the highest priority. +\item + \texttt{Boot}\\ + \textbf{Type}: \texttt{plist\ dict}\\ + \textbf{Description}: Apply the boot configuration described in the + \hyperref[miscbootprops]{Boot Properties} section below. + \item \texttt{Debug}\\ \textbf{Type}: \texttt{plist\ dict}\\ @@ -3721,72 +3736,6 @@ \subsection{Boot Properties}\label{miscbootprops} \emph{Note}: The screen reader requires working audio support. Refer to the \hyperref[uefiaudioprops]{\texttt{UEFI Audio Properties}} section for details. -\item - \texttt{PollAppleHotKeys}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Enable \texttt{modifier hotkey} handling in the OpenCore picker. - - In addition to \texttt{action hotkeys}, which are partially described in the \texttt{PickerMode} - section and are typically handled by Apple BDS, modifier keys handled by the operating system - bootloader (\texttt{boot.efi}) also exist. These keys allow changing the behaviour of the - operating system by providing different boot modes. - - On certain firmware, using modifier keys may be problematic due to driver incompatibilities. - To workaround this problem, this option allows registering certain hotkeys in a more permissive - manner from within the OpenCore picker. Such extensions include support for tapping on key - combinations before selecting the boot item, and for reliable detection of the \texttt{Shift} key - when selecting the boot item, in order to work around the fact that hotkeys which are continuously - held during boot cannot be reliably detected on many PS/2 keyboards. - - This list of known \texttt{modifier hotkeys} includes: - \begin{itemize} - \tightlist - \item \texttt{CMD+C+MINUS} --- disable board compatibility checking. - \item \texttt{CMD+K} --- boot release kernel, similar to \texttt{kcsuffix=release}. - \item \texttt{CMD+S} --- single user mode. - \item \texttt{CMD+S+MINUS} --- disable KASLR slide, requires disabled SIP. - \item \texttt{CMD+V} --- verbose mode. - \item \texttt{Shift+Enter}, \texttt{Shift+Index} --- safe mode, may be used in - combination with \texttt{CTRL+Enter}, \texttt{CTRL+Index}. - \end{itemize} - -\item - \texttt{ShowPicker}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Show a simple picker to allow boot entry selection. - -\item - \texttt{TakeoffDelay}\\ - \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Delay in microseconds executed before handling - the OpenCore picker startup and \texttt{action hotkeys}. - - Introducing a delay may give extra time to hold the right \texttt{action hotkey} - sequence to, for instance, boot into recovery mode. On most systems, the appearance - of the initial boot logo is a good indication of the time from which hotkeys can be - held down. Earlier than this, the key press may not be registered. On some platforms, - setting this option to a minimum of \texttt{5000-10000} microseconds is also required - to access \texttt{action hotkeys} due to the nature of the keyboard driver. - - If the boot chime is configured (see audio configuration options) then at the expense - of slower startup, an even longer delay of half to one second (\texttt{500000-1000000}) - may be used to create behaviour similar to a real Mac, where the chime itself can be used - as a signal for when hotkeys can be pressed. The boot chime is inevitably later in the boot - sequence in OpenCore than on Apple hardware, due to the fact that non-native drivers - have to be loaded and connected first. Configuring the boot chime and adding this longer - additional delay can also be useful in systems where fast boot time and/or slow monitor signal - synchronisation may cause the boot logo not to be shown at all on some boots or reboots. - -\item - \texttt{Timeout}\\ - \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Timeout in seconds in the OpenCore picker before - automatic booting of the default boot entry. Set to \texttt{0} to disable. - \item \texttt{PickerMode}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -3880,8 +3829,8 @@ \subsection{Boot Properties}\label{miscbootprops} \begin{itemize} \tightlist \item \texttt{Acidanthera\textbackslash GoldenGate} --- macOS 11 styled icon set. - \item \texttt{Acidanthera\textbackslash Syrah} --- macOS 10.10 styled icon set. - \item \texttt{Acidanthera\textbackslash Chardonnay} --- macOS 10.4 styled icon set. + \item \texttt{Acidanthera\textbackslash Syrah} --- OS X 10.10 styled icon set. + \item \texttt{Acidanthera\textbackslash Chardonnay} --- Mac OS X 10.4 styled icon set. \end{itemize} For convenience purposes there also are predefined aliases: @@ -3893,6 +3842,72 @@ \subsection{Boot Properties}\label{miscbootprops} \item \texttt{Default} --- \texttt{Acidanthera\textbackslash GoldenGate}. \end{itemize} +\item + \texttt{PollAppleHotKeys}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Enable \texttt{modifier hotkey} handling in the OpenCore picker. + + In addition to \texttt{action hotkeys}, which are partially described in the \texttt{PickerMode} + section and are typically handled by Apple BDS, modifier keys handled by the operating system + bootloader (\texttt{boot.efi}) also exist. These keys allow changing the behaviour of the + operating system by providing different boot modes. + + On certain firmware, using modifier keys may be problematic due to driver incompatibilities. + To workaround this problem, this option allows registering certain hotkeys in a more permissive + manner from within the OpenCore picker. Such extensions include support for tapping on key + combinations before selecting the boot item, and for reliable detection of the \texttt{Shift} key + when selecting the boot item, in order to work around the fact that hotkeys which are continuously + held during boot cannot be reliably detected on many PS/2 keyboards. + + This list of known \texttt{modifier hotkeys} includes: + \begin{itemize} + \tightlist + \item \texttt{CMD+C+MINUS} --- disable board compatibility checking. + \item \texttt{CMD+K} --- boot release kernel, similar to \texttt{kcsuffix=release}. + \item \texttt{CMD+S} --- single user mode. + \item \texttt{CMD+S+MINUS} --- disable KASLR slide, requires disabled SIP. + \item \texttt{CMD+V} --- verbose mode. + \item \texttt{Shift+Enter}, \texttt{Shift+Index} --- safe mode, may be used in + combination with \texttt{CTRL+Enter}, \texttt{CTRL+Index}. + \end{itemize} + +\item + \texttt{ShowPicker}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Show a simple picker to allow boot entry selection. + +\item + \texttt{TakeoffDelay}\\ + \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Delay in microseconds executed before handling + the OpenCore picker startup and \texttt{action hotkeys}. + + Introducing a delay may give extra time to hold the right \texttt{action hotkey} + sequence to, for instance, boot into recovery mode. On most systems, the appearance + of the initial boot logo is a good indication of the time from which hotkeys can be + held down. Earlier than this, the key press may not be registered. On some platforms, + setting this option to a minimum of \texttt{5000-10000} microseconds is also required + to access \texttt{action hotkeys} due to the nature of the keyboard driver. + + If the boot chime is configured (see audio configuration options) then at the expense + of slower startup, an even longer delay of half to one second (\texttt{500000-1000000}) + may be used to create behaviour similar to a real Mac, where the chime itself can be used + as a signal for when hotkeys can be pressed. The boot chime is inevitably later in the boot + sequence in OpenCore than on Apple hardware, due to the fact that non-native drivers + have to be loaded and connected first. Configuring the boot chime and adding this longer + additional delay can also be useful in systems where fast boot time and/or slow monitor signal + synchronisation may cause the boot logo not to be shown at all on some boots or reboots. + +\item + \texttt{Timeout}\\ + \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Timeout in seconds in the OpenCore picker before + automatic booting of the default boot entry. Set to \texttt{0} to disable. + \end{enumerate} \subsection{Debug Properties}\label{miscdebugprops} @@ -4161,71 +4176,175 @@ \subsection{Debug Properties}\label{miscdebugprops} \end{enumerate} -\subsection{Security Properties}\label{miscsecurityprops} +\subsection{Entry Properties}\label{miscentryprops} \begin{enumerate} \item - \texttt{AllowSetDefault}\\ + \texttt{Arguments}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Arbitrary ASCII string used as boot arguments (load options) + of the specified entry. + +\item + \texttt{Auxiliary}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Allow \texttt{CTRL+Enter} and \texttt{CTRL+Index} handling - to set the default boot option in the OpenCore picker. - - \emph{Note 1}: May be used in combination - with \texttt{Shift+Enter} or \texttt{Shift+Index} when \texttt{PollAppleHotKeys} is - enabled. + \textbf{Description}: Set to \texttt{true} to hide this entry + when \texttt{HideAuxiliary} is also set to \texttt{true}. + Press the \texttt{Spacebar} key to enter ``Extended Mode'' and display the entry when hidden. - \emph{Note 2}: In order to support systems with unresponsive modifiers during preboot - (which includes \texttt{V1} and \texttt{V2} \texttt{KeySupport} mode on some firmware) - OpenCore also allows holding the \texttt{=/+} key in order to trigger `set default' mode. +\item + \texttt{Comment}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Arbitrary ASCII string used to provide a human readable + reference for the entry. Whether this value is used is implementation defined. \item - \texttt{ApECID}\\ - \textbf{Type}: \texttt{plist\ integer}, 64 bit\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Apple Enclave Identifier. + \texttt{Enabled}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Set to \texttt{true} activate this entry. - Setting this value to any non-zero 64-bit integer will allow using - personalised Apple Secure Boot identifiers. To use this setting, - generate a random 64-bit number with a cryptographically secure - random number generator. As an alternative, the first 8 bytes of \texttt{SystemUUID} - can be used for \texttt{ApECID}, this is found in macOS 11 for Macs without - the T2 chip. +\item + \texttt{Flavour}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Auto}\\ + \textbf{Description}: Specify the content flavour for this entry. + See \hyperref[oc-attr-use-flavour-icon]{\texttt{OC\_ATTR\_USE\_FLAVOUR\_ICON}} flag for documentation. - With this value set and \texttt{SecureBootModel} valid - (and not \texttt{Disabled}), it is possible to achieve - \href{https://support.apple.com/en-us/HT208330}{\texttt{Full Security}} of Apple - Secure Boot. +\item + \texttt{FullNvramAccess}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Disable \texttt{OpenRuntime} NVRAM protection during usage of a tool. - To start using personalised Apple Secure Boot, the operating system must be - reinstalled or personalised. Until the operating system is personalised, - only macOS DMG recovery can be loaded. In cases where DMG recovery is missing, - it can be downloaded by using the \texttt{macrecovery} utility and saved in - \texttt{com.apple.recovery.boot} as explained in the - \hyperref[reinstallmacos]{Tips and Tricks} section. Note that - \hyperref[securedmgloading]{DMG loading} needs to be set to \texttt{Signed} - to use any DMG with Apple Secure Boot. + This disables all of the NVRAM protections provided by + \texttt{OpenRuntime.efi}, during the time a tool is in use. It should + normally be avoided, but may be required for instance if a tool needs + to access NVRAM directly without the redirections put in place by + \texttt{RequestBootVarRouting}. - To personalise an existing operating system, use the \texttt{bless} command - after loading to macOS DMG recovery. Mount the system volume partition, - unless it has already been mounted, and execute the following command: + \emph{Note}: This option is only valid for \texttt{Tools} and cannot be + specified for \texttt{Entries} (is always \texttt{false}). -\begin{lstlisting}[label=blesspersona, style=ocbash] -bless --folder "/Volumes/Macintosh HD/System/Library/CoreServices" \ - --bootefi --personalize -\end{lstlisting} +\item + \texttt{Name}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Human readable entry name displayed in the OpenCore picker. - On macOS 11 and newer the dedicated \texttt{x86legacy} model always uses - \texttt{ApECID}. When this configuration setting is left as \texttt{0} - first 8 bytes of \texttt{system-id} variable are used instead. +\item + \texttt{Path}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Entry location depending on entry type. - On macOS versions before macOS 11, which introduced a dedicated \texttt{x86legacy} - model for models without the T2 chip, personalised Apple Secure Boot - may not work as expected. When reinstalling the operating system, the macOS Installer - from macOS 10.15 and older will often run out of free memory on the \texttt{/var/tmp} - partition when trying to install macOS with the personalised Apple Secure Boot. - Soon after downloading the macOS installer image, an \texttt{Unable to verify macOS} + \begin{itemize} + \tightlist + \item \texttt{Entries} specify external boot options, and therefore take device + paths in the \texttt{Path} key. Care should be exercised as these values are not checked. + Example: \texttt{PciRoot(0x0)/Pci(0x1,0x1)/.../\textbackslash EFI\textbackslash COOL.EFI} + \item \texttt{Tools} specify internal boot options, which are part of the bootloader + vault, and therefore take file paths relative to the \texttt{OC/Tools} directory. + Example: \texttt{OpenShell.efi}. + \end{itemize} + +\item + \texttt{RealPath}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Pass full path to the tool when launching. + + This should typically be disabled as passing the tool directory may be unsafe with + tools that accidentally attempt to access files without checking their integrity. + Reasons to enable this property may include cases where tools cannot work + without external files or may need them for enhanced functionality such as + \texttt{memtest86} (for logging and configuration), or \texttt{Shell} (for + automatic script execution). + + \emph{Note}: This option is only valid for \texttt{Tools} and cannot be + specified for \texttt{Entries} (is always \texttt{true}). + +\item + \texttt{TextMode}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Run the entry in text mode instead of graphics mode. + + This setting may be beneficial for some older tools that require text output + as all the tools are launched in graphics mode by default. Refer to the + \hyperref[uefioutputprops]{Output Properties} section below for information on text modes. + +\end{enumerate} + +\subsection{Security Properties}\label{miscsecurityprops} + +\begin{enumerate} + +\item + \texttt{AllowSetDefault}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Allow \texttt{CTRL+Enter} and \texttt{CTRL+Index} handling + to set the default boot option in the OpenCore picker. + + \emph{Note 1}: May be used in combination + with \texttt{Shift+Enter} or \texttt{Shift+Index} when \texttt{PollAppleHotKeys} is + enabled. + + \emph{Note 2}: In order to support systems with unresponsive modifiers during preboot + (which includes \texttt{V1} and \texttt{V2} \texttt{KeySupport} mode on some firmware) + OpenCore also allows holding the \texttt{=/+} key in order to trigger `set default' mode. + +\item + \texttt{ApECID}\\ + \textbf{Type}: \texttt{plist\ integer}, 64 bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Apple Enclave Identifier. + + Setting this value to any non-zero 64-bit integer will allow using + personalised Apple Secure Boot identifiers. To use this setting, + generate a random 64-bit number with a cryptographically secure + random number generator. As an alternative, the first 8 bytes of \texttt{SystemUUID} + can be used for \texttt{ApECID}, this is found in macOS 11 for Macs without + the T2 chip. + + With this value set and \texttt{SecureBootModel} valid + (and not \texttt{Disabled}), it is possible to achieve + \href{https://support.apple.com/en-us/HT208330}{\texttt{Full Security}} of Apple + Secure Boot. + + To start using personalised Apple Secure Boot, the operating system must be + reinstalled or personalised. Until the operating system is personalised, + only macOS DMG recovery can be loaded. In cases where DMG recovery is missing, + it can be downloaded by using the \texttt{macrecovery} utility and saved in + \texttt{com.apple.recovery.boot} as explained in the + \hyperref[reinstallmacos]{Tips and Tricks} section. Note that + \hyperref[securedmgloading]{DMG loading} needs to be set to \texttt{Signed} + to use any DMG with Apple Secure Boot. + + To personalise an existing operating system, use the \texttt{bless} command + after loading to macOS DMG recovery. Mount the system volume partition, + unless it has already been mounted, and execute the following command: + +\begin{lstlisting}[label=blesspersona, style=ocbash] +bless --folder "/Volumes/Macintosh HD/System/Library/CoreServices" \ + --bootefi --personalize +\end{lstlisting} + + On macOS 11 and newer the dedicated \texttt{x86legacy} model always uses + \texttt{ApECID}. When this configuration setting is left as \texttt{0} + first 8 bytes of \texttt{system-id} variable are used instead. + + On macOS versions before macOS 11, which introduced a dedicated \texttt{x86legacy} + model for models without the T2 chip, personalised Apple Secure Boot + may not work as expected. When reinstalling the operating system, the macOS Installer + from macOS 10.15 and older will often run out of free memory on the \texttt{/var/tmp} + partition when trying to install macOS with the personalised Apple Secure Boot. + Soon after downloading the macOS installer image, an \texttt{Unable to verify macOS} error message will appear. To workaround this issue, allocate a dedicated RAM disk of 2 MBs for macOS personalisation by @@ -4371,85 +4490,6 @@ \subsection{Security Properties}\label{miscsecurityprops} \textbf{Failsafe}: empty\\ \textbf{Description}: Password salt used when \texttt{EnablePassword} is set. -\item \label{securevaulting} - \texttt{Vault}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \texttt{Secure}\\ - \textbf{Description}: Enables the OpenCore vaulting mechanism. - - Valid values: - - \begin{itemize} - \tightlist - \item \texttt{Optional} --- require nothing, no vault is enforced, insecure. - \item \texttt{Basic} --- require \texttt{vault.plist} file present - in \texttt{OC} directory. This provides basic filesystem integrity - verification and may protect from unintentional filesystem corruption. - \item \texttt{Secure} --- require \texttt{vault.sig} signature file for - \texttt{vault.plist} in \texttt{OC} directory. This includes \texttt{Basic} - integrity checking but also attempts to build a trusted bootchain. - \end{itemize} - - The \texttt{vault.plist} file should contain SHA-256 hashes for all files used by OpenCore. - The presence of this file is highly recommended to ensure that unintentional file modifications - (including filesystem corruption) do not go unnoticed. To create this file automatically, use the - \href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\texttt{create\_vault.sh}} - script. Notwithstanding the underlying file system, the path names and cases between \texttt{config.plist} - and \texttt{vault.plist} must match. - - The \texttt{vault.sig} file should contain a raw 256 byte RSA-2048 signature from a SHA-256 - hash of \texttt{vault.plist}. The signature is verified against the public key embedded - into \texttt{OpenCore.efi}. - - To embed the public key, either one of the following should be performed: - - \begin{itemize} - \tightlist - \item Provide public key during the \texttt{OpenCore.efi} compilation in - \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Platform/OpenCore/OpenCoreVault.c}{\texttt{OpenCoreVault.c}} file. - \item Binary patch \texttt{OpenCore.efi} replacing zeroes with the public key - between \texttt{=BEGIN OC VAULT=} and \texttt{==END OC VAULT==} ASCII markers. - \end{itemize} - - The RSA public key 520 byte format description can be found in Chromium OS documentation. - To convert the public key from X.509 certificate or from PEM file use - \href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{RsaTool}. - - - The complete set of commands to: - - \begin{itemize} - \tightlist - \item Create \texttt{vault.plist}. - \item Create a new RSA key (always do this to avoid loading old configuration). - \item Embed RSA key into \texttt{OpenCore.efi}. - \item Create \texttt{vault.sig}. - \end{itemize} - - Can look as follows: -\begin{lstlisting}[label=createvault, style=ocbash] -cd /Volumes/EFI/EFI/OC -/path/to/create_vault.sh . -/path/to/RsaTool -sign vault.plist vault.sig vault.pub -off=$(($(strings -a -t d OpenCore.efi | grep "=BEGIN OC VAULT=" | cut -f1 -d' ')+16)) -dd of=OpenCore.efi if=vault.pub bs=1 seek=$off count=528 conv=notrunc -rm vault.pub -\end{lstlisting} - - \emph{Note 1}: While it may appear obvious, an external - method is required to verify \texttt{OpenCore.efi} and \texttt{BOOTx64.efi} for - secure boot path. For this, it is recommended to enable UEFI SecureBoot - using a custom certificate and to sign \texttt{OpenCore.efi} and \texttt{BOOTx64.efi} - with a custom key. More details on customising secure boot on modern firmware - can be found in the \href{https://habr.com/post/273497/}{Taming UEFI SecureBoot} - paper (in Russian). - - \emph{Note 2}: Regardless of this option, \texttt{vault.plist} is always used when - present, and both \texttt{vault.plist} and \texttt{vault.sig} are used and required - when a public key is embedded into \texttt{OpenCore.efi}, and errors will abort the - boot process in either case. Setting this option allows OpenCore to warn the user if - the configuration is not as required to achieve an expected higher security level. - \item \texttt{ScanPolicy}\\ \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ @@ -4635,47 +4675,128 @@ \subsection{Security Properties}\label{miscsecurityprops} For more details on how to configure Apple Secure Boot with UEFI Secure Boot, refer to the \hyperref[uefisecureboot]{UEFI Secure Boot} section. -\end{enumerate} +\item \label{securevaulting} + \texttt{Vault}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Secure}\\ + \textbf{Description}: Enables the OpenCore vaulting mechanism. -\subsection{Serial Properties}\label{miscserialprops} + Valid values: -\begin{enumerate} -\item - \texttt{Custom}\\ - \textbf{Type}: \texttt{plist\ dict}\\ - \textbf{Description}: Update serial port properties in \texttt{BaseSerialPortLib16550}. + \begin{itemize} + \tightlist + \item \texttt{Optional} --- require nothing, no vault is enforced, insecure. + \item \texttt{Basic} --- require \texttt{vault.plist} file present + in \texttt{OC} directory. This provides basic filesystem integrity + verification and may protect from unintentional filesystem corruption. + \item \texttt{Secure} --- require \texttt{vault.sig} signature file for + \texttt{vault.plist} in \texttt{OC} directory. This includes \texttt{Basic} + integrity checking but also attempts to build a trusted bootchain. + \end{itemize} - This section lists the PCD values that are used by the \texttt{BaseSerialPortLib16550}. - When option \texttt{Override} is set to \texttt{false}, this dictionary is optional. + The \texttt{vault.plist} file should contain SHA-256 hashes for all files used by OpenCore. + The presence of this file is highly recommended to ensure that unintentional file modifications + (including filesystem corruption) do not go unnoticed. To create this file automatically, use the + \href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\texttt{create\_vault.sh}} + script. Notwithstanding the underlying file system, the path names and cases between \texttt{config.plist} + and \texttt{vault.plist} must match. -\item - \texttt{Init}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Perform serial port initialisation. + The \texttt{vault.sig} file should contain a raw 256 byte RSA-2048 signature from a SHA-256 + hash of \texttt{vault.plist}. The signature is verified against the public key embedded + into \texttt{OpenCore.efi}. - This option will perform serial port initialisation within OpenCore prior to enabling - (any) debug logging. + To embed the public key, either one of the following should be performed: - Refer to the \hyperref[troubleshootingdebug]{\texttt{Debugging}} section for details. + \begin{itemize} + \tightlist + \item Provide public key during the \texttt{OpenCore.efi} compilation in + \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Platform/OpenCore/OpenCoreVault.c}{\texttt{OpenCoreVault.c}} file. + \item Binary patch \texttt{OpenCore.efi} replacing zeroes with the public key + between \texttt{=BEGIN OC VAULT=} and \texttt{==END OC VAULT==} ASCII markers. + \end{itemize} -\item - \texttt{Override}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Override serial port properties. - When this option is set to \texttt{false}, no keys from \texttt{Custom} will be overridden. + The RSA public key 520 byte format description can be found in Chromium OS documentation. + To convert the public key from X.509 certificate or from PEM file use + \href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{RsaTool}. - This option will override serial port properties listed in the \hyperref[miscserialcustprops]{\texttt{Serial Custom Properties}} - section below. -\end{enumerate} + The complete set of commands to: -\subsubsection{Serial Custom Properties}\label{miscserialcustprops} + \begin{itemize} + \tightlist + \item Create \texttt{vault.plist}. + \item Create a new RSA key (always do this to avoid loading old configuration). + \item Embed RSA key into \texttt{OpenCore.efi}. + \item Create \texttt{vault.sig}. + \end{itemize} -\begin{enumerate} -\item - \texttt{BaudRate}\\ + Can look as follows: +\begin{lstlisting}[label=createvault, style=ocbash] +cd /Volumes/EFI/EFI/OC +/path/to/create_vault.sh . +/path/to/RsaTool -sign vault.plist vault.sig vault.pub +off=$(($(strings -a -t d OpenCore.efi | grep "=BEGIN OC VAULT=" | cut -f1 -d' ')+16)) +dd of=OpenCore.efi if=vault.pub bs=1 seek=$off count=528 conv=notrunc +rm vault.pub +\end{lstlisting} + + \emph{Note 1}: While it may appear obvious, an external + method is required to verify \texttt{OpenCore.efi} and \texttt{BOOTx64.efi} for + secure boot path. For this, it is recommended to enable UEFI SecureBoot + using a custom certificate and to sign \texttt{OpenCore.efi} and \texttt{BOOTx64.efi} + with a custom key. More details on customising secure boot on modern firmware + can be found in the \href{https://habr.com/post/273497/}{Taming UEFI SecureBoot} + paper (in Russian). + + \emph{Note 2}: Regardless of this option, \texttt{vault.plist} is always used when + present, and both \texttt{vault.plist} and \texttt{vault.sig} are used and required + when a public key is embedded into \texttt{OpenCore.efi}, and errors will abort the + boot process in either case. Setting this option allows OpenCore to warn the user if + the configuration is not as required to achieve an expected higher security level. + +\end{enumerate} + +\subsection{Serial Properties}\label{miscserialprops} + +\begin{enumerate} + +\item + \texttt{Custom}\\ + \textbf{Type}: \texttt{plist\ dict}\\ + \textbf{Description}: Update serial port properties in \texttt{BaseSerialPortLib16550}. + + This section lists the PCD values that are used by the \texttt{BaseSerialPortLib16550}. + When option \texttt{Override} is set to \texttt{false}, this dictionary is optional. + +\item + \texttt{Init}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Perform serial port initialisation. + + This option will perform serial port initialisation within OpenCore prior to enabling + (any) debug logging. + + Refer to the \hyperref[troubleshootingdebug]{\texttt{Debugging}} section for details. + +\item + \texttt{Override}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Override serial port properties. + When this option is set to \texttt{false}, no keys from \texttt{Custom} will be overridden. + + This option will override serial port properties listed in the \hyperref[miscserialcustprops]{\texttt{Serial Custom Properties}} + section below. + +\end{enumerate} + +\subsubsection{Serial Custom Properties}\label{miscserialcustprops} + +\begin{enumerate} + +\item + \texttt{BaudRate}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{115200}\\ \textbf{Description}: Set the baud rate for serial port. @@ -4791,109 +4912,6 @@ \subsubsection{Serial Custom Properties}\label{miscserialcustprops} \end{enumerate} -\subsection{Entry Properties}\label{miscentryprops} - -\begin{enumerate} -\item - \texttt{Arguments}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Arbitrary ASCII string used as boot arguments (load options) - of the specified entry. - -\item - \texttt{Auxiliary}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Set to \texttt{true} to hide this entry - when \texttt{HideAuxiliary} is also set to \texttt{true}. - Press the \texttt{Spacebar} key to enter ``Extended Mode'' and display the entry when hidden. - -\item - \texttt{Comment}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Arbitrary ASCII string used to provide a human readable - reference for the entry. Whether this value is used is implementation defined. - -\item - \texttt{Enabled}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Set to \texttt{true} activate this entry. - -\item - \texttt{Flavour}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \texttt{Auto}\\ - \textbf{Description}: Specify the content flavour for this entry. - See \hyperref[oc-attr-use-flavour-icon]{\texttt{OC\_ATTR\_USE\_FLAVOUR\_ICON}} flag for documentation. - - \item - \texttt{FullNvramAccess}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Disable \texttt{OpenRuntime} NVRAM protection during usage of a tool. - - This disables all of the NVRAM protections provided by - \texttt{OpenRuntime.efi}, during the time a tool is in use. It should - normally be avoided, but may be required for instance if a tool needs - to access NVRAM directly without the redirections put in place by - \texttt{RequestBootVarRouting}. - - \emph{Note}: This option is only valid for \texttt{Tools} and cannot be - specified for \texttt{Entries} (is always \texttt{false}). - -\item - \texttt{Name}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Human readable entry name displayed in the OpenCore picker. - -\item - \texttt{Path}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Entry location depending on entry type. - - \begin{itemize} - \tightlist - \item \texttt{Entries} specify external boot options, and therefore take device - paths in the \texttt{Path} key. Care should be exercised as these values are not checked. - Example: \texttt{PciRoot(0x0)/Pci(0x1,0x1)/.../\textbackslash EFI\textbackslash COOL.EFI} - \item \texttt{Tools} specify internal boot options, which are part of the bootloader - vault, and therefore take file paths relative to the \texttt{OC/Tools} directory. - Example: \texttt{OpenShell.efi}. - \end{itemize} - -\item - \texttt{RealPath}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Pass full path to the tool when launching. - - This should typically be disabled as passing the tool directory may be unsafe with - tools that accidentally attempt to access files without checking their integrity. - Reasons to enable this property may include cases where tools cannot work - without external files or may need them for enhanced functionality such as - \texttt{memtest86} (for logging and configuration), or \texttt{Shell} (for - automatic script execution). - - \emph{Note}: This option is only valid for \texttt{Tools} and cannot be - specified for \texttt{Entries} (is always \texttt{true}). - -\item - \texttt{TextMode}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Run the entry in text mode instead of graphics mode. - - This setting may be beneficial for some older tools that require text output - as all the tools are launched in graphics mode by default. Refer to the - \hyperref[uefioutputprops]{Output Properties} section below for information on text modes. - -\end{enumerate} - \section{NVRAM}\label{nvram} \subsection{Introduction}\label{nvramintro} @@ -4951,6 +4969,7 @@ \subsection{Introduction}\label{nvramintro} \subsection{Properties}\label{nvramprops} \begin{enumerate} + \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ dict}\\ @@ -5110,17 +5129,17 @@ \subsection{Recommended Variables}\label{nvramvarsrec} It is recommended not to set this variable, which may speedup system startup. Setting to \texttt{full} is equivalent to not setting the variable and \texttt{none} disables FireWire security. - \item +\item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:UIScale} \break One-byte data defining \texttt{boot.efi} user interface scaling. Should be \textbf{01} for normal screens and \textbf{02} for HiDPI screens. - \item +\item \texttt{7C436110-AB2A-4BBB-A880-FE41995C9F82:ForceDisplayRotationInEFI} \break 32-bit integer defining display rotation. Can be \textbf{0} for no rotation or any of \texttt{90}, \texttt{180}, \texttt{270} for matching rotation in degrees. - \item +\item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:DefaultBackgroundColor} \break Four-byte \texttt{BGRA} data defining \texttt{boot.efi} user interface background colour. @@ -5305,8 +5324,7 @@ \subsection{Other Variables}\label{nvramvarsother} Specify sources of kexts which will be approved regardless of SIP \texttt{CSR\_ALLOW\_UNAPPROVED\_KEXTS} value.\\ Example contents:\\ \texttt{kext-allowed-teams\{DEVELOPER-TEAM-ID\}\%00} -\item - \texttt{7C436110-AB2A-4BBB-A880-FE41995C9F82:efiboot-perf-record} +\item \texttt{7C436110-AB2A-4BBB-A880-FE41995C9F82:efiboot-perf-record} \break Enable performance log saving in \texttt{boot.efi}. Performance log is saved to physical memory and is pointed to by the \texttt{efiboot-perf-record-data} and \texttt{efiboot-perf-record-size} @@ -5343,7 +5361,7 @@ \subsection{Other Variables}\label{nvramvarsother} (and potentially on the specific amplifier within the codec). This value is capped by macOS to the \texttt{MaximumBootBeepVolume} AppleHDA layout value, to avoid over-loud audio playback in the firmware. - \item +\item \texttt{7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolumeDB} \break Current system audio volume level in decibels (dB). 8-bit signed integer. @@ -5424,6 +5442,7 @@ \section{PlatformInfo}\label{platforminfo} \subsection{Properties}\label{platforminfoprops} \begin{enumerate} + \item \texttt{Automatic}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -5456,6 +5475,42 @@ \subsection{Properties}\label{platforminfoprops} configuration in SMBIOS, and is only active when \texttt{UpdateSMBIOS} is set to \texttt{true}. +\item + \texttt{DataHub}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update Data Hub fields in non-\texttt{Automatic} mode. + + \emph{Note}: This section is ignored and may be removed when + \texttt{Automatic} is \texttt{true}. + +\item + \texttt{Generic}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update all fields in \texttt{Automatic} mode. + + \emph{Note}: This section is ignored but may not be removed when + \texttt{Automatic} is \texttt{false}. +\item + \texttt{Memory}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Define custom memory configuration. + + \emph{Note}: This section is ignored and may be removed when + \texttt{CustomMemory} is \texttt{false}. +\item + \texttt{PlatformNVRAM}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update platform NVRAM fields in non-\texttt{Automatic} mode. + + \emph{Note}: This section is ignored and may be removed when + \texttt{Automatic} is \texttt{true}. +\item + \texttt{SMBIOS}\\ + \textbf{Type}: \texttt{plist\ dictionary}\\ + \textbf{Description}: Update SMBIOS fields in non-\texttt{Automatic} mode. + + \emph{Note}: This section is ignored and may be removed when + \texttt{Automatic} is \texttt{true}. \item \texttt{UpdateDataHub}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -5569,167 +5624,70 @@ \subsection{Properties}\label{platforminfoprops} as they are not standardised and are added by Apple. Unlike SMBIOS, they are always stored in the \texttt{Big Endian} format. -\item - \texttt{Generic}\\ - \textbf{Type}: \texttt{plist\ dictionary}\\ - \textbf{Description}: Update all fields in \texttt{Automatic} mode. +\end{enumerate} - \emph{Note}: This section is ignored but may not be removed when - \texttt{Automatic} is \texttt{false}. -\item - \texttt{DataHub}\\ - \textbf{Type}: \texttt{plist\ dictionary}\\ - \textbf{Description}: Update Data Hub fields in non-\texttt{Automatic} mode. +\subsection{DataHub Properties}\label{platforminfodatahub} - \emph{Note}: This section is ignored and may be removed when - \texttt{Automatic} is \texttt{true}. -\item - \texttt{Memory}\\ - \textbf{Type}: \texttt{plist\ dictionary}\\ - \textbf{Description}: Define custom memory configuration. +\begin{enumerate} - \emph{Note}: This section is ignored and may be removed when - \texttt{CustomMemory} is \texttt{false}. \item - \texttt{PlatformNVRAM}\\ - \textbf{Type}: \texttt{plist\ dictionary}\\ - \textbf{Description}: Update platform NVRAM fields in non-\texttt{Automatic} mode. + \texttt{ARTFrequency}\\ + \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \textbf{Failsafe}: \texttt{0} (Automatic)\\ + \textbf{Description}: Sets \texttt{ARTFrequency} in + \texttt{gEfiProcessorSubClassGuid}. - \emph{Note}: This section is ignored and may be removed when - \texttt{Automatic} is \texttt{true}. -\item - \texttt{SMBIOS}\\ - \textbf{Type}: \texttt{plist\ dictionary}\\ - \textbf{Description}: Update SMBIOS fields in non-\texttt{Automatic} mode. - - \emph{Note}: This section is ignored and may be removed when - \texttt{Automatic} is \texttt{true}. -\end{enumerate} - -\subsection{Generic Properties}\label{platforminfogeneric} - -\begin{enumerate} -\item - \texttt{SpoofVendor}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Sets SMBIOS vendor fields to \texttt{Acidanthera}. - - It can be dangerous to use ``Apple'' in SMBIOS vendor fields for reasons outlined in the - \texttt{SystemManufacturer} description. However, certain firmware may not provide - valid values otherwise, which could obstruct the operation of some software. - -\item - \texttt{AdviseFeatures}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Updates \texttt{FirmwareFeatures} with supported bits. - - Added bits to \texttt{FirmwareFeatures}: - - \begin{itemize} - \item \texttt{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE} (\texttt{0x1}) - - Without this bit, it is not possible to reboot to Windows installed on - a drive with an EFI partition that is not the first partition on the disk. - \item \texttt{FW\_FEATURE\_SUPPORTS\_UEFI\_WINDOWS\_BOOT} (\texttt{0x20000000}) - - Without this bit, it is not possible to reboot to Windows installed on - a drive with an EFI partition that is the first partition on the disk. - \item \texttt{FW\_FEATURE\_SUPPORTS\_APFS} (\texttt{0x00080000}) - - Without this bit, it is not possible to install macOS on an APFS disk. - \item \texttt{FW\_FEATURE\_SUPPORTS\_LARGE\_BASESYSTEM} (\texttt{0x800000000}) - - Without this bit, it is not possible to install macOS versions with large - BaseSystem images, such as macOS 12. - \end{itemize} - - \emph{Note}: On most newer firmwares these bits are already set, the option - may be necessary when "upgrading" the firmware with new features. - -\item - \texttt{MaxBIOSVersion}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Sets \texttt{BIOSVersion} to \texttt{9999.999.999.999.999}, recommended for legacy - Macs when using \texttt{Automatic} PlatformInfo, to avoid BIOS updates in unofficially supported macOS - versions. + This value contains CPU ART frequency, also known as crystal clock frequency. + Its existence is exclusive to the Skylake generation and newer. The value is specified + in Hz, and is normally 24 MHz for the client Intel segment, 25 MHz for the server Intel segment, + and 19.2 MHz for Intel Atom CPUs. macOS till 10.15 inclusive assumes 24 MHz by default. + \emph{Note}: On Intel Skylake X ART frequency may be a little less (approx. 0.25\%) than + 24 or 25 MHz due to special EMI-reduction circuit as described in + \href{https://github.com/acidanthera/bugtracker/issues/448#issuecomment-524914166}{Acidanthera Bugtracker}. \item - \texttt{SystemMemoryStatus}\\ + \texttt{BoardProduct}\\ \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \texttt{Auto}\\ - \textbf{Description}: Indicates whether system memory is upgradable in \texttt{PlatformFeature}. - This controls the visibility of the Memory tab in ``About This Mac''. - - Valid values: - - \begin{itemize} - \tightlist - \item \texttt{Auto} --- use the original \texttt{PlatformFeature} value. - \item \texttt{Upgradable} --- explicitly unset \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} - (\texttt{0x2}) in \texttt{PlatformFeature}. - \item \texttt{Soldered} --- explicitly set \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} - (\texttt{0x2}) in \texttt{PlatformFeature}. - \end{itemize} - - \emph{Note}: On certain Mac models, such as the \texttt{MacBookPro10,x} and any \texttt{MacBookAir}, - SPMemoryReporter.spreporter will ignore \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} - and assume that system memory is non-upgradable. - -\item - \texttt{ProcessorType}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0} (Automatic)\\ - \textbf{Description}: Refer to SMBIOS \texttt{ProcessorType}. + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{board-id} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{BoardProduct} in ASCII. \item - \texttt{SystemProductName}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified or not installed)\\ - \textbf{Description}: Refer to SMBIOS \texttt{SystemProductName}. + \texttt{BoardRevision}\\ + \textbf{Type}: \texttt{plist\ data}, 1 byte\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Sets \texttt{board-rev} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs seems to correspond + to internal board revision (e.g. \texttt{01}). \item - \texttt{SystemSerialNumber}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified or not installed)\\ - \textbf{Description}: Refer to SMBIOS \texttt{SystemSerialNumber}. - - Specify special string value \texttt{OEM} to extract current value from NVRAM - (\texttt{SSN} variable) or SMBIOS and use it throughout the sections. - This feature can only be used on Mac-compatible firmware. + \texttt{DevicePathsSupported}\\ + \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ + \textbf{Failsafe}: \texttt{0} (Not installed)\\ + \textbf{Description}: Sets \texttt{DevicePathsSupported} in + \texttt{gEfiMiscSubClassGuid}. Must be set to \texttt{1} for + AppleACPIPlatform.kext to append SATA device paths to + \texttt{Boot\#\#\#\#} and \texttt{efi-boot-device-data} variables. + Set to \texttt{1} on all modern Macs. \item - \texttt{SystemUUID}\\ - \textbf{Type}: \texttt{plist\ string}, GUID\\ - \textbf{Failsafe}: Empty (OEM specified or not installed)\\ - \textbf{Description}: Refer to SMBIOS \texttt{SystemUUID}. + \texttt{FSBFrequency}\\ + \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \textbf{Failsafe}: \texttt{0} (Automatic)\\ + \textbf{Description}: Sets \texttt{FSBFrequency} in + \texttt{gEfiProcessorSubClassGuid}. - Specify special string value \texttt{OEM} to extract current value from NVRAM - (\texttt{system-id} variable) or SMBIOS and use it throughout the sections. - Since not every firmware implementation has valid (and unique) values, this - feature is not applicable to some setups, and may provide unexpected results. - It is highly recommended to specify the UUID explicitly. Refer to - \texttt{UseRawUuidEncoding} to determine how SMBIOS value is parsed. -\item - \texttt{MLB}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified or not installed)\\ - \textbf{Description}: Refer to SMBIOS \texttt{BoardSerialNumber}. + Sets CPU FSB frequency. This value equals to CPU nominal frequency divided + by CPU maximum bus ratio and is specified in Hz. Refer to + \texttt{MSR\_NEHALEM\_PLATFORM\_INFO}~(\texttt{CEh}) MSR value to determine + maximum bus ratio on modern Intel CPUs. - Specify special string value \texttt{OEM} to extract current value from NVRAM - (\texttt{MLB} variable) or SMBIOS and use it throughout the sections. - This feature can only be used on Mac-compatible firmware. + \emph{Note}: This value is not used on Skylake and newer but is still provided + to follow suit. \item - \texttt{ROM}\\ - \textbf{Type}: \texttt{plist\ multidata}, 6 bytes\\ - \textbf{Failsafe}: Empty (OEM specified or not installed)\\ - \textbf{Description}: Refer to - \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}. - - Specify special string value \texttt{OEM} to extract current value from NVRAM - (\texttt{ROM} variable) and use it throughout the sections. - This feature can only be used on Mac-compatible firmware. - -\end{enumerate} - -\subsection{DataHub Properties}\label{platforminfodatahub} - -\begin{enumerate} + \texttt{InitialTSC}\\ + \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Sets \texttt{InitialTSC} in + \texttt{gEfiProcessorSubClassGuid}. Sets initial TSC value, normally 0. \item \texttt{PlatformName}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -5738,40 +5696,29 @@ \subsection{DataHub Properties}\label{platforminfodatahub} \texttt{gEfiMiscSubClassGuid}. The value found on Macs is \texttt{platform} in ASCII. \item - \texttt{SystemProductName}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{Model} in - \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS - \texttt{SystemProductName} in Unicode. -\item - \texttt{SystemSerialNumber}\\ - \textbf{Type}: \texttt{plist\ string}\\ + \texttt{SmcBranch}\\ + \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{SystemSerialNumber} in - \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS - \texttt{SystemSerialNumber} in Unicode. + \textbf{Description}: Sets \texttt{RBr} in + \texttt{gEfiMiscSubClassGuid}. Custom property read by + \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{RBr} + key. \item - \texttt{SystemUUID}\\ - \textbf{Type}: \texttt{plist\ string}, GUID\\ + \texttt{SmcPlatform}\\ + \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{system-id} in - \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS - \texttt{SystemUUID} (with swapped byte order). + \textbf{Description}: Sets \texttt{RPlt} in + \texttt{gEfiMiscSubClassGuid}. Custom property read by + \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{RPlt} + key. \item - \texttt{BoardProduct}\\ - \textbf{Type}: \texttt{plist\ string}\\ + \texttt{SmcRevision}\\ + \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{board-id} in - \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS - \texttt{BoardProduct} in ASCII. -\item - \texttt{BoardRevision}\\ - \textbf{Type}: \texttt{plist\ data}, 1 byte\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Sets \texttt{board-rev} in - \texttt{gEfiMiscSubClassGuid}. The value found on Macs seems to correspond - to internal board revision (e.g. \texttt{01}). + \textbf{Description}: Sets \texttt{REV} in + \texttt{gEfiMiscSubClassGuid}. Custom property read by + \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{REV} + key. \item \texttt{StartupPowerEvents}\\ \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ @@ -5827,78 +5774,156 @@ \subsection{DataHub Properties}\label{platforminfodatahub} event (Same as \texttt{PRSTS} bit 15) \end{itemize} \item - \texttt{InitialTSC}\\ - \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Sets \texttt{InitialTSC} in - \texttt{gEfiProcessorSubClassGuid}. Sets initial TSC value, normally 0. + \texttt{SystemProductName}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{Model} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{SystemProductName} in Unicode. \item - \texttt{FSBFrequency}\\ - \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ - \textbf{Failsafe}: \texttt{0} (Automatic)\\ - \textbf{Description}: Sets \texttt{FSBFrequency} in - \texttt{gEfiProcessorSubClassGuid}. + \texttt{SystemSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{SystemSerialNumber} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{SystemSerialNumber} in Unicode. +\item + \texttt{SystemUUID}\\ + \textbf{Type}: \texttt{plist\ string}, GUID\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Sets \texttt{system-id} in + \texttt{gEfiMiscSubClassGuid}. The value found on Macs is equal to SMBIOS + \texttt{SystemUUID} (with swapped byte order). +\end{enumerate} - Sets CPU FSB frequency. This value equals to CPU nominal frequency divided - by CPU maximum bus ratio and is specified in Hz. Refer to - \texttt{MSR\_NEHALEM\_PLATFORM\_INFO}~(\texttt{CEh}) MSR value to determine - maximum bus ratio on modern Intel CPUs. +\subsection{Generic Properties}\label{platforminfogeneric} + +\begin{enumerate} - \emph{Note}: This value is not used on Skylake and newer but is still provided - to follow suit. \item - \texttt{ARTFrequency}\\ - \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ + \texttt{AdviseFeatures}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Updates \texttt{FirmwareFeatures} with supported bits. + + Added bits to \texttt{FirmwareFeatures}: + + \begin{itemize} + \item \texttt{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE} (\texttt{0x1}) + - Without this bit, it is not possible to reboot to Windows installed on + a drive with an EFI partition that is not the first partition on the disk. + \item \texttt{FW\_FEATURE\_SUPPORTS\_UEFI\_WINDOWS\_BOOT} (\texttt{0x20000000}) + - Without this bit, it is not possible to reboot to Windows installed on + a drive with an EFI partition that is the first partition on the disk. + \item \texttt{FW\_FEATURE\_SUPPORTS\_APFS} (\texttt{0x00080000}) + - Without this bit, it is not possible to install macOS on an APFS disk. + \item \texttt{FW\_FEATURE\_SUPPORTS\_LARGE\_BASESYSTEM} (\texttt{0x800000000}) + - Without this bit, it is not possible to install macOS versions with large + BaseSystem images, such as macOS 12. + \end{itemize} + + \emph{Note}: On most newer firmwares these bits are already set, the option + may be necessary when "upgrading" the firmware with new features. + +\item + \texttt{MLB}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{BoardSerialNumber}. + + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{MLB} variable) or SMBIOS and use it throughout the sections. + This feature can only be used on Mac-compatible firmware. + +\item + \texttt{MaxBIOSVersion}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Sets \texttt{BIOSVersion} to \texttt{9999.999.999.999.999}, recommended for legacy + Macs when using \texttt{Automatic} PlatformInfo, to avoid BIOS updates in unofficially supported macOS + versions. + +\item + \texttt{ProcessorType}\\ + \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0} (Automatic)\\ - \textbf{Description}: Sets \texttt{ARTFrequency} in - \texttt{gEfiProcessorSubClassGuid}. + \textbf{Description}: Refer to SMBIOS \texttt{ProcessorType}. - This value contains CPU ART frequency, also known as crystal clock frequency. - Its existence is exclusive to the Skylake generation and newer. The value is specified - in Hz, and is normally 24 MHz for the client Intel segment, 25 MHz for the server Intel segment, - and 19.2 MHz for Intel Atom CPUs. macOS till 10.15 inclusive assumes 24 MHz by default. +\item + \texttt{ROM}\\ + \textbf{Type}: \texttt{plist\ multidata}, 6 bytes\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}. + + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{ROM} variable) and use it throughout the sections. + This feature can only be used on Mac-compatible firmware. - \emph{Note}: On Intel Skylake X ART frequency may be a little less (approx. 0.25\%) than - 24 or 25 MHz due to special EMI-reduction circuit as described in - \href{https://github.com/acidanthera/bugtracker/issues/448#issuecomment-524914166}{Acidanthera Bugtracker}. \item - \texttt{DevicePathsSupported}\\ - \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ - \textbf{Failsafe}: \texttt{0} (Not installed)\\ - \textbf{Description}: Sets \texttt{DevicePathsSupported} in - \texttt{gEfiMiscSubClassGuid}. Must be set to \texttt{1} for - AppleACPIPlatform.kext to append SATA device paths to - \texttt{Boot\#\#\#\#} and \texttt{efi-boot-device-data} variables. - Set to \texttt{1} on all modern Macs. + \texttt{SpoofVendor}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Sets SMBIOS vendor fields to \texttt{Acidanthera}. + + It can be dangerous to use ``Apple'' in SMBIOS vendor fields for reasons outlined in the + \texttt{SystemManufacturer} description. However, certain firmware may not provide + valid values otherwise, which could obstruct the operation of some software. + \item - \texttt{SmcRevision}\\ - \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{REV} in - \texttt{gEfiMiscSubClassGuid}. Custom property read by - \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{REV} - key. + \texttt{SystemMemoryStatus}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Auto}\\ + \textbf{Description}: Indicates whether system memory is upgradable in \texttt{PlatformFeature}. + This controls the visibility of the Memory tab in ``About This Mac''. + + Valid values: + + \begin{itemize} + \tightlist + \item \texttt{Auto} --- use the original \texttt{PlatformFeature} value. + \item \texttt{Upgradable} --- explicitly unset \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} + (\texttt{0x2}) in \texttt{PlatformFeature}. + \item \texttt{Soldered} --- explicitly set \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} + (\texttt{0x2}) in \texttt{PlatformFeature}. + \end{itemize} + + \emph{Note}: On certain Mac models, such as the \texttt{MacBookPro10,x} and any \texttt{MacBookAir}, + SPMemoryReporter.spreporter will ignore \texttt{PT\_FEATURE\_HAS\_SOLDERED\_SYSTEM\_MEMORY} + and assume that system memory is non-upgradable. + \item - \texttt{SmcBranch}\\ - \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{RBr} in - \texttt{gEfiMiscSubClassGuid}. Custom property read by - \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{RBr} - key. + \texttt{SystemProductName}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{SystemProductName}. \item - \texttt{SmcPlatform}\\ - \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Sets \texttt{RPlt} in - \texttt{gEfiMiscSubClassGuid}. Custom property read by - \texttt{VirtualSMC} or \texttt{FakeSMC} to generate SMC \texttt{RPlt} - key. + \texttt{SystemSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{SystemSerialNumber}. + + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{SSN} variable) or SMBIOS and use it throughout the sections. + This feature can only be used on Mac-compatible firmware. +\item + \texttt{SystemUUID}\\ + \textbf{Type}: \texttt{plist\ string}, GUID\\ + \textbf{Failsafe}: Empty (OEM specified or not installed)\\ + \textbf{Description}: Refer to SMBIOS \texttt{SystemUUID}. + + Specify special string value \texttt{OEM} to extract current value from NVRAM + (\texttt{system-id} variable) or SMBIOS and use it throughout the sections. + Since not every firmware implementation has valid (and unique) values, this + feature is not applicable to some setups, and may provide unexpected results. + It is highly recommended to specify the UUID explicitly. Refer to + \texttt{UseRawUuidEncoding} to determine how SMBIOS value is parsed. \end{enumerate} \subsection{Memory Properties}\label{platforminfomemory} \begin{enumerate} + \item \texttt{DataWidth}\\ \textbf{Type}: \texttt{plist\ integer}, 16-bit\\ @@ -6057,6 +6082,7 @@ \subsection{Memory Properties}\label{platforminfomemory} \subsubsection{Memory Device Properties}\label{platforminfomemorydevice} \begin{enumerate} + \item \texttt{AssetTag}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6137,6 +6163,7 @@ \subsubsection{Memory Device Properties}\label{platforminfomemorydevice} \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \begin{enumerate} + \item \texttt{BID}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6144,22 +6171,6 @@ \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \textbf{Description}: Specifies the value of NVRAM variable \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_BID}. -\item - \texttt{ROM}\\ - \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Specifies the values of NVRAM variables - \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_ROM} and - \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}. - -\item - \texttt{MLB}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: Specifies the values of NVRAM variables - \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_MLB} and - \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB}. - \item \texttt{FirmwareFeatures}\\ \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ @@ -6184,6 +6195,22 @@ \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask} \end{itemize} +\item + \texttt{MLB}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Specifies the values of NVRAM variables + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_MLB} and + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB}. + +\item + \texttt{ROM}\\ + \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ + \textbf{Failsafe}: Empty (Not installed)\\ + \textbf{Description}: Specifies the values of NVRAM variables + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_ROM} and + \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM}. + \item \texttt{SystemSerialNumber}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6206,6 +6233,14 @@ \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \subsection{SMBIOS Properties}\label{platforminfosmbios} \begin{enumerate} + +\item + \texttt{BIOSReleaseDate}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: BIOS Information (Type 0) --- BIOS Release Date\\ + \textbf{Description}: Firmware release date. Similar to + \texttt{BIOSVersion}. May look like \texttt{12/08/2017}. \item \texttt{BIOSVendor}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6236,86 +6271,29 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} EFI Version: 220.230.16.0.0 Built by: root@quinoa Date: Wed Nov 14 22:12:53 2018 - Revision: 220.230.16 (B&I) - ROM Version: F000_B00 - Build Type: Official Build, RELEASE - Compiler: Apple LLVM version 10.0.0 (clang-1000.2.42) - UUID: E5D1475B-29FF-32BA-8552-682622BA42E1 - UUID: 151B0907-10F9-3271-87CD-4BF5DBECACF5 -\end{verbatim} -\item - \texttt{BIOSReleaseDate}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: BIOS Information (Type 0) --- BIOS Release Date\\ - \textbf{Description}: Firmware release date. Similar to - \texttt{BIOSVersion}. May look like \texttt{12/08/2017}. -\item - \texttt{SystemManufacturer}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1) --- Manufacturer\\ - \textbf{Description}: OEM manufacturer of the particular board. Use failsafe - unless strictly required. Do not override to contain \texttt{Apple\ Inc.} - on non-Apple hardware, as this confuses numerous services present in - the operating system, such as firmware updates, eficheck, as well as - kernel extensions developed in Acidanthera, such as Lilu and its - plugins. In addition it will also make some operating systems - such as Linux unbootable. -\item - \texttt{SystemProductName}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1), Product Name\\ - \textbf{Description}: Preferred Mac model used to mark the device as - supported by the operating system. This value must be specified by any - configuration for later automatic generation of the related values in - this and other SMBIOS tables and related configuration parameters. If - \texttt{SystemProductName} is not compatible with the target operating - system, \texttt{-no\_compat\_check} boot argument may be used as an - override. - - \emph{Note}: If \texttt{SystemProductName} is unknown, and related - fields are unspecified, default values should be assumed as being set - to \texttt{MacPro6,1} data. The list of known products can be found in - \texttt{AppleModels}. -\item - \texttt{SystemVersion}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1) --- Version\\ - \textbf{Description}: Product iteration version number. May look like - \texttt{1.1}. -\item - \texttt{SystemSerialNumber}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1) --- Serial Number\\ - \textbf{Description}: Product serial number in defined format. Known - formats are described in - \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/macserial/FORMAT.md}{macserial}. -\item - \texttt{SystemUUID}\\ - \textbf{Type}: \texttt{plist\ string}, GUID\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1) --- UUID\\ - \textbf{Description}: A UUID is an identifier that is designed to be - unique across both time and space. It requires no central registration - process. + Revision: 220.230.16 (B&I) + ROM Version: F000_B00 + Build Type: Official Build, RELEASE + Compiler: Apple LLVM version 10.0.0 (clang-1000.2.42) + UUID: E5D1475B-29FF-32BA-8552-682622BA42E1 + UUID: 151B0907-10F9-3271-87CD-4BF5DBECACF5 +\end{verbatim} \item - \texttt{SystemSKUNumber}\\ + \texttt{BoardAssetTag}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1) --- SKU Number\\ - \textbf{Description}: Mac Board ID (\texttt{board-id}). May look like - \texttt{Mac-7BA5B2D9E42DDD94} or \texttt{Mac-F221BEC8} in older - models. Sometimes it can be just empty. + \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Asset + Tag\\ + \textbf{Description}: Asset tag number. Varies, may be empty or + \texttt{Type2\ -\ Board\ Asset\ Tag}. \item - \texttt{SystemFamily}\\ + \texttt{BoardLocationInChassis}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Information (Type 1) --- Family\\ - \textbf{Description}: Family name. May look like \texttt{iMac\ Pro}. + \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Location + in Chassis\\ + \textbf{Description}: Varies, may be empty or + \texttt{Part\ Component}. \item \texttt{BoardManufacturer}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6333,14 +6311,6 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} \textbf{Description}: Mac Board ID (\texttt{board-id}). May look like \texttt{Mac-7BA5B2D9E42DDD94} or \texttt{Mac-F221BEC8} in older models. -\item - \texttt{BoardVersion}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) - - Version\\ - \textbf{Description}: Board version number. Varies, may match - \texttt{SystemProductName} or \texttt{SystemProductVersion}. \item \texttt{BoardSerialNumber}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6350,14 +6320,6 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} \textbf{Description}: Board serial number in defined format. Known formats are described in \href{https://github.com/acidanthera/macserial/blob/master/FORMAT.md}{macserial}. -\item - \texttt{BoardAssetTag}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Asset - Tag\\ - \textbf{Description}: Asset tag number. Varies, may be empty or - \texttt{Type2\ -\ Board\ Asset\ Tag}. \item \texttt{BoardType}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -6368,13 +6330,21 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} processor, memory, and I/O) or \texttt{0xB} (Processor/Memory Module). Refer to Table 15 -- Baseboard: Board Type for details. \item - \texttt{BoardLocationInChassis}\\ + \texttt{BoardVersion}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Location - in Chassis\\ - \textbf{Description}: Varies, may be empty or - \texttt{Part\ Component}. + \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) - + Version\\ + \textbf{Description}: Board version number. Varies, may match + \texttt{SystemProductName} or \texttt{SystemProductVersion}. +\item + \texttt{ChassisAssetTag}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Asset Tag + Number\\ + \textbf{Description}: Chassis type name. Varies, could be empty or + \texttt{MacBook-Aluminum}. \item \texttt{ChassisManufacturer}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -6382,6 +6352,12 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Manufacturer\\ \textbf{Description}: Board manufacturer. All rules of \texttt{SystemManufacturer} do apply. +\item + \texttt{ChassisSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Version\\ + \textbf{Description}: Should match \texttt{SystemSerialNumber}. \item \texttt{ChassisType}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -6395,35 +6371,6 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Version\\ \textbf{Description}: Should match \texttt{BoardProduct}. -\item - \texttt{ChassisSerialNumber}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Version\\ - \textbf{Description}: Should match \texttt{SystemSerialNumber}. -\item - \texttt{ChassisAssetTag}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Asset Tag - Number\\ - \textbf{Description}: Chassis type name. Varies, could be empty or - \texttt{MacBook-Aluminum}. -\item - \texttt{PlatformFeature}\\ - \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ - \textbf{Failsafe}: \texttt{0xFFFFFFFF} (OEM specified on Apple hardware, do not provide the table otherwise)\\ - \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE133} - - \texttt{PlatformFeature}\\ - \textbf{Description}: Platform features bitmask (Missing on older Macs). Refer to - \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{AppleFeatures.h} for details. -\item - \texttt{SmcVersion}\\ - \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ - \textbf{Failsafe}: All zero (OEM specified on Apple hardware, do not provide the table otherwise)\\ - \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE134} - \texttt{Version}\\ - \textbf{Description}: ASCII string containing SMC version in upper case. - Missing on T2 based Macs. \item \texttt{FirmwareFeatures}\\ \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ @@ -6446,6 +6393,14 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{AppleFeatures.h} for details. Lower 32 bits match \texttt{FirmwareFeaturesMask}. Upper 64 bits match \texttt{ExtendedFirmwareFeaturesMask}. +\item + \texttt{PlatformFeature}\\ + \textbf{Type}: \texttt{plist\ integer}, 32-bit\\ + \textbf{Failsafe}: \texttt{0xFFFFFFFF} (OEM specified on Apple hardware, do not provide the table otherwise)\\ + \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE133} - + \texttt{PlatformFeature}\\ + \textbf{Description}: Platform features bitmask (Missing on older Macs). Refer to + \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleFeatures.h}{AppleFeatures.h} for details. \item \texttt{ProcessorType}\\ \textbf{Type}: \texttt{plist\ integer}, 16-bit\\ @@ -6462,6 +6417,79 @@ \subsection{SMBIOS Properties}\label{platforminfosmbios} For a full list of available values and their limitations (the value will only apply if the CPU core count matches), refer to the Apple SMBIOS definitions header \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Apple/IndustryStandard/AppleSmBios.h}{here}. +\item + \texttt{SmcVersion}\\ + \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ + \textbf{Failsafe}: All zero (OEM specified on Apple hardware, do not provide the table otherwise)\\ + \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE134} - \texttt{Version}\\ + \textbf{Description}: ASCII string containing SMC version in upper case. + Missing on T2 based Macs. +\item + \texttt{SystemFamily}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Family\\ + \textbf{Description}: Family name. May look like \texttt{iMac\ Pro}. +\item + \texttt{SystemManufacturer}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Manufacturer\\ + \textbf{Description}: OEM manufacturer of the particular board. Use failsafe + unless strictly required. Do not override to contain \texttt{Apple\ Inc.} + on non-Apple hardware, as this confuses numerous services present in + the operating system, such as firmware updates, eficheck, as well as + kernel extensions developed in Acidanthera, such as Lilu and its + plugins. In addition it will also make some operating systems + such as Linux unbootable. +\item + \texttt{SystemProductName}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1), Product Name\\ + \textbf{Description}: Preferred Mac model used to mark the device as + supported by the operating system. This value must be specified by any + configuration for later automatic generation of the related values in + this and other SMBIOS tables and related configuration parameters. If + \texttt{SystemProductName} is not compatible with the target operating + system, \texttt{-no\_compat\_check} boot argument may be used as an + override. + + \emph{Note}: If \texttt{SystemProductName} is unknown, and related + fields are unspecified, default values should be assumed as being set + to \texttt{MacPro6,1} data. The list of known products can be found in + \texttt{AppleModels}. +\item + \texttt{SystemSKUNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- SKU Number\\ + \textbf{Description}: Mac Board ID (\texttt{board-id}). May look like + \texttt{Mac-7BA5B2D9E42DDD94} or \texttt{Mac-F221BEC8} in older + models. Sometimes it can be just empty. +\item + \texttt{SystemSerialNumber}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Serial Number\\ + \textbf{Description}: Product serial number in defined format. Known + formats are described in + \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/macserial/FORMAT.md}{macserial}. +\item + \texttt{SystemUUID}\\ + \textbf{Type}: \texttt{plist\ string}, GUID\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- UUID\\ + \textbf{Description}: A UUID is an identifier that is designed to be + unique across both time and space. It requires no central registration + process. +\item + \texttt{SystemVersion}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (OEM specified)\\ + \textbf{SMBIOS}: System Information (Type 1) --- Version\\ + \textbf{Description}: Product iteration version number. May look like + \texttt{1.1}. \end{enumerate} \section{UEFI}\label{uefi} @@ -6556,7 +6584,7 @@ \subsection{Drivers}\label{uefidrivers} builtin \texttt{KeySupport}, which may work better or worse depending on the firmware. \\ \href{https://github.com/acidanthera/OpenCorePkg}{\texttt{OpenPartitionDxe}}\textbf{*} & Partition management driver with Apple Partitioning Scheme support. - This driver can be used to support loading older DMG recoveries such as macOS 10.9 + This driver can be used to support loading older DMG recoveries such as OS X 10.9 using Apple Partitioning Scheme, or for loading other macOS Installers where these were created using the Apple Partitioning Scheme (creating macOS Installers using GPT avoids the need for this). OpenDuet already includes this driver. \\ @@ -7390,7 +7418,7 @@ \subsubsection{Managing macOS updates when using emulated NVRAM} The first reboot should correctly select \texttt{macOS Installer}. For second and subsequent reboots, if a \texttt{macOS Installer} entry is still present it should be manually selected (using just Enter, not \texttt{CTRL+Enter}). Once a \texttt{macOS Installer} entry is no longer present, the entry for the new OS will still be automatically selected if it was the previous boot default. -If not, it should be manually selected (at this point, \texttt{CTRL+Enter} is a good idea as any final remaining installion restarts +If not, it should be manually selected (at this point, \texttt{CTRL+Enter} is a good idea as any final remaining installation restarts will be to this entry). \emph{Note 1}: When using emulated NVRAM but not installing from within an existing installed macOS (i.e. when installing from @@ -7398,10 +7426,10 @@ \subsubsection{Managing macOS updates when using emulated NVRAM} \href{https://applelife.ru/posts/916248}{forum post} (in Russian) for additional options. -\emph{Note 2}: After upgrading from an ealier macOS version to macOS Sonoma, the \texttt{Launchd.command} script should be +\emph{Note 2}: After upgrading from an earlier macOS version to macOS Sonoma, the \texttt{Launchd.command} script should be reinstalled, as a different strategy is required in order for NVRAM to be saved successfully. -\emph{Note 3}: In macOS Sonoma the following additional constraints apply to the ESP paritition on which +\emph{Note 3}: In macOS Sonoma the following additional constraints apply to the ESP partition on which OpenCore is installed, in order for the \texttt{Launchd.command} script to work successfully: \begin{itemize} @@ -7413,6 +7441,7 @@ \subsubsection{Managing macOS updates when using emulated NVRAM} \subsection{Properties}\label{uefiprops} \begin{enumerate} + \item \texttt{APFS}\\ \textbf{Type}: \texttt{plist\ dict}\\ @@ -7630,7 +7659,7 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} \begin{enumerate} - \item +\item \texttt{AppleEvent}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Auto}\\ @@ -7677,6 +7706,30 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} \item \texttt{false} --- Apple default values of 500ms (\texttt{50}) and 50ms (\texttt{5}) are used. \end{itemize} +\item + \texttt{GraphicsInputMirroring}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: + Apple’s own implementation of AppleEvent prevents keyboard input during graphics applications from appearing + on the basic console input stream. + + With the default setting of \texttt{false}, OpenCore's builtin implementation of AppleEvent replicates this behaviour. + + On non-Apple hardware this can stop keyboard input working in graphics-based applications such as Windows BitLocker + which use non-Apple key input methods. + + The recommended setting on all hardware is \texttt{true}. + + \emph{Note}: AppleEvent's default behaviour is intended to prevent unwanted queued keystrokes from appearing + after exiting graphics-based UEFI applications; this issue is already handled separately within OpenCore. + + \begin{itemize} + \tightlist + \item \texttt{true} --- Allow keyboard input to reach graphics mode apps which are not using Apple input protocols. + \item \texttt{false} --- Prevent key input mirroring to non-Apple protocols when in graphics mode. + \end{itemize} + \item \texttt{KeyInitialDelay}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -7750,63 +7803,41 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} then increase \texttt{KeySubsequentDelay} by one or two more until this effect goes away. \end{itemize} - \item - \texttt{GraphicsInputMirroring}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: - Apple’s own implementation of AppleEvent prevents keyboard input during graphics applications from appearing - on the basic console input stream. - - With the default setting of \texttt{false}, OpenCore's builtin implementation of AppleEvent replicates this behaviour. - - On non-Apple hardware this can stop keyboard input working in graphics-based applications such as Windows BitLocker - which use non-Apple key input methods. - - The recommended setting on all hardware is \texttt{true}. - - \emph{Note}: AppleEvent's default behaviour is intended to prevent unwanted queued keystrokes from appearing - after exiting graphics-based UEFI applications; this issue is already handled separately within OpenCore. - - \begin{itemize} - \tightlist - \item \texttt{true} --- Allow keyboard input to reach graphics mode apps which are not using Apple input protocols. - \item \texttt{false} --- Prevent key input mirroring to non-Apple protocols when in graphics mode. - \end{itemize} - - \item - \texttt{PointerPollMin}\\ +\item + \texttt{PointerDwellClickTimeout}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure minimal pointer polling period in ms. - - This is the minimal period the OpenCore builtin AppleEvent driver polls - pointer devices (e.g. mice, trackpads) for motion events. The current - implementation defaults to 10 ms. Setting \texttt{0} leaves this - default unchanged. + \textbf{Description}: Configure pointer dwell-clicking single left click timeout in + milliseconds in the OpenCore re-implementation of the Apple Event protocol. + Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. + When the timeout expires, a single left click is issued at the current position. + \texttt{0} indicates the timeout is disabled. - \item - \texttt{PointerPollMax}\\ +\item + \texttt{PointerDwellDoubleClickTimeout}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure maximum pointer polling period in ms. - - This is the maximum period the OpenCore builtin AppleEvent driver polls - pointer devices (e.g. mice, trackpads) for motion events. The period - is increased up to this value as long as the devices do not respond - in time. The current implementation defaults to 80 ms. Setting - \texttt{0} leaves this default unchanged. + \textbf{Description}: Configure pointer dwell-clicking single left double click timeout in + milliseconds in the OpenCore re-implementation of the Apple Event protocol. + Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - Certain trackpad drivers often found in Dell laptops can be very slow - to respond when no physical movement happens. This can affect - OpenCanopy and FileVault 2 user interface responsiveness and loading times. - Increasing the polling periods can reduce the impact. + When the timeout expires, a single left double click is issued at the current position. + \texttt{0} indicates the timeout is disabled. - \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. +\item + \texttt{PointerDwellRadius}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Configure pointer dwell-clicking tolerance radius in pixels in the + OpenCore re-implementation of the Apple Event protocol. + Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - \item + The radius is scaled by \texttt{UIScale}. When the pointer leaves this radius, the timeouts for \texttt{PointerDwellClickTimeout} + and \texttt{PointerDwellDoubleClickTimeout} are reset and the new position is the centre + for the new dwell-clicking tolerance radius. + +\item \texttt{PointerPollMask}\\ \textbf{Type}: \texttt{plist\ integer, 32 bit}\\ \textbf{Failsafe}: \texttt{-1}\\ @@ -7833,7 +7864,39 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} \emph{Note}: Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - \item +\item + \texttt{PointerPollMax}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Configure maximum pointer polling period in ms. + + This is the maximum period the OpenCore builtin AppleEvent driver polls + pointer devices (e.g. mice, trackpads) for motion events. The period + is increased up to this value as long as the devices do not respond + in time. The current implementation defaults to 80 ms. Setting + \texttt{0} leaves this default unchanged. + + Certain trackpad drivers often found in Dell laptops can be very slow + to respond when no physical movement happens. This can affect + OpenCanopy and FileVault 2 user interface responsiveness and loading times. + Increasing the polling periods can reduce the impact. + + \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. + +\item + \texttt{PointerPollMin}\\ + \textbf{Type}: \texttt{plist\ integer}\\ + \textbf{Failsafe}: \texttt{0}\\ + \textbf{Description}: Configure minimal pointer polling period in ms. + + This is the minimal period the OpenCore builtin AppleEvent driver polls + pointer devices (e.g. mice, trackpads) for motion events. The current + implementation defaults to 10 ms. Setting \texttt{0} leaves this + default unchanged. + + \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. + +\item \texttt{PointerSpeedDiv}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{1}\\ @@ -7862,40 +7925,6 @@ \subsection{AppleInput Properties}\label{uefiappleinputprops} optionally be modified in combination with \texttt{PointerSpeedDiv}, according to user preference, to achieve customised mouse movement scaling. -\item - \texttt{PointerDwellClickTimeout}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure pointer dwell-clicking single left click timeout in - milliseconds in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - - When the timeout expires, a single left click is issued at the current position. - \texttt{0} indicates the timeout is disabled. - -\item - \texttt{PointerDwellDoubleClickTimeout}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure pointer dwell-clicking single left double click timeout in - milliseconds in the OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - - When the timeout expires, a single left double click is issued at the current position. - \texttt{0} indicates the timeout is disabled. - -\item - \texttt{PointerDwellRadius}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure pointer dwell-clicking tolerance radius in pixels in the - OpenCore re-implementation of the Apple Event protocol. - Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - - The radius is scaled by \texttt{UIScale}. When the pointer leaves this radius, the timeouts for \texttt{PointerDwellClickTimeout} - and \texttt{PointerDwellDoubleClickTimeout} are reset and the new position is the centre - for the new dwell-clicking tolerance radius. - \end{enumerate} \subsection{Audio Properties}\label{uefiaudioprops} @@ -7980,7 +8009,7 @@ \subsection{Audio Properties}\label{uefiaudioprops} to try each available output channel one by one, by setting \texttt{AudioOutMask} to \texttt{1}, \texttt{2}, \texttt{4}, etc., up to 2 \texttt{\^{}} \texttt{N - 1}, in order to work out which channel(s) produce sound. - \item +\item \texttt{AudioSupport}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -7990,7 +8019,7 @@ \subsection{Audio Properties}\label{uefiaudioprops} (\texttt{AudioOutMask}) dedicated audio ports of the specified codec (\texttt{AudioCodec}), located on the specified audio controller (\texttt{AudioDevice}). - \item +\item \texttt{DisconnectHda}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -8003,7 +8032,7 @@ \subsection{Audio Properties}\label{uefiaudioprops} \texttt{-{}-gpio-setup} driver argument which is dealt with in the \hyperref[uefiaudio]{AudioDxe} section. - \item +\item \texttt{MaximumGain}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{-15}\\ @@ -8028,7 +8057,7 @@ \subsection{Audio Properties}\label{uefiaudioprops} \emph{Note 3}: Digital audio output -- which does not have a volume slider in-OS -- ignores this and all other gain settings, only mute settings are relevant. - \item +\item \texttt{MinimumAssistGain}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{-30}\\ @@ -8042,7 +8071,7 @@ \subsection{Audio Properties}\label{uefiaudioprops} \emph{Note 2}: See \texttt{MaximumGain} for an explanation of decibel volume levels. - \item +\item \texttt{MinimumAudibleGain}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{-128}\\ @@ -8111,6 +8140,13 @@ \subsection{Drivers Properties}\label{uefidriversprops} \begin{enumerate} +\item + \texttt{Arguments}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty\\ + \textbf{Description}: Some OpenCore plugins accept optional additional arguments + which may be specified as a string here. + \item \texttt{Comment}\\ \textbf{Type}: \texttt{plist\ string}\\ @@ -8124,13 +8160,6 @@ \subsection{Drivers Properties}\label{uefidriversprops} \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: If \texttt{false} this driver entry will be ignored. -\item - \texttt{Path}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Path of file to be loaded as a UEFI driver - from \texttt{OC/Drivers} directory. - \item \texttt{LoadEarly}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -8141,11 +8170,11 @@ \subsection{Drivers Properties}\label{uefidriversprops} given driver and purpose. \item - \texttt{Arguments}\\ + \texttt{Path}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty\\ - \textbf{Description}: Some OpenCore plugins accept optional additional arguments - which may be specified as a string here. + \textbf{Description}: Path of file to be loaded as a UEFI driver + from \texttt{OC/Drivers} directory. \end{enumerate} @@ -8307,89 +8336,15 @@ \subsection{Output Properties}\label{uefioutputprops} \begin{enumerate} \item - \texttt{InitialMode}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \texttt{Auto}\\ - \textbf{Description}: Selects the internal \texttt{ConsoleControl} mode in - which \texttt{TextRenderer} will operate. - - Available values are \texttt{Auto}, \texttt{Text} and \texttt{Graphics}. - \texttt{Text} and \texttt{Graphics} specify the named mode. \texttt{Auto} - uses the current mode of the system \texttt{ConsoleControl} protocol when - one exists, defaulting to \texttt{Text} mode otherwise. - - UEFI firmware typically supports \texttt{ConsoleControl} with two - rendering modes: \texttt{Graphics} and \texttt{Text}. Some types of firmware - do not provide a native \texttt{ConsoleControl} and rendering modes. OpenCore - and macOS expect text to only be shown in \texttt{Text} mode but - graphics to be drawn in any mode, and this is how the OpenCore \texttt{Builtin} - renderer behaves. Since this is not required by the UEFI specification, behaviour - of the system \texttt{ConsoleControl} protocol, when it exists, may vary. - -\item - \texttt{TextRenderer}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \texttt{BuiltinGraphics}\\ - \textbf{Description}: Chooses renderer for text going through standard - console output. - - Currently two renderers are supported: \texttt{Builtin} and - \texttt{System}. The \texttt{System} renderer uses firmware services - for text rendering, however with additional options provided to - sanitize the output. The \texttt{Builtin} renderer bypasses firmware - services and performs text rendering on its own. Each renderer - supports a different set of options. It is recommended to use the - \texttt{Builtin} renderer, as it supports HiDPI mode and uses - full screen resolution. - - Each renderer provides its own \texttt{ConsoleControl} protocol - (in the case of \texttt{SystemGeneric} only, this passes some - operations through to the system \texttt{ConsoleControl} protocol, - if one exists). - - Valid values of this option are combinations of the renderer to use - and the \texttt{ConsoleControl} mode to set on the underlying system - \texttt{ConsoleControl} protocol before starting. To control the initial - mode of the provided \texttt{ConsoleControl} protocol once started, use - the \texttt{InitialMode} option. - - \begin{itemize} - \tightlist - \item \texttt{BuiltinGraphics} --- Switch to \texttt{Graphics} - mode then use \texttt{Builtin} renderer with - custom \texttt{ConsoleControl}. - \item \texttt{BuiltinText} --- Switch to \texttt{Text} - mode then use \texttt{Builtin} renderer with - custom \texttt{ConsoleControl}. - \item \texttt{SystemGraphics} --- Switch to \texttt{Graphics} - mode then use \texttt{System} renderer with - custom \texttt{ConsoleControl}. - \item \texttt{SystemText} --- Switch to \texttt{Text} - mode then use \texttt{System} renderer with - custom \texttt{ConsoleControl}. - \item \texttt{SystemGeneric} --- Use \texttt{System} renderer with - custom a \texttt{ConsoleControl} protocol which passes its mode set and - get operations through to system \texttt{ConsoleControl} when it exists. - \end{itemize} - - The use of \texttt{BuiltinGraphics} is straightforward. - For most platforms, it is necessary to enable \texttt{ProvideConsoleGop} - and set \texttt{Resolution} to \texttt{Max}. The \texttt{BuiltinText} variant is - an alternative to \texttt{BuiltinGraphics} for some very old and defective - laptop firmware, which can only draw in \texttt{Text} mode. - - The use of \texttt{System} protocols is more complicated. Typically, - the preferred setting is \texttt{SystemGraphics} or \texttt{SystemText}. - Enabling \texttt{ProvideConsoleGop}, setting \texttt{Resolution} to - \texttt{Max}, enabling \texttt{ReplaceTabWithSpace} is useful on almost - all platforms. \texttt{SanitiseClearScreen}, \texttt{IgnoreTextInGraphics}, - and \texttt{ClearScreenOnModeSwitch} are more specific, and their use - depends on the firmware. + \texttt{ClearScreenOnModeSwitch}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Some types of firmware only clear part of the screen when switching + from graphics to text mode, leaving a fragment of previously drawn images visible. + This option fills the entire graphics screen with black colour before switching to + text mode. - \emph{Note}: Some Macs, such as the \texttt{MacPro5,1}, may have incompatible - console output when using modern GPUs, and thus only \texttt{BuiltinGraphics} - may work for them in such cases. NVIDIA GPUs may require additional - \href{https://github.com/acidanthera/bugtracker/issues/1280}{firmware upgrades}. + \emph{Note}: This option only applies to \texttt{System} renderer. \item \texttt{ConsoleFont}\\ @@ -8415,78 +8370,28 @@ \subsection{Output Properties}\label{uefioutputprops} (\texttt{@KMRSTVWimrsw}) more similar to the free ISO Latin font used in XNU and OpenCore. \end{itemize} - \texttt{Terminus} and \texttt{TerminusCore} are provided under the SIL Open Font License, Version 1.1. - Some additional GPL licensed fonts from the EPTO Fonts library, converted - to the required \texttt{.hex} format, can be found \href{https://github.com/mikebeaton/epto-fonts}{here}. - - \emph{Note 1}: On many newer systems the \texttt{System} text renderer already provides a full - set of international characters, in which case this can be used without requiring the \texttt{Builtin} - renderer and a custom font. - - \emph{Note 2}: This option only affects the \texttt{Builtin} text renderer and only takes effect from - the point at which the \texttt{Builtin} renderer is configured. When console output is visible before - this point, it is using the system console font. - -\item - \texttt{ConsoleMode}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (Maintain current console mode)\\ - \textbf{Description}: Sets console output mode as specified - with the \texttt{WxH} (e.g. \texttt{80x24}) formatted string. - - Set to \texttt{Max} to attempt using the largest available console mode. - - \emph{Note}: This field is best left empty on most types of firmware. - -\item - \texttt{Resolution}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty (Maintain current screen resolution)\\ - \textbf{Description}: Sets console output screen resolution. - - \begin{itemize} - \tightlist - \item Set to \texttt{WxH@Bpp} (e.g. \texttt{1920x1080@32}) or \texttt{WxH} - (e.g. \texttt{1920x1080}) formatted string to request custom resolution - from GOP if available. - \item Set to \texttt{Max} to attempt using the largest - available screen resolution. - \end{itemize} - - On HiDPI screens \texttt{APPLE\_VENDOR\_VARIABLE\_GUID} \texttt{UIScale} - NVRAM variable may need to be set to \texttt{02} to enable HiDPI scaling - in \texttt{Builtin} text renderer, FileVault 2 UEFI password interface, - and boot screen logo. Refer to the \hyperref[nvramvarsrec]{Recommended Variables} - section for details. - - \emph{Note}: This will fail when console handle has no GOP protocol. When - the firmware does not provide it, it can be added with \texttt{ProvideConsoleGop} - set to \texttt{true}. - -\item - \texttt{ForceResolution}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Forces \texttt{Resolution} to be set in cases where the desired - resolution is not available by default, such as on legacy Intel GMA and first - generation Intel HD Graphics (Ironlake/Arrandale). Setting \texttt{Resolution} to - \texttt{Max} will try to pull the largest available resolution from the connected - display's EDID. + \texttt{Terminus} and \texttt{TerminusCore} are provided under the SIL Open Font License, Version 1.1. + Some additional GPL licensed fonts from the EPTO Fonts library, converted + to the required \texttt{.hex} format, can be found \href{https://github.com/mikebeaton/epto-fonts}{here}. - \emph{Note}: This option depends on the \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Acidanthera/Protocol/OcForceResolution.h}{\texttt{OC\_FORCE\_RESOLUTION\_PROTOCOL}} - protocol being present. This protocol is currently only supported by \texttt{OpenDuetPkg}. The - \texttt{OpenDuetPkg} implementation currently only supports Intel iGPUs and certain ATI GPUs. + \emph{Note 1}: On many newer systems the \texttt{System} text renderer already provides a full + set of international characters, in which case this can be used without requiring the \texttt{Builtin} + renderer and a custom font. + + \emph{Note 2}: This option only affects the \texttt{Builtin} text renderer and only takes effect from + the point at which the \texttt{Builtin} renderer is configured. When console output is visible before + this point, it is using the system console font. \item - \texttt{ClearScreenOnModeSwitch}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Some types of firmware only clear part of the screen when switching - from graphics to text mode, leaving a fragment of previously drawn images visible. - This option fills the entire graphics screen with black colour before switching to - text mode. + \texttt{ConsoleMode}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Maintain current console mode)\\ + \textbf{Description}: Sets console output mode as specified + with the \texttt{WxH} (e.g. \texttt{80x24}) formatted string. - \emph{Note}: This option only applies to \texttt{System} renderer. + Set to \texttt{Max} to attempt using the largest available console mode. + + \emph{Note}: This field is best left empty on most types of firmware. \item \texttt{DirectGopRendering}\\ @@ -8503,6 +8408,20 @@ \subsection{Output Properties}\label{uefioutputprops} compatibility with \texttt{EfiBoot}, builtin \texttt{AppleFramebufferInfo} should also be used, i.e. it may need to be overridden on Mac EFI. +\item + \texttt{ForceResolution}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Forces \texttt{Resolution} to be set in cases where the desired + resolution is not available by default, such as on legacy Intel GMA and first + generation Intel HD Graphics (Ironlake/Arrandale). Setting \texttt{Resolution} to + \texttt{Max} will try to pull the largest available resolution from the connected + display's EDID. + + \emph{Note}: This option depends on the \href{https://github.com/acidanthera/OpenCorePkg/blob/master/Include/Acidanthera/Protocol/OcForceResolution.h}{\texttt{OC\_FORCE\_RESOLUTION\_PROTOCOL}} + protocol being present. This protocol is currently only supported by \texttt{OpenDuetPkg}. The + \texttt{OpenDuetPkg} implementation currently only supports Intel iGPUs and certain ATI GPUs. + \item \texttt{GopBurstMode}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -8558,15 +8477,24 @@ \subsection{Output Properties}\label{uefioutputprops} \emph{Note}: This option only applies to the \texttt{System} renderer. \item - \texttt{ReplaceTabWithSpace}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Some types of firmware do not print tab characters or everything - that follows them, causing difficulties in using the UEFI Shell's builtin - text editor to edit property lists and other documents. This option makes the console - output spaces instead of tabs. + \texttt{InitialMode}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{Auto}\\ + \textbf{Description}: Selects the internal \texttt{ConsoleControl} mode in + which \texttt{TextRenderer} will operate. - \emph{Note}: This option only applies to \texttt{System} renderer. + Available values are \texttt{Auto}, \texttt{Text} and \texttt{Graphics}. + \texttt{Text} and \texttt{Graphics} specify the named mode. \texttt{Auto} + uses the current mode of the system \texttt{ConsoleControl} protocol when + one exists, defaulting to \texttt{Text} mode otherwise. + + UEFI firmware typically supports \texttt{ConsoleControl} with two + rendering modes: \texttt{Graphics} and \texttt{Text}. Some types of firmware + do not provide a native \texttt{ConsoleControl} and rendering modes. OpenCore + and macOS expect text to only be shown in \texttt{Text} mode but + graphics to be drawn in any mode, and this is how the OpenCore \texttt{Builtin} + renderer behaves. Since this is not required by the UEFI specification, behaviour + of the system \texttt{ConsoleControl} protocol, when it exists, may vary. \item \texttt{ProvideConsoleGop}\\ @@ -8610,6 +8538,42 @@ \subsection{Output Properties}\label{uefioutputprops} OpenCore from Shell and thus it is optional. In versions prior to 0.5.2 this option was mandatory and not configurable. Please do not use this unless required. +\item + \texttt{ReplaceTabWithSpace}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Some types of firmware do not print tab characters or everything + that follows them, causing difficulties in using the UEFI Shell's builtin + text editor to edit property lists and other documents. This option makes the console + output spaces instead of tabs. + + \emph{Note}: This option only applies to \texttt{System} renderer. + +\item + \texttt{Resolution}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: Empty (Maintain current screen resolution)\\ + \textbf{Description}: Sets console output screen resolution. + + \begin{itemize} + \tightlist + \item Set to \texttt{WxH@Bpp} (e.g. \texttt{1920x1080@32}) or \texttt{WxH} + (e.g. \texttt{1920x1080}) formatted string to request custom resolution + from GOP if available. + \item Set to \texttt{Max} to attempt using the largest + available screen resolution. + \end{itemize} + + On HiDPI screens \texttt{APPLE\_VENDOR\_VARIABLE\_GUID} \texttt{UIScale} + NVRAM variable may need to be set to \texttt{02} to enable HiDPI scaling + in \texttt{Builtin} text renderer, FileVault 2 UEFI password interface, + and boot screen logo. Refer to the \hyperref[nvramvarsrec]{Recommended Variables} + section for details. + + \emph{Note}: This will fail when console handle has no GOP protocol. When + the firmware does not provide it, it can be added with \texttt{ProvideConsoleGop} + set to \texttt{true}. + \item \texttt{SanitiseClearScreen}\\ \textbf{Type}: \texttt{plist\ boolean}\\ @@ -8623,6 +8587,71 @@ \subsection{Output Properties}\label{uefioutputprops} On all known affected systems, \texttt{ConsoleMode} must be set to an empty string for this option to work. +\item + \texttt{TextRenderer}\\ + \textbf{Type}: \texttt{plist\ string}\\ + \textbf{Failsafe}: \texttt{BuiltinGraphics}\\ + \textbf{Description}: Chooses renderer for text going through standard + console output. + + Currently two renderers are supported: \texttt{Builtin} and + \texttt{System}. The \texttt{System} renderer uses firmware services + for text rendering, however with additional options provided to + sanitize the output. The \texttt{Builtin} renderer bypasses firmware + services and performs text rendering on its own. Each renderer + supports a different set of options. It is recommended to use the + \texttt{Builtin} renderer, as it supports HiDPI mode and uses + full screen resolution. + + Each renderer provides its own \texttt{ConsoleControl} protocol + (in the case of \texttt{SystemGeneric} only, this passes some + operations through to the system \texttt{ConsoleControl} protocol, + if one exists). + + Valid values of this option are combinations of the renderer to use + and the \texttt{ConsoleControl} mode to set on the underlying system + \texttt{ConsoleControl} protocol before starting. To control the initial + mode of the provided \texttt{ConsoleControl} protocol once started, use + the \texttt{InitialMode} option. + + \begin{itemize} + \tightlist + \item \texttt{BuiltinGraphics} --- Switch to \texttt{Graphics} + mode then use \texttt{Builtin} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{BuiltinText} --- Switch to \texttt{Text} + mode then use \texttt{Builtin} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{SystemGraphics} --- Switch to \texttt{Graphics} + mode then use \texttt{System} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{SystemText} --- Switch to \texttt{Text} + mode then use \texttt{System} renderer with + custom \texttt{ConsoleControl}. + \item \texttt{SystemGeneric} --- Use \texttt{System} renderer with + custom a \texttt{ConsoleControl} protocol which passes its mode set and + get operations through to system \texttt{ConsoleControl} when it exists. + \end{itemize} + + The use of \texttt{BuiltinGraphics} is straightforward. + For most platforms, it is necessary to enable \texttt{ProvideConsoleGop} + and set \texttt{Resolution} to \texttt{Max}. The \texttt{BuiltinText} variant is + an alternative to \texttt{BuiltinGraphics} for some very old and defective + laptop firmware, which can only draw in \texttt{Text} mode. + + The use of \texttt{System} protocols is more complicated. Typically, + the preferred setting is \texttt{SystemGraphics} or \texttt{SystemText}. + Enabling \texttt{ProvideConsoleGop}, setting \texttt{Resolution} to + \texttt{Max}, enabling \texttt{ReplaceTabWithSpace} is useful on almost + all platforms. \texttt{SanitiseClearScreen}, \texttt{IgnoreTextInGraphics}, + and \texttt{ClearScreenOnModeSwitch} are more specific, and their use + depends on the firmware. + + \emph{Note}: Some Macs, such as the \texttt{MacPro5,1}, may have incompatible + console output when using modern GPUs, and thus only \texttt{BuiltinGraphics} + may work for them in such cases. NVIDIA GPUs may require additional + \href{https://github.com/acidanthera/bugtracker/issues/1280}{firmware upgrades}. + \item \texttt{UIScale}\\ \textbf{Type}: \texttt{plist\ integer}, 8 bit\\ @@ -8721,7 +8750,7 @@ \subsection{ProtocolOverrides Properties}\label{uefiprotoprops} \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Replaces the Apple Framebuffer Info protocol with a builtin version. This may be used to override framebuffer information on VMs and legacy Macs - to improve compatibility with legacy EfiBoot such as the one in macOS 10.4. + to improve compatibility with legacy EfiBoot such as the one in Mac OS X 10.4. \emph{Note}: The current implementation of this property results in it only being active when GOP is available (it is always equivalent to \texttt{false} otherwise). @@ -8868,7 +8897,17 @@ \subsection{Quirks Properties}\label{uefiquirkprops} Older boards like ICH6 may not always have HPET setting in the firmware preferences, this option tries to force enable it. - \item +\item + \texttt{DisableSecurityPolicy}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Disable platform security policy. + + \emph{Note}: This setting disables various security features of the firmware, + defeating the purpose of any kind of Secure Boot. Do NOT enable if using + UEFI Secure Boot. + +\item \texttt{EnableVectorAcceleration}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -8876,7 +8915,7 @@ \subsection{Quirks Properties}\label{uefiquirkprops} \emph{Note}: This option may cause issues on certain laptop firmwares, including Lenovo. - \item +\item \texttt{EnableVmx}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -8886,16 +8925,6 @@ \subsection{Quirks Properties}\label{uefiquirkprops} is enabled or disabled and locked by BIOS before OpenCore starts on most firmware. Use BIOS to enable virtualization where possible. - \item - \texttt{DisableSecurityPolicy}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Disable platform security policy. - - \emph{Note}: This setting disables various security features of the firmware, - defeating the purpose of any kind of Secure Boot. Do NOT enable if using - UEFI Secure Boot. - \item \texttt{ExitBootServicesDelay}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -8990,27 +9019,6 @@ \subsection{Quirks Properties}\label{uefiquirkprops} or corrupted in any way. \end{itemize} - \item - \texttt{ResizeUsePciRbIo}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Use PciRootBridgeIo for \texttt{ResizeGpuBars} and \texttt{ResizeAppleGpuBars} - - The quirk makes \texttt{ResizeGpuBars} and \texttt{ResizeAppleGpuBars} use \texttt{PciRootBridgeIo} instead of PciIo. - This is needed on systems with a buggy \texttt{PciIo} implementation where trying to configure - Resizable BAR results in \texttt{Capability I/O Error}. Typically this is required on - older systems which have been modified with \href{https://github.com/xCuri0/ReBarUEFI}{ReBarUEFI}. - - \item - \texttt{ShimRetainProtocol}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Request Linux Shim to keep protocol installed for subsequent image loads. - - This option is only required if chaining OpenCore from Shim. It must be set in order to allow - OpenCore to launch items which are verified by certificates present in Shim, but not in the - system Secure Boot database. - \item \texttt{ResizeGpuBars}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -9067,6 +9075,27 @@ \subsection{Quirks Properties}\label{uefiquirkprops} firmware to the latest version or customise it with a specialised driver like \href{https://github.com/xCuri0/ReBarUEFI}{ReBarUEFI}. +\item + \texttt{ResizeUsePciRbIo}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Use PciRootBridgeIo for \texttt{ResizeGpuBars} and \texttt{ResizeAppleGpuBars} + + The quirk makes \texttt{ResizeGpuBars} and \texttt{ResizeAppleGpuBars} use \texttt{PciRootBridgeIo} instead of PciIo. + This is needed on systems with a buggy \texttt{PciIo} implementation where trying to configure + Resizable BAR results in \texttt{Capability I/O Error}. Typically this is required on + older systems which have been modified with \href{https://github.com/xCuri0/ReBarUEFI}{ReBarUEFI}. + +\item + \texttt{ShimRetainProtocol}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: Request Linux Shim to keep protocol installed for subsequent image loads. + + This option is only required if chaining OpenCore from Shim. It must be set in order to allow + OpenCore to launch items which are verified by certificates present in Shim, but not in the + system Secure Boot database. + \item \texttt{TscSyncTimeout}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -9129,6 +9158,12 @@ \subsection{ReservedMemory Properties}\label{uefirsvdprops} \textbf{Description}: Arbitrary ASCII string used to provide human readable reference for the entry. Whether this value is used is implementation defined. +\item + \texttt{Enabled}\\ + \textbf{Type}: \texttt{plist\ boolean}\\ + \textbf{Failsafe}: \texttt{false}\\ + \textbf{Description}: This region will not be reserved unless set to \texttt{true}. + \item \texttt{Size}\\ \textbf{Type}: \texttt{plist\ integer}\\ @@ -9161,12 +9196,6 @@ \subsection{ReservedMemory Properties}\label{uefirsvdprops} \item \texttt{PalCode} --- \texttt{EfiPalCode} \end{itemize} -\item - \texttt{Enabled}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: This region will not be reserved unless set to \texttt{true}. - \end{enumerate} \section{Troubleshooting}\label{troubleshooting} @@ -9188,7 +9217,7 @@ \subsection{Legacy Apple OS}\label{legacyapple} for a list of the bundled device-specific builds for legacy operating systems. However, as this may not always be accurate, the latest versions are listed below. -\subsubsection{macOS 10.8 and 10.9}\label{legacy108} +\subsubsection{OS X 10.8 and 10.9}\label{legacy108} \begin{itemize} \item Disk images on these systems use the Apple Partitioning Scheme @@ -9202,31 +9231,31 @@ \subsubsection{macOS 10.8 and 10.9}\label{legacy108} loading in order to inject networking or audio drivers. \end{itemize} -\subsubsection{macOS 10.7}\label{legacy107} +\subsubsection{Mac OS X 10.7}\label{legacy107} \begin{itemize} \item All previous issues apply. \item \texttt{SSSE3} support (not to be confused with \texttt{SSE3} support) - is a hard requirement for macOS 10.7 kernel. + is a hard requirement for Mac OS X 10.7 kernel. \item Many kexts, including \texttt{Lilu} when 32-bit kernel is used and a lot of \texttt{Lilu} plugins, are - unsupported on macOS~10.7 and older as they require newer - kernel APIs, which are not part of the macOS~10.7 SDK. - \item Prior to macOS~10.8 KASLR sliding is not supported, which + unsupported on Mac OS X~10.7 and older as they require newer + kernel APIs, which are not part of the Mac OS X~10.7 SDK. + \item Prior to OS X~10.8 KASLR sliding is not supported, which will result in memory allocation failures on firmware that utilise lower memory for their own purposes. Refer to \href{https://github.com/acidanthera/bugtracker/issues/1125}{acidanthera/bugtracker\#1125} for tracking. \end{itemize} -\subsubsection{macOS 10.6}\label{legacy106} +\subsubsection{Mac OS X 10.6}\label{legacy106} \begin{itemize} \item All previous issues apply. - \item \texttt{SSSE3} support is a requirement for macOS 10.6 kernel + \item \texttt{SSSE3} support is a requirement for Mac OS X 10.6 kernel with 64-bit userspace enabled. This limitation can mostly be lifted by enabling the \texttt{LegacyCommpage} quirk. - \item Last released installer images for macOS~10.6 are macOS~10.6.7 + \item Last released installer images for Mac OS X~10.6 are Mac OS X~10.6.7 builds \texttt{10J3250} (for \texttt{MacBookPro8,x}) and \texttt{10J4139} (for \texttt{iMac12,x}), without Xcode). These images are limited to their target model identifiers and have no @@ -9234,9 +9263,9 @@ \subsubsection{macOS 10.6}\label{legacy106} (with \texttt{ACDT} suffix) without model restrictions can be found \href{https://archive.org/details/10.6.7-10j3250-disk-images}{here} (\href{https://mega.nz/folder/z5YUhYTb#gA\_IRY5KMuYpnNCg7kR3ug}{MEGA Mirror}), - assuming macOS~10.6 is legally owned. Refer to the \texttt{DIGEST.txt} file + assuming Mac OS X~10.6 is legally owned. Refer to the \texttt{DIGEST.txt} file for details. Note that these are the earliest tested - versions of macOS~10.6 with OpenCore. + versions of Mac OS X~10.6 with OpenCore. \end{itemize} Model checking may also be erased by editing \texttt{OSInstall.mpkg} @@ -9267,7 +9296,7 @@ \subsubsection{macOS 10.6}\label{legacy106} hdiutil convert ReadWrite.dmg -format UDZO -o ReadOnly.dmg \end{lstlisting} -\subsubsection{macOS 10.5}\label{legacy105} +\subsubsection{Mac OS X 10.5}\label{legacy105} \begin{itemize} \item All previous issues apply. @@ -9279,25 +9308,25 @@ \subsubsection{macOS 10.5}\label{legacy105} \texttt{Mkext} kext injection will still work without noticeable performance drain and will be chosen automatically when \texttt{KernelCache} is set to \texttt{Auto}. - \item Last released installer image for macOS~10.5 is macOS~10.5.7 + \item Last released installer image for Mac OS X~10.5 is Mac OS X~10.5.7 build \texttt{9J3050} (for \texttt{MacBookPro5,3}). Unlike the others, this image is not limited to the target model identifiers and can be used as is. The original \texttt{9J3050} image can be found \href{https://archive.org/details/10.5.7-9-j-3050}{here} (\href{https://mega.nz/folder/inRBTarD#zanf7fUbviwz3WHBU5xpCg}{MEGA Mirror}), - assuming macOS~10.5 is legally owned. Refer to the \texttt{DIGEST.txt} file + assuming Mac OS X~10.5 is legally owned. Refer to the \texttt{DIGEST.txt} file for details. Note that this is the earliest tested - version of macOS~10.5 with OpenCore. + version of Mac OS X~10.5 with OpenCore. \end{itemize} -\subsubsection{macOS 10.4}\label{legacy104} +\subsubsection{Mac OS X 10.4}\label{legacy104} \begin{itemize} \item All previous issues apply. \item This macOS version has a hard requirement to access all the optional packages on the second DVD disk installation media, requiring either two disks or USB media installation. - \item Last released installer images for macOS~10.4 are macOS~10.4.10 + \item Last released installer images for Mac OS X~10.4 are Mac OS X~10.4.10 builds \texttt{8R4061a} (for \texttt{MacBookPro3,1}) and \texttt{8R4088} (for \texttt{iMac7,1})). These images are limited to their target model identifiers as on newer macOS versions. @@ -9305,9 +9334,9 @@ \subsubsection{macOS 10.4}\label{legacy104} model restrictions can be found \href{https://archive.org/details/10.4.10-8-r-4088-acdt}{here} (\href{https://mega.nz/folder/D3ASzLzA\#7sjYXE2X09f6aGjol\_C7dg}{MEGA Mirror}), - assuming macOS~10.4 is legally owned. Refer to the \texttt{DIGEST.txt} file + assuming Mac OS X~10.4 is legally owned. Refer to the \texttt{DIGEST.txt} file for details. Note that these are the earliest tested - versions of macOS~10.4 with OpenCore. + versions of Mac OS X~10.4 with OpenCore. \end{itemize} \subsection{UEFI Secure Boot}\label{uefisecureboot} diff --git a/Docs/Errata/Errata.pdf b/Docs/Errata/Errata.pdf index f7f07570f89..b4de766b665 100644 Binary files a/Docs/Errata/Errata.pdf and b/Docs/Errata/Errata.pdf differ diff --git a/Include/Acidanthera/Library/OcMainLib.h b/Include/Acidanthera/Library/OcMainLib.h index cd4c6a13ebc..32d61feb3ee 100644 --- a/Include/Acidanthera/Library/OcMainLib.h +++ b/Include/Acidanthera/Library/OcMainLib.h @@ -30,7 +30,7 @@ OpenCore version reported to log and NVRAM. OPEN_CORE_VERSION must follow X.Y.Z format, where X.Y.Z are single digits. **/ -#define OPEN_CORE_VERSION "1.0.0" +#define OPEN_CORE_VERSION "1.0.1" /** OpenCore build type reported to log and NVRAM.