diff --git a/emhttp/plugins/dynamix/SysDrivers.page b/emhttp/plugins/dynamix/SysDrivers.page
new file mode 100644
index 000000000..370391a38
--- /dev/null
+++ b/emhttp/plugins/dynamix/SysDrivers.page
@@ -0,0 +1,68 @@
+Menu="UNRAID-OS"
+Title="System Modules/Drivers"
+Icon="fa-sitemap"
+Tag="server"
+---
+
+
+
+
+
+
+
diff --git a/emhttp/plugins/dynamix/include/SysDrivers.php b/emhttp/plugins/dynamix/include/SysDrivers.php
new file mode 100644
index 000000000..fd31bf597
--- /dev/null
+++ b/emhttp/plugins/dynamix/include/SysDrivers.php
@@ -0,0 +1,114 @@
+
+
+$docroot = $docroot ?? $_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp';
+// add translations
+$_SERVER['REQUEST_URI'] = 'tools';
+require_once "$docroot/webGui/include/Translations.php";
+require_once "$docroot/webGui/include/Helpers.php";
+
+switch ($_POST['table']) {
+case 't1':
+ $option = $_POST['option'] ;
+ $select = $_POST['select'] ;
+ #$procmodules = file_get_contents("/proc/modules") ;
+ #$procmodules = shell_exec('find /lib/modules/$(uname -r) -type f -not -path "/lib/modules/$(uname -r)/source/*" -not -path "/lib/modules/$(uname -r)/build/*" -name "*ko*" ') ;
+ $procmodules = shell_exec('find /lib/modules/$(uname -r)/kernel/drivers/ -type f -not -path "/lib/modules/$(uname -r)/source/*" -not -path "/lib/modules/$(uname -r)/build/*" -name "*ko*" ') ;
+ $procmodules = explode(PHP_EOL,$procmodules) ;
+ $option = $_POST['option'] ;
+
+ $kernel = shell_exec("uname -r") ;
+ $kernel = trim($kernel,"\n") ;
+ foreach($procmodules as $line) {
+ if ($line == "") continue ;
+ $modprobe = "" ;
+ $name = $line ;
+ $modname = trim(shell_exec("modinfo $name"),"\n") ;
+ $output=null ;
+ exec("modinfo $name",$output,$error) ;
+ $parms = array() ;
+ foreach($output as $outline) {
+ $data = explode(":",$outline) ;
+ switch ($data[0])
+ {
+ case "name":
+ $modname = trim($data[1]) ;
+ break ;
+ case "depends":
+ $depends = trim($data[1]) ;
+ break ;
+ case "filename":
+ $file = trim($data[1]) ;
+ break ;
+ case "description":
+ $desc = trim($data[1]) ;
+ break ;
+ case "parm":
+ $parms[] = trim(str_replace("parm:","",$outline)) ;
+ break ;
+ case "alias":
+ case "author":
+ case "firmware":
+ case "intree":
+ case "vermagic":
+ case "retpoline":
+ case "import_ns":
+ case "license":
+ break ;
+ default:
+ $parms[] = trim($outline) ;
+ break ;
+ }
+ }
+ $state = "Enabled" ;
+ if (is_file("/boot/config/modprobe.d/$modname.conf")) {
+ $modprobe = explode(PHP_EOL,file_get_contents("/boot/config/modprobe.d/$modname.conf")) ;
+ $state = array_search("blacklist",$modprobe);
+ if($state) {$state = "Disabled" ;}
+ else $state="Custom" ;
+ } else if($option == "conf") continue ;
+
+ $type = pathinfo($file) ;
+ $dir = $type['dirname'] ;
+ $dir = str_replace("/lib/modules/$kernel/kernel/drivers/", "" ,$dir) ;
+ $dir = str_replace("/lib/modules/$kernel/kernel/", "" ,$dir) ;
+ $arrModules[$modname] = [
+ 'modname' => $modname,
+ 'dependacy' => $depends,
+ 'parms' => $parms,
+ 'file' => $file,
+ 'modprobe' => $modprobe,
+ 'state' => $state,
+ 'type' => $dir,
+ 'description' => substr($desc , 0 ,60) ,
+ ] ;
+ }
+ echo "| "._("Module/Driver")." | "._("Description")." | "._("State")." | "._("Type")." | "._("Modeprobe.d config file")." |
";
+
+ if (is_array($arrModules)) ksort($arrModules) ;
+ foreach($arrModules as $modname => $module)
+ {
+ echo "| $modname | {$module['description']} | {$module['state']} | {$module['type']} | ";
+ if (is_array($module["modprobe"])) {
+ $i = 0 ;
+ foreach($module["modprobe"] as $line) {
+ if ($i) echo "
| | | | $line |
" ; else echo "$line | " ;
+ $i++ ;
+ }
+ }
+
+ }
+ break;
+
+}
+?>