]> ###2022.07.21 - Version detection from package via GitHub API - Save md5 in packages directory ###2022.07.19 - Necessary changes for unRAID 6.11+ ###2022.03.21 - Added change for reset_method for Kernel 5.15+ ###2021.06.23 - Changed package download repo ###2021.05.25 - Initial release **AMD Vendor Reset** This package contains the Vendor Reset module for Polaris, Vega10/20 and Navi10/12/14 cards by Adam Madsen and Geoffrey McRae. You can get more details here: https://github.com/gnif/vendor-reset download() { # Download vendor-reset if wget -q -nc --show-progress --progress=bar:force:noscroll -O "&packages;/${KERNEL_V%%-*}/${LAT_PACKAGE}" "${DL_URL}/${LAT_PACKAGE}" ; then wget -q -nc --show-progress --progress=bar:force:noscroll -O "&packages;/${KERNEL_V%%-*}/${LAT_PACKAGE}.md5" "${DL_URL}/${LAT_PACKAGE}.md5" if [ "$(md5sum &packages;/${KERNEL_V%%-*}/${LAT_PACKAGE} | awk '{print $1}')" != "$(cat &packages;/${KERNEL_V%%-*}/${LAT_PACKAGE}.md5 | awk '{print $1}')" ]; then echo echo "-----ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR------" echo "--------------------------------CHECKSUM ERROR!---------------------------------" rm -rf &plugin; &emhttp; exit 1 fi echo echo "----------Successfully downloaded AMD Vendor Reset, please wait...!-----------" else echo echo "-----ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR-----" echo "----------------------Can't download AMD Vendor Reset--------------------------" rm -rf &plugin; &emhttp; exit 1 fi } check() { if ! ls -1 &packages;/${KERNEL_V%%-*}/ | grep -q "${PACKAGE}" ; then LAT_PACKAGE="$(wget -qO- https://api.github.com/repos/ich777/unraid-amd-vendor-reset/releases/tags/${KERNEL_V} | jq -r '.assets[].name' | grep "${PACKAGE}" | grep -E -v '\.md5$' | sort -V | tail -1)" echo echo "-----------------Downloading AMD Vendor Reset, please wait...!----------------" echo "----------This could take some time, please don't close this window!----------" download else echo echo "-----------------------AMD Vendor Reset found locally!------------------------" fi } install() { # Install AMD Vendor Reset /sbin/installpkg "&packages;/${KERNEL_V%%-*}/${PACKAGE}*.txz" depmod -a } activate() { # Modprobe AMD Vendor Reset /sbin/modprobe vendor_reset } # Define Variables KERNEL_V="$(uname -r)" PACKAGE="gnif_vendor_reset" DL_URL="https://github.com/ich777/unraid-amd-vendor-reset/releases/download/$KERNEL_V" if [ ! -d "&packages;/${KERNEL_V%%-*}" ]; then mkdir -p "&packages;/${KERNEL_V%%-*}" fi #Check for old packages rm -rf $(ls -d &packages;/* | grep -v "${KERNEL_V%%-*}") if [ ! -f "&plugin;/AMD-Vendor-Reset.png" ]; then wget -q -nc --show-progress --progress=bar:force:noscroll -O "&plugin;/&name;.png" "https://raw.githubusercontent.com/ich777/docker-templates/master/ich777/images/gnif.png" fi #Check if AMD Vendor Reset is already downloaded check # Check if AMD Vendor Reset module is already installed if ! modinfo vendor_reset -0 >/dev/null 2>&1 ; then echo echo "-----------------Installing AMD Vendor Reset, please wait...!-----------------" install > /dev/null activate echo echo "----------------Installation of AMD Vendor Reset successful-------------------" echo else activate echo echo "----------------Installation of AMD Vendor Reset successful-------------------" fi # Change reset_method for installed AMD VGA adapters for Kernel 5.15+ # https://github.com/gnif/vendor-reset/issues/46#issuecomment-992282166 TARGET_V="5.14.99" COMPARE="$(uname -r | cut -d '-' -f1) $TARGET_V" if [ "$TARGET_V" != "$(echo "$COMPARE" | sort -V | tail -1)" ]; then while read -r line do echo 'device_specific' > $(find /sys/bus/pci/devices/* -name "*$line")/reset_method done <<< "$(lspci -nn | grep -E "VGA compatible controller|Display controller" | grep -E "AMD|ATI|Advanced Micro Devices" | awk '{print $1}')" fi #Install icon if [ ! -f "&emhttp;/images/&name;.png" ]; then if [ ! -d "&emhttp;/images" ]; then mkdir -p &emhttp;/images fi cp &plugin;/&name;.png &emhttp;/images/ fi #Check if Plugin Update Helper is downloaded and up-to-date if [ ! -f &plugin;/plugin_update_helper ]; then wget -q -T 5 -O &plugin;/plugin_update_helper "https://raw.githubusercontent.com/ich777/unraid-plugin_update_helper/master/plugin_update_helper" else CUR_V="$(grep -E "Plugin-Update-Helper version:" &plugin;/plugin_update_helper | awk '{print $4}')" if [ ! -s /tmp/update-helper ]; then echo "$(wget -T5 -qO- https://raw.githubusercontent.com/ich777/unraid-plugin_update_helper/master/plugin_update_helper | grep -E "Plugin-Update-Helper version:" | awk '{print $4}')" > /tmp/update-helper AVAIL_V="$(cat /tmp/update-helper)" else AVAIL_V="$(cat /tmp/update-helper)" fi if [ ! -z "$AVAIL_V" ]; then COMPARE="$(sort -V <(echo -e "${AVAIL_V}\n$CUR_V") | tail -1)" if [ "$CUR_V" != "$COMPARE" ]; then wget -q -T 5 -O &plugin;/plugin_update_helper "https://raw.githubusercontent.com/ich777/unraid-plugin_update_helper/master/plugin_update_helper" fi fi fi #Check if Plugin Update Helper is installed and up to date if [ ! -f /usr/bin/plugin_update_helper ]; then cp &plugin;/plugin_update_helper /usr/bin/plugin_update_helper chmod +x /usr/bin/plugin_update_helper else PLUGIN_V="$(grep -E "Plugin-Update-Helper version:" &plugin;/plugin_update_helper | awk '{print $4}')" INST_V="$(grep -E "Plugin-Update-Helper version:" /usr/bin/plugin_update_helper | awk '{print $4}')" COMPARE="$(sort -V <(echo -e "${PLUGIN_V}\n$INST_V") | tail -1)" if [ "$INST_V" != "$COMPARE" ]; then kill $(ps aux | grep -E "inotifywait -q /boot/changes.txt -e move_self,delete_self" | grep -v "grep -E inotifywait" | awk '{print $2}') 2>/dev/null sleep 1 cp &plugin;/plugin_update_helper /usr/bin/plugin_update_helper chmod +x /usr/bin/plugin_update_helper fi fi #Start Plugin Update Helper if [ -z "$(ps aux | grep -E "inotifywait -q /boot/changes.txt -e move_self,delete_self" | grep -v "grep -E inotifywait" | awk '{print $2}')" ]; then echo "/usr/bin/plugin_update_helper" | at now > /dev/null 2>&1 fi echo "----------------------------------------" echo "-----Uninstalling AMD Vendor Reset------" echo "----------------------------------------" # Remove plugin related files rm -rf &emhttp; rm -rf &plugin; echo echo "----------------------------------------------------------------------------" echo "---------AMD Vendor Reset uninstalled, please reboot your server!-----------" echo "----------------------------------------------------------------------------" echo