Skip to content

Reports only returned for single key #166

Description

@alfs

I'm periodically (about every 30 minutes) collecting location for dozens of tags. I save the last found index of the key + date, and from there calculate key ranges for all tags and fetching all reports in one call.

This worked well for several months in the spring, until late May when it suddenly stopped and I got few, if any, reports.

I'm now investigating the issue, and it seems reports are gotten for a singular key.

To test this, I have isolated two keys that successfully return location reports individually.

I have an adapted script of examples/real_airtag.py, where the central part is:

    logging.debug(f"1: Keys to fetch: {list(kdict.keys())}") 
    reports = acc.fetch_last_reports(list(kdict.keys()))
    logging.debug(f"2: Actual reports: {reports} ")

First tag, fetch_last_reports for a single key:

DEBUG:root:1: Keys to fetch: [KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==", type=KeyType.SECONDARY)]
DEBUG:root:2: Actual reports: {KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==",
 type=KeyType.SECONDARY): [KeyReport(hashed_adv_key=XXX, timestamp=2025
-08-23 07:25:21+02:00, lat=XXX.3754753, lon=XXX.4790295),
...

20 reports received

Second tag, only fetching for one key:

DEBUG:root:1: Keys to fetch: [KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", type=KeyType.SECONDARY)]
DEBUG:root:2: Actual reports: {KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", 
type=KeyType.SECONDARY): [KeyReport(hashed_adv_key=YYY, timestamp=2025-08-23 03:09:38+02:00, lat=YY.3758003, lon=YY.4768694),
...

(again 20 reports received)

However when querying with both keys, one of them (0y...) has an empty set of reports:

DEBUG:root:1: Keys to fetch: [KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==", type=KeyType.SECONDARY), KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", type=KeyType.SECONDARY)]
DEBUG:root:2: Actual reports: {KeyPair(name="None", public_key="0y/hZ8LvS8i5z+xc6fYbO6Bdt1DuxIbheq70sA==", 
type=KeyType.SECONDARY): [],
KeyPair(name="None", public_key="njEfiCm9Cdth9jJPwDiPTvyzFskGt8ZPXng0nw==", type=KeyType.SECONDARY): [KeyReport(hashed_adv_key=YYY, timestamp=2025-08-23 02:46:39+02:00, lat=YY.3758003, lon=YY.4768694),

I can work around this by iterating fetch_last_reports for each tag, but it increases the number of connections and, perhaps, increase the risk of account ban.

Another observation, before May I also received old location reports, for up to a week. Now it seems limited to the last 20 reports.

Have you noticed the above? Can you successfully get reports for multiple tags in the same report-fetch?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions