diff --git a/Source-arm/BSP/QCDB410C/Packages/QCDB410C.DeviceLayout-R/DeviceLayout.xml b/Source-arm/BSP/QCDB410C/Packages/QCDB410C.DeviceLayout-R/DeviceLayout.xml
index 36b9f18b..657b8dec 100644
--- a/Source-arm/BSP/QCDB410C/Packages/QCDB410C.DeviceLayout-R/DeviceLayout.xml
+++ b/Source-arm/BSP/QCDB410C/Packages/QCDB410C.DeviceLayout-R/DeviceLayout.xml
@@ -225,9 +225,10 @@
MMOS
+ FAT32
+ 4096000
+
{ebd0a0a2-b9e5-4433-87c0-68b6b72699c7}
- NTFS
- 4915200
Data
diff --git a/Templates/recovery/diskpart_assign.txt b/Templates/recovery/diskpart_assign.txt
index ab6edd95..e264b281 100644
--- a/Templates/recovery/diskpart_assign.txt
+++ b/Templates/recovery/diskpart_assign.txt
@@ -2,26 +2,16 @@ sel disk 0
lis vol
sel vol 0
-remove all noerr
-assign letter="P" noerr
-
-sel vol 1
-remove all noerr
-assign letter "C" noerr
-format fs=NTFS quick label=MainOS override noerr
+assign letter=P noerr
sel vol 2
-remove all noerr
-assign letter "R" noerr
+assign letter=R noerr
sel vol 3
-remove all noerr
-assign letter="D" noerr
-format fs=NTFS quick label=Data override noerr
+assign letter=D noerr
sel vol 4
-remove all noerr
-assign letter="E" noerr
+assign letter=E noerr
lis vol
exit
\ No newline at end of file
diff --git a/Templates/recovery/diskpart_format.txt b/Templates/recovery/diskpart_format.txt
new file mode 100644
index 00000000..f33dfaa2
--- /dev/null
+++ b/Templates/recovery/diskpart_format.txt
@@ -0,0 +1,14 @@
+sel disk 0
+
+sel vol 1
+remove all dismount noerr
+assign letter=C noerr
+format fs=NTFS quick label="MainOS" override noerr
+
+sel vol 3
+remove all dismount noerr
+assign letter=D noerr
+format fs=NTFS quick label="Data" override noerr
+
+lis vol
+exit
\ No newline at end of file
diff --git a/Templates/recovery/diskpart_remove.txt b/Templates/recovery/diskpart_remove.txt
index 1989365e..f041ac4b 100644
--- a/Templates/recovery/diskpart_remove.txt
+++ b/Templates/recovery/diskpart_remove.txt
@@ -2,20 +2,16 @@ sel disk 0
lis vol
sel vol 0
-remove all noerr
-
-sel vol 1
-remove all noerr
-assign letter "C" noerr
+remove letter=P noerr
sel vol 2
-remove all noerr
+remove letter=R noerr
sel vol 3
-remove all noerr
+remove letter=D noerr
sel vol 4
-remove all noerr
+remove letter=E noerr
lis vol
exit
\ No newline at end of file
diff --git a/Templates/recovery/startnet.cmd b/Templates/recovery/startnet.cmd
index 4bce336c..f23f9491 100644
--- a/Templates/recovery/startnet.cmd
+++ b/Templates/recovery/startnet.cmd
@@ -1,50 +1,34 @@
-@echo off
+REM startnet.cmd
+
+REM Launch UI to cover screen
+REM start recoverygui.exe
+
echo IoT recovery initializing...
wpeinit
-REM Format partitions and assign drive letters
+REM Assign drive letters
call diskpart /s diskpart_assign.txt
-
-REM Define drive letters (assigned by diskpart script)
-set MAINOSDRIVE=C
-set EFIDRIVE=E
set RECOVERYDRIVE=R
-set DATADRIVE=D
-set DPPDRIVE=P
-
-REM Apply EFIESP partition WIM file
-dism /apply-image /ImageFile:%RECOVERYDRIVE%:\efiesp.wim /index:1 /ApplyDir:%EFIDRIVE%:\
-REM This will reset BCD to defaults, so immediately reset recovery parameter in case of power loss
-bcdedit /store %EFIDRIVE%:\EFI\microsoft\boot\bcd /set {bootmgr} bootsequence {a5935ff2-32ba-4617-bf36-5ac314b3f9bf}
-
-REM Apply the MainOS and Data partition WIM files. The order below is important - do not change
-dism /apply-image /ImageFile:%RECOVERYDRIVE%:\data.wim /index:1 /ApplyDir:%DATADRIVE%:\ /Compact
-dism /apply-image /ImageFile:%RECOVERYDRIVE%:\mainos.wim /index:1 /ApplyDir:%MAINOSDRIVE%:\ /Compact
-
-REM Restore Junctions for Data/DPP/MMOS partitions
-REM Only necessary when recovery WIMs not generated from same FFU
-mountvol %DATADRIVE%:\ /L > volumeguid_data
-set /p VOLUMEGUIDDATA= volumeguid_dpp
-set /p VOLUMEGUIDDPP= volumeguid_recovery
-set /p VOLUMEGUIDRECOVERY=>%RECOVERY_LOG_FOLDER%\recovery_log.txt
+call time /t >>%RECOVERY_LOG_FOLDER%\recovery_log.txt
+copy %WINDIR%\system32\winpeshl.log %RECOVERY_LOG_FOLDER%
+
+REM Ensure recovery WIM files are available
+if not exist %RECOVERYDRIVE%:\data.wim echo Missing data.wim file! >>%RECOVERY_LOG_FOLDER%\recovery_log.txt && goto exit
+if not exist %RECOVERYDRIVE%:\mainos.wim echo Missing mainos.wim file! >>%RECOVERY_LOG_FOLDER%\recovery_log.txt && goto exit
+if not exist %RECOVERYDRIVE%:\efiesp.wim echo Missing efiesp.wim file! >>%RECOVERY_LOG_FOLDER%\recovery_log.txt && goto exit
+
+REM Perform recovery operations, logging to MMOS log file
+call startnet_recovery.cmd >>%RECOVERY_LOG_FOLDER%\recovery_log.txt
+
+:exit
+call time /t >>%RECOVERY_LOG_FOLDER%\recovery_log.txt
+echo --- Device recovery completed --- >>%RECOVERY_LOG_FOLDER%\recovery_log.txt
REM Go back to MainOS on next boot
bcdedit /store %EFIDRIVE%:\EFI\microsoft\boot\bcd /set {bootmgr} bootsequence {01de5a27-8705-40db-bad6-96fa5187d4a6}
diff --git a/Templates/recovery/startnet_recovery.cmd b/Templates/recovery/startnet_recovery.cmd
new file mode 100644
index 00000000..2bfb8ab9
--- /dev/null
+++ b/Templates/recovery/startnet_recovery.cmd
@@ -0,0 +1,45 @@
+REM startnet_recovery.cmd
+
+REM Format MainOS and Data partitions
+call diskpart /s diskpart_format.txt
+
+REM Define drive letters (assigned by diskpart script)
+set MAINOSDRIVE=C
+set EFIDRIVE=E
+set RECOVERYDRIVE=R
+set DATADRIVE=D
+set DPPDRIVE=P
+
+REM Apply EFIESP partition WIM file
+dism /apply-image /ImageFile:%RECOVERYDRIVE%:\efiesp.wim /index:1 /ApplyDir:%EFIDRIVE%:\
+REM This will reset BCD to defaults, so immediately reset recovery parameter in case of power loss
+bcdedit /store %EFIDRIVE%:\EFI\microsoft\boot\bcd /set {bootmgr} bootsequence {a5935ff2-32ba-4617-bf36-5ac314b3f9bf}
+
+REM Apply the MainOS and Data partition WIM files. The order below is important - do not change
+dism /apply-image /ImageFile:%RECOVERYDRIVE%:\data.wim /index:1 /ApplyDir:%DATADRIVE%:\ /Compact
+dism /apply-image /ImageFile:%RECOVERYDRIVE%:\mainos.wim /index:1 /ApplyDir:%MAINOSDRIVE%:\ /Compact
+
+REM Restore Junctions for Data/DPP/MMOS partitions
+REM Only necessary when recovery WIMs not generated from same FFU
+mountvol %DATADRIVE%:\ /L > volumeguid_data
+set /p VOLUMEGUIDDATA= volumeguid_dpp
+set /p VOLUMEGUIDDPP= volumeguid_recovery
+set /p VOLUMEGUIDRECOVERY=nul
+copy "%IOTADK_ROOT%\Templates\recovery\startnet.cmd" %MOUNTDIR%\windows\system32\ >nul
+copy "%IOTADK_ROOT%\Templates\recovery\startnet_recovery.cmd" %MOUNTDIR%\windows\system32\ >nul
copy "%IOTADK_ROOT%\Templates\recovery\diskpart_assign.txt" %MOUNTDIR%\windows\system32\ >nul
+copy "%IOTADK_ROOT%\Templates\recovery\diskpart_format.txt" %MOUNTDIR%\windows\system32\ >nul
copy "%IOTADK_ROOT%\Templates\recovery\diskpart_remove.txt" %MOUNTDIR%\windows\system32\ >nul
echo Saving and unmounting WinPE