Contribute
You do not need to be a programmer.
The most valuable contributions come from people who own the hardware and can check whether what we published is true on their model.
The two-minute version
Vendors move settings between firmware versions and between countries. A guide that sends someone to a menu that does not exist on their television loses them for good. Every menu path we publish is marked either verified or needs confirmation, and almost all of them are the latter.
So: open your TV's settings, compare them to your vendor page, and tell us what you actually see. That fixes the guide for everyone with that model.
Correct a menu pathFind your page first
Report what your TV contacts
This is how the dataset and the blocklists improve. You need a filtering resolver already running: Pi-hole, AdGuard Home or a NextDNS account. If you do not have one,set one up first, since it helps you either way.
python collector/router/fightback.py \
--source adguard-file --log /opt/AdGuardHome/data/querylog.json \
--device 192.168.1.42 \
--vendor lg --model "LG OLED C3" --platform webos \
--os-major 8 --region GB --acr optout --scenario idle \
--previewIt reads your query log, strips everything identifying, and prints the exact file it would upload. Read it. If you are happy, add --submit and it opens a pull request.
Nothing leaves your machine until you ask. Local-only is the default, and there is no code path that uploads a report you have not been shown first.
Not comfortable with the command line? Use thereport formand paste only the hostnames.
Do not paste a raw log file or packet capture. Your Pi-hole and AdGuard Home logs contain the address of every device in your house and the hostnames you chose for them. We cannot accept them.
What a report contains, field by field
| Collected | Never collected |
|---|---|
| Vendor and model family Platform and firmware major version Country, two letters Menu language Whether content recognition was off Hostnames contacted, with identifiers removed Port, protocol, count First and last seen, rounded to the hour | Your IP address, and the TV's MAC addresses Serial numbers and device identifiers Your Wi-Fi network name Hostnames of your other devices URL paths and query strings Any payload content City, postcode, coordinates, timezone Timestamps finer than an hour |
The right-hand column does not exist in the schema, so a report cannot carry one even by accident. The full policy ·The schema
Hostnames get rewritten before they leave your machine
Vendors put identifiers inside hostnames. A television looking up3f2504e0-4f89-11d3-9a0c-0305e82c3301.metrics.example.com has just published something unique to your household in a DNS query. Stored as-is, every row of the dataset would be a household identifier.
So it becomes {id}.metrics.example.com before anything is sent.
A numeric suffix is treated differently. eu-acr3.alphonso.tv becomeseu-acr{n}.alphonso.tv, because that pattern is a vendor's regional server layout rather than anything about you, and throwing it away would lose real signal for no privacy gain.
Add endpoint data
The blocklists are generated. Do not edit anything in blocklists/. Editdata/endpoints/<vendor>.yml instead:
- domain: acr-eu-prd.samsungcloud.tv
purpose: acr
tier: core
safe_to_block: true
breaks: null
source: https://arxiv.org/html/2409.06203v1The breaks field matters more than the domain. A list that kills someone's Netflix does more harm than the tracking it prevents. If you do not know what a domain breaks, write unknown and it stays out of the default list.
What we will decline
- Exploit code, root procedures, or firmware patches. We explain what root achieves and link the projects that maintain it.
- Anything that decrypts traffic or bypasses certificate pinning.
- Collecting more identifying data, however useful it would be for analysis.
- Duplicating HaGeZi. Their lists are excellent and rebuilt daily. We add annotation and per-model evidence, not more domains for their own sake.
Start somewhere
A menu path that does not match your TV, an instruction that failed, or a blocklist entry that broke something.
Report your TVThe endpoints it contacts, and whether turning recognition off actually stopped them.
My hardware is not coveredTell us the model and what you can see in its network settings. That is most of the research.
Read the contributing guideHouse rules, the data formats, and how to run the checks locally.