UIDIGI Versione 1.8 BETA 6 (20001228) TNC2 Copyright 2000 Marco Savegnago IW3FQG Versione Italiana the English Version is in UIDIGIE.TXT Cos'e' UIDIGI? -------------- UIDIGI e' un firmware da utilizzare con un normale TNC2 per realizzare un digipeater packet radio con funzioni avanzate adatto all'uso come digipeater APRS (APRS is a register trademark of Bob Bruninga WB4APR). Perche' UIDIGI? --------------- Perche' anche se e' possibile usare un normale TNC per realizzare un digipeater, UIDIGI realizza un digipeater con una serie di funzionalita' che lo rendono adatto a venir impiegato in una rete APRS complessa. Novita'di questa versione ------------------------- Fate riferimento al files changes.txt per conoscere le novita' rispetto alle versioni precedenti Le caratteristiche di UIDIGI ---------------------------- Il firmware puo' essere montato su un TNC2 o Clone compatibile al 100% con clock della CPU a 2.4576Mhz, 4.9152Mhz 9,8304Mhz e 32K di RAM. - Supporta AX.25 versione 1 e 2. - Configurazione dei parametri AX.25 di comunicazione Timers, SlotTime Persistence etc direttamente nella EPROM o da remoto tramite interfaccia sysop protetta da password - Ripetizione dei soli frame AX.25 UI con PID definibile (default 240) - Ripetizione del frame AX.25 UI indirizzati al nominativo o alias del digipeater (nominativo e alias sono modificabili da remoto) - Ripetizione del frame AX.25 UI indirizzati fino a 8 indirizzi generici (es RELAY WIDE, CALL) modificabili anche da remoto. - Ripetizione del frame AX.25 UI indirizzati a un call generico a cui viene applicato l'algoritmo di flooding dell'ssid (per default WIDEN-N) modificabile anche da remoto. - Ripetizione del frame AX.25 UI indirizzati a un call generico a cui viene applicato l'algoritmo di trace + flooding dell'ssid (per default TRACEN-N) modificabile anche da remoto. - Ripetizione del frame AX.25 UI gestiti in base all'SSID con possibilita' di definire il PATH direzionale (Nord Sud Est e Ovest con SSID >= 8) - Limitazione temporale del rate di ripetizione di frame - Funzione per limitare i loop di duplicazione dei frame se questi sono generati dallo stesso digipeater, se il nominativo del digipeater compare nella lista dei digipeater che hanno gia' ripetuto quel frame e anche se il frame contiene indirizzi generici. - Gestione del preempted digipeating. - Gestione remota protetta da password con possibilita' di conoscere alcuni parametri statistici relativi al funzionamento del digipeater. - Lista delle stazioni ascoltate. - Trasmissione periodica di 3 beacon con intervallo di ripetizione, path destinazione e testo distinti (ridefinibili anche da remoto). - Risposta ai frame di query APRS provenienti da altre stazioni. La versione di UIDIGI --------------------- Se nell'intestazione del programma a fianco al numero di versione compare la dicitura ALFA, BETA o GAMMA significa che il firmware potrebbe (e sicuramente potra'!) non essere ancora completamente a posto per cio' che riguarda il funzionamento. Cosa c'e' di piu' brutto di quando un programma ha dei buchi e si pianta??? Per questo tendo a rilasciare le versioni dei miei programmi solo quando sono certo del loro funzionamento (o gran parte). Perche' ancora il TNC2? ----------------------- - Perche' sicuramente chiunque ha un vecchio TNC2 a 1200bd da riciclare! - Perche' un TNC2 e' economico, semplice da far funzionare consuma poco! - Perche' in cima a una montagna un TNC2 e' molto meglio di un computer! A cosa serve UIDIGI ?? ---------------------- Chiunque opera in una rete packet radio APRS sa' che il sistema funziona se ci sono dei digipeater che indipendentemente dal loro nominativo siano in grado di ripetere frame indirizzati a path generici tipo RELAY o WIDE. Per far questo e' possibile usare un normale firmware, comprarne uno della Paccom oppure comprare un KPC Kantronics... Altrimenti si puo' usare UIDIGI che fa' le stesse cose di un normale digipeater con in piu' le caratteristiche sopra elencate. Come usare UIDIGI ----------------- UIDIGI funziona come qualunque altro firmware per TNC2. Modificate il file sorgente di configurazione, compilatelo e generate il file binario che andra' scritto su una EPROM da 32K. Gestione di ripetizione dei frame --------------------------------- Il digipeater e' abilitato a ripetere solo i frame AX.25 di tipo UI (proprio per evitare che il digipeater possa venir utilizzato per fare del normale traffico AX.25) indirizzati al proprio nominativo, il proprio alias o agli indirizzi specificati con i parametri UIDIGI, UIFLOOD e UITRACE: Metodo 1 (Percorso specifico): Un frame del tipo: IW3FQG>APRS v UIDIGI viene ripetuto da UIDIGI: IW3FQG>APRS v UIDIGI* Metodo 2 (Percorso generico): Un frame del tipo: IW3FQG>APRS v RELAY, WIDE viene ripetuto dal primo UIDIGI con la sostituzione del call: IW3FQG>APRS v UIDIGI*, WIDE Metodo 3 (UIFLOOD): Un frame del tipo: IW3FQG>APRS v RELAY,WIDE1-1 viene ripetuto dal primo UIDIGI: IW3FQG>APRS v UIDIGI*, WIDE1-1 e dal secondo UIDIGI (viene decrementato l'ssid e NON viene settato il bit H): IW3FQG>APRS v RELAY*, WIDE1-0 e dal terzo UIDIGI (non viene decrementato l'ssid perche' e' gia' zero e viene settato il bit H): IW3FQG>APRS v RELAY, WIDE1-0* Metodo 4 (UITRACE): Un frame del tipo: IW3FQG>APRS v RELAY,TRACE1-1 viene ripetuto dal primo UIDIGI: IW3FQG>APRS v UIDIGI*, TRACE1-1 e quindi dal secondo digipeater: e dal secondo UIDIGI (viene decrementato l'ssid e viene inserito il call del digipeater con il bit H settato): IW3FQG>APRS v RELAY, DIGI1*, TRACE1-0 e dal terzo UIDIGI (l'ssid e' a zero viene fatta la sostituzione del nominativo con quello del digipeater e su questo viene settato il bit H): IW3FQG>APRS v RELAY, DIGI1, DIGI2* Metodo 5 (SSID Path sperimentale): Questo metodo l'ho implementato in base alle mie osservazioni sul funzionamento del firmware presente nel ricetrasmettitore Kenwood TM-D700E. Per SSID > 0 e SSID < 8 su qualunque AX.25 UI frame con qualunque callsign di destinazione l'SSID viene decrementato di uno e il call del digipeater viene inserito nel path della lista di digipeater. Un frame IW3FQG>APRS-7: viene ripetuto: IW3FQG>APRS-6, UIDIGI*: Con SSID maggiore di 8 i frame viene trattato in maniera diversa perche' ci sono le regole di direzione: Se SSID e' uguale a 8 (Nord) su qualunque AX.25 UI frame con qualunque callsign di destinazione l'SSID viene posto a zero il call del digipeater viene inserito nel path della lista di digipeater seguito dal path per il nord inserito nella lista dei digipeater. Esempio un frame come: IW3FQG>APRS-8: viene ripetuto da un UIDIGI con NPATH = NORTH in: IW3FQG>APRS,UIDIGI*,NORTH: Se SSID e' uguale a 12 (Nord) su qualunque AX.25 UI frame con qualunque callsign di destinazione l'SSID viene posto allo stesso di quello che e' stato ricevuto (es 12) il call del digipeater viene inserito nel path della lista di digipeater seguito dal path per il nord inserito nella lista dei digipeater. IW3FQG>APRS-12: viene ripetuto da un UIDIGI con NPATH = NORTH in: IW3FQG>APRS-12,UIDIGI*,NORTH: La stessa regola vale per: Sud SSID 9, 13 Est SSID 10, 14 Ovest SSID 11, 15 In tutti i casi se il frame e' inviato al digipeater con anche un solo indirizzo nella lista di digipeater il frame non viene ripetuto: Es il frame: IW3FQG>APRS-8,UIDIGI: Non viene ripetuto. Metodo 6 (Preempt digipeating): (sperimentale) Il processo di prelazione e` una sorta di preprocessing dei frame ricevuti dal digipeater che rimuove i nominativi dei digipeater inutilizzati dal frame. Quando un digipeater ascolta un frame come questo: STATION1>APRS, PATH1, PATH2, PATH3 e ha PREEMPT 1, PREEMPTCALLS PATH3, PREEPTADD (none) prima di gestire il frame con le regole standard di ripetizione di un frame APRS cambia il frame in: STATION1>APRS, PATH3 quindi processa il frame con le regole standard di ripetizione per i frame APRS. Con il parametro PREEPTADD NEW1 il frame sara` STATION1>APRS, PATH3, NEW1 Ricordate che il processo di prelazione e` un preprocessing del frame quindi se dopo essere stato preprocessato il frame non e` considerato da ripetere UIDIGI non trasmettera` niente! Consideriamo il seguente esempio: Una stazione (IW3FQG) invia un frame: IW3FQG>APRS,IR3VIF*, IR3VIG, IR3FAL IR3FAL e' un digipeater che ascolta questo frame. Senza prelazione non ripeterebbe niente perche' questo frame dovrebbe essere prima ripetuto da IR3VIG. Con preempt ON, e IR3FAL in PREEMPTCALLS, IR3FAL digipeater pre processa questo frame in questo modo: IW3FQG>APRS,IR3VIF*,IR3FAL e quindi ripete il frame: IW3FQG>APRS,IR3VIF,IR3FAL* In via opzionale con PREEMPTADD il digipeater puo` aggiungere ulteriori nominativi al path quindi con il frame di prima e PREEMPTADD PATH1, PATH2 il frame risultante sara': IW3FQG>APRS,IR3VIF,IR3FAL*,PATH1,PATH2 L'interfaccia Sysop di UIDIGI ----------------------------- Il sysop del digipeater puo' collegarsi direttamente al digipeater con un programma di terminale oppure attraverso la seriale del TNC2. Nel primo caso come prima cosa e' necessario richiedere la procedura di identificazione come sysop (con il comando SYSOP), con qualunque altro comando il digipeater scolleghera' l'utente. I comando a disposizione del SYSOP sono i seguenti: AUXDEST [address] - Imposta l'indirizzo di destinazione dei beacon con i dati provenienti dal dispositivo collegato alla porta seriale del TNC AUXPATH [path] - Imposta il path di destinazione dei beacon con i dati provenienti dal dispositivo collegato alla porta seriale del TNC AUXRATE [n] - Imposta l'intervallo di emissione dei beacon con i dati provenienti dal dispositivo collegato alla porta seriale del TNC BEACON [bnum] [n] - Imposta l'intervallo di emissione dei beacon (bnum = 1 ~ 3, n = 0 ~ 180 sec) BEACONOFFSET [bnum] [n] - Imposta l'offset di emissione dei beacon (bnum = 1 ~ 3, n = 0 ~ 180 sec) BDL [bnum] [path] - Imposta il path di destinazione per i beacon (bnum = 1~3, path = AX.25 path) BTEXT [bnum] [text] - Imposta il testo dei beacon (bnum = 1~3, text = beacon text) BUDLIST [nominativi] - Imposta la lista dei nominativi i cui frame non vengono ripetuti CHECK [n] - Imposta il parametro LinkCheck (0~65535) CLOCK [hh] [mm] [ss] - Imposta il clock interno del digipeater CONNECT [nominativo] - Permette di collegare un altro digipeater o utente DIGIALIAS - Imposta l'alias del digipeater DIGICALL - Imposta il nominativo del digipeater DIGIPEAT [0|1] - Flag globale di abilitazione/disabilitazione ripetizione frame. EPATH [path] - Imposta path per destinazione Est (SSID 10|14) FRACK [n] - Imposta parametro FRACK HIGH [0|1] - Accende il LED (CON 0 o STA 1) del TNC2 INFO - Mostra le informazioni sul funzionamento del digipeater LED - Mostra lo stato dei led del digipeater LOW [0|1] - Spegne il LED (CON 0 o STA 1) del TNC2 MAXFRAME [n] - Imposta il parametro MAXFRAME MHEARD - Mostra le stazioni ascoltate dal digipeater - Con MHEARD _ il sysop puo` cancellare la lista NPATH - Imposta path per destinazione Nord (SSID 8|12) PERSISTANCE - Imposta il parametro PPersistance del digipeater PREEMPT - Attiva la gestione di preepted digipeating PREEMPTCALL - Imposta i callsign sui quali effettuare il preempted digipeating PREEMPTADD - Imposta la path da aggiungere tutte le volte che a un frame viene applicata la regola di preemption QUIT - Disconnette dal digipeater RESET - Provoca un reset a caldo del digipeater RESPTIME - Imposta parametro resptime RESTART - Provoca un riavvio del digipeater RETRY - Imposta parametro RETRY SLOTTIME - Imposta parametro SLOTTIME SPATH [path] - Imposta path per destinazione Ovest (SSID 9|13) SYSOP [?] - Avvia da parte del digipeater la procedura per identificare l'utente come SYSOP. Con ? il digipeater ritorna l'esito della risposta TEST - Avvia la procedura per il test del trasmettitore TXDELAY - Imposta il valore di TxDelay UICHECK [n] - Imposta la verifica di frame UI duplicati per un tempo pari a n secondi UIDIGI [calls] - Imposta i call generici che il digipeater ripete con sostituzione del call (max 8) UIDCSB 0|1 - Abilita/disabilita la sostituzione del nominativo nei frame indirizzati a call generici specificati con il parametro UIDIGI UIFLDFL [n] - bit 0 esegue il call substitution dopo l'ultimo WIDEn-n ripetuto - bit 1 inserisce il nominativo del digipeater prima di WIDEn-n UIFLOOD [call] - Imposta il call generico da usare con l'algoritmo di flooding UILOOP [n] - Imposta il bitmask da usare per la limitazione dei loop 0x01 = Non ripete frame con l'indirizzo di origine uguale a quello del digipeater o il suo alias 0x02 = Non ripete frame con l'indirizzo del digipeater nella lista dei digipeater che hanno gia' ritrasmesso il frame UIQUERY [0|1] - Imposta il flag di abilitazione alla risposta alle query APRS (Il beacon usato come risposta e' il numero 1). UISSID [0|1] - Imposta il flag di abilitazione a trattare i SSID degli indirizzi di destinazione dei frame UI UITRACE [call] - Imposta il callsign generico da usare con l'algoritmo trace UITRFL [n] - bit 0 esegue il call substitution dopo l'ultimo TRACEn-n ripetuto UNPROTO [call] - Imposta il call di destinazione dei beacon WPATH [path] - Imposta path per destinazione Ovest (SSID 11|15) Nota: in totti i comandi che impostano path or nominativi (BDL, BTEXT, BUDLIST, DIGIALIAS, DIGICALL, EPATH, NPATH, SPATH, UIDIGI, UIFLOOD, UITRACE, UNPROTO, WPATH) per cancellare l'intero contenuto usare il carattere '_' Es: NPATH _ cancella l'intero contenuto di NPATH. La configurazione di UIDIGI --------------------------- Il programma UIDGCFG serve a modificare i valori di default dei parametri memorizzati nella EPROM. Per modificare i parametri per prima occorre editare il file UIDIGI.TXT il cui nome puo' essere modificato) e modificare i parametri secondo le esigenze. Alla fine e' necessario usare il programma UIDGCFG.EXE per modificare il file binario di destinazione che verra' usato per programmare la EPROM. Come procedere: nell'archivio di distribuzione sono presenti i file: UIDIGI.BIN UIDIGI.TXT UIDGCFG.EXE Copiate questi 3 file da qualche parte nel vostro computer. Rinominate i file UIDIGI.BIN e UIDIGI.TXT con il nome del digipeater che andate a realizzare es: IR3VIG. Ora i file hanno nome: IR3VIG.BIN IR3VIG.TXT UIDGCFG.EXE Con un text editor qualunque modificate le impostazioni del file UIDIGI.TXT seguendo le indicazioni presenti nel file stesso per quanto riguarda i parametri. Normalmente modificate solo quello che vi sembra di dover cambiare quello che non capite lasciatelo com'e'! Compilate la versione con il comando: UIDGCFG IR3VIG.BIN IR3VIG.TXT Se non ci sono problemi il programma non da' nessun avvertimento, se ci sono problemi ve li segnala. Programmate una eprom che possa contenere l'immagine del file IR3VIG.BIN montatela nel TNC2 e date fuoco (accendete). Se tutto e' andato bene qualche istante dopo l'accensione il TNC2 emettera' il beacon. L'autore UIDIGI --------------- Questo testo non e' stato scritto con l'intento di fornire un manuale dettagliato per i meno esperti. Il firmware viene fornito senza nessun supporto da parte dell'autore che si riserva la possibilita' di modificarlo o di sospenderne la libera diffusione futura in ogni momento. Se qualcuno trova qualche errore o ha qualche buona idea o suggerimento (non adattamenti personali!) me lo puo' far sapere a mezzo lettera o messaggio SCRITTO, NON a parole (radio, telefono, citofono o aspettarmi sotto casa...). Il mio indirizzo e': Marco Savegnago Stradella Ospedale 87 36100 Vicenza In Packet-Radio: IW3FQG@I3KUH.IVEN.ITA.EU In Internet: iw3fqg@amsat.org Coordinate: Latitude: 45ø 33' 24" N Longitude: 11ø 32' 34" E Putroppo per voi sono un asincrono! Dove trovare gli archivi con le versioni aggiornate? ---------------------------------------------------- http://space.tin.it/computer/msavegna/uidigi.htm nella sezione files di UIDIGI mailing list UIDIGI mailing list ------------------- Per iscriversi alla mailing list dedicata a UIDIGI (in inglese) seguire la procedura di iscrizione disponibile alla pagina: http://www.egroups.com/group/uidigi Legal trademark --------------- APRS is a register trademark of Bob Bruninga WB4APR Copyright di UIDIGI ------------------- Il firmware UIDIGI e le sue componenti sono liberamente copiabili e distribuibili in qualsiasi forma e mezzo per scopi AMATORIALI e da cui comunque non si possa trarre profitto. E'anche proibito l'uso di questo programma per dimostrazioni in attivita' commericali private e pubbliche, istitiuzionali, comunali, regionali, statali, organi di polizia e prevenzione della salute pubblica e protezione civile senza l'autorizzazione scritta dell'autore che si riserva di poter sospendere in ogni momento la libera circolazione del software in ogni momento. Qualunque tipo di sfruttamento commerciale non espressamente autorizzato dall'autore e' da considerarsi proibito! L'autore non e' responsabile in caso che eventuali blocchi di funzionamento del software procurino perdite di dati o altro tipo di malfunzionamento. Libere contribuzioni all'autore ------------------------------- Per utilizzare questo programma non e' necessario versare nessun compenso all'autore. Comunque se lo ritenete utile e volete incoraggiare eventuali sviluppi future libere controbuzioni saranno sempre bene accette!! Fonti e riferimenti bibliografici --------------------------------- - Implementazione dell'AX25 del programma NOS di KA9Q - Implementazione dell'AX25 del programma TheFirmware del gruppo tedesco NORD>