Home

News

Introduction

Documentation

Download

Mailinglist

Sysop Registry

Developer

PC/FlexNet - An Overview

This document describes the basic concepts behind PC/FlexNet, a modular AX.25 stack for DOS or Windows95 based personal computers.

What is PC/FlexNet?

PC/FlexNet is a powerful, flexible and easy to use AX.25 stack for Intel-80x86 based PC's running on DOS or MS-Windows95. PC/FlexNet's sister software, RMNC/FlexNet, is a digipeater software for a microcontroller hardware (the RMNC). It is widely used in central europe and famous for its reliability. PC/FlexNet's features can be summarized as follows:

    Speed Actual speeds depend on the hardware configuration, but PC/FlexNet is much faster than other AX.25 stacks, eg. TheNet
    Flexibility PC/FlexNet is highly modular, every module (except the Kernel) is optional, so you can load just the modules you need.
    Ease of use PC/FlexNet has very few parameters to adjust, just two per radio channel. The other parameters, especially the channel access parameters, are set automatically according to the channel usage characteristics.
    Compatibility PC/FlexNet works with virtually any hardware that can be used as a modem and almost all DOS based amateur radio applications.
    Digipeater The FlexNet kernel contains a simple SSID based digipeater. The optional FLEXDIGI module provides a full fledged digipeater featuring a proprietary routing protocol that is much more reliable and faster converging than eg. NET/ROM. FlexNet's hop-to-hop acknowledges reduce packet loss significantly and make connections over dozens of digipeaters possible!
    Background operation PC/FlexNet and its L1 drivers are TSR (terminate and stay resident) programs, i.e. they return immediately to the DOS prompt. PC/FlexNet applications come in two flavours: TSR and non-TSR. PC/FlexNet supports any number TSR applications (as long as memory suffices...), but only one non-TSR application (the last one).
    Extendability PC/FlexNet's modular concept makes development easy. Unlike other big monolithical solutions, each author only needs to know his small module. This improved the quality and stability of the modules a lot. Besides, there are developer kits available from the author, (D)K7WJ. The kits provide C sample files and C linkable libraries.

The module hierarchy

Please note that the graph only shows a subset of the available modules and applications, look at the appropriate web sites for additional modules and applications!

[FlexNet Module Hierarchy]

The most important module (and the only one not optional :-)) is the FlexNet kernel, FLEXNET.EXE. It provides an interface to the L1 drivers at the lower edge, and an application interface at the upper edge. The kernel uses the L1 drivers to actually transmit and receive packets over the air (or the wire). PC/FlexNet applications use the kernel to set up outgoing connects and listen to incoming connects.

The L1 drivers actually access the hardware to transmit and receive packets. The FlexNet kernel supports up to 16 channels. L1 drivers may support more than one channel. Each driver should be accompanied by a .DOC file describing its capabilities and command line parameters. Most .DOC files are bi or trilingual (german, english and some french too).

There are a few applications that support the PC/FlexNet application programming interface directly, most notably the Baycom Mailbox (BCM) and the Baycom Terminal (BCT). Emulators such as TFEMU (WA8DED emulator) provide standard amateur interfaces. As they are emulations, they are not perfect; but they are good enough so that almost all programs work with them.

Installing PC/FlexNet

Starting the software requires the following steps. Enter them at the DOS prompt (or write them into a batch file)

FLEXNET
This loads the FlexNet kernel. Now you'll need to load the L1 drivers according to your hardware. As an example, the following line will load the Baycom SER12 driver at COM1. The command line options are described in the .DOC file of the driver.
SER12 1
When you have loaded all the L1 driver you wanted (PC/FlexNet supports up to 16 channels), you may start the Kernel with:
FLEX
After this command, it is no longer possible to load L1 driver, but now Applications may be started. You should now set the operating parameters of the drivers just loaded. The kernel is now functional and will receive and transmit packets.
FSET MODE 0 1200
sets the baud rate of channel 0 (the first channel) to 1200 baud
FSET TXDELAY 0 20
sets the TxDelay (the time spent after keying the transmitter and before sending any data to allow the PA to arrive at its rated power level) to 200ms, which is suitable for many HT transceivers. Crystal controlled transceivers usually need much less.
BCT /n yourcall
You may now start PC/FlexNet applications. This example starts the baycom terminal. Replace yourcall by your callsign.
TFEMU
This starts the WA8DED emulator in TFPC* compatible mode. If your application expects the DRSI mode, use the parameter /dr.

PC/FlexNet modules may be unloaded. The following commands achieve this:

KILLAPPL
This command removes the last loaded TSR application (such as TFEMU).
FLEX /u
Removes every PC/FlexNet module including the Kernel, L1 drivers, and TSR applications

Reporting bugs

PC/FlexNet exists now for over one year. Its roots (RMNC FlexNet) are even much older, more than 6 years. It is thus a very mature software. So if you find an unexpected behaviour, please read the documentation first! If the problems persist, send an E-mail (via the Internet or via Packet Radio) to the appropriate author (the address listed in the .DOC file of the module that causes your problems). Please always include a detailed description of:

  • The version numbers and file dates of every PC/FlexNet module
  • Your hardware and operating system software (including other resident drivers; AUTOEXEC.BAT and CONFIG.SYS may also help)
  • What you did exactly and what you expected

Since this is our hobby, do not expect us to reply within 24 hours, don`t even expect an answer at all. Please include as much information as possible, "it does not work" does not help us to help you.

Why does the FlexNet group always have to reinvent the wheel?

Sorry. We are trying to use established amateur standards, but sometimes they do not provide the features we need. Rather than presenting an inferior solution, we invent a new specification.

Application interface

The established standard for AX.25 stacks communicating to applications is the WA8DED hostmode. It has several drawbacks.

  • it is slow
  • it is hard to use for application developers (need for polling, resynch procedures)
  • it is not transparent (i.e. you cannot do e.g. TCP/IP through it!)

Therefore we decided to invent an easy to use, fast and proprietary application programming interface and provide WA8DED compatibility via an optional module.

Using TNCs with PC/FlexNet

The established protocols at the TNC to PC connection and their disadvantages are:

  • WA8DED hostmode
    • it is slow
    • it is hard to use
    • it is not transparent
  • KISS
    The disadvantage of KISS is that it does not allow the tight control of the channel activities that are needed for advanced channel access protocols such as Optima or DAMA. You can never know when a KISS TNC actually transmits the packets you've sent it!
  • Proprietary protocols
    because they are proprietary

That's why we invented 6PACK. There is an EPROM image available that implements 6PACK on TNC2 compatible designs. The specification of 6PACk is also available from our homepage.

The KISS driver supplied with PC/FlexNet is intended to communicate with other computers. Don't use it to drive your TNC, it will not work.

The routing protocol

The routing protocol that existed when (D)K7WJ started with RMNC/FlexNet was NET/ROM. It had (and mostly still has) many disadvantages so that (D)K7WJ decided to build a new one. Success justified him! In central europe, it is now possible to reliably connect over dozens of digipeaters without knowing the path!

Thomas Sailer - sailer@ife.ee.ethz.ch


pages created by Gerald Schreiber, dl9fck, last updated: March 2001