diff --git a/Docs/Configuration.md5 b/Docs/Configuration.md5 index cf1580c8..c9c1830a 100644 --- a/Docs/Configuration.md5 +++ b/Docs/Configuration.md5 @@ -1 +1 @@ -8162ab12b8ff7ed9be6aaaa75a837ef7 +8210fca135f6adfade7f26b418e10ab9 diff --git a/Docs/Configuration.pdf b/Docs/Configuration.pdf index c3a0d772..66e18573 100644 Binary files a/Docs/Configuration.pdf and b/Docs/Configuration.pdf differ diff --git a/Docs/Differences/Differences.pdf b/Docs/Differences/Differences.pdf index 59421cba..6652b009 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 31e45e6a..302c82cd 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 Tue Apr 16 21:54:14 2024 -%DIF ADD ../Configuration.tex Wed Apr 17 18:23:47 2024 +%DIF DEL PreviousConfiguration.tex Thu May 2 23:04:27 2024 +%DIF ADD ../Configuration.tex Thu May 2 23:04:51 2024 \usepackage{lmodern} \usepackage{amssymb,amsmath} @@ -212,7 +212,9 @@ with the full list available in \subsection{Generic Terms}\label{generic-terms} \begin{itemize} -\item +\DIFaddbegin + +\DIFaddend \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 @@ -280,7 +282,9 @@ with the full list available in \subsection{Configuration Terms}\label{configuration-terms} \begin{itemize} -\item +\DIFaddbegin + +\DIFaddend \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 @@ -951,7 +955,9 @@ Please note however, that suggested solutions from third parties may be outdated \subsection{Properties}\label{acpiprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ array}\\ \textbf{Failsafe}: Empty\\ @@ -991,7 +997,9 @@ Please note however, that suggested solutions from third parties may be outdated \subsection{Add Properties}\label{acpipropsadd} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Comment}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty\\ @@ -1024,7 +1032,9 @@ Please note however, that suggested solutions from third parties may be outdated \subsection{Delete Properties}\label{acpipropsdelete} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{All}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false} (Only delete the first matched table)\\ @@ -1448,7 +1458,9 @@ To view their current state, use the \texttt{pmset -g} command in Terminal. \subsection{Patch Properties}\label{booterpropspatch} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2005,7 +2017,9 @@ as they were not constructed at the first stage. See \texttt{SSDT-IMEI.dsl} and \subsection{Properties}\label{devpropsprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Sets device properties from a map (\texttt{plist\ dict}) @@ -2084,7 +2098,9 @@ Kernel and kext changes apply with the following effective order: \subsection{Properties}\label{kernelprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ array}\\ \textbf{Failsafe}: Empty\\ @@ -2170,7 +2186,9 @@ Kernel and kext changes apply with the following effective order: \subsection{Add Properties}\label{kernelpropsadd} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2266,7 +2284,9 @@ Kernel and kext changes apply with the following effective order: \subsection{Block Properties}\label{kernelpropsblock} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2333,7 +2353,9 @@ Kernel and kext changes apply with the following effective order: \subsection{Emulate Properties}\label{kernelpropsemu} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Cpuid1Data}\\ \textbf{Type}: \texttt{plist\ data}, 16 bytes\\ \textbf{Failsafe}: All zero\\ @@ -2439,7 +2461,9 @@ Kernel and kext changes apply with the following effective order: \subsection{Force Properties}\label{kernelpropsforce} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -2510,7 +2534,9 @@ Kernel and kext changes apply with the following effective order: \subsection{Patch Properties}\label{kernelpropspatch} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Arch}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Any} (Apply to any supported architecture)\\ @@ -3029,7 +3055,9 @@ Refer to the \hyperref[legacyapple]{Legacy Apple OS} section for details on how to install and troubleshoot such macOS installations. \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{CustomKernel}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -3358,11 +3386,21 @@ the default boot entry choice will remain changed until the next manual reconfig \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. +\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}\\ @@ -3380,7 +3418,14 @@ the default boot entry choice will remain changed until the next manual reconfig but unlike predefined bless paths, they have the highest priority. \item - \texttt{Debug}\\ + \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. +} + +\item + \DIFaddend \texttt{Debug}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Apply debug configuration described in the \hyperref[miscdebugprops]{Debug Properties} section below. @@ -3784,74 +3829,168 @@ the default boot entry choice will remain changed until the next manual reconfig \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. + \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 < - 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 +%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 < - On certain firmware, using modifier keys may be problematic due to driver incompatibilities. +%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{Shift} 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 < - 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} +%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 < -\item - \texttt{ShowPicker}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Show a simple picker to allow boot entry selection. +%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 < -\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}. +%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 < - 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 +%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{5000-10000} microseconds is also required - to access \texttt{action hotkeys} due to the nature of the keyboard driver. + 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 < - 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}) +%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 < -\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. +%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 < -\item - \texttt{PickerMode}\\ - \textbf{Type}: \texttt{plist\ string}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\texttt{\DIFdel{PickerMode}}%DIFAUXCMD +%DIFDELCMD < \\ +%DIFDELCMD < %%% +\textbf{\DIFdel{Type}}%DIFAUXCMD +\DIFdel{: }\DIFdelend \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Builtin}\\ \textbf{Description}: Choose picker used for boot management. @@ -3955,7 +4094,81 @@ the default boot entry choice will remain changed until the next manual reconfig \item \texttt{Default} --- \texttt{Acidanthera\textbackslash GoldenGate}. \end{itemize} -\end{enumerate} +\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. +} + + \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 + operating system by providing different boot modes. +} + + \DIFadd{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 + 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} + \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{\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{. +} + + \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 + 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. +} + + \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{) + 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. +} + +\DIFaddend \end{enumerate} \subsection{Debug Properties}\label{miscdebugprops} @@ -4223,7 +4436,126 @@ nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-log | \end{enumerate} -\subsection{Security Properties}\label{miscsecurityprops} +\DIFaddbegin \subsection{\DIFadd{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) + 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. +} + +\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 + 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. +} + +\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. +} + +\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. +} + + \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 + 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{. +} + + \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{). +} + +\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. +} + +\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. +} + + \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. +} + + \DIFadd{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 + 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{). +} + +\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. +} + + \DIFadd{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. +} + +\end{enumerate} + +\DIFaddend \subsection{Security Properties}\label{miscsecurityprops} \begin{enumerate} @@ -4433,87 +4765,187 @@ nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-board # SMBIOS Type2 ProductNam \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. +\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 < - Valid values: +%DIFDELCMD < %%% +\DIFdel{Valid values: +}%DIFDELCMD < - \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 +%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. - \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} + }%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 < - The \texttt{vault.plist} file should contain SHA-256 hashes for all files used by OpenCore. +%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{create\_vault.sh}} - script. Notwithstanding the underlying file system, the path names and cases between \texttt{config.plist} - and \texttt{vault.plist} must match. + }\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 < - 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}. +%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 < - To embed the public key, either one of the following should be performed: +%DIFDELCMD < %%% +\DIFdel{To embed the public key, either one of the following should be performed: +}%DIFDELCMD < - \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} +%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 < - The RSA public key 520 byte format description can be found in Chromium OS documentation. +%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}{RsaTool}. + }\href{https://github.com/acidanthera/OpenCorePkg/tree/master/Utilities/CreateVault}{\DIFdel{RsaTool}}%DIFAUXCMD +\DIFdel{. +}%DIFDELCMD < +%DIFDELCMD < %%% +\DIFdel{The complete set of commands to: +}%DIFDELCMD < - The complete set of commands to: +%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 < - \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} +%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 < - 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 +%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{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). + 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 < - \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 +%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 < -\item - \texttt{ScanPolicy}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\DIFdelend \texttt{ScanPolicy}\\ \textbf{Type}: \texttt{plist\ integer}, 32 bit\\ \textbf{Failsafe}: \texttt{0x10F0103}\\ \textbf{Description}: Define operating system detection policy. @@ -4697,12 +5129,104 @@ rm vault.pub 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} +\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. +} + + \DIFadd{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 + 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} + + \DIFadd{The }\texttt{\DIFadd{vault.plist}} \DIFadd{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. +} + + \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{. +} + + \DIFadd{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} + + \DIFadd{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{. +} + + + \DIFadd{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 +\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 + 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 + 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} \subsection{Serial Properties}\label{miscserialprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Custom}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Update serial port properties in \texttt{BaseSerialPortLib16550}. @@ -4736,7 +5260,9 @@ rm vault.pub \subsubsection{Serial Custom Properties}\label{miscserialcustprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{BaudRate}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{115200}\\ @@ -4853,110 +5379,275 @@ rm vault.pub \end{enumerate} -\subsection{Entry Properties}\label{miscentryprops} +\DIFdelbegin \subsection{\DIFdel{Entry Properties}}%DIFAUXCMD +\addtocounter{subsection}{-1}%DIFAUXCMD +%DIFDELCMD < \label{miscentryprops} +%DIFDELCMD < -\begin{enumerate} -\item - \texttt{Arguments}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Arbitrary ASCII string used as boot arguments (load options) +%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 < -\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. +%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 < -\item - \texttt{Comment}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Arbitrary ASCII string used to provide a human readable +%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 < -\item - \texttt{Enabled}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Set to \texttt{true} activate this entry. +%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 < -\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. +%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 < - \item - \texttt{FullNvramAccess}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Disable \texttt{OpenRuntime} NVRAM protection during usage of a tool. +%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 < - This disables all of the NVRAM protections provided by - \texttt{OpenRuntime.efi}, during the time a tool is in use. It should +%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{RequestBootVarRouting}. + }\texttt{\DIFdel{RequestBootVarRouting}}%DIFAUXCMD +\DIFdel{. +}%DIFDELCMD < - \emph{Note}: This option is only valid for \texttt{Tools} and cannot be - specified for \texttt{Entries} (is always \texttt{false}). +%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 < -\item - \texttt{Name}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Human readable entry name displayed in the OpenCore picker. +%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 < -\item - \texttt{Path}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: Empty\\ - \textbf{Description}: Entry location depending on entry type. +%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 < - \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} +%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 < -\item - \texttt{RealPath}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Pass full path to the tool when launching. +%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 < - This should typically be disabled as passing the tool directory may be unsafe with +%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{memtest86} (for logging and configuration), or \texttt{Shell} (for + }\texttt{\DIFdel{memtest86}} %DIFAUXCMD +\DIFdel{(for logging and configuration), or }\texttt{\DIFdel{Shell}} %DIFAUXCMD +\DIFdel{(for automatic script execution). +}%DIFDELCMD < - \emph{Note}: This option is only valid for \texttt{Tools} and cannot be - specified for \texttt{Entries} (is always \texttt{true}). +%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 < -\item - \texttt{TextMode}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Run the entry in text mode instead of graphics mode. +%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 < - This setting may be beneficial for some older tools that require text output +%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 - \hyperref[uefioutputprops]{Output Properties} section below for information on text modes. + }%DIFDELCMD < \hyperref[uefioutputprops]{Output Properties} %%% +\DIFdel{section below for information on text modes. +}%DIFDELCMD < -\end{enumerate} -\section{NVRAM}\label{nvram} +\end{enumerate}%DIFAUXCMD +%DIFDELCMD < \end{enumerate} +%DIFDELCMD < + +%DIFDELCMD < %%% +\DIFdelend \section{NVRAM}\label{nvram} \subsection{Introduction}\label{nvramintro} @@ -5013,7 +5704,9 @@ limitations that should be considered for certain use cases. \subsection{Properties}\label{nvramprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Add}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Sets NVRAM variables from a map (\texttt{plist\ dict}) @@ -5172,17 +5865,17 @@ improvements: 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. @@ -5367,8 +6060,7 @@ troubleshooting: 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} @@ -5405,7 +6097,7 @@ troubleshooting: (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. @@ -5486,7 +6178,9 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec \subsection{Properties}\label{platforminfoprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{Automatic}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -5519,7 +6213,49 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec is set to \texttt{true}. \item - \texttt{UpdateDataHub}\\ + \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. +} + + \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{Generic}}\\ + \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ dictionary}}\\ + \textbf{\DIFadd{Description}}\DIFadd{: Update all fields in }\texttt{\DIFadd{Automatic}} \DIFadd{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{\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{\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{\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}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Update Data Hub fields. These fields are read @@ -5631,168 +6367,395 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec 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. +\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 < - \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. +%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 < - \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. +%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 < - \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. +%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 < - \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. +%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 < - \emph{Note}: This section is ignored and may be removed when - \texttt{Automatic} is \texttt{true}. -\end{enumerate} +%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{Generic Properties}\label{platforminfogeneric} +\subsection{\DIFdelbegin \DIFdel{Generic }\DIFdelend \DIFaddbegin \DIFadd{DataHub }\DIFaddend Properties}\DIFdelbegin %DIFDELCMD < \label{platforminfogeneric} +%DIFDELCMD < %%% +\DIFdelend \DIFaddbegin \label{platforminfodatahub} +\DIFaddend \begin{enumerate} -\item - \texttt{SpoofVendor}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Sets SMBIOS vendor fields to \texttt{Acidanthera}. +\DIFaddbegin - 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 +\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 -\item - \texttt{AdviseFeatures}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Updates \texttt{FirmwareFeatures} with supported bits. + \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. + 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 - Added bits to \texttt{FirmwareFeatures}: + \DIFdelbegin \DIFdel{Added bits to }\texttt{\DIFdel{FirmwareFeatures}}%DIFAUXCMD +\DIFdel{: +}%DIFDELCMD < - \begin{itemize} - \item \texttt{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE} (\texttt{0x1}) +%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. - \item \texttt{FW\_FEATURE\_SUPPORTS\_UEFI\_WINDOWS\_BOOT} (\texttt{0x20000000}) + 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. - \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}) + }%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} + } +\end{itemize}%DIFAUXCMD +%DIFDELCMD < \end{itemize} +%DIFDELCMD < - \emph{Note}: On most newer firmwares these bits are already set, the option - may be necessary when "upgrading" the firmware with new features. +%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 < -\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 +%DIFDELCMD < %%% +\DIFdelend \DIFaddbegin \DIFadd{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 < -\item - \texttt{SystemMemoryStatus}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\DIFdelend \texttt{\DIFdelbegin \DIFdel{SystemMemoryStatus}\DIFdelend \DIFaddbegin \DIFadd{BoardProduct}\DIFaddend }\\ \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''. + \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 < - 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. +%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{ProcessorType}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0} (Automatic)\\ - \textbf{Description}: Refer to SMBIOS \texttt{ProcessorType}. -\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}. + \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 < - 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}. +%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 < - Specify special string value \texttt{OEM} to extract current value from NVRAM - (\texttt{system-id} variable) or SMBIOS and use it throughout the sections. +%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 + 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 - \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}. + 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 + 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 + maximum bus ratio on modern Intel CPUs. +}\DIFaddend - Specify special string value \texttt{OEM} to extract current value from NVRAM - (\texttt{MLB} variable) or SMBIOS and use it throughout the sections. + \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. -\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}. +}%DIFDELCMD < - 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. +%DIFDELCMD < \end{enumerate} +%DIFDELCMD < -\end{enumerate} +%DIFDELCMD < %%% +\subsection{\DIFdel{DataHub Properties}}%DIFAUXCMD +\addtocounter{subsection}{-1}%DIFAUXCMD +%DIFDELCMD < \label{platforminfodatahub} +%DIFDELCMD < -\subsection{DataHub Properties}\label{platforminfodatahub} - -\begin{enumerate} -\item +%DIFDELCMD < \begin{enumerate} +%DIFDELCMD < %%% +\DIFdelend \DIFaddbegin \texttt{\DIFadd{InitialTSC}} \DIFadd{in + }\texttt{\DIFadd{gEfiProcessorSubClassGuid}}\DIFadd{. Sets initial TSC value, normally 0. +}\DIFaddend \item \texttt{PlatformName}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (Not installed)\\ @@ -5800,42 +6763,75 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec \texttt{gEfiMiscSubClassGuid}. The value found on Macs is \texttt{platform} in ASCII. \item - \texttt{SystemProductName}\\ - \textbf{Type}: \texttt{plist\ string}\\ + \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 \\ \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. + \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{SystemSerialNumber}\\ - \textbf{Type}: \texttt{plist\ string}\\ + \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{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{\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{SystemUUID}\\ - \textbf{Type}: \texttt{plist\ string}, GUID\\ + \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{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{\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 - \texttt{BoardProduct}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \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{StartupPowerEvents}\\ + \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{Type}: \texttt{plist\ integer}, 64-bit\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Sets \texttt{StartupPowerEvents} in @@ -5889,79 +6885,233 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec 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. -\item - \texttt{FSBFrequency}\\ - \textbf{Type}: \texttt{plist\ integer}, 64-bit\\ - \textbf{Failsafe}: \texttt{0} (Automatic)\\ - \textbf{Description}: Sets \texttt{FSBFrequency} in - \texttt{gEfiProcessorSubClassGuid}. + \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 < - 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 +%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 - \emph{Note}: This value is not used on Skylake and newer but is still provided +\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD +\DIFdel{: 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\\ - \textbf{Failsafe}: \texttt{0} (Automatic)\\ - \textbf{Description}: Sets \texttt{ARTFrequency} in - \texttt{gEfiProcessorSubClassGuid}. +}\DIFdelend \DIFaddbegin \subsection{\DIFadd{Generic Properties}}\label{platforminfogeneric} - 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 +\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. + 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 + + \DIFaddbegin \begin{itemize} + \item \texttt{\DIFadd{FW\_FEATURE\_SUPPORTS\_CSM\_LEGACY\_MODE}} \DIFadd{(}\texttt{\DIFadd{0x1}}\DIFadd{) + - 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{) + - 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{) + - 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{) + - Without this bit, it is not possible to install macOS versions with large + BaseSystem images, such as macOS 12. + }\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 + 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{. +} + + \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. + 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{\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 + versions. +} + \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. + \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{. +} + \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{\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{. +} + + \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. + This feature can only be used on Mac-compatible firmware. +} + \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. -\end{enumerate} + \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{. +} + + \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 + 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{. + This controls the visibility of the Memory tab in ``About This Mac''. +} + + \DIFadd{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. +} + +\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{. +} + + \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. + 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{. +} + + \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. + 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} \subsection{Memory Properties}\label{platforminfomemory} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{DataWidth}\\ \textbf{Type}: \texttt{plist\ integer}, 16-bit\\ \textbf{Failsafe}: \texttt{0xFFFF} (unknown)\\ @@ -6119,7 +7269,9 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec \subsubsection{Memory Device Properties}\label{platforminfomemorydevice} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{AssetTag}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Unknown}\\ @@ -6199,7 +7351,9 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec \subsection{PlatformNVRAM Properties}\label{platforminfonvram} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{BID}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (Not installed)\\ @@ -6207,44 +7361,74 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW\_BID}. \item - \texttt{ROM}\\ - \textbf{Type}: \texttt{plist\ data}, 6 bytes\\ + \texttt{\DIFdelbegin \DIFdel{ROM}\DIFdelend \DIFaddbegin \DIFadd{FirmwareFeatures}\DIFaddend }\\ + \textbf{Type}: \texttt{plist\ data}, \DIFdelbegin \DIFdel{6 }\DIFdelend \DIFaddbegin \DIFadd{8 }\DIFaddend 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\\ - \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: This variable comes in pair with \texttt{FirmwareFeaturesMask}. - Specifies the values of NVRAM variables: - \begin{itemize} + \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} \tightlist - \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeatures} - \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeatures} - \end{itemize} + \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{FirmwareFeaturesMask}\\ - \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ + \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 \\ \textbf{Failsafe}: Empty (Not installed)\\ - \textbf{Description}: This variable comes in pair with \texttt{FirmwareFeatures}. - Specifies the values of NVRAM variables: - \begin{itemize} + \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} \tightlist - \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeaturesMask} - \item \texttt{4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask} - \end{itemize} + \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{\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 \\ + \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{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 \item \texttt{SystemSerialNumber}\\ @@ -6268,8 +7452,17 @@ from \href{https://github.com/acidanthera/dmidecode/releases}{Acidanthera/dmidec \subsection{SMBIOS Properties}\label{platforminfosmbios} \begin{enumerate} -\item - \texttt{BIOSVendor}\\ +\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}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: BIOS Information (Type 0) --- Vendor\\ @@ -6306,80 +7499,176 @@ Apple ROM Version UUID: 151B0907-10F9-3271-87CD-4BF5DBECACF5 \end{verbatim} \item - \texttt{BIOSReleaseDate}\\ + \texttt{\DIFdelbegin \DIFdel{BIOSReleaseDate}\DIFdelend \DIFaddbegin \DIFadd{BoardAssetTag}\DIFaddend }\\ \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 + \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. -\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 +}\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{SystemProductName} is not compatible with the target operating - system, \texttt{-no\_compat\_check} boot argument may be used as an + }\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 < - \emph{Note}: If \texttt{SystemProductName} is unknown, and related +%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{MacPro6,1} data. The list of known products can be found in - \texttt{AppleModels}. -\item - \texttt{SystemVersion}\\ + 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{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 + \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}{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 + }\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. -\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{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{BoardManufacturer}\\ +}%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{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) - @@ -6396,15 +7685,29 @@ Apple ROM Version \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}\\ + \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}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Serial @@ -6413,15 +7716,28 @@ Apple ROM Version 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}\\ + \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}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0} (OEM specified)\\ \textbf{SMBIOS}: Baseboard (or Module) Information (Type 2) --- Board @@ -6430,63 +7746,103 @@ Apple ROM Version processor, memory, and I/O) or \texttt{0xB} (Processor/Memory Module). Refer to Table 15 -- Baseboard: Board Type for details. \item - \texttt{BoardLocationInChassis}\\ + \texttt{\DIFdelbegin \DIFdel{BoardLocationInChassis}\DIFdelend \DIFaddbegin \DIFadd{BoardVersion}\DIFaddend }\\ \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) \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 }. \item - \texttt{ChassisManufacturer}\\ + \texttt{\DIFdelbegin \DIFdel{ChassisManufacturer}\DIFdelend \DIFaddbegin \DIFadd{ChassisAssetTag}\DIFaddend }\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty (OEM specified)\\ - \textbf{SMBIOS}: System Enclosure or Chassis (Type 3) --- Manufacturer\\ - \textbf{Description}: Board manufacturer. All rules of - \texttt{SystemManufacturer} do apply. -\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{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{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 + \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 \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. + \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{FirmwareFeatures}\\ \textbf{Type}: \texttt{plist\ data}, 8 bytes\\ \textbf{Failsafe}: \texttt{0} (OEM specified on Apple hardware, 0 otherwise)\\ @@ -6509,7 +7865,15 @@ Apple ROM Version for details. Lower 32 bits match \texttt{FirmwareFeaturesMask}. Upper 64 bits match \texttt{ExtendedFirmwareFeaturesMask}. \item - \texttt{ProcessorType}\\ + \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}\\ \textbf{Type}: \texttt{plist\ integer}, 16-bit\\ \textbf{Failsafe}: \texttt{0} (Automatic)\\ \textbf{SMBIOS}: \texttt{APPLE\_SMBIOS\_TABLE\_TYPE131} - @@ -6524,7 +7888,81 @@ Apple ROM Version 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}. -\end{enumerate} +\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. + 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 + 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 + 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 + override. +} + + \emph{\DIFadd{Note}}\DIFadd{: If }\texttt{\DIFadd{SystemProductName}} \DIFadd{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 + 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 + 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 + 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} \section{UEFI}\label{uefi} @@ -7475,7 +8913,9 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \subsection{Properties}\label{uefiprops} \begin{enumerate} -\item +\DIFaddbegin + +\DIFaddend \item \texttt{APFS}\\ \textbf{Type}: \texttt{plist\ dict}\\ \textbf{Description}: Provide APFS support as configured in the @@ -7692,7 +9132,7 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \begin{enumerate} - \item +\item \texttt{AppleEvent}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: \texttt{Auto}\\ @@ -7740,7 +9180,36 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \end{itemize} \item - \texttt{KeyInitialDelay}\\ + \DIFaddbegin \texttt{\DIFadd{GraphicsInputMirroring}}\\ + \textbf{\DIFadd{Type}}\DIFadd{: }\texttt{\DIFadd{plist\ boolean}}\\ + \textbf{\DIFadd{Failsafe}}\DIFadd{: }\texttt{\DIFadd{false}}\\ + \textbf{\DIFadd{Description}}\DIFadd{: + 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. +} + + \DIFadd{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{. +} + + \emph{\DIFadd{Note}}\DIFadd{: 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 + \DIFaddend \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 @@ -7812,63 +9281,111 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work 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 +\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 < - With the default setting of \texttt{false}, OpenCore's builtin implementation of AppleEvent replicates this behaviour. +%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 + 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 . - On non-Apple hardware this can stop keyboard input working in graphics-based applications such as Windows BitLocker + \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 < - The recommended setting on all hardware is \texttt{true}. +%DIFDELCMD < %%% +\DIFdel{The recommended setting on all hardware is }\texttt{\DIFdel{true}}%DIFAUXCMD +\DIFdel{. + }%DIFDELCMD < - \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. +%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 . - \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} +\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 < - \item - \texttt{PointerPollMin}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\texttt{\DIFdel{PointerPollMin}}%DIFAUXCMD +\DIFdelend \\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure minimal pointer polling period in ms. + \textbf{Description}: Configure \DIFdelbegin \DIFdel{minimal pointer polling period in + ms. +}\DIFdelend \DIFaddbegin \DIFadd{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 - 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. + \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 . - \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. +\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD +\DIFdel{: The OEM Apple implementation uses a polling rate of 2 ms. +}%DIFDELCMD < - \item - \texttt{PointerPollMax}\\ +%DIFDELCMD < %%% +\DIFdelend \item + \texttt{\DIFdelbegin \DIFdel{PointerPollMax}\DIFdelend \DIFaddbegin \DIFadd{PointerDwellRadius}\DIFaddend }\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure maximum pointer polling period in ms. + \textbf{Description}: Configure \DIFdelbegin \DIFdel{maximum pointer polling period in ms. +}%DIFDELCMD < - This is the maximum period the OpenCore builtin AppleEvent driver polls - pointer devices (e.g. mice, trackpads) for motion events. The period +%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{0} leaves this default unchanged. + }\texttt{\DIFdel{0}} %DIFAUXCMD +\DIFdel{leaves this default unchanged. +}%DIFDELCMD < - Certain trackpad drivers often found in Dell laptops can be very slow +%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. + Increasing the polling periods can reduce the impact}\DIFdelend \DIFaddbegin \DIFadd{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 - \emph{Note}: The OEM Apple implementation uses a polling rate of 2 ms. + \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 + for the new dwell-clicking tolerance radius. +}\DIFaddend - \item +\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD +\DIFdel{: The OEM Apple implementation uses a polling rate of 2 ms. +}%DIFDELCMD < + +%DIFDELCMD < %%% +\DIFdelend \item \texttt{PointerPollMask}\\ \textbf{Type}: \texttt{plist\ integer, 32 bit}\\ \textbf{Failsafe}: \texttt{-1}\\ @@ -7895,8 +9412,47 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \emph{Note}: Has no effect when using the OEM Apple implementation (see \texttt{AppleEvent} setting). - \item - \texttt{PointerSpeedDiv}\\ +\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. +} + + \DIFadd{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. +} + + \DIFadd{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. +} + +\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. +} + + \DIFadd{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 + default unchanged. +} + + \emph{\DIFadd{Note}}\DIFadd{: The OEM Apple implementation uses a polling rate of 2 ms. +} + +\item + \DIFaddend \texttt{PointerSpeedDiv}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{1}\\ \textbf{Description}: Configure pointer speed divisor in the OpenCore re-implementation @@ -7924,41 +9480,92 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work 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 +\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{AppleEvent} setting). + Has no effect when using the OEM Apple implementation (see }\texttt{\DIFdel{AppleEvent}} %DIFAUXCMD +\DIFdel{setting). +}%DIFDELCMD < - When the timeout expires, a single left click is issued at the current position. - \texttt{0} indicates the timeout is disabled. +%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 < -\item - \texttt{PointerDwellDoubleClickTimeout}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure pointer dwell-clicking single left double click timeout in +%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{AppleEvent} setting). + Has no effect when using the OEM Apple implementation (see }\texttt{\DIFdel{AppleEvent}} %DIFAUXCMD +\DIFdel{setting). +}%DIFDELCMD < - When the timeout expires, a single left double click is issued at the current position. - \texttt{0} indicates the timeout is disabled. +%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 < -\item - \texttt{PointerDwellRadius}\\ - \textbf{Type}: \texttt{plist\ integer}\\ - \textbf{Failsafe}: \texttt{0}\\ - \textbf{Description}: Configure pointer dwell-clicking tolerance radius in pixels in the +%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{AppleEvent} setting). + Has no effect when using the OEM Apple implementation (see }\texttt{\DIFdel{AppleEvent}} %DIFAUXCMD +\DIFdel{setting). +}%DIFDELCMD < - 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 +%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 < -\end{enumerate} +%DIFDELCMD < %%% +\DIFdelend \end{enumerate} \subsection{Audio Properties}\label{uefiaudioprops} @@ -8042,7 +9649,7 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work 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}\\ @@ -8052,7 +9659,7 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work (\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}\\ @@ -8065,7 +9672,7 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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}\\ @@ -8090,7 +9697,7 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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}\\ @@ -8104,7 +9711,7 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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}\\ @@ -8174,7 +9781,15 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \begin{enumerate} \item - \texttt{Comment}\\ + \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 + which may be specified as a string here. +} + +\item + \DIFaddend \texttt{Comment}\\ \textbf{Type}: \texttt{plist\ string}\\ \textbf{Failsafe}: Empty\\ \textbf{Description}: Arbitrary ASCII string used to provide human readable @@ -8187,14 +9802,26 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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. + \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 < -\item - \texttt{LoadEarly}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\DIFdelend \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. @@ -8203,11 +9830,12 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work given driver and purpose. \item - \texttt{Arguments}\\ + \texttt{\DIFdelbegin \DIFdel{Arguments}\DIFdelend \DIFaddbegin \DIFadd{Path}\DIFaddend }\\ \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}: \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 . \end{enumerate} @@ -8369,89 +9997,200 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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. + \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 < - 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. +%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 < - 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. +%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 < -\item - \texttt{TextRenderer}\\ - \textbf{Type}: \texttt{plist\ string}\\ - \textbf{Failsafe}: \texttt{BuiltinGraphics}\\ - \textbf{Description}: Chooses renderer for text going through standard +%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 < - 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 +%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{Builtin} renderer, as it supports HiDPI mode and uses + }\texttt{\DIFdel{Builtin}} %DIFAUXCMD +\DIFdel{renderer, as it supports HiDPI modeand uses full screen resolution. +}%DIFDELCMD < - 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, +%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 < - 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. +%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 < - \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} +%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 + 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 - 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. + \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 < - 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 +%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 < - \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}. +%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 \item \texttt{ConsoleFont}\\ @@ -8501,29 +10240,53 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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. + \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 . - \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 + \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. - \end{itemize} + }%DIFDELCMD < \end{itemize} +%DIFDELCMD < %%% +\DIFdelend \DIFaddbegin \DIFadd{, 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 - 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. + \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 < - \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}. +%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 + 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 . \item \texttt{ForceResolution}\\ @@ -8540,33 +10303,69 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \texttt{OpenDuetPkg} implementation currently only supports Intel iGPUs and certain ATI GPUs. \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 + \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 < - \emph{Note}: This option only applies to \texttt{System} renderer. +%DIFDELCMD < %%% +\emph{\DIFdel{Note}}%DIFAUXCMD +\DIFdel{: This option only applies to }\texttt{\DIFdel{System}} %DIFAUXCMD +\DIFdel{renderer. +}%DIFDELCMD < -\item - \texttt{DirectGopRendering}\\ - \textbf{Type}: \texttt{plist\ boolean}\\ - \textbf{Failsafe}: \texttt{false}\\ - \textbf{Description}: Use builtin graphics output protocol renderer for console. +%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 < - On certain firmware, such as on the \texttt{MacPro5,1}, this may provide better +%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 < - This renderer fully supports \texttt{AppleEg2Info} protocol and will provide +%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{EfiBoot}, builtin \texttt{AppleFramebufferInfo} should + 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 < -\item - \texttt{GopBurstMode}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\DIFdelend \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 @@ -8620,17 +10419,37 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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 + \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. +} + + \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. +} + + \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. + 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 . - \emph{Note}: This option only applies to \texttt{System} renderer. +\DIFdelbegin \emph{\DIFdel{Note}}%DIFAUXCMD +\DIFdel{: This option only applies to }\texttt{\DIFdel{System}} %DIFAUXCMD +\DIFdel{renderer. +}%DIFDELCMD < -\item +%DIFDELCMD < %%% +\DIFdelend \item \texttt{ProvideConsoleGop}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ @@ -8673,7 +10492,48 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work was mandatory and not configurable. Please do not use this unless required. \item - \texttt{SanitiseClearScreen}\\ + \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 + 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. +} + +\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. +} + + \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 + from GOP if available. + }\item \DIFadd{Set to }\texttt{\DIFadd{Max}} \DIFadd{to attempt using the largest + available screen resolution. + }\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. +} + + \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{. +} + +\item + \DIFaddend \texttt{SanitiseClearScreen}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Some types of firmware reset screen resolutions to a failsafe @@ -8686,7 +10546,79 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work an empty string for this option to work. \item - \texttt{UIScale}\\ + \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 + 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 + for text rendering, however with additional options provided to + sanitize the output. The }\texttt{\DIFadd{Builtin}} \DIFadd{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 + 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, + 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. +} + + \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. +} + + \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 + 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{. +} + +\item + \DIFaddend \texttt{UIScale}\\ \textbf{Type}: \texttt{plist\ integer}, 8 bit\\ \textbf{Failsafe}: \texttt{-1}\\ \textbf{Description}: User interface scaling factor. @@ -8930,15 +10862,27 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work Older boards like ICH6 may not always have HPET setting in the firmware preferences, this option tries to force enable it. - \item - \texttt{EnableVectorAcceleration}\\ +\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. +} + + \emph{\DIFadd{Note}}\DIFadd{: 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}\\ \textbf{Type}: \texttt{plist\ boolean}\\ \textbf{Failsafe}: \texttt{false}\\ \textbf{Description}: Enable AVX vector acceleration of SHA-512 and SHA-384 hashing algorithms. \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}\\ @@ -8948,18 +10892,33 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work 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. +\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 < - \emph{Note}: This setting disables various security features of the firmware, +%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 < -\item - \texttt{ExitBootServicesDelay}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\DIFdelend \texttt{ExitBootServicesDelay}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Adds delay in microseconds after \texttt{EXIT\_BOOT\_SERVICES} @@ -9052,30 +11011,66 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work 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} +\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 < - 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}. +%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 < - \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. +%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 < - This option is only required if chaining OpenCore from Shim. It must be set in order to allow +%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 < -\item - \texttt{ResizeGpuBars}\\ - \textbf{Type}: \texttt{plist\ integer}\\ +%DIFDELCMD < \item +\item%DIFAUXCMD +%DIFDELCMD < %%% +\texttt{\DIFdel{ResizeGpuBars}}%DIFAUXCMD +%DIFDELCMD < \\ +%DIFDELCMD < %%% +\textbf{\DIFdel{Type}}%DIFAUXCMD +\DIFdel{: }\DIFdelend \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{-1}\\ \textbf{Description}: Configure GPU PCI BAR sizes. @@ -9130,7 +11125,31 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work like \href{https://github.com/xCuri0/ReBarUEFI}{ReBarUEFI}. \item - \texttt{TscSyncTimeout}\\ + \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}} + + \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{. +} + +\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. +} + + \DIFadd{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}\\ \textbf{Type}: \texttt{plist\ integer}\\ \textbf{Failsafe}: \texttt{0}\\ \textbf{Description}: Attempts to perform TSC synchronisation with a specified timeout. @@ -9192,7 +11211,14 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work reference for the entry. Whether this value is used is implementation defined. \item - \texttt{Size}\\ + \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{. +} + +\item + \DIFaddend \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). @@ -9223,13 +11249,27 @@ OpenCore is installed, in order for the \texttt{Launchd.command} script to work \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}. +\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 < -\end{enumerate} +%DIFDELCMD < %%% +\DIFdelend \end{enumerate} \section{Troubleshooting}\label{troubleshooting} diff --git a/Docs/Errata/Errata.pdf b/Docs/Errata/Errata.pdf index 996df76d..f7f07570 100644 Binary files a/Docs/Errata/Errata.pdf and b/Docs/Errata/Errata.pdf differ