Skip to main content

Wegvallende verbinding


Hallo allen,

 

Ik probeer een oplossing te vinden voor mijn verbinding die regelmatig wegvalt om de paar minuten, en wellicht hebben jullie nog suggesties. Snelheid is niet altijd een issue en ik haal regelmatig 200Mbit/s+.

Om uit te sluiten wat het probleem kan zijn heb ik WiFi op de Zyxel (Firmware: NR53_b7) uitgeschakeld en vanaf een ethernet poort getest. Zoals de onderstaande ping test naar Google’s DNS server laat zien dat er regelmatig hoge latency en packet drops zijn.

Packet drops

 

Ondanks dat ik 5/5 balkjes heb bij 5G lijkt me dat het issue bij die verbinding ligt, dus heb ik een script gemaakt wat elke minuut informatie van de Zyxel verzameld en de latency meet:

 

Zoals je ziet lijkt hij voornamelijk op de B1 en B3 banden te zitten en vrijwel nooit op de N28 of N78 band, maar bij elke band lijkt er hoge latency te onstaan (None betekent packet drops). Ik heb verschillende ramen in mijn appartement geprobeerd en daarnaast het raam gekozen wat op de dichstbijzijnde zendmast gericht is:
https://antennekaart.nl/kaart/5g?providers=odido&zoom=16&lat=52.32596993&lng=4.86166477

 

Helaas heb ik nog geen oplossing gevonden, dus ik ben benieuwd of jullie nog ideeën hebben.

January 24, 2025

​@Rutger093 Goed dat je onze community hebt gevonden en je vraag hier stelt. Ik help je natuurlijk graag verder! 

Ik ben meteen gaan kijken, maar op basis van jouw gegevens in je community profiel, kan ik geen abonnement vinden. Wil je dit nog eens nagaan? 

Mocht je bij een andere provider zitten dan ben je hier natuurlijk ook hartstikke welkom om informatie in te winnen, daar staat onze community voor. Ik weet zeker dat je je antwoord hier zal vinden! 

Laat je het mij weten als je zover bent? Dan kan ik gelijk met je meekijken! 

 

11 reacties

  • is een King Poster
  • January 22, 2025

Dat script wil ik ook wel gebruiken op mijn modem. Kan je dat delen?


  • Auteur
  • is een Top Poster
  • January 22, 2025

Dat script wil ik ook wel gebruiken op mijn modem. Kan je dat delen?

  

 Zeker, bij deze. Wellicht dat je wat kleine aanpassingen moet doen gezien het voor Linux is geschreven.

#!/usr/bin/env python3

import subprocess
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Router details
ROUTER_URL = "https://192.168.2.1"
USERNAME = "gebruikersnaam"
PASSWORD = "jouw-wachtwoord"
STATUS_URL = f"{ROUTER_URL}/CellWanStatus"

def login_to_router(driver):
# Open the router login page
driver.get(ROUTER_URL)
time.sleep(2) # Adjust based on page load time

# Enter username and password
username_field = driver.find_element(By.ID, "username")
password_field = driver.find_element(By.ID, "userpassword")

username_field.send_keys(USERNAME)
password_field.send_keys(PASSWORD)

# Find the login button and click it
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "loginBtn"))
)
login_button.click()

time.sleep(3) # Wait for login to complete

def fetch_metric(driver, metric_name):
# Navigate to the status page
driver.get(STATUS_URL)
time.sleep(2) # Adjust based on page load time

try:
# Switch to iframe if necessary
iframes = driver.find_elements(By.TAG_NAME, "iframe")
if iframes:
driver.switch_to.frame(iframes[0])

# Wait for the metric to appear and fetch its value
WebDriverWait(driver, 10).until(
EC.visibility_of_element_located(
(By.XPATH, f"//div[text()='{metric_name}']/following-sibling::div")
)
)
metric_element = driver.find_element(By.XPATH, f"//div[text()='{metric_name}']/following-sibling::div")
metric_value = metric_element.text.strip()
return metric_value
except Exception as e:
print(f"Error fetching {metric_name}: {e}")
return None
finally:
driver.switch_to.default_content()

def get_latency():
try:
result = subprocess.run(
["ping", "-c", "4", "8.8.8.8"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
if result.returncode == 0:
# Extract the average latency from the summary
for line in result.stdout.splitlines():
if "rtt min/avg/max/mdev" in line:
avg_latency = line.split("=")[1].split("/")[1].strip()
return int(float(avg_latency))
return None
except Exception as e:
print(f"Error getting latency: {e}")
return None


def main():
# Initialize the Firefox WebDriver
options = webdriver.FirefoxOptions()
options.add_argument("--headless")
options.add_argument("--ignore-certificate-errors")
driver = webdriver.Firefox(options=options)

try:
login_to_router(driver)
while True:
# Fetch metrics
sinr = fetch_metric(driver, "SINR (dB)")
rsrp = fetch_metric(driver, "RSRP (dBm)")
lte_band = fetch_metric(driver, "Band")
latency = get_latency()

print(f"SINR: {sinr}, RSRP: {rsrp}, LTE Band: {lte_band}, Latency: {latency} ms")

# Log metrics to a file
with open("metrics_log.txt", "a") as log_file:
log_file.write(
f"{time.strftime('%Y-%m-%d %H:%M:%S')} - "
f"SINR: {sinr}, RSRP: {rsrp}, LTE Band: {lte_band}, Latency: {latency} ms\n"
)

time.sleep(60) # Fetch metrics every minute
except Exception as e:
print(f"Error: {e}")
finally:
driver.quit()

if __name__ == "__main__":
main()

 


  • Auteur
  • is een Top Poster
  • January 23, 2025

Dat script wil ik ook wel gebruiken op mijn modem. Kan je dat delen?

 Jazeker, bij deze:

#!/usr/bin/env python3

import subprocess
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# Router details
ROUTER_URL = "https://192.168.2.1"
USERNAME = "gebruikersnaam"
PASSWORD = "jouw-wachtwoord"
STATUS_URL = f"{ROUTER_URL}/CellWanStatus"

def login_to_router(driver):
# Open the router login page
driver.get(ROUTER_URL)
time.sleep(2) # Adjust based on page load time

# Enter username and password
username_field = driver.find_element(By.ID, "username")
password_field = driver.find_element(By.ID, "userpassword")

username_field.send_keys(USERNAME)
password_field.send_keys(PASSWORD)

# Find the login button and click it
login_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "loginBtn"))
)
login_button.click()

time.sleep(3) # Wait for login to complete

def fetch_metric(driver, metric_name):
# Navigate to the status page
driver.get(STATUS_URL)
time.sleep(2) # Adjust based on page load time

try:
# Switch to iframe if necessary
iframes = driver.find_elements(By.TAG_NAME, "iframe")
if iframes:
driver.switch_to.frame(iframes[0])

# Wait for the metric to appear and fetch its value
WebDriverWait(driver, 10).until(
EC.visibility_of_element_located(
(By.XPATH, f"//div[text()='{metric_name}']/following-sibling::div")
)
)
metric_element = driver.find_element(By.XPATH, f"//div[text()='{metric_name}']/following-sibling::div")
metric_value = metric_element.text.strip()
return metric_value
except Exception as e:
print(f"Error fetching {metric_name}: {e}")
return None
finally:
driver.switch_to.default_content()

def get_latency():
try:
result = subprocess.run(
["ping", "-c", "4", "8.8.8.8"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
if result.returncode == 0:
# Extract the average latency from the summary
for line in result.stdout.splitlines():
if "rtt min/avg/max/mdev" in line:
avg_latency = line.split("=")[1].split("/")[1].strip()
return int(float(avg_latency))
return None
except Exception as e:
print(f"Error getting latency: {e}")
return None


def main():
# Initialize the Firefox WebDriver
options = webdriver.FirefoxOptions()
options.add_argument("--headless")
options.add_argument("--ignore-certificate-errors")
driver = webdriver.Firefox(options=options)

try:
login_to_router(driver)
while True:
# Fetch metrics
sinr = fetch_metric(driver, "SINR (dB)")
rsrp = fetch_metric(driver, "RSRP (dBm)")
lte_band = fetch_metric(driver, "Band")
latency = get_latency()

print(f"SINR: {sinr}, RSRP: {rsrp}, LTE Band: {lte_band}, Latency: {latency} ms")

# Log metrics to a file
with open("metrics_log.txt", "a") as log_file:
log_file.write(
f"{time.strftime('%Y-%m-%d %H:%M:%S')} - "
f"SINR: {sinr}, RSRP: {rsrp}, LTE Band: {lte_band}, Latency: {latency} ms\n"
)

time.sleep(60) # Fetch metrics every minute
except Exception as e:
print(f"Error: {e}")
finally:
driver.quit()

if __name__ == "__main__":
main()

 

 


Teresa van Odido
Moderator
Forum|alt.badge.img+5

​@Rutger093 Goed dat je onze community hebt gevonden en je vraag hier stelt. Ik help je natuurlijk graag verder! 

Ik ben meteen gaan kijken, maar op basis van jouw gegevens in je community profiel, kan ik geen abonnement vinden. Wil je dit nog eens nagaan? 

Mocht je bij een andere provider zitten dan ben je hier natuurlijk ook hartstikke welkom om informatie in te winnen, daar staat onze community voor. Ik weet zeker dat je je antwoord hier zal vinden! 

Laat je het mij weten als je zover bent? Dan kan ik gelijk met je meekijken! 

 


  • Auteur
  • is een Top Poster
  • January 24, 2025

​@Rutger093 Goed dat je onze community hebt gevonden en je vraag hier stelt. Ik help je natuurlijk graag verder! 

Ik ben meteen gaan kijken, maar op basis van jouw gegevens in je community profiel, kan ik geen abonnement vinden. Wil je dit nog eens nagaan? 

Mocht je bij een andere provider zitten dan ben je hier natuurlijk ook hartstikke welkom om informatie in te winnen, daar staat onze community voor. Ik weet zeker dat je je antwoord hier zal vinden! 

Laat je het mij weten als je zover bent? Dan kan ik gelijk met je meekijken! 

 

Bedankt voor het meekijken. Ik heb wat extra informatie betreft het klantnummer ingevuld.


Tommie van Odido
Moderator
Forum|alt.badge.img+13

Hey ​@Rutger093, je hebt op dit moment nog de oude firmware, hierop zijn de lage banden nog niet uitgeschakeld. Bij de nieuwe firmware zijn de lage banden uitgeschakeld, zal ik het modem laten upgraden om te kijken of het dan beter gaat? 


  • Auteur
  • is een Top Poster
  • January 27, 2025

Hey ​@Rutger093, je hebt op dit moment nog de oude firmware, hierop zijn de lage banden nog niet uitgeschakeld. Bij de nieuwe firmware zijn de lage banden uitgeschakeld, zal ik het modem laten upgraden om te kijken of het dan beter gaat? 

Prima, ik hoop dat dat het wat stabieler maakt.


Teresa van Odido
Moderator
Forum|alt.badge.img+5

​@Rutger093 Super, ik ga het voor je doorgeven! 


Tommie van Odido
Moderator
Forum|alt.badge.img+13

Hey ​@Rutger093, het modem lijkt offline te zijn, dan kunnen we de update niet uitvoeren. Zou je het modem aan willen zetten en mij een seintje willen geven? Dan laat ik de update uitvoeren! 


  • Auteur
  • is een Top Poster
  • January 29, 2025

Hey ​@Rutger093, het modem lijkt offline te zijn, dan kunnen we de update niet uitvoeren. Zou je het modem aan willen zetten en mij een seintje willen geven? Dan laat ik de update uitvoeren! 

​@Tommie van Odido Bijzonder, want de modem was volgens mij de gehele tijd online:

Laat maar even weten of hij ondertussen bereikbaar is, of dat ik aan mijn kant wat moet doen.


Tommie van Odido
Moderator
Forum|alt.badge.img+13

Hey ​@Rutger093, we kunnen hem nu wel bereiken. De update loopt!