Skip to content

Commit f49abe5

Browse files
committed
Add refinements + mux intent state
1 parent 04ca130 commit f49abe5

File tree

1 file changed

+46
-17
lines changed

1 file changed

+46
-17
lines changed

purge-nvda.sh

+46-17
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
# purge-nvda.sh
44
# Author(s): Mayank Kumar (mayankk2308, github.com / mac_editor, egpu.io)
55
# License: Specified in LICENSE.md.
6-
# Version: 3.0.3
7-
8-
# Re-written for scalability and better user interaction.
6+
# Version: 3.0.4
97

108
# ----- COMMAND LINE ARGS
119

@@ -28,7 +26,7 @@ BIN_CALL=0
2826
SCRIPT_FILE=""
2927

3028
# Script version
31-
SCRIPT_MAJOR_VER="3" && SCRIPT_MINOR_VER="0" && SCRIPT_PATCH_VER="3"
29+
SCRIPT_MAJOR_VER="3" && SCRIPT_MINOR_VER="0" && SCRIPT_PATCH_VER="4"
3230
SCRIPT_VER="${SCRIPT_MAJOR_VER}.${SCRIPT_MINOR_VER}.${SCRIPT_PATCH_VER}"
3331

3432
# User input
@@ -58,11 +56,13 @@ NVDA_STARTUP_WEB_PLIST="${TP_EXT}NVDAStartupWeb.kext${PLIST_FILE}"
5856
NV_GUID="FA4CE28D-B62F-4C99-9CC3-6815686E30F9"
5957
IG_POWER_PREF="%01%00%00%00"
6058
DG_POWER_PREF="%00%00%00%00"
59+
PN_STATE="purge-nvda-last-gfx-config"
6160

6261
# Patch status
6362
AMD_PATCH_STATUS=0
6463
NVDA_OPT_PATCH_STATUS=0
6564
NVDA_SUP_PATCH_STATUS=0
65+
PN_LAST_GFX_CONFIG=1
6666
PLIST_PATCHED=0
6767

6868
# PlistBuddy Configuration
@@ -151,18 +151,23 @@ check_macos_version() {
151151
# Check patch status
152152
check_patch() {
153153
BOOT_ARGS_DATA="$(nvram boot-args 2>/dev/null)"
154+
PN_LAST_CONFIG_DATA="$(nvram "${PN_STATE}" 2>/dev/null)"
154155
[[ "${BOOT_ARGS_DATA}" =~ "nv_disable=1" ]] && AMD_PATCH_STATUS=1
155156
[[ "${BOOT_ARGS_DATA}" =~ "agc=-1" ]] && NVDA_SUP_PATCH_STATUS=1
156157
[[ -f "${NVDA_STARTUP_WEB_PLIST}" && "$($PlistBuddy -c "Print ${NV_DRV_KEY}" "${NVDA_STARTUP_WEB_PLIST}" 2>/dev/null)" == "${MODERN_NV_GPU_DEVICE_IDS}" ]] && NVDA_OPT_PATCH_STATUS=1
158+
[[ "${PN_LAST_CONFIG_DATA}" =~ "${IG_POWER_PREF}" ]] && PN_LAST_GFX_CONFIG=0
157159
}
158160

159161
# Print patch status
160162
check_system_status() {
161163
FIX_STATES=("Disabled" "Enabled")
164+
GFX_STATES=("Integrated" "Discrete")
162165
echo -e "\n>> ${BOLD}System Status${NORMAL}\n"
163-
echo -e "${BOLD}AMD Fix${NORMAL}: ${FIX_STATES[$AMD_PATCH_STATUS]}"
164-
echo -e "${BOLD}NVDA eGPU Optimization${NORMAL}: ${FIX_STATES[$NVDA_OPT_PATCH_STATUS]}"
165-
echo -e "${BOLD}NVDA Suppression${NORMAL}: ${FIX_STATES[$NVDA_SUP_PATCH_STATUS]}\n"
166+
echo -e "${BOLD}AMD Fix${NORMAL} ${FIX_STATES[${AMD_PATCH_STATUS}]}"
167+
echo -e "${BOLD}NVDA eGPU Optimization${NORMAL} ${FIX_STATES[${NVDA_OPT_PATCH_STATUS}]}"
168+
echo -e "${BOLD}NVDA Suppression${NORMAL} ${FIX_STATES[${NVDA_SUP_PATCH_STATUS}]}"
169+
echo -e "${BOLD}Mux Last Intent${NORMAL} ${GFX_STATES[${PN_LAST_GFX_CONFIG}]}\n"
170+
echo -e "The ${BOLD}Mux Last Intent${NORMAL} state refers to what the script intended last\ntime, and not necessarily whether the script succeeded or not,\nas the actual mux value is \"consumed\" and cannot be tracked.\nBy default, the intent is ${BOLD}Discrete${NORMAL}.\n"
166171
}
167172

168173
# Cumulative system check
@@ -185,6 +190,7 @@ sanitize_system() {
185190
echo -e "System sanitized."
186191
}
187192

193+
# Patch NVIDIA drivers
188194
patch_nv_plists() {
189195
echo -e "${BOLD}Patching NVIDIA driver configuration...${NORMAL}"
190196
[[ ! -f "${NVDA_STARTUP_WEB_PLIST}" ]] && echo -e "${BOLD}NVIDIA Web Drivers${NORMAL} must already be installed.\n" && return
@@ -205,13 +211,22 @@ update_nvram() {
205211
[[ "${BOOT_ARG}" != "-no-set" ]] && nvram boot-args="${BOOT_ARG}"
206212
nvram "${NV_GUID}:gpu-power-prefs"="${POWER_PREFS}"
207213
nvram "${NV_GUID}:gpu-active"="${POWER_PREFS}"
214+
nvram "${PN_STATE}"="${POWER_PREFS}"
208215
nvram -s
209-
sleep 1
216+
sleep 5
210217
echo -e "NVRAM configured."
211218
}
212219

220+
# Patch execution routine
221+
execute_patch() {
222+
update_nvram "${1}" "${2}"
223+
echo -e "\n${BOLD}System ready.${NORMAL} Reboot to apply changes.\n"
224+
prompt_reboot
225+
}
226+
213227
# ----- RECOVERY SYSTEM
214228

229+
# Revert PLIST configuration
215230
revert_nv_plists() {
216231
echo -e "${BOLD}Reverting NVIDIA driver configuration...${NORMAL}"
217232
$PlistBuddy -c "Set ${NV_DRV_KEY} ${ORIGINAL_PCI_MATCH_VALUE}" "${NVDA_STARTUP_OFFICIAL_PLIST}" 1>/dev/null 2>&1
@@ -221,6 +236,7 @@ revert_nv_plists() {
221236
sanitize_system
222237
}
223238

239+
# Uninstall NVRAM changes
224240
uninstall() {
225241
echo -e "\n${BOLD}>> Uninstall${NORMAL}\n"
226242
echo -e "${BOLD}Uninstalling...${NORMAL}"
@@ -257,6 +273,22 @@ first_time_setup() {
257273

258274
# ----- USER INTERFACE
259275

276+
# Prompt reboot
277+
prompt_reboot() {
278+
read -n1 -p "${BOLD}Reboot now${NORMAL}? [Y/N]: " INPUT
279+
if [[ "${INPUT}" == "Y" ]]
280+
then
281+
echo -e "\n\n${BOLD}Rebooting...${NORMAL}"
282+
reboot 1>/dev/null 2>&1
283+
elif [[ "${INPUT}" == "N" ]]
284+
then
285+
echo -e "\n\nReboot aborted.\n"
286+
else
287+
echo -e "\n\nInvalid selection.\n"
288+
prompt_reboot
289+
fi
290+
}
291+
260292
# Request donation
261293
donate() {
262294
open "https://www.paypal.com/cgi-bin/webscr?cmd=_donations&[email protected]&lc=US&item_name=Development%20of%20PurgeNVDA&no_note=0&currency_code=USD&bn=PP-DonationsBF:btn_donate_SM.gif:NonHostedGuest"
@@ -300,26 +332,23 @@ process_args() {
300332
case "${1}" in
301333
-fa|--fix-amd|1)
302334
echo -e "\n>> ${BOLD}AMD eGPUs${NORMAL}\n"
303-
update_nvram "nv_disable=1" "${IG_POWER_PREF}"
304-
echo -e "\n${BOLD}System ready.${NORMAL} Reboot to apply changes.\n";;
335+
execute_patch "nv_disable=1" "${IG_POWER_PREF}";;
305336
-on|--optimize-nv|2)
306337
echo -e "\n>> ${BOLD}NVIDIA eGPUs${NORMAL}\n"
307338
patch_nv_plists
308339
[[ $PLIST_PATCHED == 0 ]] && ask_menu && return
309-
update_nvram "" "${IG_POWER_PREF}"
310-
echo -e "\n${BOLD}System ready.${NORMAL} Reboot to apply changes.\n";;
340+
execute_patch "" "${IG_POWER_PREF}";;
311341
-u|--uninstall|3)
312-
uninstall;;
342+
uninstall
343+
prompt_reboot;;
313344
-s|--status|4)
314345
check_system_status;;
315346
-sn|--suppress-nv|5)
316347
echo -e "\n>> ${BOLD}Suppress NVIDIA GPUs${NORMAL}\n"
317-
update_nvram "agc=-1" "${IG_POWER_PREF}"
318-
echo -e "\n${BOLD}System ready.${NORMAL} Reboot to apply changes.\n";;
348+
execute_patch "agc=-1" "${IG_POWER_PREF}";;
319349
-mi|--mux-igpu|6)
320350
echo -e "\n>> ${BOLD}Set Mux to iGPU${NORMAL}\n"
321-
update_nvram "-no-set" "${IG_POWER_PREF}"
322-
echo -e "\n${BOLD}System ready.${NORMAL} Reboot to apply changes.\n";;
351+
execute_patch "-no-set" "${IG_POWER_PREF}";;
323352
-d|--donate|d|D)
324353
donate;;
325354
0)

0 commit comments

Comments
 (0)