Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)

Ce projet correspond aux anomalies ou aux demandes d’évolutions logicielles pour le Freebox Server.

Pour des problèmes de ligne ADSL ou Fibre, vous devez vous adresser directement au 3244.
N’indiquez ici que les bugs ou les demandes d’évolution concernant le Freebox Server.

Pour les remarques concernant le Freebox Player Révolution (V6), vous pouvez le faire sur la page dédiée.
Pour les remarques concernant la Freebox Mini 4K, vous pouvez le faire sur la page dédiée.
Pour les remarques concernant le Freebox Player Devialet (V7), vous pouvez le faire sur la page dédiée.
Pour les remarques concernant le Freebox Player Pop (V8), vous pouvez le sur la page dédiée.

Effectuez la mise à jour de votre Freebox Server vers la dernière version annoncée sur l'historique des mises à jour Freebox Server

Vérifiez que votre problème ou votre demande d’évolution n’a pas déjà été posté auparavant.

Merci d’avance.

ID Opened Last Edited Task Type Category  asc Operating System Status Summary
2020303/05/201603/05/2016AnomalieAPITousNouveauAutorisation et accès RRD Task Description

L’accès aux variables RRD nécessite une autorisation supplémentaire de “Modifications des réglages de la Freebox”, alors qu’ils sont en lecture seule, et que rien ne l’indique dans la documentation.

Dans le cadre du développement d’un plugin pour Rainmeter (https://github.com/Kitof/RainFbx), je dois demander aux utilisateurs d’activer cette autorisation ce qui est de manière à les inquiéter sans raison particulière.

2040402/07/201620/01/2021AnomalieAPITousNouveauProbléme API v3 SDK "Get Token" Task Description

Bonjour,
En me basant sur le sdk (http://dev.freebox.fr/sdk/os/login/#make-an-authenticated-call-to-the-api) je n’arrive pas à m’authentifier .
J’interroge la freebox en PHP avec php-curl.

POST /api/v3/login/authorize/ me retourne HTTP/1.1 200 OK - {”msg”:”Requête invalide (404)”,”success”:false,”error_code”:”invalid_request”}bool(true)

L’erreur vient de la documentation.

Merci

2060926/08/201607/04/2024AnomalieAPITousNouveauGET /api/v3/login/authorize/{tid} retourne du code JS d... Task Description

GET /api/v3/login/authorize/{tid} Quelque soit le tid la requête me retourne :

{"success":true,"result":{"status":"granted","challenge":["var _pmtrqgv = { _dotl: '_mviD' }; _pmtrqgv._dotl.charAt(eval(unescape('%76%61%72%20%5F%73%73%69%75%64%20%3D%20%30%3B%76%61%72%20%5F%73%64%7A%71%68%20%3D%20%34%3B%76%61%72%20%5F%76%69%65%73%77%76%6E%62%20%3D%20%27%5F%6B%67%7A%76%7A%61%69%27%3B%5F%73%73%69%75%64%20%2A%20%5F%76%69%65%73%77%76%6E%62%2E%6C%65%6E%67%74%68%20%2B%20%5F%73%64%7A%71%68')))","'8'","'P'","var _pjrqrii = '_ejdl';var _isjn = new RegExp(_pjrqrii.charAt(eval(unescape('%28%28%31%20%2A%20%38%20%2D%20%34%29%20%2F%20%34%29'))), 'g');String.fromCharCode(_pjrqrii.replace(_isjn, 's').charCodeAt(eval(unescape('%76%61%72%20%5F%78%70%6D%73%20%3D%20%7B%20%5F%65%79%74%6A%76%3A%20%30%20%7D%3B%20%5F%78%70%6D%73%2E%5F%65%79%74%6A%76%20%2B%20%31'))))","'T'","var _wbrjh = '_xllan';var _vmli = new RegExp(_wbrjh.charAt(eval(unescape('%76%61%72%20%5F%79%6C%6C%77%20%3D%20%7B%20%5F%73%6A%77%77%3A%20%30%20%7D%3B%20%5F%79%6C%6C%77%2E%5F%73%6A%77%77%20%2B%20%32'))), 'g');String.fromCharCode(_wbrjh.replace(_vmli, 'U').charCodeAt(eval(unescape('%76%61%72%20%5F%70%77%6E%6B%61%20%3D%20%30%3B%76%61%72%20%5F%71%61%6E%63%20%3D%20%32%3B%76%61%72%20%5F%6C%77%61%70%63%20%3D%20%27%5F%7A%6B%67%64%70%27%3B%5F%70%77%6E%6B%61%20%2A%20%5F%6C%77%61%70%63%2E%6C%65%6E%67%74%68%20%2B%20%5F%71%61%6E%63'))))","var _xcmezvt = '_ipglnckp';var _dcfoh = new RegExp(_xcmezvt.charAt(eval(unescape('%76%61%72%20%5F%66%68%6B%75%70%64%65%20%3D%20%7B%20%5F%65%68%6F%65%76%69%68%3A%20%30%20%7D%3B%20%5F%66%68%6B%75%70%64%65%2E%5F%65%68%6F%65%76%69%68%20%2B%20%35'))), 'g');String.fromCharCode(_xcmezvt.replace(_dcfoh, 'O').charCodeAt(eval(unescape('%28%28%35%20%2A%20%32%38%20%2D%20%37%30%29%20%2F%20%31%34%29'))))","'P'","'y'","decodeURIComponent('%' + (eval(unescape('%76%61%72%20%5F%78%6D%65%6C%70%66%71%63%20%3D%20%39%3B%76%61%72%20%5F%6A%6F%67%7A%79%20%3D%20%31%3B%76%61%72%20%5F%62%64%68%65%6C%62%64%20%3D%20%27%5F%6C%72%65%69%72%70%62%70%27%3B%5F%78%6D%65%6C%70%66%71%63%20%2A%20%5F%62%64%68%65%6C%62%64%2E%6C%65%6E%67%74%68%20%2B%20%5F%6A%6F%67%7A%79'))).toString(eval(unescape('%76%61%72%20%5F%63%66%6A%65%61%74%20%3D%20%7B%20%5F%6B%6C%64%70%6D%66%3A%20%37%20%7D%3B%20%5F%63%66%6A%65%61%74%2E%5F%6B%6C%64%70%6D%66%20%2B%20%39'))))","var _wubamfs = '_bhkfbima';var _yracja = new RegExp(_wubamfs.charAt(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%34%2E%35%33%29%20%2B%20%33%20%2D%20%31'))), 'g');String.fromCharCode(_wubamfs.replace(_yracja, 'Q').charCodeAt(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%36%2E%39%38%29%20%2B%20%31%20%2D%20%31'))))","var _sqcuor = { _oquhhfk: '_wkxselia' }; _sqcuor._oquhhfk.charAt(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%31%2E%39%33%29%20%2B%20%31%20%2D%20%31')))","'+'","decodeURIComponent('%' + (eval(unescape('%76%61%72%20%5F%62%69%66%65%74%20%3D%20%7B%20%5F%64%79%73%79%6D%76%69%3A%20%31%37%20%7D%3B%20%5F%62%69%66%65%74%2E%5F%64%79%73%79%6D%76%69%20%2B%20%35%36'))).toString(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%33%2E%37%30%29%20%2B%20%31%33%20%2D%20%31'))))","var _chaxsme = '_ecdjguqf';var _rwek = new RegExp(_chaxsme.charAt(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%34%2E%39%34%29%20%2B%20%32%20%2D%20%31'))), 'g');String.fromCharCode(_chaxsme.replace(_rwek, 'H').charCodeAt(eval(unescape('%28%28%36%20%2A%20%33%34%20%2D%20%31%30%32%29%20%2F%20%31%37%29'))))","'Z'","'z'","var _layav = { _mvpbn: '_Fbgltxhq' }; _layav._mvpbn.charAt(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%31%2E%38%36%29%20%2B%20%30%20%2D%20%31')))","decodeURIComponent('%' + (eval(unescape('%28%28%37%30%20%2A%20%31%36%20%2D%20%35%36%30%29%20%2F%20%38%29'))).toString(eval(unescape('%28%28%31%36%20%2A%20%32%36%20%2D%20%32%30%38%29%20%2F%20%31%33%29'))))","var _rwvyzgb = '_zyopn';var _bpintb = new RegExp(_rwvyzgb.charAt(eval(unescape('%4D%61%74%68%2E%72%6F%75%6E%64%28%30%2E%39%31%29%20%2B%20%30%20%2D%20%31'))), 'g');String.fromCharCode(_rwvyzgb.replace(_bpintb, '5').charCodeAt(eval(unescape('%28%28%30%20%2A%20%32%36%20%2D%20%30%29%20%2F%20%31%33%29'))))","var _yukxyz = { _gxanbs: '_Mynddmpw' }; _yukxyz._gxanbs.charAt(eval(unescape('%31')))","'x'","var _hhnd = { _ienyekft: 'txihjy' }; _hhnd._ienyekft.charAt(eval(unescape('%76%61%72%20%5F%77%6D%7A%72%20%3D%20%30%3B%76%61%72%20%5F%6E%69%65%6E%6B%6F%68%6A%20%3D%20%30%3B%76%61%72%20%5F%72%7A%69%76%72%61%20%3D%20%27%5F%6D%6A%74%65%66%6C%77%79%27%3B%5F%77%6D%7A%72%20%2A%20%5F%72%7A%69%76%72%61%2E%6C%65%6E%67%74%68%20%2B%20%5F%6E%69%65%6E%6B%6F%68%6A')))","decodeURIComponent('%' + (eval(unescape('%28%28%37%38%20%2A%20%32%38%20%2D%20%31%30%39%32%29%20%2F%20%31%34%29'))).toString(eval(unescape('%31%36'))))","var _stnjdc = { _pzikvu: '_jauwtq' }; _stnjdc._pzikvu.charAt(eval(unescape('%35')))","var _uipq = { _byax: '_uuc9tnhs' }; _uipq._byax.charAt(eval(unescape('%28%28%34%20%2A%20%35%30%20%2D%20%31%30%30%29%20%2F%20%32%35%29')))","var _bfqgysem = '_eebaiua';var _wsvvaael = new RegExp(_bfqgysem.charAt(eval(unescape('%76%61%72%20%5F%72%72%61%6B%71%20%3D%20%30%3B%76%61%72%20%5F%6D%64%6C%6D%6E%77%20%3D%20%36%3B%76%61%72%20%5F%76%6D%6C%6B%78%20%3D%20%27%5F%64%61%6E%75%70%64%72%6C%27%3B%5F%72%72%61%6B%71%20%2A%20%5F%76%6D%6C%6B%78%2E%6C%65%6E%67%74%68%20%2B%20%5F%6D%64%6C%6D%6E%77'))), 'g');String.fromCharCode(_bfqgysem.replace(_wsvvaael, '0').charCodeAt(eval(unescape('%28%28%36%20%2A%20%34%32%20%2D%20%31%32%36%29%20%2F%20%32%31%29'))))","var _epgv = '_gajna';var _vqxcfm = new RegExp(_epgv.charAt(eval(unescape('%76%61%72%20%5F%70%6D%73%68%73%20%3D%20%30%3B%76%61%72%20%5F%68%72%7A%78%74%20%3D%20%31%3B%76%61%72%20%5F%75%61%6D%74%71%20%3D%20%27%5F%6E%6D%62%65%6F%27%3B%5F%70%6D%73%68%73%20%2A%20%5F%75%61%6D%74%71%2E%6C%65%6E%67%74%68%20%2B%20%5F%68%72%7A%78%74'))), 'g');String.fromCharCode(_epgv.replace(_vqxcfm, '0').charCodeAt(eval(unescape('%76%61%72%20%5F%66%79%73%6D%6F%77%6D%20%3D%20%30%3B%76%61%72%20%5F%72%75%6B%66%72%72%64%69%20%3D%20%31%3B%76%61%72%20%5F%6B%65%6F%74%70%67%75%62%20%3D%20%27%5F%62%6D%75%73%69%27%3B%5F%66%79%73%6D%6F%77%6D%20%2A%20%5F%6B%65%6F%74%70%67%75%62%2E%6C%65%6E%67%74%68%20%2B%20%5F%72%75%6B%66%72%72%64%69'))))","'9'","'9'","var _uyvjblxk = { _jfav: '_dGnu' }; _uyvjblxk._jfav.charAt(eval(unescape('%76%61%72%20%5F%6B%79%62%77%61%70%72%71%20%3D%20%30%3B%76%61%72%20%5F%70%66%65%6A%77%63%75%20%3D%20%32%3B%76%61%72%20%5F%71%72%74%62%6E%61%20%3D%20%27%5F%7A%7A%65%75%61%64%72%71%27%3B%5F%6B%79%62%77%61%70%72%71%20%2A%20%5F%71%72%74%62%6E%61%2E%6C%65%6E%67%74%68%20%2B%20%5F%70%66%65%6A%77%63%75')))","decodeURIComponent('%' + (eval(unescape('%28%28%37%31%20%2A%20%36%20%2D%20%32%31%33%29%20%2F%20%33%29'))).toString(eval(unescape('%28%28%31%36%20%2A%20%32%38%20%2D%20%32%32%34%29%20%2F%20%31%34%29'))))"],"password_salt":"XaU04Zrv8txl1NRJ6lJpBHcnGIFIaiiz"}}

Plus lisible sur pastebin.
OS v3.3.2

2373230/12/201824/10/2021AnomalieAPIFreebox Server V7 (Delta)NouveauDocs api delta 6.0 Task Description

Pas de doc pour la version 6.0 des api freebox

2898512/11/201920/01/2021ÉvolutionAPITousNouveauAPI de récupération des sessions Task Description

Bonjour,

J’utilise les APIs du serveur de la freebox et j’ai identifié qu’il existait une API de récupération des sessions (c-a-d une liste des sessions des applications tierces connectées aux API). Cette API correspond à “Gestion des accès > Sessions” dans l’interface web accessible depuis mafreebox.freebox.fr.

L’API semble être accessible depuis l’url http://mafreebox.freebox.fr/api/v6/sessions mais lorsque je l’appelle avec ma propre application (qui possède son propre app_token préalablement granted), j’ai un code retour 403 (Unauthorized).

Que dois-je faire pour pouvoir accéder à cette API ?

Merci bcp pour votre aide

Bien cordialement,

Jean-Baptiste

3041020/04/202021/04/2020AnomalieAPITousNouveauImpossible de se connecter via freebox compagnon Task Description

Bonjour,

Je viens de changer de freebox server et je n’arrive pas à me connecter à ma box en utilisant l’application smartphone freebox compagnon.
J’ai un message d’erreur : “Erreur
Failed to connect to ...” (adresse IP)

Je ne peux pas choisir ma box.
Je suis bien connecté en WiFi.
Je peux me connecter à ma box freebox OS via internet mais ça ne fonctionne pas via l’application freebox compagnon.
J’ai essayé de désinstaller / réinstaller plusieurs fois.

L’adresse IP indiquée dans le message d’erreur freebox compagnon est différente de l’adresse IP indiqué dans les paramètres de freebox OS.

3206225/08/202020/01/2021AutreAPITousNouveauAjouter CGU pour Apple Store Task Description

Bonjour,

Apple demande des CGU ou tout autre texte qui authorise un dev indépendant d’utiliser l’api REST de la freebox. Rien n’est mentionné sur le site.

Quelques lignes disant que l’on peut faire des application IOS + Android avec l’api serait vraiment bien.
Et aussi que l’on peut mentionner le nom “Free” ou “Freebox” tant que ça reste nominatif genre “pour Freebox ...” ce serait vraiment pratique aussi.

J’ai plusieurs applications sur la store et j’ai sans arrêt des soucis vu qu’on ne trouve aucun texte ou CGU.
Désolé si ce n’est pas le bon endroit mais je ne sais pas du tout où poster ça à part sur un truc de dev.

Merci

3317220/11/202008/01/2021AnomalieAPITousNouveauDisparition des entêtes HTTP Task Description

Bonjour,

Les entêtes HTTP des fichiers proposés par l’API, comme les logos des chaînes, ne sont plus disponibles.
Sauf erreur de ma part, la requête suivante fonctionnait il y a peu :

curl -I http://mafreebox.freebox.fr/api/v8/tv/img/channels/logos68x60/uuid-webtv-201.png

Désormais, elle retourne :

HTTP/1.1 404 Not Found
Server: nginx
Date: Fri, 20 Nov 2020 17:24:52 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive

Ce comportement est aberrant puisque la ressource existe bel et bien.
Ainsi, la requête GET correspondante fonctionne :

curl -I -X GET http://mafreebox.freebox.fr/api/v8/tv/img/channels/logos68x60/uuid-webtv-201.png
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 20 Nov 2020 17:28:02 GMT
Content-Type: image/png; charset=utf-8
Content-Length: 1777
Connection: keep-alive
Last-Modified: Wed, 18 Nov 2020 11:31:39 GMT
ETag: "5fb5061b-6f1"
Expires: Wed, 25 Nov 2020 11:55:21 GMT
Cache-Control: max-age=604800
Accept-Ranges: bytes

Cette régression a vraisemblablement été introduite dans Freebox OS peu avant le 26 août.

Merci :)

3395603/02/202124/10/2021ÉvolutionAPIFreebox Server V7 (Delta)NouveauMise à jour de la documentation API Task Description

Bonjour,

A ce jour, la documentation disponible dans l’interface de Freebox OS est basée sur la version d’API 5.0, alors que l’OS actuel est basé sur la version 8.1
Merci d’effectuer un petit rafraichissement de rigueur.

Bien cordialement

3492826/05/202108/09/2021AnomalieAPIFreebox Server V6 (Révolution)NouveauL'API ne permet plus de supprimer les fichiers en exten... Task Description

Bonjour,

Depuis le passage au firmware 4.3.3 sur ma Freebox Révolution, il n'est plus possible de supprimer les fichiers dont l'extension est .srt

J'ai essayé :

  • via l'interface de la TV : aucune erreur apparait mais le fichier n'est pas supprimé
  • via l'application Android de Free : j'ai une erreur qui dit « suppression de 1 fichier a échoué »
  • via l'interface de FreeboxOS : j'ai le message « erreur lors de la suppression : permission refusée »

Voici le JSON retourné par https://mafreebox.freebox.fr/api/v8/fs/rm/ :

{
  "result": {
    "curr_bytes_done": 0,
    "total_bytes": 0,
    "nfiles_done": 0,
    "started_ts": 1622011226,
    "duration": 0,
    "done_ts": 0,
    "src": [
      "/Disque dur/Vidéos/TV/episode.s1e01.srt"
    ],
    "curr_bytes": 0,
    "type": "rm",
    "to": "",
    "id": 10,
    "nfiles": 0,
    "created_ts": 1622011226,
    "state": "running",
    "total_bytes_done": 0,
    "rate": 0,
    "from": "/Disque dur/Vidéos/TV/episode.s1e01.srt",
    "dst": "",
    "eta": 0,
    "error": "none",
    "progress": 0
  }
}

À noter que j'arrive à supprimer sans problème le fichier via Windows Explorer.

Cela ne vient pas d'un seul fichier SRT en particulier (j'ai essayé 2 fichiers différents dans deux répertoires différents). Pas de problème avec les fichiers vidéos.

Merci

3571906/10/202124/10/2021AutreAPITousNouveauDocumentation publique de l'API Freebox (complète et à ... Task Description

n peut trouver la documentation de l'API Freebox ici : https://dev.freebox.fr/sdk/os/ et elle est publique
Cependant, cette documentation ne semble pas à jour et/ou pas complète : c'est dommage :-(

Certe on peut la trouver sur l'aide sur Freebox OS (qui s'appelle maintenant "Développer" dans le menu Free en bas à gauche)
Ou en allant sur l'URL :
http://mafreebox.freebox.fr/doc/index.html#developer-api-documentation

On voit d'ailleurs la grosse différence entre les 2 documentation (publique et maFreebox) sur la partie Api List
Les paragraphes suivants :
- home
- notification
- Players Devices
- Virtual Machines
n'existent pas sur la documentation publique (premier lien)

Est-ce volontaire ?
Pourquoi publier en public qu'une partie de la documentation ?

3589502/11/202103/11/2021AnomalieAPIFreebox Server V7 (Delta)NouveauDonnées eronées Freeplug entre l'interface et API List Task Description

Bonjour,

lors d'une requête GET /api/v8/freeplug/, j’obtiens

{"success":true,"result":[{"id":"A1:2D:D8:60:D6:E3:03","members":[{"id":"34:27:92:1A:B6:70","tx_rate":-1,"eth_port_status":"up","rx_rate":-1,"net_role":"cco","inactive":1,"net_id":"A1:2D:D8:60:D6:E3:03","model":"int7500","eth_speed":1000,"local":true,"eth_full_duplex":true,"has_network":true},{"id":"70:FC:8F:04:E2:00","tx_rate":-1,"eth_port_status":"up","rx_rate":-1,"net_role":"sta","inactive":1,"net_id":"A1:2D:D8:60:D6:E3:03","model":"int7500","eth_speed":1000,"local":false,"eth_full_duplex":true,"has_network":true}]}]}

on peut voir pour l'id "70:FC:8F:04:E2:00", on a les valeur :

  • tx_rate = -1
  • rx_rate = -1

alors que sur l'interface

  • tx_rate = 9Mb/s
  • rx_rate = 9Mb/s
3694217/08/202207/04/2024AnomalieAPIFreebox Server V8 (Pop)NouveauLenteur sur téléchargement via l'API Task Description

Bonjour,

J'ai lu pas mal de posts sur le sujet mais j'ai remarqué des lenteurs sur l'API de téléchargement de la Freebox (Je possède une POP pour info ).

J'ai partagé le problème sur un autre forum et j'ai eu une réponse intéressante, je vous colle le lien ci-dessous :

https://freebox.toosurtoo.com/forum/viewtopic.php?t=25383

Je me demandais si le problème était hardware ou software ? Qu'est ce qui limite la box à ne pas se connecter à autant de "pairs" que sur un PC classique ?

Je vous remercie par avance pour vos éclaircissements


3698127/08/202209/04/2024AnomalieAPITousNouveau[résolu] 2022, API mafreebox.freebox.fr, session token,... Task Description

Bonjour à tous,

pour info,
après plusieurs essais infructeux dans tous les sens
j'ai enfin réussi à obtenir un session token


la doc API intégrée à la freebox (https://mafreebox.freebox.fr/doc/index.html#)
est erronée concernant le calcul du "password".

ce password est necessaire dans la requête du session token

—> dans la doc est écrit
—> dans le paragraphe "Obtaining a session_token"/"password string"
—> password = hmac-sha1(app_token, challenge) (←– CECI NE FONCTIONNE PAS)

avec le password ainsi calculé,
j'obtenais en réponse à la requête de session token (POST http)

Status Code: 403 Forbidden
msg: Erreur d'authentification de l'application
error_code: invalid_token

Pour que ça fonctionne,
il faut inverser app_token et challenge dans la formule

(CECI CI-DESSOUS FONCTIONNE)
(variables challenge et app_token préalablement attribuées bien sûr)

#en php
$password = hash_hmac("sha1", $challenge, $app_token); 

#ou en bash
password=$(echo -n $challenge | openssl sha1 -hmac $app_token | cut -d '=' -f2 | sed 's/ //g')

—> et avec le bon password, ça passe mieux
—> session_token (enfin) reçu :-)


en remarques complémentaires (de ce que j'en ai compris),

- l'app_token une fois sollicité/autorisé/validé est pérenne 
- le challenge par contre, à une durée de validité courte (30 secondes), 
  validité courte qui est donc conférée au password. 
  Et donc pour réussir l'obtention du session_token, 
  la requête/obtention du challenge, le calcul du password et la requête du session_token 
  doivent être fait pendant cette période de validité de 30 secondes.
- je suppose que le session_token est relativement pérenne  
  (pas pu tester longtemps) mais on sait maintenant comment en solliciter un autre...

HTH,
cordialement,
hého

3750317/12/202217/12/2022AnomalieAPIFreebox Server V7 (Delta)NouveauAucune info et erreur (500) sur module Switch dans Free... Task Description

Bonjour,

Depuis plusieurs versions déjà et actuellement en 4.7.3,
avec une Freebox Delta en mode bridge + connexion du seul équipement sur port SFP:

Lors d’une tentative d’accès au module “Switch” dans Freebox OS (Paramètres de la Freebox > Réseau local > Switch),
aucune information n’apparait (bien que la connexion/l’équipement connecté à la Freebox fonctionne);
et le message d’erreur suivant apparait dans une fenêtre modale:

C’est cassé !!
Un problème est survenu lors de cette requête au server (erreur: 500)

L’erreur semble etre la traduction UI d’un échec d’appel de Freebox OS vers l’API sur

/api/latest/switch/status/?_dc=...

, qui renvoie une erreur 500. Le module génère également un appel API sur

/api/latest/switch/port/1?_dc=...

, qui lui renvoie un status 200 et des informations sur… un port du switch certainement.

3767706/02/202307/02/2023AutreAPITousNouveauAuthentification application Task Description

Bonjour,

je souhaite développer une application en python pour me connecter à ma freebox POP.

J’ai bien compris que la première étape est d’inscrire son application et de l’autoriser sur la box. Voici mon code:

 headers = {}
  payload=json.dumps ({
 "app_id": "fr.freebox.test",
 "app_name": "test",
 "app_version": "1.0.0",
 "device_name": "NO"
  })
  try:        
      response = requests.request('POST', 'https://mafreebox.freebox.fr/api/v10/login/authorize', headers=headers, data=payload,verify=False)
  except Exception as e:
      print ('Execution Box Authorize commmand failed : ' + str(e))     
  else :
      if (response.status_code == 200) :
          authorize = response.json()
          print (authorize)

Tout fonctionne bien je récupère bien un app_token :

{’success’: True, ‘result’: {’app_token’: ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’, ‘track_id’: 74}}

Et sur la box s’affiche l’authorisation. Mais j’ai beau essayé de valider en sélectionnant Oui sur l’édcran LCD (Fleche droite puis l’écran affiche de nouveau l’heure), La console des accès reste la même :

—–> ‘Authentification en cours’

Avez-vous une idée de là où ça coince ?

Cordialement

3767907/02/202303/04/2024AnomalieAPIFreebox Server V6 (Révolution)NouveauAPI V10 retourne invalid_token après génération du hmac Task Description

Bonjour,

Je tente depuis plusieurs jours de taper via API ma freebox server revolution (A jour du dernier firmware)

J’ai donc bien suivis la DOC, et je suis en python 3.8

1 - Générer mon application, puis la confirmer sur le front en physique, j’ai le “status”:”granted” 2 - Je récupère le challenge
3 - Tentative d’ouverture de session via le password généré depuis le app_token et le challenge

J’obtiens en retour (tout est anonymisé) :

{'uid': '732edfg65fgaze', 'success': False, 'msg': "Erreur d'authentification de l'application", 'result': {'password_salt': 'M/iYdsf6a9dhyuiods9qsxtfpc+r1KFB', 'challenge': 'KRgdfez6r5sHHRTEuygfvVTGK'}, 'error_code': 'invalid_token'}

Je ne comprend pas ou la raison du soucis, si quelqu’un peut m’éclairer si je me suis trompé ou si c’est un bug

import datetime
import hashlib
import hmac
import json
import pickle
import time
import requests
import urllib3
import sys
import base64

def make_digest(message, key):
    
    key = bytes(key, 'UTF-8')
    message = bytes(message, 'UTF-8')
    
    digester = hmac.new(key, message, hashlib.sha1)
    #signature1 = digester.hexdigest()
    signature1 = digester.digest()
    #print(signature1)
    
    #signature2 = base64.urlsafe_b64encode(bytes(signature1, 'UTF-8'))
    signature2 = base64.urlsafe_b64encode(signature1)    
    #print(signature2)
    
    return str(signature2, 'UTF-8')

appid = "applicationidcustom"
appname ="AppnameCustom"
devicename ="Dlocalcustom"
appversion = "1"
apptoken = "dfgmonapptokengenererlorsdelauthOw0Udhyq/"

#Etape 2 : Obtenir le challenge value avant de sauthentifier
url = "http://mafreebox.freebox.fr/api/v10/login/"
headers = {"Content-Type": "application/json; charset=utf-8"}
response = requests.get(url, headers=headers)
ReturnResponse = response.json()
if ReturnResponse["success"] == False:
	sys.exit(0)

#Etape 3 : Recuperation du token de session
CurrentChallenge = ReturnResponse["result"]["challenge"]
CurrentPassword = make_digest(CurrentChallenge, apptoken)
url = "http://mafreebox.freebox.fr/api/v10/login/session/"
data = {"app_id": appname, "password": CurrentPassword}
headers = {"Content-Type": "application/json; charset=utf-8"}
response = requests.post(url, headers=headers, json=data)
ReturnResponse = response.json()
print(ReturnResponse)
#{'uid': '732edfg65fgaze', 'success': False, 'msg': "Erreur d'authentification de l'application", 'result': {'password_salt': 'M/iYdsf6a9dhyuiods9qsxtfpc+r1KFB', 'challenge': 'KRgdfez6r5sHHRTEuygfvVTGK'}, 'error_code': 'invalid_token'}
3771815/02/202307/04/2024AnomalieAPIFreebox Server V6 (Révolution)NouveauEndpoint /share_link non fonctionnel Task Description

Bonjour,

J’ai constaté que l’endpoint /share_link ne retourne pas ce qu’il faut, en théorie il doit retourner ça :

{
    "success": true,
    "result": {
        "path": "L0Rpc3F1ZSBkdXIvVMOpbMOpY2hhcmdlbWVudHM=", /* /Disque dur/Téléchargements */
        "name": "Téléchargements",
        "token": "6Hj57zgTfoQqb_vH",
        "expire": 1355932880,
        "fullurl": "http://13.37.42.69/api/v8/share/6Hj57zgTfoQqb_vH/"
    }
}

actuellement il retourne uniquement le success sans le result :

{
   success: true
}

Ce problème est présent sur le post de /share_link uniquement à ma connaissance.

Merci

3863607/09/202311/09/2023AnomalieAPIFreebox Server V6 (Révolution)NouveauTVMonaco non disponible dans l'api des bouquets Task Description

Bonjour,
l’api bouquet :

https://mafreebox.freebox.fr/api/v6/tv/bouquets/770/channels

ne renvoie pas la chaîne TVMonaco ajoutée dernièrement en place 900.

Pourquoi et comment faire pour mettre à jour le bouquet?

Merci et bonne journée.

3908126/02/202429/02/2024ÉvolutionAPITousNouveauIndication du temps d'attente lors d'un "Too Many Reque... Task Description

Bonjour,

Je rencontre un problème lors de l’utilisation de l’API. Actuellement, lorsque j’effectue un nombre excessif de requêtes, je reçois en retour le message “Too Many Requests”.

Vu que le blacklistage des machines qui effectuent trop de requêtes est exponentiel (plus on insiste, plus la limitation est longue ; https://https://dev.freebox.fr/bugs/task/19160#comment79018), serait-il possible d’ajouter une indication du temps d’attente nécessaire avant de pouvoir effectuer de nouvelles requêtes ?

Actuellement, nous sommes contraints de réessayer à plusieurs reprises sans savoir exactement dans combien de temps nous pourrons effectuer de nouvelles requêtes. Cela a pour conséquence d’augmenter le temps d’attente si nous essayons de nouveau avant la fin de la période de blocage, ce qui a pour conséquence d’aggraver la situation.

Dans la demande “ FS#19160 “, il était indiqué que “Pour réinitialiser cette limitation il suffit de redémarrer le Server”. Cependant, après avoir essayé cette solution, le problème persiste toujours. Donc l’ajout de cette évolution aiderait grandement.

Je vous remercie par avance pour votre considération de cette demande d’amélioration.

Cordialement

3928003/04/202403/04/2024AnomalieAPIFreebox Server V7 (Delta)NouveauAPI - Erreur message inconnu dans la documentation Task Description

Bonjour

Je suis tombé sur un message d'erreur renvoyé par l'API et non documenté dans la doc interne à la box (https://mafreebox.freebox.fr/doc/index.html?) :

Lors de la création foireuse d'une VM :

curl -sX POST --cacert /dev/shm/fbx-cacert "https://fbx.fbx.lan/api/v10/vm/"  -H "X-Fbx-App-Auth: $_SESSION_TOKEN" -d '{"cloudinit_userdata":"","cd_path":"L0ZCWDI0VC9pc28vYXJtNjRfaXB4ZV9zaW1wbGUtbWVudTMuaXNv","os":"debian","enable_cloudinit":false,"disk_path":"L0ZCWDI0VC9ib3gtdm0vMTRSVi1GU1JWLTE2LnFjb3cy","vcpus":"1","memory":"4096","name":"14RV-FSRV-16","cloudinit_hostname":"","bind_usb_ports":[["",""]],"enable_screen":false,"disk_type":"qcow2"}' 2>&1

Notez bien l'erreur volontaire dans le tableau :

"bind_usb_ports":[["",""]]

Je ne devrais pas mettre un tableau dans ce tableau, l'objet JSON de l'API n'est pas prévu pour, surtout pour un tableau de tableau void.
Je devrais écrire :

"bind_usb_ports":[]

Le retour de l'API est :

{"msg":"Impossible d’ajouter cette VM","success":false,"error_code":"internal"}

Et alors, j'ai bien cherché dans la doc des VM et dans la page d'error_codes de la doc de l'API, mais cette erreur internal ne semble pas être documentée.

Pourriez vous SVP ajouter la signification de ce message (et peut être le rendre + verbeux type : "bad value for a JSON array - internal error")

En vous remerciant d'avance
Cordialement
nbanba

PS: comme déjà demandé, le support de l'ANGLAIS sur les Delta serait bien et éviterai des trucs bien moches avec mix Français / Anglais comme :

{"msg":"Impossible d’ajouter cette VM","success":false,"error_code":"internal"}
3991115/12/202419/12/2024AnomalieAPITousNouveauFreebox API Login Track "/api/v8/login/authorize/" Task Description

Bonjour,

Contre toute attente, l’API de Track login sur un id de track inexistant retourne pas mal d’informations qu’elle ne devrait pas forcément retourner dont un password salt et beaucoup de code échappés.
Est-ce la documentation de l’API qui n’est pas à jour ? Où est-ce normal que l’API dump du code en JS ?

NB : Les “XXXX” remplace le code échappé et le sel a été retiré.

Freebox OS : 4.8.16

http://mafreebox/api/v8/login/authorize/666

{
   "success":true,
   "result":{
      "status":"unknown",
      "challenge":[
         "var _tddrqb = '_fzutptw';var _hvlvi = new RegExp(_tddrqb.charAt(eval(unescape('%37'))), 'g');String.fromCharCode(_tddrqb.replace(_hvlvi, 'z').charCodeAt(eval(unescape('XXXXX'))))",
         "var _aethnyfs = '_mtjsaiih';var _nxxvroo = new RegExp(_aethnyfs.charAt(eval(unescape('XXXXX'))), 'g');String.fromCharCode(_aethnyfs.replace(_nxxvroo, 'p').charCodeAt(eval(unescape('%35'))))",
         "var _xphsj = '_agfkirx';var _uobvx = new RegExp(_xphsj.charAt(eval(unescape('%37'))), 'g');String.fromCharCode(_xphsj.replace(_uobvx, 'k').charCodeAt(eval(unescape('%37'))))",
         "var _hotru = { _rehs: '_6rkhldig' }; _hotru._rehs.charAt(eval(unescape('XXXX')))",
         "var _ebcy = { _neoqqe: '_tah\/' }; _ebcy._neoqqe.charAt(eval(unescape('%34')))",
         "var _vxcbrq = { _unqxlpz: '_mvqkbjw' }; _vxcbrq._unqxlpz.charAt(eval(unescape('XXXXX')))",
         "decodeURIComponent('%' + (eval(unescape('%35%37'))).toString(eval(unescape('XXXX'))))",
         "'g'",
         "'p'",
         "decodeURIComponent('%' + (eval(unescape('XXXXX'))))",
         "var _xfozdxm = { _etauaqab: '_pqSd' }; _xfozdxm._etauaqab.charAt(eval(unescape('XXXX')))",
         "var _jsqs = '_fuzldxcj';var _emmk = new RegExp(_jsqs.charAt(eval(unescape('XXXXX'))), 'g');String.fromCharCode(_jsqs.replace(_emmk, 'J').charCodeAt(eval(unescape('%35'))))",
         "'c'",
         "decodeURIComponent('%' + (eval(unescape('XXXX'))).toString(eval(unescape('XXXX'))))",
         "var _fczmbd = { _guhhz: '_dehqlq' }; _fczmbd._guhhz.charAt(eval(unescape(XXXX')))",
         "var _afewzzt = { _mnpstx: '_yu1d' }; _afewzzt._mnpstx.charAt(eval(unescape('XXXXX')))",
         "decodeURIComponent('%' + (eval(unescape('%35%35'))).toString(eval(unescape(XXXX'))))",
         "var _qawcojla = '_bwzhef';var _rulszp = new RegExp(_qawcojla.charAt(eval(unescape('%33'))), 'g');String.fromCharCode(_qawcojla.replace(_rulszp, 'E').charCodeAt(eval(unescape('XXXXX'))))",
         "decodeURIComponent('%' + (eval(unescape('XXXX'))).toString(eval(unescape('XXXX'))))",
         "'G'",
         "var _gcxvax = { _nsfg: '_wdyhcr' }; _gcxvax._nsfg.charAt(eval(unescape('XXXXX')))",
         "var _xtwup = '_jakip';var _factsbsx = new RegExp(_xtwup.charAt(eval(unescape('XXXX'))), 'g');String.fromCharCode(_xtwup.replace(_factsbsx, 'P').charCodeAt(eval(unescape('XXXX'))))",
         "var _pwunhjcf = '_mxno';var _mmoqgw = new RegExp(_pwunhjcf.charAt(eval(unescape('XXXX'))), 'g');String.fromCharCode(_pwunhjcf.replace(_mmoqgw, 'M').charCodeAt(eval(unescape('XXXX'))))",
         "var _wndta = { _bfgrhge: '_zujuQ' }; _wndta._bfgrhge.charAt(eval(unescape('%35')))",
         "var _qbfepmi = '_iwms';var _uffbilk = new RegExp(_qbfepmi.charAt(eval(unescape('%33'))), 'g');String.fromCharCode(_qbfepmi.replace(_uffbilk, 'e').charCodeAt(eval(unescape('%33'))))",
         "var _rijvnj = '_syixk';var _sqaicfto = new RegExp(_rijvnj.charAt(eval(unescape('XXXX'))), 'g');String.fromCharCode(_rijvnj.replace(_sqaicfto, 'b').charCodeAt(eval(unescape('XXXXX'))))",
         "'E'",
         "decodeURIComponent('%' + (eval(unescape('XXXX'))).toString(eval(unescape('XXXX'))))",
         "'s'",
         "var _kjihqn = '_mjyeewoc';var _zktqloe = new RegExp(_kjihqn.charAt(eval(unescape('XXXX'))), 'g');String.fromCharCode(_kjihqn.replace(_zktqloe, 'E').charCodeAt(eval(unescape('XXXXX'))))",
         "'n'",
         "var _rzmbme = { _zmysndbt: '_odcjxnG' }; _rzmbme._zmysndbt.charAt(eval(unescape('XXXX')))"
      ],
      "password_salt":"SALT"
   }
}
3993829/12/202429/12/2024ÉvolutionAPITousNouveauNotification API - custom type + VM events Task Description

Bonjour

1) Il serait pratique de pouvoir custom le champ 'type' des notifications :
Aujourd'hui seul 3 choix sont possibles :
Android | IOS | Firebase

L'ajout d'un type 'custom' (et pourquoi pas la possibilité de personnaliser un champ associé ⇒ ajout d'un "custom_type") serait bien.
Par exemple :

GET /api/v11/notif/targets/11111111-2222-3333-4444-666666666666
{
   "success":true,
   "result":[
      {
         "last_use":0,
         "type":"custom",
         "custom_type":"firewall",
         "name":"FGT901G-API",
         "id":"11111111-2222-3333-4444-666666666666",
         "subscriptions":[
                              "security",
                              "lan_host",
                              "box_state",
         ],
         "api_url": "https://myserver.example.com/my_fortigate_API_app",
         "message_type": "notification"
      }
   ]
}

2) Il serait bien d'ajouter à la "subscriptions" les notifications des events des VM qui sont aujourd'hui renvoyés en websocket (+ celles des type l2/l3_address_(un)reachable)

3) Il serait bien de pouvoir avoir tous les types de notifications au travers des websocket API (register event) :

phone	        notification when missing call
download	notification when download is finished
security	notification when alarm is on
box_state	notification when box state changed
lan_host	notification related to lan events
password_change	notification when admin password is changed

Ainsi le système serait un peu plus complet et homogène et surtout on pourrait piloter d'autres équipements (avec leur propre API) à réception de ces notifications.

Merci
Cordialement
nbanba

4013622/03/202523/03/2025AnomalieAPITousNouveauImpossible de changer de chaine sur le player avec l'AP... Task Description

Bonjour

J'ai suivi la documentation pour pourvoir changer de chaine sur le player DEVIALET

Open TV on channel 2:

POST /api/v8/player/{id_player}/api/v6/control/open
{ "url": "tv:?channel=2" }

Malheureusement j'obtiens un message d'erreur

POST sur la l'adresse mafreebox.freebox.fr/api/v14/player/17/api/v6/control/open/({"url":"tv:?channel=2"})
{"msg":"Invalid request: cannot parse json","success":false,"error_code":"invalid_request"}
ERROR  Erreur AUTRE : Invalid request: cannot parse json

je voudrais savoir ce qu'il manque ou que je fais mal pour résoudre mon problème

les autres actions fonctionnent bien comme changé le volume

PUT sur la l'adresse mafreebox.freebox.fr/api/v14/player/17/api/v6/control/volume/({"volume":"61"})
{"success":true,"result":{"mute":false,"volume":61}}

A disposition pour plus de renseignements

3278915/10/202024/10/2020AnomalieApplicationsFreebox Player V6 (Revolution)NouveauPing ne répond pas Task Description

Bonjour

J’ai paramétré deux caméras chez un de mes clients, elles sont en adresse IP fixe en dehors de la plage du DHCP, avec deux redirections de ports pour avoir accès à mes caméras depuis l’extérieur. Tout fonctionné très bien depuis plus d’un an et demi et tout d’un coup depuis quelques semaines, je n’ai plus accès aux caméras depuis l’extérieur.
La seule chose que je vois d’anormale est le fait que je ne peux pas pinger la box depuis l’extérieur. J’ai bien sur prix soin d’activer le ping sur le portail de la box en question.
Et la commande msdos tracert xx.xxx.xx.xx n’abouti pas, le delai d’attente est dépassé ce qui me semble vraiment anormal.

Je n’ai malheureusement pas trouver de réponse à mon problème et mes clients envisage très sérieusement de quitter Free alors qu ej’ai d’autres clients avec le smêmes caméèas configurés de la même manière et tout fonctionne très bien.

J’espère avoir exposé clairement mon problème et j’espère que quelqu’un pourra rapidement m’aider à le résoudre.

Bien cordialement

3342512/12/202014/01/2021ÉvolutionAssociationAndroidNouveauAjout d'un historique des sessions Freebox OS
1752231/05/201503/02/2023AnomalieAudio (AirMedia, ...)TousÀ investiguerLe freebox server est absent de la liste des terminaux ...
3890530/01/202403/02/2024ÉvolutionAudio (AirMedia, ...)Freebox Server V7 (Delta)En attente de réponseSupport AirPlay 2
789916/09/201104/06/2012ÉvolutionAudio (AirMedia, ...)Freebox Server V6 (Révolution)NouveauLatence audio Airmedia
814411/10/201124/01/2015ÉvolutionAudio (AirMedia, ...)Freebox Server V6 (Révolution)NouveauHeure + AirMedia
1314002/09/201303/02/2023ÉvolutionAudio (AirMedia, ...)TousNouveauPas d'accès AirMedia 'audio' sur le Freebox Server
1507824/05/201422/10/2014ÉvolutionAudio (AirMedia, ...)TousNouveauAjouter un Renderer DLNA au Freebox Server
1521825/06/201403/02/2019ÉvolutionAudio (AirMedia, ...)TousNouveauPouvoir lire les radios favoris sur Freebox Server
1627530/01/201525/09/2017ÉvolutionAudio (AirMedia, ...)TousNouveauLe port audio IN devrait permettre une entrée son
1634101/03/201518/05/2021AnomalieAudio (AirMedia, ...)TousNouveauProbleme de son sous Airplay (Freebox Server Air Media)
1912710/11/201528/11/2019ÉvolutionAudio (AirMedia, ...)TousNouveauCompte Deezer non disponible
1918320/11/201506/08/2020ÉvolutionAudio (AirMedia, ...)TousNouveauServeur DLNA DMS
1948916/01/201616/01/2016ÉvolutionAudio (AirMedia, ...)TousNouveauUtilisation enceinte freebox server depuis freebox play...
1956702/02/201629/08/2021ÉvolutionAudio (AirMedia, ...)TousNouveauVisibilité des fichiers .dsf (DSD) via DLNA
2134005/04/201707/02/2018ÉvolutionAudio (AirMedia, ...)TousNouveauAirplay c'est pour quand ?
2157904/06/201701/11/2018ÉvolutionAudio (AirMedia, ...)TousNouveauFonction Airmedia non supporté
2183607/10/201707/10/2017ÉvolutionAudio (AirMedia, ...)TousNouveauSimple Radio
2224814/01/201814/01/2018ÉvolutionAudio (AirMedia, ...)TousNouveauNouveau flux RJM DANCE
2235505/02/201810/03/2020AnomalieAudio (AirMedia, ...)TousNouveauProblème distorsion de son via airplay
2241620/02/201803/02/2019ÉvolutionAudio (AirMedia, ...)TousNouveaupossibilité d'avoir des favoris dans les radios
2281728/08/201828/08/2018ÉvolutionAudio (AirMedia, ...)TousNouveauPrise en charge AirPlay 2
2308618/12/201826/12/2018ÉvolutionAudio (AirMedia, ...)Freebox Server V7 (Delta)NouveauMusique en mp3 dans le nas accessibles via commande voc...
2419607/01/201907/01/2019ÉvolutionAudio (AirMedia, ...)TousNouveauAjout du vrai Airplay 2
2588717/02/201920/08/2019ÉvolutionAudio (AirMedia, ...)TousNouveauMémorisation niveau sonore Freebox Server Delta
2592619/02/201919/02/2019ÉvolutionAudio (AirMedia, ...)Freebox Server V7 (Delta)NouveauDolby Prologic II
Showing tasks 101 - 150 of 3002 Page 3 of 61

Available keyboard shortcuts

Tasklist

Task Details

Task Editing