Skip to content

Instantly share code, notes, and snippets.

@anonymousik
Created February 16, 2026 04:38
Show Gist options
  • Select an option

  • Save anonymousik/42583d28df8da2fc90fb49341ee8daf2 to your computer and use it in GitHub Desktop.

Select an option

Save anonymousik/42583d28df8da2fc90fb49341ee8daf2 to your computer and use it in GitHub Desktop.

🔧 NAPRAWA DUP PACKETS - Przewodnik

❌ Twój Problem

64 bytes from 1.1.1.1: icmp_seq=3 ttl=59 time=24.9 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=59 time=27.7 ms (DUP!)
64 bytes from 1.1.1.1: icmp_seq=3 ttl=59 time=28.3 ms (DUP!)
64 bytes from 1.1.1.1: icmp_seq=3 ttl=59 time=37.5 ms (DUP!)

Wysłałeś 5 pakietów → Dostałeś 13 odpowiedzi (5 + 8 DUP!)


🎯 Co to oznacza?

DUP (Duplicate) = Zduplikowany pakiet

Normalna sytuacja:

Ty → Router → Internet → Router → Ty (1 pakiet tam, 1 pakiet z powrotem)

Twoja sytuacja:

Ty → Router → Internet → Router → Ty (przez Wi-Fi)
                              ↘→ Ty (przez Ethernet) ← DUP!

Pakiet wraca wielokrotnie różnymi ścieżkami!


🐛 Przyczyny (od najczęstszych)

1. Wi-Fi + Ethernet aktywne jednocześnie ⭐ NAJCZĘSTSZE

TV połączone:
- Wi-Fi: 192.168.1.100
- Ethernet: 192.168.1.101 (lub ta sama!)

Router wysyła odpowiedź przez OBA interfejsy
→ Pakiet wraca 2x (lub więcej razy)

Rozwiązanie:

  • Wyłącz Ethernet (zostaw Wi-Fi)
  • LUB wyłącz Wi-Fi (zostaw Ethernet)

2. Pętla w sieci (Switch/Router) ⭐ CZĘSTE

TV → Switch → Router → Switch → TV (pętla!)

Możliwe gdy:

  • Masz switch między TV a routerem
  • Router ma wadliwy Spanning Tree Protocol
  • Dwa kable Ethernet podłączone do tego samego switch

Rozwiązanie:

  • Restart routera
  • Sprawdź kable (czy nie masz 2 kabli do switch)
  • Upgrade firmware routera

3. Problem Orange Livebox ⭐ TYPOWE DLA ORANGE

Orange Livebox często ma problemy z:
- Wadliwym VLAN (TV/Internet)
- Bridge mode
- Podwójnym NAT

Rozwiązanie:

  • Restart Livebox (odłącz zasilanie na 30s)
  • Sprawdź czy TV nie jest w bridge mode
  • Kontakt z Orange (zgłoś problem techniczy)

4. IPv6 włączony ⭐ RZADKIE ALE MOŻLIWE

IPv6 może powodować duplikaty przez:
- Neighbor Discovery Protocol
- Duplicate Address Detection

Rozwiązanie:

  • Wyłącz IPv6 na TV

🚀 SZYBKA NAPRAWA (3 minuty)

Metoda 1: Wyłącz Ethernet (NAJPROSTSZA)

# W ADB shell:
adb shell

# Sprawdź interfejsy
ip link show

# Jeśli widzisz eth0 UP - wyłącz:
ip link set eth0 down

# Test
ping -c 5 1.1.1.1

# Jeśli OK - zostaw tak

Metoda 2: Użyj skryptu naprawczego

# Prześlij skrypt
adb push FIX_DUP_PACKETS.sh /data/local/tmp/

# Nadaj uprawnienia
adb shell chmod +x /data/local/tmp/FIX_DUP_PACKETS.sh

# Auto-fix (wszystko automatycznie)
adb shell sh /data/local/tmp/FIX_DUP_PACKETS.sh --fix

# Lub menu interaktywne
adb shell sh /data/local/tmp/FIX_DUP_PACKETS.sh

Metoda 3: Manualne komendy

# Krok 1: Sprawdź co jest aktywne
adb shell ip link show | grep "state UP"

# Krok 2: Jeśli Wi-Fi i Ethernet - wyłącz Ethernet
adb shell ip link set eth0 down

# Krok 3: Flush ARP cache
adb shell ip neigh flush all

# Krok 4: Restart Wi-Fi
adb shell svc wifi disable
sleep 2
adb shell svc wifi enable

# Krok 5: Test
adb shell ping -c 5 1.1.1.1

📊 Co zrobi skrypt AUTO-FIX?

1. Diagnostyka (wykryje przyczynę)
   - Sprawdzi interfejsy (Wi-Fi, Ethernet)
   - Sprawdzi routing table
   - Sprawdzi ARP cache
   - Test ping

2. Naprawa (6 kroków)
   ✓ Wyłączy Ethernet jeśli Wi-Fi aktywne
   ✓ Wyczyści routing table
   ✓ Wyczyści ARP cache
   ✓ Wyłączy IPv6
   ✓ Restartuje Wi-Fi
   ✓ Weryfikacja (test ping)

3. Raport
   - Pokaże czy naprawa się powiodła
   - Jeśli nadal DUP → problem z routerem/ISP

🔍 Diagnostyka manualna

Sprawdź interfejsy:

adb shell ip link show

Szukaj:

wlan0: <BROADCAST,MULTICAST,UP> ← Wi-Fi AKTYWNE
eth0: <BROADCAST,MULTICAST,UP>  ← Ethernet AKTYWNE

Problem jeśli OBA UP!


Sprawdź routing:

adb shell ip route

Normalne:

default via 192.168.1.1 dev wlan0  ← 1 default route

Problem:

default via 192.168.1.1 dev wlan0
default via 192.168.1.1 dev eth0   ← 2 default routes!

Sprawdź ARP:

adb shell ip neigh show

Normalne:

192.168.1.1 dev wlan0 lladdr aa:bb:cc:dd:ee:ff REACHABLE

Problem:

192.168.1.1 dev wlan0 lladdr aa:bb:cc:dd:ee:ff REACHABLE
192.168.1.1 dev eth0 lladdr aa:bb:cc:dd:ee:ff REACHABLE ← Duplikat!

✅ Weryfikacja naprawy

Test ping (bez DUP):

adb shell ping -c 10 1.1.1.1

Sukces:

--- 1.1.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss
                                  ↑
                          BRAK "+X duplicates"

Niepowodzenie:

10 packets transmitted, 10 received, +5 duplicates, 0% packet loss
                                      ↑
                               NADAL DUPLIKATY

Jeśli nadal duplikaty → problem z routerem/ISP


🆘 Jeśli skrypt nie pomógł

1. Restart routera Orange Livebox

1. Odłącz zasilanie Livebox
2. Odczekaj 30 sekund
3. Podłącz ponownie
4. Poczekaj 2 minuty (pełny restart)
5. Test ping

2. Sprawdź kable Ethernet

- Czy kabel Ethernet podłączony do TV?
- Czy przypadkiem 2 kable podłączone?
- Spróbuj odłączyć kabel fizycznie

3. Sprawdź ustawienia Livebox

1. Wejdź na: http://192.168.1.1
2. Login: admin / hasło z naklejki
3. Sprawdź:
   - VLAN settings (powinno być domyślne)
   - Bridge mode (powinno być OFF)
   - Spanning Tree Protocol (powinno być ON)

4. Kontakt z Orange

Jeśli nic nie pomaga:
- Zadzwoń: 888 (z Orange) lub 801 111 111
- Zgłoś: "Duplicate packets w ping - problem techniczny"
- Podaj: Numer umowy, model dekodera (Sagemcom DCTIW362P)

💡 Zapobieganie w przyszłości

1. Używaj TYLKO Wi-Fi lub TYLKO Ethernet

Nie podłączaj obu jednocześnie!

2. Po każdej zmianie sieci - restart

# Zmiana Wi-Fi → Restart:
adb shell svc wifi disable && sleep 2 && adb shell svc wifi enable

# Zmiana Ethernet → Restart:
adb reboot

3. Regularny flush cache

# Raz w miesiącu:
adb shell ip neigh flush all

📊 Twój przypadek - Analiza

Twój ping:
- 5 pakietów wysłanych
- 13 otrzymanych (5 + 8 DUP)
- Średni czas: 36ms (normalnie 20-25ms)
- Odchylenie: 15.6ms (duże!)

Diagnoza:

  • ⚠️ 160% duplikatów (8/5 = 1.6)
  • ⚠️ Wysoki jitter (15.6ms)
  • ⚠️ Wysoki średni czas (36ms vs 22ms)

Najbardziej prawdopodobne:

  1. Wi-Fi + Ethernet aktywne (80% szans)
  2. Problem z Orange Livebox (15% szans)
  3. Inne (5% szans)

🎯 Zalecany workflow

# Krok 1: Diagnoza
adb shell sh /data/local/tmp/FIX_DUP_PACKETS.sh --diagnose

# Krok 2: Auto-fix
adb shell sh /data/local/tmp/FIX_DUP_PACKETS.sh --fix

# Krok 3: Test
adb shell ping -c 10 1.1.1.1

# Jeśli OK:
✓ Gotowe!

# Jeśli nadal DUP:
→ Restart Livebox
→ Sprawdź kable
→ Kontakt Orange

TLDR: Najprawdopodobniej masz Wi-Fi i Ethernet aktywne jednocześnie. Wyłącz jeden z nich.

#!/system/bin/sh
# ============================================================================
# FIX DUP PACKETS - Naprawa zduplikowanych pakietów w Android TV
# ============================================================================
# Problem: Duplicate packets (DUP!) w ping
# Przyczyny: Pętla sieciowa, Wi-Fi+Eth aktywne, wadliwy router
# Kompatybilność: Android TV 9+ (Sagemcom DCTIW362P tested)
# ============================================================================
VERSION="1.0"
# Kolory
C_RED="\033[31m"
C_GREEN="\033[32m"
C_YELLOW="\033[33m"
C_BLUE="\033[34m"
C_CYAN="\033[36m"
C_RESET="\033[0m"
C_BOLD="\033[1m"
print_header() {
echo ""
echo "${C_BOLD}${C_CYAN}╔════════════════════════════════════════════════════════════╗${C_RESET}"
echo "${C_BOLD}${C_CYAN}║ $1${C_RESET}"
echo "${C_BOLD}${C_CYAN}╚════════════════════════════════════════════════════════════╝${C_RESET}"
echo ""
}
print_success() {
echo "${C_GREEN}[✓] $1${C_RESET}"
}
print_error() {
echo "${C_RED}[✗] $1${C_RESET}"
}
print_warning() {
echo "${C_YELLOW}[!] $1${C_RESET}"
}
print_info() {
echo "${C_BLUE}[i] $1${C_RESET}"
}
# ============================================================================
# DIAGNOSTYKA - Wykryj przyczynę DUP
# ============================================================================
diagnose_dup() {
print_header "DIAGNOSTYKA PROBLEMU DUP (Duplicate Packets)"
# Test 1: Sprawdź aktywne interfejsy
print_info "Test 1/5: Sprawdzanie aktywnych interfejsów sieciowych..."
echo ""
ACTIVE_INTERFACES=$(ip link show | grep "state UP" | awk '{print $2}' | tr -d ':')
echo " Aktywne interfejsy:"
for iface in $ACTIVE_INTERFACES; do
echo " - $iface"
done
echo ""
# Sprawdź czy Wi-Fi i Ethernet jednocześnie
WIFI_UP=$(echo "$ACTIVE_INTERFACES" | grep -c "wlan")
ETH_UP=$(echo "$ACTIVE_INTERFACES" | grep -c "eth")
if [ $WIFI_UP -gt 0 ] && [ $ETH_UP -gt 0 ]; then
print_error "PROBLEM: Wi-Fi i Ethernet aktywne jednocześnie!"
print_warning "To najczęstsza przyczyna DUP packets"
DUP_CAUSE="BOTH_ACTIVE"
elif [ $WIFI_UP -gt 1 ]; then
print_warning "Wykryto $WIFI_UP interfejsów Wi-Fi"
DUP_CAUSE="MULTI_WIFI"
elif [ $ETH_UP -gt 1 ]; then
print_warning "Wykryto $ETH_UP interfejsów Ethernet"
DUP_CAUSE="MULTI_ETH"
else
print_success "OK: Tylko 1 interfejs aktywny"
DUP_CAUSE="OTHER"
fi
# Test 2: Sprawdź routing table
print_info "Test 2/5: Analiza routing table..."
echo ""
DEFAULT_ROUTES=$(ip route | grep "default" | wc -l)
if [ $DEFAULT_ROUTES -gt 1 ]; then
print_error "PROBLEM: Znaleziono $DEFAULT_ROUTES default routes!"
echo " Default routes:"
ip route | grep "default" | while read line; do
echo " - $line"
done
DUP_CAUSE="MULTI_ROUTE"
else
print_success "OK: 1 default route"
ip route | grep "default"
fi
echo ""
# Test 3: Sprawdź IP addresses
print_info "Test 3/5: Sprawdzanie adresów IP..."
echo ""
ip addr show | grep "inet " | grep -v "127.0.0.1" | while read line; do
IFACE=$(echo "$line" | awk '{print $NF}')
IP=$(echo "$line" | awk '{print $2}')
echo " $IFACE: $IP"
done
echo ""
# Test 4: Test ping z duplikatami
print_info "Test 4/5: Test ping na Cloudflare (1.1.1.1)..."
echo ""
PING_RESULT=$(ping -c 5 -W 2 1.1.1.1 2>&1)
DUP_COUNT=$(echo "$PING_RESULT" | grep -c "DUP!")
if [ $DUP_COUNT -gt 0 ]; then
print_error "PROBLEM: Wykryto $DUP_COUNT duplikatów!"
echo ""
echo "$PING_RESULT" | grep "DUP!" | head -5
else
print_success "OK: Brak duplikatów"
fi
echo ""
# Test 5: Sprawdź ARP cache
print_info "Test 5/5: Sprawdzanie ARP cache..."
echo ""
GATEWAY_IP=$(ip route | grep "default" | head -1 | awk '{print $3}')
if [ -n "$GATEWAY_IP" ]; then
ARP_COUNT=$(ip neigh show | grep "$GATEWAY_IP" | wc -l)
if [ $ARP_COUNT -gt 1 ]; then
print_warning "Gateway ($GATEWAY_IP) ma $ARP_COUNT wpisów w ARP!"
ip neigh show | grep "$GATEWAY_IP"
else
print_success "OK: Gateway ma 1 wpis w ARP"
fi
fi
echo ""
# Podsumowanie
print_header "PODSUMOWANIE DIAGNOSTYKI"
echo " Wykryta przyczyna: ${C_YELLOW}$DUP_CAUSE${C_RESET}"
echo ""
case $DUP_CAUSE in
"BOTH_ACTIVE")
echo " ${C_RED}Wi-Fi i Ethernet aktywne jednocześnie${C_RESET}"
echo " Rozwiązanie: Wyłącz jeden z interfejsów"
;;
"MULTI_ROUTE")
echo " ${C_RED}Wiele default routes${C_RESET}"
echo " Rozwiązanie: Usuń zbędne routes"
;;
"MULTI_WIFI"|"MULTI_ETH")
echo " ${C_YELLOW}Wiele interfejsów tego samego typu${C_RESET}"
echo " Rozwiązanie: Wyłącz zbędne interfejsy"
;;
*)
echo " ${C_YELLOW}Inna przyczyna (router, ISP, bridge)${C_RESET}"
echo " Rozwiązanie: Restart routera, sprawdź konfigurację"
;;
esac
echo ""
}
# ============================================================================
# NAPRAWA AUTOMATYCZNA
# ============================================================================
auto_fix_dup() {
print_header "AUTOMATYCZNA NAPRAWA DUP PACKETS"
# Fix 1: Wyłącz Ethernet jeśli Wi-Fi aktywne
print_info "Naprawa 1/6: Rozwiązanie konfliktu Wi-Fi/Ethernet..."
WIFI_UP=$(ip link show | grep "wlan.*state UP" | wc -l)
ETH_UP=$(ip link show | grep "eth.*state UP" | wc -l)
if [ $WIFI_UP -gt 0 ] && [ $ETH_UP -gt 0 ]; then
print_warning "Wykryto Wi-Fi i Ethernet aktywne - wyłączam Ethernet..."
# Wyłącz Ethernet (zachowaj Wi-Fi)
ETH_IFACES=$(ip link show | grep "eth.*state UP" | awk '{print $2}' | tr -d ':')
for iface in $ETH_IFACES; do
print_info " Wyłączam $iface..."
ip link set $iface down 2>/dev/null
done
sleep 2
print_success "Ethernet wyłączony, Wi-Fi pozostaje aktywne"
else
print_success "OK: Brak konfliktu Wi-Fi/Ethernet"
fi
# Fix 2: Flush routing table
print_info "Naprawa 2/6: Czyszczenie routing table..."
# Usuń wszystkie default routes
ip route | grep "default" | while read route; do
ip route del $route 2>/dev/null
done
# Restart dhcp client (przywróci domyślny route)
if [ $WIFI_UP -gt 0 ]; then
print_info " Restartowanie DHCP dla Wi-Fi..."
dhcpcd -k wlan0 2>/dev/null
sleep 1
dhcpcd wlan0 2>/dev/null
fi
sleep 2
print_success "Routing table wyczyszczony i odświeżony"
# Fix 3: Flush ARP cache
print_info "Naprawa 3/6: Czyszczenie ARP cache..."
ip neigh flush all 2>/dev/null
print_success "ARP cache wyczyszczony"
# Fix 4: Wyłącz IPv6 (może powodować DUP)
print_info "Naprawa 4/6: Wyłączanie IPv6..."
sysctl -w net.ipv6.conf.all.disable_ipv6=1 2>/dev/null
sysctl -w net.ipv6.conf.default.disable_ipv6=1 2>/dev/null
print_success "IPv6 wyłączony"
# Fix 5: Restart Wi-Fi
print_info "Naprawa 5/6: Restart Wi-Fi..."
svc wifi disable
sleep 3
svc wifi enable
sleep 5
print_success "Wi-Fi zrestartowany"
# Fix 6: Weryfikacja
print_info "Naprawa 6/6: Weryfikacja naprawy..."
echo ""
sleep 2
print_info "Test ping (5 pakietów)..."
PING_RESULT=$(ping -c 5 -W 2 1.1.1.1 2>&1)
DUP_COUNT=$(echo "$PING_RESULT" | grep -c "DUP!")
echo ""
echo "$PING_RESULT"
echo ""
if [ $DUP_COUNT -eq 0 ]; then
print_success "SUKCES! Brak duplikatów!"
print_success "Problem DUP został naprawiony"
return 0
else
print_warning "Nadal wykryto $DUP_COUNT duplikatów"
print_warning "Może to być problem z routerem lub ISP"
return 1
fi
}
# ============================================================================
# MANUAL FIX - Krok po kroku
# ============================================================================
manual_fix_menu() {
while true; do
print_header "MANUALNA NAPRAWA - WYBIERZ OPCJĘ"
echo " ${C_GREEN}1${C_RESET}) Wyłącz Ethernet (zostaw Wi-Fi)"
echo " ${C_GREEN}2${C_RESET}) Wyłącz Wi-Fi (zostaw Ethernet)"
echo " ${C_GREEN}3${C_RESET}) Flush routing table"
echo " ${C_GREEN}4${C_RESET}) Flush ARP cache"
echo " ${C_GREEN}5${C_RESET}) Wyłącz IPv6"
echo " ${C_GREEN}6${C_RESET}) Restart Wi-Fi"
echo " ${C_GREEN}7${C_RESET}) Test ping (sprawdź DUP)"
echo ""
echo " ${C_RED}0${C_RESET}) Powrót"
echo ""
printf "Twój wybór: "
read CHOICE
case $CHOICE in
1)
print_info "Wyłączanie Ethernet..."
ETH_IFACES=$(ip link show | grep "eth" | awk '{print $2}' | tr -d ':')
for iface in $ETH_IFACES; do
ip link set $iface down 2>/dev/null
print_success "$iface wyłączony"
done
;;
2)
print_info "Wyłączanie Wi-Fi..."
svc wifi disable
print_success "Wi-Fi wyłączony"
;;
3)
print_info "Czyszczenie routing table..."
ip route flush table main 2>/dev/null
print_success "Routing table wyczyszczony"
;;
4)
print_info "Czyszczenie ARP cache..."
ip neigh flush all 2>/dev/null
print_success "ARP cache wyczyszczony"
;;
5)
print_info "Wyłączanie IPv6..."
sysctl -w net.ipv6.conf.all.disable_ipv6=1 2>/dev/null
print_success "IPv6 wyłączony"
;;
6)
print_info "Restartowanie Wi-Fi..."
svc wifi disable && sleep 2 && svc wifi enable
print_success "Wi-Fi zrestartowany"
;;
7)
print_info "Test ping..."
echo ""
ping -c 5 1.1.1.1
echo ""
;;
0)
break
;;
*)
print_error "Nieprawidłowy wybór!"
;;
esac
echo ""
printf "${C_CYAN}Naciśnij Enter...${C_RESET}"
read
done
}
# ============================================================================
# MENU GŁÓWNE
# ============================================================================
show_menu() {
while true; do
clear
print_header "FIX DUP PACKETS v${VERSION} - Sagemcom DCTIW362P"
echo "${C_BOLD}OPCJE:${C_RESET}"
echo ""
echo " ${C_GREEN}1${C_RESET}) ${C_BOLD}Diagnostyka${C_RESET} (wykryj przyczynę DUP)"
echo " ${C_GREEN}2${C_RESET}) ${C_BOLD}Auto-fix${C_RESET} (automatyczna naprawa)"
echo " ${C_GREEN}3${C_RESET}) ${C_BOLD}Manual fix${C_RESET} (naprawa krok po kroku)"
echo " ${C_GREEN}4${C_RESET}) ${C_BOLD}Test ping${C_RESET} (sprawdź czy DUP zniknęły)"
echo ""
echo " ${C_RED}0${C_RESET}) Wyjście"
echo ""
printf "Twój wybór: "
read CHOICE
case $CHOICE in
1)
diagnose_dup
;;
2)
auto_fix_dup
;;
3)
manual_fix_menu
;;
4)
print_header "TEST PING"
print_info "Wysyłam 10 pakietów do 1.1.1.1..."
echo ""
ping -c 10 1.1.1.1
echo ""
;;
0)
print_info "Do zobaczenia!"
exit 0
;;
*)
print_error "Nieprawidłowy wybór!"
;;
esac
echo ""
printf "${C_CYAN}Naciśnij Enter...${C_RESET}"
read
done
}
# ============================================================================
# MAIN
# ============================================================================
main() {
# Sprawdź uprawnienia
if [ "$(whoami)" != "root" ] && [ "$(whoami)" != "shell" ]; then
print_warning "Uruchomiono jako: $(whoami)"
print_warning "Niektóre funkcje mogą wymagać uprawnień root"
echo ""
fi
# Parametry CLI
if [ "$1" = "--diagnose" ] || [ "$1" = "-d" ]; then
diagnose_dup
exit 0
elif [ "$1" = "--fix" ] || [ "$1" = "-f" ]; then
auto_fix_dup
exit $?
elif [ "$1" = "--test" ] || [ "$1" = "-t" ]; then
print_info "Test ping (10 pakietów)..."
echo ""
ping -c 10 1.1.1.1
exit 0
fi
# Menu interaktywne
show_menu
}
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment