WSJT-X 3.1 improved · FT8 · Analisi del decoder

Capire le impostazioni del decoder FT8 in WSJT-X 3.1 improved

Cosa fa realmente «Decode Start» — e perché oggi un’ottimizzazione seria dell’FT8 conta più che mai. Un’analisi tecnica approfondita su strategia temporale, decodifica a stadi, allocazione della CPU e filosofia operativa pratica.

Autore: Yoshiharu Tsukuura / JP1LRT Formato: edizione HTML pubblica indipendente QRZ: JP1LRT
Tipo di articolo: saggio tecnico approfondito Argomento principale: strategia temporale del decoder FT8
Nominativo: JP1LRT Lingua: Italiano

Correzione — struttura interna di 2-Stage (aggiornata)

Una versione precedente di questo articolo descriveva erroneamente 2-Stage come due pre-passaggi STD (a nzhsym=41 e nzhsym=46) prima del passaggio MTD finale. Era sbagliato.

Il comportamento reale in aria è questo: nel normale decode on-air, 2-Stage = STD @41 → MTD finale @49. Il secondo pre-passaggio STD a nzhsym=46 appartiene soltanto a 3-Stage, la cui struttura reale è STD @41 → STD @46 → MTD finale @50.

C’è anche un’importante conseguenza pratica. Secondo Uwe Risse / DG2YCB, 2-Stage raggiunge circa il 99,5% della resa di decodifica di 3-Stage richiedendo molta meno potenza di calcolo. Su computer meno potenti, il pre-passaggio a nzhsym=46 usato da 3-Stage potrebbe non terminare in tempo per il decode MTD principale a nzhsym=50. In quel caso non può essere eseguito il fondamentale passaggio MTD finale. Per questo 2-Stage è consigliato alla maggior parte degli utenti, mentre 3-Stage rimane l’opzione di massime prestazioni per computer molto veloci.

Correzione basata sulle osservazioni di Uwe Risse / DG2YCB, sviluppatore di WSJT-X 3.1 improved. Tutti i testi e i diagrammi interessati sono stati aggiornati di conseguenza.

JTDX offre da tempo spiegazioni utili sul funzionamento delle sue impostazioni di decodifica. Quelle guide sono sempre state preziose, perché rendono molto chiaro un punto fondamentale:

le prestazioni del decoder non dipendono semplicemente dall’attivare ogni opzione che sembri «più forte». È sempre un equilibrio tra tempo di elaborazione, decode mancati e falsi decode.

Questo è il principio chiave.

Ma nel 2026, se il vostro obiettivo è la prestazione operativa in FT8/FT4, il quadro è cambiato.

WSJT-X 3.1 improved non è più semplicemente «WSJT-X standard con qualche funzione in più». Una quantità sostanziale di idee pratiche sulla decodifica — comprese idee molto familiari agli utenti JTDX — vi è stata integrata in modo significativo. A questo punto, confrontarlo superficialmente con WSJT-X 2.7 o versioni precedenti non è più particolarmente informativo.

Detto in modo più diretto: per l’operatore medio, WSJT-X 3.1 improved merita ormai di essere considerato seriamente come una scelta di prima fascia.

Aspettare la prossima versione GA di JTDX è naturalmente una scelta possibile. Ma se le priorità sono prestazioni pratiche del decoder, funzioni disponibili, attività di sviluppo e ciò che si può davvero installare e usare oggi, la strada più razionale è sfruttare ciò che è già disponibile ed è già valido.

Questo non significa affatto che JTDX non abbia più un ruolo. Se qualcuno è molto legato all’interfaccia JTDX, è un motivo perfettamente valido per continuare a usarlo. Ma è una questione diversa dalle capacità di decodifica e dall’ottimizzazione pratica.

Questo articolo non vuole essere l’ennesimo elenco di impostazioni consigliate. Voglio invece esaminare una domanda più profonda:

Che cosa significa davvero ottimizzare il decoder FT8? E, più precisamente, cosa fa realmente l’impostazione «Decode Start» in WSJT-X 3.1 improved?


Prima la conclusione pratica

Partite da Normal. Provate 3-Stage se avete margine di CPU. Usate Early se la riserva temporale è più importante.

Cominciamo dalla conclusione pratica.

La regola più importante nel tuning del decoder FT8 non è:

«Usare le impostazioni più pesanti disponibili.»

È invece:

«Usare le impostazioni più aggressive che il sistema riesce a completare in modo affidabile entro il ciclo di 15 secondi.»

È un modo di pensare molto diverso.

Come base, una configurazione simile alla seguente è ragionevole per molte stazioni:

Multithreaded FT8 decoderON
Number of decoding threadsAuto
Number of decode passes2
QSO Rx Frequency SensitivityMedium
Decoder SensitivityLow thresholds
Decode StartNormal
Reduce False DecodesON
Wideband DX Call SearchON

Non è necessariamente la risposta definitiva, ma è un ottimo punto di partenza. Da lì potete spostarvi verso impostazioni più aggressive se la CPU ha margine. Se compaiono ritardi, completamenti troppo tardivi o instabilità, fate un passo indietro.

Per Decode Start, in sintesi pratica:

Normal
Il riferimento di base. Partite da qui: rende molto più semplice confrontare gli altri modi.
3-Stage
L’opzione di massime prestazioni per macchine di fascia alta; il guadagno extra non è proporzionale al costo CPU.
Early
Utile quando volete proteggere il margine temporale invece di estrarre ogni ultimo frammento di segnale.
Late
Aspettate un po’ di più, raccogliete leggermente più segnale e decidete più tardi.
2-Stage
Il miglior equilibrio pratico per la maggior parte degli utenti.

Questa è la sintesi pratica. Ma il motivo per cui questa impostazione conta è più interessante della sintesi stessa.

Decode Start non è semplicemente una preferenza per «iniziare prima o dopo». È strettamente legato a quanti stadi usa il decoder, a dove tali stadi sono collocati nel tempo e a come lo sforzo di decodifica viene distribuito nel ciclo FT8.

Questo è il vero cuore della questione.


Perché WSJT-X 3.1 improved merita oggi seria attenzione

Per capire perché tutto ciò conta, è utile fare un passo indietro e guardare il quadro generale.

Negli ultimi anni WSJT-X improved è diventato molto più di un ramo laterale con opzioni aggiuntive. Si è evoluto in una piattaforma pratica per idee di decodifica nate dall’uso reale, flessibilità dell’interfaccia e miglioramenti orientati all’operatività.

Dopo aver usato per un po’ le build improved attuali, una cosa diventa evidente:

la vecchia domanda «Come si confronta con WSJT-X 2.7 standard?» non è più la più utile.

Le domande più pertinenti oggi sono:

  • Quanto è valido WSJT-X 3.1 improved come strumento pratico FT8/FT4 oggi?
  • Quanta esperienza reale di decodifica è stata incorporata nel programma?
  • E come dovrebbe un operatore regolarlo in funzione della propria stazione, CPU e priorità operative?

Per questo l’articolo non riguarda principalmente tabelle comparative. Riguarda il modo di usare il software in maniera intelligente.

E quando la discussione passa da «quali impostazioni esistono?» a «come vanno usate?», diventa necessario chiedersi che cosa significhino davvero all’interno di un ciclo FT8 di 15 secondi.


Il ruolo di ogni impostazione

«Più aggressivo» non significa automaticamente «migliore»

Prima di concentrarci su Decode Start, vale la pena chiarire come interpretare in generale le impostazioni del decoder FT8.

Un equivoco molto comune è questo:

impostazioni più pesanti devono significare prestazioni migliori.

Sembra plausibile, ma l’FT8 non funziona così.

Poiché l’FT8 lavora in cicli di 15 secondi, ciò che conta davvero è l’equilibrio tra quattro fattori:

  1. Quanto segnale si aspetta prima di decodificare
  2. Quanto in profondità si cercano i messaggi candidati
  3. Se tutto il processo termina in tempo
  4. Quanti falsi decode si è disposti a tollerare

Vista così, l’ottimizzazione FT8 non riguarda la «massima potenza». Riguarda il modo in cui si assegna un tempo di elaborazione limitato.

Questa prospettiva cambia il modo in cui ogni impostazione va considerata.

Numero di thread

Per la maggior parte degli operatori, Auto rimane il miglior punto di partenza. Forzare semplicemente più thread non garantisce un risultato migliore. Contano lo scheduling del sistema operativo, il carico in background, la topologia dei core e il comportamento complessivo del sistema.

Numero di passaggi di decodifica

Più passaggi possono aumentare la possibilità di recuperare segnali più deboli o ambigui, ma costano anche tempo CPU. Su un sistema potente, 3 passaggi possono valere la pena. Per molte stazioni, 2 è il valore predefinito più sensato. Su hardware limitato, 1 può essere la scelta più sicura.

Decoder Sensitivity

La lettura pratica è semplice:

  • Minimum è più leggero
  • Low thresholds è equilibrato
  • Subpass è più aggressivo, ma più pesante

Subpass non offre prestazioni gratuite. È lavoro aggiuntivo in cambio della possibilità di recuperare segnali più deboli o difficili.

Nota su Fast / Normal / Deep rispetto al Multithreaded FT8 Decoder

Questa è una parte particolarmente facile da fraintendere. Poiché Fast / Normal / Deep compare nella stessa schermata di Multithreaded FT8 decoder, è naturale supporre che siano semplicemente varianti dello stesso controllo. Il sorgente suggerisce invece che siano tipi di impostazione diversi.

Prima di tutto, Fast / Normal / Deep è la tradizionale impostazione della profondità di decodifica: indica cioè al decoder quanto in profondità cercare. Nel percorso FT8 convenzionale monothread, questa profondità è direttamente legata al peso del decode e all’aggressività della ricerca.

Multithreaded FT8 decoder, invece, appartiene a un asse completamente diverso. La questione fondamentale è quale famiglia di motore di decodifica viene usata. Nel codice, profondità di decodifica e FT8 multithread sono parametri separati, non due nomi per la stessa cosa.

La sfumatura importante viene subito dopo. Quando FT8 opera realmente con il decoder multithread abilitato, il programma entra in un percorso MTD dedicato invece del vecchio percorso FT8 convenzionale. In quel percorso, le impostazioni che controllano davvero il comportamento sono quelle specifiche MTD — non i vecchi livelli Fast / Normal / Deep:

  • Decoder Sensitivity
  • Decode Start
  • Number of decode passes
  • QSO Rx Frequency Sensitivity

Il modo più preciso di interpretarlo è quindi questo: Fast / Normal / Deep esiste ancora e resta parte della logica generale di profondità di decodifica del programma, ma nel funzionamento FT8 MTD non è la manopola principale che determina quanto aggressivamente si comporta il decoder. Nel tuning pratico, i controlli davvero importanti sono quelli orientati al MTD — soprattutto Decoder Sensitivity, Decode Start, Number of decode passes e QSO Rx Frequency Sensitivity.

In altre parole, se volete regolare seriamente WSJT-X 3.1 improved per FT8 con il decoder multithread attivo, è meglio ragionare in termini di controlli specifici del comportamento MTD anziché assumere che Fast / Normal / Deep resti il principale fattore che determina il carattere del decoder. La vecchia profondità fa ancora parte del progetto; semplicemente non è più la leva pratica più importante una volta entrati nel percorso FT8 MTD.

QSO Rx Frequency Sensitivity

Non è semplicemente un’impostazione di velocità. Influenza quanto aggressivamente il decoder esamina l’attività attorno alla regione di frequenza del QSO e i candidati vicini.

  • Low è conservativo
  • Medium è equilibrato
  • High è aggressivo

Come previsto, una maggiore aggressività può anche produrre più candidati dubbi e più rumore di decodifica.

Reduce False Decodes

Questa funzione merita più attenzione di quanta ne riceva talvolta. Trovare di più non è automaticamente meglio se i risultati aggiuntivi diventano sempre meno affidabili. Su bande affollate e in condizioni ambigue, il controllo dei falsi decode conta molto.

Considerate insieme, queste impostazioni non competono isolatamente per vedere quale sia la «più forte». Ognuna esprime una risposta diversa alla stessa domanda di fondo:

dentro una finestra molto limitata di 15 secondi, che cosa dovrebbe privilegiare il decoder?

E tra tutte, Decode Start è uno degli esempi più chiari e rivelatori.


La domanda principale

Cosa fa realmente «Decode Start»?

È qui che l’argomento diventa davvero interessante.

Nell’interfaccia utente, Decode Start offre cinque scelte:

  • 2-Stage
  • 3-Stage
  • Early
  • Normal
  • Late

A prima vista sembra un semplice controllo temporale:

iniziare a decodificare prima oppure più tardi.

Ma non è tutta la storia.

Osservando l’implementazione reale di WSJT-X 3.1 improved, questi modi sono gestiti internamente come:

  • 0 = 2-Stage
  • 1 = 3-Stage
  • 2 = Early
  • 3 = Normal
  • 4 = Late

Durante il funzionamento FT8, il programma usa valori come m_hsymStop, m_earlyDecode e m_earlyDecode2 per determinare quando vengono attivati gli stadi di decodifica.

Questo ci dice immediatamente una cosa:

Decode Start non è soltanto un’impostazione del «quando». È anche un’impostazione del «come».

Per rendere tutto più chiaro, iniziamo dai tre modi più semplici — Early, Normal e Late — e poi passiamo ai più rivelatori 2-Stage e 3-Stage.


Early / Normal / Late

Prima i tre modi più semplici

Cominciamo dalle opzioni più immediate.

Con il decoder FT8 multithread abilitato, i punti di arresto interni sono approssimativamente:

  • Early → 48
  • Normal → 49
  • Late → 50

In termini di tempo, corrispondono approssimativamente a:

  • Early → circa 13,8 secondi
  • Normal → circa 14,1 secondi
  • Late → circa 14,4 secondi

Il significato di base è intuitivo:

  • Early rinuncia a un po’ di raccolta del segnale in cambio di maggiore margine CPU
  • Late aspetta più a lungo per raccogliere un po’ più di informazione prima del decode
  • Normal si colloca nel mezzo

Se Decode Start fosse composto soltanto da questi tre modi, sarebbe comunque un’impostazione utile — ma non particolarmente insolita.

A rendere la funzione molto più interessante è ciò che viene dopo:

2-Stage e 3-Stage.

Fig. 1 — Quale passaggio di decodifica si attiva in quale momento (ciclo di 15 secondi)
nz=41
11.8s
nz=46
13.2s
nz=48
13.8s
nz=49
14.1s
nz=50
14.4s
0s
2
4
6
8
10
12
14
15s
2-Stage
nd=0
STD pre-pass
final MTD
3-Stage
nd=1
STD pre-pass ①
STD pre-pass ②
final MTD
Early
nd=2
MTD only
Normal
nd=3
MTD only
Late
nd=4
MTD only
STD pre-pass (single-threaded · lightweight early decode)
MTD (multithreaded · full final decode)
nzhsym boundary

Nota tecnica aggiuntiva

Cosa sono realmente 2-Stage e 3-Stage

Non semplicemente «prima» o «dopo», ma una strategia di decodifica a stadi che combina STD e MTD

Il change log di WSJT-X improved descrive 2-Stage e 3-Stage come modalità che «combinano intelligentemente entrambi i decoder», ottenendo quella che definisce la migliore prestazione di decodifica FT8 finora.

In altre parole, il software li presenta esplicitamente come un modo per combinare il decoder tradizionale STD (monothread) e il più recente MTD (multithread).

Ciò che il change log non spiega è l’ordine esatto di esecuzione né la relazione temporale tra i due. Questo diventa chiaro solo osservando l’implementazione.

A quel punto è evidente che 2-Stage e 3-Stage non sono semplicemente tempi di avvio differenti. Sono strategie di decodifica multistadio, e i diversi stadi non svolgono tutti lo stesso ruolo.

La divisione dei compiti tra STD e MTD

Qui STD indica il decoder FT8 tradizionale monothread. MTD indica il decoder FT8 multithread introdotto nella linea improved.

Osservando l’implementazione, i modi a stadi funzionano grosso modo così:

  • gli stadi iniziali usano STD
  • lo stadio finale usa MTD

Questa è l’idea progettuale fondamentale.

In altre parole, va inteso come una separazione deliberata tra:

  • un controllo iniziale, più leggero e veloce
  • e un passaggio di decodifica successivo e più completo

È una distinzione molto importante.

Un progetto più semplice potrebbe aspettare la fine dell’intervallo di ricezione e poi eseguire un unico decode pesante. WSJT-X improved non lo fa. Esegue invece ricerche intermedie dei candidati prima dello stadio finale e completa poi un decode più approfondito.

Questo rende chiaro che il progetto presta particolare attenzione a un problema centrale:

come allocare in modo intelligente il tempo CPU all’interno di un brevissimo ciclo FT8.

Prospettiva dello sviluppatore: a cosa serve davvero il pre-passaggio STD

Secondo Uwe Risse / DG2YCB, il pre-passaggio STD non è semplicemente un decode preliminare aggiuntivo. Il suo ruolo importante è portare nel flusso MTD il vantaggio del decode precoce noto dal decoder STD tradizionale.

Durante lo sviluppo sono state provate varie combinazioni di STD e MTD insieme a differenti parametri nzhsym. L’approccio attuale — STD come pre-passaggio e MTD come passaggio finale principale — ha dato i migliori risultati pratici.

Questo è un punto chiave. 2-Stage e 3-Stage non sono semplicemente meccanismi per «eseguire il decoder più di una volta». Sono progettati per combinare il comportamento leggero e precoce di STD con la maggiore potenza del decode finale MTD, usando più efficacemente il tempo CPU limitato del ciclo FT8 di 15 secondi.

Uwe osserva inoltre che 2-Stage raggiunge circa il 99,5% della resa di 3-Stage richiedendo molta meno potenza di calcolo. Questo spiega perché 2-Stage sia una raccomandazione pratica così forte per la maggior parte degli utenti, mentre 3-Stage resta l’opzione di massime prestazioni per i computer più veloci.

Cosa significa realmente 2-Stage

Nel decode reale on-air, 2-Stage consiste in un pre-passaggio STD a nzhsym=41, seguito dal passaggio MTD finale a nzhsym=49.

La sequenza reale è quindi:

  • pre-passaggio STD @ nzhsym=41 — circa 11,8 secondi
  • MTD finale @ nzhsym=49 — circa 14,1 secondi

Il punto fondamentale è che il secondo pre-passaggio STD a nzhsym=46 non fa parte di 2-Stage nel decode reale. Quel passaggio aggiuntivo appartiene solo a 3-Stage.

In altre parole, 2-Stage è ben bilanciato: effettua una prima ricognizione precoce e conclude con il passaggio MTD principale a nzhsym=49.

Poiché l’equilibrio fra resa di decodifica e costo CPU è così favorevole, 2-Stage è il modo che consiglierei per primo alla maggior parte degli utenti. Secondo Uwe Risse / DG2YCB raggiunge circa il 99,5% della resa di 3-Stage richiedendo molta meno potenza di calcolo. È quindi un compromesso pratico molto valido.

Cosa significa realmente 3-Stage

3-Stage aggiunge un secondo pre-passaggio STD a nzhsym=46 prima del passaggio MTD finale.

Nel decode reale on-air, la sequenza è:

  • pre-passaggio STD @ nzhsym=41 — circa 11,8 secondi
  • pre-passaggio STD @ nzhsym=46 — circa 13,2 secondi
  • MTD finale @ nzhsym=50 — circa 14,4 secondi

3-Stage esegue quindi prima una ricognizione a 41, poi un ulteriore pre-passaggio STD a 46 e infine il passaggio MTD principale a 50.

Questo rende 3-Stage la modalità di decodifica FT8 con le prestazioni più elevate disponibile in WSJT-X 3.1 improved.

Serve però un’importante avvertenza pratica. Il guadagno aggiuntivo di 3-Stage non è proporzionale all’aumento dell’uso della CPU. Uwe Risse / DG2YCB osserva che 2-Stage raggiunge già circa il 99,5% della resa di 3-Stage, quindi il guadagno residuo è piccolo rispetto alla potenza di calcolo aggiuntiva richiesta.

Su computer meno potenti, il pre-passaggio STD aggiuntivo a nzhsym=46 può consumare troppo tempo e, nel peggiore dei casi, interferire con il fondamentale passaggio MTD finale a nzhsym=50. Per questo 3-Stage va considerato una modalità di fascia alta: è l’opzione estrema per chi dispone di hardware potente, ma non è automaticamente la raccomandazione migliore per tutti.

Va inteso come «prima STD, MTD alla fine», non «prima MTD, poi STD»

È uno dei punti più facili da fraintendere.

Poiché il change log afferma che 2-Stage e 3-Stage combinano STD e MTD, alcuni lettori potrebbero immaginare un modello di questo tipo:

  • MTD viene eseguito per primo
  • poi STD completa ciò che MTD non ha decodificato

Ma il comportamento reale on-air non indica questo.

L’interpretazione più corretta è l’opposto:

  • STD effettua il passaggio o i passaggi di ricognizione iniziali e più leggeri
  • MTD esegue il decode finale e più approfondito

In uso reale, la distinzione è:

  • 2-Stage: STD @41 → MTD finale @49
  • 3-Stage: STD @41 → STD @46 → MTD finale @50

La distinzione è importante. 3-Stage offre la massima prestazione di decodifica possibile, ma 2-Stage è la raccomandazione più pratica per la maggior parte degli utenti perché evita il costo CPU del secondo pre-passaggio STD a nzhsym=46.

Perché usare STD negli stadi iniziali?

Anche questo è rivelatore.

Se l’obiettivo fosse semplicemente «eseguire più volte il decoder», ci si potrebbe aspettare che il software esegua MTD ripetutamente in ogni stadio. Ma non è così.

La ragione probabile è semplice:

gli stadi iniziali devono essere leggeri e veloci.

In quei momenti iniziali la ricezione non è ancora completa. La quantità di informazioni disponibili è inferiore a quella dello stadio finale. Eseguire ogni volta a piena potenza la logica di decodifica più pesante non sarebbe necessariamente l’uso più efficiente del limitato tempo CPU.

Il software usa quindi STD per controllare rapidamente ed economicamente i punti iniziali e riserva MTD al passaggio finale, più importante.

Non è un semplice dettaglio implementativo. Riflette una filosofia di decodifica estremamente adatta all’FT8 come carico breve, a raffica e sensibile al timing.

Il codice suggerisce inoltre che gli stadi iniziali usano un’elaborazione più vincolata rispetto allo stadio finale, rafforzando l’idea che queste modalità non siano semplici passaggi ripetuti, ma una progressione a stadi in cui ogni passaggio ha un ruolo diverso.

L’essenza di 2-Stage e 3-Stage è l’allocazione del tempo

In fondo, 2-Stage e 3-Stage riguardano davvero una sola cosa:

come distribuire lo sforzo di calcolo all’interno di un ciclo di 15 secondi.

  • Il decoder dovrebbe dare un’occhiata prima?
  • Dovrebbe effettuare un ulteriore controllo a metà ciclo?
  • Dovrebbe aspettare fino alla fine per il tentativo finale più completo?

È questo che decidono le modalità a stadi.

2-Stage e 3-Stage non vanno quindi considerati semplici regolazioni temporali. È meglio interpretarli come modi differenti di distribuire nel tempo il decoder FT8.

Fig. 2 — Struttura interna di 2-Stage / 3-Stage
Light · Fast · Early scoutingSTD runs early — a lightweight candidate scan before reception is complete.
Heavy · Thorough · Final processingMTD fires last — full multi-core decode with maximum signal available.
2-Stage
Balanced — responsiveness with missed-decode reduction
STD
11.8s
pre-pass
MTD
14.1s
final decode
STD pre-pass → MTD final decode. 2-Stage performs one STD pre-pass at nzhsym=41, then runs final MTD at nzhsym=49. It achieves about 99.5% of 3-Stage yield with far less CPU cost.
3-Stage
Most aggressive — maximum missed-decode reduction
STD
11.8s
pre-pass ①
STD
13.2s
pre-pass ②
MTD
14.4s
final decode
STD pre-pass × 2 → MTD final decode. 3-Stage adds the second STD pre-pass at nzhsym=46 and runs final MTD at nzhsym=50. It offers maximum performance, but is best suited to high-end machines.

Come interpretarli nell’uso reale?

Tradotta in termini operativi, la distinzione diventa molto concreta.

2-Stage

  • mantiene abbastanza bene la reattività
  • aggiunge un controllo più precoce
  • mantiene lo stadio finale vicino al timing Normal
  • migliora il recupero dei candidati senza portare il carico CPU agli estremi

In altre parole, è una strategia a stadi equilibrata.

3-Stage

  • controlla presto
  • controlla di nuovo a metà
  • mantiene comunque un passaggio MTD finale vicino al timing Late
  • spinge più forte per ridurre i decode mancati
  • ma aumenta di conseguenza il carico CPU

3-Stage è quindi la modalità a stadi più ambiziosa e aggressiva disponibile.

Se la CPU ha margine sufficiente può essere estremamente interessante. Se invece è già vicina ai propri limiti temporali, il vantaggio teorico conta meno del semplice fatto di terminare il processo in modo pulito.

A questo punto il significato di queste modalità diventa molto più chiaro:

non sono opzioni cosmetiche, ma filosofie diverse su come spendere i 15 secondi di un ciclo FT8.

Un altro punto importante

Le modalità a stadi non sono soltanto «decode multipli»: assegnano ruoli diversi ai diversi stadi

Da una prospettiva più ampia, ciò che rende 2-Stage e 3-Stage così interessanti non è soltanto il fatto che attivino il decode più di una volta.

Il punto più profondo è che ogni stadio svolge un ruolo diverso.

  • gli stadi iniziali sono più leggeri e veloci
  • lo stadio finale è più completo
  • lo sforzo CPU è distribuito lungo il ciclo invece di essere speso tutto in una volta

Questo si adatta molto bene all’FT8.

In linea di principio si potrebbe aspettare la fine e prendere una sola decisione finale. Ma c’è un valore reale nel cercare prima i candidati recuperabili e poi riesaminare il problema più tardi con più informazioni e un’elaborazione più approfondita.

Per questo capire le modalità a stadi non significa soltanto capire una singola impostazione. Significa davvero capire che cosa sia l’ottimizzazione FT8.


Interpretazione pratica

Come va usata concretamente ogni modalità?

Dopo tutti i dettagli tecnici, vale la pena tornare al linguaggio operativo.

2-Stage

Molto pratico. Mantiene la reattività pur effettuando un controllo precoce. Lo stadio finale non arriva tardi come Late, evitando così di diventare inutilmente oneroso.

3-Stage

La modalità più ambiziosa — in senso positivo.

Controlla presto, ricontrolla più tardi e mantiene comunque un forte passaggio finale. Se c’è margine CPU e ridurre i decode mancati è una priorità, è una delle impostazioni più interessanti dell’intero pannello.

Early

Non va liquidato come semplice soluzione di ripiego per CPU deboli. È anche una strategia di stabilità molto razionale. Se evitare di sconfinare nel ciclo successivo è più importante che estrarre l’ultimo frammento di segnale, Early può essere esattamente la scelta giusta.

Normal

Il punto di riferimento. Per la maggior parte degli utenti, i test dovrebbero iniziare qui. Rende molto più semplice il confronto con gli altri modi.

Late

Aspetta più a lungo, decodifica più tardi e prende la decisione finale con un po’ più d’informazione. In teoria può aiutare; in pratica è utile solo se il sistema continua a terminare in modo affidabile.

Nel complesso, i modi Decode Start non vanno interpretati come una questione di «gusto personale». È meglio considerarli diverse strategie temporali.

Fig. 3 — Guida alla scelta della modalità
Modalità Struttura dei passaggi di decode Carico CPU Più adatto a
2-Stage ndecoderstart=0 STD(41)→MTD(49) Medio Equilibrio tra reattività e riduzione dei decode mancati.
3-Stage ndecoderstart=1 STD(41)→STD(46)→MTD(50) Alto Ampio margine CPU · massimizzare la riduzione dei decode mancati.
Early ndecoderstart=2 Solo MTD (nzhsym=48) Basso–medio Prima la stabilità · evitare sconfinamenti nel ciclo successivo.
Normal ndecoderstart=3 Solo MTD (nzhsym=49) Medio Iniziate qui. È il riferimento per tutti i confronti.
Late ndecoderstart=4 Solo MTD (nzhsym=50) Medio–alto Ampio margine CPU · decodificare con il massimo segnale raccolto.

Quindi, che cosa stiamo realmente ottimizzando?

Non le prestazioni medie, ma l’uso del tempo CPU all’interno del ciclo di 15 secondi

A questo punto il principio generale dovrebbe essere chiaro.

Ottimizzare l’FT8 non significa semplicemente rendere tutto «più potente».

Significa decidere:

  • quanto aspettare
  • con quale frequenza controllare
  • dove effettuare i passaggi più leggeri
  • dove effettuare il passaggio finale più pesante
  • e se l’intero processo rimane stabile da un ciclo all’altro

In altre parole, la questione è come vengono usate le prestazioni della CPU, non soltanto quante prestazioni esistono.

Da questa prospettiva, Decode Start è una delle impostazioni più importanti dell’intero pannello del decoder. Quella che sembra una piccola opzione dell’interfaccia è in realtà un’espressione diretta della strategia temporale.

Per questo comprendere Decode Start è più che spiegare un’impostazione: è un modo per capire la filosofia di fondo dell’allocazione computazionale nell’FT8.


Una nota più personale

Perché sto scrivendo tutto questo

Fin qui ho cercato di mantenere la discussione generale e tecnica. Ma per dare il giusto contesto devo chiarire la mia posizione personale.

Sono un appassionato di JTDX. Amo davvero la sua interfaccia utente. Sono anche uno dei beta tester ufficialmente autorizzati dal team di sviluppo JTDX e mi occupo della localizzazione giapponese di JTDX.

Non scrivo quindi da osservatore esterno che lancia critiche casuali a JTDX da lontano.

Al contrario.

Conosco bene JTDX e gli attribuisco grande valore. Proprio per questo posso dirlo chiaramente: per il radioamatore medio, WSJT-X 3.1 improved è oggi una raccomandazione del tutto razionale.

Non perché JTDX non abbia valore, ma perché il software va giudicato anche per ciò che è concretamente disponibile, abbastanza maturo da essere provato e utile adesso.

Se qualcuno resta con JTDX perché ne preferisce davvero l’interfaccia, è assolutamente comprensibile. Ma se la domanda riguarda capacità di decodifica attuali e valore operativo pratico, WSJT-X 3.1 improved merita seria attenzione.


La mia filosofia operativa

Fin qui mi sono concentrato sui principi generali. Può però essere utile spiegare dove mi porta concretamente il mio modo di pensare.

Il mio PC principale usa un Core i9-9900K. Il dettaglio conta, ma non soltanto perché è una CPU relativamente potente.

Conta anche il modo in cui la macchina è configurata.

Nelle impostazioni di alimentazione di Windows imposto al 100% lo stato minimo del processore. In altre parole, non aspetto che la CPU aumenti la frequenza dopo l’arrivo del carico di decodifica: preferisco che sia già ad alta frequenza, pronta. Nel mio caso rimane di fatto a 4,7 GHz.

Il motivo è semplice.

Il decode FT8 non assomiglia a un rendering video prolungato con un carico costante per molto tempo. È molto più simile a una breve raffica di lavoro concentrato, ripetuta a intervalli prevedibili.

In quel tipo di carico, la prestazione media nei benchmark non racconta tutta la storia. Conta la risposta iniziale.

Se la CPU si trova in uno stato a basso consumo, il sistema deve:

  • rilevare il carico
  • cambiare stato prestazionale
  • aumentare la frequenza
  • regolare la tensione
  • e lasciare reagire lo scheduler

Questi ritardi possono essere trascurabili nei carichi prolungati, ma in brevi raffiche sensibili al timing possono contare più di quanto si pensi.

Ecco perché penso questo:

per l’FT8 è spesso meglio avere la CPU già pronta che aspettare che si svegli dopo l’arrivo del lavoro.

Naturalmente questa scelta comporta compromessi.

  • maggiore consumo energetico
  • più calore
  • minore efficienza
  • meno eleganza dal punto di vista del risparmio energetico

Ma su un PC di stazione considero reattività e stabilità del decode più importanti dell’efficienza elettrica.


Perché le mie impostazioni sono volutamente aggressive

Perché i 50 MHz per me contano

Le mie impostazioni riflettono piuttosto chiaramente questa filosofia.

  • Decoder Sensitivity: Subpass
  • QSO Rx Frequency Sensitivity: High
  • CPU già pronta ad alta frequenza

Non è una configurazione conservativa e non fingo che lo sia.

Ma c’è un motivo:

i 50 MHz per me contano moltissimo.

Sui 6 metri:

  • le condizioni possono cambiare rapidamente
  • l’attività può aumentare all’improvviso
  • segnali deboli e forti spesso coesistono
  • e una breve apertura può rendere particolarmente frustranti le occasioni mancate

Per questo sono disposto a spendere risorse CPU per ridurre i decode mancati.

Ecco perché uso:

  • Subpass, per cercare più in profondità
  • sensibilità High, per essere più aggressivo nel recupero dei candidati
  • e una configurazione di alimentazione che mantiene la CPU pronta prima dell’arrivo del carico a raffica

Non significa semplicemente «alzare tutto perché di più deve essere meglio».

È una strategia operativa deliberata costruita attorno a:

  • priorità ai 50 MHz
  • margine CPU sufficiente
  • importanza della velocità di risposta
  • e disponibilità a sacrificare efficienza in cambio di opportunità

Considerazioni finali

La vera domanda non è «Quale programma ha ragione?», ma «Quale filosofia di tuning si adatta alla vostra stazione?»

Se dovessi ridurre l’intera discussione a una sola frase, sarebbe questa:

L’ottimizzazione del decoder FT8 non riguarda le prestazioni medie della CPU. Riguarda quanto efficacemente tali prestazioni siano disponibili nei momenti in cui contano di più.

Vista da questa prospettiva, WSJT-X 3.1 improved è un software molto interessante. Non semplicemente perché offre più opzioni, ma perché dà all’operatore un controllo significativo sulla strategia temporale del decoder.

E Decode Start è uno degli esempi più chiari.

2-Stage, 3-Stage, Early, Normal e Late non sono semplici etichette. Rappresentano modi diversi di distribuire lo sforzo di decodifica lungo il ciclo FT8.

E osservando più da vicino i modi a stadi si vede un’idea particolarmente elegante:

STD e MTD non sono semplicemente entrambi «usati». Ricevono ruoli diversi e il tempo CPU viene distribuito di conseguenza lungo il ciclo. È una scelta progettuale sofisticata — e capirla cambia completamente il modo di affrontare l’ottimizzazione.

Infine, lasciatemi dire questo da persona che apprezza davvero JTDX:

se oggi dovessi consigliare un software al radioamatore medio, WSJT-X 3.1 improved sarebbe molto vicino alla cima della lista.

Se il legame con JTDX nasce dalla sua interfaccia, è una cosa. Ma se la preoccupazione è la capacità di decodifica odierna in condizioni operative reali, ci sono pochi motivi per esitare.

Installatelo. Provatelo. E valutatelo in aria.

Questo risponderà alla domanda più onestamente di qualunque discussione astratta.

Correzione e ringraziamenti: una versione precedente di questo articolo descriveva erroneamente il decode live 2-Stage. Il comportamento corretto è: 2-Stage = STD @41 + MTD finale @49, mentre 3-Stage = STD @41 + STD @46 + MTD finale @50. Molte grazie a DG2YCB (Uwe) per l’importante chiarimento.

Autore

Yoshiharu Tsukuura (JP1LRT) — Radioamatore, appassionato di JTDX, beta tester autorizzato dal team di sviluppo JTDX e collaboratore alla localizzazione giapponese.

Sito web / blog: https://www.qrz.com/db/JP1LRT

73, Yoshiharu Tsukuura / JP1LRT