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!
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!
|