La Fibre
Fournisseurs d'accès à Internet fixe en France métropolitaine => Orange / Sosh =>
Incidents Orange => Discussion démarrée par: halesk2k le 04 août 2025 à 17:51:06
-
Bonjour, je vais essayer d'être succin dans les informations pour exposer le problème.
Setup:
- Offre Sosh FTTH
- Livebox 4 (remplacé par un routeur perso) + ONT "Boitier Fibre Orange" d'origine (que j'utilise)
- Je scrap l'interface web de l'ONT pour grapher l'atténuation au fil du temps
Depuis Mars 2025, j'ai l'atténuation du signal optique qui est passée de -20dB très stable à une valeur qui varie entre -28dB et -30dB (voir graphique). Atténuation confirmé avec un testeur d'atténuation (voir photo).
Concrètement depuis ce moment là (même si ça s'est calmé dernièrement), j'ai des micro coupures de quelques secondes. Je m'en rends compte car je suis en télétravail et quasi en permanence connecté à des serveurs (ssh).
Pour faciliter le diag avec Sosh, j'ai rebranché la Livebox (durant 2 mois, le trou dans le graph) et contacté le support Sosh. La personne ne comprend pas ce que je lui explique et sur l'espace client du site Sosh est apparu un message du genre "Incident en cours dans votre quartier, résolution prévu en Avril", puis "en Mai", etc... jusqu'à "Aout". Pas chiant et compréhensif, j'ai donc pris mon mal en patience pendant tout ce temps (C'est chiant mais pas gravissime. Les coupures ne sont pas assez longue pour faire sauter les sessions, mais ca fait quand même des trous dans les appels VoIP/Visio et ssh freeze). Au final, 4 aout 2025, le message sur l'interface client du site de Sosh a disparu, mais rien n'a été fait...
Quelqu'un aurait une idée pour faire avancer cette histoire sans repartir pour 6 mois d'attente? Ou bien connaît un moyen d'avoir un support technique capable de comprendre et gérer ce genre de problème? Ou simplement, est-ce qu'il y a des techniciens Orange sur ce forum?
Merci par avance pour votre aide.
-
Il te faut probablement débrancher ton ONT pendant un jour ou deux et leur dire que tu as des soucis de connexion (plus de connexion, LED fibre rouge) pour qu'ils t'envoient un tech.
Sinon, si tu as accès au PM, vas y et vérifie que les connecteurs fibres sont bien enfichés... je mettrai un billet que c'est un tech qui "cherchait son laser" en débranchant/rebranchant chaque fibre, et qu'il n'a pas bien rebranché la tienne.
Tangente, mais qu'utilises tu pour scaper l'ONT? Je suppose que tu le fais en HTTP vu que l'interface telnet est désactivée par orange? As-tu moyen de partager le code de ton scraper?
-
J'y avais pensé, mais c'est malheureux d'en arriver à se débrancher pour générer une panne facilement compréhensible par le support de l'opérateur...
L'opérateur est sensé être quand même plus compétent que nous sur son infra. C'est vraiment ridicule.
Au final, la difficulté n'est pas d'expliquer le problème, mais de "rétro-ingénierer" le process support pour avoir de l'aide.
Pour le PM, j'avais acheté la clé "triangle" il y a des années pour me rebrancher tout seul au cas où (jamais eu besoin). Mais ils ont mis un cadena sur le PM maintenant.
J'ai rebranché la Livebox déjà, et je vais recontacter le support. Si ca bouge pas rapidement, je vais procéder à ta suggestion.
Pour la blague (pas drôle), je suis dans un des pires quartiers de France (ex Covage/Europ'Essonne), le PBO baigne dans l'eau, est habité par les limaces, la route optique attribuée à mon logement est HS (sectionnée à ras dans le PBO, pas assez de mou pour ressouder), donc je suis raccordé via un autre tube de 12 FO "pour usage futur" juste pour moi, en dehors de toute documentation... Je suis déjà monté assez haut dans la hierarchie, mais l'OI s'en tape complètement, l'Arcep pareil (signalement dans vent). Je suis saoulé.
Pour le graph d'atténuation: https://github.com/loiklo/huawei-onu-to-graphite/blob/main/huawei-onu-to-graphite-http.py
Y a une version pour taper l'ONT en telnet aussi dans le même repo git. Je l'utilisais avec l'ONT de mon précédent FAI, un "Boitier Fibre Orange" Huawei non rebrandé.
-
Je donne un avancement de mon problème.
J'ai réussi à avoir le support niveau 1 d'Orange/Sosh au téléphone. J'ai expliqué le problème, la personne ne sait pas ce qu'est l'atténuation (et je ne lui en veux pas) et sait juste me dire que ma livebox est actuellement connecté et ne voit pas de déconnexion.
Cependant, je vais tout de même être rappelé par un "expert" (terme Orange) vendredi midi.
-
Oui, le terme d'atténuation n'est souvent pas celui qui est utilisé pour les liens optiques. On parle de puissance optique reçue bien plus souvent.
Mais je ne suis pas sûr que ton intervenant aurait mieux réagi :)
Merci pour le lien, je vais voir comment je peux faire tourner ca.
-
Bon bah vendredi midi est passé, le RdV était entre 12h et 13h, j'ai même reçu un SMS ce matin à 11h50 pour me confirmer le RdV. Il est 16h46, j'attends toujours :) Ils ont peut-être des problèmes de téléphone chez Orange? (dsl pour le sarcasme...)
Je sais pas si c'est la chaleur qui détend les fibres et flingue le signal encore plus, mais actuellement à -29,90 dBm... Je sais même pas comment le signal passe encore. A l'époque où j'étais chez K-Net avec l'ONT de l'OI (une Huawey un peu comme le "boitier fibre d'Orange"), ca décrochait à environ -25dBm.
-
Il y a deux côtés à la transmission, et ca peut potentiellement "décrocher" car l'OLT n'arrive plus à décoder le signal transmis par ton ONT.
Mais oui, -29dBm ca commence à faire peu...
-
Il y a deux côtés à la transmission, et ca peut potentiellement "décrocher" car l'OLT n'arrive plus à décoder le signal transmis par ton ONT.
Effectivement, il y a aussi l'autre coté. Après, je relève aussi la puissance d'émission de l'ONT (screenshot) qui fluctue avec le temps. Je spécule mais j'imagine que l'OLT envoi à l'ONT la puissance qu'elle reçoit pour pour que l'ONT ajuste la puissance d'émission.
Entre temps, j'ai essayé de trouver un peu de documentation sur le GPON. Il y a différente classe qui définissent la plage d'atténuation. Le GPON classique pour le grand public, il semblerait que les opérateurs choisissent de la classe B, j'imagine que c'est le bon compromis entre spec et prix. Pour info (si ça intéresse du monde):
- Classe A: -5 / -20dBm
- Classe B: -10 / -25dBm
- Classe C: -15 / -30dBm
On a aussi les classe B+ et C+, qui définissent des atténuation possible "jusqu'à" -28dBm pour la classe B+ et -32dBm pour la classe C+.
Quoi qu'il en soit, le "Boitier Fibre Orange" est un Huawei HG8010H (c'est écrit derrière). Et quand on regarde les specs (pièce jointe de ce message) on a "GPON Port / Class B+ / Receiver sensitivity: -27dBm".
Donc clairement, je dois être tombé sur un beau lot car il tient même au delà des specs. Malgré les "décrochages" de temps en temps, j'arrive quand même à avoir quelque chose.
Faudrait que je retrouve mon ancienne ONT, mais vu qu'elle décrochait au delà de -25dBm. Je pense que ça devait être une Classe B "simple".
Sinon, j'ai recontacté le support Sosh hier via le chat. En toute transparence, je mets le chat. Je n'ai pas d'avis sur le fond, ils font juste leur travail en suivant leurs procédures. Sur la forme par contre, il se passe au moins 30mn entre chaque message... La conversation qui a commencé hier à 16h30 s'est terminée ce matin à 10h30.
Concernant la proposition de changement de Livebox, ça ne convient pas du tout:
- J'ai la même atténuation avec mon "optical power meter", donc le problème ne vient pas de la livebox, ni de l'ont.
- J'ai la chance d'avoir une ONT bien fabriqué très tolérante qui tient globalement le signal à presque -30dBm. C'est pas parfait, mais en attendant j'ai Internet. J'ai pas envi de me retrouver avec une LB moins tolérante qui ne sync pas.
- Comme d'habitude, le problème, c'est que la fibre a été pliée ou que l’âme a été cassée sur la route (je suis la dernière maison de la route optique, et y a au moins 10 PBO avant moi). Quand on voit les fluctuations entre -28 et -30dBm et que même la température arrive à faire varier sa valeur, c'est qu'une question de temps pour que ca tombe -29 / -31 dBm. Ca fait 6 mois que ca dur, c'est pas cool d'avoir une connexion qui marche quand j'ai de la chance en fonction du sens du vent et de la température...
source sur le gpon/ont:
https://fr.fibresplitter.com/info/ftth-optical-distribution-network-39176333.html
https://community.fs.com/fr/article/basic-knowledge-about-gpon-sfp-transceivers.html
https://www.router-switch.com/pdf2html/pdf/hg8m8010heu6-datasheet.pdf
-
Concernant la proposition de changement de Livebox, ça ne convient pas du tout:
Très sincèrement, accepte leur proposition, ne serait-ce que pour faire avancer le process.
Certes ça va pas résoudre le pb, mais ça va permettre d'aller à la prochaine étape : envoi d'un technicien (?).
Au moins tu as déjà une petite victoire : ils admettent la puissance dégradée, tu as un écrit pour demander un geste co :)
-
Le problème, c'est que pour l'instant, et depuis 6 mois, j'ai internet malgré le passage de -20 à -29. Les coupures sont supportables. Je m'occupe de ça car j'ai plus de temps et comme je vois que ça se dégrade, je prends un peu d'avance avant que ça ne fonctionne plus du tout :)
Si je change de LB, je vais forcement changer d'ONT, qu'elle soit intégré à la LB5, externe ou SFP. Et comme pour l'instant, j'ai l'impression que j'ai une "golden" ONT très tolérante, je risque de tomber avec une ONT de remplacement moins bien qui va soit pas accrocher, soit décrocher plus souvent.
T'as peut-être pas lu tout ce que j'ai écrit plus haut, mais le problème chez moi, c'est que le réseau fibre est assez ancien et n'a pas été correctement entretenu, et je suis sur une fibre qui n'est pas documenté (la fibre attribué à mon domicile est HS)... Donc si j'ai plus Internet du tout, j'ai aucun délai de rétablissement (j'ai déjà fait plusieurs mois sans Internet...).
Si j'étais sure que ca soit rétabli en cas de coupure totale, ca me dérangerait moins, mais j'en ai pas la moindre certitude.
J'attends de voir déjà l'expert de 16h. Je viendrais rendre compte ici.
-
Appel reçu, un technicien Orange qui, après mon explication, m'a confirmé qu'il voyait bien sur l'OLT une atténuation importante au niveau de mon ONT.
RdV physique avec un technicien lundi matin entre 8h et 13h. Je viendrais ici vous tenir au courant.
Pour info, je suis maintenant à -30dBm :o Elle tient bien le coup cette petite ONT.
-
Suite et fin de l'histoire avec 3 bonnes nouvelles.
1/ La fibre était HS, j'ai été bougé sur une autre fibre dans le même tube. Je suis de nouveau à -20dBm. Je sais maintenant en plus que l'ONT que j'ai est très tolérante et peut "monter" à -30dBm.
2/ Depuis la dernière période d'incidents en boucle, l'outil de gestion a évolué (Covage => Altitude?) et le technicien a pu faire une mutation dans le référentiel afin que la route optique soit officiellement rattaché à mon habitation. Je ne suis plus dans la zone grise et je peux donc changer d'opérateur sans flipper de ne plus avoir Internet.
3/ Suite à mon acharnement d'il y a quelques années, le tube de 12FO inutilisées qui m'avait été attribué, à l'arrache sans documentation, à moi tout seul est maintenant le tube "officiel" du PBO. Donc pour moi et mes 4 autres voisins, on devrait être tranquille sur le vol de fibre. Et comme tout le monde est raccordé, il n'y a plus de raison de mettre les mains dans ce PBO.
-
Félicitation !
Comme quoi, il ne faut rien lâcher pour se faire entendre !
-
Solide ton ONT :-)
Bien joué en tout cas. Tu m'as rendu curieux avec tes graphes, je vais mettre en place le script de scraping sous peu.
-
Pour info, sur l'interface web de mon HG8010H (fourni par Orange), j'ai dans la colonne "Reference Value" pour "RX Optical Power" une valeur de "-30 to -8 dBm".
Donc l'ONT semble pouvoir détecter un signal jusqu'à -30dBm. Au dessus de -8dBm, il serait probablement aveuglé.
-
Pour la même ref, le mien,fourni par Covage, donne : -27 to -8 dBm
Manufacturer:Huawei Technologies Co., Ltd;
ProductClass:HG8010H;
SerialNumber:xxxxxxxxxxxxxx;
IP:xxxxxxxxx;
HWVer:AD5.A;
SWVer:V3R017C10S100;
-
L'ONT d'Orange a un firmware custom (marqué FT dans l'une des pages, d'ailleurs) et le hardware version n'a pas la même forme chez moi. Difficile de savoir si c'est lié à un hardware différent, simplement à un paramètre software ou si ton ONT tiendrait jusqu'à -30dBm...
-
Si ca intéresse quelqu'un, j'ai repris le script python et l'ai un peu amélioré pour gérer les exceptions et collecter plus de metrics (dont le statut d'enregistrement sur l'arbre):
#!/usr/bin/env python3
import socket
import requests
import base64
import time
## Default
#ont_host = "192.168.100.1"
#ont_username = "root"
#ont_password = "adminHW"
## Orange custom
#ont_host = "192.168.4.254"
#ont_username = "root"
#ont_password = "admin"
req_timeout_s = 2
# User vars
ont_host = "192.168.4.254"
ont_username = "root"
ont_password = "admin"
graphite_host = "localhost"
graphite_port = 2003
graphite_prefix = "ont0"
# precompute the password
ont_password = base64.b64encode(ont_password.encode())
# Python method to test if a string is a float
def isfloat(value):
try:
float(value)
return True
except ValueError:
return False
# Build URL prefix
ont_urlprefix = "http://" + ont_host
carbon_socket = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
# Start http session
ont_session = requests.Session()
starttime = time.monotonic()
session_active = False
print("running")
while True:
graphite_data = []
time.sleep(10.0 - ((time.monotonic() - starttime) % 10.0))
starttime = time.monotonic()
if session_active != True:
# grab a session ID and authenticate to the ONT
try:
res = ont_session.post(ont_urlprefix + "/asp/GetRandCount.asp", timeout=req_timeout_s)
res.close()
if res.status_code != 200:
raise Exception("non-200 status code")
except Exception as e:
print("failed to get session id: {:s}".format(str(e)))
# try to login again on the next tick
continue
sid = res.text[-32:]
headers = {"Cookie": "Cookie=body:Language:english:id=-1"}
auth_data = {"UserName": ont_username, "PassWord": ont_password, "x.X_HW_Token": sid}
try:
res = ont_session.post(ont_urlprefix + "/login.cgi", headers=headers, data=auth_data, timeout=req_timeout_s)
res.close()
if res.status_code != 200:
raise Exception("non-200 status code")
except Exception as e:
print("failed to execute login request: {:s}".format(str(e)))
# try to login again on the next tick
continue
session_active = True
# get optical transceiver stats
try:
res = ont_session.get(ont_urlprefix + "/html/amp/opticinfo/opticinfo.asp", timeout=req_timeout_s)
res.close()
if res.status_code != 200:
raise Exception("non-200 status code")
else:
# mark the current time for metrics timestamping
current_date = int(time.time())
# parse the results
for line in res.text.split("\n"):
if line.startswith('var opticInfos = new Array'):
opticInfos_split = line.split("\",\"")
# ensure we have enough chunks to proceed
if len(opticInfos_split) < 6:
break
# tx power
result_TxPower = opticInfos_split[1]
if isfloat(result_TxPower):
graphite_data.append("{:s}.tx_power_dBm {:f} {:d}".format(graphite_prefix, float(result_TxPower), current_date))
# rx power
result_RxPower = opticInfos_split[2]
if isfloat(result_RxPower):
graphite_data.append("{:s}.rx_power_dBm {:f} {:d}".format(graphite_prefix, float(result_RxPower), current_date))
# voltage
result_Voltage = opticInfos_split[3]
if str(result_Voltage).isdigit():
graphite_data.append("{:s}.voltage_mV {:d} {:d}".format(graphite_prefix, int(result_Voltage), current_date))
# bias current
result_BiasCurrent = opticInfos_split[5]
if str(result_BiasCurrent).isdigit():
graphite_data.append("{:s}.bias_current_mA {:d} {:d}".format(graphite_prefix, int(result_BiasCurrent), current_date))
# temperature
result_Temperature = opticInfos_split[4]
if str(result_Temperature).isdigit():
graphite_data.append("{:s}.temperature_C {:d} {:d}".format(graphite_prefix, int(result_Temperature), current_date))
break
except Exception as e:
print("failed to poll transceiver stats: {:s}".format(str(e)))
# get device status
try:
res = ont_session.get(ont_urlprefix + "/html/ssmp/deviceinfo/deviceinfocut.asp", timeout=req_timeout_s)
res.close()
if res.status_code != 200:
raise Exception("non-200 status code")
else:
# mark the current time right after reading the response
current_date = int(time.time())
lines_found = 0
# parse results
for line in res.text.split("\n"):
if line.startswith('var ontInfos = new Array'):
lines_found += 1
ontInfos_split = line.split("\"")
# ensure we have enough chunks to proceed
if len(ontInfos_split) < 3:
continue
# ONT registration status
if len(ontInfos_split[5]) == 2 and ontInfos_split[5][0] == 'O' and ontInfos_split[5][1].isdigit():
graphite_data.append("{:s}.ont_registration_status {:d} {:d}".format(graphite_prefix, int(ontInfos_split[5][1]), current_date))
# ONT ID
if ontInfos_split[3].isdigit():
graphite_data.append("{:s}.ont_id {:d} {:d}".format(graphite_prefix, int(ontInfos_split[3]), current_date))
elif line.startswith('var cpuUsed = '):
lines_found += 1
ontInfos_split = line.split("\'")
if len(ontInfos_split) != 3:
continue
# CPU used
if len(ontInfos_split[1]) >= 2 and ontInfos_split[1][-1] == '%' and ontInfos_split[1][0:-1].isdigit():
graphite_data.append("{:s}.cpu_used_pc {:d} {:d}".format(graphite_prefix, int(ontInfos_split[1][0:-1]), current_date))
elif line.startswith('var memUsed = '):
lines_found += 1
ontInfos_split = line.split("\'")
if len(ontInfos_split) != 3:
continue
# memory used
if len(ontInfos_split[1]) >= 2 and ontInfos_split[1][-1] == '%' and ontInfos_split[1][0:-1].isdigit():
graphite_data.append("{:s}.memory_used_pc {:d} {:d}".format(graphite_prefix, int(ontInfos_split[1][0:-1]), current_date))
if lines_found == 3:
break
except Exception as e:
print("failed to poll ONT status: {:s}".format(str(e)))
# since the ONT replies with 200/OK to unauthenticated requests, treat the absence of
# metrics as a signal to re-authenticate
if len(graphite_data) == 0:
print("no metrics, re-authenticating")
session_active = False
# logout
try:
ont_session.post(ont_urlprefix + "/logout.cgi?RequestFile=html/logout.html", timeout=req_timeout_s)
res.close()
if res.status_code != 200:
raise Exception("non-200 status code")
except Exception as e:
print("failed to perform logout request: {:s}".format(str(e)))
continue
try:
carbon_socket.sendto(("\n".join(graphite_data)).encode(), (graphite_host, graphite_port))
except Exception as e:
print("failed to push graphite metrics: {:s}".format(str(e)))
exit(2)
qui émet quelque chose comme cela toutes les 10s:
ont0.tx_power_dBm 2.060000 1755187721
ont0.rx_power_dBm -20.660000 1755187721
ont0.voltage_mV 3253 1755187721
ont0.bias_current_mA 7 1755187721
ont0.temperature_C 46 1755187721
ont0.ont_registration_status 5 1755187722
ont0.ont_id 106 1755187722
ont0.cpu_used_pc 14 1755187722
ont0.memory_used_pc 70 1755187722
Notez que j'émets en UDP et non en TCP comme le script original, donc il faudra probablement adapter si votre collecteur graphite n'écoute pas en UDP.
Python n'est pas mon language de prédilection, tapez pas trop fort si un PEP a été blessé lors de la rédaction de ce script :-)