belay: Can't connect ESP32
I’m testing out an ESP32 (yesterday I worked on a RPi Pico), and I am getting errors connecting it with Belay. It seemingly fails in Pyboard
, however if I connect thorugh Pyboard
directly, it works.
pyb = pyboard.Pyboard('/dev/cu.SLAB_USBtoUART', 115200)
# pyb = belay.Device('/dev/cu.SLAB_USBtoUART', 115200)
pyb.close()
# Works without errors
# pyb = pyboard.Pyboard('/dev/cu.SLAB_USBtoUART', 115200)
pyb = belay.Device('/dev/cu.SLAB_USBtoUART', 115200)
pyb.close()
# Produces an error >>>
---------------------------------------------------------------------------
PyboardError Traceback (most recent call last)
Cell In [24], line 2
1 # pyb = pyboard.Pyboard('/dev/cu.SLAB_USBtoUART', 115200)
----> 2 pyb = belay.Device('/dev/cu.SLAB_USBtoUART', 115200)
4 pyb.close()
6 # poll = select.poll()
7 # poll.register(pyb.serial, select.POLLIN)
File /usr/local/anaconda3/envs/buxr/lib/python3.10/site-packages/belay/device.py:464, in Device.__init__(self, startup, attempts, *args, **kwargs)
461 self.attempts = attempts
462 self._cmd_history = []
--> 464 self._connect_to_board(**self._board_kwargs)
466 self.task = _TaskExecuter(self)
467 self.thread = _ThreadExecuter(self)
File /usr/local/anaconda3/envs/buxr/lib/python3.10/site-packages/belay/device.py:523, in Device._connect_to_board(self, **kwargs)
521 else:
522 soft_reset = True
--> 523 self._board.enter_raw_repl(soft_reset=soft_reset)
File /usr/local/anaconda3/envs/buxr/lib/python3.10/site-packages/belay/pyboard.py:382, in Pyboard.enter_raw_repl(self, soft_reset)
380 if not data.endswith(b"raw REPL; CTRL-B to exit\r\n>"):
381 print(data)
--> 382 raise PyboardError("could not enter raw repl")
...
386 # Waiting for "soft reboot" independently to "raw REPL" (done below)
387 # allows boot.py to print, which will show up after "soft reboot"
388 # and before "raw REPL".
PyboardError: could not enter raw repl
Before the error it seems to print:
b'MicroPython v1.19.1 on 2022-06-18; ESP32 module with ESP32\r\nType "help()" for more information.\r\n>>> '
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 18 (18 by maintainers)
I think I did try with
>>>
earlier, and it didn’t help (but let me give it another try in the morning, as I’m not 100% where I placed it).Figured it out! It is a speed problem - adding
time.sleep(1)
after thewhile
loop solves the issue:0.5 seconds is not enough - 1 second does the trick. Apparently I wasn’t the only one who’s had the issue, see the same issue with ampy: https://github.com/scientifichackers/ampy/issues/19#issuecomment-317126363. (Took me 4 hours, but worth it I hope)😅