Getting NetworkManager/HA IP settings to work properly on a supervised 64 bit Raspberry Pi OS install

Hey y’all! :smiley:

The setup

I’ve got a Raspberry Pi 4 running the latest beta 64 bit version of Raspberry Pi OS Lite taken from the official servers, with HomeAssistant Supervised running on top as per this community guide.

The issue

It works perfectly overall and doesn’t even show the unsupported warning if that matters, but it’s my assumption that NetworkManager conflicts with default RaspiOS settings or something along these lines because the IP address related settings in HA’s UI don’t work, and nmcli shows the eth/wlan interfaces as unavailable.

HA error

21-02-18 16:26:53 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
    resp = await self._request_handler(request)
  File "/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/aiohttp.py", line 123, in sentry_app_handle
    reraise(*_capture_exception(hub))
  File "/usr/local/lib/python3.8/site-packages/sentry_sdk/_compat.py", line 54, in reraise
    raise value
  File "/usr/local/lib/python3.8/site-packages/sentry_sdk/integrations/aiohttp.py", line 113, in sentry_app_handle
    response = await old_handle(self, request)
  File "/usr/local/lib/python3.8/site-packages/aiohttp/web_app.py", line 499, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.8/site-packages/aiohttp/web_middlewares.py", line 118, in impl
    return await handler(request)
  File "/usr/src/supervisor/supervisor/api/security.py", line 134, in system_validation
    return await handler(request)
  File "/usr/src/supervisor/supervisor/api/security.py", line 196, in token_validation
    return await handler(request)
  File "/usr/src/supervisor/supervisor/api/utils.py", line 61, in wrap_api
    answer = await method(api, *args, **kwargs)
  File "/usr/src/supervisor/supervisor/api/network.py", line 218, in interface_update
    await asyncio.shield(self.sys_host.network.apply_changes(interface))
  File "/usr/src/supervisor/supervisor/host/network.py", line 137, in apply_changes
    settings = interface_update_payload(interface)
  File "/usr/src/supervisor/supervisor/dbus/payloads/generate.py", line 60, in interface_update_payload
    return template.render(interface=interface, name=name, uuid=uuid)
  File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 1090, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "/usr/local/lib/python3.8/site-packages/jinja2/_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "<template>", line 83, in top-level template code
  File "/usr/local/lib/python3.8/site-packages/jinja2/environment.py", line 471, in getattr
    return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'None' has no attribute 'mode'

nmcli dev

➜  ~ nmcli dev
DEVICE       TYPE      STATE        CONNECTION
eth0         ethernet  unavailable  --
wlan0        wifi      unavailable  --
docker0      bridge    unmanaged    --
hassio       bridge    unmanaged    --
veth0232513  ethernet  unmanaged    --
[other veth devices removed for brevity]
lo           loopback  unmanaged    --

Extra info

The only network related setting that’s changed from default as far as I’m aware is /etc/wpa_supplicant, which contains the following and was necessary for wifi to work with ssh since I run it headless and with no readily available ethernet cable:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=BR

network={
    [redacted]
}

The files mentioned here look exactly the same bar the uuid as well.

I do realize this is pretty niche and that I’m fully responsible for choosing to do it this way but searching didn’t turn up much I can make sense of so I’d appreciate some pointers if someone’s got any idea how to get it working or has been in a similar spot.

If you’re still with me, thanks a lot for reading! :slight_smile:

1 Like

Exactly the same setup on 64-bit debian-based Raspberry Pi OS Lite on rpi4b. Everything working except that eth0 and wlan0 are unavailable in NetworkManager. I wouldn’t care except some add ons rely on NetworkManager handling them.

Yup, haven’t personally needed any add-on like that so ended up just sucking it up and leaving it as it was. Will make sure to update this if I ever stumble upon a fix or any info.