This file describes the change history for dplus v 2.2m: Fixed gateway to gateway linking. v 2.2l: Added user blocking by callsign/IP/serialnumber. Added support for new DV3K Dongle and DVPi. v 2.2k: Increased the user record maximum count. Fixed support for 1x1 special event callsigns. Recognize INIT packet from RP2C controller. v 2.2j: There were quite a number of admins with very flakey internet connections so dplus was changed to not abort on complete internet failure. Gateway IP updates are checked every 30 min and ref update checks are every 60 min. The callsign stream headers are now sent at the beginning of the stream and throughout the stream so the audio appears immediately after a link (no more waiting after linking to see if someone is talking). Gateways may now link multiple modules to the same reflector module. This should help clubs that wish to run weekly nets from all of their modules. v 2.2i: Moved reading of users.txt and gateways.txt to a new thread. This prevents link drops on systems that are not built to minimum spec. The reading of these files has moved from every hour to every 30 minutes. Fixed script execution function. Prevent dplus from exiting if the gateway internet connection is unavailable during reflector discovery. Note that the internet connection is still required when dplus is starting. v 2.2h: Changed reflector discovery code so it will dynamically find new reflectors and changed IP's without restart. The reflector limit moved from 50 to 1000 as a result. Added support for modules D (for repeaters with that or for data/d-rats testing) and E (for remote Echotest). You can now test your internet connection by linking to a remote gateway's module E and keying up with an echo test (using CQCQCQ in urcall). Don't forget to unlink! :) Also, DV Dongle users will be able to run echo tests through a connected gateway using module E. This will require DVTool-2.0beta5 or later. Some of the messages printed to dplus.log have been shortened. I'm trying to cut back on the volume in that log file. Note that this will require new versions of monlink, dplusreport, and others that parse the logs. v 2.2g: Added GPS sentence parsing with streams from radios that support GPS. Both GPS and GPS-A modes are supported. The parsed GPS sentences are logged to dplus.log along with a "gps spot" entry that can be cut and pasted into google maps for position reporting. Also, any user with a valid GPS sentence will show up in the last heard list with their callsign as a link to google maps with their position. Note that these GPS spots are not reported to APRS since DStarMontior already does that. Added the ability to use " E" in URCALL for echo test, " I" for ID, and " SX" for script execution. This allows users to avoid having to enter the repeater callsign at the beginning of URCALL for those functions. Added duplication of the header of streams to help avoid the "black hole" effect. Added an end of stream status packet and receiver feedback packet. These are reported as "TX stream status" and "RX stream status" respectively. Both sides of a stream can now determine how many packets were lost during a transmission. Added a "XXXXXXXX Linked" message to the "Remote system linked" and "ID" voice messages. Now when you link or run an ID command when you are linked, you can see to where you are linked. Added other status messages to voice messages such as "Unlinked" and "Remote system busy". Added DVREC file format support. This is a new recorded capture file format that is used by the DV Access Point Dongle. You can now record system voice messages with the DVAP and copy them to the gateway for playing. They work just like the DVTOOL files but have an extension of ".dvrec" instead of ".dvtool". These files are ascii readable and editable (if you know what you are doing :). For example, to play the file hourlyid.dvrec, copy it to /dstar/tmp/play-c.dvrec to play it on module C. A new utility, drecord, is also available to record all conversations on a gateway in the dvrec format. You can copy these recordings to a PC/Mac running DVAPTool for playback. Added the ability to replace the user message within a recorded dvrec/dvtool file on the fly. If you have a dvrec/dvtool file that you'd like to play with a new message, simply create the message in the file /dstar/tmp/play-c.dvmsg before copying the recorded file in (play-a b and c are for those modules). The dvmsg file should be exactly 20 characters (21 including the newline). Added support for up to 10 auth/name servers. This provides redundancy so there is no single point of failure. Two servers are currently running in production in geographically diverse locations. The auth/name servers were modified to notice when dplus is (re)started and immediately try to contact the gateway to verify connectivity. You should no longer have to wait for up to 60 seconds before linking. v 2.2f: Added support for DV Access Point Dongle (DVAP). Added several environment variables that are passed to scripts that are executed with the "X" command. Variables include: MODULE (module from which the execute command originated) MYCALL (callsign of user requesting execution) MYSUFFIX (callsign suffix of user requesting execution) URCALL (urcall field used to execute script) RPT1 (rpt1 field used to execute script) RPT2 (rpt2 field used to execute script) MODULELINK (gateway/reflector to which the current module is linked or "unlinked" if not linked) MODULELINK_A (gateway/reflector to which module A is linked) MODULELINK_B (gateway/reflector to which module B is linked) MODULELINK_C (gateway/reflector to which module C is linked) DVDONGLES (comma separated list of currently connected dongle user callsigns) DPLUS_VERSION (current version of dplus) GWCALL (current gateway callsign) Extended the wait between the last conversation end and playing a voice message file from 1.5 seconds to 5. Fixed constant re-reading of bad linkfile command. Ignore dup headers from inbound streams. Fixed handling of entries in the "deniedusers" section of dplus.conf. Users in "deniedusers" section of dplus.conf can no longer link. Forwarded stream headers now duplicated to reduce "black hole" effect. No longer print bad packet source messages into log. v 2.2e: Fixed problem with parsing maxtextfilesize in dplus.conf. Added end to end voice packet authentication. Added fast dynamic IP address change reporting. This provides a mechanism to notice gateway IP address changes within 5 minutes. A new program will be out shortly to make use of this new functionality. v 2.2d: Fixed problem with printing the last heard list on the dashboard web page. Fixed simulcast functionality. Added new link blocking capabilities. Use the following to create the new text files: touch /dstar/tmp/blocklinking touch /dstar/tmp/blocklinking-a touch /dstar/tmp/blocklinking-b touch /dstar/tmp/blocklinking-c touch /dstar/tmp/blocknetlinking touch /dstar/tmp/blocknetlinking-a touch /dstar/tmp/blocknetlinking-b touch /dstar/tmp/blocknetlinking-c The first four lines block all linking (both RF and net) for all modules or individual modules respectively. The last four lines block inbound linking from the internet for all modules or individual modules respectively. Added new file transmit capabilities over the data stream. Use the following examples to transmit data to a specific module: cp somefile /dstar/tmp/text-a cp somefile /dstar/tmp/text-b cp somefile /dstar/tmp/text-c The default maximum file size is 3750 (30 seconds worth of data). The default maximum file size can be increased to 22500 (3 minutes worth of data) by adding "maxtextfilesize=22500" in the config section of dplus.conf. Message and text files are transmitted with a mycall of the repeater and a mycall suffix of "LMSG" and "LTXT" respectively, showing that it is local. To send messages or files to linked gateways/reflectors and to DV Dongle users, use: cp somefile /dstar/tmp/broadcastmessage-a cp somefile /dstar/tmp/broadcastmessage-b cp somefile /dstar/tmp/broadcastmessage-c cp somefile /dstar/tmp/broadcasttext-a cp somefile /dstar/tmp/broadcasttext-b cp somefile /dstar/tmp/broadcasttext-c Messages are limited to 20 characters and show up on the face of D-Star radios and DV Dongles. Text is transmitted in the data stream and can be seen on the serial port of radios and the DVTool data tab for the DV Dongle. Broadcast message and text files are transmitted with a mycall of the repeater and a mycall suffix of "BMSG" and "BTXT" respectively, showing that it is broadcast. Increased the hard maximum of concurrently connected users/links. Enhanced security to various functions. The maximum registered user count has been increased from 10000. v 2.2c: Fixed problem with custom URL for status web page. Added the ability to unlink a module from a different module. For example, to unlink module C using module B on W4DOC, use "W4DOC CU" in urcall when keying up on module B. Use the repeater callsign in characters 1-6 of urcall followed by the module you'd like to unlink followed by 'U' for unlink. Updated the linking API. Users running 2.2b or earlier must upgrade to link to 2.2c or later. Reflectors will accept any version for now but will be updated to the new API shortly. v 2.2b: Added the ability to block linking/unlinking, either for all modules or for individual modules. Use the following to create text files: touch /dstar/tmp/blockrflinking touch /dstar/tmp/blockrfunlinking touch /dstar/tmp/blockrflinking-a touch /dstar/tmp/blockrfunlinking-a touch /dstar/tmp/blockrflinking-b touch /dstar/tmp/blockrfunlinking-b touch /dstar/tmp/blockrflinking-c touch /dstar/tmp/blockrfunlinking-c The first two lines create blocks for linking/unlinking on all modules. The final six lines create blocks for individual modules. You can use cron to block/unblock for time slots. New control variables allowadminunlinkingonly, allowreguserlinkingonly, allowreguserunlinkingonly have been added. The first allows control over unlinking and the final two add the ability to allow linking/unlinking by registered users only. The default now is to only allow registered users to link but anyone can unlink. URL field added to dplus.conf for those admins that choose not to use the default XXX.dstargateway.org URL. The file /dstar/tmp/dvdonglemessage has been added. The text in this file is sent to DV Dongle users when they connect. The file /dstar/tmp/status now contains last heard entries. The status.html file now extends the last heard list to 24 hours. Added additional DV Dongle user authentication functionality. Fixed a problem with user message updates from transmissions where bad headers were replaced by the controller. v 2.2a: Fixed problem where failed link attempt caused message to be played on wrong module. Fixed permission issue that would allow remote clients to transmit when told not to. Added security to prevent/allow DV Dongles by serial number. Updated authentication /security subsystem for remote clients. Added the ability to send text messages to local RF users, similar to playing audio to local RF users. For example, "echo HelloWorld >/dstar/tmp/message-c" will send the message HelloWorld to local module C. Note that the text message is not played to linked systems nor DV Dongles. Added a web page to provide local status. Replace Dstar.do with status.html in your registration URL to see the status. If you have not created an index.html for your gateway, the install script will automatically link it to the status page. v 2.1e: Finally found the problem that caused linked gateways to hang in transmit for a couple of seconds after each unkey. It should be much faster and cleaner now. User messages are now printed in the dplus log file. These are the 20 character messages that you put in your radio. Also, the voice/data stream includes the dstar header duplicated so this is also printed in the log file. Missed packets are now displayed and counted in dplus. The end of stream messages in the logs now include the total packet count and the number of missed packets. This should help admins to determine if they are having internet issues. The missed ping messages are only printed once per second now. Stream IDs are now printed in hex. v 2.1d: Increased the file play time limit from 30 seconds to 3 minutes (which is the same limit as the controller). Increased the limit of 10 reflectors to 50. Added the ability for users listed in the adminusers section of dplus.conf to execute pre-made shell scripts via a radio. To use this new feature, create a shell script like /dstar/scripts/exec-0.sh and make it executable (chmod +x exec-0.sh). A script like: #!/bin/bash cp /dstar/tmp/id.dvtool /dstar/tmp/play-b.dvtool exit 0 would copy your prerecorded ID to module b when you key up using "XXNYYY0X" in urcall where XXNYYY is your repeater callsign (e.g. "W4DOC 0X"). Remember to use the gateway in RPT2. Note that you can make shell scripts using characters A-Z and 0-9 so exec-A.sh would be invoked using "XXNYYYAX" in urcall. Gateway admins that change the default "*;;ro" in [allowedusers] to "*;;rw" are now prohibited from linking both inbound and outbound. This eliminates the situation where a local admin can allow non-authorized DV Dongle users to transmit while the gateway is linked. Users are prevented from linking two modules on the same system to the same module on a reflector now. v 2.1c: Fixed problem where streamcache entries were depleted by missing end of stream packets from users. Changed the way the info urcall works to allow querying of link status. If you now use "XXNYYY I" as urcall (where you substitute your repeater callsign), it will play /dstar/tmp/id.dvtool if not linked and if linked it will play /dstar/dv/remotesystemlinked.dvtool. Added a status file as /dstar/tmp/status that shows the current status of dplus. The status file shows dplus version, connected dongle users, and linked modules. v 2.1b: Added support for up to 10 reflectors. Needed for REF005-6. v 2.1a: Fixed dongle user reporting glitch. v 2.1: Added support for linking new multi-gateway reflectors. Fixed some collector logging code for reporting dongle users to dstarusers.org. Added the ability to link and unlink from the Linux command line on gateways. Examples: echo "REF001CL" >/dstar/tmp/link-b to link your local module B to reflector module C echo " U" >/dstar/tmp/link-b to unlink your local module B from any gateway/reflector Do not link multiple local modules to the same remote module. You can link local modules to separate remote modules on the same or different reflectors/gateways. As with 2.0, you cannot link the same local module to multiple remote gateways/modules. This avoids undetectable linking loops. Use the reflectors for this function. v 2.0: Support for G2 release of Icom gateway software. Split the table reading function out to a separate executable dplus-readdb which creates text files /dstar/tmp/gateways.txt and /dstar/tmp/users.txt. These files are created hourly by execution of dplus-readdb by dplus. Files /dstar/tmp/extragateways.txt and extrausers.txt are downloaded during installation and when dplus is started using "service dplus start". These extra files are no longer updated since they include version 1 gateway data only. Restart dplus using "service dplus restart" and stop with "service dplus stop". v 0.104: Added linking to reflectors and other gateways. Only one link can be made from a module at a time (but each module can link to another reflector or gateway). Urcall is used to link with "XXNXXXML" for linking and "XXNXXXMU" or " U" for unlinking (where XXNXXX is the remote reflector or gateway callsign, "M" is the module you are linking TO, and L or U is for linking or unlinking). Note that dplus.conf has a new control field "allowadminlinkingonly" which, if set to 1 will allow only those in the "adminusers" section to link and if set to 0 will allow any user to link. If "linknotifyminutes" is set to a non zero value, an announcement will be played after the indicated number of minutes using /dstar/dv/remotesystemlinked.dvtool for audio. DV files added to the /dstar/dv directory are: alreadylinked.dvtool alreadyunlinked.dvtool gatewayunknown.dvtool reflectorunavailable.dvtool remotesystembusy.dvtool remotesystemlinked.dvtool remotesystemunlinked.dvtool Also added is the ability to specify the ethernet device for internal and external interfaces using internalethernet and externalethernet fields in the dplus.conf config section. If you are manually installing dplus, get "dplus", "dplus.conf", and "dplus-audio.tgz". Extract dplus-audio.tgz into /dstar/dv. Brian (NJ6N) has an automatic installer that can also be used. v 0.103: Added dongle user authentication via MNG file lookup. This prevents admins from having to add every user with a pin to allow transmit. If a user is not registered in the gateway, the admin will have to add them to the dplus.conf file to permit transmit. This provides the fix for the "what if a dongle user isn't a ham" problem. v 0.102: Fixed parsing partial MNG file. This had the potential to cause a buffer overflow. v 0.101: Added the ability to allow all users to transmit via the dongle using "*;;rw" in the allowedusers section of the dplus.conf file. This is the first release candidate for version 1.0 of dplus. v 0.100: Added dongle support configuration and more gateway linking code gateway admins may now configure the maximum number of dongle users as well as which users may connect and transmit on their system. Added "XXNXXX I" urcall value to request playback of gateway ID if if exists in /dstar/tmp/id.dvtool. You can record your repeater ID by running an echo test "XXNXXX E", say your repeater ID, and then move the file /dstar/tmp/echo.dvtool to /dstar/tmp/id.dvtool. This is a good companion to the echo test so you can now see how well you are hearing the repeater. Place dplus.conf in /dstar/tools along with dplus and edit to taste