mpremote cp -r command fails with "mpremote: cp: -r not specified; omitting directory"
Port, board and/or hardware
ESP32 on a custom designed ESP32-s3 board
MicroPython version
MicroPython v1.25.0 on 2025-04-15; Generic ESP32S3 module with ESP32S3
Reproduction
- install mpremote using the instructions here.
- run the command
mpremote connect /dev/cu.usbserial-A5069RR4 cp -r configuration/ :configuration/to recursively copy theconfigurationdirectory to the board.
Expected behaviour
I expected the command to recursively copy all files within the configuration directory over to the board to a folder located at /configuration, and to create that folder if it doesn't exist. This expectation comes from the documentation on this page.
mpremote cp -r utils/ :utils/ + soft-reset repl
Same as above, but update the entire utils directory first.
Observed behaviour
The tool returns the following error:
$ mpremote connect /dev/cu.usbserial-A5069RR4 cp -r configuration/ :configuration/
cp configuration/ :configuration/
mpremote: cp: -r not specified; omitting directory
Additional Information
Running on a M1 MacBook Pro, macOS Sequoia 15.3.2.
Using mpremote 1.25.0.
Code of Conduct
Yes, I agree
tools/mpremote: Fix "fs cp -r" on Windows.
Currently when using mpremote fs cp -r _manifest : on windows, it does not correctly handle the \ path separator, resulting in things like
cp _manifest\config_def.mpy :_manifest/_manifest\art.mpy
which gets even worse on-device:
os.listdir("/_manifest")
['_manifest\x07rt.mpy', ...]
Changing to a simply '/',join() appears to fix this problem cleanly.