diff -ur ./src/dash_browser.c ../LithiumX-DualHDD/src/dash_browser.c
--- ./src/dash_browser.c	2024-06-28 13:55:18.732000000 -0400
+++ ../LithiumX-DualHDD/src/dash_browser.c	2024-08-16 19:22:15.928000000 -0400
@@ -179,6 +179,7 @@
     WIN32_FIND_DATA findData;
     HANDLE hFind;
     char searchPath[DASH_MAX_PATH];
+    char tmp[10];
     int i = 0;
 
     *cnt = 0;
@@ -187,19 +188,23 @@
     //Xbox doesn't have a root drive that shows all partitions so we fake it
     if (strcmp(path, DASH_ROOT_PATH) == 0)
     {
-        static const char root_drives[][3] = {"C:", "D:", "E:", "F:", "G:", "R:", "S:",
-                                              "V:", "W:", "A:", "B:", "P:", "Q:", "X:", "Y:", "Z:", };
+        static const char* root_drives[] = {"HDD0-C", "DVD-ROM", "HDD0-E", "HDD0-F", "HDD0-G", "HDD0-H", "HDD0-I",
+                                              "HDD0-J", "HDD0-K", "HDD0-L", "HDD0-M", "HDD0-N", "ROOT", "HDD0-X", "HDD0-Y", "HDD0-Z", 
+                                              "HDD1-C", "HDD1-E", "HDD1-F", "HDD1-G", "HDD1-H", "HDD1-I",
+                                              "HDD1-J", "HDD1-K", "HDD1-L", "HDD1-M", "HDD1-N", "HDD1-X", "HDD1-Y", "HDD1-Z", };
         int _cnt = 0;
         for (int i = 0; i < DASH_ARRAY_SIZE(root_drives); i++)
         {
-            if(!nxIsDriveMounted(root_drives[i][0]))
+            if(!nxIsDriveMounted((char*)root_drives[i]))
             {
                 dash_printf(LEVEL_TRACE, "%s not mounted. Skipping\n", root_drives[i]);
                 continue;
             }
             if (list != NULL)
             {
-                list[_cnt].item = lv_strdup(root_drives[i]);
+		memset(tmp, 0, 10);
+		lv_snprintf(tmp, 10, "%s:", root_drives[i]);
+                list[_cnt].item = lv_strdup(tmp);
                 list[_cnt].is_dir = 1;
             }
             _cnt++;
diff -ur ./src/dash_main.c ../LithiumX-DualHDD/src/dash_main.c
--- ./src/dash_main.c	2024-06-28 13:55:18.732000000 -0400
+++ ../LithiumX-DualHDD/src/dash_main.c	2024-08-01 04:12:48.396000000 -0400
@@ -22,16 +22,16 @@
                             "\n"
                             "[[pages]]\n"
                             "name = \"Games\"\n"
-                            "paths = [\"E:/Games\", \"F:/Games\", \"G:/Games\"]\n"
+                            "paths = [\"HDD0-E:/Games\", \"HDD0-F:/Games\", \"HDD0-G:/Games\", \"HDD1-E:/Games\", \"HDD1-F:/Games\", \"HDD1-G:/Games\"]\n"
                             "\n"
                             "[[pages]]\n"
                             "name = \"Applications\"\n"
-                            "paths = [\"E:/Applications\", \"F:/Applications\", \"G:/Applications\",\n"
-                            "         \"E:/Apps\", \"F:/Apps\", \"G:/Apps\"]\n"
+                            "paths = [\"HDD0-E:/Applications\", \"HDD0-F:/Applications\", \"HDD0-G:/Applications\", \"HDD1-E:/Applications\", \"HDD1-F:/Applications\", \"HDD1-G:/Applications\", \n"
+                            "         \"HDD0-E:/Apps\", \"HDD0-F:/Apps\", \"HDD0-G:/Apps\", \"HDD1-E:/Apps\", \"HDD1-F:/Apps\", \"HDD1-G:/Apps\"]\n"
                             "\n"
                             "[[pages]]\n"
                             "name = \"Homebrew\"\n"
-                            "paths = [\"E:/Homebrew\", \"F:/Homebrew\", \"G:/Homebrew\"]\n"
+                            "paths = [\"HDD0-E:/Homebrew\", \"HDD0-F:/Homebrew\", \"HDD0-G:/Homebrew\", \"HDD1-E:/Homebrew\", \"HDD1-F:/Homebrew\", \"HDD1-G:/Homebrew\"]\n"
                             "\0";
 
 static bool check_path_toml(char *err_msg, int err_msg_len)
diff -ur ./src/libs/ftpd/ftp_file.c ../LithiumX-DualHDD/src/libs/ftpd/ftp_file.c
--- ./src/libs/ftpd/ftp_file.c	2024-06-28 13:55:18.732000000 -0400
+++ ../LithiumX-DualHDD/src/libs/ftpd/ftp_file.c	2024-08-16 19:52:39.464000000 -0400
@@ -23,7 +23,11 @@
 
 #ifdef NXDK
 #include <xboxkrnl/xboxkrnl.h>
-static const char root_drives[][3] = {"/C", "/D", "/E", "/F", "/G", "/R", "/S", "/V", "/W", "/A", "/B", "/P", "/X", "/Y", "/Z"};
+static const char root_drives[][8] = {"HDD0-C", "DVD-ROM", "HDD0-E", "HDD0-F", "HDD0-G", "HDD0-H", "HDD0-I",
+                                      "HDD0-J", "HDD0-K", "HDD0-L", "HDD0-M", "HDD0-N", "ROOT", "HDD0-X", "HDD0-Y", "HDD0-Z",
+                                      "HDD1-C", "HDD1-E", "HDD1-F", "HDD1-G", "HDD1-H", "HDD1-I",
+                                      "HDD1-J", "HDD1-K", "HDD1-L", "HDD1-M", "HDD1-N", "HDD1-X", "HDD1-Y", "HDD1-Z", };
+
 static int root_index;
 #define FILE_DBG DbgPrint
 #else
@@ -39,19 +43,29 @@
 
 	// Replace "/" with "\"
 	char *sep = strchr(out, '/');
+	char* start = 0;
+	char* end = 0;
+	int cnt = 0;
+	if(sep) start = sep;
 	while (sep)
 	{
+		if(cnt==1) end = sep;
 		*sep = '\\';
 		sep = strchr(out, '/');
+		cnt++;
 	}
 
+	if(!end) end = start + strlen(out);
+
 #ifdef NXDK
 	// Replace \E\ with "E:\" etc.
 	if (out[0] == '\\' && out[1] != '\0')
 	{
-		out[0] = out[1];
+		memcpy(out, start+1, end-start-1);
+		*(end-1) = ':';
+	/*	out[0] = out[1];
 		out[1] = ':';
-		out[2] = '\\';
+		out[2] = '\\';*/
 	}
 #endif
 	return out;
@@ -63,7 +77,7 @@
 	int cnt = sizeof(root_drives) / sizeof(root_drives[0]);
 	for (int i = 0; i < cnt; i++)
 	{
-		if (strcmp(path, root_drives[i]) == 0)
+		if (strcmp(path+1, root_drives[i]) == 0)
 		{
 			return 1;
 		}
@@ -208,7 +222,6 @@
 {
 	WIN32_FIND_DATA findFileData;
 	FILE_DBG("Looking for files in %s\n", dp->path);
-
 #ifdef FTP_CUSTOM_ROOT_PATH
 	if (strcmp(dp->path, "root") == 0)
 	{
@@ -217,11 +230,11 @@
 
 		for(; root_index < (sizeof(root_drives) / sizeof(root_drives[0])); root_index++)
 		{
-			if(!nxIsDriveMounted(root_drives[root_index][1]))
+			if(!nxIsDriveMounted((char*)root_drives[root_index]))
 				continue;
 
-			nfo->fname[0] = root_drives[root_index][1];
-			nfo->fname[1] = '\0';
+			memcpy(nfo->fname, root_drives[root_index], sizeof(root_drives[0]));
+			//nfo->fname = root_drives[root_index];
 			nfo->fattrib = AM_DIR;
 
 			// Create default year and time for root dirs
@@ -479,4 +492,4 @@
 	// Not implemented
 	FILE_DBG("%s: NOT IMPLEMENTED\n", __FUNCTION__);
 	return FR_OK;
-}
\ No newline at end of file
+}
diff -ur ./src/libs/nxdk/lib/nxdk/automount_d.c ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/automount_d.c
--- ./src/libs/nxdk/lib/nxdk/automount_d.c	2024-06-28 13:55:58.136000000 -0400
+++ ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/automount_d.c	2024-08-01 01:43:43.288000000 -0400
@@ -11,7 +11,7 @@
 
 __cdecl int automount_d_drive (void)
 {
-    if (nxIsDriveMounted('D')) {
+    if (nxIsDriveMounted("D")) {
         return 0;
     }
 
@@ -27,7 +27,7 @@
 
     // Mount the obtained path as D:
     BOOL success;
-    success = nxMountDrive('D', targetPath);
+    success = nxMountDrive("D", targetPath);
     assert(success);
 
     return 0;
diff -ur ./src/libs/nxdk/lib/nxdk/mount.c ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.c
--- ./src/libs/nxdk/lib/nxdk/mount.c	2024-06-28 13:55:58.136000000 -0400
+++ ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.c	2024-08-01 01:42:32.208000000 -0400
@@ -8,15 +8,15 @@
 #include <winbase.h>
 #include <xboxkrnl/xboxkrnl.h>
 
-bool nxIsDriveMounted (char driveLetter)
+bool nxIsDriveMounted (char* driveLetter)
 {
     NTSTATUS status;
     HANDLE handle;
     ANSI_STRING drivePath;
-    CHAR drivePathBuffer[7];
+    CHAR drivePathBuffer[20] = {0};
     OBJECT_ATTRIBUTES objattr;
 
-    sprintf(drivePathBuffer, "\\??\\%c:", driveLetter);
+    sprintf(drivePathBuffer, "\\??\\%s:", driveLetter);
     RtlInitAnsiString(&drivePath, drivePathBuffer);
 
     InitializeObjectAttributes(&objattr, &drivePath, OBJ_CASE_INSENSITIVE, NULL, NULL);
@@ -29,14 +29,14 @@
     return false;
 }
 
-bool nxMountDrive (char driveLetter, const char *path)
+bool nxMountDrive (char* driveLetter, const char *path)
 {
     NTSTATUS status;
     ANSI_STRING drivePath;
-    CHAR drivePathBuffer[7];
+    CHAR drivePathBuffer[20] = {0};
     ANSI_STRING mountPath;
 
-    sprintf(drivePathBuffer, "\\??\\%c:", driveLetter);
+    sprintf(drivePathBuffer, "\\??\\%s:", driveLetter);
     RtlInitAnsiString(&drivePath, drivePathBuffer);
 
     RtlInitAnsiString(&mountPath, path);
@@ -50,13 +50,13 @@
     return true;
 }
 
-bool nxUnmountDrive (char driveLetter)
+bool nxUnmountDrive (char* driveLetter)
 {
     NTSTATUS status;
     ANSI_STRING drivePath;
-    CHAR drivePathBuffer[7];
+    CHAR drivePathBuffer[20] = {0};
 
-    sprintf(drivePathBuffer, "\\??\\%c:", driveLetter);
+    sprintf(drivePathBuffer, "\\??\\%s:", driveLetter);
     RtlInitAnsiString(&drivePath, drivePathBuffer);
 
     status = IoDeleteSymbolicLink(&drivePath);
diff -ur ./src/libs/nxdk/lib/nxdk/mount.h ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.h
--- ./src/libs/nxdk/lib/nxdk/mount.h	2024-06-28 13:55:58.136000000 -0400
+++ ../LithiumX-DualHDD/src/libs/nxdk/lib/nxdk/mount.h	2024-08-01 01:42:46.648000000 -0400
@@ -13,9 +13,9 @@
 #include <stdbool.h>
 #endif
 
-bool nxIsDriveMounted (char driveLetter);
-bool nxMountDrive (char driveLetter, const char *path);
-bool nxUnmountDrive (char driveLetter);
+bool nxIsDriveMounted (char* driveLetter);
+bool nxMountDrive (char* driveLetter, const char *path);
+bool nxUnmountDrive (char* driveLetter);
 
 #ifdef __cplusplus
 }
diff -ur ./src/lithiumx.h ../LithiumX-DualHDD/src/lithiumx.h
--- ./src/lithiumx.h	2024-06-28 13:55:18.772000000 -0400
+++ ../LithiumX-DualHDD/src/lithiumx.h	2024-08-01 03:55:40.896000000 -0400
@@ -63,7 +63,7 @@
 //nxdk local directory is also mounting to Q: so we get Q:Q:..
 #ifndef DASH_SEARCH_PATH_CONFIG
 #ifdef NXDK
-#define DASH_SEARCH_PATH_CONFIG "E:\\UDATA\\LithiumX\\lithiumx.toml"
+#define DASH_SEARCH_PATH_CONFIG "HDD0-E:\\UDATA\\LithiumX\\lithiumx.toml"
 #else
 #define DASH_SEARCH_PATH_CONFIG "lithiumx.toml"
 #endif
@@ -71,7 +71,7 @@
 
 #ifndef DASH_DATABASE_PATH
 #ifdef NXDK
-#define DASH_DATABASE_PATH "E:\\UDATA\\LithiumX\\lithiumx.db"
+#define DASH_DATABASE_PATH "HDD0-E:\\UDATA\\LithiumX\\lithiumx.db"
 #else
 #define DASH_DATABASE_PATH "lithiumx.db"
 #endif
@@ -200,4 +200,4 @@
 }
 #endif
 
-#endif
\ No newline at end of file
+#endif
diff -ur ./src/platform/xbox/platform.c ../LithiumX-DualHDD/src/platform/xbox/platform.c
--- ./src/platform/xbox/platform.c	2024-06-28 16:01:47.012000000 -0400
+++ ../LithiumX-DualHDD/src/platform/xbox/platform.c	2024-08-16 19:12:41.508000000 -0400
@@ -129,47 +129,65 @@
     debugPrint("%s ", loading_str);
 
     // nxdk automounts D to the root xbe path. Lets undo that
-    if (nxIsDriveMounted('D'))
+    if (nxIsDriveMounted("DVD-ROM"))
     {
-        nxUnmountDrive('D');
+        nxUnmountDrive("DVD-ROM");
     }
 
     // Mount the DVD drive
-    nxMountDrive('D', "\\Device\\CdRom0");
+    nxMountDrive("DVD-ROM", "\\Device\\CdRom0");
 
     // Mount root of LithiumX xbe to Q:
     char targetPath[MAX_PATH];
     nxGetCurrentXbeNtPath(targetPath);
     *(strrchr(targetPath, '\\') + 1) = '\0';
-    nxMountDrive('Q', targetPath);
+    nxMountDrive("ROOT", targetPath);
     debugPrint(".");
 
     // Mount stock partitions
-    nxMountDrive('C', "\\Device\\Harddisk0\\Partition2\\");
-    nxMountDrive('E', "\\Device\\Harddisk0\\Partition1\\");
-    nxMountDrive('X', "\\Device\\Harddisk0\\Partition3\\");
-    nxMountDrive('Y', "\\Device\\Harddisk0\\Partition4\\");
-    nxMountDrive('Z', "\\Device\\Harddisk0\\Partition5\\");
+    nxMountDrive("HDD0-C", "\\Device\\Harddisk0\\Partition2\\");
+    nxMountDrive("HDD0-E", "\\Device\\Harddisk0\\Partition1\\");
+    nxMountDrive("HDD0-X", "\\Device\\Harddisk0\\Partition3\\");
+    nxMountDrive("HDD0-Y", "\\Device\\Harddisk0\\Partition4\\");
+    nxMountDrive("HDD0-Z", "\\Device\\Harddisk0\\Partition5\\");
     debugPrint(".");
 
     // Mount extended partitions
     // NOTE: Both the retail kernel and modified kernels will mount these partitions
     // if they exist and silently fail if they don't. So we can just try to mount them
     // and not worry about checking if they exist.
-    nxMountDrive('F', "\\Device\\Harddisk0\\Partition6\\");
-    nxMountDrive('G', "\\Device\\Harddisk0\\Partition7\\");
-    nxMountDrive('R', "\\Device\\Harddisk0\\Partition8\\");
-    nxMountDrive('S', "\\Device\\Harddisk0\\Partition9\\");
-    nxMountDrive('V', "\\Device\\Harddisk0\\Partition10\\");
-    nxMountDrive('W', "\\Device\\Harddisk0\\Partition11\\");
-    nxMountDrive('A', "\\Device\\Harddisk0\\Partition12\\");
-    nxMountDrive('B', "\\Device\\Harddisk0\\Partition13\\");
-    nxMountDrive('P', "\\Device\\Harddisk0\\Partition14\\");
+    nxMountDrive("HDD0-F", "\\Device\\Harddisk0\\Partition6\\");
+    nxMountDrive("HDD0-G", "\\Device\\Harddisk0\\Partition7\\");
+    nxMountDrive("HDD0-H", "\\Device\\Harddisk0\\Partition8\\");
+    nxMountDrive("HDD0-I", "\\Device\\Harddisk0\\Partition9\\");
+    nxMountDrive("HDD0-J", "\\Device\\Harddisk0\\Partition10\\");
+    nxMountDrive("HDD0-K", "\\Device\\Harddisk0\\Partition11\\");
+    nxMountDrive("HDD0-L", "\\Device\\Harddisk0\\Partition12\\");
+    nxMountDrive("HDD0-M", "\\Device\\Harddisk0\\Partition13\\");
+    nxMountDrive("HDD0-N", "\\Device\\Harddisk0\\Partition14\\");
+
+    // Mount any second drive partitions
+
+    nxMountDrive("HDD1-C", "\\Device\\Harddisk1\\Partition2\\");
+    nxMountDrive("HDD1-E", "\\Device\\Harddisk1\\Partition1\\");
+    nxMountDrive("HDD1-X", "\\Device\\Harddisk1\\Partition3\\");
+    nxMountDrive("HDD1-Y", "\\Device\\Harddisk1\\Partition4\\");
+    nxMountDrive("HDD1-Z", "\\Device\\Harddisk1\\Partition5\\");
+    nxMountDrive("HDD1-F", "\\Device\\Harddisk1\\Partition6\\");
+    nxMountDrive("HDD1-G", "\\Device\\Harddisk1\\Partition7\\");
+    nxMountDrive("HDD1-H", "\\Device\\Harddisk1\\Partition8\\");
+    nxMountDrive("HDD1-I", "\\Device\\Harddisk1\\Partition9\\");
+    nxMountDrive("HDD1-J", "\\Device\\Harddisk1\\Partition10\\");
+    nxMountDrive("HDD1-K", "\\Device\\Harddisk1\\Partition11\\");
+    nxMountDrive("HDD1-L", "\\Device\\Harddisk1\\Partition12\\");
+    nxMountDrive("HDD1-M", "\\Device\\Harddisk1\\Partition13\\");
+    nxMountDrive("HDD1-N", "\\Device\\Harddisk1\\Partition14\\");
+
     debugPrint(".");
 
-    CreateDirectoryA("E:\\UDATA", NULL);
-    CreateDirectoryA("E:\\UDATA\\LithiumX", NULL);
-    FILE *fp = fopen("E:\\UDATA\\LithiumX\\TitleMeta.xbx", "wb");
+    CreateDirectoryA("HDD0-E:\\UDATA", NULL);
+    CreateDirectoryA("HDD0-E:\\UDATA\\LithiumX", NULL);
+    FILE *fp = fopen("HDD0-E:\\UDATA\\LithiumX\\TitleMeta.xbx", "wb");
     if (fp)
     {
         fprintf(fp, "TitleName=LithiumX Dashboard\r\n");
@@ -207,7 +225,7 @@
         if (strcmp(dash_launch_path, "__MSDASH__") == 0)
         {
             // FIXME: Do we need to eject disk?
-            strcpy(dash_launch_path, "C:\\xboxdash.xbe");
+            strcpy(dash_launch_path, "HDD0-C:\\xboxdash.xbe");
         }
         else if (strcmp(dash_launch_path, "__DVD__") == 0)
         {
