Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
howto:ax25 [2013/03/26 10:50] – Removed reference to packet-BBS service's menu.asc file. Menu is now generated by ax25shell.js, with text/menu/head.asc as the default header. echickenhowto:ax25 [2014/01/07 12:06] – [Requirements] deuce
Line 7: Line 7:
 AX.25 packet radio is a digital mode of communication often used by amateur radio operators.  By connecting a device called a Terminal Node Controller (TNC) between a computer and a radio transceiver, one can transmit and receive digital data over the air.  While faster and more efficient modes of digital communication do exist, AX.25 persists due to being robust, reliable, usable over great distances, and due to the proliferation of software and hardware that supports this standard. AX.25 packet radio is a digital mode of communication often used by amateur radio operators.  By connecting a device called a Terminal Node Controller (TNC) between a computer and a radio transceiver, one can transmit and receive digital data over the air.  While faster and more efficient modes of digital communication do exist, AX.25 persists due to being robust, reliable, usable over great distances, and due to the proliferation of software and hardware that supports this standard.
  
-The traffic of other protocols, including TCP/IP, can be encapsulated in AX.25 frames, however what this page will focus on is so-called "unproto" usage of AX.25, namely using the protocol as a means of passing arbitrary data between systems.  A typical unproto session would involve a user accessing their TNC using a terminal emulator (SyncTERM, Minicom, Hyperterminal, etc.), issuing commands to have it connect to another station, then sending and receiving strings of ASCII text.  The answering station may be attended by another operator at a keyboard, or by software monitoring the TNC for activity.  For the caller, the experience is similar to (but slower than) calling a dial-up or Telnet BBS.+The traffic of other protocols, including TCP/IP, can be encapsulated in AX.25 frames, however what this page will focus on the more basic usage of AX.25, namely using the protocol as a means of passing arbitrary data between systems.  A typical session would involve a user accessing their TNC using a terminal emulator (SyncTERM, Minicom, Hyperterminal, etc.), issuing commands to have it connect to another station, then sending and receiving strings of ASCII text.  The answering station may be attended by another operator at a keyboard, or by software monitoring the TNC for activity.  For the caller, the experience is similar to (but slower than) calling a dial-up or Telnet BBS.
  
-Many packet radio-based bulletin board systems already exist, and in fact most TNCs include a basic BBS in their firmware.  Synchronet's many capabilities make it an ideal back-end for a packet radio BBS.  Using the information on this page, you should be able to get your Synchronet BBS on the air.+Several packet radio-based bulletin board systems already exist, and in fact most TNCs include a basic BBS in their firmware.  Synchronet's many capabilities make it an ideal back-end for a packet radio BBS.  Using the information on this page, you should be able to get your Synchronet BBS on the air.
  
 ===== Requirements ===== ===== Requirements =====
Line 24: Line 24:
   * [[dir:exec]]/load/ax25defs.js   * [[dir:exec]]/load/ax25defs.js
   * [[dir:exec]]/load/kissAX25lib.js   * [[dir:exec]]/load/kissAX25lib.js
 +  * [[dir:exec]]/load/callsign.js
  
 If any of the above files are missing, grab the latest copies from the [[http://cvs.synchro.net|Synchronet CVS]]. If any of the above files are missing, grab the latest copies from the [[http://cvs.synchro.net|Synchronet CVS]].
Line 33: Line 34:
 Most TNCs offer a terminal mode of operation, meaning that you the operator can access your TNC via a serial port, issue textual commands to it and view human-readable menus and responses.  When calling packet radio bulletin board systems, this is the mode that you'll typically use.  While most TNCs support the same commands and present information to the user in similar ways, no piece of software can reliably control every given model of TNC using these commands, or reliably parse the TNC's output. Most TNCs offer a terminal mode of operation, meaning that you the operator can access your TNC via a serial port, issue textual commands to it and view human-readable menus and responses.  When calling packet radio bulletin board systems, this is the mode that you'll typically use.  While most TNCs support the same commands and present information to the user in similar ways, no piece of software can reliably control every given model of TNC using these commands, or reliably parse the TNC's output.
  
-KISS is a protocol that defines a standard for communication between software running on a host computer and a connected TNC.  When software control and monitoring of a TNC is required, KISS is the most reliable and universal option.  In KISS mode, the TNC is responsible for very few things.  It listens for data inbound from your transceiver, demodulates it, verifies the checksums of inbound packets and discards them if necessary.  When transmitting, the TNC watches for KISS frames from your computer, appends checksums to the AX.25 packets encapsulated therein, and then modulates the data onto an audio signal to be sent out over the air.+KISS is a protocol that defines a standard for communication between software running on a host computer and a connected TNC.  When software control and monitoring of a TNC is required, KISS is the most reliable and universal option.  In KISS mode, the TNC is responsible for very few things.  It listens for data inbound from your transceiver, demodulates it, verifies the checksums of inbound packets and discards them if necessary.  When transmitting, the TNC watches for KISS frames from your computer, appends checksums to the AX.25 packets encapsulated therein, and then modulates the data onto an audio signal to be sent out via a radio.
  
-While a TNC in Host or BBS mode will often only support one connection at a time, KISS-mode TNCs operate on a connectionless basis, passing all AX.25 frames that they receive from the channel along to the host computer.  This means that the host software can support concurrent AX.25 connections via a single TNC.  Unnecessary?  Surebut it's still "better."+While a TNC in Host or BBS mode will often only support one connection at a time, KISS-mode TNCs operate on a connectionless basis, passing all AX.25 frames that they receive from the channel along to the host computer.  This means that the host software can support concurrent AX.25 connections via a single TNC, while also taking the memory limitations of 1980s-era TNCs out of the equation.
  
-KISS mode offers a lot of flexibility, and makes it very easy for software running on your computer to communicate with many different models of TNC.  Unfortunately, it also places the burden of supporting the AX.25 protocol mostly on the host software.  This means that support for the AX.25 protocol has to be provided by Synchronet itself.  By way of a Javascript library and some supporting files, Synchronet now has full support for the KISS protocol and partial (let's say 90%) support for the AX.25 protocol.  There are several things left to do before the protocol is fully implemented, so in the meantime such communication may be unreliable, especially when operating under less than ideal conditions.  Your mileage may vary.+KISS mode offers a lot of flexibility, and makes it very easy for software running on your computer to communicate with many different models of TNC.  Unfortunately, it also places the burden of supporting the AX.25 protocol mostly on the host software.  This means that support for the AX.25 protocol has to be provided by Synchronet itself.  By way of a Javascript library and some supporting files, Synchronet now supports the KISS and AX.25 protocols.
  
 =====Configuring and Enabling Packet Radio Support for Synchronet===== =====Configuring and Enabling Packet Radio Support for Synchronet=====
Line 50: Line 51:
   serialPort = <Device name (Windows) or path (*nix)>   serialPort = <Device name (Windows) or path (*nix)>
   baudRate = <Numeric baud rate, eg. 9600>   baudRate = <Numeric baud rate, eg. 9600>
 +  ; Optional values
 +  ;port = <0 - 15, the radio port number on a multiport TNC>
 +  ;timeout = <Time to wait while reading a packet from the TNC, in milliseconds>
 +  ;txDelay = <Time between transmitter keydown and packet transmit, in milliseconds>
 +  ;persistence = <CSMA persistence, between 0 and 1>
 +  ;slotTime = <CSMA slot time, in milliseconds>
 +  ;txTail = <Obsolete>
 +  ;fullDuplex = <1 or 0>
 +  ;setHardware = <Consult your TNC documentation; don't include this value unless you have to>
  
 The TNC name isn't terribly important, but you'll need to remember which names you chose for your TNCs once we get a bit farther along. The TNC name isn't terribly important, but you'll need to remember which names you chose for your TNCs once we get a bit farther along.
Line 70: Line 80:
   serialPort = /dev/ttyUSB0   serialPort = /dev/ttyUSB0
   baudRate = 9600   baudRate = 9600
- 
  
  
Line 78: Line 87:
  
 If your [[dir:text]] directory does not already contain a file called badwords.can, you should create it and populate it with a line-by-line list of all of the fuck, shit, piss, etc. that you do not want your station to transmit over the air.  Hell damn fart. If your [[dir:text]] directory does not already contain a file called badwords.can, you should create it and populate it with a line-by-line list of all of the fuck, shit, piss, etc. that you do not want your station to transmit over the air.  Hell damn fart.
-====Launch the AX.25 Tunnel==== 
  
-Okay, you're finally ready to go Open a command prompt and navigate to your [[dir:exec]] directory.  Once theretype:+====Prepare the AX.25 Command Shell==== 
 + 
 +The AX.25 command shell ([[dir:exec]]/ax25shell.js) is custom user interface geared toward packet radio users.  It is not recommended for use by clients connecting by other means. 
 + 
 +To have your BBS launch this command shell when an AX.25 client connects, make a copy of [[dir:exec]]/logon.js and place it in your [[dir:mods]] directory.  Edit [[dir:mods]]/logon.jsand add the following code to the top of the file: 
 + 
 +  if(console.terminal == "AX25") { 
 +  bbs.exec("?ax25shell.js"); 
 +  bbs.hangup(); 
 +  exit(); 
 +  } 
 + 
 +By launching the shell in this manner, you can bypass any modules in your login sequence that are not appropriate for AX.25 clients (lightbar menus, etc.), and also avoid setting an alternate command shell for those users who also connect over the internet via telnet, SSH or rlogin. 
 + 
 +====Launch the AX.25 Tunnel====
  
-  jsexec -l ax25tunnel.js <tnc1> <tnc2> <tnc3> etc.+Now that you're ready to go, open a command prompt and navigate to your [[dir:exec]] directory Once there, type:
  
-Where <tnc1> etcare the names of TNCs as defined in [[dir:ctrl]]/kiss.ini.  Example:+  jsexec -l ax25tunnel.js
  
-  jsexec -l ax25tunnel.js KPC3 AEA-PK232+The AX.25 tunnel script ([[dir:exec]]/ax25tunnel.js) should now be running.  This script is responsible for monitoring your TNCs (as defined in [[dir:ctrl]]/kiss.ini,) handling connections from AX.25 clients and tunnelling traffic between them and the terminal server of your BBS (via RLOGIN.)
  
-The AX.25 tunnel script ([[dir:exec]]/ax25tunnel.js) should now be running.  This script is responsible for monitoring your TNCs, handling connections from AX.25 clients and tunnelling traffic between them and the Packet-BBS service running on your BBS.+====Mapping User Accounts to Callsigns====
  
-Hopefully in the near future this will be replaced by a similar script that will gate between AX.25 clients and the terminal server via Rlogin orless preferably, Telnet.  The Packet-BBS Service is intended only as a temporary solution.+[[dir:exec]]/ax25tunnel.js matches the callsign and SSID of an inbound AX.25 link to a user account on the BBS whenever possible.  It does this by comparing the combined callsign and SSID (eg. "VE3XEC0"or "VA7RRX2") against the Chat Handle fields of all users on the BBS until a match is found.  If an existing user of your BBS wishes to link their callsign to their account, all you'll need to do is add the callsign+SSID pair that they'll be connecting from to the Chat Handle field of their account.
  
 +If no match for the callsign and SSID can be found in the system when a client connects, an account will be created for them (populated with data from various online callsign databases if possible) and they will be logged in automatically.
  
 ====Libraries==== ====Libraries====
Line 101: Line 124:
   * [[dir:exec]]/load/kissAX25lib.js   * [[dir:exec]]/load/kissAX25lib.js
  
-The latter is heavily commented, so if you wish to develop your own scripts to make use of Synchronet's packet radio support, start by reading that file.  You may also wish to consult [[dir:exec]]/ax25tunnel.js, [[dir:exec]]/ax25call.js, and [[dir:exec]]/examples/ax25monitor.js for some examples of how to use the objects and functions provided by kissAX25lib.js.+The latter is heavily commented, so if you wish to develop your own scripts to make use of Synchronet's packet radio support, start by reading that file.
  
 =====Compatibility===== =====Compatibility=====
  
-KISS-mode being what it is, most any KISS TNC should at the very least work on the server-side.  kissAX25lib.js has been tested with the following TNCs:+KISS-mode being what it is, most any KISS TNC should at the very least work on the server-side.
  
-  * Kantronics KPC3+ Firmware rev9.1 (Client & Server) +Synchronet's KISS support has just been rewritten.  Notes about testing with specific hardware will appear here once testing has been done.  Please feel free to contribute your own notes.
-  * Kenwood TH-D7A / TASCO Radio Modem 09/15/99 2Chip version 2.00 (Client only - this KISS implementation is broken) +
-  * AEA PK-232 (Client & Server) +
-  * AEA PK-12 (Client & Server) +
-  * MFJ-1278 (Client & Server) +
-  * TAPR TNC 2 (Client & Server) +
-It, uh, works with most of them, but the library is not without its problems, especially when dealing with certain clients.+
  
 =====Support===== =====Support=====
  
-This is a real work in progress, so the answer to a lot of your questions might be "Yeah, I know - I'working on it."  However, information about your experiences in using this software are welcome and will help to improve it.  If you have any questions or anything to report, try the following:+You can blame me (echicken) for Synchronet's AX.25 support.  I'eager to hear about your experiences with it.  If you have any questions or anything to report, try the following:
  
   * DOVE-Net: Send a message to echicken in the Synchronet Discussion or Ham Radio sub-boards   * DOVE-Net: Send a message to echicken in the Synchronet Discussion or Ham Radio sub-boards