INTRODUCTION---rtpDir/rtpDir_tm bridge: An Asterisk-IRLP-Echolink application. ======================================================================================= rtpDir/rtpDir_tm bridge, is a VoIP software that can run on any station, repeater or link. The current version 1.52 also runs as a BRIDGE conference server with a graphical interface(rtpDir) or without graphical interface(rtpDir_tm). rtpDir/rtpDir_tm bridge uses RTP/RTCP protocol. We recommend downloading the following RFC's. 1889, 1890 which were obsoleted by 3550 and 3551. rtpDir works on Linux(no emulation) and Windows and has the same screen interface on both platforms. rtpDir_tm works on Linux systems that have no desktop(X11,KDE,GNOME) installed and it is useful for Linux users that do not need or want to install a GUI on top of their Linux box. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose. Configuration choices ======================================== It can be configured to run as Echolink/Echolink conference. It can be configured to run as Echolink + IRLP with codec GSM or ADPCM or u-Law. It can be configured to run as an IRLP reflector/Echolink conference on a specific reflector channel(port) with codec GSM or ADPCM or u-Law. IRLP Links and repeaters, Echolink links and repeaters are also supported. *Asterisk* nodes are also supported. D-Star nodes are also supported by making use of the dextra_cli package or the dstar2analog package. You will either use rtpDir + dextra_cli to connect to D-Star nodes running dextra_srv or You will use rtpDir + dstar2analog to connect to D-Star nodes running dplus Note that most D-Star nodes run dplus which tries to block you from accessing D-Star. WARNING:Starting with release v1.21: ==================================== For an IRLP node running the old text mode EchoIRLP which is IRLP + tbd + EchoIRLP scripts, you will have to remove tbd. The steps to do that, are listed on the rtpDir yahoo group, in the Files section, in the file remove_tbd.txt When you finish doing that, then follow the steps under the section "Additional steps if you plan to run rtpDir/rtpDir_tm in Echolink + IRLP mode", listed below in this document. The reason behind the discontinued support for tbd is because our group has no control of the changes in that software and we can not guarantee any more that it will work with future versions of the rtpDir bridge as the design approach of rtpDir/rtpDir_tm is very different from tbd. WARNING: Automatic/nightly updates with yum =========================================== For people that are running Linux systems, it is strongly suggested that you disable the automatic/nightly updates with yum or at any time during the day. The reason is that the automatic software updates may render your Linux system unuseable or in the worst case scenario un-bootable. So, add the following line to /etc/yum.conf at the end of the file: exclude=kernel* Also, disable all the automatic software updates that yum is doing overnight by disabling the updates. service yum stop chkconfig yum off It is very important that you do that, especially if you intend to run Asterisk or IRLP on that Linux box. You can always install or update software on your Linux box by executing the yum command manually like this: yum install someNEWsoftwareHERE CONFERENCE CALLSIGNS ==================== To request a new CONFERENCE callsign, example: *MYCONF*, enter your new CONFERENCE callsign, example *MYCONF* as the call in the 5198.conf configuration file or 5198_tm.conf The configuration file for rtpDir is 5198.conf, the configuration file for rtpDir_tm is 5198_tm.conf Example: If you want to create a new CONFERENCE callsign, example: *MYCONF* set this: call=*MYCONF* Then start rtpDir(or rtpDir_tm) bridge. At this point, rtpDir/rtpDir_tm bridge will go into a loop and you will have to verify/validate the new CONFERENCE callsign at http://www.echolink.org/validation/ Check to see if a "firewall" issue is preventing the rtpDir/rtpDir_tm bridge from contacting the Echolink servers. Also, be sure you are NOT using an EchoLink Proxy to connect; You cannot register a new callsign through a Proxy connection. After validation has been completed, stop and re-start the rtpDir/rtpDir_tm bridge. You can not run both, rtpDir and rtpDir_tm unless you change ports in the config file, since rtpDir and rtpDir_tm do mostly the same thing and open/bind the same ports. Credits: ======= Thanks to VA3TO for supplying us with the specs to the VA3TO link interface. It is the interface that we recommend, it has a DTMF decoder on-board, timeouts, access to COS and works in "ASCII" or "SOUND" mode, although other link interfaces will also work. CHANGES ======= Changes in current release(v1.52) --------------------------------- Added rate option which is the sample rate for the sound card. It should be set to 8000. But other values can be used to experiment with. Added LatencyIN and LatencyOUT options for the soundcard. Run the program showcard to get correct values for LatencyIN and LatencyOUT. Added audioClipOff option, audioDitherOff option. Fixed a bug/coredump when playMsg=yes option. Changes in previous releases ---------------------------- Fixed timing issues with dextra_cli and dstar2analog packages. Fixed some announcement issues. Announcements or identification messages will only be played when the system is quiet. Added config variables echo2dstar, irlp2dstar, ast2dstar. If echo2dstar=yes, then an Echolink node can talk to dstar. If irlp2dstar=yes, then an irlp node can talk to dstar. If ast2dstar=yes, then an asterisk node can talk to dstar. If none of the above is set, then you can TX into dstar using the computer MIC/speakers. Added config variable dtmfdnode so that the owner can use a dtmf to disconnect an Echolink node by node number. Added crosslinkirlpref config option so that the owner can decide to turn off cross linking to IRLP reflectors. What this means is as follows: crosslinkirlpref=no Then only the owner IRLP stnXXXX can TX into the IRLP reflector. crosslinkirlpref=yes Any node can TX into the IRLP reflector. Changed IRLP scripts on, on_to_remote, connect_to_reflector so that "stnXXXX-callsign" is transmitted to IRLP. Parameters to rtpDir_signal software were changed to accomodate the above change. Full dtmf control over the D-Star node, Full dtmf control over the Asterisk node. Changed allowAST config variable value from "IPaddress astXXXX" to just "IPaddress" Added configuration value astKickall=*954 so that the user can request disconnect from all asterisk nodes thru rtpDir. (Value *954 or another value for disconnecting all asterisk nodes must be enabled in Asterisk rpt.conf file) Added remote text command: .dstar so that IRLP and Asterisk can connect/disconnect to/from D-Star. Added config variables for Asterisk to control rtpDir CONF mode and and connect/disconnect to/from D-Star ast_dtmf_cmd=.cnfo 16 ast_dtmf_cmd=.cnff 17 ast_dtmf_cmd=.dstar 18 Added IRLP commands to control rtpDir CONF mode and and to connect/disconnect to/from D-Star Added config variable: remDstar Multiple entries are allowed for connecting to different D-Star nodes. Only Echolink nodes or IRLP nodes are reported to the Echolink login database. Added the CNF checkbox on the screen. CNF: If checked, then your station is identified as a CONFerence to other stations. Some remote conferences will not allow you to connect to them if you are a conference yourself. In that case, uncheck CNF, wait 10 seconds and reconnect. If not checked, some Echolink stations replace the callsign of the original trasmitting station with the callsign of the connected station in the text chat box. In most cases, leave CNF unchecked. Added remote text commands: .cnfo to turn CNF on .cnff to turn CNF off Added dtmf commands: dtmfCnfo to turn CNF on dtmfCnff to turn CNF off Added D-Star interface to 5198.conf configuration file. Added new software dstar2rtpdir to communicate with the DSTAR remote system and to encode/decode DSTAR AMBE codec audio data. IF a new IRLP codec is added by the IRLP net at least no noise will be generated and no static will go thru and of course no audio either until that codec is recognized by rtpDir also. So, so far UNCOMP/8-bit u-Law, ADPCM and GSM are valid IRLP codec names. Why do we care what codec IRLP is using. Because conevrsions of IRLP audio to other formats acceptable to Echolink or Asterisk or D-Star are based on the codec compression method used by IRLP. Fixed a small chat text issue. Added support for u-Law IRLP audio. The following files changed to support the new audio format: on, connect_to_reflector, on_to_remote, rtpDir_signal, so you will need to rebuild the executable on Linux. For Windows, it is ready for use. Added configuration variables playDuration and playPause. playDuration and playPause are measured in seconds. During playback of files/announcements, if playDuration is greater than 0, then rtpDir/rtpDir_tm bridge will playback for playDuration seconds and then pause for playPause seconds. Usually connected stations have receive time-outs of no more than 120 seconds. So to prevent a remote station disconnect during playback of a large file or announcement, set playDuration to less than 120 seconds. A good value for playPause is 5 seconds. It is a good idea to mute all connected stations if you will be broadcasting NASA or ARRL news items or making long announcements. Added dtmfRec and dtmfPlay to the config file for rtpDir GUI. Added remote text command .conx and netcat command o.conx to report all the connect stations to rtpDir/rtpDir_tm Added IRLP script rtpDir_conx for the IRLP user to report all connected stations to rtpDir/rtpDir_tm. Added: ast_dtmf_cmd=.conx 15 to the config file for rtpDir/rtpDir_tm to report all connected nodes to rtpDir/rtpDir_tm for the Asterisk user. Added node.gsm audio file Recording/playback and announcement features were added to rtpDir/rtpDir_tm bridge. For rtpDir GUI: Playback/announcements will be transmitted to all connected nodes PLUS local IRLP RF node PLUS local Asterisk RF node PLUS local Echolink RF node. In other words all radio/radio interfaces will be keyed up. For rtpDir_tm (text mode version): Playback/announcements will be transmitted to all connected nodes PLUS local IRLP RF node, local Asterisk RF node. There is no local Echolink RF node. Both the IRLP radio user and the Asterisk radio user have access to recording/playback features by way of DTMF tones or the command line or scripts. Specifically: Added .record and .play remote text commands for the rtpDir GUI bridge. Added o.record and o.play remote netcat(nc) commands for the rtpDir_tm text mode bridge. Added recon.gsm and recoff.gsm to warn the radio user that recording started or stopped. (Users can record their own warnings also into these files or remove these files and no warning will be issued). For the IRLP user: Added rtpDir_rec and rtpDir_play scripts for the IRLP user to be able to start/stop recording/playback thru DTMF tones accessible from the IRLP custom_decode script. For the Asterisk user: Added: ast_dtmf_cmd=.record 13 to config file. Added: ast_dtmf_cmd=.play 14 to config file. Changed timing to 80ms from 100ms to match Asterisk timing. Added the o.play request to rtpDir_tm(text mode) bridge. rtpDir(GUI) bridge can already playback files with Control/Playback menu. Replaced A.gsm thru Z.gsm and 0.gsm thru 9.gsm and most other voice responses with Asterisk audio. Removed sequence numbers from the asterisk rtpdir channel driver. They are useless and slow down the protocol. Download chan_rptdir.c channel driver from the same rtpDir yahoo group, in the "Files" section. chan_rtpdir.c must say this in the comment section: Version 0.6-NO-SEQUENCE-NUMBERS Sun Sep 28 12:03:31 EDT 2008. PUT BACK THE WAY IT WAS BEFORE, SEQUENCE NUMBERS NOT NEEDED. TEXT HANDLING IS OUT. IRLP DOES NOT PROCESS TEXT. Other copies of chan_rtdir.c driver may be version 0.6 or later but will not work with rtpDir/rtpDir_tm bridge. So, download chan_rtpdir.c and place it under the Asterisk channels directory and then build the Asterisk server. Enhancements: faster codec translation between Asterisk and IRLP stations. Removed useless/dead code. Added playMsgAST and playMsgIRLP config variables. The IRLP user now has access to all the Asterisk dtmf commands thru the IRLP script rtpDir_AST_con which calls the netcat command o.cast The o.cast command is a doorway to all Asterisk "rpt fun astNode command" requests. Removed script rtpDir_AST_discon and its netcat command o.dast bug fix:Fixed audio between IRLP/adpcm and Asterisk stations. Audio was getting out as "click...click...click...". Discovered by JI1BQW. Got to make it a little faster. bug fix: Inadvertently, the logic that was sending replies to remote text commands was commented out. Add invertCD, invertCTS and invertDSR options required for the Echolink radio/radio interfaces that expect one the CD, CTS, DSR serial port pins ot be inverted. Recognize audio packets as another type of KEEPALIVE packet, so that stations remain connected. This was done to accomodate Asterisk channel drivers. Added command .cast to allow the IRLP user to send requests to the Asterisk server using IRLP DTMF tones. Added astNode and astBinCmd config variables to identify the Asterisk binary and the Asterisk driver node used to send requests to the Asterisk server. Let an *Asterisk* node control IRLP and Echolink nodes thru rtpDir/rtpDir_tm bridge. Process incoming DTMF tones from an *Asterisk* node. Added ast_dtmf_cmd DTMF translation table so that *Asterisk* DTMF FRAME messages can be processed by the rtpDir bridge thru the driver. Bug fix: Looping when IRLP transmits to *Asterisk* nodes rtpDir bridge now accepts *Asterisk* node connections. Three nodes types will be accepted: *Asterisk*, IRLP, Echolink. The following codec transcoders and protocol converters are built-in: IRLP/gsm ---> IRLP/adpcm IRLP/adpcm ---> IRLP/gsm IRLP/adpcm ---> Echolink/gsm IRLP/gsm ---> Echolink/gsm Echolink/gsm ---> IRLP/adpcm Echolink/gsm ---> IRLP/gsm Asterisk ---> IRLP/adpcm Asterisk ---> IRLP/gsm Asterisk ---> Echolink/gsm IRLP/adpcm ---> Asterisk IRLP/adpcm ---> Asterisk Echolink/gsm ---> Asterisk rtpDir bridge can be used to talk to other *Asterisk* nodes using the radio or the computer mic and speakers. The following configuration items were added to the configuration file to enable connections from *Asterisk* nodes: astEnable myAST_IP localASTport remoteASTport allowAST Added functionality to prevent "double-talk" or what our group calls "daily-double". Speak-Freely stations can connect only when irlpEnable=yes and accessIRLP=no There is no way a Speak-Freely station can be authenticated when the rtpDir/rtpDir_tm bridge owner runs IRLP with accessIRLP=yes To accept Speak-Freely stations, set irlpEnable=yes and accessIRLP=no. In other words, run rtpDir/rtpDir_tm as an IRLP reflector refXXXX and not as an IRLP station stnXXXX Added one more protocol/codec transcoder. The following protocol/codec transcoders are now built-in: IRLP/gsm ---> IRLP/adpcm IRLP/adpcm ---> IRLP/gsm IRLP/adpcm ---> Echolink/gsm IRLP/gsm ---> Echolink/gsm Echolink/gsm ---> IRLP/adpcm Echolink/gsm ---> IRLP/gsm In this version, rtpDir/rtpDir_tm bridge can initiate connects to IRLP stations, IRLP reflectors and Echolink stations, with any codec. It will also initiate/accept IRLP connects and Echolink connects with any codec. It will also receive from and transmit to all stations with any codec. rtpDir/rtpDir_tm bridge does not care what codec is in the file /home/irlp/custom/environment. Codec conversions are automatic. Removed restriction of having all IRLP stations connect with the same codec. Any codec will do as long it is ADPCM or GSM. However, the IRLP software from IRLP NET still restricts stations to a single codec at a time in "Echolink + IRLP" link/repeater mode. Added comments to 5198.sh, 5198_tm.sh start-up scripts. Allow the user to select which local IRLP ports will be enabled. Cleaned up output from RTP/Sanity-Stats menu option and remote text command .stats Added one more codec transcoder. The following codec transcoders are now built-in: IRLP/adpcm ---> IRLP/gsm IRLP/adpcm ---> Echolink/gsm IRLP/gsm ---> Echolink/gsm Echolink/gsm ---> IRLP/adpcm Echolink/gsm ---> IRLP/gsm Added rtpDir_signal software. rtpDir_signal will be sending "keep-alive" identification, the initial "blip" of audio, codec info to the remote IRLP node and the final BYE message. The reason for writing rtpDir_signal is to break the habit of IRLP starting, stopping and re-starting the imike and ispeaker for every new connection. We chose ADPCM as the initial codec that the local IRLP station will use to connect to the bridge. After that, the packets are converted to match the codec of the incoming connection. Even multiple codecs will be accepted so if running rtpDir/rtpDir_tm bridge as a reflector, there is no restriction to one single codec. Stations requesting to connect can use either IRLP/adpcm or IRLP/gsm or Echolink/gsm or Asterisk. The following IRLP scripts were modified to include the rtpDir_signal software. on on_to_remote connect_to_reflector irlp_reset dropcall off end Changed 5198.sh, 5198_tm.sh start-up script to start imike and ispeaker software. Added the following scripts to /home/irlp/custom/update-file-list file, so the changes to the scripts will not be lost during the IRLP update. dropcall off end The following software now works with *Asterisk* sound files: gsmfile2ispeaker ---> testing IRLP stations playgsm --->testing Echolink stations rtpDir bridge Control/PlayBack menu option. Bug fix: The remote text command ".disable" and dtmfDisable, disable the Echolink part of the rtpDir/rtpDir_tm bridge and should NOT disconnect any stations. bug fix: Record audio from IRLP/adpcm or IRLP/gsm IRLP nodes. It was only recording IRLP audio if at least one Echolink station was connected. Added comments for creating/validating a new CONFERENCE callsign using rtpDir/rtpDir_tm bridge. Removed config option reflectorCodec. ADPCM or GSM codecs are allowed. Switch back to irlpPort if the remote IRLP station disconnects. Changed the IRLP irlp_reset script to remove the codec file. It was only removing the active file on IRLP failures. Dont process the IRLP codec file if the active file is missing. Added the IRLP irlp_reset sript to the list of modified IRLP scripts that must not be updated by the IRLP system update. txDelay config variable is now measured in MILLISECONDS to reduce hang-up time. Port <---> channel switching for IRLP reflectors. Bug Fix: "Busy", "TimeOut", "Access Denied", for Echolink stations. Renamed sfEnable to irlpEnable. Renamed sfPort to irlpPort. Removed sfReplyPort config variable. The node/station name of the incoming IRLP node is extracted as follows: If the IP address of the incoming IRLP node is your local machine, then the node/station name is extracted from the config variable irlpNode. It is very important that you set irlpNode correctly. If running rtpDir/rtpDir_tm in "Echolink + IRLP" mode, the node/station name of the remote IRLP node is extracted from the /home/irlp/local/active file. If running rtpDir/rtpDir_tm as an IRLP reflector, the node/station name of the remote IRLP node is extracted from the incoming SDES request. The codec being used, when an incoming IRLP node is connected, is set as follows: If running rtpDir/rtpDir_tm in "Echolink + IRLP" mode, the codec in the /home/irlp/local/codec is used. If running rtpDir/rtpDir_tm as an IRLP reflector, the codec remains UNSET until the remote IRLP node transmits identifying information to your IRLP reflector. In this case the codec is set when the remote IRLP node transmits its first 24 bytes which contain the compression method(codec) being used. IRLP connect requests are checked against capacity limits only if rtpDir/rtpDir_tm is running as an IRLP reflector. There is no reason to check against capacity limits if rtpDir/rtpDir_tm is running in "Echolink + IRLP" mode, since in that case only one remote IRLP node can be connected. If running rtpDir/rtpDir_tm as an IRLP reflector, incoming IRLP stations will be checked against a lockout-list kept in the file ban5198.txt That is different from the lockout-list file maintained by the your local/remote IRLP node or a remote IRLP reflector. Renamed EL_* scripts to rtpDir_* Changed the following IRLP scripts by adding rtpDir_IRLP_failure command script at certain places, so that rtpDir/rtpDir_tm bridge can reset itself when an IRLP call fails. /home/irlp/scripts/on /home/irlp/scripts/on_to_remote /home/irlp/scripts/control /home/irlp/scripts/call /home/irlp/scripts/connect_to_reflector Removed "-p 6500" parameter from all rtpDir_* scripts, just in case the system operator decides to execute one of the rtpDir_* scripts manually and the same time the rtpDir/rtpDir_tm bridge is executing one of the rtpDir_* scripts which will fail because the same bind port is being used. Added the "el" parameter to remote text command .disconnect to disconnect the Echolink stations only. Example: .disconnect el Example: .kick el rtpDir/rtpDir_tm was redesigned from scratch to work faster when running in "Echolink + IRLP" mode. The design is completely new and rtpDir/rtpDir_tm went thru considerable changes to be easier to use. In this new release, rtpDir/rtpDir_tm bridge has its own built-in version of "Echolink + IRLP" functionality. In this new design, rtpDir/rtpDir_tm bridge now supports connections to all IRLP stations stnXXXX and all IRLP reflectors refXXXX. It even supports connections to IRLP super reflectors. Still ADPCM and GSM codecs are supported with the built-in ADPCM <---> GSM transcoder. Added software gsmfile2ispeaker so that an IRLP user can test all gsm files included with rtpDir on the localISPEAKERport and can test the setup in "Echolink + IRLP" mode. Added the "irlp" parameter to remote text command .disconnect to disconnect the connected IRLP node. Example: .disconnect irlp Example: .kick irlp Added remote text command to connect to an Echolink station by node number. Example: .cnode 9999 This command will be used by an IRLP dtmf to request a connection to an Echolink node. That will connect your station to *ECHOTEST* It is exactly the same as executing: .connect *ECHOTEST* If irlpEnable=yes then one of the following is true: [ if accessIRLP=yes, then you intend to run rtpDir/rtpDir_tm bridge in "Echolink + IRLP" mode. if accessIRLP=no, then you intend to run rtpDir/rtpDir_tm bridge as an IRLP reflector/Echolink conference. ] if irlpEnable=no, then rtpDir/rtpDir_tm bridge forces accessIRLP=no In this case, no IRLP connects are possible and you will be running rtpDir/rtpDir_tm bridge as a Echolink/Echolink conference assuming EL_login=yes Added a new config variable localISPEAKERport to support the "Echolink + IRLP" mode. Default value for localISPEAKERport=2174 It must be even number. Added the following checks during start-up: Echolink port can not be equal to irlpPort, can not be equal to localISPEAKERport, can not be equal to txtCmdReplyPort Listed IRLP dtmf commands in this document that must go into /home/irlp/custom/custom_decode to control the rtpDir/rtpDir_tm bridge using dtmfs from the IRLP radio Added the following scripts, so the IRLP user can send dtmf commands from the IRLP radio to rtpDir/rtpDir_tm bridge. rtpDir_ALL_discon: Disconnects all stations. rtpDir_EL_discon: Disconnects Echolink stations only. rtpDir_EL_con: Connects to an Echolink node rtpDir_EL_disable: Disables the Echolink part rtpDir_EL_enable: Enables the Echolink part rtpDir_EL_reconnect: Reconnects to the last connected Echolink node. Added by NO3Y rtpDir_IRLP_discon: Disconnects the IRLP connection rtpDir_IRLP_failure: Notifies rtpDir of an IRLP call failure.(Never called by user) rtpDir_IRLP_reconnect: Reconnects to the last connected IRLP node. rtpDir_IRLPref_con: Connects to an IRLP refXXXX. rtpDir_IRLPstn_con: Connects to an IRLP stnXXXX. Fix delay/warbled audio in the ADPCM <---> GSM codec transcoder. Use a queue instead of copying buffers when translating ADPCM <---> GSM. Added ADPCM <---> GSM codec transcoder. Allow to run as an IRLP ADPCM reflector. Allow rtpDir/rtpDir_tm to run as an unregistered IRLP reflector. No IRLP heartbeats if NOT running as a reflector. Added remote text command ".message" All text messages are copied to txtCmdReplyPort. Added menu selections: Control/Connect_IRLPstn, Control/Connect_IRLPref. Added remote text connect commands for IRLP nodes: .cstn, .cref Added irlpNode to the configuration file. Added scripting capabilities for remote control. Recommend the use of ssh on Linux or PuTTY(ssh) on Windows for secure login to the machine that is running rtpDir/rtpDir_tm. Added txtCmdReplyPort config variable to support remote control and scripting capabilities. Fixed bug where CPU would reach 99% usage, discovered by NO3Y. Removed checks against incoming IRLP calls. IRLP calls are persistent and there is no point in doing so. If soundCard is enabled in the configuration file(soundCard=yes) but failed to open, software will continue to operate but with no audio. That is the same as setting soundCard=no. If sound card failed to open, then linkMode will be disabled(linkMode=-). This change will allow the user to start the software and a chance to fix the insci and outsci settings in the config file. There is a chance that the insci and outsci settings maybe correct but sound card may still fail to open or software may hang trying to open it. That is another problem and can usually be fixed by reconfiguring the sound card. DTMF commands must now start with a 2-digit dtmf code. These are dtmf commands sent from the Echolink radio. dtmf commands from the IRLP radio are listed in the file /home/irlp/custom/custom_decode Renamed dtmfConByCall to dtmfConCall. Renamed dtmfConByNode to dtmfConNode. Removed dtmfDisconnect command. Addded dtmfWhoIsOnTop. The last active in QSO callsign, or the last connected callsign gets bumped up to the top of the list of the connected stations on screen. This dtmf command will report that callsign. Useful to the dtmfDisconLast command. Added dtmfDisconLast command. Disconnect last connected station or last active in QSO. (See dtmfWhoIsOnTop command.) Added dtmfDisconCall command. Disconnect by Callsign. Added dtmfDisconAll. Disconnect all stations. Added dtmfConShort command(s). These commands are for connecting to stations using a shortcut. Example:dtmfConShort=7099999 This means that when a dtmf of 70 is received, a connection to node# 99999 will be attempted. Only nodeNumbers are supported with this dtmf command, not callsigns. The code of 70 must be unique among all dtmf commands. Added welcomeTxtDelay, welcomeAudioDelay options to allow the connected station to clean up before the welcome text, welcome audio is transmitted. Some stations take up to 11 seconds to do cleanup and they will remove all incoming text before they accept a new connection. Added dtmfRndConConf, dtmfRndConRptr, dtmfRndConLink, dtmfRndConPCusr commands to connect to a conference, Repeater, Link, PC USer at random. Added mute command to mute the talking callsign. Added remote text command ".stats" Added menu option Control/Abort_Connect_EL. Added dtmfConAbort command. Added remote text command ".abort" Changes to allow connects thru routers, without changing NAT entries/port forwarding. Not all routers support this functionality. Option to mark a station as "Deaf". using the Control menu. An (x) appears in front of the callsign. A station can be muted or marked as deaf or both. Useful if you want to transmit to and receive from only one or a few stations. The name next to the callsign changes during transmit. This is to identify your station as a conference to other stations. Option to slow down audio strength indicator. Option to detect simple conference loops. Added dtmf to enable/disable conference loop detection. Added remote text command to enable/disable conference loop detection. Added dtmf to enable/disable NSM checkbox. (NSM=New Stations Muted). Added NSD checkbox.(NSD=New Stations Deaf). Added dtmf to enable/disable NSD checkbox. Added remote text command to enable/disable NSD. Added remote text command to mark stations as deaf. Added remote text command to save bookmarks, private, banned and admin files. Removed dispMaxStns config variable, the max number of stations will be displayed if dispNumUsers config variable is enabled. Changed the start up script 5198.sh for Linux so that it does some clean-up before it starts the software. Bug fix: Use code 202 instead of 203, in IRLP heartbeats. That was a typo. 203 is used in disconnects. 202 is for SDES requests. Capture the incoming IRLP station node# and display it instead of the IP address when an IRLP call arrives. (Unix/Linux only) Added Menu option Control/PlayBack to playback audio files without shutting down rtpDir. Playback files are played to sound card and connected stations as long as no audio is received from connected stations. Re-arranged the log,chat-text and the station info windows. Cleaned-up install instructions for Windows & Linux. Added dtmf status command. Detect IP address change for a connected station. Added duplicate message detect logic. Option to display station information from a set number of connected stations. Split remote text command "bridge on/off" into "bridge audio on/off" and "bridge text on/off". Added dtmf command to turn Bridge audio on/off. Added detailed installation notes for building/running rtpDir on Linux, without having to build other software. Use low-level socket calls for speed. Bug fix: Memory leaks. Bug fix: Unmute station on disconnect. Check the callsign and the IP address for dups before accepting a new connection. Added QSO timeouts for long-winded stations. Bug fixes. Option for an IRLP IP address separate from Echolink. IRLP heartbeats every 7 seconds. Echolink heartbeats every 10 seconds. Faster screen updates/downloads. Removed "ALL" tab. Simplified searches: By Callsign/Node/ANYthing Bug fixes. Added support for private networks, independent of Echolink or IRLP connections. Added support for link interfaces that use either "ascii"or "sound" mode, like the VA3TO interface. Added support for link interfaces that have a DTMF decoder on board to allow the user to select either software or hardware DTMF decoder. Removed the confusing toPC and toRadio configuration variables and replaced with linkMode. Added a download timeout along with a login timeout for those occasions that the ISP fails. Added Control/Connect_EL option. Added beep & timestamp option for received text. Timestamp is blocked on outgoing messages. Added option for notifying other connected stations of any connect/disconnect activity. Reports get transmitted as text. Station info now includes information from all connected nodes. Bug fixes. Differential/Compressed downloads. Event notification. The following events are generated: start-up, shutdown, connected, disconnected. Option for "Connect to a station on start-up". Option for using a local station list from a file. Added backup servers to cycle thru on login/download failures. Login/download restarts on failures. Login timeout and connect timeout options. Option for selecting a local IP address for systems with multiple ethernet cards(IP addresses). Option for New Name/New QTH. Option for not showing connected station in QTH. Bug fixes. Morse code generation from English text files. Option for CW code or Voice Station Indentification over local RF link. Option for playing "welcome" message to the connected node. Option for announcing CALLSIGNs over local RF link. Respond with voice messages over local RF link in response to DTMF commands. DTMF commands are now configurable. Bug fixes. In Search Menu, all searches are exact, except "Find Any(partial match)". Added support for Link interfaces thru serial port pins. RTS/DTR pins for keying up the radio and CTS/DSR/CD pins for detecting COS signal change. The old style VOX is still supported. Changed all remote text commands to support sysop control programs. All remote text commands return a response to the admin. The admin must be logged in for the command to execute. Added Echolink node# to config file. Added remote text commands with responses. Echolink port fixed at 5198. If any other value is used, software sets it back to 5198, unless a private network is in operation in which case, no Echolink login/download is attempted. Full-duplex audio has been removed. Implemented RTCP Timeouts/Disconnects. Added "Search By Node#" Added "Block by Callsign Prefix(Country Selection)" Added "Block Conferences" Added "Block Repeaters or Links" Allow user to disable use of sound card. Some minor enhancements. "LO" checkbox is now operational(Listen Only). Update SDES name for talking CALLSIGN. Disable audio, PTT & VOX if running with a *CONFERENCE* callsign or if soundCard=no in the configuration file. Allow multiple banner lines. Minor enhancements. Using zlib to download and decompress station list. Fixed a bug in the PTT/VOX interface. An external program(getlist) will download and decompress the zlib-compressed station list. The main program(rtpDir) communicates with getlist thru an IPC mechanism. Added Rec checkbox. Added VOX, VOX threshold and TX/RX audio strength. Added admin interface/tab so admin callsigns can execute commands remotely to control the bridge. Added remote commands. Removed some popup window messages and instead set the status line message in response to some commands. Fixed a bug with the private calls list. HARDWARE REQUIREMENTS ===================== rtpDir can run on all Linux machines and all Windows PC's. How fast it runs, depends on your machine and your ISP. WARNING ======= We have not tested the software on a machine other than x86 arch(little endian/Linux or Windows). All Linux flavors supported and all Windows boxes. We have not tested on Vista. We have received reports that it runs on Vista with no problems. We have not tested the software on a 64-bit OS but we received reports that it runs on 64-bit platforms with no problems. OTHER SOFTWARE REQUIREMENTS =========================== For Windows, download the pre-built Windows Qt-4.x.zip runtime package from rtpDir yahoo group. For Windows, rtpDir needs Qt 4.3.0 release or above to run correctly. Qt for Windows is a Trolltech product. For D-Star connections the Windows dextra_cli or dstar2analog package is required. For Linux, download the pre-built Linux Qt-4.x.tar.gz runtime package from rtpDir yahoo group. For Linux, rtpDir needs Qt 4.3.1 or above to run correctly. Qt for Unix/Linux is a Trolltech product. For D-Star connections the Linux dextra_cli or dstar2analog package is required. INSTALLATION ============ WINDOWS: ------- Create a new and empty directory C:\rtpDir Extract the files out of the Qt-4.x.zip runtime package into the directory C:\rtpDir Extract the files out of rtpDir-1.52-exe.zip into the same directory C:\rtpDir At this point, all files from both packages are in the directory C:\rtpDir If you will be making connections to D-Star nodes, download and configure the dextra_cli or the dstar2analog package for Windows. You are done with the Windows installation. Proceed with the CONFIGURATION. LINUX ----- You can install any Linux distro, but if you want to run rtpDir which needs a GUI then you better make sure your Linux distro includes a GUI, unless you dont care about it and want to run Linux in text mode. For Linux running in text mode, then install rtpDir_tm which runs in text mode only and does not need a Linux GUI desktop. Again, you can install a Linux distro without having a GUI. In that case you will be using rtpDir_tm and not rtpDir. If you will be making connections to D-Star nodes, download and configure the dextra_cli or the dstar2analog package for Linux. If you decide to install IRLP, make sure that you install IRLP under /home/irlp directory. If you install a KDE or GNOME desktop or just the Xorg server software, or you already have a graphical desktop on your Linux box and you get the error "AUDIO DEVICES NOT SET CORRECT" whenever you try to start IRLP or whenever you try to connect to another IRLP node, put the following command in the /home/irlp/custom/rc.irlp file just after the #!/bin/bash line: chmod o+rw /dev/audio /dev/mixer /dev/dsp The above command will set the audio devices for use with IRLP user repeater which the IRLP software uses to make calls and accept calls. However, if you still do not want to run rtpDir in a graphical environment, then use the text mode version, rtpDir_tm. That package does not require a Linux GUI installation. If you want to use Asterisk with rtpDir/rtpDir_tm, we recommend the Asterisk ACID CD install or the Asterisk EVB CD install. Both ACID or EVB CD's include CentOS 5.x linux plus the Asterisk package. On top of that install the IRLP software from IRLP NET if you choose to have IRLP on your Linux distro. Again, we must underline the fact that rtpDir(GUI) or rtpDir_tm(text mode) can run alone on a Linux platform without Asterisk or IRLP. But most people prefer to combine VoIP networks to form some kind of a cluster so to speak. Sometimes a Linux CD may be missing the aumix and/or the ncftp utilities(ncftpget, ncftpput), so download them from the "Files" section of of the rtpDir yahoo group. aumix and ncftpget,ncftpput are used by IRLP and they are required to be in /usr/bin directory. Installation of the rtpDir/rtpDir_tm software must be done with the user logged in as root. (In the next release, this restriction may be lifted). Now download the following required packages: Download Qt-4.x.tar.gz into the /root directory. Execute the following commands: gunzip Qt-4.x.tar.gz tar xvf Qt-4.x.tar (The above package is required ny rtpDir_tm version of the bridge also) Download rtpDir-1.52.tar.gz into the /root directory. Execute the following commands: gunzip rtpDir-1.52.tar.gz tar xvf rtpDir-1.52.tar At this point all the files from both packages are in the directory /root/runtime. Rename the directory /root/runtime to /root/rtpDir Next, check if you already have Qt libraries version 4.3.1 or greater,pre-installed in some directory. The Qt libraries, if they are pre-installed, they may be found in the /usr/lib directory. If you find them in /usr/lib or any other directory, and they are version 4.3.1 or greater, edit the create2_rtpDir.sh script to point to that directory, go to that directory and skip to the section: CREATE/CHECK the symbolink links to the shared libraries. If you dont find them, then you must do the following: Move the the libraries libQtCore.so.4.3.1, libQtGui.so.4.3.1 and libQtNetwork.so.4.3.1 into the /usr/lib directory. Run ldconfig to create the symbolic links in /usr/lib. Edit the create2_rtpDir.sh script to to point to /usr/lib, go to the /usr/lib directory and skip to the section: CREATE/CHECK the symbolink links to the shared libraries. If you find them, but they are older version, move the libraries libQtCore.so.4.3.1, libQtGui.so.4.3.1 and libQtNetwork.so.4.3.1 to a directory of your choice, edit the create2_rtpDir.sh script to point to that directory, go to that directory and skip to the section: CREATE/CHECK the symbolink links to the shared libraries. CREATE/CHECK the symbolink links to the shared libraries -------------------------------------------------------- Assuming you're in the directory where the Qt libraries exist, you must execute a few commands to make sure symbolic links to these libraries exist. Execute this command: ls -la libQtNetwork* The output of the above command should be: libQtNetwork.so -> libQtNetwork.so.4.3.1 libQtNetwork.so.4 -> libQtNetwork.so.4.3.1 libQtNetwork.so.4.3 -> libQtNetwork.so.4.3.1 libQtNetwork.so.4.3.1 Execute this command: ls -la libQtGui* The output of the above command should be: libQtGui.so -> libQtGui.so.4.3.1 libQtGui.so.4 -> libQtGui.so.4.3.1 libQtGui.so.4.3 -> libQtGui.so.4.3.1 libQtGui.so.4.3.1 Execute this command: ls -la libQtCore* The output of the above command should be: libQtCore.so -> libQtCore.so.4.3.1 libQtCore.so.4 -> libQtCore.so.4.3.1 libQtCore.so.4.3 -> libQtCore.so.4.3.1 libQtCore.so.4.3.1 If a link, represented by the right arrow, is missing, create it manually. You must get 4 output lines for each "ls -la" command. On some new systems, only 3 output lines are returned for each "ls -la" command, so the one of the missing links has to be created manually. For example, if you have to create the missing symbolic link libQtNetwork.so for libQtNetwork.so.4.3.1, execute this: ln -s libQtNetwork.so.4.3.1 libQtNetwork.so In other words: ln -s existing_LIBRARY_file_NOT_A_LINK new_LINK_name.so CREATE the rtpDir software --------------------------- There is a script file "create2_rtpDir.sh" that you will execute to create the rtpDir(GUI) software. To create rtpDir_tm(text mode only, no GUI stuff) use the create2_rtpDir_tm. script to create rtpDir_tm bridge. More info about rtpDir_tm bridge can be found in rtpDir_tm-1.52.zip file in the "Files" section of the rtpDir group. We've tested the script on CentOS, Fedora, Suse, Red Hat, Debian, Ubuntu and other Linux systems. The create2_rtpDir.sh can use either the g++ command or the gcc command. Some Linux systems are missing the g++ software. You can either download it or use gcc command. Open the script create2_rtpDir.sh and comment out the appropriate line. Make sure the script command inside the script points to the directory where the Qt libraries exist. Execute the script create2_rtpDir.sh like this: ./create2_rtpDir.sh or for Linux text mode with no desktop: ./create2_rtpDir_tm.sh If you get any errors from the script, will probably be because other libs referenced by the script are missing the symbolic links in /usr/lib directory and/or in the /usr/X11R6/lib(rtpDir GUI needs X11 libs) directory. (rtpDir_tm bridge does not need X11 GUI libs). rtpDir needs the following libs preinstalled: the math lib(-lm), (Expected to be in /usr/lib directory) the X11 libs(-lXext, -lX11), (Expected to be in /usr/X11R6/lib directory or /usr/lib) pthreads lib(-pthread), (Expected to be in /usr/lib directory) the alsa sound lib(-lasound). (Expected to be in /usr/lib directory) rtpDir_tm needs the same libraries except the X11 and alsa sound. If the required library is installed but not where create2_rtpDir.sh expects to find it, it is easy to create a symbolic link to it in /usr/lib (or /usr/X11R6/lib as the case maybe) For example, on some Linux systems the alsa sound library is installed in /lib and not /usr/lib where create2_rtpDir.sh expects it to be. In that case create a symbolic link as follows: Go to the /usr/lib directory and execute the command: ln -s /lib/theREAL_alsa_sound_library libasound.so Of course, replace theREAL_alsa_sound_library with the correct alsa library filename on your system. And make sure theREAL_alsa_sound_library is not a symbolic link but the the actual library itself. On other Linux systems, the required library is installed in the correct place, but its symbolic link is missing. So go to the directory where the library is installed and create the symbolic link with the "ln -s" command. as in: ln -s existing_LIBRARY_file_NOT_A_LINK new_LINK_name.so Assuming the script finished without errors, verify with the command: ldd rtpDir or ldd rtpDir_tm is you are building rtpDir_tm Check the output to make sure that all runtime library dependencies have been resolved. The next step is to remove debugging info from the executable to force the executable to have a smaller memory footprint. Execute this: strip rtpDir Additional steps if you plan to run rtpDir/rtpDir_tm with *Asterisk* enabled. --------------------------------------------------------------------------------- in /etc/asterisk/rpt.conf you must have under a specific Asterisk node the rxchannel config entry set to this: rxchannel=rtpdir/127.0.0.1:4570:4670 where 4570 is the localASTport, and 4670 is the remoteASTport. If you will be connecting to a remote rtpDir/rtpDir_tm bridge, then replace 127.0.0.1 with the remote IP address where rtpDir bridge is running. The latest Asterisk module file chan_rtpdir.so must be placed under the /usr/lib/asterisk/modules/ directory You better download a copy of chan_rtpdir.c from the rtpDir yahoo group, in the "Files" section because that is the correct one to use with rtpDir/rtpDir_tm bridge. It must also say this in the comment section: Version 0.6-NO-SEQUENCE-NUMBERS Sun Sep 28 12:03:31 EDT 2008. PUT BACK THE WAY IT WAS BEFORE, SEQUENCE NUMBERS NOT NEEDED. TEXT HANDLING IS OUT. IRLP DOES NOT PROCESS TEXT. Other copies of chan_rtdir.c driver may be version 0.6 or later but will NOT work with rtpDir/rtpDir_tm bridge. So, download chan_rtpdir.c and place it under the Asterisk channels directory and then build the Asterisk server, no exceptions here. The latest module file app_rpt.so must be placed under the /usr/lib/asterisk/modules/ directory and it must be at least version version 0.121 The source file app_rpt.c is alreasy included with the ACID or EVB distributions of Asterisk. To disable use of the sound card by Asterisk remove chan_oss.so and chan_alsa.so from /usr/lib/asterisk/modules directory or to force Asterisk to use a different sound card change the values in /etc/asterisk/oss.conf and /etc/asterisk/alsa.conf or do not let asterisk load these by modifying /etc/asterisk/modules.conf and adding the noload command. Example in /etc/asterisk/modules.conf file: noload=chan_oss.so noload=chan_alsa.so To disable use of the sound card by IRLP, remove imike and ispeaker command lines from 5198.sh, 5198_tm.sh start-up scripts, or force IRLP to use another sound card installed. For example, to let imike use the second sound card installed on the Linux box: imike -Y/dev/dsp1 ....(rest of parameters...) ispeaker can also be forced to use the second sound card installed: ispeaker -Y/dev/dsp1 ...(rest of parameters...). (You also have to change the IRLP script wavplay to to pass the correct sound device to the play command line). (Recommendations by Steve/N9YTY) To disable use of the sound card by rtpDir, set soundCard=no in the 5198.conf file for rtpDir bridge, or set soundCard=yes but force rtpDir to use another sound card by changing insci and outsci configuration parameters in the 5198.conf file. (rtpDir_tm does not use a sound card at all and it is a pure reflector.) Probably you have realized by now that IRLP,*Asterisk* and rtpDir will compete for the sound card if there is only one installed. You have to decide which type of node is really connected to a radio and enable the sound card device to be used by only that node. If your conference has reached its maximum number of connected stations and an *Asterisk* node tries to connect, the packets will be silently dropped. The same thing will happen if you set your conference station to "BUSY", or set your conference to "PRIVATE" and the incoming *Asterisk* node is not listed in the PRIVATE list. Some *Asterisk* settings are useful when linking *Asterisk* with rtpDir bridge conference. In rpt.conf configuration file: These following settings should be used for any link-to-link interface in rpt.conf: duplex=0 linktolink=yes hangtime=0 duplex=0 disables all courtesy tones, but without linktolink=yes, you will only be operating in half-duplex mode. hangtime=0 disables the squelch tail. A few more things to do: remove these files from the /usr/src/asterisk/channels directory: chan_echolink.c chan_echolink.so chan_irlp.c chan_irlp.so remove these files from the /usr/lib/asterisk/modules chan_echolink.so chan_irlp.so remove these files from the /etc/asterisk directory echolink.conf irlp.conf Also, make sure you have these statements in /etc/asterisk/modules.conf under the [modules] section: noload=chan_echolink.so noload=chan_irlp.so noload=chan_oss.so noload=chan_alsa.so The only files that are required are: /usr/src/asterisk/channels/chan_rtpdir.c and make sure that in /etc/rpt.conf one of your nodes has this: rxchannel=rtpdir/0.0.0.0:4570:4670 because it will be chan_rtpdir driver and rtpDir(or rtpDir_tm) server that will provide access to IRLP, Echolink and D-Star. The Asterisk CD ISO's, that most people install, expect that you have a modified USB sound fob (cost is $5) or a URI board(cost is $99) If one of these is not plugged in when you start Asterisk or when the system boots, then the Asterisk server crashes and it becomes a "ZOMBIE" process and Asterisk becomes unsuable. So, if you dont have one of these boards or one of them is not installed and plugged in, or you dont intend to TX/RX using one of these boards, but want to TX/RX using rtpDir bridge, remove /usr/lib/asterisk/modules/chan_usbradio.so, remove /etc/asterisk/usbradio.conf and add the noload statement noload=chan_usbradio.so to /etc/asterisk/modules.conf file Also remove rxchannel = Radio/usb from all nodes in /etc/asterisk/rpt.conf if you dont have a URI or a USB sound fob plugged in. After making the above changes to the Asterisk directories, go to the Asterisk directory: /usr/src/asterisk and execute these 2 commands to rebuild your Asterisk server: gmake gmake install You must enable *Asterisk* connects to rtpDir bridge by setting correct values in the rtpDir bridge config file 5198.conf file or 5198_tm.conf file. See settings below. Additional steps if you plan to run rtpDir/rtpDir_tm in Echolink + IRLP mode ---------------------------------------------------------------------------- These steps must also be done while still logged on as user root. SKIP THIS SECTION, IF YOU ARE USING WINDOWS OR IF YOU DONT HAVE AN IRLP NODE Make sure that you've installed IRLP under /home/irlp directory. Very first thing is to edit the /home/irlp/custom/environment file and set export NOUPDATE=YES The reason for that, is that you do not want to lose the changes that you will make to IRLP system files. Also, you set the codec to ADPCM. Now proceed with the rest of the instructions. We recommend that you back up the original IRLP files before you make the changes. The IRLP files that will have to be changed to convert your IRLP node to Echolink + IRLP are as follows: /home/irlp/scripts/on /home/irlp/scripts/on_to_remote /home/irlp/scripts/call /home/irlp/scripts/connect_to_reflector /home/irlp/scripts/control /home/irlp/scripts/irlp_reset /home/irlp/scripts/sfswrapper /home/irlp/scripts/dropcall /home/irlp/scripts/end /home/irlp/scripts/off /home/irlp/custom/custom_decode /home/irlp/custom/update-file-list So, backup the above IRLP files, before going on any further. To be able to go back to a standalone IRLP without the Echolink part then the above files must be re-installed with their original contents before the following changes: (Of course, another way is to disable the Echolink part completely using one of the new dmtf/script commands listed below) Copy the following scripts into the /home/irlp/scripts directory: rtpDir_ALL_discon: Disconnects all stations. rtpDir_EL_discon : Disconnects Echolink stations only. rtpDir_EL_disconX: Disconnects one Echolink station only. rtpDir_EL_con: Connects to an Echolink node rtpDir_EL_disable: Disables the Echolink part rtpDir_EL_enable: Enables the Echolink part rtpDir_EL_reconnect: Reconnects to the last connected Echolink node. Added by NO3Y rtpDir_IRLP_discon: Disconnects the IRLP connection rtpDir_IRLP_failure: Notifies rtpDir of an IRLP call failure.(Never called by user) rtpDir_IRLP_reconnect: Reconnects to the last connected IRLP node. rtpDir_IRLPref_con: Connects to an IRLP refXXXX. rtpDir_IRLPstn_con: Connects to an IRLP stnXXXX. rtpDir_IRLP_callref.sh Connects to an IRLP refXXXX(Called from GUI only) rtpDir_IRLP_callstn.sh Connects to an IRLP stnXXXX(Called from GUI only) rtpDir_IRLP_endcall.sh Disconnects the IRLP connection(Called from GUI only) rtpDir_AST_con Sends dtmf commands to the Asterisk node by using "rtp fun node ..." rtpDir_rec starts/stops recording audio packets from Asterisk,IRLP,Echolink nodes. rtpDir_play starts/stops playback to Asterisk, IRLP,Echolink nodes. rtpDir_conx report any nodes connected to rtpDir/rtpDir_tm bridge. rtpDir_Dstar_cmd connects and disconnects from D-Star nodes. Also copy these IRLP scripts from the rtpDir package into the /home/irlp/scripts directory: (You may be be asked if you want to overwrite the existing file, answer yes to each question). /home/irlp/scripts/on /home/irlp/scripts/on_to_remote /home/irlp/scripts/connect_to_reflector /home/irlp/scripts/call /home/irlp/scripts/control /home/irlp/scripts/irlp_reset /home/irlp/scripts/dropcall /home/irlp/scripts/off /home/irlp/scripts/end /home/irlp/scripts/sfswrapper Go to /home/irlp/scripts directory and execute these commands: chown repeater:repeater rtpDir_* chmod +x rtpDir_* chmod o-rx rtpDir_* Add the following lines to /home/irlp/custom/custom_decode file, just before the "exit 0" line which is at the end of the file. # The next lines to the end of the /home/irlp/custom/custom_decode file must be the last lines # just before the "exit 0" line. # disable the Echolink part of rtpDir # Connect requests from Echolink stations will be rejected. # You can not initiate connections to Echolink nodes either. # Only IRLP nodes can make it thru. if [ "$1" = "B0" ] ; then rtpDir_EL_disable ; exit 1 ; fi # enable the Echolink part of rtpDir if [ "$1" = "B1" ] ; then rtpDir_EL_enable ; exit 1 ; fi # disconnect all stations(IRLP plus Echolink) if [ "$1" = "B2" ] ; then rtpDir_ALL_discon ; exit 1 ; fi # dtmf B3xyz connects to Echolink node xyz # Example: B39999 connects to Echolink node# 9999 which is *ECHOTEST* if [ ${1#B3} != $1 ] ; then rtpDir_EL_con ${1#B3} ; exit 1 ; fi # Reconnect last EchoLink node # Assuming the machine on which IRLP is running did not reboot since the last # Echolink call was made. if [ "$1" = "B4" ] ; then rtpDir_EL_reconnect ; exit 1 ; fi # Disconnect Echolink stations only if [ "$1" = "B5" ] ; then rtpDir_EL_discon ; exit 1 ; fi # connect to an IRLP stnXXXX # example B63249 will connect to stn3249 # always disconnect from IRLP first if [ ${1#B6} != $1 ] ; then rtpDir_IRLP_discon ; rtpDir_IRLPstn_con ${1#B6}; exit 1 ; fi # connect to an IRLP refXXXX # example B79990 will connect to ref9990 # always disconnect from IRLP first if [ ${1#B7} != $1 ] ; then rtpDir_IRLP_discon ; rtpDir_IRLPref_con ${1#B7}; exit 1 ; fi # disconnect IRLP connection ONLY if [ "$1" = "B8" ] ; then rtpDir_IRLP_discon ; exit 1 ; fi # Reconnect last IRLP node. if [ "$1" = "B9" ] ; then rtpDir_IRLP_discon; rtpDir_IRLP_reconnect ; exit 1 ; fi # Sends a dtmf command to the local Asterisk server # by using this: asterisk -rx "rpt fun astNode command". # The astNode used is the one pointed to by the config variable astNode= # The Asterisk server must be running. # Example: IRLP user sends this dtmf: B12*32000 # That will request a connect to Asterisk node 2000, using your local astNode. # Example: IRLP user sends this dtmf: B12*12000 # That will request a disconnect from Asterisk node 2000, using your local astNode. # In /etc/asterisk/rpt.conf, the node astNode is the one running the rtpdir driver. # All Asterisk "rpt fun ..." dtmf commands are accessible this way. # Shortcuts can be added also. if [ ${1#B12} != $1 ] ; then rtpDir_AST_con ${1#B12}; exit 1 ; fi # dtmf C1xyz disconnects from Echolink node xyz # Example: C19999 disconnects from Echolink node# 9999 which is *ECHOTEST* if [ ${1#C1} != $1 ] ; then rtpDir_EL_disconX ${1#C1} ; exit 1 ; fi # Start/Stop recording from all connected nodes. # Example: C2 if [ "$1" = "C2" ] ; then rtpDir_rec ; exit 1 ; fi # Start/Stop playback to all connected nodes. # Example: C3 if [ "$1" = "C3" ] ; then rtpDir_play ; exit 1 ; fi # report connected nodes # Example: C4 if [ "$1" = "C4" ] ; then rtpDir_conx ; exit 1 ; fi # dtmf C51 disconnects from any connected D-Star node and connects to the D-Star node # pointed to, by the 1st configuration variable remDstar inside the rtpDir 5198.conf configuration file. # Anything after C5 points to the D-Star node information that the rtpDir 5198.conf configuration variable # remDstar points to. # Another example: If you have 2 remDstar variables inside the rtpDir configuration file 5198.conf # and you want to connect to the second D-Star node, then the IRLP dtmf command # would be C52 # So the dtmf command is C5 plus one digit. # The variable remDstar inside the rtpDir 5198.conf configuration file has this format: # remDstar=DstarGatewayCallsign IPaddressOfGateway module # or this: # remDstar=DstarGatewayCallsign DomainNameOfGateway module # # Special Case: C50 just disconnects from the D-Star node. if [ ${1#C5} != $1 ] ; then rtpDir_Dstar_cmd ${1#C5} ; exit 1 ; fi Make sure that B0 ... C5 dtmf prefix codes are not currently being used in your /home/irlp/custom/custom_decode file on another line. You can add more dtmfs that you can use on your IRLP radio to control other parts of the rtpDir bridge. For every new dtmf that you add, create a script file. You can even add dtmf shortcuts if you want. Make sure the file /home/irlp/custom/update-file-list contains at least the following lines: (If the file /home/irlp/custom/update-file-list does not exist, create it and then add the following lines) --exclude on --exclude on_to_remote --exclude connect_to_reflector --exclude call --exclude custom_decode --exclude sfswrapper --exclude control --exclude dropcall --exclude off --exclude end --exclude irlp_reset --exclude rtpDir_ALL_discon --exclude rtpDir_EL_discon --exclude rtpDir_EL_disconX --exclude rtpDir_EL_con --exclude rtpDir_EL_disable --exclude rtpDir_EL_enable --exclude rtpDir_EL_reconnect --exclude rtpDir_IRLP_discon --exclude rtpDir_IRLP_failure --exclude rtpDir_IRLP_reconnect --exclude rtpDir_IRLPstn_con --exclude rtpDir_IRLPref_con --exclude rtpDir_IRLP_callref.sh --exclude rtpDir_IRLP_callstn.sh --exclude rtpDir_IRLP_endcall.sh --exclude rtpDir_AST_con --exclude rtpDir_rec --exclude rtpDir_play --exclude rtpDir_conx --exclude rtpDir_Dstar_cmd It is very important that you put all the IRLP files names (on,...irlp_reset) and all the rtpDir_* file names(rtpDir_ALL_discon,...,rtpDir_conx) into the file /home/irlp/custom/update-file-list, otherwise IRLP will overwrite these files and your "Echolink + IRLP" node will not work as it should. If the file /home/irlp/custom/update-file-list did not exist before and you just created it, Go to the /home/irlp/custom/ directory and execute this command: chown repeater:repeater update-file-list WARNING: With the above changes to IRLP files, you have changed your IRLP node from IRLP to "Echolink + IRLP". To run IRLP without rtpDir, remove the above changes to the IRLP files, and then you can run IRLP standalone with no Echolink capabilities. or disable Echolink while still running rtpDir/rtpDir_tm in "Echolink + IRLP" Next step: Copy the software rtpDir_signal to /home/irlp/bin directory. Go to the /home/irlp/bin directory and execute the following commands: chown repeater:repeater rtpDir_signal chmod 750 rtpDir_signal Last step: download the text file "connect_and_disconnect_from_reflectors.txt" from the same rtpDir group and study it. It points out the fact that you must use certain IRLP dtmfs to connect to and disconnect from IRLP reflectors. You are done with the installation. Proceed with the CONFIGURATION. CONFIGURATION ============= rtpDir/rtpDir_tm is run with 2 parameters on the command line. The first parameter is the configuration file. The second parameter is a log file. The configuration file must exist and must have read access. The log file does not have to exist but the directory where the log file will be created must have write permissions. Both file names must be given on the command line. No defaults are implied. File names must include full path or no path at all. If no path is specified, then current directory will be used. A sample configuration file 5198.conf for rtpDir(GUI) and 5198_tm.conf for rtpDir_tm rtpDir(GUI is for Windows or Linux, rtpDir_tm is for Linux text mode only). Most of the entries are already filled in but the following configuration variables have to be changed: Look in the sample file 5198.conf for rtpDir or 5198_tm.conf for rtpDir_tm. Remember rtpDir_tm runs on Linux only. rtpDir runs on both Linux and Windows. call password name qth e-mail # insci and outsci, dont need to be changed if # soundCard=no or call is a *CONFERENCE* callsign insci outsci # EL_node is your Echolink node# # You can use any number here, it does not have # to be your Echolink node number. # This is used to detect collisions. # Even if you do not use your Echolink node number, # the rtpDir bridge will still display your correct Echolink # node number when it starts. EL_node # VERY IMPORTANT, # irlpNode must have a correct value which is # something like stnXXXX where XXXX is your 4-digit IRLP node number # If you dont have an IRLP node, set it to stn0000 # Your IRLP node irlpNode There are so many other configurations entries you can set to control the operation of the rtpDir bridge. We recommend that you go thru each one of them so that any problems you may get while running the rtpDir bridge can be identified. Configuration file format. Lines starting with '#' are comments and not processed by the built-in parser. All must be supplied or else the program will not start. If program fails to start, check the log file 5198.log for errors. Unless otherwise noted, entries refer to the Echolink network. -------------------------------------------------------------- # CALLSIGN must be in UPPERCASE call=YourCallSign password=YourPassword name=YourName qth=YourLocation email=YourEmail # You can use multiple servers for login/downloads. server=server1.echolink.org server=server2.echolink.org server=server3.echolink.org # Is this an Echolink network? yes or no # If EL_login=yes, your node will be registered with # the Echolink server(s) and you will then have to set # the option loadStnFile to yes or no. # If loadStnFile=yes, a local file pointed to, by the option stnFile # will be used as a station list. # If loadStnFile=no, a station list will be downloaded # from the Echolink server(s). # # If EL_login=no, your node will NOT be registered with # the Echolink server(s) and the software will force # the option loadStnFile to yes so that a local file # pointed to, by the option stnFile will be used as a station list. # EL_login=yes # myIP is your Echolink IP address, leave it as # 0.0.0.0 if you dont know it, # or use an IP address assigned # to you by the ISP if you're not using a router/firewall. # If you are behind a router/firewall, # use the private IP address assigned to you # by DHCP or the static private IP address # that you assigned to your machine. # DO NOT use the public IP address of # your network. If you get the error # "Could not start rtpDir,error=The 'bind' call for the RTP socket failed" # use either 0.0.0.0 or # the private IP address 192.168.x.x # In any case, we recommend using 0.0.0.0 in case you get # the above error in the log file. # This IP address can be different from # the myIRLP_IP address. myIP=0.0.0.0 # # port is your Echolink tx/rx port. # Although you specify 5198, # both 5198 and 5198 + 1 will be opened. # 5198(audio, text) and 5198 + 1=5199(control messages) # are both UDP ports and used for connections to other stations. # Another port is TCP port 5200 which is used for downloads, # but not listed anywhere in the config file. # If you choose any other port, it reverts back to 5198. # If EL_login=no, then you can choose any port you # like. See EL_login, loadStnFile and stnFiles option. port=5198 # Open the soundcard?(yes or no) # if soundcard=no, # then sound card device is not opened. # if soundcard=no # then serial port is not opened. # WARNING: # If you have installed and started IRLP, unless you have 2 sound cards, # you must set soundCard=no , otherwise the IRLP imike software will fail # to start when an IRLP connection is requested. # Setting soundCard=yes means that you intend to control your Echolink repeater or # link and you have a compatible Echolink link interface like VA3TO board # or rigblaster or something similar. # Setting soundCard=no means that you do not have a sound card and # you intend to run rtpDir an an Echolink conference or IRLP reflector/Echolink conference. # It could also mean that you DO have a sound card but you have installed # IRLP and you intend to control your IRLP repeater or link and you will be # using your IRLP radio or HT to send dtmfs to control rtpDir. soundCard=yes # Sound card device indexes, run showcard software for correct values. # These values will be explained later in this document. # For Linux, it is always 0 and 0 for the first sound card # or 1 and 1 for the second sound card or 2 and 2 for the third sound card ... # For Windows, it is 1 and 3 or 1 and 4 or 1 and 5 for the first sound card ... # ...but you may have a non-standard soundcard configuration, # so still run showcard for correct values. insci=0 outsci=0 # Is audio clipping off ? audioClipOff=yes # Is audio dithering off ? audioDitherOff=no # LatencyIN and LatencyOUT are sound card configuration parameters. # Run the program showcard for correct values for LatencyIN and LatencyOUT # These are usually fractional numbers LatencyIN=0.011610 LatencyOUT=0.011610 # Sample rate for the sound card. # It should be set to 8000, which means 8000 Hz(8 KHz) # The program showcard will probably report a default sample # rate of other than 8000, but use 8000 since most # VoIP networks expect 8000 Hz # You may try to use other values lower or higher than 8000 # to experiment with. # In some cases, rtpDir will fail to open the sound card with rate=8000 # In such cases, try rate=7999 or rate=8001 # Consult your soundcard's documentation for supported rates. # In some cases, the soundcard failed to open with rate=8000 # but it opened with rate=8100 # However using a rate value other that 8000 might not be ideal # for VoIP networks that expect a rate of 8000 Hz. # In previous versions of rtpDir, the rate value of 8000 # was used to open the soundcard, but we found out # that some soundcards will not open with rate=8000 # but they will open with rate=8001 or higher or # rate=7999 or lower. But remember that the further you # get from the value of 8000, the higher the probability # that your audio will not sound OK to the other participants # in the same VoIP network. So, even though you were successful # opening the soundcard, test your audio before you connect # to another station. # If your sound card does not support a sample rate of 8000, # replace it with one that does. rate=8000 # After initiating a connection to another node, # how long before we give up, in seconds. # Minimum is 40 conxTimeout=40 # After trying to login/register with the servers, # how long before we assume # that the server is not responding # and we must try another, in seconds. # Minimum is 10 loginTimeout=10 # Download timeout in seconds. # How long to wait before # we assume that the download # will never finish and must try # again on another server. # Minimum is 60 seconds. # Give rtpDir ample time to download the list. # Even high speed Internet has hiccups # from time to time. dnlTimeout=65 # How often to login in minutes. # Setting this to 0, disables # the login timer and eventually # you will disappear from the Echolink list. # Setting this to a number greater than 6 # may also drop you from the list and it # will force a re-login later. # A good value is 6. loginInter=6 # How often to download the list of stations, # in minutes. # Setting it to 0, disables downloads. # Higher than 5 may force a full compressed # download, instead of the # differential/compressed download which is preferred. refreshInter=5 # Initially login as busy(yes or no) busy=no # This option controls both Bridge audio and # Bridge text. # Is this a bridge/conference?(yes or no) # Dont bother running it as a bridge # using a dial-up modem bridge=no # Max connected stations # Good number for DSL is 8 # Good number for dial-up modems is 1 or 2. # Good number for cable modems is 50 maxStns=8 # Display current number of users(yes or no) dispNumUsers=no # Banner start banStart=Welcome to rtpDir # Banner end # You can have multiple lines for this item. banEnd=-------------- banEnd=http://tech.groups.yahoo.com/group/rtpDir/ # Is this a private conference(yes or no) private=no # Private File, must have read/write access. # File must exist. Empty file is OK. # Full pathname. #prvFile=C:/rtpDir/prv5198.txt prvFile=/root/rtpDir/prv5198.txt # Bookmark file, must have read/write access. # File must exist. Empty file is OK. # Full Pathname. #bookFile=C:/rtpDir/book5198.txt bookFile=/root/rtpDir/book5198.txt # Banned users file, must have read/write access. # File must exist. Empty file is OK. # Full pathname. #banFile=C:/rtpDir/ban5198.txt banFile=/root/rtpDir/ban5198.txt # ADMIN callsigns file, must have read/write access. # File must exist. Empty file is OK. # Full pathname. admFile=/root/rtpDir/adm5198.txt #admFile=C:/rtpDir/adm5198.txt # load a station list from a local file, yes or no. # See also EL_login and stnFile options. loadStnFile=no # Use this local file as a list of stations. # Full pathname and file must exist. # For the file format, look at the file stnFile.txt # Also see EL_login and loadStnFile options. # stnFile=C:/rtpDir/stnFile.txt stnFile=/root/rtpDir/stnFile.txt # Directory for QSO recordings. # Also, all gsm filenames are relative # to this directory. # Directory must exist with read/write access. # For Linux, just an example: QSOdir=/root/rtpDir/ # For Windows, just an example: # QSOdir=C:/rtpDir/ # the download and decompress program. # Full pathname must be given. # For Linux, just an example: fetchpgm=/root/rtpDir/getlist # For Windows, just an example: # fetchpgm=C:/rtpDir/getlist_win # RTCP timeout. # Minimum value is 5. # 5 * 10 = 50 seconds # If after 50 seconds we dont # receive the RTCP "heartbeat" # from the remote station, that # station will be disconnected. # Why do we multiply the RTCPtimeout by 10? # Because heartbeat interval is up to 10. RTCPtimeout=5 # This helps with Country selection. # If you want only US callsigns to connect # to your node, then the value # should be *AKNW. # *ANKWDFGIJLMOPUVZ469 will allow # QSOs with civilized countries. # Consult your ARRL books for # specific Callsign prefix info. # Not really 100% Callsign prefix selection, # but it helps in blocking # large groups of callsigns by country. # An asterisk will allow Conferences. # This pertains to Echolink stations only. # Allow callsigns starting with allowPrefix=*ANKWDFGIJLMOPUVZ469 # Allow repeaters, yes or no allowRptrs=yes # Allow links, yes or no allowLinks=yes # What are the rules for allowing a connect request? # # The following checks are done for both outbound Echolink or IRLP: # Connect requests to your local Echolink node are not allowed. # Connect requests to your local IRLP node are not allowed. # Connect requests to nodes already connected are not allowed. # # Connect requests while conxTimeout timer is active are not allowed. # (Not checked if the IRLP connect is done from the IRLP radio). # # Additional checks for outbound Echolink stations only: # Has capacity limit been reached? # Connect requests are not allowed if your station is set to Busy # Connect requests to banned stations are not allowed # If prv checkbox is checked, then connect requests to stations not # on Private list are not allowed. # Are repeaters allowed? # Are links allowed? # Is callsign prefix allowed? # # The following checks are done for both inbound Echolink and IRLP: # For nodes already connected, IP address change detection is done. # For nodes already connected, an SDES update is done. # Additional checks for inbound Echolink stations only: # Has capacity limit been reached? # Connect requests are not allowed if your station is set to Busy. # Connect requests from banned stations are not allowed # If prv checkbox is checked, then connect requests from stations not # on Private list are not allowed. # Are repeaters allowed? # Are links allowed? # Is callsign prefix allowed? # Additional checks are done for Inbound IRLP connect requests only: # If rtpDir is running as a reflector and # capacity limit has been reached, connect request is rejected. # If rtpDir is running as a reflector and # node is banned(also called lockout-list), connect request is rejected. # If rtpDir is running as a reflector and # node is busy, connect request is rejected. # If rtpDir is running as a reflector and # prv checkbox is checked, then connect requests from stations not # on Private list are not allowed. # The following checks are done for inbound *Asterisk* nodes: # Has capacity limit been reached? # Connect requests from banned stations are not allowed # Connect requests are not allowed if your station is set to Busy. # If prv checkbox is checked, then connect requests from stations not # on Private list are not allowed. # *Asterisk* nodes do not accept requests from IRLP or Echolink nodes yet. # Your Echolink node # If you dont use your own node and # a collision is detected, your node # will be set to a random 32-bit value, which # does not matter at all. This number is used # to detect RTCP collisions, it is not really # your node#. We recommend using the Echolink node# which # is unique, so the software will not use a # random number for collision detection. # Even if you dont use your own Echolink node# # your Echolink node number assigned to you by Echolink # will still be displayed in the list. EL_node=123456 # if linkMode=a (meaning ascii), then # ascii commands are sent to the link interface to control the radio. # For this mode to work, the link interface must support it. # Check with VA3TO link interface, it is the best interface # there is. # This interface also has a DTMF decoder on board and # supports COS and timeouts. # # If linkMode=s (meaning sound), then # "sound card" mode will be used to control the radio. # That means RTS/DTR checking and unchecking serial port pins. # Most other interfaces are of this kind. # And most of them dont have a DTMF decoder on board. # The VA3TO interface supports both ascii and sound modes. # # In either linkMode(a or s), if CTS or DSR or CD pin in the serial # port goes HIGH(ON), rtpDir will detect that and assume it is # a COS signal and will start reading audio from the sound card. # Of course, if rtpDir VOX checkbox is checked, then rtpDir # will start reading audio from the sound card if # VOX level exceeds VOX threshold. # # If you do NOT have a radio link interface connected to the PC or # you do NOT have a radio connected or # you do NOT have a serial port, then use a dash, example linkMode=- # Only if you set linkMode to a or s, the serial port # will be opened. # If soundCard=no, serial port is not opened. linkMode=s # The serial port connected to a link interface # like VA3TO, Rigblaster, SignalLink,... # Whatever port you connect the interface to, # make sure the port is not locked by another program. # For Windows: TXcomport=com2 # For Linux: TXcomport=/dev/ttyS1 # Other values for Windows: # com1,com3,com4,... # Other values for Linux: # /dev/ttyS0, /dev/ttyS2, /dev/ttyS3,... TXcomport=/dev/ttyS1 # Some radio/radio interfaces expect one of the serial # port pins to be inverted. # If that is the case, set one of them to yes. invertCD=no invertCTS=no invertDSR=no # Use the Internal(I) DTMF decoder in rtpDir. # or the External(E) DTMF decoder on the radio link interface. # or None(N) # If you have a VA3TO or WB2REM or G3VFP or G4CDY radio # link interface which has a DTMF decoder on board, # set dtmfConfig=E if you like. # # dtmfConfig=I # dtmfConfig=N dtmfConfig=E # Do you want to be notified with voice response # over the local RF link? # The following voice responses are used: # "busy", "notbusy", "connected", "disconnected", # "not found", "enabled", "disabled", "connecting to", # "Conference", "repeater", "link", "already in conference", # "access denied", "time-out", "Error",... # These voice messages are in files with extension .gsm # You can test how it sounds, by playing back the # .gsm file with playgsm, if rtpDir is not running. # Example: ./playgsm notfound.gsm # Or you can play it back with Menu option Control/PlayBack. # If you want to record your own gsm file so that # your own voice is played back instead of the # electronic-computerized voice, then start rtpDir, # do not connect to any station, check REC checkbox, # check PTT checkbox and speak into the MIC. # When you are done, uncheck REC and PTT. # Look for a file rtpDir_recorded.gsm # Use Menu option Control/PlayBack to play it back or # shutdown rtpDir and playback that file # with playgsm. If it sounds OK to you, # rename that file to match one of the # gsm files included in the package. # So, if you spoke the words "NOT FOUND" # into the MIC, rename that file to notfound.gsm # You can do that with all the voice gsm files. # yes or no # playMsg=yes # During playback, play for how long(in seconds) before a pause? # If playDuration is set to 0, then playback will NOT be interrupted. playDuration=120 # During playback, pause for how many seconds, before continuing? playPause=5 # announce connects/disconnects for Asterisk. # if set to no, rtpDir will NOT announce its own message # when the Asterisk station connects directly to rtpDir # but still the your Asterisk station will genereate its own # announcement. playMsgAST=no # announce connects/disconnects for IRLP # if set to no, rtpDir will not announce its own message # when the IRLP station connects directly to rtpDir # but still your IRLP node station will generate its own # announcement. playMsgIRLP=no # Announce the connected CALLSIGN over the local RF link? # There are gsm files, A.gsm thru Z.gsm and # 0.gsm to 9.gsm to support the announcement of # CALLSIGNs over the local RF link. # If soundcard=no, the CALLSIGN is not announced. # However if soundCard=no because you are running rtpDir # in "Echolink + IRLP" mode, and the IRLP user # on the IRLP radio requested to connect to an # Echolink node, then announcement of the CALLSIGN # will be trasmitted into the local IRLP ISPEAKER # software so the IRLP user on the IRLP radio # will know who connected. # yes or no playCall=yes # ID your station over local RF link # every so often, in minutes. # If it is 0(zero), no station identification is done. # # You have 2 choices here: # Either use rtpDir and record your own gsm file # and rename it to id.gsm or # use cwgsm program to create a CW morse code file # and rename the resulting file from cwid.gsm # to id.gsm # The station is identified # only when local RF link and rtpDir are quiet. # # The file id.gsm is played back. IDinter=0 # Delay in seconds before transmitting # the file welcome.txt to the connected station # See option sendWel # Dont set it near 0, connected stations # have a "feature" that clears the text # in the chat text window when a connection is made. # rtpDir will not clear any text in the chat text window. # welcomeTxtDelay in seconds. # welcomeTxtDelay=13 # Allow the welcome.txt file to be trasnmitted? # The file welcome.txt must exist # in the QSOdir # Keep the text inside the file welcome.txt # to less than 512 characters and all # of the text in one single line. # It will be sent in one burst. # Also see option welcomeTxtDelay # yes or no sendWel=yes # Similar to welcomeTxtDelay option # but refers to welcome audio. # See option playWel welcomeAudioDelay=13 # Allow the welcome.gsm file to be transmitted? # yes or no playWel=yes # Important: # If you're running a BRIDGE, set the above variables # to no: playWel, sendWel # and set IDinter=0 # VERY IMPORTANT # ============== # The above options: playMsg, playCall, IDinter, playWel # use "BLOCKING" functions to play audio. # It has to be "BLOCKING" so that the entire message # gets played in its entirety with no break-ups in between. # DO NOT CREATE 100MB audio file to contain just the # voice response "CONNECTED". In other words, the audio file connected.gsm # should be small size and to the point. If it takes more than the # RTCPtimeout to finish playing the voice response "CONNECTED" # connected stations to your station may get disconnected. # Example: If your RTCPtimeout value is 5, so in this case # case the real timeout is 50 seconds(5 * 10), then # the audio message contained in the file connected.gsm # should take no more than 50 seconds to play out. # The menu option Control/Playback can play any size audio file # you want. There are no restrictions on Control/PlayBack menu option. # Configurable DTMF commands. # These are dtmfs that can be sent from the Echolink radio only # and only if soundCard=yes # To send dtmfs from the IRLP radio, consult the file # /home/irlp/custom/custom_decode # To send dtmfs from the Asterisk radio, look for teh variable ast_dtmf_cmd # All dtmf commands start with a 2-digit code. # DTMF commands are converted to uppercase # when rtpDir processes the configuration file, # so a1 is the same as A1 # Any commands that you dont want rtpDir # to process, replace with invalid dtmf # Example: dtmfShutdown=zz or dtmfShutdown=ZZ which means you will # never be able to shut it down # Use DISTINCT values for DTMF commands. # WARNING: Results are UNDEFINED if dtmf # commands are NOT UNIQUE. # If soundCard=no, rtpDir will not receive any Echolink dtmfs. # dtmfs from the IRLP radio are converted to text commands which # are received by the rtpDir bridge. # Enable and disable the Echolink part of the rtpDir bridge. dtmfEnable=01 dtmfDisable=02 # Disconnect the station that is on top. # The station that is on top is reported by dtmfWhoIsOnTop dtmfDisconLast=03 # Disconnect a station by Callsign. # Follow instructions for dtmfConCall dtmfDisconCall=04 # Disconnect all stations dtmfDisconAll=05 # Report who connected last or who is active in a QSO dtmfWhoIsOnTop=06 # Set station to Busy. dtmfBusy=07 # Shutdown rtpDir bridge dtmfShutdown=08 # Report status. Connected, busy, not busy dtmfStatus=09 # Enable detection of simple conference loops. dtmfDetectLoops=10 # Any stations that connect are muted. dtmfNSM=11 # Any stations that connect are marked as DEAF. dtmfNSD=12 # dtmf command to set Bridge audio on/off dtmfBrv=13 # dtmf commands for random connects to conferences, # repeaters, links and PC users. dtmfRndConConf=14 dtmfRndConRptr=15 dtmfRndConLink=16 dtmfRndConPCusr=17 # dtmf command to abort a connection timer in progress. # Aborting the connection timer, allows you to make # another connection. # Same as Control/Abort_Connect_EL menu option # Connect requests to IRLP stations can not be aborted. dtmfConAbort=20 # start/stop recording dtmfRec=21 # start/stop playback dtmfPlay=22 # Identify your station as a CONFerence dtmfCnfo=23 # Tutn off the CONF identfication dtmfCnff=24 # dtmf to connect to irlp # Example: 259990 will try to connect to IRLP node 9990 dtmfcirlp=25 # dtmf to disconnect from irlp dtmfdirlp=26 # Control your Asterisk nodes thru rtpDir Echolink dtmf tones. # There are at least 100 commands or so that can be sent to Asterisk. # Consult the Asterisk documentation. # Asterisk server must be running local to rtpDir. # dtmfAstCmd=27 and that means that anything else after 27 # is passed to the Asterisk server for processing. # Enter dtmf 27 and follow it with the asterisk dtmf tones # example: 27*7 will announce connected Asterisk nodes # example: 27*12000 will drop node 2000 # example: 27*32000 will connect to Asterisk node 2000 # Anything after 27 is passed directly to the Asterisk server. # rtpDir will only have one Asterisk connection on the screen, # all other Asterisk connections are linked to your # asterisk rtpdir driver node. # The config variable astKickall,(see below) is special # because it does not care if the Asterisk server runs local to rtpDir or not. # It will force rtpDir to stop interfacing with asterisk. # Assuming that you have set astKickall=*954 in this file, read this example # example: 27*954 will kick out all asterisk nodes connected to your driver node # only if you have enabled *954 in asterisk rpt.conf, # and only if the asterisk server runs local to rtpDir, # but even if you have not enabled *954 in Asterisk, # and even if asterisk is not local to rtpDir, # rtpDir will stop interfacing with Asterisk. # Any other command, will cause rtpDir to start interfacing # with asterisk again. # # Anything after 27 is passed directly to the Asterisk server. # rtpDir will only have one Asterisk connection on the screen, # all other Asterisk connections are linked to your # asterisk rtpdir driver node. # Your asterisk driver node is the asterisk node listed in asterisk rpt.conf # having rxchannel=rtpdir/0.0.0.0:4570:4670 # and also given by the configuration variable astNode in this file. dtmfAstCmd=27 # Control your D-Star node with Echolink dtmf tones. # dtmfDstarCmd=28 # Enter first dtmf 28 and then an index number. # The index number you enter points to the remDstar variable. # See the remDstar entries below. # Each Dstar connect command disconnects first from the currently # connected D-Star node and re-connects to a new one. # Only one D-star connection is allowed at a time. # Example: 281 will connect you to the D-Star node # pointed by the first remDstar variable # Example: 282 will connect you to the D-Star node # pointed by the second remDstar variable. # Example: special case: 280 will disconnect from the D-Star node # if a D-Star node is connected to your station. dtmfDstarCmd=28 # disconnect an Echolink node by its node numbe dtmfdnode=29 # script command that makes a connect call to an IRLP node # This is used by the rtpDir bridge gui only. conIRLPnode=/home/irlp/scripts/rtpDir_IRLP_callstn.sh # script command that makes a connect call to an IRLP reflector # This is used by the rtpDir bridge gui only. conIRLPref=/home/irlp/scripts/rtpDir_IRLP_callref.sh # script command that disconnects the IRLP connection. # This is used by the rtpDir bridge gui only. disconIRLP=/home/irlp/scripts/rtpDir_IRLP_endcall.sh # dtmf connect requests to stations # using shortcuts. This is for Echolink only. # Multiple dtmfConShort commands are allowed, # but the prefix must be unique among them, # and the prefix must be unique between all # dtmf commands. # The syntax of this command is a 2-digit dtmf code(the prefix) # plus the node# to connect to. # If the received dtmf sequence matches one # of the prefixes, a connect request to # that node will be initiated. # Looking at the example below, # if the dtmf sequence 30 is received # the software will connect to nodeNumber 99999 # Just make sure that you're not using the codes # 30 or 40 or 50 in any other dtmf command. dtmfConShort=3099999 dtmfConShort=4099999 dtmfConShort=50327495 # # Command to connect by CALLSIGN, and follow it by DTMF digits that # represent CALLSIGN letters. # For any digit use that digit plus a 0, # example: # for 4, use 40 # for 2, use 20, # and so on... # For a letter use the numeric keypad plus position of that letter # under that key. # example: # for letter A, use 21, # for letter K, use 52, # for letter N, use 62, # for letter W, use 91 and so on... # for * use * # for - use # # #dtmfConCall=## dtmfConCall=61 # Connect by Node #dtmfConNode=** dtmfConNode=62 # Transmit delay in MILLISECONDS # How long before rtpDir assumes that # you have stopped trasmitting to the remote station, # or you have stopped entering a dtmf sequence. # If you see that your dtmfs are cut short, increase it and re-try. # This is also VOX delay, hangup time. # 1000 milliseconds is one second. txDelay=1000 # Receive delay in SECONDS. # How long before rtpDir assumes # that the remote station has stopped talking. # If value is not between 1 and 10, it will be set to 1. rxDelay=1 # Maximum transmit time for stations, in seconds. # This is the QSO timeout. # This is to prevent stations from monopolizing the conference. # Set it to 0 to disable. # If not 0 and station transmission time exceeds this value, # a text message will be sent to the station # and the station will be disconnected. # This is for Echolink stations only. # IRLP stations have their own timeouts. maxTXtime=120 # Show connected station in QTH(yes,no) # If yes, the list shows who you're # connected to, otherwise # it only shows your QTH. # Makes no difference if running a conference. stnInQTH=no # connect to this station on start up # This is for Echolink stations only # Use a single dash - for no connections on start-up, # or use a CALLSIGN, example: onStartUp=*ECHOTEST* onStartUp=- # event notification # start-up, shutdown, connected and disconnected event # notification. # A simple script evt.sh for Linux and evt.bat for DOS # is included. You can transmit these events anywhere, # even update a web site. events=no #eventpgm=/root/rtpDir/evt.sh eventpgm=C:/rtpDir/evt.bat # Report connect and disconnect activity # to other stations? # yes or no reportAct=yes # Maximum duplicate message count. # If maxDups=0, then the duplicate detect logic # is disabled. # If maxDups is greater than zero and # the connected station passes duplicate # text messages that exceed this maximum, then # the connected station will be disconnected. # This is to prevent looping of text messages, # since the RTP protocol uses # a detection logic on UDP/audio messages only, # but not on text messages which have no sequence # numbers. # This is also true for administrators. Dont keep # keep sending the same command over and over. # If the remote text command exceeds this limit, # even the administrator will be disconnected. # RTP/Sanity-Stats menu option will report duplicate counts. maxDups=125 # Display station info for each # of the connected stations on screen. # This should be set to 0 when running as a # Bridge conference. # If not a Bridge conference, # try to keep this to a small number. # Example: keep station info in memory for # the last 2 active stations. maxNumSInfo=2 # responsiveness of the audio strength bar indicator # Valid values are 0,1,2,3 # a value of 3 is the least responsive barDelay=3 # detect simple conference loops detectConfLoops=yes # reply port for remote text commands for scripting. # This reply port MUST NOT be equal to port. # So if port was set to 5198, then txtCmdReplyPort # MUST NOT BE 5198 and MUST NOT BE 5199 # and MUST NOT BE port 5200. # and it MUST NOT BE ANY IRLP PORT(2074...2093,15425...15428) txtCmdReplyPort=6500 # Accept IRLP connections, yes or no irlpEnable=no # Allow linking of irlp reflectors ? # If crosslinkirlpref=no then only the owner stnXXXX can TX to an IRLP refXXXX # crosslinkirlpref=yes # Your IRLP IP address # see also myIP for possible errors. myIRLP_IP=0.0.0.0 # IRLP connections on these ports. # Both irlpPort and (irlpPort + 1) will be opened for receiving. # irlpPort for audio and irlpPort + 1 for control. # irlpPort and (irlpPort + 1) is also used for transmitting. irlpPort=2074 # If you have not installed IRLP, set it to no. # If you are running rtpDir on Windows, set it to no. # If you're interested in running a # pure IRLP reflector/Echolink conference, set it to no. # The only time you will set accessIRLP=yes is when # you have installed and running an IRLP node together with # your Echolink node because you want to run rtpDir # in "Echolink + IRLP" mode. # # WARNING: Be careful here, if you do not have IRLP installed and specify # accessIRLP=yes, you will mess up the operation of your node. # We can not and will not be responsible if the system operator # willfully or unknowingly creates a wrong configuration file # for your node. # accessIRLP=no # # 3 different configuration choices. # # Starting with release rtpDir 1.21 and later # # CHOICE 1: --- "Echolink + IRLP" mode. # DO NOT INSTALL ANY EchoIRLP scripts. That mode is not supported any more. # Read the section "WARNING:Starting with release v1.21" # at the beginning of this document. # One sound card is required for IRLP. # The IRLP radio will control rtpDir for both Echolink connections and one IRLP connection. # Install the IRLP node(IRLP software and IRLP board) # Install rtpDir. # Only one IRLP connection is allowed at a time. # Multiple Echolink connections are allowed. # If you dont install the IRLP board, but just the IRLP software, # you will be able to control the IRLP connection with remote text commands. # Set irlpEnable=yes # Set soundCard=no and irlpPort=2074 # Set accessIRLP=yes # Make sure your /home/irlp/custom/environment file uses GSM codec or ADPCM. # and export NOUPDATE=YES # CHOICE 2: --- IRLP reflector/Echolink conference # DO NOT INSTALL ANY EchoIRLP scripts. That mode is not supported any more. # Read the section "WARNING:Starting with release v1.21" # at the beginning of this document. # A sound card is not required in this setup. # This option is for registered or un-registered IRLP reflectors plus # Echolink connectivity. # Install rtpDir to replace one of the IRLP reflector binaries. # Multiple IRLP and multiple Echolink connections are allowed. # For IRLP reflector + Echolink conference, set irlpEnable=yes, set EL_login=yes # For Echolink conference only, set irlpEnable=no, set EL_login=yes # For IRLP reflector only, set irlpEnable=yes, EL_login=no, loginInter=0, refreshInter=0 # and set port to an even value other than 5198 # Set soundCard=no, irlpPort equal to an even number between 2074 thru 2092. # Since you dont have an IRLP node installed, you may set soundCard=yes, # but remember doing so, may slow rtpDir bridge down a bit if IRLP stations and # and Echolink stations are connected since it will busy transcoding codecs # ADPCM,GSM and the same time send processed audio to the sound card. # So we recommend that soundCard=no # Set accessIRLP=no # Configure this IRLP reflector to accept GSM or ADPCM codec connections. # CHOICE 3: --- Echolink/Echolink conference. # DO NOT INSTALL ANY EchoIRLP scripts. That mode is not supported any more. # Read the section "WARNING:Starting with release v1.21" # at the beginning of this document. # Set irlpEnable=no # Set soundCard=yes or no # Set accessIRLP=no # Your IRLP node. # If you have installed IRLP and irlpEnable=yes # set irlpNode to your assigned IRLP node. # If you have not installed IRLP, # or irlpEnable=no , set it to stn0000 # If you are running rtpDir on Windows, set it to stn0000 # MUST BE in lowercase. #irlpNode=ref9990 irlpNode=stn0000 # If running rtpDir in "Echolink + IRLP" mode. # This will be the UDP port for the local IRLP ispeaker binary. # Must be even number and different from irlpPort. # localISPEAKERport=2174 # Do you want to accept *Asterisk* node connects. # yes or no astEnable=yes # What is the Asterisk command that disconnects all # Asterisk nodes connected to your Asterisk node? # The default is *954 but you will have to enable that # in the asterisk rtp.conf file astKickall=*954 # asterisk binary # If you use Asterisk, you must start it in server mode. astBinCmd=/usr/sbin/asterisk # This is the Asterisk node in /etc/asterisk/rpt.conf # that runs the rtpdir channel driver in Asterisk # The rtpdir channel driver node in rpt.conf # must have this: rxchannel=rtpdir/127.0.0.1:4570:4670 # It is related to allowAST variable, see below. astNode=2167 # Your IP address for accepting Asterisk messages myAST_IP=0.0.0.0 # rtpDir will accept Asterisk messages on this local port localASTport=4570 # The *Asterisk* node port on the remote machine # or the local machine. remoteASTport=4670 # The IP address of where the Asterisk server is running that # also has the chan_rtpdir channel driver active. allowAST=127.0.0.1 # Asterisk DTMF tone translation table # These lines map Asterisk dtmf tones to rtpDir commands that will # be sent from the Asterisk radio/HT to rtpDir for processing # to connect/disconnect Echolink, IRLP and D-Star nodes. # Example: # # The asterisk radio user on the radio/HT punches this # dtmf sequence: *4# # where *4 forces the driver node to go # into command mode and the pound sign at the end # of the sequence completes the sequence. # You will enter the above dtmf sequence from the Asterisk radio node # and direct it to the driver node rtpdir channel driver. # # The radio node is identified by a node in rtp.conf that # has this: rxchannel=Radio/usb # # The drive node is identified in rpt.conf by a node that has this: # rxchannel=rtpdir/0.0.0.0:4570:4670 # # The is explained here: # Example of an is 059990A # This works as follows: # rtpDir will take 05 to be a command to connect to an IRLP reflector, # the IRLP reflector is 9990 and the last dtmf A will be dropped because # it flags the end of the dtmf sequence. # Each starts with a 2-digit number given by ast_dtmf_cmd # Multiple assignments are allowed for ast_dtmf_cmd # # Make sure the 2-digit ast_dtmf_cmd is unique among all of them. # You must have 2 Asterisk nodes for this to work. # One node will be the radio node and will have # rxchannel = Radio/usb # and the second node will be the rtpdir driver node with # rxchannel = rtpdir/0.0.0.0:4570:4670 # To send dtmf commands from your Asterisk radio node to the driver node, # you will send this as a dtmf sequence: *4# # where is something like 059990A as explained above. # You can do the same thing from the Asterisk CLI command prompt. # Lets say the Asterisk radio node is 2184 and the driver node is 2167 # The CLI command would be this: rpt fun 2184 *42167# # Example: to connect to the Echolink node 9999: rpt fun 2184 *42167019999A# # connect to an Echolink node # Example: 019999A will connect to *ECHOTEST* which is node 9999 ast_dtmf_cmd=.cnode 01 # disconnect from an Echolink node # Example: 029999A will disconnect Echolink node 9999 ast_dtmf_cmd=.dnode 02 # connect to an IRLP station(not for IRLP reflectors) # Example: 033249A will connect to irlp node 3249 ast_dtmf_cmd=.cstn 03 # disconnect from an IRLP station(not for IRLP reflectors) ast_dtmf_cmd=.dstn 04 # connect to an IRLP reflector # Example: 059990A that will connect to irlp reflector 9990 ast_dtmf_cmd=.cref 05 # disconnect from an IRLP reflector ast_dtmf_cmd=.dref 06 # shutdown rtpDir bridge ast_dtmf_cmd=.shutdown 09 # disconnect all Echolink nodes ast_dtmf_cmd=.del 10 #disconnect all IRLP nodes ast_dtmf_cmd=.dirlp 11 # disconnect all nodes ast_dtmf_cmd=.dall 12 # start/stop recording # Record all audio packets from all sources(Asterisk,IRLP,Echolink) into rtpDir_recorded.gsm # The recording command is somewhat dangerous. # Asterisk is not using a hardware-based DTMF decoder and it may miss a dtmf digit # when you are trying to turn off recording. # It is beter to have an external script that runs at certain times during the # day and at a specific time, that script would send the record command to rtpDir # bridge to start/stop recording. # So uncoment out this line only if you understand the implications of it. # Anyway, a message that the rtpDir bridge is recording will be sent the # the radio user(both IRLP and the Asterisk user) to notify when the # the recording started and when it ended. # The audio message that rtpDir sends to the radio user to tell them # that recording mode is on/off is contained in the files recon.gsm and recoff.gsm # Asterisk will also transmit the "audio command" message to the radio user, # so make sure that recon.gsm and recoff.gsm contain different audio mesages # from the Asterisk audio messages. # # recon.gsm or recoff.gsm will only be transmitted to the local RF IRLP node # and the asterisk node identified by the astNode configuration variable. # (If other asterisk nodes are connected under that astNode then asterisk will # send the message to those nodes also.) # # ast_dtmf_cmd=.record 13 # start/stop playback # Playback the file rtpDir_recorded.gsm to all connected nodes(Asterisk, IRLP, Echolink). ast_dtmf_cmd=.play 14 # report nodes directly connected to rtpDir/rtpDir_tm. ast_dtmf_cmd=.conx 15 # Identify your station as a CONFerence ast_dtmf_cmd=.cnfo 16 # remove the CONFerence identification from your station ast_dtmf_cmd=.cnff 17 # connect/disconnect to a dstar node # 180 will disconnect # 181 will disconnect first and then # connect to the dstar node pointed by the first remDstar variable. # 182 will disconenct first and then # connect to the dstar node pointed by the second remDstar variable. # and so on 183 184 185 ... # How high the numbers go depends on how many remDstar variable # assignments you have, see variable remDstar # The first remDstar variable is index number 1. # So lets say the second remDstar variable is remDstar=REF001 ipaddress C # To connect to reflector REF001, you would enter the following dtmf # sequence on the Asterisk radio HT and assuming your driver node is 2167 # *42167182A# # Again, lets analyze it: # *4 to enter command mode, # 2167 is the asterisk chan_rtpdir channel driver node # 182A is a request to connect to the D-Star node # The pound sign at the end completes the sequence. # ast_dtmf_cmd=.dstar 18 # This is a single DTMF and it means that when the user # sends this dtmf tone, whatever dtmf tones rtpDir has accumulated # in its buffer will be processed ast_dtmf_end=A # DSTAR insteface starts here # # Enable the DSTAR interface dstarEnable=yes # Can an Echolink node talk to dstar? echo2dstar=yes # Can an IRLP node talk to dstar? irlp2dstar=yes # Can an Asterisk node talk to dstar? ast2dstar=yes # Better leave this alone at 0.0.0.0 myDSTAR_IP=0.0.0.0 # rtpDir will be receiving DSTAR messages on this local udp port # consult the dextra_cli or the dstar2analog package for correct value. localDSTARport=7770 # rtpDir will be sending to DSTAR on this remote udp port # consult the dextra_cli or dstar2analog package for correct value. remoteDSTARport=9990 # Only one line for DSTAR # This is the IP address where the dextra_cli or dstar2analog software is running. allowDSTAR=127.0.0.1 # remote D-Star systems # Multiple lines are allowed # D-Star systems have callsigns but no node numbers. # We could make a connection using the Gateway callsign # and pass it to a dtmf command but we would have to # translate the callsign to a node# so the user can # use it by punching the dtmf digits for the node. # But since Gateways dont have node numbers either, another # way had to be found. # The whole line must be less than 1000 characters!!! # Consult the file dstar_gw_list.txt and change the remDstar entries below. # Multiple remDstar entries are permitted. # # module is one of A or B or C # The format of remDstar is: GatewayCallsign IPaddress module # or: GatewayCallsign domainName module # remDstar=K5TIT gateway.k5tit.org C remDstar=K5TIT 208.80.14.10 B # # DSTAR interface ends here VERY IMPORTANT: ============== Add all your Echolink callsigns in uppercase, and all your irlp nodes in lowercase and all your Asterisk nodes in lowercase to the rtpDir security file: adm5198.txt Note: prepend the letters ast in front of the asterisk node number. Note: prepend the letters stn in front of the IRLP node number. For example: On our systems, the adm5198.txt file contains these 4 lines: KI4LKF-L KI4LKF-R ast2167 ast2184 stn3249 If you dont add your callsigns, then some of the features of rtpDir will not work correctly or you will not get correct connections or no connections at all or remote access will not work or the rtpDir admin functions will not work. *************************************************************************** *************************************************************************** SOME PORT RECOMMENDATIONS: As you can see, there are many ports that can lead to confusion. We recommend the following port settings: port = 5198 for Echolink or if not an Echolink network, choose an even number different from the rest of the ports below. irlpPort = 2074 for IRLP if you are running an IRLP node and not an IRLP reflector. or an even number between 2074 to 2092 if running an IRLP reflector. localISPEAKERport = 2174 and must be an even number. txtCmdReplyPort = any port as long as it is not equal to any of the ports above. We recommend 6500 localASTport=4570 which is close to *Asterisk* IAX2 default port of 4569 remoteASTport=4670 which is far enough from localASTport This port is created by rtpDir to receive audio packets from dextra_cli or dstar2analog localDSTARport=7770 # This port is created by dextra_cli or dstar2analog software to receive audio packets from rtpDir. remoteDSTARport=9990 ******************************************************************************** ******************************************************************************** There are 4 configuration entries that have something to do with the sound card, that require some explanation, insci, outsci, LatencyIN and LatencyOUT. insci for INput Scound Card Index and outsci for OUTput Sound Card Index. We have included a utility software in the package, called showcard that when you run it on a Linux machine, will output the following lines: Sample output from showcard on a Linux machine that has 2 sound cards installed. The first sound card has a name /dev/dsp and the second sound card has a name /dev/dsp1 The name is always at the end of each line. INFO:Sound card devices not in use on this machine -------------------------------------------------- SC Index 0: Rate=44100.000000, maxIn=16, maxOut=16, Low(in:0.011610,out:0.011610), High(in:0.046440,out:0.046440) : /dev/dsp SC Index 1: Rate=44100.000000, maxIn=16, maxOut=16, Low(in:0.011610,out:0.011610), High(in:0.046440,out:0.046440) : /dev/dsp1 ... ... Other lines are ommited because we dont care about anything else that has a name that does NOT start with /dev/dsp ... Note: On Linux, showcard will only show the sound cards that are NOT in use. On Windows, showcard.exe will show all the sound cards, even the ones that are in use. We only need to look for lines that have a name like /dev/dsp for the first sound card installed, /dev/dsp1 for the second sound card installed and so on... Dont care about any other line. So, in linux we would set the following values in 5198.conf The line above says that "SC Index 0:" identifies the first sound card which has the name /dev/dsp, so use value 0 for insci and outsci. insci=0 outsci=0 If we wanted to use the second sound card, identified by "SC Index 1:" which has the name /dev/dsp1, we would set insci=1 outsci=1 Now for LatencyIN and LatencyOUT, there are a couple of numbers inside the parenthesis. For the sound card identified by /dev/dsp: The latency numbers are: Low(in:0.011610,out:0.011610) and High(in:0.046440,out:0.046440) # use the Low values for latencyIN and LatencyOUT. LatencyIN=0.011610 LatencyOUT=0.011610 You may also use the High values for latencyIN and LatencyOUT. LatencyIN=0.046440 LatencyOUT=0.046440 On linux, the alsamixer software can be used to control the record and playback settings on the soundcard or use the aumix software. You may need to download the alsa-utils package. For example: To configure the first sound card installed on Linux, we could use the program alsamixer like this: alsamixer -c 0 or alsamixer -c 1 Parameter 0 identifies /dev/dsp which is the first sound card and paramters 1 identifies /dev/dsp1 which is the second sound card The alsamixer program is included in the package alsa-utils and it is a text-mode program. For GUI programs that run on the Desktop, you could use the program system-config-soundcard The program system-config-soundcard is included in the package system-config-soundcard Of course, there are other packages that you can use to configure the sound card on Linux. There is the program kmix which is one of the KDE desktop programs that can help you configure your sound card. kmix is included in the package kdemultimedia. For Windows, things are a little different because insci and outsci are never equal to each other. Here is sample output from program showcard.exe executed on a Windows machine. Run showcard.exe from a DOS terminal window, showcard.exe is not a GUI application, so its output scrolls off the screen very quickly if you try to execute it from the Desktop amd you will not be able to see its results. INFO:The following sound cards are installed on this PC -------------------------------------------------------- SC 0: Rate=44100.000000,maxIn=2,maxOut=0, Low(in:0.200000,out:0.200000), High(in:0.400000,out:0.400000) :Microsoft Sound Mapper - Input SC 1: Rate=44100.000000,maxIn=2,maxOut=0, Low(in:0.200000,out:0.200000), High(in:0.400000,out:0.400000) :Creative Sound Blaster PCI SC 2: Rate=44100.000000,maxIn=2,maxOut=0, Low(in:0.200000,out:0.200000), High(in:0.400000,out:0.400000) :Xtreme Sound PCI Audio Device SC 3: Rate=44100.000000,maxIn=0,maxOut=2, Low(in:0.200000,out:0.200000), High(in:0.400000,out:0.400000) :Microsoft Sound Mapper - Output SC 4: Rate=44100.000000,maxIn=0,maxOut=2, Low(in:0.200000,out:0.200000), High(in:0.400000,out:0.400000) :Creative Sound Blaster PCI SC 5: Rate=44100.000000,maxIn=0,maxOut=2, Low(in:0.200000,out:0.200000), High(in:0.400000,out:0.400000) :Xtreme Sound PCI Audio Device To understand the above output, lets first forget the lines identified by "SC 0" and "SC 3". These are mappers. Mappers could also work. For example, looking at the above list, we could set insci=0 outsci=3 because "SC 0:" is the Input mapper and "SC 3:" is the output mapper. but sometimes mappers dont work or we get errors when using them. So, we could also use these values: insci=1 outsci=4 You will have to choose the insci and the outsci. On the above system we chose insci=1 and outsci=4. In other words, we chose "SB AudioPCI 64D Record" for insci and "SB AudioPCI 64D Playback" for outsci. On your system, it could be insci=1 and outsci=5, or insci=1 and outsci=3. In other words, the device name used for input and the device name used for output must be identical. You have to do the same analysis on your system. For Latency values, you would use these settings: LatencyIN=0.20 LatencyOUT=0.20 or you might use the high values LatencyIN=0.40 LatencyOUT=0.40 NOTE: If running the software with soundcard=no then insci and outsci numbers are not checked by the rtpDir software, and rtpDir will not try to open the sound card. Also, rtpDir will NOT open the sound card if the callsign that you are using to run rtpDir starts with * STARTING rtpDir on Windows. ========================== This means you are running rtpDir as an Echolink link or repeater or as a PC user station or as an Echolink conference or as an IRLP reflector/Echolink conference. soundCard config option can be yes or no Open a DOS box. Change to the directory where rtpDir is installed. That directory is C:\rtpDir Execute the following (Type on the keyboard and press ENTER): rtpDir.exe 5198.conf 5198.log rtpDir should initialize and appear on the screen within 5 seconds. If not, examine the contents of the file 5198.log using NOTEPAD fix the problem and re-try. If it appears, you can go ahead and create a batch file or a desktop icon or a shortcut. A simple Windows/Dos batch file 5198.bat is supplied. We recommend that you create a desktop icon on Windows that references the actual executable and pass it the required 2 parameters instead of creating a shortcut that refers to a batch file. A shortcut to a batch file on Windows will create that ugly looking DOS box, that sometimes it is difficult to get rid of. STARTING rtpDir on Linux, IRLP is NOT installed =============================================== This means you are running rtpDir as an Echolink link or repeater or as a PC user station or as an Echolink conference or as an IRLP reflector/Echolink conference. soundCard config option can be yes or no Make sure user id is root. Open a terminal window so you can type on the keyboard. Go to the directory where rtpDir is installed. That is /root/rtpDir Study the comments in the 5198.sh script and comment out the lines sleep, ispeaker and imike, then Type the following on the keyboard and press ENTER: ./5198.sh rtpDir should initialize and appear on the screen within 5 seconds. If not, examine the contents of the file 5198.log using vi or emacs editor, fix the problem and re-try. For starting rtpDir_tm on Linux, read the file rtpDir_tm.txt which is inside rtpDir_tm-1.52.zip STARTING rtpDir on Linux, IRLP is installed =========================================== NOTE: Some routers are configured to allow outbound connections only and block inbound connections. Make sure that your router allows inbound connects, otherwise IRLP may report that the connection has been established but the SDES request message will not arrive to your station and therefore you will have a "half-baked" connect which will not work in Echolink + IRLP mode. The same is true for Echolink connects also. This means you are running rtpDir in "Echolink + IRLP" mode. Make sure soundCard=no unless you have assigned one sound card(first/default sound card) for IRLP and another sound card for rtpDir. Make sure that you've installed IRLP under /home/irlp directory. We will assume that that you followed the steps in the section titled "Additional steps if you plan to run rtpDir in Echolink + IRLP mode". Make sure user id is root. Open a terminal window so you can type on the keyboard. Start the IRLP node FIRST. Type the following from the keyboard and press ENTER: /home/irlp/custom/rc.irlp Start the rtpDir bridge LAST. Go to the directory where rtpDir is installed. That is /root/rtpDir Study the comments in the 5198.sh script and enable or disable the correct IRLP ports, then Type the following on the keyboard and press ENTER: ./5198.sh rtpDir should initialize and appear on the screen within 5 seconds. If not, examine the contents of the file 5198.log using vi or emacs editor, fix the problem and re-try. Also your local IRLP node will connect to the rtpDir bridge within a few seconds, usually after the initial Echolink list has been downloaded. Now a simple step to test the "Echolink + IRLP" mode is required. Login in to your Linux box, open a terminal window and change to the directory /root/rtpDir where you have installed rtpDir bridge. Type the following at the keyboard and press ENTER ./gsmfile2ispeaker itisarptr.gsm 2174 The 2174 port is the same port as the rtpDir config variable localISPEAKERport is set to.(localISPEAKERport=2174) If you did not get any sound on the IRLP radio, something is wrong with the setup. (You will not find gsmfile2ispeasker if you install rtpDir on Windows, since IRLP does not run on Windows.) The rtpDir config option playMsg must be yes(playMsg=yes) if you want to listen to "CONNECTED" and "DISCONNECTED" messages whenever a station(IRLP or Echolink) connects to your IRLP node. The rtpDir config option playCall must be yes(playCall=yes) if you want rtpDir to announce the callsign on your IRLP radio whenever a station(IRLP or Echolink) connects to your node. For starting rtpDir_tm on Linux, read the file rtpDir_tm.txt which is inside rtpDir_tm-1.52.zip THINGS to NOTICE when running rtpDir/rtpDir bridge in "Echolink + IRLP" mode. ============================================================================= --- You must first start the IRLP node before starting the rtpDir bridge. --- Your local IRLP node will remain connected to the rtpDir bridge. --- If you restart the IRLP node by executing the script /home/irlp/custom/rc.irlp while rtpDir bridge is running, restart the rtpDir bridge also. --- Operation of the rtpDir bridge has been tested only when user ID is root. We have not tested rtpDir bridge with a non-root user ID. DO NOT run rtpDir with the user ID of "repeater". That user ID belongs to IRLP. These GUI options apply to rtpDir(GUI) for both Linux and Windows. Options for rtpDir(GUI) can be controlled from 5198.conf or the GUI menus. rtpDir_tm has no GUI and all its options are in 5198_tm.conf MENU OPTIONS ============ FILE: Shutdown: Shutdown the program. Dont stop the program with a system close command or kill command. System events are not caught. Shut it down with File/Shutdown menu option. File/Shutdown also saves callsigns into private,bookmark,banned and admin files. A File/Shutdown will also send the RTCP BYE message to all connected Echolink stations so they can do their own clean-up. It will also stop all active IRLP calls. However, there is a need sometimes to stop the program without using the File/Shutdown command. That is when you have stations connected and you want to make a change in the config file but without losing the connected stations. In that case, stop the program WITHOUT using the File/Shutdown menu option. Make the change in the config file and restart the software. The connected stations will automatically reconnect to your station. There is a time limit though. You can not wait more that a certain amount of time and expect the stations to reconnect automatically. IRLP starions do not reconnect. LoginRefresh: Login(if not logged in), and download station list. Usually the Login and Refresh timers do that for you, but just in case you want to do it yourself. Also you have to do it yourself if you disabled the timers. See next 2 options. Refresh Timer: How often to download the station list. 0 disables timer. Login Timer: How often to login. 0 disables the timer. SEARCH: Exact searches are performed, except with the option "Find Any(partial match)" which loops thru all matched entries. RTP: Status: Shows if RX/TX thread is active. Sanity-Stats: It displays a few checks in the log window and also displays the stats. Stats are reset according to RFC 3550 and 3551. Stats for IRLP nodes are not included. Packet loss figures are reported per station connected to your station if that station complies with the RTP protocol. Some stations dont comply and you will not get all the figures. Dont execute this option often when you're receiving or transmitting. Output from stats is as follows, just an example of both IRLP and Echolink stations connected: 062708 at 22:55:22:===== START OF Sanity-Stats ====== 062708 at 22:55:22:[gui:->IP_address,stn3249,IRLP] 062708 at 22:55:22:[gui:IP_address,*NO3YNET*,(Conference [6/8])] 062708 at 22:55:22:[gui:IP_address,ast2167,Asterisk 062708 at 22:55:22:------------------------------------ 062708 at 22:55:22:*NO3YNET*(IP address),R=node1,L=node2,not muted,not deaf,GSM,E,0 062708 at 22:55:22:SR Packet count=190942 062708 at 22:55:22:SR Byte count=25204344 062708 at 22:55:22:RR Packets lost=0 062708 at 22:55:22:------------------------------------ 062708 at 22:55:22:stn3249(IP address),not muted,not deaf,ADPCM,I,0 062708 at 22:55:22:ast2167(IP address),not muted,not deaf,LINEAR,A,0 062708 at 22:55:22:===== END OF Sanity-Stats ====== Some notes on stats: There are two parts to it, the GUI section and the VoIP section. The GUI section -------------- Each entry under the GUI section has an IP address, callsign and station name. If you see an arrow just before the IP address then that station is transmitting. The VoIP section ---------------- The VoIP section contains a little more info on the connected nodes. node1 is the Echolink node number for the remote(R) station. node2 is the Echolink node number for the local(L) station. For IRLP stations the node number is in the callsign. For Asterisk stations the node number is in the callsign. It will show if station is muted or marked as deaf. GSM, ADPCM, LINEAR is the codec being used by that station. The number at the end of each line is the duplicate text message count. E is for an Echolink node, I is for an IRLP node, A is for an Asterisk node. SR is the Sender's Report. (from RFC3550, for Echolink nodes only) RR is the Receiver's report. (from RFC3550, for Echolink nodes only) Same information is generated by the remote text command .stats CONTROL: Here you connect, disconnect stations mute, unmute, ban and mark stations as deaf. Muting a station drops the audio packets at the UDP/IP level. If Audio checkbox is not checked it will mute your sound card, but does not drop incoming audio packets. The Abort_Connect_EL option will abort a connection timer in progress for Echolink stations only. You can NOT abort connect requests made to IRLP stations. There is always a chance and a very good one that the remote station will receive the connect request and may connect to your station after you abort the connect timer. In either case, you can initiate connections to other stations without waiting for conxTimeout to expire. There is a side-effect to aborting a connection timer in progress. A connect request may arrive from that station later but it will not be known if your station initiated the connect request or not, so the welcome text message or welcome audio message may or may not be transmitted depending on your station initiating other connections since you aborted that first connection timer. Chat text from a muted station is not blocked. Chat text to a deaf station is not blocked. Marking a station as deaf, will disallow transmitting audio to that station. It is useful if you want to transmit to certain stations only. The PlayBack option will open up a pop-up window and allow you to select an audio(*.gsm) file to be selected for playback or testing. *Asterisk* gsm sound files can also be played. These are located in /var/lib/asterisk/sounds and have a gsm extension. When you make your selection and click OK, the gsm audio file will immediately start playing to the sound card if no audio is being received from connected stations. Audio will also be transmitted to the local Echolink RF node and it will key up the Echolink radio. While the audio is being played to the sound card, it will also be transmitted to the connected stations including your local IRLP node, all IRLP connections and all Asterisk connections. If while you're playing back, audio is being received by a connected station, then playback will be suspended. It is a good idea to mute all conencted stations so that the playback continues without interruption. This is usually done when you are playing back ARRL news or NASA news. Connect_EL will connect to Echolink stations. If accessIRLP=yes, Connect_IRLPstn will connect to IRLP stnXXXX stations. Connect_IRLPref will connect to IRLP refXXX reflectors. If accessIRLP=no, the Connect_IRLPstn and Connect_IRLPref menu options are disabled. Make sure that /home/irlp/custom/environment file uses GSM, ADPCM or UNCOMP codec. You can disconnect the Asterisk nodes directly connected to the asterisk driver node. For this reason, the Control/AsteriskCmd menu option was added. To connect/disconnect to/from D-star nodes, the menu option Control/DstarCmd was added. BOOKMARKS,PRIVATE,BANNED: Here you add stations to specific lists. A boomark callsign is displayed only when station is logged on. You should not add a bogus callsign. Banned/AllowCallsByPrefix will allow only callsigns having a specific "prefix". Use that for country selection. Admin: Add admin callsigns and save them. New Name and New QTH will allow a new name and/or a new QTH to be set while program is running. The New Name update is done immediately but the New QTH update is done at the next login. HELP: Server msg is the last message received from the server when you did a full compressed download. Login msgs are messages generated while attempting to do Login and/or differential compressed downloads. CHECKBOXES(bottom of screen, on the left) ========================================= Audio: Check it to mute sound card, Uncheck it to unmute sound card LO: Listen Only. Marks your station as "Listen Only" on the connected station info list. How quickly you see [listen only] next to your callsign is up to the remote node. Usually when station Info/Conference info text is updated. bp: Sounds off the PC's speaker on rcvd text. It sounds weak on Windows. stamp: Adds timestamp to received text. Timestamp is blocked on outgoing messages. trc: Trace. Enables info/errors to be written into the log file. NSM: (N)ew (S)tations are (M)uted. Audio packets from muted stations are dropped. Useful while broadcasting ARRL news or ISS news. TX/RX: tx/rx indicators. -R: Allow repeater connects. siRX: Station Info Receive. Allow the connected station's info to be received. Uncheck it when you run it as a CONFERENCE. BA: Bridge Audio. Enables the audio built-in bridge. If checked, any incoming audio from any station connected to you will be re-transmitted to all the other non-deaf stations connected to you. If not checked, incoming audio is not retransmitted to other stations. When you transmit, it does not matter if it is checked or not checked. Your audio will be transmitted to all non-deaf stations connected to you. BT: Bridge Text. Same as "BA" but it refers to text messages only. DL: It detects simple conference loops and it will mark the offending station(s) as deaf and mute. NSD: (N)ew (S)tations are marked as (D)eaf. Stations marked this way will not receive any audio. PTT: Check it once to TX, uncheck it to RX -L: Allow Link connects busy: Mark your station BUSY. Your station will be marked BUSY on the next login. siQTH: Display Station In QTH. If NOT checked, it keeps the node you are connected to, private. If checked, then your QTH is set to "In Conference ..." when you are connected to a node. It has no meaning when running in CONFERENCE mode. prv: Private. Only stations listed in Private list are allowed to connect to you. CNF: If checked, then your station is identified as a CONFerence to other stations. Some remote conferences will not allow you to connect to them if you are a conference yourself. In that case, uncheck CNF, wait 10 seconds and reconnect. If not checked, some Echolink stations replace the callsign of the original trasmitting station with the callsign of the connected station in the text chat box. In most cases, leave CNF unchecked. VOX: Operate the software using vox, instead of PTT. Also used to notify the software when audio arrived at the sound IN jack of the sound card. It works with the vox threshold. "Blue Bar": audio strength indicator. REC: Record QSO's The generated file contains compressed(GSM) audio data, and no GSM header. The program "playgsm" can playback the file. "slider": Sets a threshold for vox. The 4 Windows on the right of the screen: ========================================= Top left: Connected stations to your station Top right: The remote station's Information for each connected station. IRLP or Asterisk nodes do not send any station information. rtpDir has no control over that and does not save this info to a file. You can copy/paste it if you like. Some stations transmit this info during a QSO or every so often. You can stop it from coming in by unchecking the siRX checkbox. The station info changes when new station info is received. Middle: Screen log. If Trace is enabled, the screen log is saved to the log file. Bottom: TX/RX received chat text. Just below that: user text for transmission. REMOTE COMMANDS FOR ADMIN CALLSIGNS =================================== To control the bridge remotely, certain text commands can be executed against the bridge. There are 2 ways to do this: The easy way: ------------ Add the admin callsign to rtpDir bridge using Admin/Add menu option. Only the admin callsigns are allowed to execute remote text commands. Connect another rtpDir software or the the Echolink software to rtpDir bridge as an admin callsign. Now type a command in the text chat window. The command must be given in lowercase. If a command requires a callsign, enter the callsign in uppercase if it is an Echolink callsign, in lowercase if it is an IRLP node# or Asterisk node. The following commands are understood by the bridge: (Commands were changed to accomodate sysop control scripts). All commands return responses to the admin user. WARNING: There is one command that you should not use. That command is ".irlp_failure". It is used by the rptDir_IRLP_failure script which is called by the following IRLP scripts: /home/irlp/scripts/call /home/irlp/scripts/connect_to_reflector /home/irlp/scripts/on /home/irlp/scripts/on_to_remote /home/irlp/scripts/control It notifies the rtpDir bridge that the IRLP connect call has failed and that it should initiate clean-up without waiting for conxTimeout timer to expire. NOTE: The commands .cstn, .cref and .irlp_failure will not be processed by rtpDir bridge if accessIRLP=no Commands dont affect Asterisk nodes because Asterisk is not ready yet to accept commands from Echolink or IRLP nodes. Connect to an Echolink station by callsign example: .connect *ECHOTEST* Connect to an Echolink station by node number example: .cnode 9999 Connect to an IRLP node: example: .cstn stnXXXX example: .cref refXXXX where XXXX is the IRLP node# WARNING: Disconnect from IRLP first before you execute cstn or cref commands, otherwise IRLP gets confused. Disconnect from a station example: .disconnect *ECHOTEST* .kick *ECHOTEST* .dnode 9999 example: .disconnect stnXXXX .kick stnXXXX .dstn XXXX example: .disconnect refXXXX .kick refXXXX .dref XXXX where XXXX is the IRLP node# Disconnect all stations .disconnect all .kick all .dall Disconnect the IRLP node(s) only .disconnect irlp .kick irlp .dirlp Disconnect Echolink stations only .disconnect el .kick el .del Send a command to an Asterisk node .cast *32000 .cast *12000 .dstar number where number points to a D-star node pointed by the config variable remDstar. The number starts with 1. Special case: If number is 0, rtpDir will disconnect from the D-Star node. Administer the admin list .allow list .allow add *ECHOTEST* .allow delete *ECHOTEST* Show who is logged in as admin .admins Disable Echolink: stops timers, sets busy An incoming IRLP station can still make it thru. .disable Enable Echolink: starts timers, unchecks busy. .enable Note: To disable IRLP use your IRLP dtmf command to disable it. Lookup a station example: .lookup *ECHOTEST* Ban stations .ban list .ban add *ECHOTEST* .ban delete *ECHOTEST* Mute stations: show who is muted: .mute mute all stations: .mute -a mute a station: .mute ref9990 .mute *ECHOTEST* mute talker: .mute . Unmute stations unmute all stations: .unmute -a .unmute *ECHOTEST* .unmute ref9990 Mark stations as deaf: Show "deaf" stations: .deaf mark all stations deaf: .deaf -a mark one station deaf: .deaf *ECHOTEST* .deaf ref9990 mark talking station as deaf: .deaf . "Un-deaf" stations undeaf all stations: .undeaf -a .undeaf *ECHOTEST* .undeaf ref9990 Send a text message to all connected stations: .message test123 .save It saves changes to the 4 files(Books,Private,Banned,admin) .cnfo It turns on CNF checkbox .cnff It tunrs off CNF checkbox .busy on .busy off .version .refresh .uptime .stats Abort a connection timer in progress: .abort .users .shutdown set bridge audio on: .brvo set bridge audio off: .brvf set bridge text on: .brto set bridge text off: .brtf set NSM on: .nsmo set NSM off: .nsmf set NSD on: .nsdo set NSD off: .nsdf enable detection of conference loops: .dclo disable detection of conference loops: .dclf .record The record command is a toggle. It records into rtpDir_recorded.gsm from all connected nodes. (Asterisk, IRLP, Echolink). Use the command once to start recording, use it again to stop recording. If you forget to stop recording, you will run out of space. .play The play command is a toggle. It plays back the file rtpDir_recorded.gsm to all connected nodes, Asterisk, IRLP, Echolink. You can execute again to stop playing or let it finish playing back the whole file/announcement. .conx The conx command report nodes connected. Note: Average size of a recorded QSO is 20 KB per 10 seconds. Name format of a QSO file: rtpDir_recorded.gsm You may playback that file with playgsm. playgsm will use the default sound card to playback the file. The hard way(using netcat utility software) ------------------------------------------- This method is used mostly for scripting to control the rtpDir bridge without being connected to it. It is also used by IRLP when a dtmf sequence is received from the IRLP radio. The netcat(nc) utility software is used in this case, which it is mostly found on Linux/Unix systems, although there are versions of it for DOS/Windows. Also in this case, the rtpDir bridge will accept the commands sent to it this way, only if the netcat utility software was started on the same machine that the rtpDir bridge is running on. In other words, in order to use this method, you will have to log into the system, using the ssh tool which is a safe and secure way to gain access to the system and then run the netcat utility software. There are ssh versions also for DOS/Windows. One that comes to mind is PuTTY. After you've logged into the machine using ssh or PuTTY, Start the netcat utility software like this: nc -u -p 127.0.0.1 OR, if you do not want to get a response from rtpDir and only interested in sending commands to it then start it like this: nc -u 127.0.0.1 where is the value of txtCmdReplyPort found inside the 5198.conf and is the value of port found inside the 5198.conf file. Usually, you can execute the netcat utility software like this: (assuming you have not changed the default values inside 5198.conf) nc -u -p 6500 127.0.0.1 5198 OR, if not interested in rtpDir's responses to your commands: nc -u 127.0.0.1 5198 At this point the netcat software is waiting for commands. The remote text commands in this case have the following format: o. where o is just the letter o, which means you're sending text to the bridge and not audio and is one of the commands listed under the section "The easy way" NOTE: For the power user: ------------------- Each command can be put into a script that can be called from /home/irlp/custom/custom_decode file during IRLP operation while rtpDir is running in "Echolink + IRLP" mode and a dtmf is received from the IRLP radio. First, add a dtmf decode line to the file /home/irlp/custom/custom_decode. Here is a line in the file /home/irlp/custom/custom_decode that forces the execution of the script file rtpDir_EL_con whenever the IRLP radio user presses dtmf B3 plus some more dtmfs to connect to an Echolink node. # example B39999 will connect to Echolink node 9999, which is *ECHOTEST* if [ ${1#B3} != $1 ] ; then rtpDir_EL_con ${1#B3} ; exit 1 ; fi After you've added the above line to /home/irlp/custom/custom_decode file, create the script file rtpDir_EL_con and place it under the /home/irlp/scripts directory. The following are the contents of the script file rtpDir_EL_con =============================================================== #!/bin/bash rm -rf /tmp/rtpDir_EL_con.nc touch /tmp/rtpDir_EL_con.nc echo "o.cnode $1" > /tmp/rtpDir_EL_con.nc # port 5198 is the Echolink port nc -w 2 -u 127.0.0.1 5198 < /tmp/rtpDir_EL_con.nc # Last line must always be: exit 1, other wise IRLP may get "confused" exit 1 ===================================================================== and finally, set correct execute permissions for IRLP user repeater while still logged on as root, by executing the following commands, while you are in /home/irlp/scripts directory. chown repeater:repeater rtpDir_EL_con chmod +x rtpDir_EL_con chmod o-rx rtpDir_EL_con Examples: List the connected users: o.users Request a connection to an Echolink station by callsign: o.connect *ECHOTEST* Request a connection to an Echolink station by node number: o.cnode 9999 Request a connection to an IRLP station: o.cstn stnXXXX Request a connection to an IRLP reflector: o.cref refXXXX where XXXX is the IRLPnode# WARNING: Disconnect from IRLP first before you execute cstn or cref commands, otherwise IRLP gets confused. Disable Echolink: o.disable Enable Echolink: o.enable Shut rtpDir down: o.shutdown Start/stop recording: o.record (Records into rtpDir_recorded.gsm file Use it once to start recording, use it again to stop recording. If you forget to stop recording, you will run out of disk space). Playback a file: o.play (plays back the file rpDir_recorded.gsm) Get the version: o.version Find out when bridge last started: o.uptime Get the statistics: o.stats Report connected nodes: o.conx Disconnect an Echolink station: o.disconnect *ECHOTEST* OR o.kick *ECHOTEST* OR o.dnode 9999 Disconnect the IRLP node: o.disconnect stnXXXX OR o.kick stnXXXX OR o.dstn XXXX Disconnect an IRLP reflector: o.disconnect ref9990 OR o.kick ref9990 OR o.dref 9990 Disconnect the IRLP node(s) only: o.disconnect irlp OR o.kick irlp OR o.dirlp Disconnect Echolink nodes only: o.disconnect el OR o.kick el OR o.del Disconnect all stations: o.kick all OR o.dall Disconnect from the D-Star node: o.dstar 0 Disconnect and connect to a new D-Star node: o.dstar number (where smallest number is 1) Send a text message to all connected stations: o.message test123 Of course, IRLP nodes will not receive anything. and so on... When you're done with sending commands to rtpDir, Hit Ctrl-C on your keyboard. (Control-C) OPERATION ========= When the program is started successfully, you should see the status line(at the bottom of the screen) with: Logged in OK..., and soon after that it should say: Downloading station list....Download finished. Menu option "Help/Login msgs", will inform you if something went wrong. After 5 seconds or so(30 seconds for dial-up users), the list of stations will show under Conferences/Repeaters/Links/.... The initial download is a full compressed download, any download after that, is a differential compressed download, unless the server went down or you lost your connection. Operating as a PC STATION ------------------------- Start the software. Let it download the list of stations. Set the 2 timers(Login and Refresh). Choose a tab: Confs,Rptrs,Links,Users,Books. Double-click on a station. Choose "Connect". Wait till the station is connected or the connect timer expires. if not connected by then, you get a TIME-OUT message in the status line. Other reasons you can't connect: remote station is Busy, ... Set Busy(Check) if you dont want another user connecting to you while you are on a QSO. Operating as a bridge/Conference -------------------------------- Start the software. Let it download the list of stations. Set the 2 timers(Login and Refresh). Set BA ON and BT ON. Set prv ON or OFF. Set busy OFF. Operating as a Link with DTMF commands -------------------------------------- The following DTMFs can be sent from a mobile radio station or HT with a DTMF keypad: These are dtmfs coming from the Echolink radio. For dtmfs coming from the IRLP radio, inspect the file /home/irlp/custom/custom_decode. For Asterisk DTMF commands to rtpDir bridge, examine the file 5198.conf, they are configured using the configuration variable: ast_dtmf_cmd= - status command. Voice response can be one of: "CONNECTED", "NOTBUSY" - disconnect command to disconnect last connected station. Voice response is "DISCONNECTED", "NOTBUSY". - report who is on top. That is usually the last connected station or the station active in a QSO. Voice response can be one of: "NOTBUSY" or the callsign will be announced. - disconnect command to disconnect all stations Voice reponse is "DISCONNECTED". - enable/disable NSM Voice response is "ENABLED" or "DISABLED" - enable/disable NSD Voice response is "ENABLED" or "DISABLED" - enable/disable detection of conference loops. Voice response is "ENABLED" or "DISABLED" - enable Bridge Audio on/off Voice response is "ENABLED" or "DISABLED" - busy command toggles busy on/off. Voice response is "BUSY" or "NOTBUSY". - Abort a connection Voice response is "ENABLED" or "ERROR" if a connection timer is active on an IRLP station. - disable command to disable the system. Stops login timer, stops refresh timer, sets Busy and disconnects users. Voice response is "DISABLED". - enable command to enable the system. Restarts timers(login and refresh) and unchecks Busy. Voice response is "ENABLED". - shutdown to shutdown the system. The software is 100% event driven, so it is possible that the shutdown action may occur before it has the chance to send the voice response "SHUTDOWN". - connect by CALLSIGN or by node Voice response is one of: "NOT FOUND" if station not in the list "ERROR" if the station you're trying to connect to, did not pass the tests, explained below. "CONNECTING TO..." if a connect request was initiated. "TIMEOUT" if the connect request timed out. "BUSY" if remote station is busy "ACCESS DENIED" if remote station has disallowed access. "CONNECTED" if a connection is made. - disconnect by callsign Voice response is one of: "NOT FOUND" or "DISCONNECTED" "NOT BUSY". - Any other DTMF string is invalid and you will get the "ERROR" voice response. The voice response "ERROR" requires some explanation. You will receive "ERROR" under these circumstances: - Trying to connect to your self. - Trying to connect to a node that is already connected to you. - Connection is already in progress. - You've reached capacity of your node. - You had previously set your station to Busy. - You are trying to connect to a banned station. - You have set your station as private and trying to connect to a node that is not listed in your private list. - You are trying to connect to a node identified as -R or -L but -R or -L connections are not allowed to your node. - The node you are trying to connect to, is assigned to a CALLSIGN with a prefix that is not included in the prefix list. (Country code validation). - You're trying to abort a connect request that was made to an IRLP station. - The DTMF command you've sent is unknown. - The DTMF command is too short. NOTES ===== --- Some of the functionality has been removed from rtpDir bridge when running it as an IRLP reflector. For example, an IRLP reflector will not initiate connect requests to IRLP nodes. An IRLP reflector can not really request that an IRLP station disconnect permanently from the system, the best it can do is, disconnect the IRLP station temporarily but within 7 seconds the remote IRLP station can re-connect unless it has been banned from the reflector. --- If a station requesting to connect, has an IP address that matches one of the stations already connected, that new station will be allowed to connect, but it will be marked as DEAF & MUTE. This will be forced even if the new station's callsign or node# does not match any of the connected stations. --- When running rtpDir as Echolink + IRLP, you will see your own IRLP node on the CONNECTED screen along with the remote IRLP node. --- Multi-conferencing is built-in and always enabled but check the meaning of the CNF checkbox on the screen. --- If at least one station is connected to your station, then your name will be set to "( )" if one of the connected stations to your station is transmitting while you remain connected to a station or conference, where is the station's callsign that is transmitting. This is so that other stations will know who is transmitting from your station and is also used for detecting conference loops. --- If you get a message "Could not start rtpDir,error ...", one or both 5198,5199 ports are locked or in use by another software. Run netstat on Unix to find out which software has locked that port. On DOS, seek the advice of an expert. Or it maybe that you are NOT using 0.0.0.0 for myIP address and the machine is behind a router/firewall. Or the getlist(getlist_win) program is running. Stop it. --- If you get the message "Failed to create IRLP data/control socket" or "Failed to bind IRLP data/control socket", then some IRLP port(s) have been locked by another software. The IRLP ports that rtpDir will try to use are listed in the rtpDir configuration file as irlpPort. (irlpPort + 1) will also be used by rtpDir. Most probably you have not made the required changes as listed in this domument above under the section "Additional steps if you plan to run rtpDir as Echolink + IRLP". Or it maybe that you are NOT using 0.0.0.0 for myIRLP_IP address and the machine is behind a router/firewall. --- If you get the message "Trying to open SoundCard device" but not "SoundCard device opened OK" immediately after it, then the sound card device is not configured right and program may hang trying to open it. On Linux, you must re-configure the sound card using the ALSA utilities. That will certainly fix the problem. On DOS, remove the sound card, look at it, put it back and pray it will work next time. --- If you get the message "socket still trying to connect...restarting" or "connect failed,..." with codes like 10060,110(timeout), 10061,111(connection refused), then one of the servers in the configuration file is busy with a lot of requests from other stations. In this case, rtpDir will try the next server in the configuration file. If you get the code 10035,11=try again/would block, the station Info text was not sent and that is a temporary condition, it will be re-sent immediately after that. In general, we are not translating error codes to message text. Depending on the Operating system/development tools that you have installed, consult the file errno.h on Linux which points to /usr/include/asm-generic/errno-base.h and /usr/include/asm-generic/errno.h and on Windows winerror.h or winbase.h or some other include file that points to another file which translates codes to message text. --- If you get the message "gsm_decode failed...", you have interference from another close-by device or the connection is somehow bad or parts of the message got distorted during transfer. You might still get good audio from the remote station or not. Either way the error will go away or try to re-connect. --- If you get the message "Download is active...please wait", rtpDir is using the getlist program to download the list of stations and another request to download became active. Nothing to worry about, the download will proceed normally or it will time out and the next server will be used. Download or Login requests will not be allowed to pile up. --- Login/Download failures are always restarted on the next server in the configuration file. --- Connecting from a mobile or HT, please key up for 2-3 seconds. before TXing. --- No log file rollovers yet, disable the trc checkbox if you do not want the log file to get bigger, or not interested in capturing daily activity of rtpDir bridge to a log file on disk. The log file on disk is 5198.log --- If a user is rude or not following part 97 rules, you have a choice of banning(no connects are allowed) or muting(no audio packets from that source). --- If EL_login=no, this assumes that you want to run a private network, so no Echolink logins/downloads are allowed and you will have to prepare the local file stnFile.txt and distribute it to the users of the private network. In this case, you can choose any port value you like in the configuration file. --- If soundCard=no, then the serial port is not opened either, so no radio control will be attempted. --- If running rtpDir with a *CONFERENCE* callsign the sound card device will not be opened. --- If the DNS nameservers point to invalid IP addresses, program may hang when trying to do File/Shutdown or it may hang trying to access the Echolink servers. --- The software getlist_win or getlist for Linux systems downloads/decompresses the station list after a successful login. The temporary compressed file can be found in the QSOdir, with file name rtpDir_stns_.tmp A zlib utility, zpipe, can be used to decompress the file. Run zpipe like this: zpipe rtpDir_stns_5198.tmp zlib was developed by the authors of zlib software. File/LoginTimer & File/RefreshTimer menu options ================================================ If you have not logged on, in the last 7-8 minutes, EchoLink will drop you off the list and any downloads after that will fail. The download will fail and you will get the message: (along with bogus IPaddress of 127.0.0.1 and bogus Node numbers). ************ NOT LOGGED IN Because of a system problem, you are not currently logged in. Please wait several minutes for the server to reset. +++ *********** That is from our own observations. So use a LoginTimer of no more than 7-8 minutes, 6 is best, if you can. The Refresh Timer is optional, you can set it to 0 to disable any downloads in case you want to do the manual download using the menu option File/LoginRefresh. If you prefer to have automatic downloads, dont set it to a small number, set it to 5 so that the differential/compressed download would work the best. The differential/compressed download will only bring in new stations or stations that changed their location info or IP address since your previous download and any stations that logged off the system will be dropped off the list. It takes up to 5 seconds for full compressed download and up to 2-3 seconds for differential/compressed download. We were informed that Echolink will drop older methods of downloading and only the compressed methods of downloading will be valid in the future. Creating your own CW ID announcement ===================================== To create a gsm file that contains CW code run cwgsm like this: cwgsm -w 7 -f 200 -e < cwid.txt where cwid.txt is the English message text. cwgsm will create a file cwid.gsm You can play back the file with playgsm. To make sure CW/Morse works with rtpDir, some changes were made to allow for 16-bit code, no access to sound card, generation of GSM files and to run on both Linux and Windows. cwgsm is a modified version of Morse software. Contact the author of Morse software for details. About GSM files: ================ Files with extension .gsm are headerless gsm files that can be manipulated with any software that can process headerless gsm files. We believe libsndfile could do that. We decided to use gsm_encode and gsm_decode since RTP protocol is using that. Contact the authors of gsm_encode/decode for more details. Contact the authors of libsndfile for more details. TODO LIST ======== Any bugs or comments, email us at yahoo group rtpDir. For more info, go to yahoo group rtpDir at http://tech.groups.yahoo.com/group/rtpDir/ COPYRIGHTS ========== For information on *Asterisk*, contact www.asterisk.org/about Asterisk® was created by Mark Spencer of Digium, Inc. For information on *Asterisk* contact www.asterisk.org Copyright (c) 1988 Regents of the University of California. Copyright (c) 1992 Joe Dellinger, University of Hawaii at Manoa Copyright (c) 2005 Eric S. Raymond. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Copyright 1992 by Stichting Mathematisch Centrum, Amsterdam, The Netherlands. All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the names of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Copyright (c) 1999-2006 Phil Burk and Ross Bencina Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann, Technische Universitaet Berlin Any use of this software is permitted provided that this notice is not removed and that neither the authors nor the Technische Universitaet Berlin are deemed to have made any representations as to the suitability of this software for any purpose nor are held responsible for any defects of this software. THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE. As a matter of courtesy, the authors request to be informed about uses this software has found, about bugs in this software, and about any improvements that may be of general interest. Berlin, 28.11.1994 Jutta Degener Carsten Bormann zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.3, July 18th, 2005 Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). Copyright (c) 1999-2007 Jori Liesenborgs Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.