Feedback #2

Closed
opened 2026-08-18 12:03:59 +01:00 by deutscs · 37 comments

Firstly thank you for doing this work - lucky that i found it at right time. I have several AI pumps etc none of which appear. However since today's release I can now see my MXM (which i don't use anymore but is still plugged in). I have 1 Axis 20, 2 Orbit 20, and 1 Blade Freshwater. I have 1 "Failed Setup" - no idea which of above that might be - and why the others aren't being seen - I can see several in the Bluetooth part of HA. Is there anything I can give you that might help?

Firstly thank you for doing this work - lucky that i found it at right time. I have several AI pumps etc none of which appear. However since today's release I can now see my MXM (which i don't use anymore but is still plugged in). I have 1 Axis 20, 2 Orbit 20, and 1 Blade Freshwater. I have 1 "Failed Setup" - no idea which of above that might be - and why the others aren't being seen - I can see several in the Bluetooth part of HA. Is there anything I can give you that might help?
Owner

thanks for the feedback!

  • did you get a "new device found" card?
  • have you added anything (any device) in the integration? if yes, remove everything
  • enable debug logging on the integration and then reboot homeassistant
  • let it sit for 5 minutes or something after the reboot so it has time to find all the devices (can be slow if the BT adapter is far away)
  • if a new "Tank" shows up after the 5 minute mark, try to add it
  • end the debug log and download it, then attach it here.

Can you also check the BT signal level (RSSI) on the Bluetooth page? Example:
image

thanks for the feedback! - did you get a "new device found" card? - have you added anything (any device) in the integration? if yes, remove everything - enable debug logging on the integration and then reboot homeassistant - let it sit for 5 minutes or something after the reboot so it has time to find all the devices (can be slow if the BT adapter is far away) - if a new "Tank" shows up after the 5 minute mark, try to add it - end the debug log and download it, then attach it here. Can you also check the BT signal level (RSSI) on the Bluetooth page? Example: ![image](/attachments/e68f6fe8-f333-4bf2-bebe-3649a7065643)
Author

Pic 1 shows current screen. Previous version I had 2 failed setup. Now i see the MXM.
Pic 2 shows the log - I had debug turned on already
Pic 3 is my Blutooth screen

Outside of the Fresh water blade - all other devices are in my marine Cabinet. (including the MXM)

Pic 1 shows current screen. Previous version I had 2 failed setup. Now i see the MXM. Pic 2 shows the log - I had debug turned on already Pic 3 is my Blutooth screen Outside of the Fresh water blade - all other devices are in my marine Cabinet. (including the MXM)
Author

and deleted the two items found (MXM and failed). Redownloaded software. Rebooted.

I can now see Discovered the MXM as expected, and the BladeFreshwater.Clicked on Add for them both.

Blade connects this time, MXM is less happy, and doesn't seem to want to work (failed setup).

I wonder if this is a poor blutooth connection

and deleted the two items found (MXM and failed). Redownloaded software. Rebooted. I can now see Discovered the MXM as expected, and the BladeFreshwater.Clicked on Add for them both. Blade connects this time, MXM is less happy, and doesn't seem to want to work (failed setup). I wonder if this is a poor blutooth connection
Owner

when you have debug logging on the integration enabled you should see something like this:
image

When you press "Disable", it will download the log file.

Have you deleted the devices there?

when you have debug logging on the integration enabled you should see something like this: ![image](/attachments/7e6f4b83-4383-432d-aae7-e0322f0d8bd3) When you press "Disable", it will download the log file. Have you deleted the devices there?
Owner

@deutscs wrote in #2 (comment):

and deleted the two items found (MXM and failed). Redownloaded software. Rebooted.

I can now see Discovered the MXM as expected, and the BladeFreshwater.Clicked on Add for them both.

Blade connects this time, MXM is less happy, and doesn't seem to want to work (failed setup).

I wonder if this is a poor blutooth connection

signal is good enough but it might be (the debug logs will tell)

MXM is something i really haven't tested (i only have tested this on ecotech HW). there were some codepaths that i haven't implemented that can be related to it, get me those debug logs and the diagnostic info from any device on the integration and i'll try to make it work...

@deutscs wrote in https://code.r3pek.org/r3pek/ha-mobius/issues/2#issuecomment-5: > and deleted the two items found (MXM and failed). Redownloaded software. Rebooted. > > I can now see Discovered the MXM as expected, and the BladeFreshwater.Clicked on Add for them both. > > Blade connects this time, MXM is less happy, and doesn't seem to want to work (failed setup). > > I wonder if this is a poor blutooth connection signal is good enough but it might be (the debug logs will tell) MXM is something i really haven't tested (i only have tested this on ecotech HW). there were some codepaths that i haven't implemented that can be related to it, get me those debug logs and the diagnostic info from any device on the integration and i'll try to make it work...
Author

ok - doing the debug bit now (deleted devices again as instructed) and rebooted. PS I don't care about MXM. Will disappear when I disconnect my Neptune. Blade connected fine as before. MXM failed.

Added the debug file.

MXM is now working!!! weird :)

But still missing all the other devices....

ok - doing the debug bit now (deleted devices again as instructed) and rebooted. PS I don't care about MXM. Will disappear when I disconnect my Neptune. Blade connected fine as before. MXM failed. Added the debug file. MXM is now working!!! weird :) But still missing all the other devices....
Owner

sure you added the correct file? that one is mostly empty 😅

sure you added the correct file? that one is mostly empty 😅
Author

I am not at home - so added complication. New file is right I hope

I am not at home - so added complication. New file is right I hope
Owner

good, now i'm only missing the Diagnostics. with that I should be able to understand what's happening...
image

good, now i'm only missing the Diagnostics. with that I should be able to understand what's happening... ![image](/attachments/b8a58b3e-f2eb-4139-bb3c-c942893b56e0)
Owner

well... yea, it might actually be that BT connection isn't stable enough:

2026-08-18 12:47:25.235 DEBUG (MainThread) [custom_components.mobius.coordinator] Tank discovery failed for 829Q7CXXXXXXXX: mobius-device - 00:60:37:XX:XX:XX: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address 00:60:37:XX:XX:XX was found: in connectable history; seen by 3 scanner(s) but none with a connectable path; 6 scanner(s) registered, 6 scanning, 1 connectable; shellypmminig3-543204xxxxxx (54:32:04:XX:XX:XX) (connectable=False, rssi=-88, failures=0, in_progress=0); shellyplus1pm-a0a3b3xxxxxx (A0:A3:B3:XX:XX:XX) (connectable=False, rssi=-90, failures=0, in_progress=0); 1L @ Main Bedroom (B0:81:84:XX:XX:XX) (connectable=False, rssi=-94, failures=0, in_progress=0); last advertisement 1s ago via hci0 (54:F2:9F:AXX:XX:XX): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device
2026-08-18 12:47:25.235 DEBUG (MainThread) [custom_components.mobius.config_flow] Mesh scan for 829Q7CXXXXXXXX: unreachable

You have some BT adapters that can see the devices, but aren't able to connect to it. you might just be luckier if you add one close to the tank or move one to be closer...
From the logs, you have the BladeFreshwater in one tank and the others probably on another tank (Mobius app speaking). It did actually connect to the BladeFreshwater, but the others it couldn't connect to, that's why they don't show up.

They might actually work from time to time, but right now, the signal is way too weak.

well... yea, it might actually be that BT connection isn't stable enough: ``` 2026-08-18 12:47:25.235 DEBUG (MainThread) [custom_components.mobius.coordinator] Tank discovery failed for 829Q7CXXXXXXXX: mobius-device - 00:60:37:XX:XX:XX: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address 00:60:37:XX:XX:XX was found: in connectable history; seen by 3 scanner(s) but none with a connectable path; 6 scanner(s) registered, 6 scanning, 1 connectable; shellypmminig3-543204xxxxxx (54:32:04:XX:XX:XX) (connectable=False, rssi=-88, failures=0, in_progress=0); shellyplus1pm-a0a3b3xxxxxx (A0:A3:B3:XX:XX:XX) (connectable=False, rssi=-90, failures=0, in_progress=0); 1L @ Main Bedroom (B0:81:84:XX:XX:XX) (connectable=False, rssi=-94, failures=0, in_progress=0); last advertisement 1s ago via hci0 (54:F2:9F:AXX:XX:XX): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device 2026-08-18 12:47:25.235 DEBUG (MainThread) [custom_components.mobius.config_flow] Mesh scan for 829Q7CXXXXXXXX: unreachable ``` You have some BT adapters that can see the devices, but aren't able to connect to it. you might just be luckier if you add one close to the tank or move one to be closer... From the logs, you have the BladeFreshwater in one tank and the others probably on another tank (Mobius app speaking). It did actually connect to the BladeFreshwater, but the others it couldn't connect to, that's why they don't show up. They might actually work from time to time, but right now, the signal is way too weak.
Author

ok - when i get home I have a USB Bluetooth adapter. Will try to plug that in close to tank - and see what happens. I will keep you posted.

ok - when i get home I have a USB Bluetooth adapter. Will try to plug that in close to tank - and see what happens. I will keep you posted.
Author

Hello - just to keep you in the picture. While I plugged in a Shelley Bluetooth USB it made no difference. Claude (AI) thinks it is only my HA Server that has the ability to connect and that is in a different room - hence issues. It suggested I ordered a M5Stack Official ATOMS3 Lite ESP32S3 Dev Kit so I can have a "proper" active bluetooth proxy. This should sort the connection problem - for MXM anyway. Whether it identifies the 3 missing AI pumps remains to be seen. Arrives tomorrow - will keep you informed.

Hello - just to keep you in the picture. While I plugged in a Shelley Bluetooth USB it made no difference. Claude (AI) thinks it is only my HA Server that has the ability to connect and that is in a different room - hence issues. It suggested I ordered a M5Stack Official ATOMS3 Lite ESP32S3 Dev Kit so I can have a "proper" active bluetooth proxy. This should sort the connection problem - for MXM anyway. Whether it identifies the 3 missing AI pumps remains to be seen. Arrives tomorrow - will keep you informed.
Owner

Yeah. I got some cheap ESP32 and installed ESPHome with bluetooth_proxy on one of them to get good connection near the tank.

I'll keep this one open until you sort that out so that we can debug further if/when you get a new BT device near the tank. Meanwhile, I'll check if I'm missing something for the AI pumps. Can you show me your tank setup on the mobius app (devices per tank)?

Yeah. I got some cheap ESP32 and installed ESPHome with bluetooth_proxy on one of them to get good connection near the tank. I'll keep this one open until you sort that out so that we can debug further if/when you get a new BT device near the tank. Meanwhile, I'll check if I'm missing something for the AI pumps. Can you show me your tank setup on the mobius app (devices per tank)?
Author

here you go. I can see the Vectra S2. I dusted it off to see if I could see it. Not installed in tank - in same room as server.

here you go. I can see the Vectra S2. I dusted it off to see if I could see it. Not installed in tank - in same room as server.
Owner

ok so 1 tank with:

  • 2x Orbit 20
  • 1x Axis 20
  • 1x Vectra S2

another tank just with the MXM.

Is that correct?

(the integration should see the vectra as part of the tank, even if it doesn't get any information from it)

ok so 1 tank with: - 2x Orbit 20 - 1x Axis 20 - 1x Vectra S2 another tank just with the MXM. Is that correct? (the integration should see the vectra as part of the tank, even if it doesn't get any information from it)
Author

MXM is also on that tank but only shows on devices rather than dashboard. (I dont really care about MXM - it isnt used anymore - I just hadnt turned it off and to be honest if it was I would be managing the pumps via the Neptune Apex App). The other tank is a Tropical Tank and has the Blade.

MXM is also on that tank but only shows on devices rather than dashboard. (I dont really care about MXM - it isnt used anymore - I just hadnt turned it off and to be honest if it was I would be managing the pumps via the Neptune Apex App). The other tank is a Tropical Tank and has the Blade.
Author

ok - good afternoon. So new BluTooth Proxy is up and running. The MXM is now picked up and (as much as it only operates as a Gateway into Neptunes Apex system) appears functional. Nothing else is picked though. So it cant seem to see / identify AI Orbit 20s or Axis 20s. Let me know if you would like any more information from me.

ok - good afternoon. So new BluTooth Proxy is up and running. The MXM is now picked up and (as much as it only operates as a Gateway into Neptunes Apex system) appears functional. Nothing else is picked though. So it cant seem to see / identify AI Orbit 20s or Axis 20s. Let me know if you would like any more information from me.
Owner

if you had anything setup before, delete every device leaving the integration empty and then reboot homeassistant. it should pick up 2 tanks automatically after that.
BT has some quircks that I tried to mitigate but sometimes it still missbehave 🤷‍♂️

if you had anything setup before, delete every device leaving the integration empty and then reboot homeassistant. it should pick up 2 tanks automatically after that. BT has some quircks that I tried to mitigate but sometimes it still missbehave 🤷‍♂️
Author

Right - things are looking more positive. Will report back shortly

Right - things are looking more positive. Will report back shortly
Author

ok - so after a few reboots, I think things are ok. It was losing the connection after 30 seconds or so - but thats seems to have stopped now - attributes were just coming up as unknown. So on basis that this carries on working - it looks good. 1 Question - how is estimated flow being done - are you calculating it or is it part of data from pump. Axis 20 is almost certainly wrong.

ok - so after a few reboots, I think things are ok. It was losing the connection after 30 seconds or so - but thats seems to have stopped now - attributes were just coming up as unknown. So on basis that this carries on working - it looks good. 1 Question - how is estimated flow being done - are you calculating it or is it part of data from pump. Axis 20 is almost certainly wrong.
Owner

If it keeps going to unknown, just enable debug log for 10/15 minutes and attach it again. The values are fetched from the devices every 30s.
Flow is from the pump. I verified the values again mine (ecotech), but AI might use another value. A screenshot of both the value on Hass and the value mobius shows would be helpful there...

If it keeps going to unknown, just enable debug log for 10/15 minutes and attach it again. The values are fetched from the devices every 30s. Flow is from the pump. I verified the values again mine (ecotech), but AI might use another value. A screenshot of both the value on Hass and the value mobius shows would be helpful there...
Author

You can clearly see why it has to be wrong!!!

Out of interest is the 30sec hard coded? or is there potential to change it? The flow pumps (Orbits) are changing all the time

PS Mobius App doesn't show flow rate - just %. (As far as I can see)

You can clearly see why it has to be wrong!!! Out of interest is the 30sec hard coded? or is there potential to change it? The flow pumps (Orbits) are changing all the time PS Mobius App doesn't show flow rate - just %. (As far as I can see)
Owner

Yeah... Definitely looks wrong 😅

Right now it's hard coded. I plan to make it configurable per-tank later.

Hummmm that might be a clue that we can't trust those values. I'll dig into it.

Yeah... Definitely looks wrong 😅 Right now it's hard coded. I plan to make it configurable per-tank later. Hummmm that might be a clue that we can't trust those values. I'll dig into it.
Owner

Do the values change every 30s ? (motor speed and estimated flow) if they do, they actually report something, just need to understand what

Do the values change every 30s ? (motor speed and estimated flow) if they do, they actually report something, just need to understand what
Author

Yes - it does appear to as the graph is showing min of 1% and max of 60% - which is what it should be. However you can see it has gone "Unavailable". Other pumps are ok though

Yes - it does appear to as the graph is showing min of 1% and max of 60% - which is what it should be. However you can see it has gone "Unavailable". Other pumps are ok though
Owner

Yeah, the graphs are the important thing IMO. Instant values aren't always reliable. For example, I sometimes get 11k L/h as flow with a motor speed of 0% on my vortechs. 🤷‍♂️
To see the why that unavailable happens just with the debug log.

Yeah, the graphs are the important thing IMO. Instant values aren't always reliable. For example, I sometimes get 11k L/h as flow with a motor speed of 0% on my vortechs. 🤷‍♂️ To see the why that unavailable happens just with the debug log.
Author

This error originated from a custom integration.

Logger: custom_components.mobius.gateway_registry
Source: custom_components/mobius/gateway_registry.py:392
Integration: Mobius (documentation, issues)
First occurred: 17:20:47 (7 occurrences)
Last logged: 17:33:54

Gateway '7W4300215BRWD8' for pan_id 0xf426 failed 3 consecutive times; promoted '8W7900069BRBD4'
Gateway '8W7900069BRBD4' for pan_id 0xf426 failed to relay to '8W7900069BRBD4' 3 consecutive times; promoted 'A0770012F5RBB1'
Gateway 'A0770012F5RBB1' for pan_id 0xf426 failed to relay to '8B770000EDRBC5' 3 consecutive times; promoted '7W4300215BRWD8'
Gateway '7W4300215BRWD8' for pan_id 0xf426 failed to relay to '8W7900069BRBD4' 3 consecutive times; promoted '8B770000EDRBC5'
Gateway '8B770000EDRBC5' for pan_id 0xf426 failed 3 consecutive times; promoted '8W7900069BRBD4'
This error originated from a custom integration. Logger: custom_components.mobius.gateway_registry Source: custom_components/mobius/gateway_registry.py:392 Integration: Mobius (documentation, issues) First occurred: 17:20:47 (7 occurrences) Last logged: 17:33:54 ``` Gateway '7W4300215BRWD8' for pan_id 0xf426 failed 3 consecutive times; promoted '8W7900069BRBD4' Gateway '8W7900069BRBD4' for pan_id 0xf426 failed to relay to '8W7900069BRBD4' 3 consecutive times; promoted 'A0770012F5RBB1' Gateway 'A0770012F5RBB1' for pan_id 0xf426 failed to relay to '8B770000EDRBC5' 3 consecutive times; promoted '7W4300215BRWD8' Gateway '7W4300215BRWD8' for pan_id 0xf426 failed to relay to '8W7900069BRBD4' 3 consecutive times; promoted '8B770000EDRBC5' Gateway '8B770000EDRBC5' for pan_id 0xf426 failed 3 consecutive times; promoted '8W7900069BRBD4' ```
Author

This error originated from a custom integration.

Logger: custom_components.mobius.coordinator
Source: helpers/update_coordinator.py:506
Integration: Mobius (documentation, issues)
First occurred: 17:19:34 (5 occurrences)
Last logged: 17:28:53

Error fetching mobius_7W4300215BRWD8 data: Error communicating with 7W4300215BRWD8: Error connecting to 7W4300215BRWD8: mobius-device - D5:86:67:12:A7:41: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address D5:86:67:12:A7:41 was found: in connectable history; 7 scanner(s) registered, 6 scanning, 2 connectable; last advertisement 318s ago via hci0 (54:F2:9F:AB:60:D7): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device
Error fetching mobius_8B770000EDRBC5 data: Error communicating with 8B770000EDRBC5: Error connecting to 7W4300215BRWD8: mobius-device - D5:86:67:12:A7:41: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address D5:86:67:12:A7:41 was found: in connectable history; 7 scanner(s) registered, 6 scanning, 2 connectable; last advertisement 391s ago via hci0 (54:F2:9F:AB:60:D7): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device
Error fetching mobius_A0770012F5RBB1 data: Error communicating with A0770012F5RBB1: Error connecting to 7W4300215BRWD8: mobius-device - D5:86:67:12:A7:41: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address D5:86:67:12:A7:41 was found: in connectable history; 7 scanner(s) registered, 6 scanning, 2 connectable; last advertisement 464s ago via hci0 (54:F2:9F:AB:60:D7): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device
Error fetching mobius_7W4300215BRWD8 data: Error communicating with 7W4300215BRWD8: No device currently advertising serial '7W4300215BRWD8' was found in Home Assistant's Bluetooth cache
Error fetching mobius_8W7900069BRBD4 data: Error communicating with 8W7900069BRBD4: No device currently advertising serial '7W4300215BRWD8' was found in Home Assistant's Bluetooth cache
This error originated from a custom integration. Logger: custom_components.mobius.coordinator Source: helpers/update_coordinator.py:506 Integration: Mobius (documentation, issues) First occurred: 17:19:34 (5 occurrences) Last logged: 17:28:53 ``` Error fetching mobius_7W4300215BRWD8 data: Error communicating with 7W4300215BRWD8: Error connecting to 7W4300215BRWD8: mobius-device - D5:86:67:12:A7:41: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address D5:86:67:12:A7:41 was found: in connectable history; 7 scanner(s) registered, 6 scanning, 2 connectable; last advertisement 318s ago via hci0 (54:F2:9F:AB:60:D7): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device Error fetching mobius_8B770000EDRBC5 data: Error communicating with 8B770000EDRBC5: Error connecting to 7W4300215BRWD8: mobius-device - D5:86:67:12:A7:41: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address D5:86:67:12:A7:41 was found: in connectable history; 7 scanner(s) registered, 6 scanning, 2 connectable; last advertisement 391s ago via hci0 (54:F2:9F:AB:60:D7): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device Error fetching mobius_A0770012F5RBB1 data: Error communicating with A0770012F5RBB1: Error connecting to 7W4300215BRWD8: mobius-device - D5:86:67:12:A7:41: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address D5:86:67:12:A7:41 was found: in connectable history; 7 scanner(s) registered, 6 scanning, 2 connectable; last advertisement 464s ago via hci0 (54:F2:9F:AB:60:D7): The proxy/adapter is out of connection slots or the device is no longer reachable; Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device Error fetching mobius_7W4300215BRWD8 data: Error communicating with 7W4300215BRWD8: No device currently advertising serial '7W4300215BRWD8' was found in Home Assistant's Bluetooth cache Error fetching mobius_8W7900069BRBD4 data: Error communicating with 8W7900069BRBD4: No device currently advertising serial '7W4300215BRWD8' was found in Home Assistant's Bluetooth cache ```
Owner

Still too far? 🤔 Can't you place the proxy right near the tank?
mine only work decently with at least -65 RSSI.

Might add a file to detail what's needed and what I have working. Or just add the info to the README...

Still too far? 🤔 Can't you place the proxy right near the tank? mine only work decently with at least -65 RSSI. Might add a file to detail what's needed and what I have working. Or just add the info to the README...
Author

Good Morning. The proxy is super close to tank - it really cant be that. I have worked with Claude to try and bug fix last night. We are trying one more thing then I will ask him to write a condensed note of everything we did and what he thinks.... give me an hour or so - I have to do real world work as well,,,,

It is up and running at moment - Claude is checking every 5 minutes for 2 hours, then will report back

Good Morning. The proxy is super close to tank - it really cant be that. I have worked with Claude to try and bug fix last night. We are trying one more thing then I will ask him to write a condensed note of everything we did and what he thinks.... give me an hour or so - I have to do real world work as well,,,, It is up and running at moment - Claude is checking every 5 minutes for 2 hours, then will report back
Author

here is report -----

Mobius Marine Aquarium — Summary Report

Monitoring Result (08:22–11:44 today)

Zero drops. 3h 22m continuous stable operation. All 4 devices polling normally, VectraS2 holding as gateway throughout.


Device Inventory

Serial Model Role Company ID
7W4300215BRWD8 EcoTech VectraS2 Return pump / BLE gateway 514
8B770000EDRBC5 Aqua Illumination Orbit 2 Flow Pump Flow front 1
A0770012F5RBB1 Aqua Illumination Orbit 2 Flow Pump Flow back 1
8W7900069BRBD4 Aqua Illumination Axis 20 Pump UV pump 1

What We Diagnosed & Fixed

Problem 1: Neptune MXM BLE conflict (root cause of all recurring failures)

The Neptune Apex MXM module was maintaining a persistent BLE connection to the VectraS2 pump at all times in order to relay pump data to the Apex controller. This left no BLE connection slot free for the Mobius HA integration. Every time HA tried to connect to VectraS2, it was silently refused.

This explained:

  • Why power-cycling VectraS2 temporarily fixed it (drops all connections, HA connects first)
  • Why it came back hours later (MXM reconnected and reclaimed the slot)
  • Why the Mobius app being open was initially suspected but wasn't the real cause

Fix: MXM removed from Apex Fusion config and physically unplugged. VectraS2 power-cycled to reset its BLE stack. Integration reloaded — stable ever since.

Problem 2: SCAN_RSP / active scanning (historical — resolved by ATOM Lite)

The Realtek BT adapter on the HA server was too far from the marine tank to reliably catch SCAN_RSP packets, which contain the device serial number. Without the serial, the Möbius integration cannot identify VectraS2 in the BLE cache.

Fix: M5Stack ATOM Lite C124 flashed with ESPHome bluetooth_proxy: active: true and placed near the tank. Active scanning sends SCAN_REQ and receives SCAN_RSP, providing serials to HA's BLE cache.


Current Device Status

Device Status Notes
VectraS2 (7W4300215BRWD8) Gateway / Schedule BLE connection stable
Orbit 2 Front (8B770000EDRBC5) OOB Relayed via VectraS2 Thread mesh
Axis 20 (8W7900069BRBD4) OOB Relayed via VectraS2 Thread mesh
Orbit 2 Back (A0770012F5RBB1) OOB Relayed — working but fragile (see Bug 2)

Bug 1 — Critical: Aqua Illumination devices use BLE company ID 1, not 514

The python-mobius library and the HA integration hardcode MOBIUS_COMPANY_ID = 514 (EcoTech/Neptune format). All three Aqua Illumination devices (Orbit 2 ×2, Axis 20) advertise under company ID 1 with an identical payload structure:

  • Bytes 0–6: flags/metadata
  • Bytes 7–8: pan_id (little-endian uint16)
  • Bytes 9+: serial (ASCII)

Affected code in coordinator.py:

python
Copy
payload = info.manufacturer_data.get(MOBIUS_COMPANY_ID) # misses AI devices
And in init.py _current_rssi():

python
Copy
payload = info.manufacturer_data.get(MOBIUS_COMPANY_ID) # AI pumps get None → sorted last
Fix: Search both company IDs when scanning:

python
Copy
KNOWN_COMPANY_IDS = {514, 1}
for cid in KNOWN_COMPANY_IDS:
payload = info.manufacturer_data.get(cid)
if payload:
break
Bug 2 — Moderate: Orbit 2 Back (A0770012F5RBB1) relay path goes through an AI pump

A0770012F5RBB1 is a Thread end device whose parent in the mesh is the Axis 20 (8W7900069BRBD4). When the integration needs to relay to A0770012F5RBB1, it tries to BLE-connect to 8W7900069BRBD4 as a secondary gateway — but cannot find it because of Bug 1 (company ID 1). Currently working only because VectraS2's initial mesh discovery cached A0770012F5RBB1's Thread address directly at setup. If that cache expires, the relay will fail again.

Fix: Same as Bug 1 — fixing the company ID lookup allows 8W7900069BRBD4 to be found as a BLE relay gateway when needed.

Bug 3 — Minor: No warning about competing BLE clients

There is no warning in the config flow or documentation that third-party BLE clients (Neptune MXM, Möbius iOS/Android app) holding an active connection to the gateway device will silently block HA from connecting. Users can spend hours debugging what presents as an intermittent availability issue with no obvious cause.

Worth adding a note in the config flow UI and/or README: "Ensure no other devices (Apex MXM module, Möbius mobile app) are actively BLE-connected to your gateway device during setup and normal operation."


Nothing Else Needs Changing in Your HA Setup

The ATOM Lite proxy, Marine Aquarium config entry, and BLE scanner configuration are all correct. The only systemic risk remaining is if something else takes the VectraS2's BLE slot again — with MXM permanently removed, there is no known device that would do this.

here is report ----- ## Mobius Marine Aquarium — Summary Report ### Monitoring Result (08:22–11:44 today) Zero drops. 3h 22m continuous stable operation. All 4 devices polling normally, VectraS2 holding as gateway throughout. --- ### Device Inventory | Serial | Model | Role | Company ID | |--------|-------|------|-----------| | 7W4300215BRWD8 | EcoTech VectraS2 | Return pump / BLE gateway | 514 | | 8B770000EDRBC5 | Aqua Illumination Orbit 2 Flow Pump | Flow front | 1 | | A0770012F5RBB1 | Aqua Illumination Orbit 2 Flow Pump | Flow back | 1 | | 8W7900069BRBD4 | Aqua Illumination Axis 20 Pump | UV pump | 1 | --- ### What We Diagnosed & Fixed Problem 1: Neptune MXM BLE conflict (root cause of all recurring failures) The Neptune Apex MXM module was maintaining a persistent BLE connection to the VectraS2 pump at all times in order to relay pump data to the Apex controller. This left no BLE connection slot free for the Mobius HA integration. Every time HA tried to connect to VectraS2, it was silently refused. This explained: - Why power-cycling VectraS2 temporarily fixed it (drops all connections, HA connects first) - Why it came back hours later (MXM reconnected and reclaimed the slot) - Why the Mobius app being open was initially suspected but wasn't the real cause Fix: MXM removed from Apex Fusion config and physically unplugged. VectraS2 power-cycled to reset its BLE stack. Integration reloaded — stable ever since. Problem 2: SCAN_RSP / active scanning (historical — resolved by ATOM Lite) The Realtek BT adapter on the HA server was too far from the marine tank to reliably catch SCAN_RSP packets, which contain the device serial number. Without the serial, the Möbius integration cannot identify VectraS2 in the BLE cache. Fix: M5Stack ATOM Lite C124 flashed with ESPHome bluetooth_proxy: active: true and placed near the tank. Active scanning sends SCAN_REQ and receives SCAN_RSP, providing serials to HA's BLE cache. --- ### Current Device Status | Device | Status | Notes | |--------|--------|-------| | VectraS2 (7W4300215BRWD8) | ✅ Gateway / Schedule | BLE connection stable | | Orbit 2 Front (8B770000EDRBC5) | ✅ OOB | Relayed via VectraS2 Thread mesh | | Axis 20 (8W7900069BRBD4) | ✅ OOB | Relayed via VectraS2 Thread mesh | | Orbit 2 Back (A0770012F5RBB1) | ✅ OOB | Relayed — working but fragile (see Bug 2) | --- ### Recommended Code Changes for the Möbius Integration Bug 1 — Critical: Aqua Illumination devices use BLE company ID 1, not 514 The python-mobius library and the HA integration hardcode MOBIUS_COMPANY_ID = 514 (EcoTech/Neptune format). All three Aqua Illumination devices (Orbit 2 ×2, Axis 20) advertise under company ID 1 with an identical payload structure: - Bytes 0–6: flags/metadata - Bytes 7–8: pan_id (little-endian uint16) - Bytes 9+: serial (ASCII) Affected code in coordinator.py: python Copy payload = info.manufacturer_data.get(MOBIUS_COMPANY_ID) # misses AI devices And in __init__.py _current_rssi(): python Copy payload = info.manufacturer_data.get(MOBIUS_COMPANY_ID) # AI pumps get None → sorted last Fix: Search both company IDs when scanning: python Copy KNOWN_COMPANY_IDS = {514, 1} for cid in KNOWN_COMPANY_IDS: payload = info.manufacturer_data.get(cid) if payload: break Bug 2 — Moderate: Orbit 2 Back (A0770012F5RBB1) relay path goes through an AI pump A0770012F5RBB1 is a Thread end device whose parent in the mesh is the Axis 20 (8W7900069BRBD4). When the integration needs to relay to A0770012F5RBB1, it tries to BLE-connect to 8W7900069BRBD4 as a secondary gateway — but cannot find it because of Bug 1 (company ID 1). Currently working only because VectraS2's initial mesh discovery cached A0770012F5RBB1's Thread address directly at setup. If that cache expires, the relay will fail again. Fix: Same as Bug 1 — fixing the company ID lookup allows 8W7900069BRBD4 to be found as a BLE relay gateway when needed. Bug 3 — Minor: No warning about competing BLE clients There is no warning in the config flow or documentation that third-party BLE clients (Neptune MXM, Möbius iOS/Android app) holding an active connection to the gateway device will silently block HA from connecting. Users can spend hours debugging what presents as an intermittent availability issue with no obvious cause. Worth adding a note in the config flow UI and/or README: "Ensure no other devices (Apex MXM module, Möbius mobile app) are actively BLE-connected to your gateway device during setup and normal operation." --- ### Nothing Else Needs Changing in Your HA Setup The ATOM Lite proxy, Marine Aquarium config entry, and BLE scanner configuration are all correct. The only systemic risk remaining is if something else takes the VectraS2's BLE slot again — with MXM permanently removed, there is no known device that would do this.
Author

Hello - just had to do a reboot, and it stopped working again. Here is Claudes summary :

Title: Axis20 pump (AI Axis 20, company ID 1) loses support after HA restart — mesh address cached but device marked "unsupported"

Environment:

  • Home Assistant, python-mobius Mobius integration
  • Device: Aqua Illumination Axis 20 Pump, mesh ID 8W7900069BRBD4, mesh address fd76:7192:b0f1:2d47:f0b8:1508:46cd:ee85

Summary:
Before a routine Home Assistant restart, this device was fully functional — firmware_version: 2.3.15, error_state: NoError, schedule_points: 1. After the restart:

support_tier flipped from pump → unsupported
error_state, schedule_points, firmware_version, hardware_revision all went to unknown
mesh_address is the only attribute still populated — it's a cached/static value, not live-polled
Timeline:

  • HA restart: ~16:16–16:17 UTC
  • Device's mesh-address entity shows last_seen: 16:16:27 — so the BLE advertisement was received right after restart, proving the device is discoverable/broadcasting correctly
  • By 16:22:21 (~5 min later), the device flipped to unsupported/unknown across the board

Suspected root cause:
This looks like the same issue as a previously-reported bug in this setup: AI (Aqua Illumination) devices — this Axis 20, and separately an Orbit 2 Flow Pump (A0770012F5RBB1) that relays through this same Axis 20 — advertise via BLE company ID 1, but python-mobius's device discovery (_find_in_bluetooth_cache / _current_rssi) only searches company ID 514. Before the restart, a cached Thread mesh address let the integration skip fresh discovery and it worked fine. The restart cleared that cache, forcing a fresh discovery pass, which hit the company-ID mismatch and marked the device unsupported — even though the raw BLE advertisement was received (per the last_seen timestamp).

Suggested fix: search both company ID 1 and 514 in _find_in_bluetooth_cache and _current_rssi, rather than only 514.

Workaround: power-cycling the affected device forces re-advertisement and has previously restored function, but the underlying discovery bug means any future cache-clearing event (HA restart, BLE proxy reconnect, etc.) will likely reproduce this.

Hello - just had to do a reboot, and it stopped working again. Here is Claudes summary : Title: Axis20 pump (AI Axis 20, company ID 1) loses support after HA restart — mesh address cached but device marked "unsupported" Environment: - Home Assistant, python-mobius Mobius integration - Device: Aqua Illumination Axis 20 Pump, mesh ID 8W7900069BRBD4, mesh address fd76:7192:b0f1:2d47:f0b8:1508:46cd:ee85 Summary: Before a routine Home Assistant restart, this device was fully functional — firmware_version: 2.3.15, error_state: NoError, schedule_points: 1. After the restart: support_tier flipped from pump → unsupported error_state, schedule_points, firmware_version, hardware_revision all went to unknown mesh_address is the only attribute still populated — it's a cached/static value, not live-polled Timeline: - HA restart: ~16:16–16:17 UTC - Device's mesh-address entity shows last_seen: 16:16:27 — so the BLE advertisement was received right after restart, proving the device is discoverable/broadcasting correctly - By 16:22:21 (~5 min later), the device flipped to unsupported/unknown across the board Suspected root cause: This looks like the same issue as a previously-reported bug in this setup: AI (Aqua Illumination) devices — this Axis 20, and separately an Orbit 2 Flow Pump (A0770012F5RBB1) that relays through this same Axis 20 — advertise via BLE company ID 1, but python-mobius's device discovery (_find_in_bluetooth_cache / _current_rssi) only searches company ID 514. Before the restart, a cached Thread mesh address let the integration skip fresh discovery and it worked fine. The restart cleared that cache, forcing a fresh discovery pass, which hit the company-ID mismatch and marked the device unsupported — even though the raw BLE advertisement was received (per the last_seen timestamp). Suggested fix: search both company ID 1 and 514 in _find_in_bluetooth_cache and _current_rssi, rather than only 514. Workaround: power-cycling the affected device forces re-advertisement and has previously restored function, but the underlying discovery bug means any future cache-clearing event (HA restart, BLE proxy reconnect, etc.) will likely reproduce this.
Owner

I need you to verify something. The company ID is actually 2 bytes and the 01 is just the low byte. I need you to confirm what is the hight byte. You can see it on Home Assistant Bluetooth Advertisements. Try to find one of your AI pumps/gyros with the full info. Something like what's attached

I need you to verify something. The company ID is actually 2 bytes and the 01 is just the low byte. I need you to confirm what is the hight byte. You can see it on Home Assistant Bluetooth Advertisements. Try to find one of your AI pumps/gyros with the full info. Something like what's attached
Author

{"name":"MOBIUS","address":"D5:FA:10:E4:63:AA","rssi":-74,"manufacturer_data":{"1":"0501010100000026f43857373930303036394252424434"},"service_data":{},"service_uuids":["01ff0100-ba5e-f4ee-5ca1-eb1e5e4b1ce0"],"source":"54:F2:9F:AB:60:D7","connectable":true,"time":1787380178.5822055,"tx_power":null,"raw":"0201041106e01c4b5e1eeba15ceef45eba0001ff0107084d4f42495553"}

{"name":"MOBIUS","address":"D5:FA:10:E4:63:AA","rssi":-74,"manufacturer_data":{"1":"0501010100000026f43857373930303036394252424434"},"service_data":{},"service_uuids":["01ff0100-ba5e-f4ee-5ca1-eb1e5e4b1ce0"],"source":"54:F2:9F:AB:60:D7","connectable":true,"time":1787380178.5822055,"tx_power":null,"raw":"0201041106e01c4b5e1eeba15ceef45eba0001ff0107084d4f42495553"}
Owner

Sorry to bother you with this, but since you have an MXM, can you check it's value too?

Sorry to bother you with this, but since you have an MXM, can you check it's value too?
Owner

ok, everything should work with version 0.4.0. if for some reason it doesn't, feel free to open the bug again. and thx for all the help 😉

ok, everything should work with version 0.4.0. if for some reason it doesn't, feel free to open the bug again. and thx for all the help 😉
r3pek closed this issue 2026-08-23 22:44:31 +01:00
Sign in to join this conversation.
No labels
No milestone
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
r3pek/ha-mobius#2
No description provided.