iMicknl / iMicknl/python-sagemcom-api

TalkTalk Wi-Fi Hub (F@ST 5364) firmware SG4K100208: Device/DeviceInfo container blocked, leaf fallback works; Device/Hosts/Hosts works; DSL rates + throughput paths confirmed; request-level errors can mask per-action success

Aperta
#453 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Python
Stelle
141
Fork
49
Merge medio
7h 54m
PR unite (30g)
4

Descrizione

Model information

Key Value
Model name F@ST 5364 (TalkTalk Wi-Fi Hub)
Hardware Version F@ST 5364
Software Version External: SG4K100208 / Internal: 15.24.42_Prod

Describe the bug

On the TalkTalk-branded F@ST 5364, reading the Device/DeviceInfo container node fails with XMO_UNKNOWN_PATH_ERR, causing get_device_info() in python-sagemcom-api to raise an UnknownPathException.

However, individual leaf values under Device/DeviceInfo/* are readable and return valid data. This suggests the container is intentionally blocked while leaf access remains supported.

To Reproduce

  1. Authenticate successfully via /cgi/json-req using a logIn action.
  2. Attempt to read the container node:
    Device/DeviceInfo
    
  3. Observe error:
    XMO_UNKNOWN_PATH_ERR
    
  4. Read individual leaf paths instead:
    Device/DeviceInfo/ProductClass
    Device/DeviceInfo/InternalFirmwareVersion
    Device/DeviceInfo/ExternalFirmwareVersion
    Device/DeviceInfo/UpTime
    
  5. Observe valid values returned for all leaf paths.

Expected behavior

get_device_info() should succeed on this model.

A possible approach is to fall back to querying known Device/DeviceInfo leaf values when the container node returns XMO_UNKNOWN_PATH_ERR, and construct a minimal device info object from those values.

Screenshots

N/A – reproduced via API/XHR calls and browser console ($.xmo.*), not GUI interactions.

Additional context

Other confirmed working paths on this model:

  • Hosts:

    Device/Hosts/Hosts
    

    Returns a full list of host objects (MAC, IP, active state, interface type, etc.).

  • DSL negotiated rates:

    Device/DSL/Channels/Channel[@uid='1']/DownstreamCurrRate
    Device/DSL/Channels/Channel[@uid='1']/UpstreamCurrRate
    
  • Throughput counters without running a speed test:

    • LAN:
      Device/Ethernet/Interfaces/Interface[Alias="PHYx"]/Stats/*
      
    • WAN:
      Device/IP/Interfaces/Interface[Alias="IP_DATA"]/Stats/*
      

Notable quirks observed:

  • Multi-action /cgi/json-req requests may return a request-level error even when individual actions succeed; action-level results should be evaluated independently.
  • Some container nodes are blocked while their leaf children remain accessible (as seen with Device/DeviceInfo).
  • SFP-related paths appear unsupported on this firmware and return errors.

All MAC addresses, IP addresses, auth tokens, nonces, and session identifiers have been redacted or replaced.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con get_device_info() e il flusso delle richieste /cgi/json-req, quindi riproduci il fallimento del contenitore Device/DeviceInfo e le letture riuscite delle foglie su F@ST 5364. Definisci il completamento come il recupero riuscito delle informazioni del dispositivo dai percorsi delle foglie supportati, preservando risultati indipendenti a livello di azione quando viene restituito un errore a livello di richiesta.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.