thelinkbox
所属分类:视频会议
开发工具:C
文件大小:0KB
下载次数:0
上传日期:2022-08-27 01:15:12
上 传 者:
sh-1993
说明: Ham无线电中继器控制器Voip链接应用,
(Ham radio repeater controller Voip linking application,)
文件列表:
COPYING (17992, 2022-08-26)
ChangeLog (73680, 2022-08-26)
Debian/ (0, 2022-08-26)
Debian/install (217, 2022-08-26)
Debian/tlb (1268, 2022-08-26)
Debian/uninstall (252, 2022-08-26)
FreeBSD/ (0, 2022-08-26)
FreeBSD/install (200, 2022-08-26)
FreeBSD/tlb.sh (372, 2022-08-26)
FreeBSD/uninstall (205, 2022-08-26)
Makefile.am (1734, 2022-08-26)
RedHat/ (0, 2022-08-26)
RedHat/install (703, 2022-08-26)
RedHat/tlb (1431, 2022-08-26)
RedHat/uninstall (416, 2022-08-26)
SCRIPTING.txt (9361, 2022-08-26)
TODO (3300, 2022-08-26)
adpcm/ (0, 2022-08-26)
adpcm/Makefile.am (351, 2022-08-26)
adpcm/adpcm.c (7414, 2022-08-26)
adpcm/adpcm.h (719, 2022-08-26)
adpcm/copyright (1092, 2022-08-26)
bootstrap.sh (326, 2022-08-26)
cm108.conf.sample (19780, 2022-08-26)
common/ (0, 2022-08-26)
common/Makefile.am (482, 2022-08-26)
common/avl.c (24035, 2022-08-26)
common/configfile.c (11236, 2022-08-26)
common/main.c (32495, 2022-08-26)
common/ntservice.c (9331, 2022-08-26)
configure.in (5613, 2022-08-26)
gsm/ (0, 2022-08-26)
gsm/Makefile.am (409, 2022-08-26)
gsm/copyright (678, 2022-08-26)
... ...
# Welcome to thelinkbox, a member of the CQiNet family.
https://github.com/skiphansen/thelinkbox
Support: https://groups.io/g/thelinkbox/topics
Thelinkbox is an voice over IP (VoIP) radio linking package for ham radio
operators that runs under FreeBSD and Linux, and hopefully other Posix
compatible operating systems. It does not and probably never will run
under Windows.
Thelinkbox is basically thebridge conferencing software with additional code
to interface to radios. Although the primary purpose is for VoIP linking of a
limited number of repeaters "off grid", i.e. separate from the EchoLink and
IRLP networks it can also be used on the Echolink or IRLP networks when
properly configurated.
Unlike some other VoIP systems thelinkbox also supports multiple radio
ports. The ultimate goal is for thelinkbox to become a full featured
multiport hub or repeater controller as well as a VoIP application. I
believe the use of USB audio dongles under Linux will allow a modern
PC to support a larger number of radio ports than are likely to be
needed by even the largest repeater groups (> 16 ports), although I
have yet to test the limit in practice.
Here are some features:
1. Support for multiple simultaneous connections using different
codecs and protocols. Currently tlb supports ADPCM and GSM codecs and
the Echolink, RTP, and Speak freely protocols. When multiple sources
are active the audio is mixed.
2. The number of VoIP connections is limited only by system RAM and
available bandwidth.
3. The number of physical radio ports is limited only by available hardware,
OS hardware support and CPU processing power.
4. All ports are completely independent: Each port may have a unique
set of DTMF commands. Each port can be connected to a distinct VoIP clients.
5. A full cross point matrix of connections between VoIP clients and
RF ports is supported.
6. Does not require the use of a central server or authentication
authority, all that is required is internet connectivity.
7. Support for either prerecorded PCM audio announcements or external
text to speech systems such as Festival.
8. CW and voice IDs.
9. Flexible general purpose telemetry tone generator that can be assigned
to various events and/or used by scripts.
10. "Permanent" connections, if a link is lost tlb will keep trying to
reconnect indefinitely.
11. Builtin software based DTMF and CTCSS encoders and decoders.
12. Open source software written in C and C++.
13. Support for inexpensive USB audio dongles including PTT,
COS and CTCSS sense and frequency control.
## Updating from previous versions of thelinkbox
New versions of thelinkbox are usually backwards compatible with configuration
files from earlier releases HOWEVER new configuration file variables are added
frequently. Since the sample tlb.conf.sample file includes documentation on
features which are not mentioned elsewhere it is worthwhile to review the
sample configuration file with each release to discover new capabilities which
you may want to take advantage of.
## Portability
A quick word on portability: I've tried to the best of my ability and means
to make thelinkbox as portable as possible. I've tested it under several
versions of FreeBSD and Linux, however *ALL* testing has been on the Intel x86
architecture.
I've found that sound programming on Linux platforms can be very problematic.
Results are very dependent on the sound board and its driver. At least 50% of
the sounds cards I've tested with had some issues that required special
workarounds such as extra driver options. Additionally for portability
thelinkbox uses the OSS sound system API supported by many platforms, not the
Linux specific ALSA sounds system. Luckily the ALSA sound system includes an
emulated OSS API for backwards compatibility.
At this time the USB subsystem is Linux specific. I tried to make the USB code
portable by using libusb but I've run into a show stopper on FreeBSD, namely
if the USB audio device is claimed by the kernel's audio driver then libusb
is unable to access the device.
## Building on a *nix:
Executive summary: (the usual)
"tar xzf thelinkbox-{VERSION}.tgz"
"cd thelinkbox-{VERSION}"
"./bootstrap.sh
"./configure" (or "./configure --enable-usb")
"make"
"make install"
### Requirements:
The only known requirement to build thelinkbox is the GNU GCC C compiler, the
GNU GPP C++ compiler or something compatible, a make program and a Bourne
shell to run the configure script. GNU make is not required, any old make
should be fine. I tried to avoid the use of exotic compiler features,
hopefully any version of GCC will work.
On Debian, and perhaps other distributions:
apt-get update
apt-get install build-essential automake
If for some reason either configure or the make should fail please
send me the details and I'll try to help you correct the problem.
Extract:
The distribution tar file extracts into a version specific subdirectory so
different releases do not conflict with each other. Substitute the actual
version number for "{VERSION}" above. The ".tgz" extension signifies a
Gzip'ed TAR file.
GNU configure:
Thelinkbox uses a GNU autoconfig generated configuration script to generate a
site-specific Makefile that is then used to build thelinkbox. The configuration
script is written to be as portable as possible by only assuming the
availability of the most generic Bourne shell features. A suitable shell
should be available on just about every *nix system. It will certainly be
available on any system using other GNU tools.
The configuration script provides a great deal of flexibility in the way
the target program is built and installed, run "./configure --help" for the
gory details. Luckily most of the features are seldom needed and running
configure without any options is usually sufficient.
If you want to use an USB audio dongle for an interface specify the
--enable-usb option when you run configure. In this case will need to have
the libusb and it's header files installed on your system.
If you have the GNU readline library (libreadline) you can configure to tlbcmd
to use it by specifing the --with-readline switch. The readline library
adds features such as command history and curses based line editing tlbcmd and
tlbchat.
Once the configure script has been run you should have a config.h and Makefile
appropriate for your system.
Make:
The generated makefile provides several useful targets, the default "all"
builds thelinkbox and utilities. The other frequently used targets include
"install", "clean", "distclean", and "uninstall".
There shouldn't be any errors or warnings displayed during the build process
for the core source files. I've included several open source libraries with
thelinkbox to try to prevent "dependency hell", some of those libraries
generate warnings. If you get warnings or errors in the core source files
I'd be interested in hearing about them.
The final output of the build process is the thelinkbox daemon "tlb" which is
built in the linkbox subdirectory. We'll test it before installing it.
Before we test it we need to edit the configuration files.
## thelinkbox Configuration
A least two text files "tlb.conf" and "tlb.cmds" that are needed to configure
thelinkbox. The first file can contain all of the configuration necessary
other than the mapping of DTMF digits to actions that are taken when the
DTMF digits are received. The second file contains the mapping of DTMF digits
to commands.
The port configuration can be included in the main file if desired, but
it's probably cleaner and less confusing to have one configuration file
per port. The port configuration files are then included from the main
configuration file by use of the "include" directive.
The files files "tlb.conf.sample" and "tlb.cmds.sample" are provided as
a starting point for your configuration files. Since the sample files
include documentation on features that are not mentioned elsewhere it is
worthwhile to review the sample configuration file with each release to
discover new capabilities which you may want to take advantage of.
There are sample port configuration files for compatible interfaces included
in the release, just make N copies of that file that matches the type
of interface you will be using and them modify them as needed.
Fire up your favorite editor and change the various variables to appropriate
values. Refer to the comments in the file for guidance.
cd /usr/local/etc
cp tlb.conf.sample tlb.conf
cp tlb.cmds.sample tlb.cmds
cp iMic.conf.sample Port1.conf
vi tlb.conf
vi tlb.cmds
vi Port1.conf
cp irlp.conf.sample Port2.conf
vi Port2.conf
cp cm108.conf.sample Port3.conf
vi Port3.conf
Lines beginning with ';' or '#' are comments, if you decide to set any of the
optional settings be sure to delete leading ';' character before the
configuration variable.
Since daemons are not connected to any console they must communicate with
the sysop in some other manner. As with most *nix daemons thelinkbox can use
the syslog system. Thelinkbox uses "LOG_LOCAL5" as the facility when opening
the log and generates messages with priorities LOG_INFO, LOG_WARNING and
LOG_ERR. It's up to the user to decide which message if any he wants to log,
but unless you are a psychic I would strongly suggest that at least the LOG_ERR
messages be logged.
Thelink box can also generate a local log file without using the syslog system.
This has many advantages and is the recommended method. The configuration
file variable LogFileRolloverType controls the logging method.
## Determining physical USB Addresses
If you are not using multiple USB audio dongles you can safely ignore this
section.
Since most USB audio dongles do not have a unique serial numbers we must
resort to configuring thelinkbox using physical USB addresses. This means
the physical port on the PC or USB hub that the USB audio dongle is plugged
into determines the configuration address. Unfortunately it is not
easy to determine this address without more documentation than is usually
available for PCs. Even if documentation were available determining the
correct address would be tedious and error prone.
Luckily there's an easier way!
1. Configure thelinkbox for a single USB port. Do no specify either
AudioDongleSN or AudioDongleAdr.
2. Connect a compatible dongle to ONE port you wish to use. It's easy for
the linkbox to find the port to use when there's only one dongle by searching
all USB buses until a device is found.
3. Start thelinkbox in debug mode. Hopefully thelinkbox will find the dongle
and display it's address. Make a note of the address displayed. A sticky
label next to the port might be a good idea.
[root@localhost ~]# /root/tlb -d -f /home/skip/tbd/tbd.conf.440
thelinkbox Version 0.13 compiled Dec 14 2007 16:24:36
16:40:07 thelinkbox V 0.13 compiled Dec 14 2007 16:24:36 initializing
16:40:07 EndPointInit: Initializing 440 port (0)
16:40:07 EndPointInit: called, TxKeyMethod: 5, RxCosMethod: 6
16:40:07 UsbInit: found USB device @ 1-1.2
16:40:07 UsbInit: USB audio device for 440 is /dev/dsp2
16:40:07 UsbInit: Changing audio device from auto to /dev/dsp2
16:40:07 FindDevByAdr: event device for "1-1.2" is /dev/input/event3
16:40:07 Fragsize: 256, fragstotal: 5, bytes: 1280
16:40:07 EndPointInit: returning 0
In this example the AudioDongleAdr that was discovered is 1-1.2.
4. Hit control C to shutdown thelinkbox.
5. Disconnect the dongle from the port just found and move it to the next
port. Repeat steps 3 to 5 until the addresses for all of the ports that will
be used have been determined.
6. Configure thelinkbox for multiple ports specifying the addresses found
for AudioDongleAdr.
## Testing
The daemon has two command line switches to aid testing. The first switch -f
specifies where the tlb.conf configuration is located.
The second switch -d enables debug mode, causing the daemon to run in the
foreground as a user process while displaying debug information on the screen.
The debug switch may be used multiple times to increase the detail level of
the information displayed up to a maximum of three times.
For our purposes a single -d suffices.
[root@localhost ~]# /root/tlb -d -f /home/skip/tbd/tbd.conf.440
thelinkbox Version 0.33 compiled May 14 2008 16:31:19
6:45:49 thelinkbox V 0.33 compiled May 14 2008 16:31:19 initializing
6:45:49 EndPointInit: Initializing 440 port
6:45:49 EndPointInit: called, TxKeyMethod: 5, RxCosMethod: 6
6:45:49 UsbInit: found USB device "440" @ 1-2.2
6:45:49 UsbInit: USB audio device for 440 is /dev/dsp2
6:45:49 UsbInit: Changing audio device from auto to /dev/dsp2
6:45:49 FindInputDevBySn: event device for "440" is /dev/input/event3
6:45:49 AudioInit#1586: opening "/dev/dsp2"
6:45:49 Fragsize: 256, fragstotal: 5, bytes: 1280
6:45:49 EndPointInit: returning 0
GenAVRS(): sending string:
)EL-wb6ymh!3345.88NE11820.19W0PHG8660/449220/131 On @0645
PullerLoginAck(): Client 8 successfully updated status.
6:45:50 Msg from EchoLink: EchoLink Server v2.5.996
6:45:50 Msg from EchoLink:
6:45:50 Msg from EchoLink: ECHO4: Scottsdale, AZ USA
Full station list downloaded successfully, 8166 stations listed.
The message beginning with "PullerLoginAck():" indicates that the daemon
was successful in logging into the EchoLink directory server.
The last message is the real good news, our directory request returned 7904
stations. If your callsign or password were not recognized no stations would
be listed and you would see an error message from EchoLink simular to the
following:
6:47:01 Msg from EchoLink: INCORRECT PASSWORD
6:47:01 Msg from EchoLink:
6:47:01 Msg from EchoLink: Please check the password
6:47:01 Msg from EchoLink: and try again. If you have
6:47:01 Msg from EchoLink: forgotten it, see the Validation
6:47:01 Msg from EchoLink: section at www.echolink.org.
Full station list downloaded successfully, 0 stations listed.
If you are not able to get a station list, check your callsign and password
in the configuration file. You might also want to rerun the test using more
"-d" switches to help determine what when wrong.
NB: thelinkbox makes NO attempt to control the sound card's mixer.
You'll need to set levels manually with the mixer utility of your choice.
To test run thelinkbox in debug mode "linkbox/tlb -d -f tlb.conf". Log
messages will be displayed on the console. Key a radio and hopefully
you'll see "COS detected". Press some touchtone buttons and hopefully
you'll also see them displayed.
[root@localhost ~]# /root/tlb -d -f /home/skip/tbd/tbd.conf.440
thelinkbox Version 0.13 compiled Dec 14 2007 16:24:36
16:48:41 thelinkbox V 0.13 compiled Dec 14 2007 16:24:36 initializing
16:48:41 EndPointInit: Initializing 440 port (0)
16:48:41 EndPointInit: called, TxKeyMethod: 5, RxCosMethod: 6
16:48:41 UsbInit: found USB device @ 1-1.2
16:48:41 UsbInit: USB audio device for 440 is /dev/dsp2
16:48:41 UsbInit: Changing audio device from auto to /dev/dsp2
16:48:41 FindDevByAdr: event device for "1-1.2" is /dev/input/event3
16:48:41 Fragsize: 256, fragstotal: 5, bytes: 1280
16:48:41 EndPointInit: returning 0
GenAVRS(): sending string:
)EL-wb6ymh!3345.88NE11820.19W0PHG8660/449220/131 On @1648
PullerLoginAck(): Client 6 successfully updated status.
Full station list downloaded successfully, 7910 stations listed.
PollCOS: Node 440 COS active
PollCOS: Node 440 COS inactive
16:48:47 DecodeDTMF: Decoding "123"
16:48:47 RF user executing command "say I'm sorry dave I can't do that"
[much more to come ... stay tuned!]
## Installation
Thelinkbox is designed to run as a system daemon, i.e. a background program
that's loaded automatically by the system as part of the bootup process.
If you are not familiar with the system startup scripts or you are not
comfortable starting thelinkbox automatically you can always start thelinkbox
daemon manually when desired. Starting thelinkbox automatically is primarily
needed when the host is unattended and it is desired to run thelinkbox 24/7.
Refer to the "Running without Root access" section if you would rather not
modify your system's startup behavior.
Unfortunately my installation rules and knowledge are not complete enough about
all of the various *nix variations to complete the installation without manual
assistance.
Most Posix operating systems start system daemons using approaches similar
to either FreeBSD (i.e. the BSD camp) or RedHat (i.e. the System V camp).
Scripts to install thelinkbox on FreeBSD, RedHat and Debian Linux have been provided.
Start with the scripts that are the closest match to your system and then
modify them if necessary. I will be happy to include installation scripts
for other operating system that are sent to me with future releases.
Configuration files for daemons are kept in different places on different
systems. It doesn't really matter where the configuration file is as long
as tlb can find it. If you want to put it somewhere other than where
the GNU autoconf tools think it belongs just specify the full configuration
file path on the command line using the -f switch.
FreeBSD
Local (not part of the standard distribution) daemons on FreeBSD systems are
started by placing a shell script /usr/local/etc/rc.d directory with an ".sh"
extension. During startup each script is called with an argument of "start".
During system shutdown they are called again with an argument of "stop".
If you are running on FreeBSD run the installation scripts from the FreeBSD
subdirectory. The installation script will copy tlb, tlb.conf.sample and
tlb.sh into the appropriate subdirectories. You will need to be root to
when running the installation script.
%cd FreeBSD
%su
Password:
fastbsd# ./install
+ cd ..
+ make install
Making install in src
/bin/sh ../config/mkinstalldirs /usr/local/libexec
/usr/bin/install -c tlb /usr/local/libexec/tlb
/bin/sh ./config/mkinstalldirs /usr/local/etc
/usr/bin/install -c -m 644 ./tlb.conf.sample /usr/local/etc/tlb.conf.sample
+ cd FreeBSD
+ cp tlb.sh /usr/local/etc/rc.d
fastbsd#
Since the installation process only copies tlb.conf.sample (to prevent
accidents when thelinkbox is updated in the future) we must manually copy
our configuration file to the "standard place":
$ cp tlb.conf /usr/local/etc
Debian Linux
If you are running on Debian Linux run the installation scripts from the
Debian subdirectory. The installation script will copy the tlb executable,
tlb.conf.sample, and tlb shell scripts into the appropriate subdirectories.
It will then create links from /etc/init.d/ subdirectories the
tlb shell script to start tlb in run levels 2, 3, 4 and 5 and
to stop tlb in run levels 0, 1 and 6. You will need to be root to when
running the installation script.
$ su
Password:
[root@linux Debian]# cd Debian
[root@linux Debian]# ./install
+ cd ..
+ make install
Making install in src
make[1]: Entering directory `/home/skip/thelinkbox-0.10/src'
make[2]: Entering directory `/home/skip/thelinkbox-0.10/ ... ...
近期下载者:
相关文件:
收藏者: