Issue Moving/Calibrating OT-2

Within the Opentrons app, During Step 1: Deck Calibration, the OT-2 throws an errorCode: 4000 (ExceptionGroup) error.

Based on the PLR source, this occurs because the mandatory homing sequence during the startup routine fails. Consequently, all requests are blocked, and the gantry is rendered immobile. Notably, the robot’s lights and server boot up normally, and while the motors initially engage to home but do not move, the server seems to prevent any action from proceeding. Included is a PLR trace of the issue origin as well as a screenshot of the in-app issue.

2026-06-24 09:48:31 [INFO] Connecting to Opentrons OT-2 at [IP_ADDRESS]...
Traceback (most recent call last):
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\ot_api\requestor.py", line 23, in make_request
    with urllib.request.urlopen(req) as resp:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\urllib\request.py", line 525, in open
    response = meth(req, response)
               ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\urllib\request.py", line 634, in http_response
    response = self.parent.error(
               ^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\urllib\request.py", line 563, in error
    return self._call_chain(*args)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\urllib\request.py", line 643, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 500: Internal Server Error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\[USER]\[PROJECT]\src\automation\[SCRIPT].py", line 320, in <module>
    asyncio.run(main())
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\asyncio\runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\asyncio\base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "c:\Users\[USER]\[PROJECT]\src\automation\[SCRIPT].py", line 268, in main
    await lh.setup()
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\pylabrobot\liquid_handling\liquid_handler.py", line 167, in setup
    await super().setup(**backend_kwargs)
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\pylabrobot\machines\machine.py", line 64, in setup
    await self.backend.setup(**backend_kwargs)
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\pylabrobot\liquid_handling\backends\opentrons_backend.py", line 113, in setup
    await self.home()
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\pylabrobot\liquid_handling\backends\opentrons_backend.py", line 566, in home
    ot_api.health.home()
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\ot_api\health.py", line 9, in home
    return post("/robot/home", data={"target": "robot"})
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\ot_api\requestor.py", line 38, in post
    return make_request(urllib.request.Request(get_url(path), headers=req_headers, data=body, method="POST"))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\[USER]\anaconda3\envs\[ENV]\Lib\site-packages\ot_api\requestor.py", line 26, in make_request
    raise Exception(e.read().decode())
Exception: {"message":"ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)","errorCode":"4000"}

Any inisght or ideas on this issue would be greatly appreciated!

Hey, did you find a solution here? If not, do you want me to connect you to our support team?