Baycom EPP packet radio modem

Baycom heeft een zeer mooie oplossing uitgewerkt en uitgebracht. Het gaat om een modem dat op de parallelpoort van de PC aangesloten kan worden en hierdoor wordt de SCC kaart vervallen die nodig is voor het andere type modem's. Ook ligt de maximale snelheid een stuk hoger omdat die met de andere modems die gebruik maken van de SCC kaart door de SCC chip begrensd worden.
Dit alles klinkt erg goed, maar de praktijk bleek helaas het 100% overeen te komen met de theorie. De interne werking staat beschreven in het werking document, maar komt kortweg op het volgende neer:

  1. De software in de PC doet de HDLC en/decoding. Dit scheelt hardware.
  2. FPGA wordt bij startup door de driver vanuit de PC geprogrammeerd en in de juiste mode gezet.
  3. Buffering vindt plaats in een static RAM chip. Hierdoor is de traagheid van software/printerpoort geen probleem bij hoge bitrates.
  4. Weinig hardware doordat veel functies in de programeerbare FPGA ondergebracht worden.
Baycom EPP modem
Test opstelling Baycom EPP modem
Baycom EPP modem
Testopstelling Baycom EPP modem

Ik heb gekozen om de modems vanuit Linux te besturen. Het testen van de modems kan eenvoudig met DOS software gedaan worden. Ook is het mogelijk om hiermee een Bit Error Rate Test (BERT) te doen. Als de testen succesvol zijn dan kan met het echte werk begonnen worden.

Tijdens de proeven bleek al snel de benodigde printerpoorten nogal verschillend geïmplementeerd waren op de diverse Pc board's . Toen geschikte Pc's gevonden waren waarin een correcte implementatie van de printerpoort aanwezig was bleek dat de beloofde snelheden niet te bereiken waren onder Linux. Zo was de MTU size van de EPP driver software niet hoger te zetten dan 512 bits. Hierdoor worden er maar zeer kleine data pakketjes verzonden en gaat er erg veel tijd verloren met het omschakelen tussen zenden en ontvangen. De driver is waarschijnlijk alleen onder AX25 gebruikt, en dan heb je minder grote buffers nodig dan met TCP/IP. De modems zijn onder Linux niet in full-duplex mode te gebruiken. Ook als de driver software om een vreemde reden geen contact meer had met de modem (FPGA crash?) dat stond alles stil en de driver neemt hierop helaas geen actie.

De wijzigingen in de Linux baycom-epp driver zijn hier te vinden. Deze moeten eerst aangebracht worden voordat je een nieuwe Linux kernel compileert.
Door in de driver software te gaan zoeken is de oorzaak van de beperkte MTU size opgelost en is er nu de maximale snelheid haalbaar. De aangepaste driver is baycom_epp.c en hdlc.h zijn hier te vinden. Deze gebruik ik voor de Linux 2.4.x kernel. Deze is dus nog niet getest voor de 32.6.x kernels. De modems draaien op 160KBit/Sec. Hogere snelheden zijn mogelijk, maar dan moeten eerst de filters in de zend/ontvangers aangepast worden omdat deze nu de beperkende factor zijn. De bandbreedte wordt nu beperkt tot ongeveer 300KHz.

Het opstart/stop script voor de Baycom modem werkte ook niet goed voor deze toepassing en is dan ook aangepast. Deze is baycom-start-stop te vinden.
Het enige probleem wat hier over bleef is dat bij een PC soms de driver er mee stopt en alleen nog de melding "Sep 17 02:27:00 pa3hfn.sys2.ampr.org kernel: baycom_epp: EPP timeout!" in de /var/adm/messages file achter laat. Daarna is het afgelopen en functioneert de modem niet meer. Deze fout komt niet echt frequent voor. (Bij continue functioneren eens in de 30 uur gemiddeld). Het is waarschijnlijk dat de modem in een ongedefinieerde status terecht komt en hier door de driver software niet meer uit te halen is. De enige oplossing is dan ook om de drivers te unloaden uit de kernel en deze opnieuw te starten. Deze controle wordt nu door een gewijzigd logcheck script uitgevoerd. Dit script controleert de /var/adm/messages file op verdachte meldingen, maar test nu ook op Baycom-EPP problemen en als deze gevonden worden dan zal her een herstart van de driver plaatsvinden.