docs: add Xbox Pi-hole incident report for MLB The Show menu delays
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 5s
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 5s
Pi-hole was gravity-blocking Microsoft telemetry domains that Xbox calls synchronously during menu transitions, causing 5-10s hangs. Created per-client Xbox group with allowlist on both Pi-holes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
fa7e4cf4c7
commit
f2258dfade
@ -199,6 +199,21 @@ rm -rf ~/.steam/steam/steamapps/compatdata/1144200/
|
||||
For full HDR setup (vk-hdr-layer, KDE config, per-API env vars), see the **steam-game-setup** skill:
|
||||
`.claude/skills/steam-game-setup/SKILL.md` → HDR Configuration section
|
||||
|
||||
## Xbox / Console Issues
|
||||
|
||||
### Menu Delays Caused by Pi-hole Blocking
|
||||
**Symptoms**: Multi-second (5-10s) hangs when toggling menus in online games (e.g., MLB The Show)
|
||||
**Root Cause**: Pi-hole gravity-blocks Microsoft telemetry domains that the Xbox calls synchronously during menu transitions. The game gets `0.0.0.0` from DNS, attempts TCP connect, and waits for timeout.
|
||||
**Solution**: Create a per-client Xbox group in Pi-hole with allowlist entries for the blocked domains. See [xbox-pihole-mlb-the-show-incident.md](xbox-pihole-mlb-the-show-incident.md) for full details.
|
||||
**Key domains to whitelist for Xbox**:
|
||||
- `settings-win.data.microsoft.com`
|
||||
- `arc.msn.com`
|
||||
- `v10.events.data.microsoft.com`
|
||||
- `v20.events.data.microsoft.com`
|
||||
- `activity.windows.com`
|
||||
|
||||
**Diagnostic tip**: Look for rapid retry patterns in Pi-hole logs (same domain queried every 1-3s from the Xbox IP) — this signals a blocked domain causing timeout loops.
|
||||
|
||||
## Useful Commands
|
||||
|
||||
### Check Running Game Process
|
||||
|
||||
114
gaming/xbox-pihole-mlb-the-show-incident.md
Normal file
114
gaming/xbox-pihole-mlb-the-show-incident.md
Normal file
@ -0,0 +1,114 @@
|
||||
---
|
||||
title: "Incident: MLB The Show Xbox Menu Delays Caused by Pi-hole Blocking"
|
||||
description: "Root cause analysis for multi-second menu delays in MLB The Show on Xbox, caused by Pi-hole gravity-blocking Microsoft telemetry domains that the game calls synchronously."
|
||||
type: troubleshooting
|
||||
domain: gaming
|
||||
tags: [xbox, pihole, dns, mlb-the-show, troubleshooting]
|
||||
---
|
||||
|
||||
# Incident: MLB The Show Xbox Menu Delays — Pi-hole Blocking
|
||||
|
||||
**Date**: 2026-03-14
|
||||
**Platform**: Xbox Series X (MAC: `3C:FA:06:C7:D0:09`)
|
||||
**Game**: MLB The Show 26
|
||||
**Impact**: 5-10 second delays when toggling in-game menus
|
||||
|
||||
## Symptoms
|
||||
|
||||
- Multi-second hangs (5-10s) when navigating between menus in MLB The Show online
|
||||
- Game itself loaded and played fine; issue was specifically menu transitions
|
||||
- No obvious network errors or disconnections
|
||||
|
||||
## Root Cause
|
||||
|
||||
MLB The Show (and the Xbox OS) make **synchronous HTTP calls** to Microsoft telemetry and settings domains during menu transitions. When Pi-hole gravity-blocks these domains (returning `0.0.0.0`), the game hangs waiting for the TCP connection to time out before proceeding.
|
||||
|
||||
Five blocked domains were identified hitting the Xbox:
|
||||
|
||||
| Domain | Blocklist | Purpose |
|
||||
|--------|-----------|---------|
|
||||
| `settings-win.data.microsoft.com` | VeleSila/yhosts | Xbox/Windows settings sync |
|
||||
| `arc.msn.com` | blocklistproject/ads | Microsoft ads/telemetry |
|
||||
| `v10.events.data.microsoft.com` | blocklistproject/ads, developerdan/ads-tracking | Microsoft telemetry |
|
||||
| `v20.events.data.microsoft.com` | SNAFU, developerdan/ads-tracking | Microsoft telemetry |
|
||||
| `activity.windows.com` | developerdan/ads-tracking | Windows activity history |
|
||||
|
||||
### Key evidence from Pi-hole logs
|
||||
|
||||
The Xbox was retrying `settings-win.data.microsoft.com` every 1-2 seconds — classic timeout-retry behavior:
|
||||
|
||||
```
|
||||
Mar 14 08:16:50 query[A] settings-win.data.microsoft.com from 10.0.0.249
|
||||
Mar 14 08:16:52 query[A] settings-win.data.microsoft.com from 10.0.0.249
|
||||
Mar 14 08:16:54 query[A] settings-win.data.microsoft.com from 10.0.0.249
|
||||
Mar 14 08:16:55 query[A] settings-win.data.microsoft.com from 10.0.0.249
|
||||
```
|
||||
|
||||
The log showed only `query` entries with no corresponding `forwarded`/`reply` — Pi-hole was responding immediately from gravity with `0.0.0.0`, so the Xbox got a valid DNS response but then the HTTP connection to `0.0.0.0` would hang until TCP timeout.
|
||||
|
||||
## Resolution
|
||||
|
||||
Created a per-client **Xbox group** in Pi-hole (both primary and secondary) with allowlist entries for the five domains. This scopes the whitelist to only the Xbox — other devices on the network still have these domains blocked.
|
||||
|
||||
### Pi-hole Configuration Applied
|
||||
|
||||
**Both Pi-holes** (10.10.0.16 primary, 10.10.0.226 secondary):
|
||||
|
||||
- **Group**: `Xbox` (enabled)
|
||||
- **Client**: `3C:FA:06:C7:D0:09` (Xbox Series X) — member of Default + Xbox groups
|
||||
- **Allowlist** (Xbox group only):
|
||||
- `settings-win.data.microsoft.com`
|
||||
- `arc.msn.com`
|
||||
- `v10.events.data.microsoft.com`
|
||||
- `v20.events.data.microsoft.com`
|
||||
- `activity.windows.com`
|
||||
|
||||
### How to reproduce the fix
|
||||
|
||||
```bash
|
||||
# On each Pi-hole (ssh pihole / ssh manticore):
|
||||
docker exec pihole pihole-FTL sqlite3 -ni /etc/pihole/gravity.db "
|
||||
INSERT INTO [group] (name, description, enabled) VALUES ('Xbox', 'Xbox console - relaxed blocking for gaming', 1);
|
||||
INSERT INTO client (ip, comment) VALUES ('3C:FA:06:C7:D0:09', 'Xbox Series X');
|
||||
INSERT INTO client_by_group (client_id, group_id) SELECT c.id, g.id FROM client c, [group] g WHERE c.ip = '3C:FA:06:C7:D0:09' AND g.name = 'Xbox';
|
||||
"
|
||||
|
||||
# For each domain:
|
||||
for domain in settings-win.data.microsoft.com arc.msn.com v10.events.data.microsoft.com v20.events.data.microsoft.com activity.windows.com; do
|
||||
docker exec pihole pihole-FTL sqlite3 -ni /etc/pihole/gravity.db "
|
||||
INSERT INTO domainlist (type, domain, comment, enabled) VALUES (0, '$domain', 'Xbox gaming - unblock for menu responsiveness', 1);
|
||||
DELETE FROM domainlist_by_group WHERE domainlist_id = (SELECT id FROM domainlist WHERE domain = '$domain' AND type = 0) AND group_id = 0;
|
||||
INSERT INTO domainlist_by_group (domainlist_id, group_id) SELECT d.id, g.id FROM domainlist d, [group] g WHERE d.domain = '$domain' AND d.type = 0 AND g.name = 'Xbox';
|
||||
"
|
||||
done
|
||||
|
||||
docker exec pihole pihole reloadlists
|
||||
```
|
||||
|
||||
## Diagnostic Commands
|
||||
|
||||
```bash
|
||||
# Find blocked domains for the Xbox
|
||||
ssh pihole "docker exec pihole grep '10.0.1.47' /var/log/pihole/pihole.log | grep blocked"
|
||||
|
||||
# Check if a domain is on a blocklist
|
||||
ssh pihole "docker exec pihole pihole -q <domain>"
|
||||
|
||||
# List all unique domains queried by Xbox
|
||||
ssh pihole "docker exec pihole grep 'query\[A\] ' /var/log/pihole/pihole.log" | grep '<XBOX_IP>' | awk '{print $6}' | sort -u
|
||||
|
||||
# Verify Xbox whitelist
|
||||
ssh pihole "docker exec pihole pihole-FTL sqlite3 -ni -header -column /etc/pihole/gravity.db \"
|
||||
SELECT d.domain, g.name FROM domainlist d
|
||||
JOIN domainlist_by_group dbg ON d.id = dbg.domainlist_id
|
||||
JOIN [group] g ON dbg.group_id = g.id WHERE d.type = 0 AND g.name = 'Xbox';
|
||||
\""
|
||||
```
|
||||
|
||||
## Lessons Learned
|
||||
|
||||
1. **Xbox/console games make synchronous network calls** to telemetry domains during UI operations — blocking these causes visible hangs, not silent failures
|
||||
2. **Pi-hole blocking returns `0.0.0.0`** which is a valid IP — the client gets a DNS response but then TCP-connects to nothing and waits for timeout. This is worse than NXDOMAIN for latency.
|
||||
3. **Use MAC addresses** for Pi-hole client entries instead of IPs — consoles frequently change IPs via DHCP
|
||||
4. **Always check both Pi-holes** — with HA DNS, the Xbox may hit either one depending on which responds first
|
||||
5. **Look for rapid retry patterns** in the logs (same domain queried every 1-3 seconds) as a signal that something is being blocked and causing timeout loops
|
||||
Loading…
Reference in New Issue
Block a user