---
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
