diff --git a/epicardium/epicardium.h b/epicardium/epicardium.h
index 87b24e8975dff763119aa4ffe6ce336e1cb75212..69899aaeb9b7e52a848b61b3e9451dd75f14708e 100644
--- a/epicardium/epicardium.h
+++ b/epicardium/epicardium.h
@@ -32,6 +32,7 @@ typedef _Bool bool;
 #define API_SYSTEM_EXIT             0x1
 #define API_SYSTEM_EXEC             0x2
 #define API_SYSTEM_RESET            0x3
+#define API_BATTERY_VOLTAGE         0x4
 
 #define API_INTERRUPT_ENABLE        0xA
 #define API_INTERRUPT_DISABLE       0xB
@@ -210,6 +211,16 @@ API(API_SYSTEM_EXEC, int __epic_exec(char *name));
  */
 API(API_SYSTEM_RESET, void epic_system_reset(void));
 
+/**
+ * Battery Voltage
+ * ===============
+ */
+
+/**
+ * Read the current battery voltage.
+ */
+API(API_BATTERY_VOLTAGE, int epic_read_battery_voltage(float *result));
+
 /**
  * UART/Serial Interface
  * =====================
diff --git a/epicardium/modules/pmic.c b/epicardium/modules/pmic.c
index 6822f02d21928b4a897a085b4fff65a01bd935cc..ef97392cb887b1ce43cbe948b79ec07286eccf5a 100644
--- a/epicardium/modules/pmic.c
+++ b/epicardium/modules/pmic.c
@@ -180,6 +180,14 @@ static void pmic_check_battery()
 	 */
 }
 
+/*
+ * API-call for battery voltage
+ */
+int epic_read_battery_voltage(float *result)
+{
+	return pmic_read_amux(PMIC_AMUX_BATT_U, result);
+}
+
 static StaticTimer_t pmic_timer_data;
 static void vPmicTimerCb(TimerHandle_t xTimer)
 {
diff --git a/pycardium/modules/os.c b/pycardium/modules/os.c
index 385cc9de659270c1d21764f3c956a2f3da9ec16a..c017e417e75a0dea115af340bb1b5a2b85c672e9 100644
--- a/pycardium/modules/os.c
+++ b/pycardium/modules/os.c
@@ -123,6 +123,18 @@ static mp_obj_t mp_os_rename(mp_obj_t py_oldp, mp_obj_t py_newp)
 }
 static MP_DEFINE_CONST_FUN_OBJ_2(rename_obj, mp_os_rename);
 
+static mp_obj_t mp_os_read_battery()
+{
+	float result;
+	int res = epic_read_battery_voltage(&result);
+	if (res < 0) {
+		mp_raise_OSError(-res);
+	}
+
+	return mp_obj_new_float(result);
+}
+static MP_DEFINE_CONST_FUN_OBJ_0(read_battery_obj, mp_os_read_battery);
+
 static const mp_rom_map_elem_t os_module_globals_table[] = {
 	{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_os) },
 	{ MP_ROM_QSTR(MP_QSTR_exit), MP_ROM_PTR(&exit_obj) },
@@ -132,6 +144,7 @@ static const mp_rom_map_elem_t os_module_globals_table[] = {
 	{ MP_ROM_QSTR(MP_QSTR_unlink), MP_ROM_PTR(&unlink_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mkdir_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_rename), MP_ROM_PTR(&rename_obj) },
+	{ MP_ROM_QSTR(MP_QSTR_read_battery), MP_ROM_PTR(&read_battery_obj) },
 };
 
 static MP_DEFINE_CONST_DICT(os_module_globals, os_module_globals_table);
diff --git a/pycardium/modules/qstrdefs.h b/pycardium/modules/qstrdefs.h
index acf598f1b82c81e31722934c881d7d1a3217d9b3..f78afd25ed5aba9b38ef3b29d845ef5d573e47a6 100644
--- a/pycardium/modules/qstrdefs.h
+++ b/pycardium/modules/qstrdefs.h
@@ -105,6 +105,7 @@ Q(listdir)
 Q(unlink)
 Q(mkdir)
 Q(rename)
+Q(read_battery)
 
 /* gpio */
 Q(gpio)