Updating from the OctoPi image fails, possibly related to this thread?

What is the problem?

I clicked on the update button in the Web UI and the update fails. See below.

Downloading https://www.piwheels.org/simple/psutil/psutil-6.1.1-cp36-abi3-linux_armv7l.whl (281 kB)
ERROR: Exception:
Traceback (most recent call last):
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 437, in _error_catcher
yield
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 560, in read
data = self._fp_read(amt) if not fp_closed else b""
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 526, in _fp_read
return self._fp.read(amt) if amt is not None else self._fp.read()
File "/usr/lib/python3.9/http/client.py", line 458, in read
n = self.readinto(b)
File "/usr/lib/python3.9/http/client.py", line 502, in readinto
n = self.fp.readinto(b)
File "/usr/lib/python3.9/socket.py", line 704, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
return self.read(nbytes, buffer)
File "/usr/lib/python3.9/ssl.py", line 1099, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/cli/base_command.py", line 160, in exc_logging_wrapper
status = run_func(*args)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 247, in wrapper
return func(self, options, args)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/commands/install.py", line 400, in run
requirement_set = resolver.resolve(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 92, in resolve
result = self._result = resolver.resolve(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 481, in resolve
state = resolution.resolve(requirements, max_rounds=max_rounds)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 373, in resolve
failure_causes = self._attempt_to_pin_criterion(name)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 213, in _attempt_to_pin_criterion
criteria = self._get_updated_criteria(candidate)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 204, in _get_updated_criteria
self._add_to_criteria(criteria, requirement, parent=candidate)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py", line 172, in _add_to_criteria
if not criterion.candidates:
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
return bool(self._sequence)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
return any(self)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
return (c for c in iterator if id(c) not in self._incompatible_ids)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
candidate = func()
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_candidate_from_link
self._link_candidate_cache[link] = LinkCandidate(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 297, in __init__
super().__init__(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 162, in __init__
self.dist = self._prepare()
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 231, in _prepare
dist = self._prepare_distribution()
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 308, in _prepare_distribution
return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 491, in prepare_linked_requirement
return self._prepare_linked_requirement(req, parallel_builds)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 536, in _prepare_linked_requirement
local_file = unpack_url(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 166, in unpack_url
file = get_http_url(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/operations/prepare.py", line 107, in get_http_url
from_path, content_type = download(link, temp_dir.path)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/network/download.py", line 147, in __call__
for chunk in chunks:
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py", line 53, in _rich_progress_bar
for chunk in iterable:
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_internal/network/utils.py", line 63, in response_chunks
for chunk in response.raw.stream(
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 621, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 586, in read
raise IncompleteRead(self._fp_bytes_read, self.length_remaining)
File "/usr/lib/python3.9/contextlib.py", line 135, in __exit__
self.gen.throw(type, value, traceback)
File "/home/pi/oprint/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py", line 442, in _error_catcher
raise ReadTimeoutError(self._pool, None, "Read timed out.")
pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out.
━━━━                                     30.7/281.5 kB 2.5 kB/s eta 0:01:42

The update did not finish successfully. Please consult <code>octoprint.log</code> and <code>plugin_softwareupdate_console.log</code> for details.

What did you already try to solve it?

Trying again, re-enabling the announcement plugin, and trying a 4th time.

Systeminfo Bundle

You can download this in OctoPrint's System Information dialog ... no bundle, no support!)

You should update these offensive instructions to at least include the steps to procure the System Info bundle that you want. I don't see a System Info section in the settings menu. Regardless, it's the current OctoPi Image that I'm working from. I have not yet connected a printer.

I might be having a similar issue as this forum thread: Pip update to 22 fails with read error

I didn't know what a PIP installation was, but my log stopped when it was futzing with PiWheels, so I looked that up. Their website says it's related to PIPs, and that they are something to do with updates on ARM and Raspberry Pis specifically, so I think my issue is related to the other thread. I don't know what's going on under the hood though, so I'm not sure where to go next, since the previous thread says there was a cloud or server side issue.

I can go to their webpage, so I don't think they are blocking my IP. The Pi has Internet access, and can see that updates are available.

I'm not sure if this is a server-side issue, the OctoPi image is too old, or the latest update is too new.

I have worked with embedded devices professionally for many years, and while I don't have much cred on the forum, have been doing 3d printing for a while too. I do development and sysadmin stuff.

this button?