diff --git a/pycardium/modules/os.c b/pycardium/modules/os.c
index e5c625ef4f2dde5e138a08a28591935cb7fc0f97..99af67cb07a04af5dfe277a7b48f775c81c3ee36 100644
--- a/pycardium/modules/os.c
+++ b/pycardium/modules/os.c
@@ -89,12 +89,39 @@ static mp_obj_t mp_os_unlink(mp_obj_t py_path)
 }
 static MP_DEFINE_CONST_FUN_OBJ_1(unlink_obj, mp_os_unlink);
 
+static mp_obj_t mp_os_mkdir(mp_obj_t py_path)
+{
+	const char *path = mp_obj_str_get_str(py_path);
+	int rc           = epic_file_mkdir(path);
+
+	if (rc < 0) {
+		mp_raise_OSError(-rc);
+	}
+	return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_1(mkdir_obj, mp_os_mkdir);
+
+static mp_obj_t mp_os_rename(mp_obj_t py_oldp, mp_obj_t py_newp)
+{
+	const char *oldp = mp_obj_str_get_str(py_oldp);
+	const char *newp = mp_obj_str_get_str(py_newp);
+	int rc           = epic_file_rename(oldp, newp);
+
+	if (rc < 0) {
+		mp_raise_OSError(-rc);
+	}
+	return mp_const_none;
+}
+static MP_DEFINE_CONST_FUN_OBJ_2(rename_obj, mp_os_rename);
+
 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) },
 	{ MP_ROM_QSTR(MP_QSTR_exec), MP_ROM_PTR(&exec_obj) },
 	{ MP_ROM_QSTR(MP_QSTR_listdir), MP_ROM_PTR(&listdir_obj) },
 	{ 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) },
 };
 
 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 49ad16f40b8dd7ae88e4a756be3270739b7625d8..4315a839ccd280fb41cd24b2d258d901435a3652 100644
--- a/pycardium/modules/qstrdefs.h
+++ b/pycardium/modules/qstrdefs.h
@@ -100,6 +100,8 @@ Q(exit)
 Q(exec)
 Q(listdir)
 Q(unlink)
+Q(mkdir)
+Q(rename)
 
 /* gpio */
 Q(gpio)