diff --git a/py/makeqstrdata.py b/py/makeqstrdata.py
index f231a5d8617f6ed0a105c44e6c94494850fb0e55..6ae229c734ceb1f1cb0a3bc5fef188469a07b005 100644
--- a/py/makeqstrdata.py
+++ b/py/makeqstrdata.py
@@ -10,6 +10,8 @@ elif platform.python_version_tuple()[0] == '3':
 
 # add some custom names to map characters that aren't in HTML
 codepoint2name[ord('.')] = 'dot'
+codepoint2name[ord(':')] = 'colon'
+codepoint2name[ord('/')] = 'slash'
 
 # this must match the equivalent function in qstr.c
 def compute_hash(qstr):
diff --git a/stm/main.c b/stm/main.c
index dabbaf1b0556b65e0f541d15bc1d6d1c5d749a1a..33af85351e7716457b6ea4c3ebe6a3445b95e4b8 100644
--- a/stm/main.c
+++ b/stm/main.c
@@ -411,6 +411,11 @@ soft_reset:
     // Micro Python init
     qstr_init();
     rt_init();
+    mp_obj_t def_path[3];
+    def_path[0] = MP_OBJ_NEW_QSTR(MP_QSTR_0_colon__slash_);
+    def_path[1] = MP_OBJ_NEW_QSTR(MP_QSTR_0_colon__slash_src);
+    def_path[2] = MP_OBJ_NEW_QSTR(MP_QSTR_0_colon__slash_lib);
+    sys_path = mp_obj_new_list(3, def_path);
 
 #if MICROPY_HW_HAS_LCD
     // LCD init (just creates class, init hardware by calling LCD())
diff --git a/stm/qstrdefsport.h b/stm/qstrdefsport.h
index cc2041f824737580b46c84d7b9b011abbc6a0e79..02208875d37ea97a26d1fe9d7199f85cb5167e48 100644
--- a/stm/qstrdefsport.h
+++ b/stm/qstrdefsport.h
@@ -30,3 +30,7 @@ Q(Usart)
 Q(ADC)
 Q(open)
 Q(File)
+// Entries for sys.path
+Q(0:/)
+Q(0:/src)
+Q(0:/lib)