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!