home-assistant / home-assistant/core

GetDeviceList only returns first UDP packet — devices beyond ~15 are silently dropped

Open
#181,706 2 comments 0 reactions 1 assignee Claimed by @starkillerOG View on GitHub
integration: motion_blinds
Dominant language
Python
Stars
90.5k
Forks
38.6k
Avg merge
1d 2h
Merged PRs (30d)
597

Description

### The problem

**Setup:** 16 blinds paired to one gateway (deviceType `02000001`, ProtocolVersion `0.9`).
`GetDeviceList()` returns 14 blinds. The remaining 2 never appear in Home Assistant.

**Cause:** Read comments below ~~The gateway splits `GetDeviceListAck` across two datagrams. And `_send` returns after a single `recvfrom`, so the second is discarded.~~

Raw socket capture (listening until timeout instead of returning after one read):

packet 1 — 896 bytes — GetDeviceListAck — 15 entries (gateway + blinds 0002..000f)
packet 2 — 237 bytes — GetDeviceListAck — 2 entries (blinds 0010, 0011)

Both packets share the same `mac`, `deviceType`, `ProtocolVersion` and `token`.
Entries are ~51 bytes each, so 16 devices total ~1130 bytes — past what this
gateway puts in one datagram. Distinct from the buffer-size fix in HA 2022.03
(home-assistant/core #65575); this is packet count, not buffer size!

My gateway (deviceType 02000001, ProtocolVersion 0.9) splits `GetDeviceListAck` at 896 bytes / 15 entries, below the 921-byte threshold, so the loop exits with the second datagram (237 bytes, 2 entries) unread. Both datagrams are complete, valid JSON with identical token and mac, this is not truncation.

Suggested fix: in `GetDeviceList`, keep reading until the socket times out and
concatenate `data` from every `GetDeviceListAck` matching the first reply's
token/mac, deduping by device MAC.

motionblinds <0.6.30>, via HA .

### What version of Home Assistant Core has the issue?

core-2026.9.1

### What was the last working version of Home Assistant Core?

_No response_

### What type of installation are you running?

Home Assistant OS

### Integration causing the issue

motion_blinds

### Link to integration documentation on our website

https://www.home-assistant.io/integrations/motion_blinds

### Diagnostics information

_No response_

### Example YAML snippet

```yaml

```

### Anything in the logs that might be useful for us?

```txt

```

### Additional information

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.