diff --git a/tools/mpremote/mpremote/main.py b/tools/mpremote/mpremote/main.py
index <HASH>..<HASH> 100644
--- a/tools/mpremote/mpremote/main.py
+++ b/tools/mpremote/mpremote/main.py
@@ -268,7 +268,7 @@ def do_filesystem(pyb, args):
     def _list_recursive(files, path):
         if os.path.isdir(path):
             for entry in os.listdir(path):
-                _list_recursive(files, os.path.join(path, entry))
+                _list_recursive(files, "/".join((path, entry)))
         else:
             files.append(os.path.split(path))
 
@@ -289,7 +289,7 @@ def do_filesystem(pyb, args):
                 if d not in known_dirs:
                     pyb.exec_("try:\n uos.mkdir('%s')\nexcept OSError as e:\n print(e)" % d)
                     known_dirs.add(d)
-            pyboard.filesystem_command(pyb, ["cp", os.path.join(dir, file), ":" + dir + "/"])
+            pyboard.filesystem_command(pyb, ["cp", "/".join((dir, file)), ":" + dir + "/"])
     else:
         pyboard.filesystem_command(pyb, args)
     args.clear()
tools/mpremote: Fix "fs cp -r" on Windows.

A backslash in the directory name will end up being passed through to the
device and becoming a backslash in a filename, rather than being
interpreted as directories.  This makes "cp -r" problematic on Windows.
Changing to simply "/",join() fixes this.