Index: ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.c
===================================================================
--- ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.c	(revision 75)
+++ ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.c	(revision 89)
@@ -23,4 +23,8 @@
 FATFS SDFatFS;    /* File system object for SD logical drive */
 FIL SDFile;       /* File object for SD */
+uint8_t retEEPROM;    /* Return value for USER */
+char EEPROMPath[4];   /* USER logical drive path */
+FATFS USERFatFS;    /* File system object for USER logical drive */
+FIL EEPROMFile;       /* File object for USER */
 
 /* USER CODE BEGIN Variables */
@@ -32,4 +36,6 @@
   /*## FatFS: Link the SD driver ###########################*/
   retSD = FATFS_LinkDriver(&SD_Driver, SDPath);
+  /*## FatFS: Link the USER driver ###########################*/
+  retEEPROM = FATFS_LinkDriver(&EEPROM_Driver, EEPROMPath);
 
   /* USER CODE BEGIN Init */
Index: ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.h
===================================================================
--- ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.h	(revision 75)
+++ ctrl/firmware/Main/CubeMX/FATFS/App/fatfs.h	(revision 89)
@@ -27,4 +27,5 @@
 #include "ff_gen_drv.h"
 #include "sd_diskio.h" /* defines SD_Driver as external */
+#include "eeprom_diskio.h" /* defines USER_Driver as external */
 
 /* USER CODE BEGIN Includes */
@@ -36,4 +37,8 @@
 extern FATFS SDFatFS; /* File system object for SD logical drive */
 extern FIL SDFile; /* File object for SD */
+extern uint8_t retEEPROM; /* Return value for USER */
+extern char EEPROMPath[4]; /* USER logical drive path */
+extern FATFS EEPROMFatFS; /* File system object for USER logical drive */
+extern FIL EEPROMFile; /* File object for USER */
 
 void MX_FATFS_Init(void);
Index: ctrl/firmware/Main/CubeMX/FATFS/Target/eeprom_diskio.c
===================================================================
--- ctrl/firmware/Main/CubeMX/FATFS/Target/eeprom_diskio.c	(revision 89)
+++ ctrl/firmware/Main/CubeMX/FATFS/Target/eeprom_diskio.c	(revision 89)
@@ -0,0 +1,167 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+  * @file    user_diskio.c
+  * @brief   This file includes a diskio driver skeleton to be completed by the user.
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2025 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
+  */
+ /* USER CODE END Header */
+
+#ifdef USE_OBSOLETE_USER_CODE_SECTION_0
+/*
+ * Warning: the user section 0 is no more in use (starting from CubeMx version 4.16.0)
+ * To be suppressed in the future.
+ * Kept to ensure backward compatibility with previous CubeMx versions when
+ * migrating projects.
+ * User code previously added there should be copied in the new user sections before
+ * the section contents can be deleted.
+ */
+/* USER CODE BEGIN 0 */
+/* USER CODE END 0 */
+#endif
+
+/* USER CODE BEGIN DECL */
+
+/* Includes ------------------------------------------------------------------*/
+#include <string.h>
+#include "ff_gen_drv.h"
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+
+/* Private variables ---------------------------------------------------------*/
+/* Disk status */
+static volatile DSTATUS Stat = STA_NOINIT;
+
+/* USER CODE END DECL */
+
+/* Private function prototypes -----------------------------------------------*/
+DSTATUS EEPROM_initialize (BYTE pdrv);
+DSTATUS EEPROM_status (BYTE pdrv);
+DRESULT EEPROM_read (BYTE pdrv, BYTE *buff, DWORD sector, UINT count);
+#if _USE_WRITE == 1
+  DRESULT EEPROM_write (BYTE pdrv, const BYTE *buff, DWORD sector, UINT count);
+#endif /* _USE_WRITE == 1 */
+#if _USE_IOCTL == 1
+  DRESULT EEPROM_ioctl (BYTE pdrv, BYTE cmd, void *buff);
+#endif /* _USE_IOCTL == 1 */
+
+Diskio_drvTypeDef  EEPROM_Driver =
+{
+  EEPROM_initialize,
+  EEPROM_status,
+  EEPROM_read,
+#if  _USE_WRITE
+  EEPROM_write,
+#endif  /* _USE_WRITE == 1 */
+#if  _USE_IOCTL == 1
+  EEPROM_ioctl,
+#endif /* _USE_IOCTL == 1 */
+};
+
+/* Private functions ---------------------------------------------------------*/
+
+/**
+  * @brief  Initializes a Drive
+  * @param  pdrv: Physical drive number (0..)
+  * @retval DSTATUS: Operation status
+  */
+DSTATUS EEPROM_initialize (
+	BYTE pdrv           /* Physical drive nmuber to identify the drive */
+)
+{
+  /* USER CODE BEGIN INIT */
+    Stat = STA_NOINIT;
+    return Stat;
+  /* USER CODE END INIT */
+}
+
+/**
+  * @brief  Gets Disk Status
+  * @param  pdrv: Physical drive number (0..)
+  * @retval DSTATUS: Operation status
+  */
+DSTATUS EEPROM_status (
+	BYTE pdrv       /* Physical drive number to identify the drive */
+)
+{
+  /* USER CODE BEGIN STATUS */
+    Stat = STA_NOINIT;
+    return Stat;
+  /* USER CODE END STATUS */
+}
+
+/**
+  * @brief  Reads Sector(s)
+  * @param  pdrv: Physical drive number (0..)
+  * @param  *buff: Data buffer to store read data
+  * @param  sector: Sector address (LBA)
+  * @param  count: Number of sectors to read (1..128)
+  * @retval DRESULT: Operation result
+  */
+DRESULT EEPROM_read (
+	BYTE pdrv,      /* Physical drive nmuber to identify the drive */
+	BYTE *buff,     /* Data buffer to store read data */
+	DWORD sector,   /* Sector address in LBA */
+	UINT count      /* Number of sectors to read */
+)
+{
+  /* USER CODE BEGIN READ */
+    return RES_OK;
+  /* USER CODE END READ */
+}
+
+/**
+  * @brief  Writes Sector(s)
+  * @param  pdrv: Physical drive number (0..)
+  * @param  *buff: Data to be written
+  * @param  sector: Sector address (LBA)
+  * @param  count: Number of sectors to write (1..128)
+  * @retval DRESULT: Operation result
+  */
+#if _USE_WRITE == 1
+DRESULT EEPROM_write (
+	BYTE pdrv,          /* Physical drive nmuber to identify the drive */
+	const BYTE *buff,   /* Data to be written */
+	DWORD sector,       /* Sector address in LBA */
+	UINT count          /* Number of sectors to write */
+)
+{
+  /* USER CODE BEGIN WRITE */
+  /* USER CODE HERE */
+    return RES_OK;
+  /* USER CODE END WRITE */
+}
+#endif /* _USE_WRITE == 1 */
+
+/**
+  * @brief  I/O control operation
+  * @param  pdrv: Physical drive number (0..)
+  * @param  cmd: Control code
+  * @param  *buff: Buffer to send/receive control data
+  * @retval DRESULT: Operation result
+  */
+#if _USE_IOCTL == 1
+DRESULT EEPROM_ioctl (
+	BYTE pdrv,      /* Physical drive nmuber (0..) */
+	BYTE cmd,       /* Control code */
+	void *buff      /* Buffer to send/receive control data */
+)
+{
+  /* USER CODE BEGIN IOCTL */
+    DRESULT res = RES_ERROR;
+    return res;
+  /* USER CODE END IOCTL */
+}
+#endif /* _USE_IOCTL == 1 */
+
Index: ctrl/firmware/Main/CubeMX/FATFS/Target/eeprom_diskio.h
===================================================================
--- ctrl/firmware/Main/CubeMX/FATFS/Target/eeprom_diskio.h	(revision 89)
+++ ctrl/firmware/Main/CubeMX/FATFS/Target/eeprom_diskio.h	(revision 89)
@@ -0,0 +1,43 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+  * @file    user_diskio.h
+  * @brief   This file contains the common defines and functions prototypes for
+  *          the user_diskio driver.
+  ******************************************************************************
+  * @attention
+  *
+  * Copyright (c) 2025 STMicroelectronics.
+  * All rights reserved.
+  *
+  * This software is licensed under terms that can be found in the LICENSE file
+  * in the root directory of this software component.
+  * If no LICENSE file comes with this software, it is provided AS-IS.
+  *
+  ******************************************************************************
+  */
+ /* USER CODE END Header */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __EEPROM_DISKIO_H
+#define __EEPROM_DISKIO_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* USER CODE BEGIN 0 */
+
+/* Includes ------------------------------------------------------------------*/
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+extern Diskio_drvTypeDef  EEPROM_Driver;
+
+/* USER CODE END 0 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __EEPROM_DISKIO_H */
Index: ctrl/firmware/Main/CubeMX/FATFS/Target/ffconf.h
===================================================================
--- ctrl/firmware/Main/CubeMX/FATFS/Target/ffconf.h	(revision 75)
+++ ctrl/firmware/Main/CubeMX/FATFS/Target/ffconf.h	(revision 89)
@@ -156,5 +156,5 @@
 /----------------------------------------------------------------------------*/
 
-#define _VOLUMES    1
+#define _VOLUMES    2
 /* Number of volumes (logical drives) to be used. */
 
