dranch at trinnet dot net
KI6ZHD
03/28/2013
Enabling everything HAM radio on Centos Linux! This document is my journey into Linux-assisted HAM radio with Centos. This covers many different topics along my personal discovery which started with AX.25 packet radio, then into HF digital modes, and most recently SDR and D*star technologies! This doc will be constantly evolving but here is the index to give you an idea of what it covers today:
Index
1. - PreSetup: Centos Optimizations - Serial ports, Compiler tuning, 3rd party Yum repos, etc
1a. - Buying reliable USB to Serial adapters for Linux
1b. - UDEV based determinisitic serial port assignments for USB adapters
1c. - Fixing serial port devie permissions for non-root users
1d. - Working around the ModermManager taking over your Serial ports
1e. - PreSetup: ALSA determinisitic sound cards
1f. - PreSetup: Other Misc Things like Power management, etc.
3. - Compiling / Installing the various AX25 apps and tools for HF/VHF/UHF packet
4. - Updating Centos's ALSA soundsystem
5. - Soundmodem - Software based AX.25 packet TNC for HF/VHF/UHF
6. - Packet Tutorial - Learning about AX.25 packet radio
6a. - What is AMPR and step-1: how to get your own AMPR-based IP address
7. - Initial AX.25 setup system settings
8. - Soundmodem - Configuring the soundcard based TNC
8a. - Soundmodem - Setting the right audio levels
8b. - Soundmodem - Running the daemon with other AX.25 services for a functional system
9. - AX.25 Packet programs - Bringing up the other useful packet applications and daemons
9a. - ax25mail-utils- AX.25 messaging tools for used with Linpac
10. - Advanced AX.25 configuration, Netrom, Node services, and Troubleshooting
10a. - ax25spyd - Next generation packet monitoring daemon
10b. - AX.25 NetROM Routing and connections
10c. - AX.25 Node Services - Locally ACKed connections
10d. - AX.25 Tunneling over the Internet via AXIP or AXUDP
10e. - AX.25 traffic monitorinng
10f. - AX.25 Packet troubleshooting
11. - Linpac - Advanced HF/VHF/UHF AX.25 packet terminal and PBBS
11a. - Linpac - Configuring the packet terminal program
12. - Fldigi - Compiling the program for HF digital modes
12a. - Fldigi - Depdendencies step #1
12b. - Hamlib for Fldigi (and other apps) - Rig control for your radio
12c. - Fldigi - Depdendencies step #2
12d. - Fldigi - Final Compiliing
13. - Flrig - Rig control with or without Fldigi
13a. - Flrig - Configure rig control
14. - Fldigi - Configuring the digital mode software
15. - Other Fl* Programs: Flwrap, Flmsg, FLamp, etc.
15a. - Flarq - Error corrected CONNECTED mode communications with Fldigi
15b. - Flmsg - FLdigi program for RX/TX NBEMS forms
15c. - Flwrap - FLdigi plugin for sending binary files
15e. - Flwkey - Winkeyer CW keyer software support
15f. - An easy way to update your various Fl-suite of programs
16. - PSKMail with Fldigi - HF email and APRS system used with Fldigi
17. - LOTW - ARRL Logbook (and Eqsl.cc) logging with Fldigi and other tools
17a. - QSL Service - Tips on dealing with QSL cards send via bureaus
20. - GPSd - Network enabled GPS for Xastir, GPS time, etc
21. - Xastir - Compile the APRS mapping and digipeating tool
21a. - Xastir - Configuring and running the APRS tool
22. - APRX - APRS iGate + digipeater software
23. - Xlog - Automatic log uploads to LOTW/EQSL for FLdigi
24. - WSPR - HF weak signal beacon
25. - WSJT - JT65 and other HF / EME weak signal digital modes
26. - JNOS - Full AX25 and TCP/IP enabled packet BBS
27. - PSKMeter - BPSK31 signal quality diagnostic meter and software
28. - QSSTV - Analog Slow Scan TV (SSTV)
29. - GeoID - MaidenHead distance calculator
30. - IBP - International Beacon Project beacon tracker
31. - Dream - Digital Radio Mondiael (DRM) - Digital Phone - transmit/receive
33. - RXAMADRM - Receiving Digital SSTV
33.a - TXAMADRM - Transmitting Digital SSTV
34. - LinKT - HF/VHF/UHF packet terminal for Qt
35. - Wine - Running Windows programs within linux (used for Outpost)
36. - Outpost - Outlook like Packet messaging program via Wine
37. - Chirp - Multi-Radio memory programming tool program
37.a - Thoughts on Chirp and radio memory syncronization
38. - WXTOIMG - Decoding APT and WeFAX images
39. - Winlink 2000 - Using a remote Winlink node via local AX.25 packet and the Internet
40. - DSD - Decoding MotoTrbo, P25, ProVoice, NXDN, etc
41. - Gpredict - Satellite tracking, prediction and graphical mapping tools
42. - Quisk - Software Defined Radio (SDR) receiver
43.a - SVXlink and Qtel - Compiling and packaging the application
43.b - Configuring and testing the Svxlink Server
43.c - Interfacing Svxlink with a Kenwood D710
43.d - Setting the Svxlink audio levels
43.e - Svxlink Startup: Safely Start/Stop Svxlink for local control and logging
43.g - Overview of using Echolink and IRLP
43.i - Configuring and using Qtel for Echolink
44. - D*Star - Digital Voice, Data and other related technolgies
44a. - Learning D*Star - Setting up a US Trust account and learning about how it all works
44b. - D-rats - Email, IM messaging, and more via Internet, D-Star, packet radio, and more
45. - Ldsped - AGWPE compatible AX.25 packet transport
50. - Serial port troubleshooting and tools
51. - Other useful tools for the Linux HamShack
Appendix A - Recommended extra RPM repositories
Appendix B - KI6ZHD Running Packet notes for QTH
Appendix C - Misc other topics Baycom TNCs, etc
Appendix D - Radio Quirks : Using my specific radios
This documentation and scripting set under the umbrella name of "Hampacketizing Centos"
is copyrighted to David Ranch and licensed under a Creative Commons
Attribution-NonCommercial-NoDerivs 3.0 Unported License. Basically, this means:
- The licensor permits others to copy, distribute and transmit only unaltered
copies of the work — not derivative works based on it.
- If you distribute this document but would like to see additions changes
made to it, you need to have those changes made by the author. I'm
flexible and happy to help so don't be worried.
- The licensor permits others to copy, distribute, display, and perform the work
for non-commercial purposes only. If you're looking to use this document
or it's scripts in a commercial environment, contact the author (me) for
details.
http://creativecommons.org/licenses/by-nc-nd/3.0/
This documentation notes my ongoing journey to get a fully featured
HAMshack running on the Centos Linux distrubution. This document originally
started out for Centos5 on i386 but I'm actively moving over to Centos6 x86_64.
I will be adding in Centos6 specific requirements as I find them.
Please understand that some of these notes can be messy at times and
some maybe downright confusing. This was because I was keeping detailed
notes of compile failures, etc. and some of those notes were helpful or
might be helpful to other HAMs. I'll clean them up as I go but if you
have any questions, need clarifications, etc., just email me!
IMPORTANT:
----------
Following the chapter order of this document can be very mportant at times
as each section of this document filled in the various dependencies needed
by the follow-on installed software.
There are many other packages you might like to try out as highlighted
on the FedoraProject HAM radio section:
https://fedoraproject.org/wiki/SIGs/AmateurRadio/Packages
* Btw, if you didn't already know it, RHEL 5/CENTOS 5 uses the same
libraries, etc, as FedoraCore 9 and RHEL 6 / Centos 6 uses the
same libraries as Fedora 16!
Debian also has a list of packages that have been patched and brought
under modern Linux kernels especially for AX.25 kernel facing stuff:
http://packages.debian.org/squeeze/hamradio/ (stable)
and
http://packages.debian.org/unstable/hamradio/
(has new packages like Chirp, SDR programs,
OpenSuse also has a list of packages as well which can be helpful
to get .spec files, etc:
http://download.opensuse.org/repositories/hamradio/openSUSE_Factory/src/
For other packages, one of the best HAM radio software for Linux directory
pages out there is:
http://radio.linux.org.au/
aldo - CW trainer
demorse - CW decoder from the soundcard (xdemorse)
dxcc - CLI based callSign lookup
qrq - CW trainer
unixcw - dir listing of various CW training tools
Other interesting Linux HAM software - some is covered in this document
and is shown with a '*', other software is really old, etc.
-----------------------------------------------------------------------
fldigi * GUI app to support CW, PSK31, RTTY,
gMFSK - GUI app to support CW, PSK31, RTTY, etc
gpsk - Gnome app for PSK
kpsk - KDE app for PSK
grig - radio controller via hamlib
hamlib * master library to control various radios
ibp * find HF beacons on the right bands at the right time
linpsk - PSK31/RTTY app
linpac * Nice Linux NCURSES-based packet terminal and simple BBS software
lpsk - PSK31/RTTY (ncurses and GTK+) - part of xpsk
node * Linux Packet node software
unode * Linux Packet node software
qle - 404
qsstv * receive analog SSTV and FAXes
splat - coverage analysis tool (web versions already active)
ssbd - audio capture and network transmission support
svxlink - voice synthesizer for suporting repeaters, etc for echolink
thebridge - used for echolink
tqslib - digital signatures for ARRL LOTW QSLs
tunak2 -
wxapt - console app to decode and save NOAA and METEOR satellites
xconvers - IRC like client using the Internet or packet radio
xdemorse - console based CW decoding app
xdx - DX cluster communications for DX notification
(there is also native TELNET access as well via the Internet)
xfhell - "fuzzy" digital communication mode known as Hellschreiber
xlog - logging tool with hamlib support
xpsk31 - PSK31/RTTY (ncurses and GTK+) - part of lpsk
xwota - similar to a dx cluster lookup system
xwxapt - GTK+ app to decode and save NOAA and METEOR satellites
fbb - packet Bulletin board system - xd704j-src.tgz
Wow.. check this software out: http://www.dxatlas.com/
hamcap - graphical DX propogation prediction tool (cool!)
cwskimmer - graphical wide-band decoder of CW across MANY frequencies
LinGT - a GNOME2 port of LinKT. LinKT is a KDE Packet Radio (AX25)
Terminal written by Jochen, DG6VJ
Ok, on with the show...
Before we start compiling programs, we need a basic Build environment but different
programs will have additional requirements. For example, here are some tables
of what RPMs are required to build a custom Linux kernel for different Centos
versions.
Centos5 (some rpms will be newer) | Centos6 (some rpms may be newer)
-----------------------------------+-----------------------------------
gcc | gcc-4.4.6-3.el6.i686
nasm | nasm-2.07-7.el6.i686
rpm-build | rpm-build-4.8.0-19.el6.i686
| asciidoc.noarch 0:8.4.5-4.1.el6
| newt-devel.x86_64 0:0.52.11-3.el6
elinks | elinks-0.12-0.20.pre5.el6.i686
unifdef |
This document will detail those additional requirements in each of the different
sections in this doc but for now, lets get the basics going:
#Tools for the compiling environment
#
# Additional RPMs might be installed as well as required
yum install gcc
#Next, we need tools create RPMs and download code
yum install rpm-build
yum install elinks
Next, there is the build area. It's recommended that to build code, you
shouldn't do it as the root user anymore (old school). To support this new
approach, please see:
http://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
NOTE: There are additional optimizations contained below that I recommend
to put into this newer Build environment setup
+------------------------------------------------------------------------+
| Important Note: |
| |
| This document currently uses the older ROOT based /usr/src/redhat |
| build environment. Over time, I plan on converting to the new |
| style but until then, please be aware of the potential differences. |
+------------------------------------------------------------------------+
If you wish to follow this document as close as possible, please follow the
below configuration to enable a "root" setup:
Centos 6
-----------------------------------------------------------------------
Create the RPM build environment as this is no longer created in Centos6
default and when created, it puts it under the builder's homedir
(say /home/dranch/rpmbuild). This new layout is considered a newer best
practice to avoid malicious Make files, etc. but I fail to see the end to
end security as you still have to install the resulting RPM as root.
Please see the above URL on how to create a build environment the new way.
Anyway, for now, I'm doing it the old way:
mkdir -p /usr/src/redhat/BUILD
mkdir -p /usr/src/redhat/BUILDROOT
mkdir -p /usr/src/redhat/RPMS
mkdir -p /usr/src/redhat/SOURCES
mkdir -p /usr/src/redhat/SPECS/Old
mkdir -p /usr/src/redhat/SRPMS
What do all those directories do?
/usr/src/redhat/BUILD
- this is the scratch area for the RPM builder.. you don't need to
anything for this area except maybe delete stuff out of it when
things are built, installed, etc.
/usr/src/redhat/BUILDROOT
- used by some other spec files.. same definition as the BUILD
directory above
/usr/src/redhat/SOURCES
- this is where you download the new version of Fldigi but don't
uncompress it
/usr/src/redhat/SPECS
- this is where you put the spec files like fldigi.spec
/usr/src/redhat/SRPMS
- you most likely won't need this as it's a holding area ONLY if you
create SRPMS (program source archive + spec file)
/usr/src/redhat/RPMS - this is where the resulting RPMs will be put
To allow you to compile things NOT as root, do the following and change
USERNAME to your login id:
chown -R USERNAME usr/src/redhat
To keep things simple, I recommend to do the following for Centos6 users:
ln -s /usr/src/redhat /root/rpmbuild
# The following allow you to centralize all your builds in one place
# but this might not work well for a true multi-user system. Your
# preference
ln -s /usr/src/redhat /USERNAME/rpmbuild
Compiling:
----------
When compiling code for Linux (regardless of the distribution), most code is
created to run on the lowest common denominator of hardware. Few optimizations
are taken to take advantage of your local CPU, etc. Even worse, older flags
like "--enable-mmx" are NOT legal on 64bit CPUs but changing the platform
optimizations will fix that!
In Centos (5 or 6), create or edit the file /etc/rpmrc and add the following line:
optflags: x86_64 -O3 -march=native -m64 -g
Next, some packages that sign code want a email name (Xastir):
# Create the file /etc/rpm/macros.gpg and change this to be your name and
# For my setup, I configured it to be:
David Ranch dranch@trinnet.net
To check your settings, run the command "rpmbuild --showrc" and look for
terms like "gpg" and "optflags". Make sure your changes are seen before
proceeding!
Yum and third-party repositories:
---------------------------------
When I initially started upgrading Centos5 for the HamShack, I was doing the
package search and installation MANUALLY. Though this is fine on small
projects as you learn exactly what's required. To do this, I recommend the
use of the rpmfind site:
http://www.rpmfind.net/linux/rpm2html/search.php
Now, after a while, maually doing things gets VERY tedious. Fortunately,
yum supports 3rd party repos which will do the search, dependency checks,
and installations all for you. To enabled third-party sites to download
prebuilt RPMs:
Install RPMforge RPM to enable the repository:
1) Install the Yum priorities system so any new 3rd party RPMs
don't override the primary Centos repositories
yum install yum-priorities
2) Edit the various stock Centos repos as defined in /etc/yum.repos.d
to have correct priorities (THEY WILL VARY..)
/etc/yum.repos.d/CentOS-Base.repo
--
[base]
. . .
priority=1
protect=1
[updates]
. . .
priority=1
protect=1
[extras]
. . .
priority=2
protect=0
[centosplus]
. . .
priority=2
protect=0
[contrib]
. . .
priority=3
protect=0
3) Install the RPMforge repo file
NOTE: It seems that RPMForge is dropping RHEL6 and Centos6
support as there aren't many RPMs available. See the
ATrpm repo below as a possible good replacement
Download the proper RPM for your distribution version and computer architechure:
http://repoforge.org/use/
For Centos6 on a x86_64 machine:
--------------------------------
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
4) Enable "priorities" for the RPMforge repository so they don't override
the primary Centos repositories. You will also want to enable the Extra
and Testing repositories. The Testing repository is needed to install
bleeding edge versions of Wine, etc.
/etc/yum.repos.d/rpmforge.repo
--
[rpmforge]
. . .
enabled = 1
priority=12
protect = 0
[rpmforge-extras]
. . .
enabled = 1
priority=14
protect = 0
[rpmforge-testing]
. . .
enabled = 1
priority=15
protect = 0
--
4.a) I've found one situation where bleeding edge packages from the
"rpmforge-extra" repo would override packages from the main
Centos5 updates repo. Regardless of what I would do with the
priorities, enabling the "protect" knob, etc., nothing would
fix this. Ultimately, the fix I found was to add:
'check_obsoletes=1' to the /etc/yum/pluginconf.d/priorities.conf
file.
5) In addition to rpmforge, I also have additional REPOs enabled:
- ELREPO (for more up to date kernel modules like ALSA)
-----------------------------------------------------
Centos6 - rpm -Uvh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm
or
Centos5 - http://elrepo.org/elrepo-release-5-3.el5.elrepo.noarch.rpm
# Edit /etc/yum.repos.d/epel.repo and add to each stanza
[elrepo]
. . .
priority=7
protect = 0
[elrepo-testing]
. . .
priority=15
protect = 0
[elrepo-kernel]
. . .
priority=10
protect = 0
[elrepo-extras]
. . .
priority=11
protect = 0
- EPEL - Fedora community based repos
-----------------------------------
Go to the following URL and install the proper URL for your
specific Centos distro.
NOTE: It seems they change the URLs from time to time so I'm
going to only site the more generic URL:
http://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
# Edit /etc/yum.repos.d/epel.repo and add to each stanza
[epel]
. . .
priority=8
protect = 0
# Edit /etc/yum.repos.d/epel-testing.repo and add to each stanza
[epel-testing]
. . .
priority=15
protect = 0
- ATrpms - Fedora community based repos
-------------------------------------
rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
Centos6 - Create the file /etc/yum.repos.d/atrpms.repo
--
[atrpms]
name=Fedora Core $releasever - $basearch - ATrpms
baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
enabled=1
priority=9
protect = 0
--
- adobe-linux (for Acrobat and Flash updates)
-------------------------------------------
http://get.adobe.com/flashplayer/completion/?installer=Flash_Player_11_for_other_Linux_%28YUM%29_64-bit
priority=15
+----------------------------------------------------------------------+
| Important!! |
| ----------- |
| - To make sure that when you have multiple Yum repos installed, you |
| only use the proper RPMs, add the following line to /etc/yum.conf: |
| |
| #New check - 032211 |
| check_obsoletes=1 |
+----------------------------------------------------------------------+
- In addition to the check_obsoletes feature, you might want to consider
the following:
- By default, Yum will try to upgrade your kernel when new versions
are available. We don't want to automatically install new kernels
as they don't have AX25, etc. installed. To disable this kernel
auto-upgrade behavior, add the following line to /etc/yum.conf:
#comment this out when you want to updgrade the kernel
exclude=kernel*
When you DO want to upgrade the kernel, simply edit that file,
comment out the exclude line, and run yum again.
- Yum will allow you to install many older RPM versions on your system.
Kinda silly as you only need one or maybe a few backups just in case
you want to revert. This also wastes disk space. To only allow 5
versions, add the following
to /etc/yum.conf:
installonly_limit = 5
- Unless you're running very old hardware, your computer no longer has
a native RS232 port built into it. This is a major bummer if you ask
me but now people are forced to use USB-based serial ports which
brings up two primary issues:
1. Poor USB adapters - Do yourself a favor and ONLY use FTDI-based
serial converters! There have been uncountable emails, threads,
etc on the Internet about lousy Prolific units (real or counterfit)
that just aren't reliable but FTDI units always work. I personally
have a few Prolific units and for the ones that work, they start to
exibit issues when using flow control, heavy data transfers, etc.
Here are a few USB cable products that use FTDI chips:
-----
1port - www.cablesunlimited.com - USB-2920 (I have this one)
1port - Keyspan (now TrippLite) - USA19HS
1port - http://www.usconverters.com/index.php?main_page=product_info&cPath=67&products_id=325
-----
2port - www.USBGear.com - USBG-2X232FTDI for $27
2port - www.serialstuff.Com - USA-2P-232 for $42
-----
4port - GearMo - FT4232HL (I haven't tested this one yet)
http://www.amazon.com/FT4232HL-Professional-Retention-Certified-Microsoft/dp/B004ETDC8K
4port - DigiKey - USB-COM232-PLUS4 (no enclosure)
http://www.digikey.com/product-detail/en/USB-COM232-PLUS4/768-1034-ND/2139296
-----
NOTE: FTDI-based serial adapters are more expensive than
Prolific ones but they work every time. I can't say
the same thing about Prolific units.
NOTE#2: If your setup is anything like mine, you need multiple
serial ports for the following. If so, you really might
want to consider a multi-port cable.
- HF rig control
- VHF rig control
- packet TNC
- accessories like PSK meter
- Upon reboots, USB glitches, etc., there is the very real potential that your
serial device that was on /dev/ttyUSB0 is now on say USB1 or USB2! These
assignments can be all over the place and changing your various program's
configuration files is a huge pain!
To fix this, forget that a given serial device uses the name like /dev/ttyUSB0
every time. Remember, this is UNIX and a device (let alone a serial port) can be
named ANYTHING. Why not call a serial adapter "ft857-prog-cable" which is REALLY
obvious!
Let's get started. Use "dmesg" to see the device and it's serial number.
usb 2-1.1: new full speed USB device using ehci_hcd and address 5
usb 2-1.1: New USB device found, idVendor=0403, idProduct=6001
usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1.1: Product: usb serial converter
usb 2-1.1: Manufacturer: FTDI
usb 2-1.1: SerialNumber: FTCAWZIA
usb 2-1.1: configuration #1 chosen from 1 choice
USB Serial support registered for FTDI USB Serial Device
ftdi_sio 2-1.1:1.0: FTDI USB Serial Device converter detected
usb 2-1.1: Detected FT232BM
usb 2-1.1: Number of endpoints 2
usb 2-1.1: Endpoint 1 MaxPacketSize 64
usb 2-1.1: Endpoint 2 MaxPacketSize 64
usb 2-1.1: Setting MaxPacketSize 64
usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.5.0:USB FTDI Serial Converters Driver
Alternatively, you could have used the following command to get details:
udevadm info -a -n /dev/ttyUSB0
If your adapter's Vendor and Product IDs are matched in the Linux kernel
code, the USB port should be automatically be mapped to the next freely
available ttyUSB* port such as USB0, USB1, etc. Now if the USB device
WASN'T recognized, the output of "dmesg" will show the details of the USB
device but it won't map it to a ttyUSB serial device or anything else
because it doesn't know what it is.
Unrecognized device: You can either see read the "Enabling US Interface
Navigator USB support via UDEV (optional)" section
below to resolve this via Udev if the device is
supported but just not properly detected.
Alternatively, see the kernel building section to
learn how to deal with unrecognized USB devices
by modifying the kernel, recompiling it, and
then running thast kernel!
Simple, persistent USB enumeration:
Here are three different examples of getting some of my USB serial devices
to ALWAYS get persistent /dev names. Edit the file
/etc/udev/rules.d/99-usb-serial.rule and add the lines:
#Device #1 - cablesunlimited.com USB-2920 - 1-port USB to serial adapter (FTDI-based)
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTCAWZIA", NAME="ftdi-serial-cable"
#Device #2 - Generic 1-port USB to serial adapter (Prolific-based) for a Kenwood THF6A cable
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2302", SYMLINK+="thf6a-cbl"
#Device #3 - RT Systems CT-62B 1-port USB to serial adapter for FT817/857/897 (FTDI-based)
#
#NOTE: This adapter is NOT recognized by the Linux kernel as a valid
# serial device. RT System does this ON PURPOSE so their programming
# software will only work with their cables! You can change these IDs
# if you wish with http://www.ftdichip.com/Support/Utilities.htm#FT_Prog
#
# Alternatively, the following will run a script to poke the RT Systems
# USB IDs into the kernel FTDI driver so it can recognize the new
# device as a serial port.
#
BUS=="usb", SYSFS{idVendor}=="2100", SYSFS{idProduct}=="9e56", ENV{ID_MM_DEVICE_IGNORE}="1", RUN+="/usr/local/sbin/RTSystems-addports.sh &"
SUBSYSTEM=="tty", ATTRS{idVendor}=="2100", ATTRS{idProduct}=="9e56", SYMLINK+="ft857_prog"
Much more of this USB device enumeration topic is discussed in the
"Enabling US Interface Navigator USB support via UDEV (optional)" section below
+--------------------------------------------------------------+
| NOTE on Serial port permissions: |
| -------------------------------- |
| With the use of UDEV, all serial ports require users to have |
| the "dialout" group permission. To enable this for your |
| login (don't use root): |
| |
| - edit the /etc/groups file as root u |
| - scroll down and find the "dialout" group name |
| - append at the end of the line the needed username like |
| dranch |
| |
| * You will have to LOGOUT and log back in with this |
| username for the changes to go into effect |
| |
| * Once logged back in, open a termina window and run |
| the command "groups". Make sure "dialout" shows up. |
| If it doesn't you'll need to log out of your current |
| Gnome/KDE/whatever session and back in to get the new |
| settings. |
+--------------------------------------------------------------+
IMPORTANT!!!
Modem-Manager and Centos 6
--------------------------
As part of Centos 6's fully automatic NetworkManager system,
a sub-program called modem-manager tries to initialize serial
port based analog modems. The problem with this is that when
UDEV initializes the US Interface Navigator's FSK port, modem-manager
thinks it's a modem and will try to send some Hayes AT commands
to it. Modem-manager is generally recognized as BAD code and makes
way too many assumptions and there is an Ubuntu bug filed to change
this assumption behavior. Unfortunately, the current Centos state
makes the Navigator assert PTT on the rig and starts
transmitting those Hayse AT commands via RTTY!
# Disable the modem-manager binary but this will
# get undone if the program gets updated via a Yum update
#
/usr/sbin/modem-manager /usr/sbin/modem-manager.disabled
killall modem-manager
If you're still having UDEV issues, please see section:
"2.c - Enabling US Interface Navigator USB support via UDEV"
for points on how to do debugging, etc.
One issue that Linux faces due to it's flexible everything is consistent
enumeration of multiple sound cards. What does that mean? When you
reboot your Linux machine, your ALSA device ID's might change around
and never be consisent! At that point, you'll have to manually re-configure
your various programs to use the right Alsa ID. What a pain! The following
section fixes that issue!
In my specific situation, I have four sounds cards in my system:
cat /proc/asound/cards
--
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xc0600000 irq 42
1 [CODEC ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-0000:00:1d.0-1.1.1, full speed
2 [Pro ]: USB-Audio - SB X-Fi Surround 5.1 Pro
Creative Technology Ltd SB X-Fi Surround 5.1 Pro at usb-0000:00:1d.0-1.2, full
3 [Device ]: USB-Audio - Generic USB Audio Device
Generic USB Audio Device at usb-0000:00:1d.0-1.2, full speed
--
Breaking it down:
ID#0 is the laptop's computer's built-in sound card - Used for general audio
playback
ID#1 is the US Interface Navigator USB sound card - used for HF/VHF digital
modes (PSK, SSTV, etc.)
ID#2 is a Creative Labs Soundblaster X-Fi USB sound card - used with a
SoftRock SDR
ID#3 is a cheap CM109 USB sound card FOB - used for Svxlink for Echolink
If you issue the command "aplay -l", you can see all the various PLAYBACK interfaces
offered by each sound device. If you use "arecord -l", you can see all of the
recording interfaces. To find the proper technical "name of a specific ALSA
sound card, run "aplay -L" and you'll see something like:
aplay -l
--
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VB Analog [ALC269VB Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: CODEC [USB Audio CODEC], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Pro [SB X-Fi Surround 5.1 Pro], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: Pro [SB X-Fi Surround 5.1 Pro], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: Device [Generic USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
--
Breaking that output down, here is how to read each line is like the following:
card 3: Device [Generic USB Audio Device], device 0: USB Audio [USB Audio]
^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^
| | | | | |
| #2 the | #4 the | #6 the
#1 the ALSA #3 the sub-device #5 the sub-device
ALSA device device number sub- description
device name description device
type
In the above example, I want this el-cheapo USB sound card currently shown as
device #3 to ALWAYS become ID#3. The reason why I described each field is
because the USB device naming from the USB device itself can be completely
and utter generic and thus totally confusing. In this example, this cheapy
sound card name here is "device" (item #2 above). How useless is that!! I
could argue that the US Interface Navigator's name of "CODEC" is equally
useless. Don't blame ALSA, that's the name the manufacturer gave their USB
device!
The other things to pay attention to is field #3 which is the description of
the device and field #6 which is the device TYPE.
In my example, I have *three* USB sound cards using the same TYPE. That's bad
because they all use the same driver. Since it's the same driver, I now have
to narrow things down by USB device ID. To do this, I need to use then use
the device description in field #3 as the starting point. Following the
text from above, I'm going to get the device IDs for all my USB devices including
the US Interface Navigator, my SoundBlaster X-Fi, and the cheapy USB sound card:
#For the US Interface Navigator
lsusb -v | grep -B4 "USB Audio CODEC"
idVendor 0x08bb Texas Instruments Japan
idProduct 0x2906
bcdDevice 1.00
iManufacturer 1 Burr-Brown from TI
iProduct 2 USB Audio CODEC
----------------------------------------------------
#For the Creative Labs Soundblaster X-Fi
lsusb -v | grep -B4 "SB X-Fi Surround 5.1 Pro"
idVendor 0x041e Creative Technology, Ltd
idProduct 0x30df
bcdDevice 1.00
iManufacturer 1 Creative Technology Ltd
iProduct 2 SB X-Fi Surround 5.1 Pro
----------------------------------------------------
#For the cheapy USB soundcard
lsusb -v | grep -B4 "Generic USB Audio Device"
idVendor 0x0d8c C-Media Electronics, Inc.
idProduct 0x000e Audio Adapter (Planet UP-100, Genius G-Talk)
bcdDevice 1.00
iManufacturer 0
iProduct 1 Generic USB Audio Device
We now have the dirty details we need, specifically the USB idVendor
and idProduct. Now I created the /etc/modprobe.d/alsa.conf file with
the following text for the C-Media device:
NOTE: ALSA starts it's numbering with 0 so with this example,
I'm not defining what's slot#0 since it doesn't use the
USB audio driver
options snd-usb-audio index=1,2,3 vid=0x08bb,0x041e,0x0d8c pid=0x2906,0x30df,0x000e
Hopefully you got all that. If your setup isn't covered here, please see the
ALSA docs at http://alsa.opensrc.org/MultipleCards for full details on how to
get consistent enumeration.
Linux Power Management
----------------------
This is an ugly topic for me as it seems that entire power management systems are
different from distro to distro and they completely change out their solution every
year! Classic Linux! It's madening and the GUIs be it Gnome, KDE, etc. seem to
override the lower level systems like acpitook, devkit-power, etc. Which
to use? Depends! Gaaaahhh!
The packetrig.sh script as covered in this this document at
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/packetrig.sh
distiles all of this into something that should work to enable power savings
but also disabling suspending when not wanted, etc.
A few options:
--------------
# If you're using KDE4 as I am, you can send a Dbus signal
# Please note you CANNOT run this as root when logged in as a regular user so
# You have to use sudo to work around it
#
sudo -u YOURUSERNAME qdbus org.kde.powerdevil /modules/powerdevil setProfile Performance
#klunky but ABSOLUTE way to disable the sytem from suspending
#
mv /usr/sbin/pm-suspend /usr/sbin/pm-suspend.disabled
#Devkit policy - Very powerful system to change all kinds of parameters but to
# disable the possibility of suspending, edit this file and change ALL options
# to NO
vim /usr/share/polkit-1/actions/org.freedesktop.devicekit.power.policy
A few power management tools to start your search:
powertop - A fantastic tool to help tune your system for power management
It interactively identifies system tuning recommendations and
activates them for the current runtime. If you want these
settings to be permanent, either set them the devkit
/etc/tune-profiles
tuned-adm - Centos 6 mechanism to control power management. Check out
the "list" option but notice these parameter have no obvious
bearing on Gnome or KDE settings. See /etc/tune-profiles/*
for specific details but it's not clearly spelled out
devkit-power - Check out "-d" to see what your system shows for managed
devices, etc.
acpitool - Control the power management of your machine so it doesn't
turn off when you least expect it.
An excellent document for everything power management in Centos 6 and how to
audit and optimize your system:
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/Power_Management_Guide/index.html
Disabling SecureLinux
---------------------
- Disable SE Linux (unless you know how to create all the detailed
SELinux enformcement policies for the various HAM applications):
edit the /etc/sysconfig/selinux file and set it to:
SELINUX=disabled
- remove the setroubleshoot RPM (if installed)
setroubleshoot automatically runs client-side code whenever a denial
occurs even if the setroubleshootd daemon isn't running!
Removed it entirely unless it is needed:
yum erase setroubleshoot
Other Misc Things:
------------------
- Adobe Acrobat Acroread is a 32bit application and requires a multitude
of 32bit libraries to be installed to work. Forget it. Install "evince"
and be done with it.
Default CENTOS kernels (v6, v5, etc) do NOT support the AX.25 protocol,
packet radio interfaces like KISS nor does Centos5/6 support the US Interface
Navigator USB soundmodem device (yet... they are now supported in the
2.6.35+ kernels by yours truely :-) but until then, we still have to
patch the kernel to support more than two of the 6 on-board serial ports.
NOTE: These docs assume you are modifying one of the following kernels:
Centos6 - 2.6.32-x.el6.x86_64
Centos5 - 2.6.18-x.el5 kernel
Reference material for properly building custom kernels for Centos RPMs
-----------------------------------------------------------------------
Proper custom kernel compiling approach
---------------------------------------
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=20016
Issues with building custom kernels for Centos 5.4
--------------------------------------------------
http://wiki.centos.org/HowTos/Custom_Kernel#head-566abc4208fceb902d41ee82633f509dbf386a4d
You first need to install the following RPMs to be able to compile a custom kernel:
yum install nasm
yum install asciidoc
yum install newt-devel
Next, you need to install the Centos kernel-headers, kernel-devel, and kernel source RPM
#get the misc parts first
yum install kernel-headers kernel-devel
Lets get the SRPMs for the kernel:
#Enter in the SRPM director
cd /usr/src/redhat/SRPMS
# Next, start up the "links" text web browser, locate the newest kernel source
# RPM (highest version number given), highlight it, and hit "d" to download it.
# Once downloaded, hit the "q" key to quit:
Centos6
- links http://vault.centos.org/6.2/updates/Source/SPackages/
Centos5
- links http://vault.centos.org/5.8/updates/Source/SRPMS/
#for this example, we're going to assume the following:
Centos6 - kernel-2.6.32-220.7.1.el6.src.rpm - 03/18/2012
Centos5 - kernel-2.6.18-274.18.1.el5.src.rpm - 04/04/2012
#Hit "q" to quit Links once downloaded
Make a backup of any older SPEC files:
One key point to make here is to MOVE the old SPEC file so it
minimizes any risks to new patches not being applied, etc.
Centos6:
cd /usr/src/redhat/SPECS
mkdir Old
#If a previous kernel source was installed
mv kernel.spec Old/kernel.spec.`date +%m%d%y`
mv kernel-ax25-el6.spec Old/kernel-ax25-el6.spec.`date +%m%d%y`
Centos5:
cd /usr/src/redhat/SPECS
mkdir Old
#If a previous kernel source was installed
mv kernel-2.6.spec Old/kernel-2.6.spec.`date +%m%d%y`
mv kernel.spec Old/kernel.spec.`date +%m%d%y`
mv kernel-ax25-el5.spec Old/kernel-ax25-el5.spec.`date +%m%d%y`
If you'ved previously created a custom kernel, make a backup of it's config
just in case:
cp /usr/src/redhat/SOURCES/config-x86_64-generic-rhel \
/usr/src/redhat/SOURCES/config-x86_64-generic-ax25-rhel.`date +%m%d%y`
Now install the SRPM with the following but ignore any errors or warnings about
"user mockbuild" in the final stages of the RPM install
cd /usr/src/redhat/SRPMS/
Centos6:
--------
rpm -ivh kernel-2.6.32-.el6.src.rpm
For example: rpm -ivh kernel-2.6.32-220.7.1.el6.src.rpm
Ignore any errors about "user mockbuild"
Centos5:
--------
rpm -ivh kernel-2.6.18-.el5.src.rpm
Let's modify the kernel configuration to add support for the AX.25 protocol,
Packet TNC interfaces, and the US Interface Navigator USB device in any Centos
kernel:
- Add the followow lines into
Centos6: /usr/src/redhat/SOURCES/config-local
Centos5: /usr/src/redhat/SOURCES/config-rhel-generic
(these changes can also be found at
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/linux/
CONFIG_HAMRADIO=y
CONFIG_AX25=m
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_NETROM=m
CONFIG_ROSE=m
CONFIG_MKISS=m
CONFIG_6PACK=m
CONFIG_BPQETHER=m
CONFIG_BAYCOM_SER_FDX=m
CONFIG_BAYCOM_SER_HDX=m
CONFIG_BAYCOM_PAR=m
CONFIG_BAYCOM_EPP=m
CONFIG_YAM=m
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
NOTE: You SHOULD NOT modify the original kernel-*.config file as
User Specific files go in the generic files instead
NOTE#2: Please note that if you're updating to a new kernel and have alreally followed
these instructions, you might not be able to simply restore you last
config-x86_64-generic-rhel as new kernel options might have been enabled
in the new kernel that weren't present in the previous one
NOTE#3: I have not enabled "CONFIG_EMBEDDED=y" just yet as I want to
see if this is still required to get BSD-style PTY functionality
working properly. If your PTYs aren't working, you will need to
enable CONFIG_EMBEDDED=y and and then also configure about 15 other
non-related things that the new 2.6.x kernels now seem to require.
- Make a backup of this file so you can use it again with other
kernel upgrades:
cp /usr/src/redhat/SOURCES/config-generic-rhel \
/usr/src/redhat/SOURCES/config--generic-ax25-rhel
- Next, edit the kernel.spec file:
- cd /usr/src/redhat/SPECS
- vi kernel.spec
- find the line:
# % define buildid
# Notice the "#" at the front of the line AND the space between
# the "%" and "define" word. Change it to the following (notice
# the removed #, THE REMOVED EXTRA space, and the ".ax25":
#
# %define buildid .ax25
Centos6
-------
- Move the altered spec file
mv kernel.spec kernel-ax25-el6.spec
-----------------------------------------------------------------
- If you DON'T have a US Interfaces Navigator, please skip to the
COMPILING step later in this section
-----------------------------------------------------------------
In the above "PreSetup: UDEV based determinisitic Serial ports" section,
I covered how to create determinstic enumeration for USB based serial ports
US Interface Navigator support:
-------------------------------
In the previous version of this document, I covered how to add support
for this USB soundcard device directly via kernel patches. This is still
the most complete way to get things done but it requires a lot of work
in compiling the kernel, etc. which scares off most users.
I've retained that older documentation at the bottom of this section but
there is simplier, non-invasive way to add US Interface Navigator
(and other USB-based serial devices) support: UDEV.
In addition to not requiring source code changes, compiling and installing
a new kernel, the following UDEV changes make the port naming PERSISTENT
so the serial devices will always use expected names in /dev. For example,
my setup now has the following persistent:
USI_CAT -> ttyUSB0
USI_CFG -> ttyUSB6
USI_FSK -> ttyUSB4
USI_PTT -> ttyUSB1
USI_SER -> ttyUSB5
USI_WKEY -> ttyUSB3
- US Interface Navigator with UDEV and kernel module options:
-----------------------------------------------------------
The US Interface Navigator is a USB soundcard which includes 6 FTDI
based serial ports for CAT-based RIG control, secondary PTT, Winkeyer
interfacing, setting of other configrations, and FSK data. As mentioned
above, not all of theser ports are natively supported until 2.6.35.
Some Linux experts might be thinking: "Hey, Linux allows you to specify
an additional USB vendor and product IDs when you first install the USB
kernel module via the following":
modprobe ftdi_sio vendor=0x0403 product=0xb810
So you'd natually think you could just add additional vendor and
product IDs like the following.. right?
modprobe ftdi_sio vendor=0x0403 product=0xb810 vendor=0x0403 \
product=0xb811 vendor=0x0403 product=0xb812
Wrong. That doesn't work as the kernel doesn't recognize the additional
USB devices what so ever and doesn't realize it's a serial device let
alone a FTDI-based serial device. What you CAN do is do a combination:
- use the kernel module mechanism
AND
- use the newer "new-id" feature:
#1. Load the FTDI module and treat this vendor/product ID as a
# FTDI device - you can only specify ONE device at a time
#
modprobe ftdi_sio vendor=0x0403 product=0xb810
#2. After the kernel module is loaded, dynamically signal the driver
# to support ADDITIONAL vendor/product IDs as FTDI devices
#
echo "0403 b811" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
echo "0403 b812" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
NOTE:
-----
I spent a LOT of time trying to figure out why the first USB
serial device, "b010" device will be properly recognized AND
acted upon in the UDEV configuration yet the other two devices,
"b811" and "b812" devices wouldn't be recognized AND acted upon.
My best guess is that there is a race condition in the FTDI
driver where only one device is being allowed to be evaluated and
acted upon at a time. I stumbled upon this timing issue when I
was using a sleep statement. I also found that you CANNOT use
bash-line redirects like the following directly in a Udev rule:
echo "0403 b811" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
It seems that if there is a ">" character in the udev rule,
you would see something like the following when running the udev
daemon in DEBUG mode:
/bin/echo 0403 b811 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id' returned with exitcode 0
/sbin/modprobe -b usb:v0403pB811d0500dc00dsc00dp00icFFiscFFipFF' started
With all that, you now get full US Interface Navigator serial port support
without kernel changes. to make these changes permanent across reboots,
create the following files:
/etc/udev/rules.d/10-us-interfaces-navigator.rules
--
#US Interface Navigator
# NOTE: UDEV is very specific to the hierarchy where the strings
# are located. I recommend to use the following command to
# show the proper hierarchy when one US Navigator port is
# loaded:
#
# udevadm info --attribute-walk --name=/dev/ttyUSB0
#
BUS=="usb", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="b810", ENV{ID_MM_DEVICE_IGNORE}="1", RUN+="/sbin/modprobe ftdi_sio vendor=0x0403 product=0xb810"
SUBSYSTEMS=="usb", DRIVERS=="ftdi_sio", ATTRS{interface}=="Navigator (CAT & 2nd PTT)", ATTRS{bInterfaceNumber}=="00", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="USI_CAT"
SUBSYSTEMS=="usb", DRIVERS=="ftdi_sio", ATTRS{interface}=="Navigator (CAT & 2nd PTT)", ATTRS{bInterfaceNumber}=="01", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="USI_PTT"
BUS=="usb", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="b811", ENV{ID_MM_DEVICE_IGNORE}="1", RUN+="/usr/local/sbin/USI-addports.sh &"
SUBSYSTEMS=="usb", DRIVERS=="ftdi_sio", ATTRS{interface}=="Navigator (WKey & FSK)", ATTRS{bInterfaceNumber}=="00", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="USI_WKEY"
SUBSYSTEMS=="usb", DRIVERS=="ftdi_sio", ATTRS{interface}=="Navigator (WKey & FSK)", ATTRS{bInterfaceNumber}=="01", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="USI_FSK"
SUBSYSTEMS=="usb", DRIVERS=="ftdi_sio", ATTRS{interface}=="Navigator (RS232 & Config)", ATTRS{bInterfaceNumber}=="00", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="USI_SER"
SUBSYSTEMS=="usb", DRIVERS=="ftdi_sio", ATTRS{interface}=="Navigator (RS232 & Config)", ATTRS{bInterfaceNumber}=="01", ENV{ID_MM_DEVICE_IGNORE}="1", SYMLINK+="USI_CFG"
--
To support the above Udev rules, we need to create the USI-addports.sh
shell script:
vim /usr/local/sbin/USI-addports.sh
--
#!/bin/bash
#Sleep 2 to avoid a seeming race condition
sleep 2
#tell the FTDI driver about the WKey and FSK serial ports
/bin/echo "0403 b811" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
#tell the FTDI driver about the RS232 and Config serial ports
/bin/echo "0403 b812" > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
--
Once that file is created, Udev will automatically detect the
presence of this new 10-us-interfaces-navigator.rules rule file.
There is no need to reload the Udev daemon, etc!
+--------------------------------------------------------------+
| NOTE on Serial port permissions: |
| -------------------------------- |
| With the use of UDEV, all serial ports require users to have |
| the "dialout" group permission. To enable this for your |
| login (don't use root): |
| |
| - edit the /etc/groups file as root u |
| - scroll down and find the "dialout" group name |
| - append at the end of the line the needed username like |
| dranch |
| |
| * You will have to LOGOUT and log back in with this |
| username for the changes to go into effect |
| |
| * Once logged back in, open a termina window and run |
| the command "groups". Make sure "dialout" shows up. |
| If it doesn't you'll need to log out of your current |
| Gnome/KDE/whatever session and back in to get the new |
| settings. |
+--------------------------------------------------------------+
Debugging:
----------
If the UDev rules aren't seeming doing anything (or what you expect)
them to do, enable debugging! You can either do it dynamically
or upon every boot:
#Dynamically change from ERR to DEBUG level output in syslog
# all outputs should show up in /var/log/messages
#
udevadm control --log-priority=debug
#Once done with udev debugging, dynamically turn it off with
#
udevadm control --log-priority=err
# For permanent debugging, edit the /etc/udev/udev.conf file
# and either add or change the following line from ERR to DEBUG
--
udev_log="err"
--
Modem-Manager and Centos 6
--------------------------
As part of Centos 6's fully automatic NetworkManager system,
a sub-program called modem-manager tries to initialize serial
port based analog modems. The problem with this is that when
UDEV initializes the US Interface Navigator's FSK port, modem-manager
thinks it's a modem and will try to send some Hayes AT commands
to it. Modem-manager is generally recognized as BAD code and makes
way too many assumptions and there is an Ubuntu bug filed to change
this assumption behavior. Unfortunately, the current Centos state
makes the Navigator assert PTT on the rig and starts
transmitting those Hayse AT commands via RTTY!
# Disable the modem-manager binary but this will
# get undone if the program gets updated via a Yum update
#
/usr/sbin/modem-manager /usr/sbin/modem-manager.disabled
killall modem-manager
Verify the USB serial ports:
----------------------------
To check that the Navigator ports are recognized and installed properly, run
the following command to see all the devices:
ls -la /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2
ttyUSB3
ttyUSB4
ttyUSB5
USI_CAT -> ttyUSB0
USI_CFG -> ttyUSB5
USI_FSK -> ttyUSB3
USI_PTT -> ttyUSB1
USI_SER -> ttyUSB4
USI_WKEY -> ttyUSB2
It's the USI* /dev device names that you'll want to use to configure
Flrig and other devices
+------------------------------------------------------------------------+
| Skip this section if you're going to use the Udev method (RECOMMENDED) |
+------------------------------------------------------------------------+
- US Interface Navigator with kernel patches:
-------------------------------------------
Until the Navigator is natively supported in the kernel, you can add
that support via minor customization of the kernel source code. Since
I like to do things via RPMs to keep things very clean, this does require
a little work.
Get the following patches individually from:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/linux/
or
in http://www.trinityos.com/HAM/hampacket-CentosDigitalModes-.tgz
- cd /usr/src/redhat/SOURCES
- cp /tmp/kernel-2.6.spec-add-usnavigator-and-ax25.patch .
# Apply the SPEC patch to add in the additional scripts to enable
# the additional serial ports on the US Interface Navigator
patch -p0 < kernel-2.6.spec-add-usnavigator-and-ax25.patch
#Apply the kernel configuration changes to enable various HAM radio
# features for packet radio, etc.
cp /tmp/config-rhel-generic-ax25.patch .
patch -p0 < config-rhel-generic-ax25.patch
- Centos5 only (it's unclear if this is required for Centos6):
------------------------------------------------------------
To get BSD-style PTYs to work, you have to also add the following to
the config-rhel-generic file. This is ONLY required for legacy
configurations using tools like JNOS, etc
CONFIG_EMBEDDED=y
# Copy over the FTDI code patches
- cp /tmp/linux-2.6-usb-usinterface-add-support-for-navigator.patch .
Persistent USB Device Naming
-----------------------------
If you'd like to have the serial ports retain a persistent naming
across newly added devices, reboots, etc., take a look and review
the "Determinisitic Serial ports" portion of the "PreSetup: Centos
Optimizations" section and the UDEV rules above in the Kernel RPM
compiling section and in that 10-us-interfaces-navigator.rules file,
only add the lines that contain "bInterfaceNumber". After that,
you should be good to go!
Verify the USB serial ports:
----------------------------
To check that the Navigator ports are recognized and installed properly, run
the following command to see all the devices:
ls -la /dev | grep USB
ttyUSB0
ttyUSB1
ttyUSB2
ttyUSB3
ttyUSB4
ttyUSB5
USI_CAT -> ttyUSB0
USI_CFG -> ttyUSB5
USI_FSK -> ttyUSB3
USI_PTT -> ttyUSB1
USI_SER -> ttyUSB4
USI_WKEY -> ttyUSB2
It's the USI* /dev device names that you'll want to use to configure
Flrig and other devices
Ok, time to compile the kernel and create the RPM. All of the
following will make the primary kernel packages that a user would need:
cd /usr/src/redhat/SPECS
---------
Centos 6:
---------
NOTE: The KABICHK option allows users to compile add-on kernel modiles
like disk drivers, etc. without having to recompile the entire
kernel. It's a nice technology but it's not always 100% and
to support it, you can see it takes a significant amount of
compile time to support. Because of that, I'm DISABLING
it below to make things compile faster:
date; time rpmbuild -bb --target=x86_64 --with firmware --without kabichk \
--without PAE --without debuginfo --without debug --without perf --without \
perf-debuginfo kernel-ax25-el6.spec; date
+------------------------------------------------------+
| Total Build time: |
| |
| Gateway NV57 i5-2430 laptop |
| 2.4Ghz, 3MB cache, 4G of DDR3 RAM: |
| WDC 5400RPM 8MB 500GB HD: |
| |
| 2.6.x kernel w/ ABI chk: 71m 52s |
| 2.6.x kernel w/o ABI chk: 41m 21s |
| - |
| 3.5.2 ml kernel w/o ABI chk: 25m27s (real) |
+ +
| Dell laptop (1.7Ghz Pentium-M 512MB RAM) |
| Seagate 80GB 7200ROM HD: good build: 124m |
| ABI check failure: 93m |
+------------------------------------------------------+
- Once the kernel compiling is done, time to install the new RPMs
+------------------------------------------------------------------+
| IMPORTANT NOTE: |
| |
| Do NOT use the Upgrade or "rpm -Uvh" command as that will |
| DELETE your stock centos kernel which you shouldn't do until |
| you are sure this new kernel boots, its stable, etc. Again, |
| be sure to ONLY use the Install or "rpm -ivh" command. |
+------------------------------------------------------------------+
#Make a backup of your grub.conf just in case
cp /boot/grub/grub.conf /boot/grub/Old/grub.conf.`date +%m%d%y`
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh kernel-2.6.32-220.7.1.el6.ax25.x86_64.rpm \
kernel-firmware-2.6.32-220.7.1.el6.ax25.x86_64.rpm \
kernel-devel-2.6.32-220.7.1.el6.ax25.x86_64.rpm \
kernel-headers-2.6.32-220.7.1.el6.ax25.x86_64.rpm
---------
Centos 5:
---------
# NOTE#1: I had to add the "--without kabichk" as the compile would
# always fail out otherwise. The resulting kernel works fine.
#
# NOTE#2: ?no longer needed?
# had to add --without fips
date; time rpmbuild -bb --target=i686 --without kabichk --with baseonly \
--without PAE --without debuginfo --without xenonly kernel-2.6.spec
Ok, time to install the new kernel:
#Make a backup of your grub.conf just in case
cp /boot/grub/grub.conf /boot/grub/grub.conf.bak
cd /usr/src/redhat/RPMS/i686
+------------------------------------------------------------------+
| IMPORTANT NOTE: |
| Do NOT use the Upgrade or "rpm -Uvh" command as that will |
| DELETE your stock centos kernel which you shouldn't do until |
| you are sure this new kernel boots, is stable, etc. Be sure |
| to only use the Install or "rpm -ivh" command. |
+------------------------------------------------------------------+
rpm -ivh kernel-2.6.18-164.6.1.el5.ax25.i386.rpm
All Versions of Centos
----------------------
Since you created the kernel via an RPM method, go ahead and skip this
next, source only kernel compiling chapter and get to the last chapter
on installing new kernels
If you don't want to install the kernel via an RPM, you can make the kernel manually without an RPM, you can do the following: cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i386 make menuconfig Make the following changes (make sure it has either a "*" [enabled in kernel] or a [M] kernel module next to each item: +-- general setup | | | +--local version | | | +--add the text: ax25 | +-- Processor Type | | | +-- Processor Family: set it to what CPU this machine has (default is | | Pentium Pro | | | +-- Preemption Model: I change this to Low-Latency desktop but this is | optional | +-- Networking | | | +--Amateur Radio support | | | | | +-- Amateur Radio AX.25 Level 2 protocol (use the space bar to | | make it a M or Module | | | | | +--AX.25 DAMA Slave support | | +-- Amateur Radio NET/ROM protocol | | +-- Amateur Radio X.25 PLP (Rose) | | | | | +-- AX.25 network device drivers | | | +-- Serial port KISS driver | | | +-- Serial port 6PACK driver (NEW) | | | +-- BPQ Ethernet driver (NEW) | | | +-- BAYCOM ser12 fullduplex driver for AX.25 (NEW) | | | +-- BAYCOM ser12 halfduplex driver for AX.25 (NEW) | | | +-- BAYCOM picpar and par96 driver for AX.25 (NEW) | | | +-- BAYCOM epp driver for AX.25 (NEW) | | | +-- YAM driver for AX.25 (NEW) From here, select Exit, Exit, Exit, Exit, "YES - save the configuration" Save a copy of the new kernel config: cp .config /tmp/config-ax25 Ok, now in the main source directory, compile the kernel as you normally would or use the TrinityOS build-it script to help automate the stages: http://www.trinityos.com/LINUX/TrinityOS-security/usr/src/kernel/build-it.trinityos - make the kernel - make the kernel modules - make the initrd file - move the files to the proper places - update grub - reboot Persistent USB Device Naming ----------------------------- If you'd like to have the serial ports retain a persistent naming across newly added devices, reboots, etc., take a look and review the "Determinisitic Serial ports" portion of the "PreSetup: Centos Optimizations" section and the UDEV rules above in the Kernel RPM compiling section and in that 10-us-interfaces-navigator.rules file, only add the lines that contain "bInterfaceNumber". After that, you should be good to go! Verify the USB serial ports: ---------------------------- To check that the Navigator ports are recognized and installed properly, run the following command to see all the devices: ls -la /dev | grep USB ttyUSB0 ttyUSB1 ttyUSB2 ttyUSB3 ttyUSB4 ttyUSB5 USI_CAT -> ttyUSB0 USI_CFG -> ttyUSB5 USI_FSK -> ttyUSB3 USI_PTT -> ttyUSB1 USI_SER -> ttyUSB4 USI_WKEY -> ttyUSB2 It's the USI* /dev device names that you'll want to use to configure Flrig and other devices
Both Centos 6 and Centos 5
-------------------------
- Before you reboot:
- look at /boot/grub/grub.conf and make sure the new kernel is there at
the top of the listing and it's expected to boot by default
- Make sure the new kernel modules are present
find /lib/modules//kernel/drivers/net/hamradio/
for example:
find /lib/modules/2.6.32-220.7.1.el6.ax25.x86_64/kernel/drivers/net/hamradio/
--
baycom_ser_hdx.ko
baycom_ser_fdx.ko
mkiss.ko
yam.ko
hdlcdrv.ko
6pack.ko
bpqether.ko
baycom_par.ko
--
If you're happy with the kernel install, grub, etc., go ahead and reboot
to start up the new kernel
Once rebooted, make sure that the AX25 kernel module is available by
running the command and making sure the kernel module is present:
/lib/modules/`uname -r`/kernel/net/ax25
You can also check by looking at
grep AX25 /boot/config-`uname -r`.el5ax25
that should come back with something like:
--
CONFIG_AX25=m
CONFIG_AX25_DAMA_SLAVE=y
--
The AX.25 code that's built into the kernel from the above stages creates the
foundation but now you need the toolkit to create the solution. That solution
comes in three main packages: ax25apps, ax25tools, and libax25. None of these
packages are available for stock Centos so we need to build them ourselves but
it's not too hard.
With that said, there was a bit of fragmentation in this area for some time.
The source packages from the official AX25 tools site on sourceforge.net are:
1) OLD and aren't current (have known bugs)
2) Don't have the required .SPEC files to build clean RPMs
Here is a breakdown of the primary versions out there and what I recommend:
Official release AX.25 Tools:
-----------------------------
NOT Recommended
-----------------------------
The currently "released" ax25-tools at version 0.10rc2 has many known
problems. For example:
- If you try to run the netromd program and specifically the nrattach
command for each unique NR device, the ax25 tool will keep re-issuing
the name nr0 device and not issue a unique device name like nr0, nr1,
nr2, etc.
Bug report: http://blog.gmane.org/gmane.linux.hams/page=22
(Fixed in the F6BVP varient):
- When using ax25ipd for UDP wormhole connections, no connections
will work and in the system logs, you'll see errors of:
control byte non-zero
Bug report: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606338
(NOT Fixed in F6BVP code). To be addressed soon per Lee VE7FET
(6/21/12)
Official unreleased AX.25 Tools (CVS):
--------------------------------------
NOT Recommended
--------------------------------------
As part of the "Official" sources, there is the CVS version of the tools
available at http://www.linux-ax25.org/wiki/CVS . Though newer than the
officially released code, it still lags behind the fixes available from
the VE7FET and F6BVP versions mentioned below. A few notes:
1. As of 10/20/11, this CVS version contains some fixes over the "stable"
release but this CVS tree is still very old
WARNING: When you install the CVS code, it may DELETE any existing
configuration files in /etc/ax25. Make sure you backup that
directory before installing this new code
Un-Official AX.25 Tools for FPAC:
---------------------------------
NOT Recommended
---------------------------------
** I learned via an email dialog with F6BVP on 6/16/2012 that VE7FET merged
in all of Bernard's changes as of September 2011 and the VE7FET version
has now superceeded F6BVP's version.
There is a version of the AX.25 tools from the maintainer of the FPAC packet
suite. This version is also considered to be much better than the official
AX25 Tools CVS tree but it suffers the same risk as the VE7FET project
mentioned in #2 above.
http://f6bvp.free.fr/logiciels/ax25/
Un-Official AX.25 Tools from VE7FET:
------------------------------------
** Recommended **
---------------------------------
The final repository was a third fork of the AX.25 tools with many fixes
applied and as of Sept. 2011, has also become the recommended version for
FPAC support as well. The same risk remains if it has all the fixes that
are in the official CVS repo but it seems this version of the libraries
are the best ones to use today:
http://code.google.com/p/linuxax25/
Ok, got all that? If your head is spinning, just pick the VE7FET code!
Creating RPMs from SRPMs for the AX.25 tools:
---------------------------------------------
For creating RPMs, the VE7FET versions of AX.25 tools source code have SPEC
file included.
You can get the SPEC files from the VE7FET archives following the next section's
steps. If you're going to use VE7FET's spec files, go ahead and skip this next
section:
Making your own SPEC files:
---------------------------
If you want to put the spec files together youself with the with the
older source code:
--
https://fedoraproject.org/wiki/SIGs/AmateurRadio/Packages
Additional great places to download RPMs and SRPMs if you can't find them
from the Fedora repo:
http://www.rpmfind.net/linux/rpm2html/search.php?query=portaudio
http://ftp.w1nr.net/opensuse/repositories/hamradio/openSUSE_11.1/src/
Back to the Fedora site, this page is a little funky on how to use it. In
the table, find the "Koji" colum. Following list of apps, click on
the Koji number for the respective app.
NOTE: It seems that Centos 5.x's RPM program claims that the FedoraCore11
packages are corrupt and thus, it seems the F11 packages are
incompatible but the FC9 versions seem ok.
BTw, if you didn't already know it, RHEL 5/CENTOS 5 uses the same
libraries, etc as FedoraCore 9!
Building up the recommended VE7FET sources:
-------------------------------------------
#Get and put the sources in the right place
cd /usr/src/redhat/SOURCES
wget -O ax25apps-1.0.2.tar.gz \
http://linuxax25.googlecode.com/files/ax25apps-1.0.2.tar.gz
wget -O ax25tools-1.0.2.tar.gz \
http://linuxax25.googlecode.com/files/ax25tools-1.0.2.tar.gz
wget -O libax25-1.0.3.tar.gz \
http://linuxax25.googlecode.com/files/libax25-1.0.3.tar.gz
Extracting the spec files:
--------------------------
cd /usr/src/redhat/SPECS
tar xzvf /usr/src/redhat/SOURCES/ax25apps-1.0.2.tar.gz ax25apps-1.0.2/ax25apps.spec
mv ax25apps-1.0.2/ax25apps.spec .
rmdir ax25apps-1.0.2
tar xzvf /usr/src/redhat/SOURCES/ax25tools-1.0.2.tar.gz ax25tools-1.0.2/ax25tools.spec
mv ax25tools-1.0.2/ax25tomls.spec .
rmdir ax25tools-1.0.2
tar xzvf /usr/src/redhat/SOURCES/libax25-1.0.3.tar.gz libax25-1.0.3/libax25.spec
mv libax25-1.0.3/libax25.spec .
rmdir libax25-1.0.3
Next, as of ax25tools-1.0.2, there is a bug in the hdlcutil Makefile. To fix this, I
recommend you just use my updated SPEC file and simple patch:
cd /usr/src/redhat/SPECS
wget -O ax25tools.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/Old/ax25tools.spec
cd /usr/src/redhat/SOURCES
wget -O ax25tools-1.0.2.diff ihttp://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/ax25tools-1.0.2.diff
Now compile and install the RPMS in this SPECIFIC order (it matters):
+------------------------------------------------------------------------+
| NOTE: These commands assume a 64bit kernel. If you don't have a 64bit |
| kernel, use "--target=i686" instead |
+------------------------------------------------------------------------+
- libax25
-------
#compiles without any other RPMs
#
#Compile it:
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=x86_64 libax25.spec
#
#Install it:
cd /usr/src/redhat/RPMS/x86_64
+-----------------------------------------------------------------------------------------------------------------+
| Important: |
| When you install this newer set of libs, they WILL conflict |
| with Centos's stock AX.25 libraries found in Glibc. This |
| cannot be avoided until the kernel sources are updated. |
| It's important to understand that: |
| |
| 1. To install this new RPM, you will have to force it to |
| overwrite the stock libs. If you don't FORCE the install |
| you will see errors like: |
| |
| Preparing... ########################################### [100%] |
| package libax25-devel-1.0.3-1.x86_64 is already installed |
| file /usr/include/netax25/ax25.h from install of libax25-devel-1.0.3-1.x86_64 \ |
| conflicts with file from package glibc-headers-2.12-1.80.el6_3.7.x86_64 |
| |
| 2. Once overwritten, future glibc Yum upgrades will give |
| fatal errors and you won't be able to properly update |
| your system. To work around this issue, download |
| and run the following script before running the usual |
| "yum update" command. |
| |
| http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/yum-ax25-upgrade-workaround.sh |
| |
| Once run, the script will then RE-INSTALL the conflict |
| libax25-devel package. Your system will then be up to |
| date. |
+-----------------------------------------------------------------------------------------------------------------+
#Forcing due to conflicts with the stock Glibc ax.25 libs
rpm -ivh --force libax25-1.0.3-1.el6.x86_64.rpm libax25-devel-1.0.3-1.el6.x86_64.rpm
- ax25-apps
---------
#compiles without any other RPMs dependencies
#
#Compile it:
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=x86_64 ax25apps.spec
#
#Install it:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh ax25apps-0.0.8-rc2.1.el6.x86_64.rpm
- ax25-tools
----------
#compiles without any other RPMs dependencies
#
#Compile it:
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=x86_64 ax25tools.spec
#
#Install it:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh ax25tools-1.0.2-1.x86_64.rpm
#There seems to be a minor error with this RPM as
#it doesn't create the required dir structure
#for mheard. Let's fix that
mkdir -p /var/ax25/mheard
+------------------------------------------------------------------------------+
| LEGACY: -- DO NOT USE -- |
| |
| Below is the legacy details in using the F6BVP sources. Saved for posterity |
+------------------------------------------------------------------------------+
#Get and put the sources in the right place
cd /usr/src/redhat/SOURCES
wget -O ax25-apps-0.0.8-rc2.1.patched_f6bvp.tar.bz2 \
ax25-apps-0.0.8-rc2.1.patched_f6bvp.tar.bz2
wget -O ax25-tools-0.0.10-rc2.patched_f6bvp.tar.bz2 \
ax25-tools-0.0.10-rc2.patched_f6bvp.tar.bz2
wget -O libax25-0.0.12-rc2.patched_f6bvp.tar.bz2 \
libax25-0.0.12-rc2.patched_f6bvp.tar.bz2
As mentioned above, this repo doesn't include any SPEC files to build RPMs
either but you can get the SPEC files from my site or get and modify the
ones from the Fedora group:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/
#Get the baseline SPEC files (using my TrinityOS versions):
cd /usr/src/redhat/SPECS
wget -O ax25-apps.f6bvp.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/Old/ax25-apps.f6bvp.spec
wget -O ax25-tools.f6bvp.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/Old/ax25-tools.f6bvp.spec
wget -O libax25.f6bvp.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/Old/libax25.f6bvp.spec
De-compress the archives and we have to rename them to make things match up
for a clean RPM build:
cd /usr/src/redhat/BUILD
libax25
-------
tar xjvf ../SOURCES/libax25-0.0.12-rc2.patched_f6bvp.tar.bz2
mv libax25-0.0.12-rc2.patched_f6bvp libax25-0.0.12
tar cjvf ../SOURCES/libax25-0.0.12-rc2.patched_f6bvp.tar.bz2 libax25-0.0.12/
ax25-apps
---------
tar xjvf ../SOURCES/ax25-apps-0.0.8-rc2.1.patched_f6bvp.tar.bz2
mv ax25-apps-0.0.8-rc2.patched_f6bvp ax25-apps-0.0.8-rc2.1
tar civf ../SOURCES/ax25-apps-0.0.8-rc2.1.patched_f6bvp.tar.bz2 ax25-apps-0.0.8-rc2.1/
ax25-tools
----------
tar xjvf ../SOURCES/ax25-tools-0.0.10-rc2.patched_f6bvp.tar.bz2
mv ax25-tools-0.0.10-rc2.patched_f6bvp ax25-tools-0.0.10
tar civf ../SOURCES/ax25-tools-0.0.10-rc2.patched_f6bvp.tar.bz2 ax25-tools-0.0.10
If you choose to modify the Fedora SPEC files and not use mine, you'll need to
edit each one of those SPEC files to reflect the correct f6bvp archive
name, versioning, and changelog:
libax25.f6bvp.spec
------------------
Version: 0.0.12
Release: rc2.patched_f6bvp%{?dist}
Source0: http://f6bvp.free.fr/logiciels/ax25/%{name}-%{version}-rc2.patched_f6bvp.tar.bz2
* Fri Sep 17 2010 0.0.12rc2-patched_f6bvp
- Patched libax25 for fixes unavailable in the official AX25-tools sources
- SPEC file created by dranch@trinnet.net
----------------------------------------------------------------------------
ax25-apps.f6bvp.spec
--------------------
Version: 0.0.8
Release: rc2.1%{?dist}
Source0: http://f6bvp.free.fr/logiciels/ax25/%{name}-%{version}-rc2.1.patched_f6bvp.tar.bz2
BuildRequires: autoconf, automake, libtool
* Sun May 09 2010 0.0.8rc2-patched_f6bvp
- Patched ax25-apps for fixes unavailable in the official AX25-tools sources
- SPEC file created by dranch@trinnet.net
ax25-tools.f6bvp.spec
---------------------
Version: 0.0.10
Release: rc2%{?dist}
Source0: http://f6bvp.free.fr/logiciels/ax25/%{name}-%{version}-rc2.patched_f6bvp.tar.bz2
remove any BuildRequires reference to fltk-devel
* Mon May 19 2010 0.0.10rc2-patched_f6bvp
- Patched ax25-tools for fixes unavailable in the official AX25-tools sources
- SPEC file created by dranch@trinnet.net
Now compile and install the RPMS in this SPECIFIC order (it matters):
+------------------------------------------------------------------------+
| NOTE: These commands assume a 64bit kernel. If you don't have a 64bit |
| kernel, use "--target=i686" instead |
+------------------------------------------------------------------------+
- libax25
#compiles without any other RPMs
#
#Compile it:
rpmbuild -bb --target=x86_64 libax25.f6bvp.spec
#
#Install it:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh libax25-0.0.12-rc2.patched_f6bvp.el6.x86_64.rpm libax25-devel-0.0.12-rc2.patched_f6bvp.el6.x86_64.rpm
- ax25-apps
#compiles without any other RPMs dependencies
#
#Compile it:
rpmbuild -bb --target=x86_64 ax25-apps.f6bvp.spec
#
#Install it:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh ax25-apps-0.0.8-rc2.1.el6.x86_64.rpm
- ax25-tools
#compiles without any other RPMs dependencies
#
#Compile it:
rpmbuild -bb --target=x86_64 ax25-tools.f6bvp.spec
#
#Install it:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh ax25-tools-0.0.10-rc2.el6.x86_64.rpm
#There seems to be a minor error with this RPM as
#it doesn't create the required dir structure
#for mheard. Let's fix that
mkdir -p /var/ax25/mheard
+-----------------------------------------------------------------------+
| NOTE: |
| If you used the Official AX25 repository source code, there are |
| some significant bugs you should be aware of and fix them |
+-----------------------------------------------------------------------+
To fix the above mentioned Netrom issue, do the following as both
the Fedora Project AX25 tools and the offical AX25 tools are very
VERY old (the F6BVP code has this already fixed):
- goto the FedoraProject URL and find the current ax25-tools
and click on the NUMBER for that table row
- Click on the FedoraCore8 builds as it's the only SPEC file that
will work for the baseline
ax25-tools-0.0.8-3.fc9.src.rpm
- Scroll down and search for the row that says "RPMS SRC"
and click on "download" into /tmp
- mv /tmp/ax25-tools-0.0.8-3.fc9.src.rpm /usr/src/redhat/SRPMS/
- rpm -Uvh /usr/src/redhat/SRPMS/ax25-tools-0.0.8-3.fc9.src.rpm
- Next, we need to download the current released version of
ax25-tools from http://www.linux-ax25.org/wiki/CVS which
should be the ancient 0.10RC2 into /tmp/
- cd /tmp; tar xzvf ax25-tools-0.0.10-rc2.tar.gz
- vim ax25-tools-0.0.10-rc2/netrom/nrattach.c
- find the lines:
#ifdef notdef
if (!startiface(dev, hp))
return 1;
#endif
- and DELETE the lines:
#ifdef notdef
#endif
- Now re-create the archive:
rm ax25-tools-0.0.10-rc2.tar.gz
tar czvf ax25-tools-0.0.10-rc2.tar.gz ax25-tools-0.0.10-rc2
cp ax25-tools-0.0.10-rc2.tar.gz /usr/src/redhat/SOURCES/
- Now to fix the spec file
vim /usr/src/redhat/SPECS/ax25-tools.spec
- # out the lines starting with:
Patch0:
Patch1:
%patch0 -p1
%patch1 -p0
- change the version from 0.0.8 to 0.0.10rc2
- change the release from 3 to 2
- under the %changelog%, add:
Sat Oct 15 2011 David Ranch 0.0.10rc2-2
- Fix nrattach for duped nr0
- Compile it:
rpmbuild -bb --target=i686 ax25-tools.spec
#Install it:
rpm -Uvh /usr/src/redhat/RPMS/i686/ax25-tools-0.0.10rc2-1.i686.rpm
- ax25-apps
#compiles without any other RPMs
#
#Fixes:
#
# control byte non-zero
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606338
diff ax25-apps-0.0.6/ax25ipd/kiss.c
73c73,75
< if (*iframe == '\0' || *iframe == 0x10) {
---
> if ((*iframe & 0xf) == 0) {
> /* dranch: changed due to for http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606338 */
> /* if (*iframe == '\0' || *iframe == 0x10) { */
#Compile it:
rpmbuild -bb --target=i686 ax25-apps-0.0.6-2.i686.rpm
#
#Install it:
rpm -ivh /usr/src/redhat/RPMS/i686/ax25-apps-0.0.6-2.i686.rpm
Centos kernels (both Centos6 and Centos5) have VERY OLD sets of ALSA libraries.
Update those via the ElRepo repository.
Why the update?
---------------
I was working with the primary Fldigi developer, W1HKJ Dave to track down
troublesome TX-based ALSA timeouts on specific modes like Contestia,
FeldHell, etc. on Centos5. He recommended to use the tip-of-tree ALSA and
PortAudio code vs. the ElRepo portaudio-0.19-8 RPMs:
NOTE: make sure you have the updated ElRepo ALSA RPMs installed first
links http://fedoraproject.org/wiki/EPEL --->
http://rpm.pbone.net/index.php3/stat/4/idpl/14102996/dir//com/alsa-kmdl-2.6.18-194.3.1.el5.centos.plus-1.0.20-80.el5.i686.rpm.html
- Install the newest ALSA RPMs and either reload the required kernel modules for
sound OR just reboot the computer
- Make sure your soundcard is being recognized once Alsa starts, run:
cat /proc/asound/cards
Also make sure it's running the expected version of ALSA:
cat /proc/asound/version
Back in the 1980s and 90s, hardware TNCs like Kantronics KPC, AEA PK232, etc.
were required to interface a radio to a computer to support the AX.25 packet
protocol (and other protcols like RTTY, Amtor, etc). Advancedments in computer
CPUs allowed the ability to use an inexpensive soundard to connect to the radio
and use software to do all TNC-like functionality.
One of the first software-TNCs for Linux was Thomas Sailer's "soundmodem" which
can support multiple simultaneous radios running at 300 / 1200 / 2400 / and
even 9600 baud.
+-----------------------------------------------------------------------+
| UPDATE - 03/21/13: |
| |
| HF Packet |
| --------- |
| It's generally understood that soundmodem's 300B HF performance |
| is pretty poor and though some patches have been submitted to the |
| linuxhams Vger list, I didn't notice any real improvement. |
| |
| VHF Packet |
| ---------- |
| I've been doing various research on SoftTNC decoding for VHF |
| packet and it seems that Tom Sailer's soundmodem packet doesn't |
| perform nearly as well as some of these other solutions. Some |
| reasons include: |
| |
| - Single and multi-bit error correction |
| - per-packet multi-pass flat and 6db/octive filtering |
| - multiple off-frequency decoders |
| |
| Some of the new Linux options are: |
| |
| DireWolf: http://home.comcast.net/~wb2osz/site/ |
| JavAX25: https://github.com/sivantoledo/javAX25 |
| |
| I'm actively researching these and will add one of them to this |
| documentation set. Until then, I encourage you to read.. |
| |
| - the User-Guide.pdf included with the DireWolf archive |
| - the QEX article on JavAX25 at |
| www.tau.ac.il/~stoledo/Bib/Pubs/QEX-JulAug-2012.pdf |
| |
+-----------------------------------------------------------------------+
Thomas Sailer's Soundmodem:
---------------------------
The soundmodem version in the Fedora SRPM is very old and the sources must be
replaced! Unfortunately, the SPEC file included in the main sources at
http://www.baycom.org/~tom/ham/soundmodem/ is also broken so we're going to
need to stich the two SPEC files together.
Get the soundmodem sources here:
cd /usr/src/redhat/SOURCES
wget -O soundmodem-0.16.tar.gz \
http://www.baycom.org/~tom/ham/soundmodem/soundmodem-0.16.tar.gz
Get the SPEC file:
I recommend you save yourself the work of merging the two SPEC files
by using my TrinityOS SRPM here and everything is ready to go:
cd /usr/src/redhat/SPECS
wget -O soundmodem.spec \
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/soundmodem.spec
Skip all the manual work and go to the next section to compile the RPM
-----------------------------------------------------------
If you want to do all the work manually, get the SRPM here:
-----------------------------------------------------------
cd /usr/src/redhat/SRPMS
wget -O soundmodem-0.12-1.fc9.src.rpm \
http://kojipkgs.fedoraproject.org/packages/soundmodem/0.12/1.fc9/src/soundmodem-0.12-1.fc9.src.rpm
Now install the SRPM with
rpm -ivh /usr/src/redhat/SRPMS/soundmodem-0.12-1.fc9.src.rpm
You can download the updated SPEC here:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/
+-----------------------------------------------------------------------+
| For 32bit systems only - see section 1 for compile time optimizations |
| for optimizations on 64bit systems |
+-----------------------------------------------------------------------+
edit the soundmodem spec file yourself and update the version to 0.16
- In the %configure section, add:
./configure --enable-mmx
+-------------------------------------------------------------------+
| NOTE: 64bit systems |
| |
| The use of --enable-mmx is NOT valid on x86_64 systems and |
| if you try to use it, you'll get compile errors including: |
| |
| simd.c:64: Error: suffix or operands invalid for `pushf' |
| simd.c:65: Error: suffix or operands invalid for `pop' |
| simd.c:68: Error: suffix or operands invalid for `push' |
| simd.c:69: Error: suffix or operands invalid for `popf' |
| simd.c:70: Error: suffix or operands invalid for `pushf' |
| simd.c:71: Error: suffix or operands invalid for `pop |
| |
| from what I can tell, should no longer give you any |
| major performance improvements as the newest compilers should |
| make the best choice of optimizations |
+-------------------------------------------------------------------+
- In the changelog section, add a note on the new version
+---------------------------------------------------------------------+
| HEADS Up: If you plan on using Soundmodem on 300Baud HF, there was |
| a patch posted from IZ6RDB to the |
| linux-hams@vger.kernel.org list on 3/2/2012 which |
| supposedly significantly improves 300 BAUD operations. |
| I'm trying that patch now |
| |
| patch -p1 < soundmodem-300b.patch |
+---------------------------------------------------------------------+
Compiling Soundmodem:
---------------------
Soundmodem requires the following RPMs to be installed first before you
can compile it up.
#yum install gtk2-devel
#
NOTE: will install 14 other RPMs if not already installed
#yum install alsa-lib-devel
#
NOTE: will install without any other RPMS
#yum install audiofile-devel
#
NOTE: will install without any other RPMS
Now compile it:
cd /usr/src/redhat/SPECS
#for 64bit systems
rpmbuild -bb --target=x86_64 soundmodem.spec
#For 32bit systems
rpmbuild -bb --target=i686 soundmodem.spec
and install it:
#For 64bit systems
rpm -ivh /usr/src/redhat/RPMS/x86_64/soundmodem-0.16-1.el6.x86_64.rpm \
/usr/src/redhat/RPMS/x86_64/soundmodem-devel-0.16-1.el6.x86_64.rpm
#For 32bit systems
rpm -ivh /usr/src/redhat/RPMS/i686/soundmodem-0.16-1.i686.rpm
To test your kernel for AX25 support, you have to install the ax25
kernel module. Follow the "Getting Basic Packet up and running"
section above on how to do that
There is a lot more to packet radio that just connecting to BBSes.
- Did you know there are Packet NETs out there? Even as of January 2012?
Read more here:
- Theory and Practical packet tutorials for VHF and HF:
-----------------------------------------------------
I recommend you read much of these up front over lots
of coffee. Maybe play as you go but there are a tips
and tricks in those URLs that really help make packet
work MUCH MUCH better. The TrinityOS packetrig.sh
script has much of these leassons interated into it
-----------------------------------------------------
http://www.choisser.com/hamradio/packet.html
#Getting started with Packet radio
http://www.qbjnet.com/packet.html
#Detailed breakdowns of all TNC details
http://www.rain.org/~jkrigbam/packet.htm
#Setting proper AFSK and audio levels for packet TNCs and other digital
#modes
http://www.febo.com/packet/layer-one/transmit.html
#More good details on Packet
http://www.vectorbd.com/bfd/packet/index.html
What is a "digipeater" vs. a "node"
------------------------------------
Beyond reading the excellent links in the "Packet Tutorial" section
above, packet users can reach a remote station in one of four ways:
direct, digipeated, node, or NetRom/ROSE/KNet:
Example:
o ------ o ------ o ------ o ------ o
My first second third destination
station hop hop hop
Digipeated:
-----------
A packet that is digipeated is sent with an explicit routing path
from the originating packet machine. With that digipeated path, every
follow-on packet will also follow that path. When traversing that say
three hops path, the packet is copied from one hop to the next but if
there is a decode failure mid-path, the packet is lost and the
originator's system will have to wait until it's AX.25 stack times out
and re-transmits the original packet. A VERY slow process. It's generally
accepted that digipeating more than THREE hops will be unreliable as you
significantly increase a packet's chances of getting corrupt, be collided
with, etc. with each additional hop.
Noded:
------
Using intermeadiate nodes to send relay packets is different in the sense
in two main ways:
Manual connection
-----------------
The packet originator has to manually *connect* to each hop in the path.
Putting it another way, the originator would create a connection to the
first hop, then create a connection from that machine to the second hop,
etc. until he or she reaches the desired destination. This is a somewhat
tedious process.
Automatic in-path re-transmission
---------------------------------
The major benefit of using nodes is that if there is a packet loss in the
middle of the path, the two intermeadiate nodes will automatically
re-transmit the lost packet and continue on. This is FAR more reliable,
faster, etc.
NetROM / ROSE / KNet:
---------------------
These three technologies are very similar to eachother in the sense that they
ALL send out periodic "route" updates advertising what local services your
machine offers (a PBBS, a full BBS, a Node, a digipeater, etc). Other machines
that understand these protocols then build a table of these nodes and how they
are interconnected. Once the "routing" table is built, this system allows to
simply connect to the destination machine without having to know the path YET
each packet is "NODED" along the path. Putting that another way, you get the
benefit of not having to manual create connections along the way like a NODE
yet if there is a packet failure mid-path, you don't have the performance and
delay issues that are experienced with a digipeater.
The AMPR network is an overlay network that runs over the Internet using the
Class-A 44.xx.xx.xx address range to interconnect other amateur radio systems.
Though initially used with Packet radio system, it uses your exising Internet
connection and can be used for anything as permitted over the airwaves per
your amateur radio license.
You can find a list of who's on the AMPR network today here:
ftp://hamradio.ucsd.edu/pub/amprhosts
A little technical background first:
Encapsulation Protocols
-----------------------
- The AMPR overlay network works with one of two different protocols:
IPIP - This "IP in IP" or AXIP tunneling protocol is recognized as
protocol 94 by the IANA and is still the primary protocol used to
connect to other AMPR hosts. Not every ISP forwards these packets
so it's wise to test for it first.
UDP - This is the very common User Datagram Protocol used over the
Internet today and the AMPR system calls it AXUDP. Though it's
much easier to get working, not all AMPR systems support it
today.
Overlay network Topology
------------------------
Remote AMPR Station reachabilty
--
As mentioned before, the AMPR network is an overlay network that runs on top
of the Internet. All remote endpoints are supposed to be directly reachable
via a full mesh (meaning every station has a tunnel to EVERY other remote AMPR
station). Though heavily frowned upon, you can sometimes reach remote AMPR
stations that are otherwise unreachable via the AMPR gateway machine
(amprgw.sysnet.ucsd.edu).
Internet access:
--
The AMPR system is completely available TO and FROM the Internet via the
above mentioned amprgw.sysnet.ucsd.edu machine.
NOTE: It used to be understood that this AMPR gateway machine (once called
mirrorshades) would *ONLY* allow outbound connections to the Internet
and the related REPLY traffic from the Internet. This has not been
the case for some time now
!!!!!!!!!
IMPORTANT: As such, once an AMPR tunnel is up between your
!!!!!!!!! machine and the gateway, you MUST run a firewall
to block any network attacks coming in from the
Internet via this new tunnel.
Remote Endpoint Advertisements
------------------------------
- The learning of remote stations to connect to is done via two mechanisms today:
encap.txt - This is a flat file that contains the AMPR IP address of a
given remote station and the public IP address to tunnel to
it. This file is downloadable from the Internet via an FTP
server and is automatically broadcasted to a specified email
address every day. It's via this file that people create a
full mesh of AMPR IPIP tunnels
rip44 - Based upon the classic distance-vector routing protocol from years
past, the use of this dynamic routing protocol is gaining popularity
since the update lag of the encap.txt file doesn't work well with
people who have dynamic Internet IP addresses.
Testing Home Network / AMPR Network Compatibility:
--------------------------------------------------
Before we go much further, I recommend you FIRST to see if you can receive IPIP
packets sent through your ISP. To do this, you need to coordinate with a HAM who
already has an AMPR system running. Your local AMPR IP coordinator should be
able to do this for you using a temporary IP address out of the 44.128.x.x
testing block. If your coordinator can't help you, , feel free to contact me and
I can send some traffic to you.
Once you have someone who can send you traffic, you'll need a packet sniffer on your
linux machine like "tcpdump" or wireshark to capture traffic off your Internet
connetion ideally before any specific network firewalls you might have installed.
Let's get started:
------------------
+-----------------------------------------------------------------+
| Assumptions: |
| |
| - You tested your ISP connection and you can get IPIP tunnel |
| packets to your AMPR Linux machine. |
| |
| - We are only configuring IPIP tunnels for now, AXUDP base |
| tunnels might be added at a later date |
| |
| - |
+----------------------------------------------------------------+
1) The first thing you need to do is get ahold of your local AMPR IP Coordinatator
for your country and region. Go to the following URL and click on your specific
country and then region:
https://portal.ampr.org/networks.php
Alternatively, you can also view the list at http://www.ampr.org/oldsite/amprnets.txt
Send an email address off to your coordinator giving your CALLSIGN, how many
IP addresses you want (you can ask for just one, a few or with a compelling
reason.. even a subnet), and what you'd like for the DNS hostname(s) to resolve
to. In my setup, I have:
44.4.10.39 - ki6zhd-5.ampr.org
44.4.10.40 - ki6zhd.ampr.org
44.4.10.41 - ki6zhd-dgw.ampr.org
2) It's important to sign up for the AMPR "44Net" email list to understand
what's going on in the network, ask questions, etc. It's very low volume:
http://hamradio.ucsd.edu/mailman/listinfo/44net
3) Once you have AMPR IP addresses, it's time to sign up to get access to
the encap.txt file. Log into the following site and apply for an account:
https://portal.ampr.org --> Register
Once you submit the form, you'll be emailed with a confirmation URL
that you click on, pass a challenge, and you'll again be emailed now
with a temporary password. Be sure to log into the system ASAP and
change your password to something more secure.
4) Setup your new AMPR IPs - This can be done one of two ways.. via the
brand new portal.ampr.org website or the original email-based "robot".
Web method:
-----------
- Log into the https://portal.ampr.org/ site with your username
and password
Gateways:
---------
- Goto Gateways --> Manage --> Add new gateway
- Title: Enter in a description of the tunnel (I called it "sclara
gateway")
- Gateway Hostname: The DNS hostname of the public/external Internet
IP address (really should be an optional field
here for Dynamic IP users)
- Gateway IP: This is the public/external Internet IP address on
your network. Dynamic IP address users will have to
update this from time to time as your IP changes
- Update Password Checkbox: Leave this unchecked
- Gateway Password: The password for this specific AMPR gateway entry.
This password should be UNIQUE from your primary
portal.ampr.org password as this password will be
required to be sent as CLEAR TEXT in an email if
you wish to use the email robot method
- Click on "Add" to create the initial gateway
- You will then be prompted to enter in the AMPR IP address(s) given
to you by your AMPR IP Coordinator. For me, I entered in:
44.4.10.40/32
and clicked on "Add Subnet"
- Again, click on "Add" in the middle of the page to create the final
gateway entry (little confusing eh?)
- If you'd like to get an email when the gateways get updated (encap.txt)
file, goto Gateways --> Options and enter in a password that you'd like
the encap.txt file to be sent to.
- To get a copy of the encap.txt file to get started with, go to
Gateways --> List and click on the "Download encap File" link
DNS:
----
- Goto DNS --> Manage to create a new DNS entry for your AMPR IP subnet(s)
- Click on "Add new Record" and using my setup as an example:
Hostname: ki6zhd
Type: A
Extra: <leave blank>
TTL: 24
Click on "Add" to complete the request. At that point, the request
will go to your AMPR IP Coordinator for approval. Once approved,
you should be able edit these records yourself in the future.
Email "robot" method:
---------------------
If you'd like to use the email robot method of setting up / changing
your AMPR gateway and subnets, read this for now until I get a chance
to document this:
https://portal.ampr.org/gateways_manpage.php
NOTE: Using the robots method is probably the best way to automate any
required changes for Dynamic IP address users
Work in progress
----------------
iproute2 munge script
http://www.wa7v.com/index.php?name=News&file=article&sid=20&theme=Printer
for 2.2. kernels
http://www.mail-archive.com/linux-hams@vger.rutgers.edu/msg06336.html
modprobe ipip
http://rob0.nodns4.us/Linux-ipip-tunnels
Split this section into TWO peices
trinity3:
must apply ip_masq_vpn patch to 2.2.26 kernels
- enable generic masq support as a MODULE (monilithic won't work)
- configure monolitic kernel support for protocol 4
./ipfwd --syslog --masq 192.168.0.20 4
hampacket2:
/sbin/ifconfig tunl0 44.4.10.40 netmask 255.255.255.255 mtu 512 up
/sbin/route add -net 44.0.0.0 netmask 255.0.0.0 tunl0 gw 169.228.66.251
#IPIP and AXIP VPN sync for amprgw.sysnet.ucsd.edu
-A INPUT -p 4 -s 169.228.66.251/32 -j ACCEPT
-A INPUT -p 44 -s 169.228.66.251/32 -j ACCEPT
#KG6BAJ
/sbin/ip route replace 44.2.14.1 via 50.79.156.221 dev tunl0 proto static onlink table 1
#need a way to clear MASQ table
http://www.gossamer-threads.com/lists/lvs/users/3515
#better security
http://www.linuxvirtualserver.org/docs/defense.html
--
http://www.fis.unipr.it/doc/piranha-0.8.4/docs/LVS-HOWTO/LVS-HOWTO-7.html
> Can we alter directly /proc/net/ip_masquerade ?
No, it is not feasible, because directly modifying masq entries will
break the established connection.
--
--
http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.operation.html
With the later versions of ip_vs (2.4.x), the director has its own copies of the tcpip timeout values, and you can change them.
Without a timeout values specific for each LVS virtual service and another for
the masqueraded connections it is difficult to play such games. It seems only
one timeout needs to be separated, the TCP EST timeout. The reason that such
support is not in 2.2 is because nobody wants to touch the user structures.
IMO, it can be added for 2.4 if there are enough free options in ipvsadm but
it also depends on some implementation details.
--
The configuration of the Linux system's AX25 isn't very difficult once you
understand all the different peices but unfortunately, there is a LOT of old
information out on the Internet showing different config file syntax, etc.
and it gets frustrating in a hurry!
In this example, I'm going to setup my system to connect to a Kenwood
D710 radio that has a built-in KISS TNC on serial device /dev/ttyUSB0
+-----------------------------------------------------------------------------+
| NOTE: my TrinityOS "packrig.sh" script documents a FAR more detailed and |
| extensive breakdown of how to configure, tune and operate a packet |
| station for multiple configurations. It includes the ability to: |
| |
| - switch between Hardware and software TNC configs |
| for VHF/UHF and HF packet |
| - depending on the frequency: |
| - switch the beacon strings |
| - switch linpac configs depending |
| - switch between different UNPROTO paths |
| - change the packet MTU, TXDELAY, etc. |
| - disables all suspend/hibernation ACPI |
| |
| http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/packetrig.sh |
| |
| To integrate into the doc: |
| -------------------------- |
| dependencies: |
| /etc/ax25/ |
| VHF and HF axports and soundmodem configs |
| /usr/local/sbin/ |
| disable-acpi-suspend.sh |
| no-sleep-machine.sh |
| sleep-machine.sh |
| tmd710_tncsetup |
+-----------------------------------------------------------------------------+
- edit or create the file: /etc/ax25/axports
#name callsign speed paclen window description
#change "N0CALL-8" to your callsign
d710 KI6ZHD 9600 128 2 Kenwood D710 TNC
This above file does the following:
- create a destination packet device called "d710"
- uses the callsign KI6ZHD for all identifying packets - you MUST
change this to use your own callsign
- It opens the serial port at 9600 baud
- this creates an MTU of 128 bytes which is smaller than usual
but will reduce retries if you have marginal links
- The value of 2 allows two unACKed packets to be outstanding at any
one time - this is similar to the TCP sliding window concept
- The remaining text is only a comment
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
- Start up the radio
------------------
In this example, I'm using the laptop's built-in soundcard with Linux's
"soundmodem" soft-TNC to a Kenwood TH-F6A HT. To control PTT, I wired up
a PTT circuit as recommended from one of my elmers:
http://www.dunmire.org/projects/DigitalCommCenter/index.html -->lTT
- Additional serial troubleshooting tools can be found in the Serial
troubleshooting chapter
- Tune the radio to a known active packet frequency. For
example, 144.910
- Make sure you set the squelch properly so an idle freqency isn't
"busy". Unless this is properly set, you'll never transmit!
- edit the /etc/ax25/axports
#device-name callsign speed paclen window description
sm0 KI6ZHD 9600 128 2 Kenwood D710 TNC
- #Load the AX25 kernel module
modprobe -a ax25
- run the program "soundmodemconfig" and follow the prompting but making changes
when required for your specific setup (sound card device, PTT serial port, etc):
- File --> New Config --> name it something.. I called mine "1200 packet"
- Now do File --> New Channel
"1200 packet"
| |
- | +--IO tab
| | |
| | +-- Mode: Soundcard (I needed "alsa")
| | +-- Audio Driver: /dev/dsp (I needed plughw:0,0)
| | +-- Half Duplex: NOT set (not sure if I need this set)
| | +-- Capture channel: Mono
| | +-- PTTY driver: /dev/ttyS0
| |
| +--Channel Access tab
| |
| +-- Tx delay: 0 (qbjnet has 300)
| +-- Slot time: 100 (qbjnet has 100)
| +-- P-Persistence: 40 (qbjnet has 64)
| +-- P-Persistence: 40 (qbjnet has 64)
| +-- Full Duplex: disabled (qbjnet has disabled)
| +-- TX Tail: 10 (qbjnet has 30)
|
+--Channel 0
|
+-- Modulator: off [default] (qbjnet has afsk)
| |
| +-- bits/s: 1200
| +-- frequency 0: 1200
| +-- frequency 1: 2200
| +-- Differential encoding: ENABLED
|
+-- Demodulator: off
| |
| +-- bits/s: 1200
| +-- frequency 0: 1200
| +-- frequency 1: 2200
| +-- Differential encoding: ENABLED
|
+-- Packet IO
|
+-- Mode: MKISS <------- If I set this to KISS, the CPU
| load for soundmodem would go to
| 100%
+-- Interface Name: sm0
+-- Callsign: N0CALL-8 <------- replace with your callsign
+-- IP address: 10.0.0.1 <------- change with your allocated AMPR IP (can be anything really)
+-- Network Mask
+-- Broadcast 10.0.0.255
Be sure to goto File --> Quit you you'll loose your settings.
+-------------------------------------------+
| To be updated for Centos6 with PulseAudio |
+-------------------------------------------+
Deviation Level tuning for Centos5 using ALSA
---------------------------------------------
There is an excellent write up at http://www.febo.com/packet/layer-one/transmit.html
" Setting Your TNC's Audio Drive Level Why it's important, and how to do it..." by
John Ackermann N8UR but below are notes for my specific Soundmodem setup but this
also applies to classic hardware TNC setups as well:
NOTE: In this section, "New Setting" settings reflects a newer Dell laptop
vs. "Old Setting" settings reflects an different, older Dell laptop.
These two different configurations have been kept to show users how both
different levels, pre-amp options, etc. can be depending on the computer
/ soundcard being used!
Turn ON the radio (in this example, a Kenwood TH-F6A HT):
--
- On this radio, the bottom most Volume knob has one notch that's bigger than the others
New setting: Move it to point at the icon between the words
ENC and VOL (for my specific setup)
Old setting: Move it to the 10 O'clock mark (pointing right at
the apex of the bend for the battery clip)
Different sound Card mixer tools:
---------------------------------
There are several Sound card mixer programs you can use to set the RX and
TX levels on your various soundcards and each of the programs have their
own merits:
alsamixer (ncurses tool) -- 07/01/11
- Alsamixer is a NCURSES CLI-based tool that works every time
and gives numbers to note down what the difference levels are.
It's installed as part of the alsa-utils RPM and can run
anywhere.
aumix (kmix doesn't give any numbers) -- 11/15/09
- aumix is a very nice Xwindows based mixer application but
since it's somewhat old, it's not very common anymore
kmixer (kmix doesn't give any numbers)
- Being a KDE guy, this mixer is installed by default and
works very well. The problem with it is that it doesn't
show numbers for the level settings but just sliders shown
against very fine hash marks. This makes re-setting levels
difficult.
Running the following should restore the Mixer settings:
/sbin/alsactl restore
Just to confirm your settings:
Settings used on my personal (New) Dell Lattitude using the "alsamixer"
NCURSES-based interface
--
Playback: (new)
- Use TAB to get to the proper sound device
- use "M" to mute or un-mute
--- alsamixer -------- aumix------------------------------------
Master : 00 -- green 00 (allow output)
Master Mono : 74 -- green 00
headphone : 45 -- green 00 (pskmeter likes 59)
3D control center : 0 -- 0
3D control depth : 0 -- 0
3D control : MM -- (monitor muted)
PCM : 71 -- green 00
PCM Out : pre 3D
Line : MM -- (monitor muted)
CD : MM -- (monitor muted)
Mic : MM -- (monitor muted)
Mic Boost : MM -- (monitor muted)
Mic Sel : Mic1 --
Video : MM -- 0
Phone : MM -- 0
IEC958 : MM --
IEC958 playback : -- 0
AUX : MM -- 0 - NOT green
Mono Out : Mix -- i
Beep : MM -- 0 - NOT green
External Amp : MM --
balance : Vol Bal -- 50
Capture: (new) (RED means input is enabled)
- Use TAB to get to it
- use "M" to mute or un-mute
---- alsamixer ------- aumix------------------------------------
3D Control center : 0 -- 0 - RED
3D Control depth : none -- 0 - RED
line : line -- 0 - not RED : not green
CD : CD -- 0 - not RED : not green
Mic : Capture -- 0 - RED : not GREEN
*(yes, you want a level of 0)
Video : Video -- 0 - not RED : not green
Phone : PhoneIn -- 0 - not RED : not green
EC958 playback : none -- 0 - RED
Aux : Line1 -- 0 - not RED : not green
Capture : Capture -- 0 - RED : not green
Mix : none -- 0 -
Mix Mono : none -- 0 -
================================================================
output (older)
----Kmix ------------- aumix------------------------------------
Master : vol -- 68 - green (allow output)
Master Mono : phoneOut -- 74 - green
headphone : PCM2 -- 45 - green (pskmeter likes 59)
3D control center : none -- 0
3D control depth : none -- 0
PCM : PCM -- 71 - green
IEC958 playback : none -- 0
PC speaker : none -- 0 - NOT green
balance : Vol Bal -- 50
input: (old) (RED means input is enabled)
----Kmix ------------- aumix------------------------------------
3D Control center : none -- 0 - RED
3D Control depth : none -- 0 - RED
line : line -- 0 - not RED : not green
CD : CD -- 0 - not RED : not green
Mic : MIC -- 0 - RED : not GREEN
Video : Video -- 0 - not RED : not green
Phone : PhoneIn -- 0 - not RED : not green
EC958 playback : none -- 0 - RED
Aux : Line1 -- 0 - not RED : not green
Kmix switches:
---------------------------------------------------------
3D Control - switch - not yellow
Mic Boost (+20db) - not yellow
IEC958 - not yellow
Mix - not red
Mix Mono - not red
External Amplifer - not red
PCM out path and mute - pre 3D
MIC select: - Mic1 (built-in mic)
Mono Output Select: - Mix
OLD original -- Dell Latitude
--
**********************************************************************
* NOTE: *
* Some mixer functions disable other configured features. One *
* such feature is the "Switches: Mix Mono". It's critical *
* that this is RED for this specific soundcard! *
**********************************************************************
Kmix
Running the following should restore the Mixer settings:
/sbin/alsactl restore
Just to confirm your settings:
output
---------------------------------------------------------
master: 55% green: (allow output)
master mono: 1% - green
3D control sigmatel depth: 0% <-- critical
PCM: 100% - green
PC speaker: 0% - NOT green
balance: -0- (middler)
input: (RED means input is enabled)
---------------------------------------------------------
RED ) - 3D Control sigmadel - Depth: 100%
not red - line - 100% - GREEN
not red - CD - 50% - not GREEN
not red - Mic - 50% - not GREEN
not red - Video - 50% - not GREEN
not red - Phone - 50% - not GREEN
not red - Aux - 50% - not GREEN
RED - Capture - 100% - not GREEN
switches:
---------------------------------------------------------
----> 3D Control - switch - YELLOW - if off, greatly lowers output
also makes output STEREO
Mic Boost (+20db) - not yellow
Mix - not red
critical ---> Mix Mono - RED
External Amplifer - not red (also activates Mix Mono)
Sigmatel 4spkr stereo - not red (also activates Mix Mono)
Sigmatel surround phase inversion - not red (also activates Mix Mono)
MIC select: Mic1 (built-in mic)
Mono Output Select: Mix
Saving and restoring your levels:
---------------------------------
Once you have the sound levels where you want them, the way to SAVE these settings
for all your various soundcard settings is to use the command:
/sbin/alsactl save
If at any time you want to revert to your previous saved levels, run the command:
/sbin/alsactl restore
Soundmodemconfig - Confirming you levels
----------------------------------------
Time to tune soundmodem's input levels
----
NOTE:
----
Next, this part is stupid but you CANNOT use soundmodemconfig's
diagnostics while soundmodem is running so make sure soundmodem is
NOT running
run soundmodemconfig as root:
- Soundmodem's graphics don't have any ticks or level outputs to
confirm the input levels. To work around this, get a ruler and
some tape ready
- highlight "channel 0" and in the menu bar, you'll now see diagnostics.
- Select scope, you should see a scope view with an X and Y axis.
Move and tape the ruler to where the X axis is.
NOTE: This process is VERY CPU intensive. On my P3-500, it chokes but
me and another user are coming to the conclusion that these
diagnostic hangs might be due to ALSA issues and not a video
card or CPU power limitation. Still researching this one..
NOTE2: if soundmodemconfig updates for about 5 seconds and then stops
on you, don't worry about it. When finished, soundmodem
will probably run fine for you.
- So now that you have a ruler showing a level of 0, shutdown
soundmodemconfig, load it again and choose scope:
--> the majority of the waveform peaks should not exceed
~1/2" to 5/8" inches over the zero baseline. Some peaks will
go over but that's ok
- NOTE3: look in the terminal window that's running the
soundmodemconfig, you should see decodes like:
--
Packet: fm K6KP-6 to QST-0 UI^ pid=CD
.........l..@@l,..........,...
Packet: fm K6SNY-0 to BEACON-0 UI pid=F0
K6SNY / K6SNY-1 at the Sunnyvale EOC
--
- NOTE4: It seems that soundmodemconfig's decodes seem to show
MORE decodes than what axlisten shows. It could be
that axlisten doesn't do all the same CRC checking.
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
Once Soundmodem is configured, let's manually start up the soundmodem process:
#-R is for realtime scheduling, -M to not let it get swapped out
#-v 5 is for extended logging
#
/usr/sbin/soundmodem -RM -v5
-----
NOTE:
-----
Now, I'm a KDE guy but if you ask anyone who's used KDE for a long
time, they will probably tell you about KDE's sound system "arts"
and how it's crap. Well, being crap, it bit me here again. So to
avoid my issue:
- In the KDE control panel, goto Sound & MultiMedia -->
SoundSystem.
In here, there are two settings:
- Enable the network sound (maybe not)?
- set the autosuspend to 1 second
If that doesn't help, you'll have to make sure you disable
ARTS from ever starting/running.
If soundmodem starts, you'll see something like this:
--
sm[6853]: mkiss: ifname sm0 mtu 256 hwaddr KI6ZHD-0 ipaddr 10.0.0.1 netmask
255.255.255.0 broadcast 10.0.0.255
ALSA: Using sample rate 9600, sample format 2, significant bits 16, buffer
size 4800, period size 144
ALSA: Using sample rate 9600, sample format 2, significant bits 16, buffer
size 4800, period size 144
sm[6853]: audio: starting "plughw:0,0"
sm[6853]: audio: forcing half duplex mode
--
You'll also see the interface in /sbin/ifconfig
--
sm0 Link encap:AMPR AX.25 HWaddr KI6ZHD
inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:256 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
--
Ok, things are getting close but a few things to know:
1. the diagnostic views in soundmodem usually seem to freeze on most
machines. Newer versions of soundmodem have fixed this but also make
sure you're running newer versions of the ALSA sound system.
2. You MUST make sure that soundmodem, kissattach, and ax25d are NOT
running before you start everything up. If you don't, you'll see errors
like:
tty_speed: tcgetattr: Invalid argument
use this set of commands to make sure things are clean:
killall ax25d
killall kissattach
killall soundmodem
So you have the basics for an AX.25 setup now so lets let get things to come up
reliably though on a manual fashion:
[ Here is a quick hint but see below...]
#Connect the cables, turn on the radio, set it to 144.390 (APRS)
/sbin/modprobe mkiss
#open soundmodemconfig and check the levels
# as root
/usr/bin/soundmodemconfig
#bring up soundmodem (as root)
/usr/sbin/soundmodem -v5
#You should see:
#
# sm[11301]: mkiss: ifname sm0 mtu 256 hwaddr KI6ZHD-0 ipaddr 10.0.0.1
# netmask 255.255.255.0 broadcast 10.0.0.255
# ALSA: Using sample rate 9600, sample format 2, significant bits 16, buffer
# size 4800, period size 144
# ALSA: Using sample rate 9600, sample format 2, significant bits 16, buffer
# size 4800, period size 144
# sm[11301]: audio: starting "plughw:0,0"
# sm[11301]: audio: forcing half duplex mode
# NOTE: errors like the following seem to not hurt operation:
#
# snd_pcm_start in iotxstart: Broken pipe
# ------------
# OPTIONAL - to enable KISS interfaces
#Bring up the sm0 interface:
/usr/sbin/kissattach /dev/ttyS0 sm0 44.94.11.8
#
# #You should see:
# #
# # AX.25 port sm0 bound to device ax0
Instead of running all those manual commands above, I've consolodated much of
this startup and shutdown details into one powerful startup script:
+-----------------------------------------------------------------------------+
| This "packrig.sh" script documents a FAR more detailed and extensive |
| breakdown of how to configure, tune and operate a packet station for |
| multiple configurations. It includes the ability to: |
| |
| - switch between Hardware and software TNC configs |
| for VHF/UHF and HF packet |
| - depending on the frequency: |
| - switch the beacon strings |
| - switch linpac configs depending |
| - switch between different UNPROTO paths |
| - change the packet MTU, TXDELAY, etc. |
| - disables all suspend/hibernation ACPI |
| |
| http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/packetrig.sh |
| |
| To integrate into the doc: |
| -------------------------- |
| dependencies: |
| /etc/ax25/ |
| VHF and HF axports and soundmodem configs |
| /usr/local/sbin/ |
| disable-acpi-suspend.sh |
| no-sleep-machine.sh |
| sleep-machine.sh |
| tmd710_tncsetup |
+-----------------------------------------------------------------------------+
9. - AX.25 Packet programs - Bringing up the other useful packet applications and daemons
As part of the ax25-apps package, there are several basic programs to make
connections. Let's talk about two of them in particular:
- ax25_call :: a simple connection tool similar to TELNET that
can connect to remote AX.25, NetROM, ROSE, etc.
hosts from the ax25-tools RPM
- this tools has aliases to be netrom_call, rose_call
and even tcp_call
- call :: a better AX25 conenction tool similar to TELNET for
TCP/IP. Supports a basic interface as well as a
'talk' style split screen. Comes from the ax25-apps
RPM. Works well though Linpac is even nicer
Say you're in Silicon Valley trying to connect to K6SNY-1. To do so, you you
would enter:
ax25_call sm0 K6SNY-1
- axcall is the program
- sm0 is the AX.25 device
- in my examples, sm0 would be for a Soundmodem-based device or
d710 for a Kenwood D710 based HW-TNC
- K6SNY-1 is the remote destination
Other examples:
- To connect to a directly reachable AX.25 machine, I would do:
call d710 woody
- To connect to a indirectly reachable AX.25 machine via a digipeater,
(not recommended for over 3 hops away), I would do:
call d710 berry via woody
- To connect to a indirectly reachable AX.25 machine via a node,
I would do:
call d710 woody
#wait for the connection to establish
#Using the Kantronics "c" command, connect to the remote host "berry"
c berry
- To connect to a remote machine via NetROM, I would do:
# This assume your have a) Netrom configured on your system
# (covered below) and b) the remote destination is loaded
# in the Netrom route table. Shown with "route -A netrom"
#
call netrom berry
A GOOD connection to K6SNY-1 according to axlisten would show:
#This is a connection request
fm KI6ZHD-8 to K6SNY-1 ctl SABM+
#This is a completed connection
fm K6SNY-1 to KI6ZHD-8 ctl UA-
#This is a transmit of the "?" character (the trailing . is a terminator)
fm KI6ZHD-8 to K6SNY-1 ctl I00^ pid=F0(Text) len 2 0000 ?.
#This is a connection keepalive
fm KI6ZHD-8 to K6SNY-1 ctl RR0+
#This is a disconnect request
fm KI6ZHD-8 to K6SNY-1 ctl DISC+
#This is a disconnect confirmation
fm K6SNY-1 to KI6ZHD-8 ctl DM-
A BAD connection according to axlisten would show:
[root@hampacket sbin]# axlisten
axconfig: port APRS not active
sm[29369]: snd_pcm_start in iotxstart: Broken pipesm0: fm KI6ZHD-8 to W6XSC-2
ctl DISC+
Broken pipes like this one for sm0 reflect OLD versions of soundmodem
and you need to upgrade it
As you've seen, you can make basic, outgoing connections but Linux AX.25 can do SO much
more using tools from the ax25-suite as well as 3rd party tools. For example:
#ax25d daemon - similar to inetd which will start services based on incoming requests
/usr/sbin/ax25d
#You should see:
#
# axconfig: port APRS not active
# nrconfig: unable to open nrports file /etc/ax25/nrports (No such file or directory)
# rsconfig: unable to open rsports file /etc/ax25/rsports (No such file or directory)
#Log and track users you system hears
/usr/bin/mheardd
#beacon - Announce your presence on a given frequency
beacon -d BEACON -t 10 sm0 "Welcome the new HAM to AX.25.. still working on it"
To monitor all of the received packets as well as ones you sent,
there are two KEY programs you should be aware of:
listen :: listens to ALL packets sent and received
This is already running in the packetrig.sh script
and you can just tail the log file
------------------------------------------------------------
/usr/bin/listen -8artp
Make sure it DOESN'T say "axconfig: port sm0 not active"
mheard :: shows last heard stations with optional things like
via what digipeater, etc. "man mheard"
Doesn't show the frequency but it's very similar
to the "last" command in Unix
------------------------------------------------------------
mheard
---------------
AX.25 Messaging
---------------
9a. - ax25mail-utils - AX.25 messaging tools for used with Linpac
One thing I've been missing on my system is a simple way for users to leave messages
and for me to reply to them. Below I describe what I've found and the integration
of axmail-utils with Linpac gets close but ultimately, Linpac wants to forward those
messages on to a remote FBB BBS. I don't want that.. I want it all local and
without using a Mail Transfer Agent (MTA) which won't let me reply to the user's
message without them having a Unix account on my box! Gahhh!!
Read on to see what I've found so far..
axmail-utils:
-------------
This suite is used by say Linpac to transfer messages to/from a FBB
BBS. Most of the versions on the internet are stale and cannot compile
due to it looking for the pre-2.4 head files such as netax25/kernel_ax25.h
and netax25/kernel_rose.h. Fortunately, Debian has an updated patch set
that gets things working ok:
cd /usr/src/redhat/SOURCES
#no, the debian sourced one is no different
wget http://sourceforge.net/settings/mirror_choices?projectname=ax25mail&filename=ax25mail-utils/0.11/ax25mail-utils-0.11.tar.gz
#get the debian patches
wget http://ftp.sv.debian.org/ubuntu/ubuntu/pool/universe/a/ax25mail-utils/ax25mail-utils_0.11-6.1.diff.gz
#Optionally, you can find them on my site as well:
# wget -r -l1 --no-parent -nd -A ax25mail* www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/
gunzip ax25mail-utils_0.11-6.1.diff.gz
#Next, download my patch and ax25mail-apps.spec file from:
cd /usr/src/redhat/SOURCES
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/ax25mail-utils_0.11-ulistd.diff
cd /usr/src/redhat/SPECS
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/ax25mail-utils.spec
#Ok, time to build it:
#for 64bit systems
rpmbuild -bb --target=x86_64 ax25mail-utils.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/ax25mail-utils-0.11-7.1.el6.x86_64.rpm
#for 32bit systems
rpmbuild -bb --target=i686 ax25mail-utils.spec
rpm -ivh /usr/src/redhat/RPMS/i686/ax25mail-utils-0.11-7.1.el6.i686.rpm
Once you install the RPM, you'll need to manually create the following
directory (I couldn't get the %dir macro to work properly in the .spec file):
mkdir /var/ax25/ulistd
---
If you are manually doing things without the .spec file
-------------------------------------------------------
cd /usr/src/redhat/BUILD
tar xzvf ../SOURCES/ax25mail-utils_0.11.orig.tar.gz
cd ax25mail-utils-0.11.orig/
vi ulistd/ulistd.c and delete the two lines:
#include >netax25/kernel_ax25.h< // new for libax25
#include >netax25/kernel_rose.h< // required by axlib.h
patch -p0 < ../SOURCES/ax25mail-utils_0.11-6.1.diff
./configure
make
make install
Incomplete - To do:
-------------------
Once installed, the ax25mail-utils prgram needs the following configuration
files to be configured to relay mail to/from Linpac:
/etc/ax25/axgetlist.conf
/etc/ax25/axgetmail.conf
/etc/ax25/bulletins.OK0PAB
/etc/ax25/logins
/etc/ax25/ulistd.conf
Out of the box, this program can forward/relay messages from FBB, JNOS, and
a few other BBSes and it seems extensible to support other BBSes as well.
NOTE: I have tried configuring these files but regardless of what
I do (I've tried all kinds of callsign permutations, etc), when
I run ulistd, I always get:
no BBS specified in configuration file /etc/ax25/ulistd.conf
If you know the solution to this error, I'd love to hear from you
on what I'm doing wrong!
---------------------------------------------------------------------------
PMS:
---
There is an old program called "pms" which was apart of the deprecated
ax25-utils package. This program only receives messages and it forwards
the resulting message to email via Sendmail (no simple / local PBBS mail)
and it also doesn't support sending messages to other hams using your PBBS
as their mailbox. This program also does not support reading any messages.
This program was abandoned a long time ago when the ax25-utils package was
broken into the ax25-apps and ax25-tools packages.
Axmail:
-------
I found this Axmail program (0.0.5) at http://benghi.wz.cz/vyvoj.html but
this program also uses Sendmail to send/receive emails and it also uses the
axspawn mechanism to dynically create Unix accounts to support new users
on demand.
Inbox
-----
A HAM has posted his Perl version of what is similar functionality to
what the PMS program does. Unfortunately for me, it still uses a local
MTA to deliver messages and doesn't provide any way for me to respond
to the user's message like one could on a classic TNC PBBS.
http://www.kingsqueak.org/2011/10/a-linux-packet-radio-personal-message-inbox/
Still researching this for a viable PBBS canidate on Linux as of 08/03/12
10. - Advanced AX.25 configuration, Netrom, Node services, and Troubleshooting
10a. - ax25spyd - Next generation packet monitoring daemon
Ax25spyd is very much like the "listen" program that comes with ax25-apps where it
acts like a sniffer on your AX.25 interfaces but it has two key differences:
- It's broken into two pieces:
ax25spyd - Runs as root and provides network socket connections to
other clients. This allows other programs that required
being run as ROOT to now run as individual users (more
secure)
- It also can detect transit packet messages and send them
to a SMTP host.
- Can capture all traffic on a per-callsign basis and
put it in /var/lib/ax25/ax25spyd/call1->call
ax25spy - A client to ax25spyd that can
- display the decoded AX.25 packets much like "listen" can
- Can display packets similar to a DX-cluster display
- Just show I, UI, IP, show unique QSOs,
Debian has a patched for the ax25spyd code that's more modern than
the official version ( http://linkt.de/ax25spyd/ ) and it works with modern
Linux kernels and libraries!
cd /usr/src/redhat/SOURCES
wget http://linkt.de/ax25spyd/ax25spyd-0.23.tar.gz
#Get the patch files from the Debian sources
wget http://ftp.de.debian.org/debian/pool/main/a/ax25spyd/ax25spyd_0.23-8.diff.gz
#Alternatively, you can find the patches from my site too
# wget -r -l1 --no-parent -nd -A ax25spy* www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/
#Next, download my ax25spyd.spec file from:
cd /usr/src/redhat/SPECS
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/ax25spyd.spec
#Ok, time to build it:
#for 64bit systems
rpmbuild -bb --target=x86_64 ax25spyd.spec
NOTE:
-----
I have seen a strange transient error where the build will FAIL with:
--
cd . && automake --gnu Makefile
configure.in:4: your implementation of AM_INIT_AUTOMAKE comes from an
configure.in:4: old Automake version. You should recreate aclocal.m4
configure.in:4: with aclocal and run automake again.
make: *** [Makefile.in] Error 63
error: Bad exit status from /var/tmp/rpm-tmp.sbVtCD (%build)
--
* If you try building the RPM several times back to back, it will eventually
* succeed. Dunno why and it's still happening as of 10/16/12! Maybe an
* issue with Automake??
# Now go ahead and install it
rpm -ivh /usr/src/redhat/RPMS/x86_64/ax25spyd-0.23-8.1.el6.x86_64.rpm
#for 32bit systems
rpmbuild -bb --target=i686 ax25spyd.spec
rpm -ivh /usr/src/redhat/RPMS/i686/ax25spyd-0.23-8.1.el6.i686.rpm
If you aren't going to build things via the SPEC file, follow this:
-------------------------------------------------------------------
cd /usr/usr/redhat/BUILD
tar xzvf ../SOURCES/ax25spyd_0.23.orig.tar.gz
gunzip ../SOURCES/ax25spyd_0.23-8.diff.gz
patch -p0 < ax25spyd_0.23-8.diff
./configure
make
NOTE: I've seen strange transient build error (shown above)):
--
To work around this, I ran "aclocal" which didn't give any output,
I then deleted the ax25spyd sources in /usr/src/redhat/BUILD,
re-untared the archive, and patched them and then re-did the
comfigure and make and things worked fine
Ok, now with things installed, just run src/ax25spyd as root for now:
NOTE: You can invoke "ax25spyd -s" which will create unique files in
/var/lib/ax25/ax25spyd\ for per-callsign detail
Please note that the KDE-based LinKT terminal program has a packet monitoring
program called MonKT that uses the ax25spyd daemon
10b. - AX.25 NetROM Routing and connections
Netrom - Netrom is a protocol that rides over AX.25 and has two main puposes
1. advertize known local neighbors with an associated link quality
in periodic "netrom" route updates
2. connect to remote stations found in the netrom route table without
requiring the user to know each of the hops to get to that
final destination
To configure Netrom on Linux, first you need to configure the /etc/ax25/nrports
file. In this example, the sole line configures SSID -5 which will announce
the "SCLARA" node alias which will resolve back to KI6ZHD-5.
The first configured item in that file is the netrom DEVICE which nothing can
connect (this is similar to the "ax0" interface that's configured but never
directly used. The next parameter is the callsign that is used when both
advertising netrom routes (both locally generated and optionally re-advertised
routes) and is the source callsign used when making Netrom connections. In this
example, I'm using an SSID of -5 for my outbound connections which is common for
Northern California Netrom nodes.
NOTE: The man pages speak of putting a # in front of the netRom alias of "SCLARA"
to mean it won't ever be announced by the NetRom system. I'm not sure if
the # trick is working as I still see SCLARA / KI6ZHD-5 getting announced
NOTE2: All of these "aliases" listed here must be UNIQUE to the netrom
table in your area. Please make sure you MONITOR your chosen
frequencies and netrom systems before choosing these names. Here in
Norcal, the general recommendation is to have a netrom alias that
calls out your general location.
NOTE3: blank lines in this file are NOT legal!!
--
# /etc/ax25/nrports
#
# The format of this file is:
#
# name callsign alias paclen description
#
netrom KI6ZHD-5 SCLARA 235 node
--
Finally, we need to edit the /etc/ax25/nrbroadcast file. This file controls
which AX.25 ports we will send NetROM broadcasts over and how it learns
routes.
NOTE: Please consider setting the VERBOSE setting to 0 unless your system
offers high level coverage!! If you have a low level machine like
most of us, the routes you'll be advertising are probably going to be
inferior to those other high level routes. You'll also be sending
these poorer routes all the time, polluting the airwaves!
For me, I use the following:
- d710 - matches up with the radio port definition in /etc/ax25/axports
- min_obs - minimum obsolescence count - when learning remote routes, a
heard route must have a OBS value HIGHER than this value to be
considered valid and entered into the local table and possibly
be re-advertized
- def_qual - this "default quality" is the initial value we first set to the
route
- worst_qual - minimum quality of a received route to be added to the local
netrom table
- verbose - A setting of verbose=0 will NOT advertise learned routes and
only advertise locally generated routes (ourself). A setting
of "0" is a GOOD default until you a) have a good handle on
NetROM routing and b) you're machine has good reachability to
other nodes and your system can handle the potential transit
traffic
--
# /etc/ax25/nrbroadcast
#
# The format of this file is:
#
# ax25_name min_obs def_qual worst_qual verbose
d710 5 190 100 0
--
Next, bring up the netrom interfaces by issuing:
/sbin/modprobe netrom
/usr/sbin/nrattach -i 44.4.10.40 netrom
--------------------
VERY IMPORTANT NOTE:
--------------------
After running each one of those nrattach lines (if you have multiple), you
should get a new "nr" device like nr0, nr1, nr2. If you don't a unique
device and instead each line reuses nr0, you're running a buggy version of
the ax25-tools package! The solution to this is to either add a patch
(disscused in the section where this document covered the installation of
the ax25-tools package OR (probably the more recommended way if you're
starting from scratch), use newer versions of the AX tools (be it the
CVS version "official AXTools" (last updated June 2011), the FPAC / F6BVP
version, or the VE7FET version posted on Github.
--
Finally, to get the netrom service running, issue the commands where:
-i : will send a netrom route update immeadiately
-l : turns on logging for both programs
-t 30 : send updates every 60 minutes
/usr/sbin/ax25d -l
/usr/sbin/netromd -i -l -t 60
# NOTE: These commands are fully integrated into the master packetrig.sh script
Make Netrom connections locally:
-------------------------------
As part of the ax25-apps package, the "call" program can make direct Netrom
connections. The man page eludes to this but what if fails to mention that
for the "port", you need to use the netrom device as defined in
/etc/ax25/nrports! As an example, if I make a regular AX.25 connection
with:
call d710 woody
I would make a netrom call by doing the following:
call netrom wbay
I bet you might be able to create Netrom connections via Linpac but
you need to be able to change the port from say "d710" to "netrom".
You might be able to do this on a per-F-key basis but I haven't looked.
Two other useful programs:
- nrparms :: manually create NetROM routes
- nodesave :: Store (and optionally reload) learned netrom routes
--
If you have a machine running a long time on a frequency
and it's stored up a long list of NetROM routes, you can
SAVE them from the /proc/net/nr_routes file with this
tool which creates a shell script that you can simply
run to restore these routes if you had to reboot, etc.
Do be careful about this and try not to use very old
saved tables as nodes come and go all the time!
For example, I use:
/usr/sbin/nodesave /var/ax25/nr-routes-145050.sh
Important note:
---------------
To help make all of this easy and reliable, ALL of these configurations are
already present in my TrinityOS packetrig.sh master shell script!
10c. - AX.25 Node Services - locally ACKed connections
A node program allows remote users to connect to your machine and then
initiate connections from your machine on to other machines. This is
superior to digipeating as each hop can do per-link retries vs. with
digipeating, the souce has to do retries all the way through the path.
This specific issue is very error-prone.
There are at least five Node programs out there for Linux that I know of:
- FPAC - Part node, part ROSE protocol, part packet switch. I haven't
used this program yet but I plan on it in the future!
http://www.f6fbb.org/fpac/fpac.html
- Actively maintained!
- Unode - Recommended : A renamed fork of the last available version of
the UroNode software available at:
https://github.com/kd1zd/Unode/tarball/master
- Not actively maintained
- UroNode - Abandoned : A heavily modified version of Anznode that has
additional features such as Flexd for FlexROM routing code beyond
all the features available in Linuxnode. Unfortunately, the
author seemingly dropped off the net (all web pages are broken,
etc.) as well as a copy of the software source code is
unavailable
- Anznode - A fork of the original Linuxnode that added several major
features but was abandoned. See below for supported commands.
- Linuxnode - (called Node) which is the original node version which works
but previously had KNOWN security issues. Unknown if those
security issues were resolved.
You can read about other nodes, what made them unique, their prompts, etc.
here:
http://www.proaxis.com/~wagnerj/ka7ehk/map/noderef.html
Unode
-----
The Unode software offers not only a NODE like interface for remote users
to hop packets off your system but also offers many other features. For
example, here is the main prompt given to a remote user:
--
?, Bye, Connect, Desti, Escape, Finger, Help, HOst, Info, INTerfaces
Links, MHeard, MSg, Nodes, Ping, Quit, Quit, Routes, SEssions, Status
Telnet, Users, Version, Who, WInlink
--
Unode is also extensible and you can add additional node commands by
calling other local commands. For example, I've also seen machines
setup to allow for the following:
--
?, Bye, CAllbook, CLuster, Connect, CONVers, Escape, Finger, Help, HOst
Info, Links, Mheard, NLinks, Nodes, PIng, Ports, Routes, Status, TAlk
Telnet, Users, ZConnect, ZTelnet
--
--
LinuxNode - Comes as part of ax25-tools (for historical comparison)
-------------------------------------------------------------------
Supported commands are:
?, Bye, Connect, Escape, Finger, Help, HOst, Info, Links, Mheard
NLinks, Nodes, PIng, Ports, Routes, Status, TAlk, Telnet, Users, ZConnect
ZTelnet
Anznode (for historical comparison)
----------------------------------
Supported commands are:
!, ?, Bye, Connect, Dest, Escape, Finger, Help, HOst, Info
Links, MHeard, MSessions, Nodes, PIng, Ports, Routes, Send, TAlk, Telnet
Users
Anyway, for this document, we're going to setup Unode. To get the software,
get it direct from Github but then it needs to be cleaned up a bit:
cd /usr/src/redhat/SOURCES
wget https://github.com/kd1zd/Unode/tarball/master
#Next, lets rename it and update it to reflect a new version
mv master kd1zd-Unode-f685a9a.tar.gz #This is v1.0.0-1
cd /usr/src/redhat/BUILD
tar xzvf ../SOURCES/kd1zd-Unode-f685a9a.tar.gz
mv kd1zd-Unode-f685a9a Unode-1.0.1
tar czvf ../SOURCES/Unode-1.0.1.tgz Unode-1.0.1/*
NOTE: The "configure" script in the Unode package is:
a) a Shell script and not the normal configure script
that you would expect. It's interactive and thus
can't be automated
b) If run, will call everything UroNode where as the
pre-configured Makefile will call everything
"Unode".
c) It seems this package includes a previously compiled
version of axdigi from the original FlexNode package
but I have no idea if this will run. I would recommend
to later DELETE this file and compile up your own
from this "Flexnode" package
NOTE#2: To fix many of those issues (and several others), I've posted
several patch files at the followowing URL and they are REQUIRED
if your going to use my spec file shown below:
cd /usr/src/redhat/SOURCES
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/Unode*
#Get the spec file from my directory
#
cd /usr/src/redhat/SPECS
wget -o unode.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/Unode.spec
#Get all the patches too..
cd /usr/src/redhat/SOURCES
wget -r -l1 --no-parent -nd -A Unode* www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/
#Ok, time to build it:
#for 64bit systems
rpmbuild -bb --target=x86_64 Unode.spec
rpm -Uvh /usr/src/redhat/RPMS/x86_64/Unode-1.0.0-1.x86_64.rpm
#for 32bit systems
rpmbuild -bb --target=x86_64 Unode.specc
rpm -ivh /usr/src/redhat/RPMS/i686/Unode-1.0.0-1.i686.rpm
Once installed, the RPM installs several files in /etc/ax25:
- Make sure the nrports and nrbroadcast files are configured as
mentioned in the previous section
Configuring Unode
-----------------
unode.conf - the main configuration file
- In this file, you need to change the following:
- IdleTimeout : leave this value at 900 (15min)
- ConnTimeout : leave this value at 600 (10min)
- HostName : to reflect your callsign - Ideally, you have already
requested an AMPR IP address through your local AMPR
coordinator. If you don't know how, email me and I'll
help you out with this very simple process
- ReConnect : This is optional but I personally like to set this to ON.
With this, when the user disconnects from a remote
station, they will drop back to your node
- LocalNet : If you have an AMPR address, put it in here with the
right subnet mask. if not, give it a unique IP that is
in the RFC1918 range with a /32 mask
- NodeId : replace OH2BNS-10 to your callsign. For me, I set it
to the following where the first paramater is an
ALIAS to this node (if you set one in
/etc/ax25/nrports and the next one is your
callsigni+SSID for the node. For me:
SCLARA:KI6ZHD-5
- Alias : I recommend you DISABLE any pre-defined Aliases with a #
until you a) know what commands you want b) have an
operational AMPR connection (for some of these examples)
and c) and understand the security
implications. Any aliases added here will show up in
the "node" interface when people are connected to it
- ExtCmd : I recommend to disable any pre-defined Aliases with a #
until you know what you want and understand the security
implications. Any aliases added here will show up in
the "node" interface when people are connected to it
- NrPort : Outgoing interface name used for NetROM connections.
The default is "netrom" but if not defined here,
it will either use the FIRST entry in /etc/ax25/nrports
or you can make it match somthing ELSE in the
/etc/ax25/nrports. I'm using my configured alisa of:
SCLARA
- LogLevel : once your comfortable with the setup, you should drop
the logging level to say 2
- NodePrompt : DEPRECATED - not sure if this is honored anymore
I recommend to # out the top \n example and re-enable the
bottom one for now with the full string but change the
callsign to reflect your own:
"\nSCLARA:KI6ZHD-5> "
If you have specific questions, do a "man node.conf" and "man node"
unode.motd - the message displayed when users connect to it
- There isn't much to change in this one
unode.perms - permissions
- When a user connects to Unode, it presents the user with a slew of options
as shown at the beginning of this section. I recommend to # out all lines
for any pre-defined users and CHANGE the default permission items to the
following.
# user type port passwd perms
* ax25 * * 7
* netrom * * 7
* rose * * 7
* local * * 7
* ampr * * 7
* inet * * 7
* host * * 7
You can have PER callsign permissions if you want but for now, my defaults
are the following as callsigns are easily spoofed. See unode.perms for
details but the following "perms" values is for:
- permits logging in even if no other permissions are given
- permits outgoing AX.25 / Flexnet connects
- permits outgoing NET/ROM connects
- permits outgoing ROSE connects.
- DOES NOT permit telneting to hosts in the "local" network as
defined in node.conf(5).
- permits telneting to hosts in amprnet (only enable
if you have a working AMPR.ORG connection running)
- DOES NOT permit telneting to hosts neither in the "local"
network nor in amprnet (aka, hosts on the Internet, etc)
- DOES NOT permit using hidden ports in outgoing AX.25 connections
- Escape mechanism for this user is still enabled
- No ANSI colors - who knows what the remote users are using.
Linpac can deal with it but can Outpost, ipserial, UISS, etc?
The defaults are the following (which I think are WAY too open)
---------------------------------------------------------------
# user type port passwd perms
* ax25 * * 31
* netrom * * 31
* local * * 31
* ampr * * 31
* inet * * 0
* host * * 31
node.info - details on your station
- Edit this file to give some info on your station
ax25d.conf
----------
The final file we need to configure is the /etc/ax25/ax25d.conf file. This file
is very similar to the /etc/inetd.conf file but for AX25/Netrom/Rose/Flex RF links.
When a given RF connection packet comes in with the correct destination callsign
and SSID, this file will match the CALL+SSID to the configured program and start
it up.
For my specific configuration, I want the node to be associated with KI6ZHD-5
to my "d710" AX.25 connection (see the packetrig.sh script for full details).
To support running the Linuxnode software, the second stanza is required:
ax25d.conf
--
#To allow connections to KI6ZHD-5 from a AX.25 connection
[KI6ZHD-5 VIA d710]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node
#To allow connections to SCLARA from a AX.25 connection
[SCLARA VIA d710]
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/node node
#To allow connections to SCLARA from a Netrom connection
<netrom>
parameters 1 10 * * * * *
NOCALL * * * * * * L
default * * * * * * - root /usr/sbin/unode unode
--
That's it!
NOTE: If you had configured Linpac (previous section) to use the -5 SSID,
you should unconfigure that to avoid any conflicts in the
~/Linpac/macro/init.mac file
NOTE#2 When you eventually start up ax25d and it complains about the rsports
file for the Rose protocol, simply run "touch /etc/ax25/rsports" and
that will no
longer be a blocking error
------
09/09/11 - New issue with Unode
If I netrom OUT of my machine to WBAY, come back into it via SCLARA, and then
try to netrom BACK out to another machine, I get:
c WSTGAT
ERROR: connect_to: bind: Cannot assign requested address
------
------
Previous Issue with Unode (resolved in an above patch and the packetrig.sh script:
------
- If you try to run /usr/sbin/unode locally on the machine and you get:
$ /usr/sbin/unode
Segmentation fault (core dumped)
This means two things. One, you didn't apply the Unode-local-execution-coredump-fix.diff
patch from Steven, K6SPI. Alternatively, you can work around this issue
with putting the following command in your packet startup script. For
this setup, I put the following in the packetrig.sh script for my callsign
to username coorilation:
axparms -assoc KI6ZHD dranch
- The symptoms:
I have determined thast if you run Unode from localhost, the program
will coredump but it works *fine* via external RF links. I'm researching
this but it's not a fatal issue as ax25d will dynamically spawn new
connections as needed.
Here is my ongoing troubleshooting for this issue and this will be
removed once I resolve the issue:
--
1. I had to modify the spec files for unode and libax25 to add the
following line to be line #1:
%define debug_packages %{nil}
and then recompile those RPMs and install them. Additionally,
install the following debug RPMS:
yum --nogpgcheck --enablerepo=debug install glibc-debuginfo
yum --nogpgcheck --enablerepo=debug install zlib-debuginfo
[root@hampacket2 ~]# unode
Segmentation fault (core dumped)
[root@hampacket2 ~]# gdb unode core.10482
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-50.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /usr/sbin/unode...(no debugging symbols found)...done.
[New Thread 10482]
Missing separate debuginfo for
Try: yum --disablerepo='*' --enablerepo='*-debuginfo' install /usr/lib/debug/.build-id/ab/f8175ad6ad30041961679c2734a5e38494a951
Reading symbols from /usr/lib64/libax25.so.0.0.0...Reading symbols from /usr/lib/debug/usr/lib64/libax25.so.0.0.0.debug...done.
done.
Loaded symbols for /usr/lib64/libax25.so.0.0.0
Reading symbols from /usr/lib64/libax25io.so.0.0.0...Reading symbols from /usr/lib/debug/usr/lib64/libax25io.so.0.0.0.debug...done.
done.
Loaded symbols for /usr/lib64/libax25io.so.0.0.0
Reading symbols from /lib64/libz.so.1.2.3...Reading symbols from /usr/lib/debug/lib64/libz.so.1.2.3.debug...done.
done.
Loaded symbols for /lib64/libz.so.1.2.3
Reading symbols from /lib64/libc-2.12.so...Reading symbols from /usr/lib/debug/lib64/libc-2.12.so.debug...done.
done.
Loaded symbols for /lib64/libc-2.12.so
Reading symbols from /lib64/ld-2.12.so...Reading symbols from /usr/lib/debug/lib64/ld-2.12.so.debug...done.
done.
Loaded symbols for /lib64/ld-2.12.so
Core was generated by `unode'.
Program terminated with signal 11, Segmentation fault.
#0 axio_flush (p=0x0) at ax25io.c:168
168 if (p->zptr) {
From libax25-0.0.12/ax25io.c available at http://f6bvp.free.fr/logiciels/ax25/libax25-0.0.12-rc2.patched_f6bvp.tar.bz2
--
#ifdef HAVE_ZLIB_H
if (p->zptr) {
struct compr_s *z = (struct compr_s *) p->zptr;
int ret;
/*
* Fail immediately if there has been an error in
* compression or decompression.
*/
if (z->z_error) {
errno = z->z_error;
return -1;
}
. . .
--
To learn more on these node commands, install the software and then issue
the command "man node" once you have it all installed:
--------------
Legacy - The current Linuxnode program originally called "node" or called
"axnode" in Ubuntu supposedly has known exploitable security
issues - This section is set to be deleted once Unode is proven
to work, be superior, etc.
The following are LEGACY nodes for the original "node" package:
https://fedoraproject.org/wiki/SIGs/AmateurRadio/Packages
Find and click on "node and download the node-0.3.2-1.src.rpm file to
/usr/src/redhat/SRPMS
Now lets install and compile it:
#For Centos6, we need a pretty new version of this package so it won't complain about a
# missing kernel_rose.h header file
#
wget http://kojipkgs.fedoraproject.org//packages/node/0.3.2/10.fc18/src/node-0.3.2-10.fc18.src.rpm
rpm -Uvh /usr/src/redhat/SRPMS/node-0.3.2-4.fc9.src.rpm
cd /usr/src/redhat/SPECS
#For x64 machines
rpmbuild -bb --target=x86_64 node.spec
#For i686 machines
rpmbuild -bb --target=i686 node.spec
And now let's install it
#For x64 machines
rpm -Uvh /usr/src/redhat/RPMS/x86_64/node-0.3.2-10.el6.x86_64.rpm
After that, the /etc/ax25/node.perms file needs to be updated to reflect the
right security settings for your setup. Next, the /etc/ax25/node.conf file
needs to be edited to match the /etc/ax25/nrports file. These files are almost
IDENTICAL to the Unode file settings in the previous section.
10d. - AX.25 Tunneling over the Internet via AXIP or AXUDP
This is a placeholder to get me started but it has NOT been integrated
into the packetrig.sh script as of yet.
NOTE: Depending on your selection of the ax25-apps that you installed,
you might need to apply a patch or you will get fatal tunneling
errors. This is dicussed above in the AX.25 installation section
1. Update /etc/ax25/axports and define the ipct port
This is currently another filename as /etc/ax25/axports-udp
2. /usr/sbin/kissnetd -p2 &
- Please record the FIRST port and SECOND port out of that list
for follow-on commands
3. /usr/sbin/kissattach -l /dev/pts/7 ipct 44.4.10.40
- In this example, /dev/pts/7 camesfrom the output of the kissnetd
command above. 44.4.10.40 is my AMPR IP address and you need
to put in your OWN IP address that you can get free from your
local AMPR IP coordinator.
NOTE: Your kernel MUST have legacy /dev/pty support for this
work
4. From the output of command in step 2, take the SECOND port given (not the
first port) and put that into /etc/ax25/ax25ipd.conf for the "device" line
NOTE: socket ip - means proto 93
socked udp - mean UDP defaulting on port 10093
5. run /usr/sbin/ax25ipd
6. Per db0fhn security, you MUST log into Echolink via the same egress IP
address (easily done via NAT) as this AXUDP connection.
7. Connect to the remote station:
call ipct db0fhn
Scripting the PTY values:
1. See the JNOS section of the packetrig.sh script
2. http://wiki.complete.org/LinuxPacketRadio#ax25ipd-1
3. Other HAMs have used the "socat" program to script this PTY setup
10e. - AX.25 Packet traffic monitoring
Like any amateur radio transmission, all signals are broadcasted for all to hear
and it's sometimes useful to monitor the packet traffic on a given frequency.
In my packetrig.sh script discussed elsewhere in this document, it starts a
promiscuous "listen" process in the background that decodes all heard packets
and logs them to a file named /var/log/listen->date<.log. At any time,
you can view, tail, etc. this file to see what's been going on.
Pretty useful!
The issue with monitoring this traffic is is that there is a LOT of redundant
traffic on a channel with beacons, NETROM route updates, etc. With all that
"noise", viewing logs can get very tedious. My solution is the
filter-packet-listen-logs.sh that can be found at:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/bin/filter-packet-listen-logs.sh
This script needs to be modified by the reader to match your specific local
stations but it does greatly reduces the amount of repetive text that you
probably don't want. It's structured to filter out individual beacons in one
section and netrom updates in another section but also supports command line
options to reverse this behavior as well.
FUTURE: The "listen" process has the ability to color the text to make things
far more readible but saving this color information into a log file
makes parsing the data very difficult. As such, the packetrig.sh
script disables this coloring.
I hope to update the filter-packet-listen-logs.sh script to include
the use of supercat to re-color the output to make the resulting
filtered text more readible.
http://supercat.nosredna.net/
10f. - AX.25 Packet troubleshooting
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
CHOKE messages:
When a remote station tries to connect to your machine yet they "busy" messages
and the AX.25 packet decodes saying things like "CHOKE", this means your
/etc/ax25/ax25d.conf file doesn't know what to do with this request
for the specific PROTOCOL. To be clear, AX.25 connections use
the square brackets [], Netrom uses >< signs, and ROSE uses
{}. This problem was messing with me for the LONGEST time!
Connect/Disconnect:
When a remote station tries to connect to your machine yet the session
connects and then immeadiately disconnects, this most likely means
that the binary program (node, unode, etc.) as specified in the
/etc/ax25/ax25d.conf file is improperly configured or isn't there.
To confirm the network is listening, try the following commands:
/sbin/ifconfig :: Shows all interfaces (I've removed my internal
ethernet ones
----------------------------------------------------------------
ax0 Link encap:AMPR AX.25 HWaddr KI6ZHD
inet addr:44.4.10.40 Bcast:44.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MTU:128 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:1273 (1.2 KiB) TX bytes:246 (246.0 b)
nr0 Link encap:AMPR NET/ROM HWaddr KI6ZHD-14
inet addr:44.4.10.40 Mask:255.0.0.0
UP RUNNING NOARP MTU:235 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
nr1 Link encap:AMPR NET/ROM HWaddr KI6ZHD-1
inet addr:44.4.10.40 Mask:255.0.0.0
UP RUNNING NOARP MTU:235 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
nr2 Link encap:AMPR NET/ROM HWaddr KI6ZHD-5
inet addr:44.4.10.40 Mask:255.0.0.0
UP RUNNING NOARP MTU:235 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
To confirm that everything in /etc/ax25/axports is bound, the best I've been
able to find is:
ps aux | grep kissattach
NOTE: If anyone is aware of a way to find this via /proc or /sys, I'd
love to hear from you
Show all active AX.25 interfaces if everything is running including
Linpac:
netstat -A ax25 -an
---------------------------------------------------------------
Active AX.25 sockets
Dest Source Device State Vr/Vs Send-Q Recv-Q
* KI6ZHD-4 ax0 LISTENING 000/000 0 0
* KI6ZHD-3 ax0 LISTENING 000/000 0 0
* KI6ZHD-2 ax0 LISTENING 000/000 0 0
* KI6ZHD-1 ax0 LISTENING 000/000 0 0
* KI6ZHD-0 ax0 LISTENING 000/000 0 0
* ZHDNOD-0 ax0 LISTENING 000/000 0 0
* KI6ZHD-5 ax0 LISTENING 000/000 0 0
Show all active NetROM connections (if any):
netstat -A netrom -an :: Shows all active NetROM connections
------------------------------------------------------------
Active NET/ROM sockets
User Dest Source Device State Vr/Vs Send-Q Recv-Q
How to see the heard netrom table:
netstat -A netrom -rn
---------------------
Kernel NET/ROM routing table
Destination Mnemonic Quality Neighbour Iface
or
route -A netrom
-------------------
Kernel NET/ROM routing table
Destination Mnemonic Quality Neighbour Iface
WA7DG-4 ROSE 108 N6ZX-5 ax0
WA6YNG-1 RDG 108 N6ZX-5 ax0
KI6NCU-5 PONDER 107 N6ZX-5 ax0
KG6WOO-5 PLUMAS 134 N6ZX-5 ax0
WA6TOW-1 PAC 107 N6ZX-5 ax0
WW8L-3 OVALE 90 N6ZX-5 ax0
WB6YNM-11 MOC 143 N6ZX-5 ax0
KF6FPU-5 LIVER 143 N6ZX-5 ax0
KI6UDZ-7 FCITY 143 N6ZX-5 ax0
W6PJD-3 ELDOR 107 N6ZX-5 ax0
W6JEX-5 CORN 108 N6ZX-5 ax0
WG6D-6 CAM91 108 N6ZX-5 ax0
WG6D-8 CAM05 108 N6ZX-5 ax0
K7WWA-8 CAHTO 107 N6ZX-5 ax0
K6IXA-5 BULN 143 N6ZX-5 ax0
N6KRV-5 BRKNRG 107 N6ZX-5 ax0
K6JAC-4 BERRY 144 N6ZX-5 ax0
KF6DQU-9 BANNER 119 N6ZX-5 ax0
N6ZX-5 WBAY 190 N6ZX-5 ax0
Creating new netrom routes:
---------------------------
nrparms -routes
Creating remote IP routes via netrom:
------------------------------------
route add 44.2.14.100 nr0
To view the remotely learned NetROM routes, do:
-----------------------------------------------
cat /proc/net/nr :: Show all established netrom connections
-----------------------------------------------------------
user_addr dest_node src_node dev my your st vs vr va t1 t2 t4 idle n2 wnd Snd-Q Rcv-Q inode
show locally heard NetROM neighbors
cat /proc/net/nr_neigh
-----------------------------------------------------------
addr callsign dev qual lock count failed digipeaters
00003 WA6TOW-1 ax0 250 0 1 0
00002 N6ZX-5 ax0 250 0 26 0
00001 K6JAC-4 ax0 250 0 40 0
Shows all **learned**** NetROM routes from distant nodes:
netstat -A netrom an
or
cat /proc/net/nr_nodes
Quality >192 is exceptionally good. Good quality is 192. Poor quality is <120.
Zero quality means that the node can be heard but cannot be connected to reliably.
The obs number of additional nodes that can be connected from that destination node.
-------------------------------------------------------------------
callsign mnemonic w n qual obs neigh qual obs neigh qual obs neigh
WA7DG-4 ROSE 1 1 143 6 00002
WA6YNG-1 RDG 1 1 143 6 00002
KG6WOO-5 PLUMAS 1 1 176 6 00002
WD6EZC-5 PINOLE 1 1 188 6 00002
WA6TOW-1 PAC 1 2 250 6 00003 141 6 00002
K7URY-1 BLKMND 1 1 140 6 00001
K6LRC-2 ALM 1 1 132 6 00001
W6HMT-7 AUKUM 1 2 176 6 00002 176 6 00001
W7TA-4 RNO 1 1 141 6 00001
WX7RNO-2 NWSCHT 1 1 140 6 00001
W7DED-4 YRGTN 1 2 156 6 00001 118 6 00002
KE7CRZ-7 FERNLY 1 1 141 6 00001
N6ZX-5 WBAY 1 2 250 6 00002 188 6 00001
K6TUO-5 TUO 1 2 188 6 00002 188 6 00001
WX7RNO-3 NWSBBS 1 1 140 6 00001
KF6DQU-4 ROUGH 1 2 188 6 00002 188 6 00001
N6KRV-5 BRKNRG 1 2 142 6 00001 141 6 00002
WX7RNO-4 NWSRNO 1 1 141 6 00001
WB6YNM-11 MOC 1 2 188 6 00002 188 6 00001
KF6FPU-5 LIVER 1 2 188 6 00002 156 6 00001
K6LRC-1 LASSEN 1 1 141 6 00001
KJ6IX-10 IXRMS 1 1 140 6 00001
KJ6IX-2 IXCHT 1 1 140 6 00001
KJ6IX-3 IXBBS 1 1 140 6 00001
KJ6IX-4 KMEV 1 1 141 6 00001
KG6BAJ-2 GVCITY 1 2 188 6 00001 186 6 00002
N6SGR-1 FST 1 2 188 6 00001 143 6 00002
KE7CRZ-10 CRZRMS 1 1 140 6 00001
W6TUK-4 TUCK 1 2 143 6 00002 142 6 00001
W6PJD-3 ELDOR 1 2 142 6 00001 141 6 00002
W7DEM-10 DEMRMS 1 1 140 6 00001
W7DEM-2 DEMCHT 1 1 140 6 00001
W7DEM-3 DEMBBS 1 1 140 6 00001
W7DEM-4 CSN 1 1 141 6 00001
KE7CRZ-2 CRZCHA 1 1 140 6 00001
KE7CRZ-1 CRZBBS 1 1 140 6 00001
W6JEX-5 CORN 1 2 188 6 00001 143 6 00002
WG6D-6 CAM91 1 2 187 6 00001 142 6 00002
WG6D-8 CAM05 1 2 188 6 00001 143 6 00002
K7WWA-8 CAHTO 1 2 186 6 00001 141 6 00002
K6IXA-5 BULN 1 2 188 6 00002 188 6 00001
KF6DQU-9 BANNER 1 2 188 6 00001 156 6 00002
W6SV-6 WKRBSN 1 2 142 6 00001 141 6 00002
KI6UDZ-7 FCITY 1 2 188 6 00002 141 6 00001
K6JAC-4 BERRY 1 2 250 6 00001 189 6 00002
11. - Linpac - Advanced HF/VHF/UHF AX.25 packet terminal and PBBS
Linpac is a great packet termial program using TNCs in KISS mode. It seems to
emulate and surpass older premium programs like the KaGold program:
http://www.interflex.com/private/review1.htm
Though you can use the basic AX25 "call" program to connect to remote packet
nodes, etc...
- It gives you a keyboard to keyboard interface for MULTIPLE people
connecting to YOU
- allows for 8 simultaenous connections IN or OUT
- notifies you when people connect to you
- three views to show received, sent, and promiscuous decodes
- Supports a very easy to use UNPROTO mode
The main window where you can switch between SSIDs using the F-keys, see live decodes, etc:

Able to READ but not reply to messages (this will be fixed..):

+---------------------------------------------------------------------+
| There are TWO versions of Linpac available today: |
| |
| 0.17pre3 - an Ncurses based UI - old but simple and effective |
| |
| 1.0pre4 - a split client/server system with a Java-based client UI |
| Not covered in this document as of yet |
+---------------------------------------------------------------------+
The following instructions are for the Ncurses based Linpac 0.17pre3 for now
I've noticed that Linpac 0.16 stable will NOT compile cleanly
on Centos5 but version 0.17pre3 will. Because of this, you'll need
the newest version but let's steal the stable version's SPEC file:
Download the newest version of code:
cd /usr/src/redhat/SOURCES
wget -O LinPac-0.17pre3.tar.gz \
http://downloads.sourceforge.net/project/linpac/LinPac-unstable/0.17pre3/LinPac-0.17pre3.tar.gz
+-----------------------------------------------------------------------------+
| NOTE: Supporting local messaging |
| |
| Linpac can integrate with the axmail that can be found in the |
| axmail-utils package. Unfortunately, this program does NOT emulate |
| a classic PBBS like simple messaging system. This package is |
| designed to forward (proxy) messages to/from a FBB BBS and nothing |
| is local. |
| |
| See the "AX.25 Packet Programs" section for more mailing tool options |
+-----------------------------------------------------------------------------+
Next, download the SRPM at:
cd /usr/src/redhat/SRPMS
wget -O linpac-0.16-1.src.rpm \
http://downloads.sourceforge.net/project/linpac/LinPac/0.16/linpac-0.16-1.src.rpm
Now you need to get the various patches:
cd /usr/src/redhat/SOURCES
wget -r -l1 --no-parent -nd -A linpac* www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/
Now go ahead and install the SRPM
rpm -ivh /usr/src/redhat/SRPMS/linpac-0.16-1.src.rpm
I now recommend to rename and edit the SPEC file
mv /usr/src/redhat/SPECS/linpac-0.16.spec /usr/src/redhat/SPECS/linpac.spec
These instructions assume Centos6
cd /usr/src/redhat/SPECS
vim linpac.spec
Find the following lines:
%define name linpac
%define version 0.16
Source: %{name}-%{version}.tar.bz2
tar xvjf $RPM_SOURCE_DIR/%{name}-%{version}.tar.bz2
and change and/or add the following lines:
%define name LinPac
%define version 0.17pre4
%define debug_package %{nil}
Source: %{name}-%{version}.tar.gz
#For Centos6 users, add:
Requires: compat-gcc-34-c++-3.4.6
#Under the %install section, add the following as the first line
#and change the configure line
export RPM_BUILD_ROOT="/usr/src/redhat/BUILD/%{name}-%{version}"
./configure --includedir=/usr/include/c++/3.4.6
(notice the version change.. and yes, pre4 is correct.. see below)
(notice the capital L and the P)
(notice that last line changes a "j" to a "z" too)
+-----------------------------------------------------------------+
| Work in progress.. I plan on updating the above SPEC file to do |
| this all for you but it hasn't been done quite yet. Until |
| then, read below how to patch the code manually. |
+-----------------------------------------------------------------+
Ok, now we have the SPEC file in place but we need to update the
code a bit:
cd /usr/src/redhat/BUILD
tar xzvf ../SOURCES/LinPac-0.17pre3.tar.gz
cd LinPac-0.17pre4
# Change #1
#
# The stock Linpac 0.17pre3 version has a limitation that it cannot use
# more than one digipeater for UNPROTO communications. Don't fret, make
# the following changes to the src/commands.cc file to allow 7 digipeaters
This is the 'diff -u' of the changes. To make the changes manually, just
file around line 644 and make the changes show with the "+". You can also
find this patch at:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/patches/linpac-digi-length.patch
--
+++ commands.cc 2010-08-22 15:50:51.000000000 -0700
@@ -644,8 +644,9 @@
if (com_ok(chn, echn, cmd, "UNDest")) {
if (is_next())
{
+ strcpy(result, "ki6zhd digi patch enabled");
nextp(gps);
- normalize_call(gps);
+ //---- normalize_call(gps);
emit(chn, EV_UNPROTO_DEST, 0, gps);
}
else strcopy(result, sconfig(0, "cwit"), 256);
--
Next, Centos6's C++ compiler is far stricter that Centos5's compiler. So
we have to make some updates to the code to fix various minor issues:
vim src/applications/mailer/mail_call.cc
line 80: const char *p = strchr(addr, '@');
vim src/applications/mailer/mail_route.cc
#include <string.h>
vim src/applications/forward.cc
line 131: const char *p;
vim src/keyboard.cc
#include <string.h>
# Change #2
#
# The stock Linpac 0.17pre3 version has a limitation that it will always
# a OSS soundcard and can't be unconfigured. This patch makes it ALWAYS
# us the PC speaker
This is the 'diff -u' of the changes. To make the changes manually, just
file around line 644 and make the changes show with the "+". You can also
find this patch at this URL with 'patch -p0 < linpac-digi-length.patch':
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/patches/linpac-digi-length.patch
--- src/applications/bell.cc.orig 2011-11-27 19:25:04.000000000 -0800
+++ src/applications/bell.cc 2011-11-29 20:12:28.000000000 -0800
@@ -55,9 +55,10 @@
active = lp_start_appl();
lp_event_handling_off();
- if (active) lp_appl_result("Ringing...");
+ if (active) lp_appl_result("Ringing (PC speaker only)...");
- dsp = open("/dev/dsp", O_RDWR);
+ /*ki6zhd / dranch: disabled soundcard and using PC speaker only*/
+ /* dsp = open("/dev/dsp", O_RDWR);
if (dsp != -1) //soundcard present
{
i = AFMT_U8;
@@ -70,6 +71,7 @@
else //soundcard not present - use speaker
{
int i;
+ */
console = open("/dev/console", O_RDWR);
if (console == -1) printf("\a"); //nothing usable, try BEL char.
for (i=0; i < 10; i++)
@@ -78,7 +80,7 @@
sound(800); wait(20000);
}
nosound();
- }
+ /* } //disabling of the soundcard */
if (active) lp_end_appl();
return 0;
}
+----------------------------------------------------------------------+
| NOTE: |
| Centos6 comes with newer C++ libraries that poses problems for |
| old programs like Linpac (missing vector.cpp files, etc). |
| |
| Install the compat-gcc-34-c++-library with: |
| yum install compat-gcc-34-c++-3.4.6-19.el6.x86_64 |
| |
+----------------------------------------------------------------------+
+----------------------------------------------------------------------+
| NOTE #2: Issue with the ./configure script |
| |
| In the user's Linpac directory, the bin/ directory creates |
| possibly wrong symlinks to /usr/local/share/linpac/bin |
| You can fix this with the following command: |
| |
| ln -s /usr/local/share/linpac /usr/share/linpac |
+----------------------------------------------------------------------+
+----------------------------------------------------------------------+
| NOTE #3: Issue with the ./configure script |
| |
| It seems linpac is hardcoded to "listen" and not say |
| finding Debian/Ubuntu's broken naming of axlisten. You can |
| fix this in src/constants.h or create a symlink |
| pointing the listen binary to axlisten |
| |
+----------------------------------------------------------------------+
With all the changes, made, lets tar up the new archive:
mv LinPac-0.17pre3 LinPac-0.17pre4
tar czvf ../SOURCES/LinPac-0.17pre4.tar.gz LinPac-0.17pre4
Ok, now compile up the RPM
#for 64bit systems
rpmbuild -bb --target=x86_64 linpac.spec
#for 32bit systems
rpmbuild -bb --target=i686 linpac.spec
And now install it!
#for 64bit systems
rpm -ivh /usr/src/redhat/RPMS/x86_64/LinPac-0.17pre4-1.x86_64.rpm
A few more points:
#To properly suport local email, do the following as root (should be done
# via the RPM script:
mkdir /var/ax25/mail
chmod 777 /var/ax25/mail
#Future sections to expand on
#To support full FBB mail forwarding, install ax25mail-utils first
11a. - Linpac - Configuring the packet terminal program
Before running Linpac for the first time, there are a few things to consider:
Fixups before running
---------------------
- Fixme: Before starting Linpac as a normal user (not root), you need
to allow for users to create Lock files. To do this, run as root:
touch /var/lock/LinPac.500
chmod 666 /var/lock/LinPac.500
Site-Wide Configuration changes
-------------------------------
Menu Prompts
------------
- I recommend you edit the /usr/local/share/linpac/macro/info.mac
file as root and populate it with all the interesting info about
your specific packet setup.
- Linpac has the ability to do simple messaging but the default help
file doesn't clearly mention this! To make sure users can know about
this, edit the /usr/local/share/linpac/macro/help.mac as root and insert
the lines:
//SP [] - write a Private message to user [optional subject]
//SB [] - write a Bulletin message to everyone [optional subject]
Choosing what user to run Linpac as / Traffic Monitoring
--------------------------------------------------------
- Linpac has the ability to show all real-time traffic on a given
packet frequency in a section of the window. To show this real time
traffic, you either need to:
- Run the ax25spyd daemon as root as described in a previous
section. If ax25spyd is running when Linpac is started, all Linpac
configuration files are put into that user's home directory and this
non-root users can see the traffic data.
+---------------------------------------------------------------+
| NOTE: For general Linux security reasons, it's recommended to |
| use the ax25spyd method and NOT run Linpac as root |
+---------------------------------------------------------------+
- Alternatively, you can run Linpac as the "root" user which will
put all Linpac configuration files in the /root directory and
then spawn a "listen" process can monitor the traffic.
This process can then talk to the SOCK_PACKET socket to get the
traffic.
NOTE: If you don't have ax25spyd running as the root user OR you
start linpac NOT as root, you won't see real-time packet
traffic. Instead, you'll see the error:
socket: Operation not permitted
Starting up Linpac for the first time
-------------------------------------
- As above, you need to choose if you're going to run Linpac as a regular
user as root. Once decided, become that user and prepare to run Linpac
for the first time.
- When you first run Linpac on the local machine, it creates a directory in
the process owner (root or regular user's) home directory called
"LinPac". In this directory, Linpac copies over all kinds of default
files, etc. into their $HOME/Linpac directory.
- Now that the various skeleton files have all be copied over, issue
the command :sys to exit Linpac and return to the system. Now you
will need to edit the config files
Mail Forwarding
---------------
- Linpac has a mail forwarding system built into it where it can do bulk
uploads and downloads of messages from a different BBS. Once fetched,
you can read and reply to messages all offline while not connected to
any station. Once done, you and tell Linpac to send the messages and
get any new ones.
Please note this is NOT like a simple PBBS as found on TNC2/KPC3/etc
TNCs.
If you want to use this feature, you need to have followed the previous
section's instructions to get ax25mail and ulistd installed. Once
installed, need to do the following to get Linpac forwarding working.
NOTE: It's good to know about the purpose of the following dirs:
$HOME/LinPac/mail : where local messages are stored
/var/ax25/ulistd : where ?message lists? are stored
/var/ax25/mail : where message bulletins are stored
1. Choose a remote BBS that's on the same frequency as your packet
station. Today, it seems Linpac supports FBB and TNOS as valid
remote BBS types but there might be more. I hope to add simple
KPC3 PBBS forwarding support in the future.
2. Configure this station in the homeuser's Linpac/station.data file.
For example, I'm using the K6FB-1 BBS:
[K6FB-1]
NAME=K6FB PBBS
TYPE=FBB
- Linpac is configured by the $HOME/LinPac/macro/init.mac file. In this file,
you need to make several changes to fit your specific environment. You
need to put in your proper:
- AX.25 port name
- callsigns and SSID to F-key mapping
- unproto callsign and optional path
- optional BBS forwarding call and ssid
+--------------------------------------------------------------+
| NOTE: The Hampacket "packetrig.sh" script automatically |
| switches Linpac configs based upon how it's started |
| to select the right ax.25 device, etc. |
+--------------------------------------------------------------+
Master Configuration
--------------------
$HOME/LinPac/macro/init.mac
--
;;the default AX25 device name. For my packetrig.sh script with
;; VHF/UHF, it's named "d710"
port d710
;;Set the default terminal type to ANSI
term ansi
;;I prefer the following look
;; type-in window at type, what you send second, and a large
;; monitoring window at the bottom
statline 5
chnline 30
infoline 5
swapedit
redraw
;;With LinPac, each F-key in a Linux terminal can be a different
;; connection and each on can have their unique SSID if you'd like
;; To have unique SSIDs for say F1 through F8, try the following.
;; Note: F9 is a reserved screen where ALL traffic is UNPROTO:
mycall@1 KI6ZHD
mycall@2 KI6ZHD
mycall@3 KI6ZHD-1
mycall@4 KI6ZHD-1
;DO NOT use the **#***-5 SSID as that's used for the Netrom NODE
; SSID as described in the NetRom section
;;For unproto traffic, address it to the proper source and
;;destination -- Be sure to change this to your callsign
unsrc KI6ZHD
;;For basic one-hop UNPROTO communications, don't use any digipeated paths
;; undest INFO
;;For multi-hop UNPROTO communications, you need to use digipeated paths.
;;Assuming you enabled the digipeat patch from above AND you live in the
;; South BayArea, California, I use the following path:
;;
undest "David WOODY KBERR KTUO KMOC KBETH KLIVE KPAC"
;; Other settings - Allow the system to make a bell sound when remote users connect
cbell on
knax on
;; Required to be on or linpac won't accept any // commands from the remote user
remote on
infolevel 1
;; Default QRG - whatever is your primary packet frequency
set QRG@0 "145.050 MHz"
;; Default set of enabled remote commands
set DEF_RCMD@0 "AB D E VER L RP B MH N RT YPUT W R WB RB A CONV I H Q U CS SP SB"
;;Optional mail forwarding
;; Path to home BBS - the port name is REQUIRED
;;The syntax is:
;; The ax25 port name as shown above, the @0 reserved port number, the
;; BBS name and it's proper SSID, and additional digi callsigns required
;; to get to said BBS
set HOME_BBS@0 "d710:K6FB-2"
;; HOME_ADDR must be assigned or you won't be prompted for a subject
;; This example reflects using K6FB found in Northern California, CA, USA
set HOME_ADDR "K6FB.#NCA.CA.USA.NOAM"
--
Final Tweaks
------------
- By default, Linpac supports commands in upper or lower case but ONLY if
they are defined in the macro/commands file. If not defined but the
*.mac file exists in the macro/ directory, they will run but ONLY if the
command's "case" matches. Putting it another way, "sp.mac" would work
for "//sp" but wouldn't work for "//SP". Dear god this one pissed me
off for a while once. For a base system that you want to accept messages
on, I recommend to edit the following file and add these two lines to
accept "Send Private" and "Send Bulletin" in upper or lower case:
macro/commands
--
sb SB
sp SP
--
You can find another short Linpac setup doc here (very rare to find Linpac docs).
http://www.zs6mrk.org/pakket_met_linux.htm
If you know of any or if you're a Linpac user, please send me an email to tell me
as such!
12. - Fldigi - Fldigi - Compiling the program for HF digital modes
FLdigi is an HF Digital mode program that supports most of the digital
modes including BPSK31, RTTY, Olivia, CW, etc. It runs on Linux, Windows,
and Apple OSX.
Please understand that this is a BIG section and requires lots of dependencies
to get everything in place. Be patient, follow these steps and it will work!
This is the main window for making QSOs, seeing decodes of other signals, running macros, etc:

NOTE on Logging:
----------------
Though Fldigi supports exporting it's logs to say EQSL directly,
it doesn't directly support LOTW yet. Alternatively, you can use
external logging programs such as Xlog to automatically upload your
logs to LOTW, EQSL, etc.
If you want to use Xlog, you must be running Fldigi 3.20.21 or newer
Notes about Fldigi on centos5
-----------------------------
Performance
-----------
I have seen where fldigi running on slower machines (1.7Ghz Pentium-M)
can have the annoying problem where if Firefox or Chrome is open and
is specifically running a webpage loaded with JavaScript. A big offender
ironically seems to be QRZ.com:
a. Fldigi can get stuck when you try to transmit. The program becomes
very slow and it eventually asserts PTT but it won't start transmitting
any digital tones, etc. You can hit the ESC to abort the TX but it can
take 5-10 seconds to release PTT. The ONLY solution to solve this after
it starts happening is to first shutdown FF/Chrome and then completely
restart Fldigi. Fldigi 3.20.x does NOT fix this.
Contesting
----------
If you ever want to try contesting with Fldigi, make sure you have
Configure --> Contest --> Duplicate Check : ON
with at least the MODE box checked.
New Fldig compile time features
-------------------------------
New behind-the-scenes compile-time features are added into fldigi all
the time so I recommend you manually run it's configure script
via "./configure" and not just install the newest binaries to see what
new options have been added. If you want something that might be
disabled by default, you'll need to modify the SPEC file or manually
compile it to reflect the change.
Ok, let's get down to it!
+-----------------------------------------------------------------------+
| NOTE: |
| The following example assumes Fldigi 3.21.36 and Centos6 but Centos5 |
| is specifically called out as well |
+-----------------------------------------------------------------------+
Download the sources
--------------------
# NOTE:
# As of 3.21.35, Fldigi now supports more modern Fltk tool kits. I do
# NOT recommend you install older versions of the Fltk toolkits
cd /usr/src/redhat/SOURCES
#Getting the version 3.21.25 - change the version number to match the newest
# release version available
wget -O fldigi-3.21.35.tar.gz http://www.w1hkj.com/downloads/fldigi-3.21.35.tar.gz
It's recommended to download and use my TrinityOS SPEC file (which
enables the kitchen sink for Fldigi):
cd /usr/src/redhat/SPECS
wget -O fldigi.spec \
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/fldigi.spec
+------------------------------------------------------------------------+
| If you choose use my SPEC file (recommended), you will *STILL NEED* to |
| follow all the below dependency steps to ensure your machine has the |
| additional required packages to both compile and install Fldigi. |
+------------------------------------------------------------------------+
Alternatively, you can follow the below steps to manually build your own
without doing the final compile/install via RPMs. You'll still need to fill
in the various requirements at "configure" time and compile, install, and
configure Fldigi itself at the end of this section.
------------------------------------------------
Building up your own SPEC file (not recommended)
------------------------------------------------
** This section is only useful to understand how I started to build my Fldigi
** SPEC file. There is little value in this section otherwise than maybe
** comparing what I'm doing to your build creation file (SPEC, deb, etc)
- The last fedora package I saw was using Fldigi 3.10 which very very old as
3.12.5 was current at that time. Grabbing the Fedora SPEC file still
helped a lot to start things off
- Using the Fedora fldigi.spec file has non-identified errors and will die
with errors like:
--
error: Installed (but unpackaged) file(s) found:
/usr/share/man/man1/fldigi.1.gz
to fix this, find the line
--
%{_datadir}/pixmaps/*
--
and add the following under it (flarq is new to 3.12.4)
--
%{_datadir}/applications/flarq.desktop
%{_mandir}/man1/fldigi.1.gz
%{_mandir}/man1/flarq.1.gz
--
to improve the build, replace the configure line with:
--
%configure --enable-optimizations=native
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
--
NOTE:
Changes between my oldeer Fldigi 3.12.5 for Centos 5 and the and the
newer Fldigi 3.20.11 for Centos 6 notes:
1. In the 3.12.5 build notes, I used
%configure --enable-optimizations=native
which seems to throw warnins that the resulting code would
be using legacy i80387 FPU instructions. It turns out this
was an issue with the older Centos5 compilers and using "native"
is both recommended and enabled at the beginning of this document
and via the /etc/rpmrc file.
2. Starting in the 3.20.11 notes, I've added support
for the xmlrpc system which is used by the excellent Flrig rig
control program but Hamlib works as well.
3. LEGACY: The old Fldigi 3.20.11 now REQUIRES the obsolete
and deprecated fltk 1.1.9 toollike though the Fldigi
docs say it should work with 1.1.7. It's not true.
------------------------------------------------------------------------
NOTE: If you're upgrading from an older version of Fldigi, make sure
to :
1. make a copy of the old SPEC file, for me I do:
cp /usr/src/redhat/SPECS/fldigi.spec \
/usr/src/redhat/SPECS/Old/fldigi.spec
2. update the SPEC file to:
a. use the newer source tarball version
b. update the changelog section to reflect your changes
Next, regardless of using my SPEC file your you building your own, make sure
the version number reflects the current version of Fldigi
12a. - Fldigi - Depdendencies step #1
-------------------------------------------------------------
Fldigi Dependencies : All versions of Centos - 6 and 5
-------------------------------------------------------------
Regardless of building Fldigi via RPM spec files or doing everything
from source, the Fldigi build requires many other programs and libraries
(RPMs) to allow proper compiling and enabling all features installed:
#Installing libXt-devel is recommended and needed before building Fltk
yum install libXt-devel
# NOTE: Installing this may require 7+ other RPMs
#Installing libasound2 is recommended and needed before building Fltk
# I don't know why this isn't called libasound2 but this is NORMAL for Centos
yum install alsa-lib alsa-lib-devel
#A few others to make sure you have installed
yum install libX11-devel
yum install autoconf
yum install mesa-libGLU-devel
#fltk - Fast Light Toolkit
Fldigi (on Centos6 or Centos5) requires a *newer* version of fltk
than what EPEL and Rpmforge offers. To fix this, you have to
compile a new version yourself.
+--------------------------------------------------------------------+
| NOTE: things change over time so give Yum a try and maybe they now |
| offer fltk-1.3.0 or newer. If not, follow this next section. |
+--------------------------------------------------------------------+
Centos6 specific:
-----------------
#We'll use Fedora16 as a starting point
cd /usr/src/redhat/SRPMS
wget -O fltk-1.3.0-1.fc16.src.rpm \
http://download.fedoraproject.org/pub/fedora/linux/releases/16/Everything/source/SRPMS/fltk-1.3.0-1.fc16.src.rpm
#install the source SRPM
rpm -ivh fltk-1.3.0-1.fc16.src.rpm
#Next, we need to install build dependency RPMs:
yum install libjpeg-devel
#Ok... time to compile it
#
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=x86_64 fltk.spec
#When you run the build above, make sure all the other required libs
#are seen. For example:
#
# Configuration Summary
# -------------------------------------------------------------------------
# Directories: prefix=/usr
# bindir=/usr/bin
# datadir=/usr/share
# datarootdir=${prefix}/share
# exec_prefix=/usr
# includedir=/usr/include
# libdir=/usr/lib64
# mandir=/usr/share/man
# Graphics: X11+Xft+Xdbe+Xinerama
# Image Libraries: JPEG=System
# PNG=System
# ZLIB=System
# Large Files: YES
# OpenGL: YES
# Threads: YES
#Install the compiled binaries
rpm -ivh /usr/src/redhat/RPMS/x86_64/fltk-1.3.0-1.el6.x86_64.rpm \
/usr/src/redhat/RPMS/x86_64/fltk-devel-1.3.0-1.el6.x86_64.rpm
Centos5 specific for older builds:
----------------------------------
yum install ftp://fr2.rpmfind.net/linux/epel/5/i386/fltk-1.1.9-4.el5.i386.rpm
yum install ftp://fr2.rpmfind.net/linux/epel/5/i386/fltk-devel-1.1.9-4.el5.i386.rpm
Both Centos6 and Centos5
------------------------
# libsndfile-devel
yum install libsndfile-devel
# libsamplerate-devel
yum install libsamplerate-devel
XMLRPC
------
# If you want the Fldigi's XMLRPC system for Flrig to work, you need
# to enable the xmlrpc code:
#
# Centos6:
# -------
yum install xmlrpc-c-c++ xmlrpc-c-client xmlrpc-c-client++ \
xmlrpc-c-devel xmlrpc-c xmlrpc-c-apps
# Centos 5
# -------
# Try installing from these pre-build versions:
yum install ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/xmlrpc-c-1.06.18-1.el5.kb.i386.rpm \
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/xmlrpc-c-devel-1.06.18-1.el5.kb.i386.rpm \
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/xmlrpc-c-apps-1.06.18-1.el5.kb.i386.rpm
# If the above RPMs won't work for some reason, you'll need to build the XMLRPC
# code from source:
# Not sure if cmake is required as we disable it later
yum install cmake
#Get the code
wget -O xmlrpc-c-1.06.18-1.el5.kb.src.rpm \
yum install http://centos.karan.org/el5/extras/testing/SRPMS/xmlrpc-c-1.06.18-1.el5.kb.src.rpm
#Install the code
rpm -ivh xmlrpc-c-1.06.18-1.el5.kb.src.rpm
# NOTE:
# 1 - this xmlrpc RPM uses cmake and not the usual configure system
# which seems to break the abyss-server subsystem:
#
# -- this following command should give a 0 but it doesn't
#
# xmlrpc-c-config c++2 abyss-server
# echo $?
#
# - to fix this, you have to redo the SPEC file a
# bit as shown below
# --
# 62,63c62,63
# < mkdir fedora
# < cd fedora
# ---
# > #mkdir fedora
# > #cd fedora
# 66,71c66,72
# < cmake .. \
# < -D_lib:STRING=%_lib \
# < -DMUST_BUILD_CURL_CLIENT:BOOL=ON \
# < -DMUST_BUILD_LIBWWW_CLIENT:BOOL=OFF \
# < -DCMAKE_INSTALL_PREFIX:PATH=%_prefix \
# < -DBUILD_SHARED_LIBS:BOOL=ON
# ---
# > #cmake .. \
# > # -D_lib:STRING=%_lib \
# > # -DMUST_BUILD_CURL_CLIENT:BOOL=ON \
# > # -DMUST_BUILD_LIBWWW_CLIENT:BOOL=OFF \
# > # -DCMAKE_INSTALL_PREFIX:PATH=%_prefix \
# > # -DBUILD_SHARED_LIBS:BOOL=ON
# > ./configure --prefix=%_prefix
# 77c78
# < cd fedora
# ---
# > #cd fedora
# 102d102
# < %_libdir/pkgconfig/*.pc
# 103a104,108
# > %_libdir/libxmlrpc++.a
# > %_libdir/libxmlrpc.a
# > %_libdir/libxmlrpc.la
# > %_libdir/libxmlrpc_*.*
# >
# 110d114
# < %_mandir/man1/*
# 113d116
# < %_bindir/xml-rpc-api2cpp
# 116a120,122
# > * Sat May 08 2010 DAvid Ranch - 1.06.18-2
# > - stopped using CMAKE, use ./configure to get xmlrpc-c-config C++2
# > abysss-server passing, added missing /usr/lib files into SPEC file
# Ok, time to build it
rpmbuild -bb --target i686 /usr/src/redhat/SPECS/xmlrpc-c.spec
#Time to install it
cd /usr/src/redhat/RPMS/i686
rpm -Uvh xmlrpc-c-1.06.18-1.i686.rpm xmlrpc-c-apps-1.06.18-1.i686.rpm \
xmlrpc-c-devel-1.06.18-1.i686.rpm
NOTE:
-----
- Using the above RPMs fails to work with Fldigi's configure system
-- the following test should give a result of "0" but it doesn't
xmlrpc-c-config c++2 abyss-server; echo $?
Back on track, lets move on for both Centos6 and Centos5
--
Perl-RPC-XML
-------------
# If the xml-rpc system is installed, the Fldigi system also needs the
# Perl RPC::XML CPAN module from RPMforge:
# NOTE: the old perl-XML-RPC package has been replaced by perl-RPC-XML
# package. Why they did this naming change boggles the mind
yum install perl-RPC-XML
# More packages to install
# ------------------------
#The following are required by HamLib which is required by Flwifi
yum install gd gd-devel tcl-devel libusb-devel doxygen libtool-ltdl-devel libXpm-devel
Ok, before we go much farther, we should get Hamlib running just in case you
don't want to use Flrig.
12b. - Hamlib for Fldigi (and other apps) - Rig control for your radio
Hamlib is a suite of programs and radio definitions to control a huge amount of
different radios. The amount of control depends on several factors suchs as:
- What does the radio offer for control (older radios are very simple,
new radios let you control almost every single thing about them)
- How mature is the Hamlib definition (some definitions are incomplete though
the radio supports additional rig control function)
Anyway, lets get going on building Hamlib:
# First, you need to install some build dependendies (if you don't
# already have them):
#
yum install libtool
# Next, we download the Fedora 16 SRPM to get the a baseline SPEC file, the
# patches for Hamlib to be compatible with Centos, and then later we'll
# download the newer Hamlib source code
#First, let's get the older SRPM and install it
cd /usr/src/redhat/SRPMS
wget -O hamlib-1.2.14-1.fc16.src.rpm http://download.fedoraproject.org/pub/fedora/linux/releases/16/Everything/source/SRPMS/hamlib-1.2.14-1.fc16.src.rpm
rpm -ivh hamlib-1.2.14-1.fc16.src.rpm
# Next, you can either use my SPEC file (recommended) or modify the Fedora
# one yourself your own:
#
# Getting and using my spec file:
#
cd /usr/src/redhat/SPECS
wget -O hamlib.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/hamlib.spec
# Next, regardless of which SPEC file you use (my modified one or the stock
# Fedora one, it's recommend to download the NEWER production version of
# Hamlib sources. If there is even a newer version than 1.2.15, get that
# version instead and make the specific changes to allow for the newer
# version. You can browse the newest download URLs here:
#
# http://sourceforge.net/projects/hamlib/files/hamlib/
cd /usr/src/redhat/SOURCES/
wget -O hamlib-1.2.15.tar.gz \
http://downloads.sourceforge.net/project/hamlib/hamlib/1.2.15/hamlib-1.2.15.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fapps%2Fmediawiki%2Fhamlib%2Findex.php%3Ftitle%3DDownload&ts=1332655237&use_mirror=iweb
# Fixing your own SPEC file (not needed if you use my above spec file):
#
# The sources in hamlib 1.2.15 are newer and thus the Fedora16 RPM is
# a little out of date so we need to fix it and we should disable
# gnuradio and usrp while we're at it as they have HUGE dependencies
# that we don't use right now
# NOTE: there are some HAMlib options that you might want to enable
# such as USRP or Gnuradio but both of these options require
# SIGNIFICANTLY more work and packages to resolve. For example:
#
# --with-rigmatrix :: Generate rigmatrix tool (requires libgd)
# --without-winradio :: do not build winradio backend
# --with-gnuradio :: build gnuradio backend
# --with-usrp :: build USRP backend
# --without-rpc-backends :: do not build rpcrig and rpcrot backends
# NOTE2: Centos5
# with the 1.2.9n version and to get the perl and python
# options to work, you NEED to use the Fedora patch to set
# the proper destinations. The 1.2.8 patch applies cleanly
# on 1.2.9 but it does NOT apply to 1.2.13.1
cd /usr/src/redhat/SPECS
vim hamlib.spec
# In the top "BuildRequires:" lines, make the following changes:
# Update the version to reflect the new sources
Version: 1.2.15
# Remove "gnuradio-devel, usrp-devel"
#
# In the "%configure" section (don't forget that front "\"):
# remove "\
# --with-usrp"
# Find the following line and either DELETE it or comment it out with a pre-#
Patch2: hamlib-1.2.11-python2.7.configure.patch
# Find the following line and either DELETE it or comment it out with a pre-#
%patch2 -p1 -b .python-version
# Ok, let's compile hamlib and then install it:
#
# For Centos6:
rpmbuild -bb --target=x86_64 hamlib.spec
# For Centos5:
rpmbuild -bb --target i686 hamlib.spec
#Now that they're compiled, time to install them:
#For Centos6
#
cd /usr/src/redhat/RPMS/x86_64
rpm -Uvh hamlib-1.2.15-1.el6.x86_64.rpm hamlib-c++-1.2.15-1.el6.x86_64.rpm \
hamlib-c++-devel-1.2.15-1.el6.x86_64.rpm hamlib-debuginfo-1.2.15-1.el6.x86_64.rpm \
hamlib-devel-1.2.15-1.el6.x86_64.rpm hamlib-doc-1.2.15-1.el6.x86_64.rpm \
hamlib-perl-1.2.15-1.el6.x86_64.rpm hamlib-python-1.2.15-1.el6.x86_64.rpm \
hamlib-tcl-1.2.15-1.el6.x86_64.rpm
#For Centos5
cd /usr/src/redhat/RPMS/i686
rpm -Uvh hamlib*
?LEGACY - problably safe to ignore? -- confirm what Flwifi is
-------------------------------------------------------------
- Flwifi required hamlib-devel
- current available is 1.2.13.1
- last working version installed 1.2.9
- fedora repo is at 1.2.8
- not in rpmforge
12c. - Fldigi - Depdendencies step #2
Ok, back to more dependencies for Fldigi before we can compile it
ALSA & PortAudio specific
-----------------------------------
- As mentioned above in the ALSA section towards the top of this document,
both Centos6 and Centos5 ships with very old ALSA kernels and PortAudio
code. You need to upgrade BOTH for proper operation:
ElRepo ALSA (Centos6):
----------------------------
# NOTE: this will only upgrade the ALSA kernel soundcard drivers
# which remains compatible with the older ALSA libraries,
# tools, etc. This is very easy and works well
#
yum install http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-alsa-1.0.24-1.el6.elrepo.x86_64.rpm
ElRepo ALSA (Centos5):
----------------------------
# NOTE: this will only upgrade the ALSA kernel soundcard drivers
# which remains compatible with the older ALSA libraries,
# tools, etc. This is very easy and works well
cd /usr/src/redhat/RPMS/i686
wget -O kmod-alsa-1.0.24-1.el5.elrepo.i686.rpm \
http://elrepo.org/linux/elrepo/el5/i686/RPMS/kmod-alsa-1.0.24-1.el5.elrepo.i686.rpm
rpm -ivh /usr/src/redhat/RPMS/i686/kmod-alsa-1.0.24-1.el5.elrepo.i686.rpm
PortAudio Snapshot:
-------------------
PortAudio is becoming legacy to Linux much like OSS was some time ago.
With that said, it's still good to have the support in the system
and other programs like WSJT still use it:
NOTE:
-----
* The EPEL portaudio-19-9.el6 for Centos6 and portaudio-19-8.el5 *
* for Centos5 is **NOT** new enough and you must use the newest *
* Tip-Of-Tree version *
cd /usr/src/redhat/SOURCES
wget -O pa_snapshot.tgz http://www.portaudio.com/archives/pa_snapshot.tgz
#Get dranch's portaudio-tot.spec file:
cd /usr/src/redhat/SPECS
wget -O portaudio-tot.spec \
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/portaudio-tot.spec
#Look at the following page: http://www.portaudio.com/download.html
#
# Find the date specified for pa_snapshot.tgz
#Edit the portaudio-tot.spec file and change the date to reflect
# this newest TOT - for example:
#
# Version: 19
# Release: Release: 20120117%{?dist}
#Centos6 specific
rpmbuild -bb --target x86_64 portaudio-tot-el6.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/portaudio-19-20120117.el6.x86_64.rpm \
/usr/src/redhat/RPMS/x86_64/portaudio-devel-19-20120117.el6.x86_64.rpm
#Centos5 specific
rpmbuild -bb --target i686 portaudio-tot.spec
rpm -ivh /usr/src/redhat/RPMS/i686/portaudio-20100923.el5.i686.rpm
Additional Soundcard and Sound sub-system specific dependencies:
----------------------------------------------------------------
# Also install
yum install jack-audio-connection-kit-devel jack-audio-connection-kit
# This comes from ATrpms - needed for proper audio routing and levels
# from Pulse to Fldigi
yum install pavucontrol
12d. - Fldigi - Final Compiling
Finally, time to compile Fldigi..
------------------------------------
cd /usr/src/redhat/SPECS/
Centos6 on a x64 system:
------------------------
rpmbuild -bb --target x86_64 fldigi.spec
Centos5 on a i686 system:
-------------------------
rpmbuild -bb --target i686 fldigi.spec
Regardless of which Centos version you're building for, look back
in the RPM building process and make SURE it looks some thing like
the following. Make sure all the options are "yes", etc:
-------------------------------------
Version ..................... 3.21.35
Static linking .............. no
CPU optimizations ........... sse2
Debugging ................... no
fldigi ...................... yes
flarq ....................... yes
i18n ........................ yes
fldigi build options:
sndfile ..................... yes
oss ......................... yes
portaudio ................... yes
pulseaudio .................. yes
hamlib ...................... yes
xmlrpc ...................... yes
-------------------------------------
and now install it:
#Centos6 specific:
rpm -ivh /usr/src/redhat/RPMS/x86_64/fldigi-3.21.35-1.el6.x86_64.rpm
#Centos5 specific:
rpm -Uvh /usr/src/redhat/RPMS/i686/fldigi-3.20.21-1.i686.rpm
13. - Flrig - Rig control with or without Fldigi
Flrig is a rig control program that can either be stand-alone or a companion
program to Fldigi. Fldigi by itself can use Hamlib but it doesn't always
give all the desired information. Flrig gives you:
- It's completely independent of Hamlib and has it's own radio
definitions
- S-meter readouts as shown by the rig itself
- Full control of the rig's VFO-A, VFO-B, Split control
- Full control of the rig's speaker volume, RF power, IF shift, Notch
filter, MIC gain ATT, PreAmp1/2, NoiseBlanker, etc.
----------------------------------------------------------------------------
NOTE: this program is OPTIONAL to use with Fldigi but is highly recommended
----------------------------------------------------------------------------
This is the main window for controlling everything on the rig from RF power, using the tuner, etc:

Please note that Flrigit does NOT provide any QSO logging support what so
ever. If you want that, either use Fldigi's built-in logger, use Fllog,
or even use Xlog
Ok, let's get to it. Flrig is a very new program so you might want to try the Alpha
version if the posted version does't work for you. The primary version didn't for
me with my FT-950. It's new so we have to piece things together a bit:
cd /usr/src/redhat/SOURCES
#Getting the version 1.3.08 - change the version number to match the newest
# release version available
wget http://www.w1hkj.com/downloads/flrig/flrig-1.3.08.bin.tgz
Get the TrinityOS spec file (not recommended):
cd /usr/src/redhat/SPECS
wget -O flrig.spec \
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/flrig.spec
# Update the spec file to reflect the current version of Flrig chosen
vim flrig.spec
Alternatively, you can create your own SPEC file
------------------------------------------------
#These notes reflect an older ALPHA build
cd /usr/src/redhat/SPECS
wget http://dp67.fedorapeople.org/pkgs/SPECS/flrig.spec
vim flrig.spec
--
* update the version to "1.1.3CY"
* Change the release string to "1%{?dist}"
* Change the source0 to "http://www.w1hkj.com/beta/flrig/%{name}-%{version}.tar.gz"
* Change the %prep0 to "%setup -q -n %{name}-%{version}"
* Change the %build section, make the "configure" and "make" lines read:
%configure --enable-optimizations=native
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
* Change the %install line from:
desktop-file-install \
to
desktop-file-install --vendor="" \
also append the commend below the command to say:
# --vendor obsolete per new guidlines but leaving it in because
# this is an existing package with vendor previously installed
--
Next, regardless of using my SPEC file your you building your own, make sure
the version number reflects the current version of Flrig
Now let's build and install it:
cd /usr/src/redhat/SPECS/
NOTE: In the 3.12.5 build notes, I used to use
%configure --enable-optimizations=native
which seemed to throw warnings that the resulting code would
be using legacy i80387 FPU instructions. It turns out this
was an issue with the older Centos5 compilers and using "native"
is both RECOMMENDED and enabled
NOTE #2: at the beginning of this document, the "native" optimizations
was enabled via the /etc/rpmrc file but the Fldigi
configuration script does NOT honor those settings
#Centos6 specific
rpmbuild -bb --target=x86_64 flrig.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/flrig-1.2.6-1.el6.x86_64.rpm
#Centos5 specific
rpmbuild -bb --target=i686 flrig.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/flrig-1.1.3CY-1.i686.rpm
Now it's about time to configure Flrig. To start off, cable up your radio to a
serial port (I'm using a USI Navigator in this example) and turn the radio
on but DON'T start Flrig just yet.
The serial ports I'm using are:
USI_CAT -> ttyUSB0 :: the CAT serial control
USI_PTT -> ttyUSB1 :: for asserting PTT (FT950's CAT-based PTT
only listens to the MIC port when in SSB mode
+--------------------------------------------------------------+
| NOTE on Serial port permissions: |
| -------------------------------- |
| With the use of UDEV, all serial ports require users to have |
| the "dialout" group permission. To enable this for your |
| login (don't use root): |
| |
| - edit the /etc/groups file as root u |
| - scroll down and find the "dialout" group name |
| - append at the end of the line the needed username like |
| dranch |
| |
| * You will have to LOGOUT and log back in with this |
| username for the changes to go into effect |
| |
| * Once logged back in, open a termina window and run |
| the command "groups". Make sure "dialout" shows up. |
| If it doesn't you'll need to log out of your current |
| Gnome/KDE/whatever session and back in to get the new |
| settings. |
+--------------------------------------------------------------+
Next, as a regular user (NOT root), start up flrig from the command line with:
/usr/bin/flrig &
Config --> Xcvr Select
For my Yaesu FT-950 with a US Interface Navigator, I have:
Primary tab:
Rig: FT-950 Fldigi address: 127.0.0.1
retries: 3 Fldigi port: 7362
retry intvl: 50 Ser. port: /dev/ttyUSB0
cmd intvl: 5 Baud: 38400
qry intvl: 100 1 stop bits
No-dial PTT via CAT - Uncheck RTS/CTS
No-dial PTT via RTS - Uncheck RTS +12v
No-dial PTT via DTR - Uncheck DTR +12v
"Hardware PTT" tab:
PTT port: /dev/ttyUSI_PTT
- PTT via RTS (do NOT checkmark "RTS = +V")
- UnCHECK RTS +12v
- Click on "Initialize"
- Polling
- Checkmark everything
Issues:
- The 1.1.3CY Alpha version is approaching 100% perfect but the
current 1.1.3 release barely works.
The following example covers configuring FLdigi with a Yaesu FT-950 and a
US Interface Navigator USB soundmodem / serial port box:
1. Set the FT-950 to it's highest DATA sound out:
Menu #050 - DATA(afsk) [soundcard to radio]: 50
Menu #051 - DATA(afsk) [radio to soundcard]: 100
Menu #061 - RTTY (fsk) [radio to soundcard]: 100
2. Serial ports - As described above, here are the serial ports I'm
using if you choose to use Hamlib instead of Flrig (see more below)
USI_CAT -> ttyUSB0 :: the CAT serial control
USI_PTT -> ttyUSB1 :: for asserting PTT (FT950's CAT-based PTT
only listens to the MIC port when in SSB mode
+--------------------------------------------------------------+
| NOTE on Serial port permissions: |
| -------------------------------- |
| With the use of UDEV, all serial ports require users to have |
| the "dialout" group permission. To enable this for your |
| login (don't use root): |
| |
| - edit the /etc/groups file as root u |
| - scroll down and find the "dialout" group name |
| - append at the end of the line the needed username like |
| dranch |
| * You will have to LOGOUT and log back in with this |
| username for the changes to go into effect |
| |
| * Once logged back in, open a termina window and run |
| the command "groups". Make sure "dialout" shows up. |
| If it doesn't you'll need to log out of your current |
| Gnome/KDE/whatever session and back in to get the new |
| settings. |
+--------------------------------------------------------------+
3. Initial Fldigi setup:
As logged in as a regular user (NOT root), start up Fldigi and
follow the wizard to setup things. Enter in:
- Your callsign
- Name (first name only)
- QTH where you're transmitting from
- Locator
- Antenna type
Next -->
- Audio:
- Devices:
- Pulse audio (leave the server string blank)
- Settings:
- Sample rate: grey'ed out when using PulseAudio
- Converter: Medium Sinc Interpolator
- Corrections: all zeros for now (come back to this later)
- Mixer
- OSS mixer: Manage mixer - UNCHECKed
- Right channel
- All checkboxes disabled for a US Interfaces Navigator
to a FT950
Next -->
- Transceiver control
----------------------------------------------
For RIG control, you have two primary options:
----------------------------------------------
- Flrig (recommended): Fldigi has excellent integreation with Flrig
via the XML-RPC option for use with Flrig
- HAMlib: This extensive library will most likely support more radios,
rotators, etc. thatn Flrig but it won't give you the same
level of rig feedback for things like S-meters, GUIs for
controling various volumes, etc.
- If you're going to be using Flrig, do NOT configure the "Hardware
PTT", "RigCAT", "Hamlib", or "Memmap" options but under XML-RPC,
checkmark the "Use XML-RPC program" and that's it.
- Hamlib: If your radio isn't supported in Flrig or you just want
to use Hamlib, click on Configiure --> Rig Control --> Hamlib
and checkmark the "Use HamLib". Next, for a FT950 using the
previously mentioned UDEV names:
Device: /dev/USI_CAT
BAUD: 38400
Stop bits: 1
retries: 3 retry: 60
write delay: 5 post write delay: 5
UNCHECK: "PTT via Hamlib command"
CHECKBOX: RTS +12
Click on "Initialize"
Next, click on the "HW PTT" tab
Checked: use sperate serial port PTT
- use RTS
- dev/ttyUSI_PTT
Finish -->
4. The main screen
At this point, the primary Fldigi interface should come up and the
waterfall should start flowing.
NOTE on Pulse Audio
-------------------
When I first started up Fldigi on this Centos6 machine with
the radio listening to PSK31 on 14.070, I could only see faint
PSK31 signals and all the audio was squished to the far-left.
I would turn up the radio's speaker volume and the signals
got stronger. Huh? What's going on here. Then I sneezed
and saw the sneeze on the waterfall! HA! Seems that the
PulseAudio system was listening to the computer's microphone
and not the USB soundcard source! Check your PulseAudio mixer
settings and:
1. Deselect any Capture checkboxes on built-in microphones
2. Run the "pavucontrol" in another window
a. On the Playback tab, you shold see "Fldigi" listed.
Click on the box next to the MUTE button that
probably says "Internal Audio Analog Stereo" and
for a US Interface Navigator, select "USB Audio Codec"
b. On the Recording tab, you shold see "Fldigi" listed.
Click on the box next to the MUTE button that
probably says "Internal Audio Analog Stereo" and
for a US Interface Navigator, select "USB Audio Codec"
NOTE
----
For a FT-950 into a US Interface Navigator sound card and a RS232
cable to the radio, I have the following setup:
NOTE: You can do rig control via Hamlib or FLrig. Hamlib works
very nicely but you can do a LOT more things if you run
the associated Flrig program at the same time as Fldigi.
Up to you. For now, the docs cover Hamlib:
3. One thing I've learned is if you use the "Signal Browser" that decodes
many simultaneous PSK31 QSOs, you need to be careful of the settings
for "Signal Browser's" squelch setting (try -1.5) and the Inactivity
Timeout (try 10 seconds in Configure --> UI --> Browser --> Inactivity
Timeout
4. Full setup, level optimization, and much more can be found here:
http://www.trinityos.com/HAM/US-Interface/us-interface-navigator-and-linux.html
----------------------------------------------------------------------------
**Critical** things that you should do next to get things dialed in (need to
be added to this doc) before operating on the airwaves:
----------------------------------------------------------------------------
1. Calibrate your soundcard's timing using Fldigi's WWV mode:
http://www.w1hkj.com/FldigiHelp-3.20/DigiWWV.html
2. Tune your audio levels for good IMD levels (the more NEGATIVE
numbers the better. I -highly- recommend building and using
a PSKmeter for this (covered in this doc already) as well as
in my Digital FieldDay docs:
http://www.trinityos.com/HAM/FieldDay-2010/
Fldigi can do far more than just interactive communications. It can be integrated with other programs to send full binary attachments both on an interactive and fully automated fashion. This section details many other programs in the Fl universe!
Flarq is a utility is built when you compiled/installed Fldigi in the previous
section. To use it, follow these guidelines:
- Have Fldigi already running
- As a non-root user in a different window, run "flarq &"
- For the first time user, the "Configure Flarq" dialog to configure the program
will automatically open
- Enter in your callsign and whatever beacon you want. For me, it's following
borrowing from my master
packetrig.sh system setup script.
Mycall: KI6ZHD
Beacon text: KI6ZHD :: All Linux in CM97ai :: Santa Clara,CA
- Be sure to change those settings to match your specific settings
FLmsg is a companion program to Fldigi to send NBEMS messages
or ICS forms for emergency communicates over HF. To use this,
you will also need Flwrap shown in the next section.
---------------------------------------------------
NOTE: this program is OPTIONAL and doesn't require
Fldigi to run or vice versa
---------------------------------------------------
Ok, let's get it. It's new so we have to piece things together a bit:
cd /usr/src/redhat/SOURCES
wget -O flmsg-1.1.13.tar.gz http://www.w1hkj.com/downloads/flmsg/flmsg-1.1.13.tar.gz
To get a SPEC file, you can either use my .spec file (recommended) or
create your own:
# My recommended SPEC file:
cd /usr/src/redhat/SPECS
wget -O flmsg.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/flmsg.spec
# Skip to the next part since you're not making yout own SPEC file
# If you want to create you own SPEC file, first get an example SPEC file
cd /usr/src/redhat/SPECS
wget https://api.opensuse.org/public/source/hamradio/flmsg/flmsg.spec?rev=fc86d1d4334124509642871a9aedffed&
#Lets rename the crazy file name
mv flmsg.spec?rev=fc86d1d4334124509642871a9aedffed& flmsg.spec
vim flmsg.spec
--
* Under the BuildRequires: line, remove the entries:
xorg-x11-devel and update-desktop-files
* Change the release reflect the right version
* Change the Source: line to alter the file suffix from .bz2 to .gz
* delete the line that reads: %debug_package
* Make the %configure line read:
%configure --enable-optimizations=native
*Change the make line to read:
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
* Replace the line that says: %suse_update_desktop_file -i flmsg
with
desktop-file-install --vendor="" \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
$RPM_BUILD_ROOT%{_datadir}/applications/flmsg.desktop
# --vendor obsolete per new guidlines but leaving it in because
# this is an existing package with vendor previously installed
* Add your own revision entry at the bottom
Next, regardless of using my SPEC file your you building your own, make sure
the version number reflects the current version of Flmsg
Now let's build and install it:
cd /usr/src/redhat/SPECS/
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 flmsg.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/flmsg-1.1.13-1.x86_64.rpm
#For Centos6 users with i686
rpmbuild -bb --target=i686 flmsg.spec
rpm -ivh /usr/src/redhat/RPMS/i686/flmsg-1.1.13-1.i686.rpm
Let's run and configure it:
/usr/bin/flmsg &
Config --> Radiogram:
- Call: -- for me, KI6ZHD
- Optionally set your phone #
- Optionally set your street address
- Enter your city and state
- # of words per line
Config --> Date & Time:
- Set your preference for date and time
Flwrap is a add-on to Fldigi which, in tandem with Flmsg, is used to
send NBEMS forms and binary files (pictures, etc.)
---------------------------------------------------
NOTE: this program is OPTIONAL and doesn't require
Fldigi to run or vice versa
---------------------------------------------------
Ok, let's get on with it. It's new so we have to piece a SPEC file together
a bit:
cd /usr/src/redhat/SOURCES
wget -O flwrap-1.3.2.tar.gz http://www.w1hkj.com/downloads/flwrap/flwrap-1.3.2.tar.gz
# To get a SPEC file, you can either use my .spec file (recommended) or
# create your own:
# My recommended SPEC file:
cd /usr/src/redhat/SPECS
wget -O flwrap.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/flwrap.spec
# Skip to the next part since you're not making yout own SPEC file
# If you want to create you own SPEC file, first get an example SPEC file
Next, lets get an example SPEC file
cd /usr/src/redhat/SPECS
wget https://api.opensuse.org/public/source/hamradio/flwrap/flwrap.spec?rev=33da1ba3e8d70b7215b6b10835026cf2&
#Lets rename the crazy file name
mv flwrap.spec?rev=33da1ba3e8d70b7215b6b10835026cf2& flwrap.spec
vim flwrap.spec
--
* Under the BuildRequires: line, remove the entries:
xorg-x11-devel and update-desktop-files
* Change the release reflect the right version
* Change the Source: line to alter the file suffix from .bz2 to .gz
* delete the line that reads: %debug_package
* Make the %configure line read:
%configure --enable-optimizations=native
*Change the make line to read:
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
* Replace the line that says: %suse_update_desktop_file -i flmsg
with
desktop-file-install --vendor="" \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
$RPM_BUILD_ROOT%{_datadir}/applications/flmsg.desktop
# --vendor obsolete per new guidlines but leaving it in because
# this is an existing package with vendor previously installed
* Add your own revision entry at the bottom
Next, regardless of using my SPEC file your you building your own, make sure
the version number reflects the current version of Flwrap
Now let's build and install it:
cd /usr/src/redhat/SPECS/
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 flwrap.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/flwrap-1.3.2-1.x86_64.rpm
#For Centos5 users with i686
rpmbuild -bb --target=i686 flwrap.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/flwrap-1.3.2-1.i686.rpm
After it's installed, you really don't need to run Flwrap directly
as FLmsg will call it when needed. But there is a benefit of
running it directly: drag and drop! You can drop files into it
and it will do the equivelent of UUencode and UUdecode and send
it over the air with CRC checks to make sure it gets there ok
Let's run it:
/usr/bin/flwrap &
Flamp is an associated Fldigi program that reliably sends binary files to a list
of remote stations in a classic HF "broadcast" fashion. To do this reliably, Flamp
breaks the files up into small blocks and then broadcasts them. If a given block is
lost to a specific station (or all stations), the stations can request a resend of
that specific block until the file is properly received.
---------------------------------------------------
NOTE: this program is OPTIONAL and doesn't require
Fldigi to run or vice versa
---------------------------------------------------
Ok, let's get on with it. It's new so we have to piece a SPEC file together
a bit:
cd /usr/src/redhat/SOURCES
wget -O flamp-1.0.0.tar.gz http://www.w1hkj.com/downloads/flamp/flamp-1.0.0.tar.gz
# To get a SPEC file, you can either use my .spec file (recommended) or
# create your own:
# My recommended SPEC file:
cd /usr/src/redhat/SPECS
wget -O flamp.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/flamp.spec
# Skip to the next part since you're not making yout own SPEC file
# If you want to create you own SPEC file, first get an example SPEC file
Next, lets get an example SPEC file
cd /usr/src/redhat/SPECS
wget https://api.opensuse.org/public/source/hamradio/flamp/flamp.spec?rev=89eaf05c45d00f17b3318769033c4f0b&
#Lets rename the crazy file name
mv flamp.spec\?rev\=89eaf05c45d00f17b3318769033c4f0b flamp.spec
vim flamp.spec
--
* Under the BuildRequires: line, remove the entries:
xorg-x11-devel and update-desktop-files
* Change the release reflect the right version
* Change the Source: line to alter the file suffix from .bz2 to .gz
* Make the %configure line read:
%configure --enable-optimizations=native
*Change the make line to read:
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
* Replace the line that says: %suse_update_desktop_file -i flamp
with
desktop-file-install --vendor="" \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
$RPM_BUILD_ROOT%{_datadir}/applications/flamp.desktop
# --vendor obsolete per new guidlines but leaving it in because
# this is an existing package with vendor previously installed
* Add your own revision entry at the bottom
Next, regardless of using my SPEC file your you building your own, make sure
the version number reflects the current version of Flamp
Now let's build and install it:
cd /usr/src/redhat/SPECS/
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 flamp.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/flamp-1.0.0-1.x86_64.rpm
#For Centos5 users with i686
rpmbuild -bb --target=i686 flamp.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/flamp-1.0.0-1.i686.rpm
Once installed, start up Flamp with:
/usr/bin/flamp &
Once the program starts, click on the "Configure" tab. In there, fill in your
callsing and your your station's QTH / details in the "Info section. Beyond
that, the use of Flamp is well documented at:
http://www.w1hkj.com/flamp-help/index.html
Flwkey is a program that can control K1EL Win-keyer enabled kits, specifically
for me, the W1EL WinKeyer that's built into a US Interface Navigator.
---------------------------------------------------
NOTE: this program is OPTIONAL and doesn't require
Fldigi to run or vice versa
---------------------------------------------------
Ok, let's get on with it. It's new so we have to piece a SPEC file together
a bit:
cd /usr/src/redhat/SOURCES
wget -O flwkey-1.1.2.tar.gz http://www.w1hkj.com/downloads/flwkey/flwkey-1.1.2.tar.gz
# To get a SPEC file, you can either use my .spec file (recommended) or
# create your own:
# My recommended SPEC file:
cd /usr/src/redhat/SPECS
wget -O flwkey.spec http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/flwkey.spec
# Skip to the next part since you're not making yout own SPEC file
# If you want to build your own SPEC file, do the following:
- First, lets get an existing SRPM file
cd /usr/src/redhat/SRPMS
wget -O flwkey-1.0.0-1.1.src.rpm http://ftp.w1nr.net/opensuse/repositories/hamradio/openSUSE_11.1/src/flwkey-1.0.0-1.1.src.rpm
cd /usr/src/redhat/SPECS
vim flwkey.spec
--
* Under the BuildRequires: line, remove the entries:
xorg-x11-devel and update-desktop-files
* Change the release from 1.1 to 1.0
* Change the Source: line to alter the file suffix from .bz2 to .gz
* delete the line that reads: %debug_package
* Make the %configure line read:
%configure --enable-optimizations=native
*Change the make line to read:
make %{?_smp_mflags} CFLAGS="$RPM_OPT_FLAGS"
* Replace the line that says: %suse_update_desktop_file -i flwkey
with
desktop-file-install --vendor="" \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
$RPM_BUILD_ROOT%{_datadir}/applications/flwkey.desktop
# --vendor obsolete per new guidlines but leaving it in because
# this is an existing package with vendor previously installed
* Add your own revision entry at the bottom
Next, regardless of using my SPEC file your you building your own, make sure
the version number reflects the current version of Flwkey
Ok, now let's build and install it:
cd /usr/src/redhat/SPECS/
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 flwkey.spec
rpm -ivh /usr/src/redhat/RPMS/x86_64/flwkey-1.1.2-1.x86_64.rpm
#For Centos5 users with i686
rpmbuild -bb --target=i686 flwkey.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/flwkey-1.0.0-1.i686.rpm
Let's run and configure it:
/usr/bin/flwkey &
Goto Configure --> Select Ports
Enter in the proper /dev/ name for your W1EL WinKeyer. If you are
using udev as configured in the first Fldigi section it would be
/dev/USI_WKEY. Else, if you're using a US Interface Navigator and
have the HamPacket script, run:
/usr/local/bin/usinterface-ident.sh
to see and choose the right address. Usually for my non-UDEV machine,
it's /dev/ttyUSB2
Once properly selected and if Flwkey can communicate to the Winkeyer,
it should show the versions, such as:
Flwkey version: 1.1.2
Wkeyer version 22
Next, goto Configure --> Operator
CLL: - for me, KI6ZHD
OPR: - David
QTH: - Santa Clara, CA
LOC: - CM97ai
Next, goto Configure --> Parameters
ModReg: Tone ON - Enabled
PTT ON - Disabled
Output Pins: Key 1 (for an FT950
Next, as of FLwkey 1.1.2, it cannot directly configure how to key up
(PTT) the rig but per the following URL:
http://www.trinityos.com/HAM/US-Interface/us-interface-navigator-and-linux.html#navigator-config
You can get the WinKeyer in a US Interface Navigator to assert PTT using
the secondary PTT line, do the following (assuming the US Interface Navigator
config line is on /dev/USI_CFG using a UDEV enabled setup:
#Set the serial port to 1200 baud
stty -F /dev/USI_CFG speed 1200
#initialize the CONFIG port - do it twice
echo -e "KT/r" > /dev/USI_CFG
echo -e "KT/r" > /dev/USI_CFG
#Enable Winkeyer PTT - this is a bit pattern with the LSB or Lowest
# significant bit on the left
echo -e "KL11111111111/r" > /dev/USI_CFG
#If you'd like to save these settings as the default
echo -e "KS/r" > /dev/USI_CFG
Ok, time to give it a try. Assuming the Winkeyer is powered up, the radio
is on, the antenna is tuned up, and the selected frequency is clear, click
on the "TUNE" button in the lower right hand corner. If things are setup
working properly, you could see your radio get keyed up and hear a SOLID
tone.
Next, in the "STA" field, type in your callsign, click on the "Send" button
so it's light stays lit, and then click on the "call button". At that
point, you should start calling yourself over the airwaves!
Fldigi and it's supporting suite of programs gets updated all the time and as such,
it can be a pain to do all of this various updates by hand. To automate all this,
do the following:
cd /usr/src/archive
mkdir Flamp
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/archive/Flamp/update-flamp-code.sh
mkdir Fldigi
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/archive/Flamp/update-fldigi-code.sh
mkdir Flmsg
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/archive/Flamp/update-flmsg-code.sh
mkdir Flrig
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/archive/Flamp/update-flrig-code.sh
mkdir Flwkey
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/archive/Flamp/update-flwkey-code.sh
mkdir Flwrap
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/archive/Flamp/update-flwrap-code.sh
Ok, with all those in place, it's just a matter of going into each directory, running the specific
shell script which then:
- Download the newest version of the specific program
- Prompt you as required to update the spec file's version
- Compile the code
- Give you the command line to install the new RPM
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
PSKmail is an interesting fusion of a system where emails are coded into
CRC checked binary blobs and sent via automatically selected PSK 250/500,
Olivia, etc. via FLdigi. The program is all Java based and uses Fldigi
as the backend. These instructions assume you have Fldigi fully working
with the XMLRPC backends compiled in.
Assuming
PSKmail 0.5.4
Oracle/Sun Java 6 v23
Dependencies:
-------------
Java (jre actually)
http://javadl.sun.com/webapps/download/AutoDL?BundleId=43870
- Download the newest RPM for Java into /tmp
- As root, run
- chmod 755 /tmp/jre-6u23-linux-i586-rpm.bin
- /tmp/jre-6u23-linux-i586-rpm.bin
- make sure that /etc/alternatives/java is pointing to the newest
location. The Sun installer does NOT update the Centos alternatives
system:
ls -la /etc/alternatives/java
rm /etc/alternatives/java
ln -s /usr/java/jre1.6.0_23/bin/java /etc/alternatives/java
- Make sure Java is working. In a new shell as a regular user, run:
java -version
The response out of that should be the expected version, etc
Download the pskmail code:
cd /usr/src/archive
mkdir Pskmail
NOTE: It seems the "released" version of code for Pskmail is usually rather old.
It's recommended you always download the newest Alpha version of code.
See http://www.pskmail.org/PSKMaildownloads.html to find out the newest
release version
#For example, downloading the current newest version
wget http://pskmail.org/downloads/jPSKmail-2.0.19.jar
Install RXRX libraries - (optional)
Used only if you plan on connecting a GPS to your PSKmail system
- cd /usr/src/archive/PskMail/jpskmail
- cp librxtxSerial.so /usr/java/latest/lib/i386/
- cp lib/RXTXcomm.jar /usr/java/latest/lib/ext/
#For Centos5 machines:
http://pkgs.org/fedora-13/fedora-i386/rxtx-2.2-0.1.20100211.fc13.i686.rpm.html
Prep your Centos to support lock files for the user who will be running
PskMail:
usermod -G lock
NOTE: Once I added myself to the "lock" group, no matter what I did, the
output of 'groups' and 'groups dranch' would not match. I had to
restart Xwindows to get things to sync up. Beware!
First, start up Fldigi as you would normally. Then, do:
Setting up Fldigi:
- On the Radio (mine is a Yaesu FT-950, set the VFO to 10.147.00 and make
sure the antenna is all tuned up, power is set to a max of 45watts,
etc.
- In Fldigi:
--> Configure
--> Waterfall --> Display
UNCHECK: Monitor transmitted signal
--> Misc --> PskMail
- Mail Server Attributes
- Carrier Frequency: 1000 Hz
- Search Range: 10Hz
- Acquision SN: 6db
- AFC range: 10hz
- Reset to Carrier: Enabled
- General:
turn on Report ARQ frames average S/N
--> ID
- Under "Reed-Solomon ID (Rx), uncheck all items
- Click on save
Run jPskMail
cd /usr/src/archive/PskMail/jpskmail
java -jar java -jar javapskmail.jar
Go to Edit --> Preferences
User Data
Callsign: -SSID (I'm using KI6ZHD-7)
Link to: ki6zhd
Server mode:
Latitude: (37.2061)
Longitude: (-121.5999)
Beacon:
Rig:
Checkmark "Rigcontrol" assuming you have this
working under Fldigi
To read the manual, open up another shell and do:
acroread jpskmail_manual.pdf
LOTW or Logbook of the World is a X.509 certificate based Authentication and Authenticity system to submit QSO logs for official credit with the ARRL. With a LOTW system setup, you can start working towards various HAM radio operation awards, Authenticate your HAM radio license to other services like Echolink, etc. You can learn more about this system at: http://www.arrl.org/logbook-of-the-worldThis is the main window for creating and renewing LOTW certificates

NOTE: The ARRL used to just link to the old tsql and tqsllib sources on SourceForce pages
which *only* worked on FC3. They have fixed this now
So, lets get started. As of October 2012, the current versions of code were:
NOTE: It might be good to check the following URL to confirm that
this code is the newest available
http://sourceforge.net/projects/trustedqsl/files/TrustedQSL/
--
TrustedQSL : 1.13
tqsllib : 2.2
- First, we need to install some dependencies:
#From EPEL - this archive will also install "bakefile" and "python-empy" on Centos6 machines
#
yum install expat-deveo wxGTK-devel
- Next, download and install the SRPMs
cd /usr/src/redhat/SRPMS/
#
wget http://kojipkgs.fedoraproject.org//packages/trustedqsl/1.13/1.fc16/src/trustedqsl-1.13-1.fc16.src.rpm
wget http://kojipkgs.fedoraproject.org//packages/tqsllib/2.2/1.fc16/src/tqsllib-2.2-1.fc16.src.rpm
#
rpm -ivh trustedqsl-1.13-1.fc16.src.rpm tqsllib-2.2-1.fc16.src.rpm
- Now build the programs:
cd /usr/src/redhat/SPECS/
rpmbuild -bb --target=x86_64 tqsllib.spec
#
# We must install it before going to the next step
rpm -Uvh /usr/src/redhat/RPMS/x86_64/tqsllib-2.2-1.el6.x86_64.rpm \
/usr/src/redhat/RPMS/x86_64/tqsllib-devel-2.2-1.el6.x86_64.rpm
#Now compile and install the final application
rpmbuild -bb --target=x86_64 trustedqsl.spec
rpm -Uvh /usr/src/redhat/RPMS/x86_64/trustedqsl-1.13-1.el6.x86_64.rpm
------------------
Centos 5 Users:
------------------
# NOTE: For Centos5 users, several steps might still be required. Here are the
# legacy notes if the above newer Centos6 steps still don't work for you
Take the SPEC file from the FedoraProject and:
- update it for version 2.2-1
- remove the SSL patch
#Edit the
rpmbuild -bb --target=i686 tqsllib.spec
--
-7, -8, and -9 fails with error: unpacking of archive failed on file
/usr/src/redhat/SOURCES/tqsllib-2.0-openssl.patch;4ae25fe5: cpio: MD5 sum
mismatch
--
#You must install the devel libs before being able to compile
# trustedqsl
rpm -Uvh /usr/src/redhat/RPMS/i686/tqsllib-2.0-5.i686.rpm
/usr/src/redhat/RPMS/i686/tqsllib-devel-2.0-5.i686.rpm
#now compile and install:
#
# note: must use the FC9 version
#
Download a sample SPEC file from:
http://koji.fedoraproject.org/koji/packageinfo?packageID=72670
Download the newest sources from:
http://sourceforge.net/projects/trustedqsl/files/TrustedQSL/
and put them in /usr/src/redhat/SOURCES/
rpmbuild -bb --target=i686 trustedqsl.spec
fails with:
+ desktop-file-install
--dir=/var/tmp/trustedqsl-1.11-2-root-root/usr/share/applications tqsl.desktop
Must specify the vendor namespace for these files with --vendor
error: Bad exit status from /var/tmp/rpm-tmp.29990 (%install)
Take the SPEC file from the FedoraProject trustedqsl-1.11 SRPM and:
#This is from the terminator tool which is a multi-window terminal app:
# http://www.tenshu.net/terminator/terminator-screenshots/
#
desktop-file-install --dir=%{buildroot}%{_datadir}/applications tqsl.desktop --vendor=""
desktop-file-install --dir=%{buildroot}%{_datadir}/applications tqslcert.desktop --vendor=""
# Update the versions in the SPEC from 1.11 to 1.13
# Remove all references to Patch0 (icon patch)
# Go into /usr/src/redhat/SOURCES and
cp TrustedQSL-1.11-icon.patch TrustedQSL-1.13-icon.patch
cp TrustedQSL-1.11-gcc43.patch TrustedQSL-1.13-gcc43.patch
cp TrustedQSL-1.11-lib64.patch TrustedQSL-1.13-lib64.patch
#Recreate the RPM file:
rpmbuild -bb --target=i686 trustedqsl.spec
#With the new 1.13 version, having issues with:
tqslwiz.cpp: In member function 'void TQSLWizCertPage::UpdateFields(int)':
tqslwiz.cpp:118: error: 'tqsl_getLocationFieldFlags' was not declared in this scope
tqslwiz.cpp: In constructor 'TQSLWizCertPage::TQSLWizCertPage(TQSLWizard*, void*)':
tqslwiz.cpp:258: error: 'tqsl_getLocationFieldFlags' was not declared in this scope
###
### Sent email on 03/06/2011 to get help but was NEVER able to get
### any answers from ANY of the SourceForge developers. Had to stick
### with the 1.11 version
###
rpm -Uvh /usr/src/redhat/RPMS/i686/trustedqsl-1.11-2.i686.rpm
Ok, you're set! To run the program, run the following as your usual username
login (NOT ROOT):
/usr/bin/tqslcert
and follow the documentation on the LOTW website on how to set it up! A few key
points:
- Once fully configured, the program will create the following:
tqsl - the primary program to sign Cabrillio and ADIF logs for LOTW credit
tqslcert - the program to create and renew TQSL callsign certificates
and the following files and directories:
$HOME/.tqsl - the config directory
$HOME/.tqslapp
$HOME/.tqslcert
Also,
your-callsign.tq5 - is a certificate request / renewal file you created
your-callsign.tq6 - is a ARRL LOTW signed file to finalize your certificate
- TQSL Certs used in LOTW are valid for three years. I received an email from the
ARRL ONE MONTH before my original certificate expired. It will make your life
a lot easier if you renew (actually create a new certificate via signing it with
your ABOUT-TO-EXPIRE certificate) before the old one expires. To be clear:
** LOTW certificates are only used to validate QSLs.. they are not specifically
** tied to any callsign. As such, if a certificate expires, gets lots, etc.,
** it will have NO bearing on previous/future QSL credit, etc.
http://www.arrl.org/renew-certificate
Btw, all of ARRL's documention might be nice and dandy but it might not be all
that clear how to SUBMIT LOGS to say LoTW and Eqsl.cc! Here is my quick LOTW/Eqsl
FAQ that I use every time using the "tqsl" program.
Btw, some programs like Xlog or some macros on Fldigi try to automate this log
submittion even after every single QSO. I hadn't gotten to that point due to
previous issues with Centos 5 and old libraries but now that I'm on Centos 6,
I hope to work on that soon:
This is the waterfall window showing 1-minute decodes:
This is the main window that shows the main Qtel menu:
This is an example of the main QSO window Qtel menu:
Able to send/receive POP/SMTP email (TLS-supported), Winlink, ICS213/NTS forms, etc:
Send and receive files:
17a. - QSL Service - Tips on dealing with QSL cards send via bureaus
After having various QSOs on the radio be it digitla contacts like PSK, RTTY, or
phone contacts, you might start getting some QSO cards in the mail! Though
considered as old school, it's still pretty cool to receive these. It's always
best to reciprocate on sending a QSL card back but that's another discussion.
The other thing that you might not be aware of is the incoming QSL requests on
LOTW and even eQSL. It's best to get that setup as soon as you get on HF to honor their
requests.
Bureaus:
--------
One thing that WAS VERY surprising to me was that after about 1.5 YEARS after I
became active in amateur radio, I received a postcard stating that I have QSL cards
from the local bureau and I needed to supply seft-addressed envelopes and stamps.
Say what? What's all this about?!
It's best to read about this volunteer FREE service (no ARRL membership required)
first: http://www.arrl.org/incoming-qsl-service
Obviously, you have some time to get your envelopes to your local bureau so you can
eventually receive those QSL cards but you probably will want to start working on
it!
20. - GPSd - Network enabled GPS for Xastir, GPS time, etc
If you have an external GPS receiver and want to use it with Xaster, this is
the way to go. Though Xastir directly supports NMEA-0183 serial GPS units like
the Ambicom GPS-USB (uses the Prolific pl2303 usb to serial chip), there are
limitations to it. Like...
- Add me!
External daemons like "gpsd" fixes many of those limitations and enables far
more flexible GPS operation. With that said, lets move forward! If
you don't have an external GPS, it might to do this NOW so that Xastir
will be able to support one in the future!
NOTE: when I tried to use an Ambicom GPS-USB device in Xastir, it
didn't work though minicom but running at 4800 baud worked fine.
Download the code here:
http://download-mirror.savannah.gnu.org/releases/gpsd/
This doc assumes we're downloading 3.5
cd /usr/src/redhat/SOURCES
wget -O gpsd/gpsd-3.5.tar.gz http://download-mirror.savannah.gnu.org/releases/gpsd/gpsd-3.5.tar.gz
gpsd has a few dependencies:
yum install dbus-glib-devel
yum install xmlto
# this installs 9 other packages
yum install libXaw-devel
# this installs 2 other packages
yum install PyQt PyQt-devel
# this gets you QtNetwork - Also installs two other packages
Newer generations of GPSd now support bluetooth receivers, so...
yum install bluez-libs-devel
And.. it also replaces Make with newer Python methods so,
yum install chrpath scons
Now let's create a SPEC file
cd /usr/src/redhat/BUILD
tar xzvf /usr/src/redhat/SOURCES/gpsd-3.5.tar.gz
cp /usr/src/redhat/BUILD/gpsd-3.5/packaging/rpm/gpsd.spec \
/usr/src/redhat/SPECS/
NOTE: In version 3.5, the spec file has two bugs:
a) A bogus version name. To fix, change the line:
Version: 3.5~DEV
to:
Version: 3.5
b) find the section with line "%package clients"
and change the lines:
Requires: clients-x11 = %{version}-%{release}
Requires: clients-cli = %{version}-%{release}
to:
Requires: gpsd-clients-x11 = %{version}-%{release}
Requires: gpsd-clients-cli = %{version}-%{release}
NOTE#2: If your system doesn't have the Python developer packages
installed, the above SPEC file will fail in enabling
Python support
NOTE#3: My system had two problems in building the RPM
a. Centos5 only:
-------------
My default /usr/bin/python setup was pointing to
Python 2.4 but I also had 2.5 installed. The gpsd
SPEC file finds 2.4 but the Make system found
2.5 and created an error like the following:
`/var/tmp/gpsd-2.95-3-root-root/usr/lib/python2.4/site-packages/gps/gps.py':
No such file or directory
The actual file was in the 2.5 directory:
ls /var/tmp/gpsd-2.95-3-root-root/usr/lib/python2.5/site-packages/gps/gps.py
the solution to this was:
rm /usr/bin/python
ln -s /usr/bin/python2.5 /usr/bin/python
Unfortunately, after running that, Yum will no longer
work so undo that change once the RPM is built
b. My system doesn't have Qt4 installed but that doesn't really
matter
Now let's create the RPM
cd /usr/src/redhat/SPECS
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 gpsd.spec
#For Centos5 users with i686
rpmbuild -bb --target=i686 gpsd.spec
Now install them
#There are other packages that are created but we don't need them for Xastir
rpm -ivh /usr/src/redhat/RPMS/x86_64/gpsd-3.5-1.el6.x86_64.rpm
rpm -ivh /usr/src/redhat/RPMS/x86_64/gpsd-clients-3.5-1.el6.x86_64.rpm \
/usr/src/redhat/RPMS/x86_64/gpsd-clients-cli-3.5-1.el6.x86_64.rpm \
/usr/src/redhat/RPMS/x86_64/gpsd-clients-x11-3.5-1.el6.x86_64.rpm
Ok, so it's all intalled and it's time to try it out! Assuming your GPS unit
is on /dev/ttyUSB0 (USB based), try this:
#Set the speed of the serial port to 4800 BAUD
stty -F /dev/ttyUSB0 ispeed 4800
#This is a test where the daemon will stay in the foreground
# but it won't start doing anything until a client connects
# using -n changes that behavior
#
/usr/sbin/gpsd -N -D 5 /dev/ttyUSB0
#so now start a client
cgps
NOTE: I noticed that gpsd installed a bunch of stuff in
/etc/udev/rules.d/99-gpsd.rules to recognize various USB
-based GPSes which throw errors like:
udevd[452]: add_to_rules: unknown key 'ATTRS{idVendor}'
I recommend to disable them with:
mkdir /etc/udev/rules.d.disabled
mv /etc/udev/rules.d/99-gpsd.rules /etc/udev/rules.d.disabled
This is also a good read:
http://www.murga-linux.com/puppy/viewtopic.php?t=51957&sid=631d6464d6717657c4a1990797ccb6a0
Tip: You can also get atomic accurate date and time via:
#UTC date
DATE=`gpspipe -w -n 1 | awk -F \" '{print $12}' | awk -F T '{print $1}'`
TIME=`gpspipe -w -n 1 | awk -F \" '{print $12}' | awk -F T '{print $2}'`
You can also tie in to ntpd directly:
http://www.rjsystems.nl/en/2100-ntpd-garmin-gps-18-lvc-gpsd.php
INCOMPLETE: Delorme EarthMate PN-40 GPS to work with Centos5
***********************************************
This section is INCOMPLETE - many deadends here
***********************************************
http://sourceforge.net/project/downloading.php?group_id=1674&filename=libusb-1.0.1.tar.bz2&a=97130440
wget http://mirror.stanford.edu/yum/pub/centos/5.3/os/SRPMS/libusb-0.1.12-5.1.src.rpm
rpm -ivh libusb-0.1.12-5.1.src.rpm
21. - Xastir - Compile the APRS mapping and digipeating tool
Xastir is a self-contained APRS Mapping / Digipeating program that
can either use a TNC in CONVERSE mode or in KISS mode. Think of it
as a self contained GUI like aprs.fi or openaprs.com without the
Internet!
This is the main window for tracking objects in the map, setting new objects, etc:

NOTE #1: One of the long standing MAP subsystems that was provided by
the USGS was recently shutdown, effectively rendering Xastir
without any maps! Fortunately, one of my Elmers, Jerry
Dunmire, KA6HLD submitted patches to support OpenStreetMaps
into Xastir. This means any releast after v1.9.8 should work.
NOTE #2: There seems to be a APRS message ACK bug in the July 16
version of 1.9.9. I experienced this in a lengthy qso
with a HAM with a Yaesu VX8-DR. Specifically, this
Xastir would not accept digipeated ACKs from him unless
I turned on "Enable Satellite ACKs". Unforunately, when
I enabled that, Xastir would no longer send it's own
ACKs! Stay tuned on this one!
- Requirements for Xaster: A huge laundry list of items unforunately..
- tkimg :: image manipulation for the TCL lanuage
Centos6:
yum install tk tkimg
Centos5:
wget \
ftp://fr.rpmfind.net/linux/EPEL/5Server/i386/tkimg-1.3-0.9.20080505svn.el5.i386.rpm
yum install tk
rpm -ivh /tmp/tkimg-1.3-0.9.20080505svn.el5.i386.rpm
- gpsman
Centos6 and Centos5
-------------------
cd /usr/src/redhat/SRPMS/
wget gpsman-6.4.1-2.fc15.src.rpm http://kojipkgs.fedoraproject.org/packages/gpsman/6.4.1/2.fc15/src/gpsman-6.4.1-2.fc15.src.rpm
cd /usr/src/redhat/SRPMS/
rpm -ivh gpsman-6.4-1.fc9.src.rpm
#Let's remove the OLD version
rm /usr/src/redhat/SOURCES/gpsman-6.4.1.tgz
cd /usr/src/redhat/SOURCES/
wget -O gpsman-6.4.3.tgz \
http://downloads.sourceforge.net/project/gpsman/distrib/gpsman-6.4.3.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fgpsman%2Ffiles%2F&ts=1336709949&use_mirror=hivelocity
cd ../SPECS
Edit the gpsman.spec file and update the "Version" line to be:
Version: 6.4.3
Release: 1%{?dist}
Centos6:
--------
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 gpsman.spec
rpm -ivh /usr/src/redhat/RPMS/noarch/gpsman-6.4.3-1.el6.noarch.rpm
Centos5:
--------
rpmbuild -bb --target=i686 gpsman.spec
rpm -ivh /usr/src/redhat/RPMS/noarch/gpsman-6.4.3-1.noarch.rpm
NOTE: Of all the Linux packages to installf for HAM on Centos,
xastir is one of the HARDEST to get installed but it does eventually
install! It requires over ~40 other RPMs to be installed first before
you can even start to compile it! Sheesh but it's worth it!
- More things to install
Centos6:
--------
# Lesstif - A legacy Xwindows window toolkit - Comes from EPEL
yum install lesstif
# NOT Required - Xastir works fine without this package
# ISSUE - lesstif-devel package conflicts with openmotif-devel
# ISSUE #2 - For some reason, yum couldn't find this but the manual URL works
# yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/lesstif-devel-0.95.2-1.el6.x86_64.rpm
yum install libXp libXp-devel
yum install geos
yum install giflib unixODBC netcdf gdal gdal-devel
yum install libgeotiff libgeotiff-devel
yum install ImageMagick ImageMagick-devel
yum install festival pcre-devel proj-devel shapelib-devel db4-devel
Centos5:
--------
wget \
ftp://rpmfind.net/linux/fedora/updates/9/i386.newkey/lesstif-devel-0.95.0-26.fc9.i386.rpm
wget \
ftp://rpmfind.net/linux/fedora/updates/9/i386.newkey/lesstif-0.95.0-26.fc9.i386.rpm
#Since the lesstif* tools are from the rpmfind.net repository and I
#can't find their GnuPG keys, you will not be able load those RPMs via
#yum directly
#
rpm -ivh /tmp/lesstif-0.95.0-26.fc9.i386.rpm
rpm -ivh /tmp/lesstif-devel-0.95.0-26.fc9.i386.rpm
- LibXp
#Keep going.. we're getting closer
yum install libXp libXp-devel
- Lesstif-devel
rpm -ivh /tmp/lesstif-devel-0.95.0-26.fc9.i386.rpm
#
# This will install 1 other RPM
- Geos
#There seems to be a issue with the gdal RPM and it
#requires this later symlink
yum install geos
ln -s /usr/lib/libgeos.so /usr/lib/libgeos.so.2
- giflib, unixODBC, netcdf, gdal
yum install giflib unixODBC netcdf
- #Because the geos RPM above is broken but we fixed it with the
#symlink, we need to FORCE this install
#
wget http://packages.sw.be/gdal/gdal-1.4.4-1.el5.rf.i386.rpm
rpm -ivh --nodeps /tmp/gdal-1.4.4-1.el5.rf.i386.rpm
- Even more dependencies - from rpmforge
yum install ImageMagick ImageMagick-devel
yum install festival pcre-devel proj-devel shapelib-devel gdal-devel \
db4-devel
- Centos 6 and 5
--------------
Xastir not quite ready to run yet, now we have to install some Perl modules.. guh
UPDATE: Use the cpan2rpm tool to install Perl modules in an RPM
trackable fasion:
yum install perl-HTTP-Lite
yum install perl-Device-SerialPort
yum install perl-Test-Simple
yum install perl-Module-Build
yum install perl-Image-Size
yum install perl-XML-Simple
#NOTE: The official version of cpan2rpm 2.028 has issues with the Pod:Text module in newer
# perls, specifically:
# Can't locate object method "interpolate" via package "Pod::Text"
# so use this fixed version
yum install ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/10/x86_64/cpan2rpm-2.028-6.fc10.noarch.rpm
#For me, I then had to do the following hacks to get things to work
#Had to put my name and email in the RPM building macro -- change
#this to be your name and email
vim /root/.rpmmacros
--
David Ranch dranch@trinnet.net
--
#the following command will create the SPEC but it will fail to build due
#to not having a right GPG passphrase. We can fix that in a minute
#
# NOTE: all URLs found via http://search.cpan.org
#
cd /tmp
cpan2rpm --no-sign -i http://search.cpan.org/CPAN/authors/id/S/SR/SREZIC/perl-GPS-0.17.tar.gz
Centos 5 only
-------------
#Ok, now that the SPEC file was created, lets work around it
rpmbuild -bb /usr/src/redhat/SPECS/perl-GPS.spec
#Ok, do the original command again and now it will create and
#install ok
cpan2rpm --no-sign -i http://search.cpan.org/CPAN/authors/id/S/SR/SREZIC/perl-GPS-0.17.tar.gz
Whew! Now we have five more packages to go:
#NOTE: This is NOT the same thing as perl-Tree-RedBlack
cpan2rpm --no-sign -i http://search.cpan.org/CPAN/authors/id/A/AJ/AJOLMA/Tree-R-0.06.tar.gz
Centos 5 only
-------------
rpmbuild -bb /usr/src/redhat/SPECS/Tree-R.spec
cpan2rpm -i http://search.cpan.org/CPAN/authors/id/A/AJ/AJOLMA/Tree-R-0.06.tar.gz
cpan2rpm --no-sign -i http://search.cpan.org/CPAN/authors/id/A/AJ/AJOLMA/Geo-Shapelib-0.20.tar.gz
Centos 5 only
-------------
rpmbuild -bb /usr/src/redhat/SPECS/Geo-Shapelib.spec
cpan2rpm -i http://search.cpan.org/CPAN/authors/id/A/AJ/AJOLMA/Geo-Shapelib-0.20.tar.gz
Centos 5 only
-------------
cpan2rpm --no-sign -i http://search.cpan.org/CPAN/authors/id/M/MS/MSCHWERN/Test-Simple-0.96.tar.gz
rpmbuild -bb /usr/src/redhat/SPECS/Test-Simple.spec
cpan2rpm --version=0.3607 -i http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.3607.tar.gz
rpmbuild -bb /usr/src/redhat/SPECS/Module-Build.spec
cpan2rpm --version=0.3607 -i http://search.cpan.org/CPAN/authors/id/D/DA/DAGOLDEN/Module-Build-0.3607.tar.gz
DEPRECATED - Skip this section for now and see the next section down
--------------------------------------------------------------------
Below is the Legacy method to install Perl modules but creates issues with
the final Xastir RPM and requiring to ignore dependencies
the below section will be removed later
#The other perl modules aren't part of Centos so we do it the Perl way
perl -MCPAN -e shell
#If this is the first time running CPAN, just accept all the default
#answers (there's a lot of them) and then select your geolocation
#for faster downloads, etc.
#Once at the CPAN> prompt, do:
install GPS::Garmin
#
#Accept the installation of any dependencies
install Geo::Shapelib
#
#Accept the installation of any dependencies
enter "quit" to leave CPAN
Run the following command to make sure the two CPAN modules were
installed:
#This command will take a bit to finish
perl -MCPAN -e autobundle > /tmp/perl-module.lst
#Search the new list for the two modules
grep -i -e garmin -e shapelib /tmp/perl-module.lst
#If the two perl modules are installed but the below RPM won't
install, then it's ok for force the #installation
end legacy info (to be removed)
------------------------------------------------------------------
------------------------------------------------------------------
---------------------------------------------------
- Now let's finally get started on compiling Xastir
---------------------------------------------------
You still with me? Ready to download and install Xastir?! Well,
it still gets a little complicated. Xastir is up to date but only in
CVS so that's where we have to get it:
#xastir's native SRPM from the source code almost works!
cd /usr/src/redhat/SOURCE
#When prompted for a password, just hit the ENTER key
cvs -d:pserver:anonymous@xastir.cvs.sourceforge.net:/cvsroot/xastir login
cvs -d:pserver:anonymous@xastir.cvs.sourceforge.net:/cvsroot/xastir co xastir
#Now let's prep it to be like a SRPM
#
cp /usr/src/redhat/SOURCES/xastir/xastir.spec.in /usr/src/redhat/SPECS/xastir.spec
#Please update the directory version to best closely match the last main release
# shown at http://sourceforge.net/project/showfiles.php?group_id=45562
#
# In this example, the last offifial release was 2.0.4 so I'm naming this one 2.0.5CVS
mv /usr/src/redhat/SOURCES/xastir /usr/src/redhat/SOURCES/xastir-2.0.5CVS
tar czvf /usr/src/redhat/SOURCES/xastir-2.0.5CVS.tgz xastir-2.0.5CVS/*
rm -Rf /usr/src/redhat/SOURCES/xastir-2.0.5CVS
# Next, edit the /usr/src/redhat/SPECS/xastir.spec file to have the
# following lines or just download the updated SPEC file from here:
#
# http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/xastir.spec
Name : xastir
Version : 2.0.5CVS
# Icon : src/xastir.xpm
Source : http://prdownloads.sourceforge.net/xastir/xastir-2.0.5CVS.tgz
%{_prefix}/lib/xastir
BuildRequires : tk, tkimg, lesstif, libXp, libXp-devel
BuildRequires : geos, giflib, unixODBC, netcdf, gdal, gdal-devel
BuildRequires : ImageMagick, ImageMagick-devel, pcre-devel, proj-devel, shapelib-devel
BuildRequires : db4-devel, perl-HTTP-Lite, perl-Device-SerialPort, perl-Test-Simple
BuildRequires : perl-Module-Build, perl-Image-Size, perl-perl-GPS, perl-Tree-R,
BuildRequires : perl-Geo-Shapelib, perl-Test-Simple, perl-Module-B
# Later down, you need to modify the %configure line to read:
%configure CPPFLAGS="-I/usr/include/libgeotiff"
# Even farther down, Change the %install line from:
desktop-file-install \
to
desktop-file-install --vendor="" \
# Edit the following line:
%{_prefix}/%{lib}/xastir
to be:
%{_prefix}/lib/xastir
# And below the line:
%config %{_prefix}/share/xastir/sounds
add
%config %{_prefix}/share/xastir/scripts
# Finally, delete the line
%{_prefix}/lib/xastir
Now build it:
Centos 6
--------
#For Centos6 users with x86_64
rpmbuild -bb --target=x86_64 xastir.spec
Here is what I see on my system:
-------------------------------
xastir 2.0.5 has been configured to use the following
options and external libraries:
MINIMUM OPTIONS:
ShapeLib (Vector maps) ................. : yes
RECOMMENDED OPTIONS:
GraphicsMagick/ImageMagick (Raster maps) : yes (ImageMagick)
pcre (Shapefile customization) ......... : yes
dbfawk (Shapefile customization) ....... : yes
rtree indexing (Shapefile speedups) .... : yes
map caching (Raster map speedups) ...... : yes
internet map retrieval ................. : yes (libcurl)
FOR THE ADVENTUROUS:
AX25 (Linux Kernel I/O Drivers) ........ : yes
libproj (USGS Topos & Aerial Photos) ... : yes
GeoTiff (USGS Topos & Aerial Photos) ... : yes
Festival (Text-to-speech) .............. : yes
GDAL/OGR (Obtuse map formats) .......... : yes
GPSMan/gpsmanshp (GPS downloads) ....... : yes
#And install it!
rpm -ivh /usr/src/redhat/RPMS/x86_64/xastir-2.0.5CVS-1.x86_64.rpm
Centos 5
--------
#For Centos5 users with i686
rpmbuild -bb --target=i686 xastir.spec
#And install it!
rpm -Uvh /usr/src/redhat/RPMS/i686/xastir-2.0.1CVS-1.i686.rpm
************************************************************************
** Important: **
** **
** One more step as xastir requires root privs to run which is **
** unfortunate for security reasons but it's a well known issue: **
** **
** chmod 4755 `which xastir` **
** **
************************************************************************
21a. - Xastir - Configuring and running the APRS tool
I've used Xasir with both Linux soundmodem and the Kenwood D710. For
this example, I'll configure it with the D710 and I'll add soundmodem
later.
- Start up the D710 in 1200 baud packet mode on channel A
- Tune the radio to 144.390
- Make sure you set the squelch properly so an idle freqency isn't
"busy". Unless this it set, you'll never transmit!
- Start up your TNC into KISS mode. Ideally, use my "packetrig.sh" script
to start up the D710 TNC in KISS mode
/usr/local/sbin/packetrig.sh vhf-d710-xastir
- Start up xastir on the command line
- Set up your system to something like the following:
File --> Configure --> Station
|
+--> Configure
| |
| +--> Station
| | |
| | +--> - put in your callsign
| | no "-#" if this is a stationary home, no digipeat
| |
22. - APRX - APRS iGate + digipeater software
APRX is a background APRS Iget and Digipeating server that can be used to
tightly control with:
- gateway APRS traffic to/from the RF domain into the APRS-IS Internet gateways
with various complex filtering options
- Inject one or more APRS objects into the RF / APRS-IS domains
- Used as a generic digipeater for APRS or even AX.25 UI unproto traffic
Ok, to get started, download the source:
cd /usr/src/redhat/SOURCES
wget http://ham.zmailer.org/oh2mqk/aprx/aprx-2.06.svn514.tar.gz
Now lets extract the RPM spec file
cd /usr/src/redhat/BUILD
tar xzvf ../SOURCES/aprx-2.06.svn514.tar.gz
mv aprx-2.06.svn514/aprx.spec /usr/src/redhat/SPECS/
At this point, we have to edit the SPEC file as this file
has broken logic to deal with systemd based distros like Centos7, Fedora18,
etc.
- Edit the aprx.spec file and delete both the following
lines and everything between them:
%if 0%{?rhel} >= 7 || 0%{?fedora} >= 16
.
. thru
.
%endif
- Next, there are some options you might think about enabling
in the "%configure --with-erlangstorage" line:
- pthreads support : To enable this, add the text
--with-pthread
- agwpe support : to enable this, add the text:
--enable-agwpe
When I tried to compile AGWPE support, the compile failed with the following.
Maybe in future versions, this issue will be resolved.
--
agwpesocket.c:461:2: warning: #warning "WRITEME: AGWPE Raw AX.25 reception"
agwpesocket.c: In function ‘agwpe_prepoll’:
agwpesocket.c:663: error: invalid operands to binary > (have ‘time_t’ and ‘struct timeval’)
make: *** [agwpesocket.o] Error 1
--
- Save your changes to the spec file
Now let's compile it up:
Centos 6
--------
#For Centos6 users with x86_64
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=x86_64 aprx.spec
And install it:
rpm -ivh /usr/src/redhat/RPMS/x86_64/aprx-2.06.svn514-1.el6.x86_64.rpm
Time to configure it. In this example, I'm going to do two things:
1. Install a APRS-IS object for the local packet station
that can be displayed on say http://www.aprs.fi
2. be a UNPROTO digipeater for my packet system on 145.050 for KB2KB
communications
- Edit the /etc/aprx.conf file:
- Change the "mycall" variables to used your specific callsign. I'm
using "KI6ZHD" which will allow also support digipeating on the
"KI6ZHD" or KI6ZHD-0 SSID.
- In the <aprsis> section, # out the line:
server rotate.aprs2.net
to stop using the global pool and instead, uncomment out a better server
pool that reflects your location on the planet. For me, I'm un-#ing out:
server noam.aprs2.net
----------
Interfaces
----------
- Find the #ed out "&<interface>"stanza, un # it out out
- Un # out the "ax25-device $mycall" line
NOTE: APRX does *not* read the /etc/ax25/axports file to get a valid
ax.25 device name. This aprx software simply matches the callsign
that the Linux AX.25 system puts together as configured by the
axports file. To confirm which callsign is being used, bring up
your packet system and look at the "HW ADDR" for the "ax0" interface
according to /sbin/ifconfig
- Un # out the "tx-ok" line and change the "false" to "true"
- If you want other SSIDS to support digipeating, then
use the ALIAS line. I'm using:
alias KI6ZHD-5,SCLARA
NOTE: I've found that when a remote station digipeats to an
alias, the output from the digipeater becomes the contents
of $mycall and NOT the expected alias
- Un # out the concluding "&</interface>"stanza
------
Beacon
------
- Next, find the line "#beaconmode" and under it, add:
beaconmode { aprsis }
- Find the "beacon symbol" line, make a copy of it below, un-# it out
and for my QTH. APRX uses the "GPS stle of coordinates and I set it
to the following per how I recommended to find coordinates in
"xastir-running" section of this document. Notice that I:
- Force the beacons to only go out a specific interface
- Added the object name (8 characters max)
- change the symbol
- set the lat/long
- set the comment
beacon object "Packet N" symbol "/n" lat "3720.62N" lon "12159.99W" comment "145.050 Packet full service digi/pbbs/node"
----------
Digipeater
----------
- Finally, un # out the "&<digipeater>" line
- Un # out the line "transmitter $mycall"
- Find the example section of "source RXPORT-1" and
- Un # out the double #s for "<source>"
- Un 3 out the double #s for "source RXPORT-1" and change the
"RXPORT-1" to "$mycall" for my specific setup
- Un # out the concluding # for "</source>"
- un # out the concluding "&</digipeater>" line
Ok, your done! To start it up to test, run the program in forground mode.
You can put in upwards of four d's where each one adds more debugging:
/usr/sbin/aprx -d
If it starts up with out any specific errors, go look for your configured
callsign+SSID on www.aprs.fi. You should see it! You can also test
the digipeater side of things as well. Assuming you have a local digipeater
you can bounce packets off, try using the F10 view of Linpac and
- Change the UNDEST path - for me, I would use
:undest "David WOODY KI6ZHD WOODY"
- Using the F10 unproto menu, simply send "test" and you should
see the packet be transmitted, get digi'ed from Woody, then
digi'ed by KI6ZHD, and then get digi'ed by Woody again
Once things are running to your liking, you can either start aprx from
the /etc/rc.d/init.d/aprx init method or what I do, start it from the
packetrig.sh script.
If you want to do it the init.d route, you need to
- edit the /etc/sysconfig/aprx file and change the "STARTAPRX" variable to yes
- run: /sbin/chkconfig --level=345 aprx on
- and then start it up with: /etc/rc.d/init.d/aprx start
23. - Xlog - Automatic log uploads to LOTW/EQSL for FLdigi
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
Xlog is a fully self-contained logger program that even supports some
Contesting features. The reason why I'm using it as it can integrate with
FLdigi 3.20.21 (must be 3.20.21 or newer) and with another developer's tools,
it can support automatic LOTW/EQSL log uploads.
+--------------------------------------------------------------------+
| ABORT!!! |
| |
| Xlog 2.0.3 requires gtk2.12 which is not supported in Centos5 and |
| it will be very difficult to install it. Must upgrade to Centos |
| 6 or a more modern distro to get Xlog 2.0.3 working |
+--------------------------------------------------------------------+
Requirements (it's recommended that you already built Fldigi):
- hamlib for rig control
So download Xlog at:
http://mirror.its.uidaho.edu/pub/savannah/xlog/
Assuming you put it in /tmp
mv /tmp/xlog-*.tgz /usr/src/redhat/SOURCES
Next, you can use my RPM from
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/
or you can build you're own SPEC file by doing the following:
Get a SPEC file for it at:
http://kojipkgs.fedoraproject.org/packages/xlog/2.0/1.fc9/src/xlog-2.0-1.fc9.src.rpm
mv /tmp/xlog-2.0-1.fc9.src.rpm /usr/src/redhat/SRPMS
rpm -Uvh xlog-2.0-1.fc9.src.rpm
Now update the SPEC file to reflect the new version of Xlog you just
downloaded:
change the line:
Version: 2.0
to look like:
Version: 2.0.3
#Now, Xlog since version 1.6 (very old) requires gtk+ 2.12 or newer but
#Centos 5.5 only comes with 2.10.4. Gah... another reason not to run
#such an old distro!! And they ignore the upgrade requests too:
https://bugzilla.redhat.com/show_bug.cgi?id=558788
#Hack around this by doing the following:
cd /usr/src/redhat/BUILD
tar xzvf /usr/src/redhat/SOURCES/xlog-2.0.3.tar.gz
cd xlog-2.0.3
cat configure | sed "s/2.12/2.10/" > configure.new
mv -f configure.new configure
chmod 755 configure
cd ..
#edit the file configure.in and change the line:
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.12.0)
#to the following
PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.10.0)
#Roll up the changes into a new tar.gz file
tar czvf xlog-2.0.3.tar.gz xlog-2.0.3/*
mv -f xlog-2.0.3.tar.gz ../SOURCES/
#Build Dependencies:
#This installs 5 other packages for me.. yay
yum install libgnomeprint22-devel
#Now build up the RPM
rpmbuild -bb --target i686 xlog.spec
It still fails. Looking farther, upgrading Centos5.5 to gtk2.12+
would require total brain surgery. Not worth it.
BUMMER! Up to Centos 6.x I suppose
Automatic Xlog to LOTW/ESQL middleware
http://www.whabbit.demon.co.uk/xlog-uploader-0.2.tgz
Uploader requirements:
http://trac.dbzteam.org/pyinotify
24. - WSPR - HF weak signal beacon
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
WSJT is what's called a reverse beacon program which essentially decodes
or transmits a modulated tone that changes very slowly over a duration
of about 120 seconds. In that tone is the callsign and top-level
Maindenhead grid. These beacons can be decoded WELL under the noise
floor and are self identifying. Very nice!
This is the main window for decoding remote beacons, etc:

Both WSJT and WSPR require some things that Centos5 does NOT support out of the
box. Specificially, they are missing:
- Many common dependencies that also Fldigi requires such as Jack, PortAudio,
etc.) so be sure to get FLdigi working first
- G95 Fortran
#Please note that it says it requires Python 2.5 but I have it working
with Centos5's Python 2.4
- Both WSJT and WSPR can either use Gfortran or G95
- Gfortran is generally available via: yum install gfortran
- [Optional] If you really want G95 (unclear if it's any better), download
and install G95 Fortran via:
wget ftp://anonymous%40g95%2Eorg:none@ftp.g95.org/v0.91/g95-x86-linux.tgz
tar xvf g95-x86-linux.tgz
mv g95-install /usr/local
ln -s /usr/local/g95-install/bin/*g95* /usr/bin/g95
Not sure if we need this but I think we do
--
from http://lists.macosforge.org/pipermail/macports-users/2007-April/002574.html
This hack HELPS but it still barfs out
--
cp /usr/lib/python2.4/site-packages/numpy/distutils/fcompiler/gnu.py
/usr/lib/python2.4/site-packages/numpy/distutils/fcompiler/gnu.py-orig
edit gnu.py and do
- version_match = simple_version_match(start=r'GNU Fortran (?!95)')
+ version_match = simple_version_match(start=r'GNU Fortran')
- version_match = simple_version_match(start='GNU Fortran 95')
+ version_match = simple_version_match(start='GNU Fortran')
--
- Stock Centos only supports FFTW v2.x but WSPR needs the newer, non-
compatible FFTW v3 libs.
#It seems the older fftw 3.1.1 doesn't satisfy wspr and will give errors like:
#
# ld: cannot find -lfftw3f
#
# To fix this, install a newer version of fftw
rpm -e fftw3-3.1.1-1.el5.rf fftw3-devel-3.1.1-1.el5.rf
#Download and install the 3.2.2 version which fixes it
#
wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/fftw3-3.2.2-3.el5.i386.rpm
wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/fftw3-devel-3.2.2-3.el5.i386.rpm
rpm -ivh fftw3-3.2.2-3.el5.i386.rpm fftw3-devel-3.2.2-3.el5.i386.rpm
yum install python-numpy
#Old - also installed Gfortran to let configure pick which one it prefers
yum install gcc-gfortran
wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/python-imaging-1.1.6-4.el5.kb.i386.rpm
#Can't use Yum as package isn't signed
rpm -ivh python-imaging-1.1.6-4.el5.kb.i386.rpm
wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/python-imaging-tk-1.1.6-4.el5.kb.i386.rpm
#Can't use Yum as package isn't signed
rpm -ivh python-imaging-tk-1.1.6-4.el5.kb.i386.rpm
wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/python-pmw-1.3.2-5.el5.noarch.rpm
rpm -ivh python-pmw-1.3.2-5.el5.noarch.rpm
# WSPR's make system broke complaining about a missing fftw3f library. To fix this,
# there are three parts to the solution
-----------------------------------------------------------------------------
NOTE: I need to review this, as it conflicts with what I said above. Sorry..
-----------------------------------------------------------------------------
#1. Remove the too up to date version of fftw3
rpm -e fftw3-3.1.2-5.el5.1
yum install fftw3-devel fftw3
#2. Centos5 has a broken package library for qt-mt.pc which is required by avahi-qt3. You could see the error
by running
pkg-config --list-all
To fix:
yum install qt-devel
#3 make sure "pkg-config --list-all" runs cleanly
./configure --enable-g95
make
make install
run "/usr/local/bin/wspr"
Make sure you have a good working NTPd setup so that when you run /usr/bin/ntpstat , you see
something like:
--
synchronised to NTP server (217.160.254.116) at stratum 11
time correct to within 951 ms
polling server every 64 s
--
Configure WSPR
-------------
NOTE: This assumes my setup using a US Interface Navigator
NOTE#2: Though WSPR can change the radio frequency, it
doesn't change USB/LSB or change the power.
You need to set your rig to USB and the proper
power level (see below) yourself!
-------------
Call: KI6ZHD
Grid: CM97ai
Audio In: 8 USB Audio CODEC : USB Audio (HW:1,0)
Audio Out: 8 USB Audio CODEC : USB Audio (HW:1,0)
Power (dbM): 40 -- this means 10watts but must be
manually set on the rig itself
PTT Method: RTS
PTTY port: /dev/ttyUSB1
Enable CAT: check
CAT port: /dev/ttyUSB0
RIG number: 128
serial rate: 38400
data bits: 8
stop bits: 1
handshake: hardware
Under the main window, do a Save --> Save All
Once loaded:
1. Set the Tx fraction to 0%
2. Make sure to uncheck the "Upload Spots" box
3. Goto Band and select and band. Make sure your rig changes
frequency
4. uncheck the IDLE radial button and WAIT. When I say
wait, I'm talking minutes. It takes time before it will say it's
receiving, it will take a few more minutes it decodes them, etc.
5. Eventually, you'll see decodes. Once you do, go ahead and
checkmark the "Upload Spots" box
6. Make sure the tuner is tuned to the band you've selected
7. Change the Tx fraction to 20%
------------------------------------------------------------------------
additional WSPR notes
Dependencies:
Requires Fortran (similar to JT65)
WSPR 2.00 r1714 tarball
./configure (notice that it says it's building 1.11)
make
gave error on
Could not locate executable g77
Could not locate executable f77
/usr/bin/f95
/usr/bin/gfortran
error in configure script
checking whether gfortran accepts -g... yes
./configure: line 3074: test: =: unary operator expected
checking uname -s... n
installed compat-gcc-34-g77 -- didn't help
from http://www.g95.org/downloads.shtml
wget ftp://anonymous%40g95%2Eorg:none@ftp.g95.org/v0.91/g95_source.tgz
tar xzvf g95_source.tgz
cd g95-0.91/
./configure
--
NOTE: don't worry about the error shown below:
You've configured g95 in a special test mode where it will not be
able to generate object files. If this is not what you want, use the
--with-gcc-dir= option to compile against an appropriate gcc build.
[root@hampacket g95-0.91]# make
make all-am
--ftp://anonymous%40g95%2Eorg:none@ftp.g95.org/v0.91/g95_source.tgz
25. - WSJT - JT65 and other HF / EME weak signal digital modes
WSJT is a suite of weak signal modes from W1JT. What's unique about these
modes is that they are extremely timing senstitive that requires ALL stations
to have the same time withing +/- 5 seconds. With this requirement satisfied,
many of these modes like JT65 can decode signals well into the noise that
cannot be heard or seen on the waterfall.
This is the main window for decoding remote stations, sending CQ:


+---------------------------+
| To be updated for Centos6 |
+---------------------------+
http://physics.princeton.edu/pulsar/K1JT/devel.html
NOTE: No RPM SPEC available at the Fedora site
[ requires all above dependencies to get this to compile]
Centos5 Note: I was unable to get WSJT 7.x to work properly with Centos 5.4
and it's default version of Python. The very old WSJT 5.98
works fine but lacks the now deprecated WSPR QSO mode.
NOTE#2: Unlike WSPR, WSJT doesn't support RIG control though it seems
it does by selecting the band.
Let's get down to it. First off, WSJT has very similar dependencies to
WSPR (discussed in a previous section) as well as Fldigi. As of this
writing, you **MUST** complete Fldigi's dependecies per that section
to have any luck compiling WSJT here.
Step 1: Fortran
Centos6:
--------
yum install gcc-gfortran
Step 2: Installing fftw (version 3)
Centos6: (with no version, it infers v3)
----------------------------------------
yum install fftw.x86_64 fftw-devel.x86_64
Step 3: Python libs
yum install numpy numpy-f2py python-imaging python-imaging-tk
Step 3: PortAudio v19 (newer)
* This is covered in the Fldigi section
Ok, that's it but there aren't any SPEC files included with WSJT so it's
recommended you get a copy of mine found here:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/wsjt.spec
Next, since all the code is in Subversion, we need to get the code and put it
into an archive the SPEC file can deal with:
cd /usr/src/redhat/SOURCES
mkdir wsjt
cd wsjt
#The new WSJT code is only available in the Subversion repository
svn co svn://svn.berlios.de/wsjt/trunk
#When the subversion checkout completed, you should have seen something like:
#
# Checked out revision 2501
#
# This seems to then translate to be version "9.2 - r2472" per the wsjt.py file
#
#Rename the directory to reflect the version, checkout and then compress it up:
#
mv trunk wsjt-9.2.r2472
tar civf ../SOURCES/wsjt-9.2.r2472.tar.bz2 wsjt-9.2.r2472/*
cd ..
rm -Rf wsjt
Ok, time to build up the RPM:
Centos6:
-------
rpmbuild -bb --target=x86_64 wsjt.spec
If you'd like to compile things manually for Centos6
----------------------------------------------------
./configure --with-portaudio-include-dir=/usr/include --with-portaudio-lib-dir=/usr/lib64/
Centos5 (or if you want to manually compile things w/o an RPM):
---------------------------------------------------------------
tar xzvvf ../SOURCES/wsjt-5.98-r558.tgz
cd /usr/src/redhat/BUILD/wsjt-5.98-r558/trunk
./configure --enable-g95
make
make install
Configuring and Running WSJT:
-----------------------------
- Start WSJT from the command-line by purely running: wsjt and ignore all
the errors that show up on the command line for now.
- You'll see output of all detected portaudio devices in the terminal
window that you started it from:
For Centos6 machines running 9.2
---------------------------------------------------------------------
WSJT Version 9.2 r2472 , by K1JT
Revision date: 2012-06-21 07:00:38 -0700 (Thu, 21 Jun 2012)
Run date: Wed Jul 11 01:26:54 2012 UTC
ALSA lib pcm.c:2209:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2209:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2209:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
Audio Input Output Device Name
Device Channels Channels
------------------------------------------------------------------
0 2 2 HDA Intel PCH: ALC271X Analog (hw:0,0)
1 0 8 HDA Intel PCH: HDMI 0 (hw:0,3)
2 2 2 USB Audio CODEC: USB Audio (hw:1,0)
3 0 2 front
4 0 2 surround40
5 0 2 surround51
6 0 2 surround71
7 0 8 hdmi
8 32 32 pulse
9 0 2 dmix
10 32 32 default
User requested devices: Input = 0 Output = 0
Default devices: Input = 10 Output = 10
Will open devices: Input = 10 Output = 10
=====================================================================
=====================================================================
For Centos5 machines running v5.9.8
---------------------------------------------------------------------
WSJT Version 5.9.8 r558 , by K1JT
Revision date: 2007-10-08 09:47:34 -0400 (Mon, 08 Oct 2007)
Run date: Sat Apr 10 23:28:23 2010 UTC
Using PortAudio.
Audio Input Output Device Name
Device Channels Channels
------------------------------------------------------------------
0 16 16 /dev/dsp
1 16 16 /dev/dsp1
2 16 16 /dev/dsp2
3 2 2 Intel 82801DB-ICH4: Intel 82801DB-ICH4 (hw:0,0)
4 2 0 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - MIC ADC (hw:0,1)
5 2 0 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - MIC2 ADC (hw:0,2)
6 2 0 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - ADC2 (hw:0,3)
7 0 2 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - IEC958 (hw:0,4)
8 1 1 Intel 82801DB-ICH4 Modem: Intel 82801DB-ICH4 Modem - Modem (hw:1,0)
9 2 2 USB Audio CODEC : USB Audio (hw:2,0)
10 2 2 front
11 0 2 iec958
12 0 2 spdif
---------------------------------------------------------------------
Notice the device number on the USB Audio codec of "2". Remember that
now and shut WSJT back down.
IMPORTANT:
----------
The WSJT application is written with rather old methods and needs ALL incoming
audio to be sampled at 11,025/sec. Some devices can support those low rates but
the US Interface Navigator USB device, the Signalink USB device, and others require
us to downsample per the following URL:
Modern solution:
----------------
http://list-serv.davidv.net/pipermail/moon-net_list-serv.davidv.net/2008-August/013751.html
~USER/.asoundrc
--
pcm.radio {
type hw
card 2
device 0
}
pcm_slave.radioslave {
pcm radio
rate 48000
}
pcm.radioconv {
type rate
slave radioslave
}
Legacy solution:
----------------
http://www.nitehawk.com/w3sz/wsjt596hints.html
his solution -->
./configure --enable-portaudio --with-portaudio-include-dir=/usr/portaudio/v19-devel/include \
--with-portaudio-lib-dir=/usr/portaudio/v19-devel/lib/.libs/ --with-jack=no
Start WSJT back up and notice the updated sound card list:
WSJT Version 5.9.8 r558 , by K1JT
Revision date: 2007-10-08 09:47:34 -0400 (Mon, 08 Oct 2007)
Run date: Sat Apr 10 23:28:23 2010 UTC
Using PortAudio.
Audio Input Output Device Name
Device Channels Channels
------------------------------------------------------------------
0 16 16 /dev/dsp
1 16 16 /dev/dsp1
2 16 16 /dev/dsp2
3 2 2 Intel 82801DB-ICH4: Intel 82801DB-ICH4 (hw:0,0)
4 2 0 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - MIC ADC (hw:0,1)
5 2 0 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - MIC2 ADC (hw:0,2)
6 2 0 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - ADC2 (hw:0,3)
7 0 2 Intel 82801DB-ICH4: Intel 82801DB-ICH4 - IEC958 (hw:0,4)
8 1 1 Intel 82801DB-ICH4 Modem: Intel 82801DB-ICH4 Modem - Modem (hw:1,0)
9 2 2 USB Audio CODEC : USB Audio (hw:2,0)
10 2 2 front
11 0 2 iec958
12 0 2 spdif
13 2 2 radio
14 2 2 radioconv
Configure WSJT to use appropriate Audio Device number for device called "radioconv".
Setup --> Options
NOTE: I've found that this "options" window will NOT always come up
in the forground so you might have to go find it first. Lame.
NOTE #2: Change the following to represent your specific details
My Call: KI6ZHD
Grid: CM97ai
ID Interval: 10m
#This reflects the use of custom Udev device enumeration
PTTY port: /dev/USI_PTT
Audio In: 2
Audio Out:2
Rate In : 1.0
Rate Out: 1.0
Other good build doc:
http://foxgulch.com/WordPress/?p=557 :1
26. - JNOS - Full AX25 and TCP/IP enabled packet BBS
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
2.0g - Fedora repository doesn't have it
http://www.langelaar.net/projects/jnos2/downloads/linux/installerv2.tar.gz
tar xzvf
./jnosinstaller
JNOS root dir: /usr/local/jnos
AXIP wormhole: no
AXUDP wormhole: no
Add a TNC: yes
serial port: sm0
baud rate: 1200
Enable TNC beacon: yes
password: root passwd
in a different window,
- disable any gettys running on tty5
- add
c5:1235:respawn:/usr/local/jnos/startnos /dev/tty5
- run
telinit q
ax25@x-berg.in-berlin.de
axlisten removed for "listen"
listen -8acrp sm0
call -bl -me -r sm0 k6sny-1
added an alias for:
alias call='call -bl -me -r'
27. - PSKMeter - BPSK31 signal quality diagnostic meter and software
Download the ported pskmeter.py app and the currently stable version pyserial
module at http://aa6e.net/wiki/Pskmeter.py . PySerial is also installed via the
Chirp section of this document.
NOTE: The author of FLdigi also has his own pskmeter program that also supports
PSK63 but I haven't tried it out yet:
http://www.w1hkj.com/LinuxApps/pskscope.3.0.tar.gz
As root,
- install the pyserial module (for version 2.4) - See the Chirp section for
how to create the RPM for Centos6 or Centos5. Alternatively, you can do
it as a source via (not recommended):
python setup.py install
- Next, install Tkinter
yum install tkinter
- Centos5:
--------
install aumix (no Yum package available)
download from http://freshmeat.net/projects/aumix/
tar xivf aumix-2.8.tar.bz2
cd aumix-2.8
./configure
make
sudo make install
ln -s /usr/local/bin/aumix /usr/bin/aumix
Note: I re-used the USB to serial interface I had connected to my Yaesu
FT-950's CAT interface. To make sure that fldigi wasn't going to conflict, I
disabled the HAMLIB interface.
Installing and Configuring pskmeter.py:
- Download the code
mkdir /usr/src/archive/PSKMeter
wget -O http://aa6e.net/wiki/Pskmeter.py
- Serial ports:
- the pskmeter.py program defaults to looking for it's controling serial
interface at /dev/ham.pskmtr. To make it work for my setup, I did
the following as root:
Centos 6:
---------
ln -s /dev/ftdi-serial-cbl /dev/ham.pskmtr
Centos 5:
---------
ln -s /dev/ttyUSB0 /dev/ham.pskmtr
- Make sure your username is in the "dialout" group as discussed in the
Fldigi section of this doc. Alternatively, you run the command:
Centos 5: "chmod 666 /dev/ttyUSB0"
so that the pskmeter.py program can access the serial port
- Soundcard Mixer devices:
- The pskmeter.py program defaults to an alternate mixer that what's usually
installed with Centos6 or Centos5. Edit the pskmeter.py program and change
the MIXER setting to the following:
MIXER="/dev/mixer"
- Centos6:
---------
With version 6, OSS is no longer natively supporting the legacy OSS
devices such as /dev/dsp and /dev/mixer. Now, it does things via
ALSA emulation. To get /dev/mixer, run the following to get
pskmeter25.py to work:
modprobe snd-mixer-oss
- Software mixing controls
pskmeter.py program assumes it can run the mixing program "aumixer" which
isn't installed with Centos. Edit the pskmeter.py program, search for the
text "aumixer" and put in
- Centos 6:
---------
You need to change the getLeve () routine to be something like:
command = "amixer --c 1 cget iface=MIXER,name='PCM Playback Volume',numid=2" | grep ' : values'"
Btw, the proper way to control volumes with Centos6 is with
PulseAudio and the best way to do that is via pavucontrol as
installed in the Fldigi section
- Centos 5:
---------
aumix (GUI):
command = "/usr/bin/aumix -d "+MIXER+" -wq"
#The following command gives the output like:
# pcm 71, 71
, alsamixer or amixer
- There is also a patch file that you can apply that will set some of these items
for you:
wget -r -l1 -nd --no-parent -A pskmeter* www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SOURCES/
- Ok, follow the PSKmeter instructions in how to setup and run it. To
troubleshoot it, you can run something like the minicom terminal program
at 19200-8N1. Now turn on or plug in the pskmeter and you should see a
plain english initialization string when it starts up
Now, fire up fldigi (or whatever app your using to do PSK31):
- find a clear, open frequency
- set your rig to low power
- tune up to a low SWR
- now insert the pskmeter between the rig and the antenna tuner to protect
it from reflected power
- On fldigi, hit the QSY button to put the PSK31 signal in the sweet spot
- Start up the meter with:
python pskmeter025.py
- In Fldigi, there is the TUNE button in the upper right but that's a SINGLE
tone, you want to run a PSK-31 note test by hitting the key sequence
Control-t in the blue window of Fldigi
Using Kmix:
- setting the PCM output too low looses resolution
- Master and Master mono output do NOTHING
- Original headphones setting was 45 which resulted in underdriving
levels. PSKmeter for windows seemed to be happy at 59
This is the main window for the Qsstv Analog SSTV program:
28. - QSSTV - Analog Slow Scan TV (SSTV)
QSSTV is a KDE application using the Qt framework to send and receive
ANALOG slow scan still pictures (SSTV). It supports all the major SSTV formats
like Scottie, etc.
NOTE on Qsstv with Centos5:
==================================================================================
As of 12/25/2011, a new version of QSSTV (v7.1.2) was released that requires
Qt 4.7 (KDE libraries) that is incompatible with Centos5's Qt4.2. Since then,
QSSTV 7.1.4 was modified to support somewhat older Qt libraries though this
application still requires upgrading fundamental Centos Qt libraries with
third party libs which starts getting sketchy. This it's great news but it's not
for the faint of heart! -- http://users.telenet.be/on4qz/faq.html#Centos57
For now, this document covers the old QSSTV 5.3c (which works very well) for
Centos5 users
==================================================================================
You can download this new version and older versions at:
http://users.telenet.be/on4qz/history/index.html
Notes on the different versions of QSSTV:
------------------------------------------------------------------------
QSSTV 7.1.7 - Requires a very modern distribution like Centos 6
QSSTV 6.0a (alpha) - Unusable - has *major* slant issues and others have
complained as well. It was never fixed
http://users.telenet.be/on4qz/snapshots/
QSSTV 5.3c - works fine with Centos5 but it's image editor is very difficult
to use
------------------------------------------------------------------------
As usual, there are two ways to get things installed. RPMs or Sources. Using the SRPM
from Fedora works very well and already includes the required patches to get things
working without any fuss.
SRPMS: Downloading them which includes the Sources and Patches
--------------------------------------------------------------
cd /usr/src/redhat/SRPMS
#For Centos 6 - Use the Fedora16 package (same GLIBC version as Centos6)
#--
from http://koji.fedoraproject.org/koji/packageinfo?packageID=6659 -->
wget http://kojipkgs.fedoraproject.org//packages/qsstv/7.1.7/1.fc16/src/qsstv-7.1.7-1.fc16.src.rpm
rpm -ivh qsstv-7.1.7-1.fc16.src.rpm
#For Centos5 - Used the Fedora Core 9 (same GLIBC version as Centos5)
#--
from http://koji.fedoraproject.org/koji/packageinfo?packageID=6659 -->
wget http://kojipkgs.fedoraproject.org/packages/qsstv/5.3c/3.fc9/src/qsstv-5.3c-3.fc9.src.rpm
rpm -ivh qsstv-5.3c-3.fc9.src.rpm
Build prerequisites (skip this for Centos6 users):
--------------------------------------------------
To properly build QSSTV 7.1, you need to install following libraries before hand:
- fftw-devel (this is version 3) - Covered in the WSJT and TXAMADRM section)
- qt-devel - Covered in the WSJT section
- hamlib-devel - Covered in the Fldigi section
- alsa-lib-devel - Covered in the Soundmodem and Fldigi section
Centos5 ONLY SPEC changes (skip this for Centos6 users):
--------------------------------------------------------
The provided 5.3c SPEC file for Centos5 needs two modifications:
vim qsstv.spec
# Change the line:
BuildRequires: qt3-devel
# to
BuildRequires: qt-devel
# and
# Change the line:
desktop-file-install \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE1}
# to
desktop-file-install \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications %{SOURCE1} --vendor=""
Ok! Time to build it!
----------------------
#Centos6 with x86_64
rpmbuild -bb --target=x86_64 qsstv.spec
rpm -Uvh /usr/src/redhat/RPMS/x86_64/qsstv-7.1.7-1.el6.x86_64.rpm
#Centos5 with i686
rpmbuild -bb --target=i686 qsstv.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/qsstv-5.3c-3.i686.rpm
--------------------------------------------------
Legacy notes for old Centos notes - To be removed
--------------------------------------------------
To do once I get Centos6 installed - QSSTV 7.1.2
--
cd /usr/src/redhat/SPECS
vim qsstv.spec
The above provided SPEC file needs two modifications for QSSTV 7.1.2:
1. Change the "Version:" string to 7.1.2
2. Change the "Release:" string to 1%
3. Change the "Source0:" string to qsstv_%{version}.tgz (notice the _ and the .tgz
4. Change the line:
BuildRequires: qt3-devel
to
BuildRequires: gcc-c++ fftw3-devel qt4-devel hamlib-devel alsa-lib
5. Under the %prep section, change the line to use the "_" char
%setup -q -n %{name}_%{version}
6. Under the %build section, comment out the "%configure" line and replace it
with "qmake"
#%configure
qmake
7. Also under the %prep section, change the path and file extensions
for the icons file
chmod 0644 src/icons/*.png
8. Under the changelog section, add the lines:
* Sun Dec 25 2011 David Ranch
28a. - QSSTV - Configuring it
+-----------------------------+
| Getting updated for Centos6 |
+-----------------------------+
Before you start qsstv, make the following directories
mkdir -p $HOME/Qsstv/Receive
mkdir $HOME/Qsstv/Templates
mkdir $HOME/Qsstv/Transmit
mkdir $HOME/Qsstv/Audio
Next, get the Qsstv 7.1 example templates
cd $HOME/Qsstv/Templates
wget -r -l 1 -np -nd http://users.telenet.be/on4qz/qsstv/templates
Centos5 Users:
--------------
Next, run the command "cat /proc/asound/cards" and get the device number
of your HF soundcard. For me, it's card "2":
[dranch@hampacket Qsstv]$ cat /proc/asound/cards
0 [I82801DBICH4 ]: ICH4 - Intel 82801DB-ICH4
Intel 82801DB-ICH4 with STAC9750,51 at irq 7
1 [Modem ]: ICH-MODEM - Intel 82801DB-ICH4 Modem
Intel 82801DB-ICH4 Modem at irq 7
2 [default ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-0
Now start up QSSTV
Configure it in Options --> Configure
Personal Settings:
- Callsign: <your callsign>
- First name
- Last Name
- QTH
- Locator (Grid square)
General:
- set the paths to match the onces we created above
Interfaces:
Leave the RX/TX clock frequency alone for now
Input / Output Audio device:
Qsstv 7.1 on Centos6: I set it to "pulse" to use the Pulse
Audio system but I could have also hard
coded it to "hw2,0"
Qsstv 5.3: set the Audio device (for me) to: /dev/dsp2
Qsstv 5.3: Serial port for PTT (for me): /dev/ttyUSB1
CAT (for Qsstv 7.1):
NOTE: This section is confusing. The use of Hamlib is only to
key up the radio and nothing more. No VFO contro, etc. In
addition to that, you can only configure *either* CAT services
to key up the rig *or* enable the PTT serial line to key up the
rig. If you try to enable both, and click on ok, you'll get a
non-helpful error.
NOTE#2: On the FT950, if you use CAT-based PTT while in SSB
mode, the rig will only listen to the front facing MIC port!
Either you need to leave the rig in PKT mode (not SSB mode)
or you need to use the PTT serial approach to key the rig. I
do the latter with the US Interface Navigator.
NOT checked: Enable Hamlib Cat interface
CAT setup for my radio: Radio model: FT950
Parity: none
Databits: 8
Baudrate: 38400
Handshake: NONE
Stop bits: 1
Serial Post/Host: /dev/USI_CAT
Handshake: Hardware
Checked: Enable PTT serial interface
Serial port: /dev/USI_PTT
!!!!!!!!!!!!!
NOTE: Investigating: It seems that the QSSTV system needs to be
!!!!!!!!!!!!! configurable of which signal to assert to
bring up PTT. Similar to say Flrig since:
- If the rig is in SSB mode and I use
Qsstv's "Serial PTT" option, the rig does
key up and I hear the analog SSTV signal
but I also hear a solid CW tone on top of
it. I think this is Qsstv using the
Navigator's CW winkeyer.
- If the rig is in PKT mode and I use
QSSTV's "Serial PTT" option, the rig does
key up, the analog SSTV signal is there
but there isn't the solid CW tone.
CW : Text to send to: "(callsign) - qsstv"
Now click on OK and then close and restart the program
Centos6 users with Pulse Audio:
-------------------------------
- Make sure your antenna is powered up and the radio is running either
low power or transmitting into a dummy load
- Start the "PulseAudio Volume Control" (PAVC) program
- Go to the Recording tab, find the "QSSTV" application and change the
Capture source to your proper sound device (don't select the "monitor"
version of a given device)
- Next, while leaving the PAVC program running, switch back to Qsstv
and go to the Transmit tab.
- Click on the middle-ish folder icon and select a picture file,
(any picture file for now). That picture should show up in the
right hand preview window
- Now click on the upper right "Play" button and QSSTV should start
transmitting. For me, it started playing to the laptop's built-
in soundcard (not what I wanted). To fix that,
- Go back to PAVC, select the playback tab and you should now see
"ALSA plug-in [qsstv]: Alsa Playback on:" and for me, I want to
switch it to "USB Audio CODEC analog stereo"
- At this point, your radio should key up and start transmitting!
Upon restart, you will now see a FFT display in the lower left corner (5.3)
or lower right (7.1). You can click on the FFT box and change the view to
be a water fall display instead.
- Calibrate the setup on WWV and use the calibrate feature
***** Transmit power:
*****
***** QSSTV is a high duty cycle and unless your radio supports full power at
***** full duty cycle (rare except on some Icom, Elecraft, etc), you MUST
***** set the radio to 85w for a total ~45w output
After that, follow the Qsstv documentation on how to calibrate your
Slant / time skew:
http://users.telenet.be/on4qz/qsstv/documentation/gettingstarted.html#calib
+--------------------------------------------------------------------------+
| The rest of this documentation needs to be re-validated with Centos6 and |
| QSSTV 7.1.x |
+--------------------------------------------------------------------------+
Legacy issues related to Qsstv 6.0 Alpha?
-----------------------------------------
http://ubuntuforums.org/showthread.php?t=935732
other qsstv users
http://forums.fedoraforum.org/showthread.php?p=1357105
--gt; Seems the solution is to turn off "Auto Slant Adj."
Ubuntu bug tracking slant problems - no assignment
https://bugs.launchpad.net/ubuntu/+source/qsstv/+bug/581407
29. - GeoID - MaidenHead distance calculator
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
GeoID is a simple MaidenHead to Distance / heading tool from the makers
of Fldigi. It's not great but it's not terrible either:
Dependencies: If you've built FLdigi, you're good to go
Download it at http://www.w1hkj.com/#Geoid and into /usr/src/redhat/SOURCES
cd /usr/src/redhat/BUILD
tar xzvf /usr/src/redhat/SOURCES/fl_geoid.src.tar.gz
cd fl_geoid
make
cp geoid /usr/local/bin/
#Log as the user you plan on being when running fl_geoid
cd /usr/src/redhat/SOURCES/fl_geoid
./install_geoid
Run "geoid"
On first run, select the QTH tab and put your location in. Goto Files -->
Save QTH
Now try it out, go to the "Grid/Lan-Lon" tab, put in a location and then
click on > Lat Lon and then COMPUTE
30. - IBP - International Beacon Project beacon tracker
need to write it up, easy to install, simple NCURSES interface
This is the main window following the beacons in their specific geography:

31. - Dream - Digital Radio Mondiael (DRM) - Digital Phone - transmit/receive
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
--------------------------------
Ultra Important full-stop notes:
--------------------------------
1) that Dream ***requires*** a radio with a 20Khz pass-band which either
- requires modifications of modern Amateur radio HF rigs
- use a panadapter or SDR (Flex, Softrock, etc)
* If you can't get a FULL 20Khz passband, you can't decode DRM
2) This software is NOT compatible with WSPR without extensive chrooting.
Installing this WILL break your WSPR install. Ask me how I know!
+---------------------------------------------------------------------+
|Putting it another way, unless you have a radio that supports a 20Khz|
| passband, this program will NOT work for you! Don't bother |
| installing unless you have the required hardware! |
+---------------------------------------------------------------------+
DRM or Digital Radio Mondale is a new digital broadcast system for use for
SWR, HD digital voice/data, etc. The most common use of DRM like
technology in HAM radio is EzPal which uses HAM-DRM for it's digital SSTV.
NOTE: some Linux specific DRM building instructions
http://drm.sourceforge.net/installationrpm.html
and
http://www.fineware-swl.com/drm.html
NOTE: I also found an older Binary RPM for Dream:
http://www.sp5pbe.waw.pl/~sp5smk/drm.html
DRM requires a few specific packages:
Please see the DRM build pages for full details:
http://drm.sourceforge.net/installationrpm.html#linux
- legacy FFTW libs (The FFTW v3 library installed for WSPR are too new):
yum install fftw fftw-devel
# Will install fftw-2.1.5-4.el5.rf.i386.rpm and
fftw-devel-2.1.5-4.el5.rf.i386.rpm
NOTE: Not sure if this will be a conflict with WSPR that needs FFTW3
both libs are installed at the same time
- QT4
rpm -ivh ftp://ftp.pbone.net/mirror/ftp.centos.org/5.5/os/x86_64/CentOS/qt4-4.2.1-1.i386.rpm \
ftp://ftp.pbone.net/mirror/ftp.centos.org/5.4/os/i386/CentOS/qt4-devel-4.2.1-1.i386.rpm
- FAAD2 for MP4
#Note: the faad2 available in Yum is not compaible as it won't
support encoding (only decoding)
yum install faad2 faad2-devel
- FAAC for MP4 encoding (the documentation does NOT mention this
requirement anywhere! Grrr..
yum install faac faac-devel
- Ccache to help install QWT
yum install ccache
installs ccache.i386 0:2.4-1.2.el5.rf
- QWT : NOTE the current version of qwt is 5.1.2 which is TOO new for DRM
(sheesh!) They recommend to use their SRPM
cd /usr/src/redhat/SRPMS
wget http://drm.sourceforge.net/download/qwt-4.2.0-1.src.rpm
rpm -ivh qwt-4.2.0-1.src.rpm
cd /usr/src/redhat/SPECS
#There is a bug in their SPEC file. Find the follwing line:
(cd examples; make"CXX=`which ccache` g++")
and make it look like the following (added a space)
(cd examples; make "CXX=`which ccache` g++")
rpmbuild -bb --target=i686 qwt.spec
rpm -ivh /usr/src/redhat/RPMS/i686/qwt-4.2.0-1.i686.rpm \
/usr/src/redhat/RPMS/i686/qwt-devel-4.2.0-1.i686.rpm
Download and compile journaline
-------------------------------
cd /usr/src/redhat/SRPMS
wget http://drm.sourceforge.net/download/libjournaline_0.20040318_2.src.rpm
rpm -ivh libjournaline_0.20040318_2.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=i686 libjournaline.spec
rpm -ivh /usr/src/redhat/RPMS/i686/libjournaline-0.20040318-2.i686.rpm
Download the DRM code
cd /usr/src/redhat/SOURCES
http://sourceforge.net/projects/drm/files/drm/1.12b/drm-1-12b.tar.gz/download
cd /usr/src/redhat/BUILD
tar xzvf /usr/src/redhat/SOURCES/drm-1-12b.tar.gz
cd drm
sh bootstrap
./configure
Please note the result should look like:
--
simulation mode selected: no
jack sound driver selected: no (alpha)
portaudio sound driver selected: yes
alsa sound driver selected: no
oss sound driver selected: no
QT GUI selected: yes
rig control via hamlib supported: yes
hamlib with rigparse mode: yes
AAC decoding supported: yes
AAC encoding supported: yes
pcap file format supported: no
libsndfile supported: yes
--
#now compile it
make
#please note that this takes a LONG time to compile!!
make install
#Ok, some initial homework:
#Find what hamlib rig number for your radio. I have a FT-950
/usr/bin/rigctl -l | grep 950
128 Yaesu FT-950 0.21.1 Alpha
#Next, we need to find the proper PortAudio device
# -t : enable transmission
# -M 128 : use a a Yaesu 950
# -g 1 : enable logging
drm -t -M 128 -g 1
-I sound device-in
-O sound device-out
-------------
Unstable release is incomplete -- missing bootstrap files
--------------
Download DRM unstable (this is MUCH newer than the posted 1.12b release)
Get the unstable version
mkdir /usr/src/redhat/SOURCES/drm-unstable
cd /usr/src/redhat/SOURCES/drm-unstable
svn co https://drm.svn.sourceforge.net/svnroot/drm drm
#now clean it up to be compiled into a RPM
cd /usr/src/redhat/SOURCES/drm-unstable/drm
rm -Rf aqua rsci theseus
cd dream
mv * ..
cd ..
rm -Rf dream
cd ..
tar czvf /usr/src/redhat/SOURCES/drm-1.5.tar.gz *
cd
sh bootstrap
./configure
Legacy info -- old dream 1.12b
Legacy info -- incompatible newer versions of qwt
ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/9/Everything/i386.newkey/os/Packages/qwt-devel-5.0.2-6.fc9.i386.rpm
rpm -ivh ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/9/Everything/i386.newkey/os/Packages/qwt-5.0.2-6.fc9.i386.rpm \
ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/9/Everything/i386.newkey/os/Packages/qwt-devel-5.0.2-6.fc9.i386.rpm
http://qwt.sourceforge.net/
rpm -ivh \
http://www.gtlib.gatech.edu/pub/fedora-epel/5/i386/qwt-5.1.2-0.el5.i386.rpm \
http://www.gtlib.gatech.edu/pub/fedora-epel/5/i386/qwt-devel-5.1.2-0.el5.i386.rpm
-----------------------------
Legacy DRM provided FAAD code
-----------------------------
Using the DRM team's version of FAAD
cd /usr/src/redhat/SRPMS
wget http://drm.sourceforge.net/download/faad2_2.0.1cvs2006124_1.src.rpm
rpm -ivh faad2_2.0.1cvs2006124_1.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=i686 --define without_xmms=1 faad2.spec
rpm -ivh /usr/src/redhat/RPMS/i686/faad2-2.0.1cvs2006124-1.i686.rpm \
faad2-devel-2.0.1cvs2006124-1.i686.rpm
32. - Tuning Dream -DRM
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
http://www.tima.com/~djones/DRM_power.htm
This is the main window for receiving HamDRM SSTV images:
33. - RXAMADRM - Receiving Digital SSTV
RXAMADRM is a program that comes as part of the TRXAMADRM packet that receives
digital SSTV images that's compatible with the popular EasyPAL SSTV program
for Windows. This program uses a version of Digital Radio Mondiael called HamDRM
which has a narrower passband version of DRM. There is a sister program called
TXAMADRM which is the transmitter companion program and is described in the next
section. Today, these two programs come in a common archive but are run seperately.
There are plans to unify the two programs into one interface but that's going to
take a while. It's worth noting that the TRXAMADRM suite of digital SSTV programs
is different than say the QSSTV application which supports *analog* SSTV images.
+--------------------------------------------------------------------------+
| NOTE: |
| RXAMADRM is NOT recommended for use on Centos5. It's dependencies |
| break too many things on Centos5 and the older versions of the |
| application wasn't stable, reliable, or very useful in it's |
| previous versions. More notes are below but I recommend to ONLY |
| use TRXAMADRM with Centos6. |
+--------------------------------------------------------------------------+
For more information on the history of TRXAMADRM and DRM in general, please read:
http://www.pa0mbo.nl/ties/public_html/hamradio/rxamadrm/rxamadrm.pdf
+--------------------------------------------------------------------------+
| NOTE #2: |
| |
| I have been working extensively with Ties Bos, the developer on the |
| TRXAMADRM suite. He's very responsive to comments, bug reports, and |
| feature requests. The newest versions work MUCH better, they now |
| support RS1, RS2, and RS3 file formats, have faster DRM, 4-stage |
| syncing, and now have BSR support! |
+--------------------------------------------------------------------------+
NOTES missing from the sparse TRXAMADRM documentation:
--
- For B/16 QAM, the S/N should be well above 10 dB to produce results
- The radio offset should be 350
- The range of D_FS signal should be no more than about 5 ppm (I've seen
-50 to 81!)
Compiling TRXAMADRM for Centos6:
-------------------------------
- Download the current version of the receiver code
cd /usr/src/redhat/SOURCES
wget http://www.pa0mbo.nl/ties/public_html/hamradio/rxamadrm/trxamadrmv10_16Ubuntu.tgz
- Next, you need to install some dependencies (if not already installed):
yum install fftw
yum install fftw-devel
yum install tkimg
yum install expect
yum install jasper #required for rs2 to jpg conversion
NOTE: Old TRXAMADRM Versions used the old fftw v2 libraries but they are no longer needed. I'm
leaving this in here just in case some people cannot use the new fftw v3 versions:
DEPRECATED:
-----------
yum install http://dl.atrpms.net/el6-x86_64/atrpms/stable/fftw2-double-2.1.5-14.el6.x86_64.rpm
yum install http://dl.atrpms.net/el6-x86_64/atrpms/stable/fftw2-double-devel-2.1.5-14.el6.x86_64.rpm
- Next, you need to know which dound device number you need to listen to.
Run the following command and not down your proper sound card. For me,
need to listen to the USB-Audio device (#1):
cat /proc/asound/cards
--
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xc0600000 irq 31
1 [default ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-0000:00:1d.0-1.1.1, full
--
- Now expand the source code to make these changes:
cd /usr/src/redhat/BUILD/
tar xzvf ../../SOURCES/trxamadrmv10_16Ubuntu.tgz
- Now make the new RXAMADRM code:
cd trxamadrmv10_16/rxamadrmv1_6/
#Ignore any errors here
make clean
make
- Next, since things are still not in a RPM, let's make sure we can write in this directory
chown -R $USER .
Running RXAMADRM:
-----------------
- Go ahead and run the new program by running:
./rxamadrm.tcl
- When this program opens up, you should see two windows. One is the main program
window and the other is the receive waterfall window
Configuring RXAMADRM:
--------------------
- Once running, change the "Set Sound Device" in the lower right corner to
the proper sound card as found above
NOTE: If you receive errors about "wish", the rxamadrm.tcl program might have
an incorrectly defined "wish" path. To fix it, do the following:
- Run the command:
whereis wish
wish: /usr/bin/wish /usr/bin/wish8.5 /usr/share/man/man1/wish.1.gz
- Edit the rxamadrm.tcl file to reflect the result from the previous command:
Change the top line to reflect /usr/bin/wish8.5
- After that, there really isn't anything to configure other than getting
the sound levels right. This is now pretty simple with the waterfall window.
You want the DRM signal to be a light yellow with much of the backgroun being
blue.
- Optional:
RXAMADRM now has the ability to automatically upload any good images to
an FTP site on the Internet. If you want to use this feature, you need to
edit the ftp.ini file to reflect a valid FTP server, username, password, and
path!
You can see the status of your FTP transfers via the lastftp.txt file
+------------------------------------------------------------------------+
| DEPRECATED: Trying to use TRXAMADRM on Centos-5: |
| |
| If you REALLY want to move forward with running this program on |
| Centos5, here are my previous notes and, btw, good luck. You *are* |
| going to break MANY aspects of your Centos 5 install including, Yum, |
| etc. |
+------------------------------------------------------------------------+
Broken: Legacy Centos5 notes:
-----------------------------
* As mentioned before, trying to install RXAMADRM / TXAMADRM on Centos5
is *not* recommended as these programs require a newer version of
TCL/TK than what ships in Centos5 (tk-8.4.13-5.el5_1.1). Installing
this newer version of TK/TCL *breaks* the WSJT weak-signal program amoung
others as the two versions of TCL cannot coexist.
If you still want to try on Centos5, read on:
To backup the below changes (that did NOT work out well.. made a
mess of things, do:
rpm -e --nodeps tcl tcl-devel tk tk-devel expect tkimg
yum install tcl tcl-devel tk tk-devel expect tkimg
rpm -ivh --nodeps ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/9/x86_64.newkey/tcl-8.5.2-2.fc9.i386.rpm \
ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/9/i386.newkey/tcl-devel-8.5.2-2.fc9.i386.rpm
complains about
libtcl8.4.so is needed by (installed) expect-5.43.0-5.1.i386
libtcl8.4.so is needed by (installed) tk-8.4.13-5.el5_1.1.i386
libtcl8.4.so is needed by (installed) tkinter-2.4.3-27.el5.i386
libtcl8.4.so is needed by (installed)
python-imaging-tk-1.1.6-4.el5.kb.i386
libtcl8.4.so is needed by (installed) alpine-2.00-2.el5.rf.i386
tcl = 8.4.13 is needed by (installed) tk-8.4.13-5.el5_1.1.i386
tcl-devel = 8.4.13 is needed by (installed)
tk-devel-8.4.13-5.el5_1.1.i386
rpm -Uvh --nodeps ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/9/x86_64.newkey/tk-8.5.2-1.fc9.i386.rpm \
ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/updates/9/x86_64.newkey/tk-devel-8.5.2-1.fc9.i386.rpm
complains about:
libtk8.4.so is needed by (installed) tkinter-2.4.3-27.el5.i386
libtk8.4.so is needed by (installed)
python-imaging-tk-1.1.6-4.el5.kb.i386
# Tkimg was already installed for Xastir but since we've changed the
# Tcl/Tk system, we have to align other packages to consistant
rpm -Uvh ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/9/Everything/i386.newkey/os/Packages/expect-5.43.0-13.fc9.i386.rpm
rpm -Uvh --force ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/releases/9/Everything/i386.newkey/os/Packages/tkimg-1.3-0.9.20071018svn.fc9.i386.rpm
- After all that, go ahead and follow the original setup configuration
as described at the top of this chapter.
This is the main window for transmitting HamDRM SSTV images:
33. - TXAMADRM - Digital SSTV using HamDRM
The TXAMADRM program is the transmitter companion program to the RXAMADRM
Digital SSTV program. Read the RXAMADRM section for more background on the
program.
http://pa0mbo.nl/ties/public_html/hamradio/txamadrm/index.html
Resizing pictures:
------------------
It's important to remember that HamDRM isn't fast in transfering pictures so
images shouldn't be too big or they will take FOREVER to transfer! To reduce
the image size, you need to do some JPG image pre-processing. This is best
done with either the ImageMagick or GraphicMagick programs. For now, I'm
using use ImageMagick.
To aid in finding a small enough size picture to transmit, I wrote the
following extra script to simplify the compression, etc.
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/bin/resize-jpg-640-variqual.sh
Prerequisites:
--------------
- As of txamadrm 0.6S, the package now requires FFTWv3 and that is described
in the RXAMADRM section above as well as in the WSJT, WSPR, and Quisk sections
- v0.6S now optionally supports Hamlib for PTT control. If you don't have
hamlib installed, you will have to enable VOX on you radio to key
up the radio
Compiling:
----------
You already compiled the RXAMADRM program in the previous section so lets
finish the job with the TXAMADRM side of things:
NOTE: I have *not* RPMed this package yet
cd /usr/src/redhat/BUILD/trxamadrmv10_16
cd txamadrmv10
./configure --enable-alsa --enable-hamlib --disable-jack --disable-portaudio --disable-faad2 --disable-faac
#Now run Make (the -j4 makes it compile on four cores thus, compiles faster)
make -j4
make
#Since things are still not in a RPM, let's make sure we can write in this directory
cd ../..
chown -R $USER .
Running it:
-----------
Before you start the program, we need to figure ou what ALSA device to use
and optionally, what Hamlib rig you want to use. To find these out,
issue the command:
cat /proc/asound/cards
--
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xc0600000 irq 42
1 [Pro ]: USB-Audio - SB X-Fi Surround 5.1 Pro
Creative Technology Ltd SB X-Fi Surround 5.1 Pro at usb-0000:00:1d.0-1.2, full
2 [CODEC ]: USB-Audio - USB Audio CODEC
Burr-Brown from TI USB Audio CODEC at usb-0000:00:1d.0-1.1.1, full speed
--
If you plan on using Hamlib to key up your radio, you need to figure out what is the "number" of your
radio (assuming Hamlib is installed and your is supported by it). To get that, do the following.
For example, to find the id of a Yaesu FT857, I would do:
rigctl -l 2>&1 | grep 857
122 Yaesu FT-857 0.4 Beta
Next, let's start the program. Since I haven't RPMed this binary, you need to
run it from where we built the program so:
cd /usr/src/redhat/BUILD/trxamadrmv10_16/txamadrmv10/linux
./startdrmtx
or better yet, since we have the RX program installed too, you can use the
included startup script:
cd /usr/src/redhat/BUILD/trxamadrmv10_16
./startdrmtrx.sh
Using the combined startup script, the main menu for RXAMADRM should pop up with it's
associated waterfall window. An additional window should open up for the TXAMADRM
transmit program as well.
Configuring TXAMADRM:
--------------------
1. Sound Card:
In the bottom bar of the window, find the "Set snd dev" and select
proper sound card as found in the above steps to properly transmit the
picture. For me, I'm selecting "set dev=2"
2. (Optional): PTT Control via a dedicated serial port or CAT commands:
New versions of TRXAMADRM support keying up the radio via a dedicated serial
line. In the PTT box in the lower right, you need to select either:
CAT
or
RTS / DTR for dedicated serial port mode
Since I'm personally using a dedicated serial port via the US Interface
Navigator, I selected "RTS".
NOTE: If you incorrectly set this to CAT but enter in PTT serial port
name in the "PTT Dev" field and your radio keys up and never unkeys,
you need to set this field to RTS or DTS and click on the "Save CFG"
button a few times to ket it to unkey.
3. (Optional): PTT Control via a dedicated serial port:
If you're keying the radio with a dedicated serial port (I am via the US Interface
Navigator), type in the full serial path here. For my Udev aliased serial port
(described in a previous section), I put in:
/dev/USI_PTT
4. (Optional): PTT Control via Hamlib:
If you want to use CAT control to key the radio (can be an issue with some radios
like the FT950) and assuming you're using a FT857, and you have the Hamlib ID
number from above, go to the lower right corner of the window and select:
Set Baud: 4800
Hamlib model # TRX: 122
NOTE: Different radios support different serial port speeds. The FT857 only
supports 4800 but the FT950 supports 38400.
5. DRM modes: Different DRM parameters are set depending on the band,
the band conditions, etc. For me, I usually use TXAMADRM in an unsual
fashion. Specifically, we have a somewhat distant 2m repeater that
we have a SSTV net every Friday! For me, I need to set it to the following
but you might have to enable much more error correction, etc. if you're
using HF:
Mode : B
QAM : 16
Prot : Norm
Intlv : Long
Bandwidth: 2.5
6. User information:
In the upper left column, type in:
Callsign: <Put in your callsign>
Instances: Not sure what this is for
7. Next, skip down a bit to the "None, RS1, RS2, etc. section and set the
RS setting that's proper for you. Higher the RS, the higher the
error correction as needed with poorer HF conditions but slower the image
transfer
8. Next, you can optionally send text in the waterfall that's viewable by
RXAMADRM, EasyPal, etc. Click on the lower left box labeled WFALTXT
and type in your callsign in the popup box
Sound Card levels:
------------------
- I also using my FT857 with my US Navigator and the levels were
WAY too high. I had to change the KDE mixer level for the output
of the Navigator to 6 (out of 11 ticks) and roll back the Navigator's
"RF output" knob to 85%. At that point, everyone was very happy
with the signal.
Old notes about upgradig Centos6's ImageMagik- to be deleted
-------------------------------------------------------------
Unfortunately it seems the stock version of ImageMagick that comes with Centos6
is very old:
- ImageMagick-6.5.4.7-5.el6.x86_64 (surprise, surprise.. current versions is 6.7.6)
So, I recommend you get a more modern version but:
NOTE: The "Centos" binaries posted on the official ImageMagick mirrors are for
some reason NOT COMPATIBLE with Centos6. They don't state a Centos
version but it can't be for Centos6. So, you need to compile your
own version.
#Dependencies:
yum install OpenEXR OpenEXR-devel giflib-devel djvulibre-devel libwmf-devel
cd /usr/src/redhat/SRPMS/
wget -O ImageMagick.src.rpm http://imagemagick.mirrorcatalogs.com/linux/SRPMS/ImageMagick.src.rpm
rpm -ivh ImageMagick.src.rpm
cd ../SPECS/
rpmbuild -bb --target=x86_64 ImageMagick.spec
cd /usr/src/redhat/RPMS/x86_64/
rpm -ivh ImageMagick-6.7.6-8.x86_64.rpm ImageMagick-devel-6.7.6-8.x86_64.rpm \
ImageMagick-doc-6.7.6-8.x86_64.rpm
kipi-plugins kipi-plugins-libs
yum install http://imagemagick.mirrorcatalogs.com/linux/CentOS/x86_64/ImageMagick-6.7.6-9.x86_64.rpm \
http://imagemagick.mirrorcatalogs.com/linux/CentOS/x86_64/ImageMagick-devel-6.7.6-9.x86_64.rpm \
http://imagemagick.mirrorcatalogs.com/linux/CentOS/x86_64/ImageMagick-doc-6.7.6-9.x86_64.rpm
34. LinKT - HF/VHF/UHF packet terminal for Qt
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
This is a KDE3 based AX25 terminal program which also supports ax25spy
decoding of packets. In comparison, Linpac might be an older Ncurses
based program but Ncurses-based interfaces can get cumbersome after a
while. I ultimately gave up on LinKT and went back to Linpac because
LinKT's interface is pretty rough and I really missed Linpac's features.
If you want to push on with LinKT, download the newest version of LinKT
here:
http://downloads.sourceforge.net/project/linkt/linkt/0.8rc3/linkt-0.8rc3.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flinkt%2Ffiles%2F&ts=1282357775&mirror=softlayer
and put it into /usr/src/redhat/SOURCES
cd /usr/src/redhat/BUILD
#tar xivf /usr/src/redhat/SOURCES/monktd-0.3.1.tar.bz2
tar xivf /usr/src/redhat/SOURCES/linkt-0.8rc3.tar.bz2
cd linkt-0.8rc3
./configure
Run it!
--
No .SPEC setup here as I generally don't recommend this app as it
currently stands
35. - Wine - Running Windows programs within linux (used for Outpost)
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
I my local ARES/RACES group, the county uses a TNC controlling program
called Outpost:
http://www.outpostpm.org/
This Windows-only program emulates the user interface of Microsoft Outlook
to read/write packet radio messages to various packet BBSes, TNCs, etc.
To install Wine on Centos5, you need to enable the RPM Forge "testing"
repositories to get the newest version of Wine. This is covered in an
appendix chapter of this document.
To start off, install the newest developer version of wine. It's unclear
if the stable wine-1.2.2 version will run Outpost or not.
yum install wine
[this will also install:
wine - 1.3.12-1.el5.rft - rpmforge-testing
libtool-ltdl - 1.5.22-7.el5_4 - base
mpg123 - 1.12.5-2.el5.rf - rpmforge
wine-capi - 1.3.12-1.el5.rft - rpmforge-testing
wine-cms - 1.3.12-1.el5.rft - rpmforge-testing
wine-core - 1.3.12-1.el5.rft - rpmforge-testing
wine-esd - 1.3.12-1.el5.rft - rpmforge-testing
wine-gecko - 1.1.0-1.nodist.rft - rpmforge-testing
wine-jack - 1.3.12-1.el5.rft - rpmforge-testing
wine-ldap - 1.3.12-1.el5.rft - rpmforge-testing
wine-nas - 1.3.12-1.el5.rft - rpmforge-testing
wine-twain - 1.3.12-1.el5.rft - rpmforge-testing
36. - Outpost - Outlook like Packet messaging program via Wine
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
Before we install Outpost, we need to install a serial port to
work around a long-standing issue with wine:
cd /usr/src/archive/Outpost
wget http://static.danplanet.com/preserve/serproxy.c
gcc -o serproxy serproxy.c
cp serproxy /usr/local/sbin
Now go ahead and run the proxy:
/usr/local/sbin/serproxy /dev/ttyS0
*******************************************************
** NOTE: **
** It's important that when you run Wine, **
** you do NOT run it while being root! **
*******************************************************
First, download the newest version of Outpost. For my specific
ARES/RACES group has a unique version that comes with a set of
PACFORMS HTML forms built in.
#don't be the root user
cd /tmp
wget http://www.scc-ares-races.org/packet/installer/sccsetup21pub.exe
#Install the new program
wine sccsetup21pub.exe
#A few notes on installing Outpost on Wine
#
# 1. The new v3.1 version requires a Wine tool called Gecko but
# Wine will offer to download and install it automatically for you
#
# 2. Accept ALL of the installer's defaults - All files will be installed
# into $USER/.wine/
#
# 3. I saw several warnings during the install but all were benine
#
# [libmpg123.c:79] error: Stack variable is not aligned! Your
# combination of compiler/library is dangerous!
# [libmpg123.c:79] error: Stack variable is not aligned! Your combination of
# compiler/library is dangerous!
# fixme:system:SetProcessDPIAware stub!
# fixme:iphlpapi:NotifyAddrChange (Handle 0x18ee954, overlapped 0x18ee958): stub
# wine: configuration in '/home/dranch/.wine' has been updated.
# fixme:win:DisableProcessWindowsGhosting : stub
# fixme:msg:ChangeWindowMessageFilter c058 00000001
# fixme:msg:ChangeWindowMessageFilter c058 00000001
# fixme:msg:ChangeWindowMessageFilter c058 00000001
# err:richedit:ReadStyleSheet skipping optional destination
# err:richedit:ReadStyleSheet skipping optional destination
# err:richedit:ReadStyleSheet skipping optional destination
# fixme:ole:CoCreateInstance no instance created for interface
# {ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf} of class
# {56fdf344-fd6d-11d0-958a-006097c9a090}, hres is 0x80004002
# fixme:sfc:SfcIsFileProtected ((nil), L"C:\\Program Files\\SCCo
# Packet\\unins000.exe") stub
# fixme:ole:DllRegisterServer stub
# fixme:ole:OleLoadPictureEx
# (0x96e674,2246,0,{7bf80980-bf32-101a-8bbb-00aa00300cab},x=0,y=0,f=0,0x33fa80),
# partially implemented.
# fixme:ole:OLEPictureImpl_SaveAsFile (0x125960)->(0x12cb98, 0, (nil)), hacked
# stub.
# fixme:ole:OLEPictureImpl_FindConnectionPoint no connection point for
# {33ad4ed2-6699-11cf-b70c-00aa0060d393}
Everything should have installed for you into
~$USER/.wine/drive_c/Program Files/SCCo Packet. If not, troubleshoot it
first. Now, we have to make a few Wine config changes:
*************************************************************************
** Deprecated - I'm only including this if people want to try this **
** with newer versions of Wine and it starts to work. **
** If it does, please email me with the good news! **
** **
** *************************************************** **
** Native serial ports do not fully work. Must use the **
** the proxy support described in the previous chapter **
** *************************************************** **
** **
** # My machine has a physical serial port that I need to use **
** cd $USER/.wine/dosdevices **
** ln -s /dev/ttyS0 com1 **
*************************************************************************
To run Outpost once installed, do the following:
NOTE: When Wine is running, it does NOT register an icon with KDE in the
bottom task list or when you look to use keystrokes like ALT-TAB!
cd ~$USER/.wine/drive_c/Program Files/SCCo Packet/
#Run the serproxy program as shown above
wine Outpost.exe
Hopefully Outpost started for you and now you need to configure it. The
following assumes MY setup so make the required changes for your setup:
Legal:
User Call sign: KI6ZHD
User name: David Ranch
Tactical: --UNCHECKED--
The main Outpost window should now open up. Continue the configuration:
Setup:
TNC:
Interface type tab
Device Name: TELNET
TELNET server:
Remote Host: 127.0.0.1
Remote Port: 2000
Max speed: 9600
LOGON values:
- UNcheck "Use station identifier"
- Logon: W6XSC-1 (for my home QTH only)
BBS:
BBS Name:
BBS Name: SCC BBS1 - SCCO Offices San Jose
Connect Name: W6XSC-1
BBS Type: User defines the BBS prompts
BBS Prompts:
BBS Command Prompt: "> " (without the "s)
***********************************************************
** Incompatible serial configuration -- use TELNET above **
***********************************************************
TELNET tab
Device Name: SCCO_KENWOOD_710
TNC Comm port:
Comm port: Com1
Max speed: 9600
BBS:
BBS Name: SCC BBS1 (W6XSC-1)
TNC Name: [click on the Set/Get TNC button]
Outpost would work for me but it would send serial commands to the TNC really
really slowly. It eventually threw an error on the CLI of:
fixme:comm:set_queue_size insize 1024 outsize 512 unimplemented stub
To create a PacForm message:
- Make sure Outpost is already running
- Start the normal Linux-based firefox
- Hit Control-O to open a local file
- Navigate to (your homedir)/.wine/drive_c/PacFORMS/exec
- select the form you want to use
- once filled out, click on the "SUBMIT the form to Outpost" and go back
to Outpost. You'll find the ASCII representation of that form
waiting to be sent!
37. - Chirp - Multi-Radio memory programming tool program
Chirp is is a graphical Python-based HAM radio memory programming tool that
supports a multitude of Icom, Yaesu, and Kenwood radios HTs, mobiles, and
now HF radios. To be clear, this tool copies a source radio's memory
presents and stores them in a platform agnostic way that then allows the
user to uploaed these settings to other, non-similar radios thus allowing
you to syncronize all the memories for repeaters, ec. Chirp does NOT record
specific radio settings like DSP settings, CW key modes, APRS settings, etc.
This is the main window that shows what was downloaded which you can directly edit, etc:

For my specific shack, Chirp supports my Kenwood TH-F6A HT and D710 mobile as well as
my Yaesu VX5 HT and FT857 HF/VHF/UHF rig. It even supports my Icom IC-80AD Dstar HT!
The RPM requirements for this application is Python, GTK, and PyGTK. Centos
already comes with most of the dependencies by default:
Centos6:
python-2.6.6
gtk2-2.18.9
pygtk2-2.16.0
Centos5:
python-2.4.3
gtk2-2.10.4
pygtk2-2.10.1
It also needs the following:
yum install libxml2-python
And one more RPM that we have to build ourselves:
cd /usr/src/archive/Chirp
# PySerial
wget -O pyserial-2.2-6.el5.test.src.rpm ftp://ftp.pbone.net/mirror/rpms.arrfab.net/centos/testing/i386/pyserial/pyserial-2.2-6.el5.test.src.rpm
rpm -ivh pyserial-2.2-6.el5.test.src.rpm
cd /usr/src/redhat/SPECS
#For 64bit systems
rpmbuild -bb --target=x86_64 pyserial.spec
rpm -ivh /usr/src/redhat/RPMS/noarch/pyserial-2.2-6.el6.noarch.rpm
#For 32bit systems
rpmbuild -bb --target=i686 pyserial.spec
rpm -ivh /usr/src/redhat/RPMS/noarch/pyserial-2.2-6.el6.noarch.rpm
Now, the current released and beta versions of Chirp code can be found at:
http://chirp.danplanet.com/
To get the newest bleeding edge code out of the SVN depot, goto:
http://d-rats.com/hg/hgwebdir.cgi/chirp.hg/archive/tip.tar.gz
or
http://trac.chirp.danplanet.com/chirp_daily/
Though this tool runs via Python (non-compiled code) and thus doesn't need
to be installed, an RPM is available to make things clean:
yum install http://d-rats.com/yum/f11/d-rats-repo-0.1.2-1.fc11.noarch.rpm
yum install chirp
Once the code is installed, simply run:
chirpw
37a. - Thoughts on Chirp and radio memory syncronization
As a new HAM, most people just start loading up various frequencies into their
single radio and don't think more about it. As the bug spreads and they buy
more radios, a problem starts to occur:
- Different radios offer different numbres of memories. For example, here are
examples of different radios out there and the number of memories they support:
Kenwood Kenwood Yaesu Yaesu Icom baofeng baofeng Wouxun
D710 TH-F6A FT857D VX5R IC80AD uv3r uv5r UV6D
------- ------ ------ ----- ------ ----- ----- ------
memories : 999 400 200 220 1000 100 128 199
For my HW, the lowest common denominator is 200 memories
- Different radios offer different frequency bands: 6m, 2m, 1.25cm, 70cm, 23cm, etc
To accomodate various radios, I came up with the follow plan and maybe this
would be helpful to you so that the same memory number on ANY of your radios
will be consistent:
Memory 1-75 : reserved for 2m (common to all radios)
- 75 down is where I put the simplex frequencies
Memory 75-89: reserved for 1.25cm (F6A)
- 89 down is where I put the simplex frequencies
Memory 90-99: reserved for 6m (VX5R)
- 99 down is where I put the simplex frequencies
Memory 100-175: reserved for 70cm (common to all radios)
- 175 down is where I put the simplex frequencies
Memory 176-200: reserved for Police/Fire/etc monitoring (for radios that support wide-band receive)
38. - WXTOIMG - Decoding APT and WeFAX satelitte images
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
WXtoIMG is a Multi-platform APT and WeFAX satelitte decoder. Grab the binary at:
http://www.wxtoimg.com/downloads/
rpm -Uvh /tmp/wxtoimg-2.10.11.i386.rpm
To run it:
/usr/local/bin/wxtoimg
Once the Xwindows box comes up, you have populate in the Lat/Long.
It has a course look up engine and I was able to put in:
San Jose
USA
but it didn't find my smaller, near-by city.
Set the radio to 137.10, 137.40, 137.50, 137.62, or 137.9125 FM (50kHz or NFM)
39. - Winlink 2000 - Using a remote Winlink node via local AX.25 packet and the Internet
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
Winlink 2000 is a distributed email system that has RF-based and
Internet access that is intended for Amateur Radio operators over:
- HF via WinMOR software TNC (Windows .net only as of March, 2011)
- HF via Pactor 2/3 (SCS proprietary TNCs)
- AX.25 packet (mostly 1200b)
- APRS
- TELNET via TCP/IP over the Internet
- Webmail via TCP/IP over the Internet
There are several programs out there to create an easy to used interface to
Winlink:
- Paclink-Unix - a translational system that allows any POP3 email client
to interface to Winlink2k
http://paclink-unix.sourceforge.net/
- Airmail is a Windows-only program that's similar to Outpost that
is it's own email reader and supports Winlink 2k
- Outpost for Windows also supports Winlink 2000 interfacing
- JNOS2 now has B2F message compatibility with Winlink2k. It's not
a client per se but a relaying system
- Linux-RMS-Gateway
http://download.prgm.org/dl5di-soft/rms-gateway/
which replaced "Telpac-node Linux"
http://www.prgm.org/projekte/telpac-node/index.html
This is a Linux solution to run your own RMS gateway on Packet
radio that interfaces to Winlink CMS messaging servers on the
Internet
Quick and dirty notes on using Winlink until I truely complete this section:
1. To create a Winlink account, you *MUST* interface to an existing RMS
station on the amateur bands (HF or packet to an RMS station : APRS does
*not* count) .
Once you connect to a RMS Packet station, you are automatically
registered for 400 days. Just login once every 90 days to keep your
account active.
* If your account goes inactive after 400 days, any Winlink email to
* you will bounce. Just login again via RF as mentioned above to
* reactivate it.
*
* NOTE: the use of the webmail system does NOT reset this timer. Only
* the use of an RF connection or Internet-based TELNET to a
* CMS system will work
For me, I connect to KE6AFE-10 via LPRC2 on 144.910 1200 BAUD packet.
You can find local stations to you via:
VHF : http://www.winlink.org/RMSPacketPositions
HF : http://www.winlink.org/RMSHFStatus
APRS: see below
Locating Winlink systems via APRS
---------------------------------
If you have an APRS setup, you can find the closest Winlink RMS server
to your current QTH, read your winlink email via APRS messages, etc!
Full details: http://www.winlink.org/aprslink
To find the closest WinLink RMS stations:
a. Send a standard APRS beacon to let the APRS world know
your location
b. APRS TO: WLNK-1
APRS MSG: <G#>
Where # is the number of machines you want returned
2. Connect to an active Winlink system:
TELNET via the Internet:
------------------------
- Pick from one of the CMS servers around the world shown below on
destination port 8772.
NOTE: connections will timeout in 30 seconds
NOTE2: password is "CMSTelnet" (without the quotes and it's
not case sensitive)
Server | Server | Server
Call | Internet DNS name | location
-------+----------------------+--------------
WL2KS SanDiego.winlink.org San Diego
WL2KH Halifax.winlink.org Halifax
WL2KP Perth.winlink.org Perth
WL2KV Wien.winlink.org Wien [Vienna]
- To send an email to an Internet address from a RF-based Winlink
connection:
----------------------------------------------------------------
sp smtp:<standard internet email address>
Subject: <//wl2k [subject]>
- The //wl2k prefix in the subject line is an anti-spam setting,
make sure it stays in there or incoming response email from the
Internet will be dropped
- Mail to other Winlink users only needs a callsign - You
don't need to enter the smtp: or the @winlink.org
- Emailing a Winlink user from the Internet:
------------------------------------------
All E-mail coming from the Internet to your Winlink account is
automatically blacklisted with a notice to you. To allow mail
to come through, first send a message from your Winlink account
to the address you wish to whitelist. You can also sign up for
Webmail access by clicking the Webmail tab on
http://www.winlink.org. You can also control your whitelist
from there.
- To: callsign@Winlink.org
Subject: //wl2k <subject>
- APRS: To send messages via APRS
--------------------------------
- To send an email to an Internet from APRS Winlink
APRS TO: WLNK-1
APRS MSG: SP callsign@winlink.org
APRS MSG: message_text_etc /EX
or
APRS TO: WLNK-1
APRS MSG: SMS callsign@@winlink.org here is a oneline message
40. - DSD - Decoding MotoTrbo, P25, ProVoice, NXDN, etc
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
I'm still working on this one but the DSD toolset seems very robust to
decode:
* P25 Phase 1
* ProVoice EDACS Digital voice
* X2-TDMA - Motorola public safety TDMA system with P25 style signaling
(mostly based on DMR)
* DMR/MOTOTRBO - Digital Mobile Radio standard
* NXDN - 9600 baud (12.5 kHz) NEXEDGE and 4800 baud (6.25 kHz) NEXEDGE/IDAS
* C4FM modulation
* GFSK modulation (including GMSK and other filtered 2/4 level FSK)
* QPSK modulation (sometimes marketed as "LSM")
The following formats are currently under investigation or development:
* P25 Phase 2 - standard not finalized yet, vocoder is supported by mbelib
* OpenSky - four slot format vocoder may be supported by mbelib. Will not be
supportable if it is determined that voice encryption is not
optional
* D-STAR - Voice frames recognized, vocoder not supported by mbelib. May
be possible to pass voice bits to DVDongle.
http://wiki.radioreference.com/index.php/DSD
---------------------------------
- Download the newest code (you have to wait 45 seconds per file to download it)
- The files are double-wrapped so you'll have to un-tar and then un-tgz the files:
#I will make an RPM for this shortly
mkdir /usr/src/archive/DSD
cd /usr/src/archive/DSD
tar xvf mbelib-1.2.3-src.tar
tar xzvf mbelib-1.2.3.tar.gz
tar xvf dsd-1.4.1-src.tar
tar xzvf dsd-1.4.1.tar.gz
cd mbelib-1.2.3
make
make install
#Make sure the LDPATH was updated
/sbin/ldconfig -p | grep mbe
cd ../dsd-1.4.1
make
make install
To test this system, I did a few things:
- Installed audacity (a great sound editing and viewing tool):
yum install audacity
- Connected the output of the Kenwood D710 VFO-B (external TNC) to the
Mic Input of the laptop (AC97)
- D710:
- Tuned the VFO-B to a known Mototrbo frequency
- Set EXT. Data speed to 9600 (descriminator tap)
- NOTE: do NOT try to use Fldigi's "RX audio capture" feature
as it only samples at 8000. DSD wants 48k
- Find the audio input device you want to record with:
arecord -l
#16bit, little endian, 1 channel (mono), 48k samples, no end duration
# output is wav
arecord -vv -f S16_LE -c1 -r48000 -d 0 -t wav --device=hw:1,0 /tmp/capture.wav
41. - Gpredict - Satellite tracking, prediction and graphical mapping tools
+---------------------------+
| To be updated for Centos6 |
+---------------------------+
Gpredict is a very modern Satellite prediction tool for Linux. To install it, download the
RPM from the FedoraCore repo:
The only version of Gpredict that is compatible with Centos5 is version 0.9.
Gpredict 1.3 and 1.2 are *not* compatible with Centos5 -- BUMMER!
--
wants 'gtk+-2.18.0' but Centos5 will only have 2.10
wants 'glib-2.22.0' but Centos5 only has GLib 2.12.3
wants 'gthread-2.22.0' but Centos5 only has GThread 2.12.3
wants 'libcurl >= 7.19.0' but Centos5 only has libcurl 7.15.5
goocanvas requires gtk2-devel-2.12 but Centos5 only supports 2.10
--
To support version 0.90:
cd /usr/src/redhat/SOURCES
http://koji.fedoraproject.org/koji/packageinfo?packageID=1958
wget http://kojipkgs.fedoraproject.org/packages/gpredict/0.9.0/5.el6/src/gpredict-0.9.0-5.el6.src.rpm
One thing I've been noticing with various new RPMs is that if you try to install the
SRPM, you'll get errors like:
error: unpacking of archive failed on file /usr/src/redhat/SOURCES/gpredict-0.9.tar.gz;4e5483f3: cpio: MD5 sum mismatch
It seems this is a specific issue to RPM but we can still fix this:
rpm2cpio gpredict-0.9.0-5.el6.src.rpm | cpio -imud *.spec
mv gpredict.spec /usr/src/redhat/SPECS
rpm2cpio gpredict-0.9.0-5.el6.src.rpm | cpio -imud *.gz
mv gpredict-0.9.tar.gz /usr/src/redhat/SOURCES
cd /usr/src/redhat/SPECS
vim gpredict.spec
--
Change the line "%configure" to
"%configure --enable-coverage"
--
One more prerequsite:
yum install intltool
Ok, let's compile it:
cd /usr/src/redhat/SPECS
rpmbuild -bb --target=i686 gpredict.spec
rpm -Uvh /usr/src/redhat/RPMS/i686/gpredict-0.9.0-5.i686.rpm
42. - Quisk - Software Defined Radio (SDR) receiver
+------------------------------------+
| This section is a work in progress |
+------------------------------------+
Software Define Radios or SDRs are the newest major innovation to come to HAM
radio in a very long time. Classic radios that use analog circuits to
create super hetrodyne radios (local oscilators, mixers, filters, detectors,
etc.), to de/modulate the signals. An SDR is a completely different device
where it uses direct conversion to takes the DIRECT antenna input, pre-amplify
the broadband signal and split the signal into two mirror pieces: one signal
at 0 degree phase angle and another at 180 degree phase angle. This is
called I-Q signals. At that point, the waveforms go into a wide sampling
sound card and all de/modulation, etc. occurs PURELY in computer software!
This is the main window that shows the maximum bandwidth being captured:

Software:
---------
There are several Linux-based SDR programs out there:
Quisk - What we are going to install in this section (shown above)
LinRad, GqRx, etc.
Hardware:
---------
Though minimial, there is still some hardware. There are simple kits
like the WB5RVZ "SoftRock" units that use a common soundcard all the way up to
full complete units like a SDR-IQ, Persius, Flex Radio, etc.
For this section, I'm using the SoftRock Lite II receive-only module. Building
up that board is well out of the scope of this document but it's not a overly
complicated board to build though there is some surface-mount devices (three
chips, ~8 caps) and you have to wire two toroids.
Back on topics, let's get started:
- Dependencies:
-------------
Here are the code dependencies to get Quisk compiled and going though I'm omiting
other programs that were previously installed with other programs as described in
this doc. Please see the Quisk documentation for learning
more of the dependies if you're installing this out of order from the rest
of the Hampacket documentation.
#Graphical UI modules (these will come from EPEL)
yum install wxPython wxGTK wxBase wxGTK-gl wxGTK-media
# Other known dependencies that are needed but are filled in previous
# sections include:
#
# python-devel fftw fftw-devel alsa-lib-devel portaudio portaudio-devel
# ^ ^ ^ ^ ^ ^
# base base base base epel epel
- Next, download Quisk
cd /usr/local/redhat/SOURCES
wget -O quisk-3.6.2.tar.gz http://james.ahlstrom.name/quisk/quisk-3.6.2.tar.gz
Test stages (will wrap into an RPM later):
make
- Softrock specific : Copy over a configuration file for the SoftRock board
cp quisk_hardware_fixed.py $HOME/.quisk_conf.py
- Copy in the defaults as well
cat quisk_conf_defaults.py >> $HOME/.quisk_conf.py
# Show which devices are available to do recording
#
# This stage isn't 100% reliable for me so you'll have to play with it but..
1. Run the python script that comes with Quisk to help identify the card
id:
#Important: run as root
"python portaudio.py"
2. Alternatively, you can do it manually using the following commands:
cat /proc/asound/cards
cat /proc/asound/devices
Here, match up the card to the text "digital audio capture".
3. Set the recording sampling rate to match your soundcard. Most basic sound
cards will either support 44100 and usually 48000. More advanced cards might
offer 96000 or 192000. To see what your card can support, run:
alsa-info --stdout | grep -A 12 "Audio Input"
In the $HOME/.quisk_conf.py, set the proper value but start LOW to begin with:
sample_rate = 48000
4. Set the sound card capture: For me, I edited the "else" stanza of the
$HOME/.quisk_conf.py file under the line "if sys.platform == "win32":"
to
name_of_sound_capt = "portaudio#0"
5. Unset the sound card playback: Since I have a softrock, I disabled
this feature by finding the file and put a # in front:
#name_of_sound_play = name_of_sound_capt
6. For a 20m softrock, change the fixed center VFO frequency
fixed_vfo_freq = 14046000
7.
Other Recommended changes to the quisk_conf.py file
default_screen = 'WFall'
More to come here...
43. - SVXlink and Qtel - Echolink client and server - Ham Radio and VoIP over the Internet
Echolink, IRLP, and Allstar are Voice over IP (VoIP) technologies which let
you link and send amateur radio audio over the Internet to remote stations. These
stations can be other indivual stations, full repeaters, or entire collections of
repeaters called reflectors! Please see the next follow on "Using Echolink and
IRLP via radio and Svxlink/Qtel" section for more details.
The SVXLink is a suite of tools that provides:
- Echolink (EL) GUI client (GUI)
- Echolink command line client (Svxlink non-daemon mode)
- Local voice playback for voice quality testing
- Local voicemail recording and playback
- Full blown repeater controller functionality including multiple RF and
Internet-linked receivers and transmitters if you really want to
With all that functionality, you can have your system act as:
- A pure software-only Echolink client :: No radio required
- A Echolink simplex repeater :: 1 radio required
- A Echolink full repeater :: 1 ore more full duplex radios required
but additional radios are supported
for full linking, etc
A note on real radio connections:
---------------------------------
- When connecting the computer to a radio, you're going to need:
- A dedicated sound card to support the audio in/out with your radio.
Those cheap $5 USB units on Ebay seem to work quite nice but you can
also use HAM radio targeted soundcards like US Interface Navigators,
Signalinks, but that's generally overkill.
- Depending on the sound interface you pick, you will need a PTT
circuit that connects to a serial port to key up the radio. This
circuit was previously described in the "Soundmodem - Sound-card based
AX.25 packet TNC" chapter.
- A serial port on your machine to connect to the PTT circuit on
the radio
- More Echolink setups use COS or Carrier Operated Squelch that
tells the software that the radio's squelch is open, possibly
with the proper CTCSS/DCS tones and to start sending to the remote
stations even when there might not be any audio present. This
can be a LOT nicer than using VOX. To support COS, you might need
to hack this into your legacy radio (D710 has it built in) and
you need another serial line to track this status.
- If you are going to have multiple sound cards in your computer, you'll want
to configure your system to have consistent ALSA device enumeration. Please
see the "PreSetup: ALSA determinisitic sound cards" section for more details.
43.a - SVXlink and Qtel - Compiling and packaging the application
Ok, let's get started. First, let's get and compile the code. Fortunately for us,
Fedora has a fairly modern package that creates a strong foundation but it needs fixes.
Let's get started on making those changes now:
# Get, install the Fedora SRPM, and delete the old sources
#
wget http://kojipkgs.fedoraproject.org//packages/svxlink/11.11.1/4.fc16/src/svxlink-11.11.1-4.fc16.src.rpm
rpm -ivh /usr/src/redhat/SRPMS/svxlink-11.11.1-4.fc16.src.rpm
rm -f /usr/src/redhat/SOURCES/svxlink-11.11.1.tar.gz
# We have to download the newest Subversion copy of Svxlink as
# a) the "current" 11.11.1 code is actually very old
# b) the SVN code is actively getting commits
# c) the newest SVN code compiles on Centos, the 11.11.1 code does not
#
#- I'm using the trunk as of 09/27/12
# *********************
# * SVN revision 2249 *
# *********************
#
# NOTE: I'm naming this new SVN code version 11.11.2. This is purely
# a value I came up with
#
wget -O svxlink-11.11.2.tar.gz http://svxlink.svn.sourceforge.net/viewvc/svxlink/trunk/src/?view=tar
# Finally, the Svxlink sources don't include the default audio files. Lets
# get those now
#
wget http://sourceforge.net/projects/svxlink/files/sounds/11.11/sounds-en_US-heather-16k-11.11.tar.bz2/download
#Now we need to clean things up a bit to make it fit into an expected RPM.
#
# NOTE: I'm making up a new version number of 11.11.2 to reflect it's SVN based
#
cd /usr/src/redhat/BUILD
tar xzvf /usr/src/redhat/SOURCES/svxlink-11.11.2-1.tar.gz
mkdir svxlink-11.11.2
mv src/* svxlink-11.11.2/
rmdir src
rm -f /usr/src/redhat/SOURCES/svxlink-11.11.2*
tar czvf /usr/src/redhat/SOURCES/svxlink-11.11.2.tar.gz svxlink-11.11.2/
The above Fedora based SPEC file uses some package names that's incompatible with Centos6.
We will need to update those packages, the version of the code in the RPM, and fix a
some specific issues. You can either use my svxlink.spec file found here:
wget http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/redhat/SPECS/svxlink.spec
or manually edit the svxlink.spec file and do the following. Find the line
that starts with:
%define main_version 11.11.1
and replace it with
%define main_version 11.11.2
next,
Release: 4%{?dist}
and replace it with
Release: 1%{?dist}
next,
BuildRequires: libsigc++-devel
and replace it with:
BuildRequires: libsigc++20-devel
Next, svxlink does NOT compile properly with parallel compiling so we have to disable that:
make %{?_smp_mflags}
and replace it with:
make
finally, Svxlink doesn't create the proper userdir for full functionality as
Pulse needs to write temp files, etc. Find the line that looks like:
useradd -r -g daemon -d / -s /sbin/nologin \
-c "SvxLink Daemon " svxlink
and change it to:
adduser -r -g daemon -G audio -m -s /sbin/nologin -c "SvxLink Daemon" svxlink
Save all those changes make to the svxlink.spec file.
Now we need to install some dependencies to compike things:
yum install libsigc++20-devel gsm-devel speex-devel
Finally, let's build this for a Centos6 machine and install it:
rpmbuild -bb --target=x86_64 svxlink.spec
Finally it's time to install all the resulting RPMs:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh libasync-0.18.2-1.el6.x86_64.rpm echolib-0.14.1-1.el6.x86_64.rpm \
qtel-0.12.0-1.el6.x86_64.rpm svxlink-server-0.13.1-1.el6.x86_64.rpm
#(OPTIONAL) You can also install the developer libs if you'd like too
rpm -ivh libasync-devel-0.18.2-1.el6.x86_64.rpm echolib-devel-0.14.1-1.el6.x86_64.rpm \
svxlink-debuginfo-11.11.2-1.el6.x86_64.rpm
A few other things:
- There seems to be a bug in the Fedora SPEC file when creating the proper
media files for Svxlink. Lets fix that now:
mkdir /usr/share/svxlink/sounds
ln -s /usr/share/svxlink/en_US-heather /usr/share/svxlink/sounds/en_US/
43.b - Configuring and testing the Svxlink server
Audio connections between the radio and the computer soundcard
--------------------------------------------------------------
This topic deserves some up front mention and I will also mention
it before. Specifically, it's recommended to provide electrical isolation
between the radio and the computer but it's not strictly required.
This "isolation" can come in several forms such as using audio transformers
(one on input, the other on output), opto-couplers for the PTT linec. In addition
to this, Echolink operation can benefit from an additional circuits tracking COS
(Carrier Operated Squelch) for better operation compared to using VOX. More
feature packed isolation boards offer on-board dedicated DTMF decoders for better
decoding under fader, flutter, etc.
Here are some sound card interfaces to give you an idea of what's out there:
- Inexpensive isolation only, requires a serial port for PTT:
http://www.ebay.com/itm/EASY-DIGI-Sound-Card-Interface-PSK-RTTY-SSTV-NBEMS-JT-65-PCB-KIT-/221082800840?pt=LH_DefaultDomain_0&hash=item33798fd2c8
- Sound card isolation, COS detection, DTMF decode, requires a serial port for PTT:
https://www.foxdelta.com/products/foxecho.htm
- Sound card isolation only, no-serial port PTT:
http://www.vk2zay.net/article/161
- Additional options: http://www.echolink.org/interfaces.htm
For my specific setup, I'm using a Kenwood D710 that has specific support for Echolink
though it doesn't seem to have any audio isoloation built in.
Getting the required system details in place to start configuring Svxlink:
--------------------------------------------------------------------------
- Be sure you configure the soundcard to be used by svxlink to always get the
same ALSA ID. This is detailed in great detail in the previous
"PreSetup: ALSA determinisitic sound cards" section.
- Determine which ALSA device ID you're going to use (that previous section
will help you get that information)
- Test that the soundcard that's going to be used for EL is working. In
my setup:
# Play a sound: connect up headphones to the output of the soundcard
# and make sure you can hear it
#
# NOTE: When I first tried to use this sound device, it kept
# giving me the error:
#
# Channels count non available
#
# It seems this soundcard is a MONO *only* playback device so
# I have to use the ALSA "plug" module to convert the
# stereo audio to a mono output that the soundcard would
# accept
#
# NOTE2: This example assumes ALSA ID #3. You will need to change
# this ID to fit your environment
#
aplay -D"plug:'hw:3,0'" /usr/share/sounds/alsa/Front_Right.wav
# Record a sound (assumes you have a working microphone connected):
#
# NOTE: This example assumes ALSA ID #3. You will need to change
# this ID to fit your environment
#
arecord -D"plug:'hw:3,0'" -c 1 -f S16_LE /tmp/test.wav
# play back the recorded audio to make sure it a) worked, b) you
# can hear it and the audio sounds reasonable:
#
# NOTE: This example assumes ALSA ID #3. You will need to change
# this ID to fit your environment
#
aplay -D"plug:'hw:3,0'" /tmp/test.wav
Svxlink Configuration:
----------------------
- Edit the /etc/svxlink/svxlink.conf file that comes with the RPM
- For 64bit systems like mine, I needed to edit in the [Global] section,nd
change the line from/to the following:
MODULE_PATH=/usr/lib/svxlink
to
MODULE_PATH=/usr/lib64/svxlink
- NOTE: This Hampacket Centos documentation doesn't touch on repeater use.
As such, the "LOGICS" section defaults to "LOGICS=SimplexLogic" which
assumes your putting this system on a simplex frequency.
- (ONLY CHANGE if Required)
As noted in the svxlink.conf manual page, Svxlink always internally works
with 8k samples from your soundcard and some older cards can natively
support 8k sampling but *very poorly*. With modern soundcards, most of them
ONLY support 48k sampling. To confirm what your sound card supports, run the
following commands:
cat /proc/asound/cards
Next, find your card from the output above and note the AlSA ID. For my
card, it's ID #3. Next, issue the command:
cat /proc/asound/card3/stream0 | grep -i rates
Here, you should see the available sampling rates for your card. My CM109
USB card *only* supports: 44100 and 48000. This means that Svxlink will
always default to 44100 unless asked to support.
To start off, leave this sampling setting alone and see if the audio quality
is ok. If the audio quality you hear or the remote site hears is poor, try
chaning:
#CARD_SAMPLE_RATE=16000
to
CARD_SAMPLE_RATE=48000
- If you plan on posting your location information into the Echolink and/or
APRS systems, uncomment out the line:
#LOCATION_INFO=LocationInfo
to
LOCATION_INFO=LocationInfo
----------
- Under the [SimplexLogic] section, change the lines from/to for the following:
- Svxlink offers a lot of functionality via the MODULES feature. Some of the
other modules include:
- local weather report from the local airport code
- HF propogation reports
- Selective call
By default, Svxlink enables the following modules:
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
If you don't want some of these features to be available, say the VoiceMail
feature, remote them from this list
- Change the CALLSIGN line to use your callsign but **do NOT include** say the
-L suffix for simplex operation:
CALLSIGN=MYCALL
- You might want to change the callsign ID timers
- SHORT: The default setting is 60min for the short ID (IDs every 60 minutes
when the link is active and there is a live QSO). In the US, you
need to have the machine ID every 10 minutes:
SHORT_IDENT_INTERVAL=10
- LONG: 60min for the long ID when the system is idle. It's also used to
announce any waiting svxlink voicemails, etc. If you want your system
to run "low and silent, setting this to 0 disables this feature.
LONG_IDENT_INTERVAL=0
- If you only want your machine to ID if there has been activity on
the system, change the following line. Please note that per the
svxlink.conf man page, the SHORT_IDENT_INTERVAL variable has to be
greater than 0:
#IDENT_ONLY_AFTER_TX=4
to
IDENT_ONLY_AFTER_TX=4
- (OPTIONAL but recommended) - If you'd like to be able to RECORD any
signals on the radio frequency, you need to uncommend out (remove the
#s) from these two lines:
QSO_RECORDER_DIR=/var/spool/svxlink/qso_recorder
QSO_RECORDER_CMD=8
- If you do enable this recorder feature, you have to make this
directory writable by the owner of svxlink process (shouldn't
be root). To fix that, do the following
mkdir -p /var/spool/svxlink/qso_recorder
chown svxlink /var/spool/svxlink/qso_recorder
- This feature can only be enabled/disabled from the top menu
and not when say the Echolink module is loaded
----------
- The editing of the [RepeaterLogic] section is not nessisary as we aren't
using it in this section but I feel it's best to make some minimal changes
to stay consistent. Please change the line from/to the following:
- Change the CALLSIGN line to use your callsign but do NOT include the -L suffix:
CALLSIGN=MYCALL
- Svxlink offers a lot of functionality via the MODULES feature. By default,
it enables:
MODULES=ModuleHelp,ModuleParrot,ModuleEchoLink,ModuleTclVoiceMail
If you don't want some of these features to be available, say the
VoiceMail feature, remote them from this list
----------
- Under the [Macros] section, you can setup shortcuts to connect to do all
kinds of common things. For example, if you wanted to create a quick method
to connect to my echolink node, you could enter in:
2=EchoLink:767882#
----------
- Under the [Rx1] section, change the following to reflect your audio
setup:
AUDIO_DEV=alsa:plughw:0
For my setup, I'm using ALSA device #3 and thus needed:
AUDIO_DEV=alsa:plughw:3,0
- VOX vs COS:
-----------
The current default for svxlink is to detect that SQL is open
purely by hearing loud enough signals from the radio via the setting:
SQL_DET=VOX
When the audio is loud enough, for long enough, the svxlink program
should show lines like:
Rx1: The squelch is OPEN (1.56161)
Rx1: The squelch is CLOSED (3.77363)
Getting the VOX settings just right so it allows for natual human
speak audio level, pauses, etc. can be pretty tricky. If you
are using an device that supports COS like the D710, you would want to
change this value to:
SQL_DET=SERIAL
# for my specific setup, I use a Udev-named serial port
SERIAL_PORT=/dev/d710-vfo
SERIAL_PIN=CTS:SET
- (optional) Support for external DTMF decoding available on some of the
above mentioned Isoloation boards to improve DTMF decoding
with weak signals, mobile flutter, etc.. I'm personally not using one
of these enabled DTMF-decoding boards so I set the following:
DTMF_DEC_TYPE=INTERNAL
and I commented out the line
DTMF_SERIAL=/dev/ttyS0
to
#DTMF_SERIAL=/dev/ttyS0
----------
- Under the [Tx1] section, change the following to reflect your
setup:
AUDIO_DEV=alsa:plughw:0
for me using ALSA device #3, I needed:
AUDIO_DEV=alsa:plughw:3,0
- Next, you need to set Svxlink how to key your radio. Solutions here
can range from configuring VOX on your radio itself (NOT recommended even
if your radio supports it) to the recommended approach of using an external
PTT circuit via one of above isoliation boards.
The D710 natively supports PTT via the RTS serial line (non-inverted).
So for my setup that I created a unique UDEV name for the D710's
serial port, I use:
PTT_PORT=/dev/d710-vfo
PTT_PIN=RTS
+------------------------------------------------------------------------------+
| ** Critical Issue: Improper serial port shutdown with the D710 ** |
| |
| Please see below about a critical issue with the D710 and the RTS |
| serial line when not properly shutdown! |
+------------------------------------------------------------------------------+
- (OPTIONAL) - Under the [LocationInfo] section, the system can locate
your echolink station in the APRS system when it's running. To
enable this, make the following changes:
- Being in the US, I should use the North America APRS server
APRS_SERVER_LIST=noam.aprs2.net:14580
- Enable the Echolink status server by removing the #
STATUS_SERVER_LIST=aprs.echolink.org:5199
- Enter in your GPS coordinates. It's CRITICAL that you enter in your
GPS coordinates in Degrees, Minutes, Seconds (DMS) and *not* Decimal
format. If you don't, Svxlink will error out and refuse to run. To
figure out your GPS location, see the "Xastir - Configuring" section
elsewhere in this document in how to use GoogleMaps and then use
another website to convert to DMS. For my setup, I configured:
#Degrees, Minutes, Seconds - like Delorme GPS - less accurate
LON_POSITION=121.59.59W
LAT_POSITION=37.20.36N
NOTE: Negative LAT or LON numbers are not needed
- Put in a callsign to be found as. The example callsign uses
something like EL-CALLSIGN which I've never seen before but
Svxlink ONLY supports this syntax today. If you try to use
something like KI6ZHD-EL, it gives an error. So, I'm using:
CALLSIGN=EL-KI6ZHD
- The following values will need to be updated to match your
desired simplex frequency, radio power, antenna used,
it's installation height above average ground (HAAT),
if it's omni-directional, and if you're using TONE
to key up your Echolink system.
+-------------------------------------------+
| IMPORTANT NOTE on choosing the FREQUENCY: |
+-------------------------------------------+
NOTE1:
Here in the Bay Area, there can be a a lot of people who
listen and hang out on simplex. When picking a frequency
to put your machine on, it's recommended to use the
QSO_RECORDER feature (discussed below in a following section)
with the your radio's tone-squelch (CT) turned OFF for a full
*day or two* first. Once you have confirmed, that your chosen
simplex frequency isn't used much, then go ahead and set it
here.
NOTE2: The use of CTCSS/DCS TONEs:
If there are a LOT of echolink systems sitting on simplex
frequencies and if just one other machine in my RX area
was using Svxlink with the same CTCSS/DCS tones, the
remote person might actually start controlling both Svxlink
nodes without realizing it! The only way to better control
ths is via the use of CTCSS/PL TONEs or DCS codes on RX of
your radio.
NOTE3: If you're using an ancient radio w/o CTCSS support,
Svxlink can actually support them in software. That isn't
covered in this document but it's worth mentioning
For me, I'm using the following details for frequency, noted power,
etc
--
FREQUENCY=146.595
TX_POWER=50
ANTENNA_GAIN=9
ANTENNA_HEIGHT=6m
ANTENNA_DIR=-1
PATH=WIDE1-1
BEACON_INTERVAL=10
TONE=136
COMMENT=KI6ZHD Echolink running svxlink.sourceforge.net
--
- Change the /etc/svxlink/svxlink.conf file's permissions to 660 and it's
ownership to a non-root user:
chown -R $USER /etc/svxlink/
chmod 660 /etc/svxlink/svxlink.conf
- Edit the /etc/svxlink/svxlink.d/ModuleEchoLink.conf file
Echolink Validation:
--------------------
At this point, this document assumes you have a validated Echolink
callsign for either a -L or -R node type. The whole validation process
for Echolink is covered in the next section so please skip ahead and
then come back to here when you're ready.
- This configuration file logs your system into the Internet facing
Echolink system to accept and optionally originate VoIP sessions. Make
the following changes:
- Change the following to reflect your callsign including the -L for
simplex operation or -R for repeater operation:
CALLSIGN=MYCALL-L
- Change the line to reflect your unique Echolink Sysop password:
PASSWORD=MyPass
- One special note on the LOCATION field:
--
This line has specific formatting and can ONLY be **27 characters**
long. The default setting is:
LOCATION=[Svx] Fq, MyTown
Below is what I set for my system to fit:
# 123456789012345678901234567
LOCATION=[Svx]146.595 pl~136.5 S.Bay
Btw, keeping the "[Svx]" prefix text will allow other tools on the
Internet more easily detect your station in addition to enabling
Echolink and APRS geolocation. For example, check out this URL to
see all the Svxlink-enabled systems on the Internet:
http://www.pgo.sytes.net/SvxLink/?SvxLink%20User%20List%20all%20over%20the%20world.
- Go ahead and update the other Echolink fields as well. For my setup, I used the
following:
SYSOPNAME=David
DESCRIPTION="You have connected to a SvxLink node,\n"
"a voice services system for Linux with EchoLink\n"
"support.\n"
"Check out http://svxlink.sf.net/ for more info\n"
"\n"
"QTH: Santa Clara, CA USA\n"
"QRG: Simplex link on 146.595 MHz\n"
"CTCSS: 136.5 Hz\n"
"Trx: Kenwood D710\n"
"Antenna: Comet CX-333 triband omni at 25ft HAAT\n"
Security Permissions
--------------------
+-----------------------------------------------+
| One CRITICAL, one Important permission fixes! |
+-----------------------------------------------+
CRITICAL: As described below in the "Improper serial port shutdown with
the D710" section, it's key that Svxlink program be able
to properly initialize the ALSA subsystem as a non-root user.
To allow for this in Centos6, edit the /etc/group file as the
root account and alter the "audio" group to look like:
audio:x:63:svxlink
IMPORTANT: It's important that your change the
/etc/svxlink/svxlink.d/ModuleEchoLink.conf file's permissions
to 660 so that people can't see your Echolink password:
chmod 660 /etc/svxlink/svxlink.d/ModuleEchoLink.conf
chown -R svxlink.daemon /etc/svxlink/
chown svxlink.daemon /var/spool/svxlink/qso_recorder
NOTE: This should be considered a BUG in the svxlink.spec file
as this file contains user's Echolink password
- IMPORTANT: It's beyond the scope of this document to cover the
Internet networking aspects of getting Echolink traffic
into your computer. It might be worth mentioning
that Echolink 2.x and newer no longer require specific
port forwarding but if you try to work remote stations
that are running 1.x, you will STILL NEED to enable the
following port forwards:
In from the Internet:
5198/udp
5199/udp
5200/tcp
Getting notifications when someone connects or makes a connection out of your
Echolink node:
--------------
By default, Svxlink does not have the ability to play any notification
sounds when someone connects to your Echolink node. This is a bummer as
I was missing potential QSOs. Svxlink is very extensible and I was
able to modify it that when:
When someone connects INTO or OUT OF my Echolink node, Svxlink
will:
- Play a sound file to the computer's local speakers
- Send a SMS TXT message to my Verizon cell phone
To support all this, do the following:
- As the root user, make a copy of the key Echolink TCL file:
mkdir /usr/share/svxlink/events.d/local
cp /usr/share/svxlink/events.d/EchoLink.tcl /usr/share/svxlink/events.d/local
- Edit the Echolink.tcl file. In this example, I'll add a notification
to the "2#" Node Status command:
- Below the line "variable num_connected_stations 0;", Add the following
lines but substitute in the sound file and cellphone number you want:
--
#
# These variable are for setting the external notification
#
# Assumes you have Mutt installed
#
variable my_cell_number 4081111234;
variable external_notif_sound /usr/share/sounds/kapman/life.ogg;
--
- Now it's time to instrument the "2#" local ID feature section.
Find the comment line that says:
proc play_node_id {my_node_id} {
Just under it, add the lines:
variable external_notif_sound;
variable my_cell_number;
Finally, find he following lines:
playMsg "unknown";
}
and append below them, the following lines:
exec /usr/bin/play -q $external_notif_sound &
exec echo "Svxlink: local ID status requested" | /usr/bin/mutt $my_cell_number@vtext.com &
That's it. Now go ahead and stop and then restart Svxlink. From your second
radio (HT, etc), load up the Svxlink Echolink module with a "2#" and then
issue a local node ID command with "2#". At this point, you should IMMEADIATLY
hear the notification sound on your local computer and fairly quickly get an
SMS message!
43.c - Interfacing Svxlink with a Kenwood D710
Getting a radio setup with Svxlink:
-----------------------------------
- Since I'm using a D710, I needed to do the following on the radio but
if you're using a different radio, find and enable the similar settings:
D710 Menus
----------
IMPORTANT:
- Set the Transmit Timeout (TOT) to say 5min - Menu 109
- If there is a system failure that leaves your radio keyed up
for long periods of time (read below on the criticial D710
serial port issue, you don't want to:
A) burn out your radio's final TX amp!
B) break the FCC Part97 rules
You can set this to 3, 5, or 10minutes. I recommend 5.
NOTE: I confirmed that the D710 does indeed stop transmitting
after say 5 minutes but it does NOT indicate that the
TOT timer is inhibiting TX! Bummer. You have to
first stop whatever program from asserting the RTS serial
line and then the radio will start transmitting again.
- Turn off Automatic Power Off (APO) - Menu 516
- If the radio is idle for a long time, you don't want it to turn
itself off
- Set the External DATA band (external audio) to Band-B - Menu 517
- Set so the packet/APRS TNC is on the left narrow receive VFO,
voice on the wider receive right VFO.
- Set the detection of modulation to "SQL" from the default of
"BUSY or TX" - Menu 520 as recommended by the manual
- Set the External DATA band to 1200 - menu 518
- The DATA jack has seperate pins for audio with the pre-emphasis
enabled on the 1200baud line and no emphasis on the 9600 baud
line. The Kenwood D710 "Echolink cables" only uses the
1200baud lines. Svxlink DOES have audio processing abilities to
re-create the pre-emphasis / de-emphasis effect if you want to
use the 9600baud line on other radios
RX Frequency and Tone
---------------------
* As mentioned before, it's key to use a free frequency and a unique
CTCSS/PL tone or DCS code to keep your system unique:
- Set VFO-B to the desired frequency - I'm using 146.595
IMPORTANT: Please read below on using the QSO_RECORDER feature
to make sure you're using a generally free frequency
- Cycle the TONE button to display CT (Tone Squelch)
- Cycle the T.SEL button to use your desired tone. I'm using 136.5
- Set the power level to the lowest setting available if you
plan on using Echolink locally (say in your home, etc)
- RECOMMENDED: you should save all this into a unique memory to be
able recall all these settings quickly and accurately.
NOTE on D710 Rig Control in Echolink mode
-----------------------------------------
As previously mentioned, I have the D710 suporting Hamlib rig control
with the d710-qsy.sh script posted at:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/d710-qsy.sh
Unfortunately, this script will not function when the D710 is in Echolink
mode. LAME! Even out of Echolink mode, if the svxlink program is
running, it's takes over use of the "PC" serial port thus Hamlib cannot
gain access to the serial port. Bummer. I will be researching if the use
of the D710 *not* in Echolink mode is good enough but I'm pretty sure you
loose the COS line which is rather helpful.
Adjust internals of the radio for proper operation:
---------------------------------------------------
D710 specific
-------------
- The D710 is a very powerful dual band radio and one of it's unique
features is a specific Echolink mode changes some of it's settings.
To enable Echolink mode, you need to turn off the radio, hold down
the PF2 button (the last button on the right, closest to the VFO-A
knob)
/-------------------------------------------------------\
| +--------------------------------------------+ |
| | | |
| b.1 | D i s p l a y | pwr |
| b.2 | | b.12|
| b.3 | | b.11|
| +--------------------------------------------+ |
| /--\ btn btn btn btn btn PF1 PF2 /-\ /-\ |
| /VFO \ 4 5 6 7 8 ^ \A/ \B/ |
\ \ / | /
\---------------------------------------|--------------/
|
PF2
and then turn on the radio back on. You can confirm if the D710
is in EL mode if there is a little icon in betweem the PM and TNC
display items on the far right side of the display. Once in EL mode
*and* when a remote station is heard, the audio will be send to
the computer but only if the matching CTCSS/DCS codes match will
the COS line also open up and the Echolink icon will blink.
- What else is Echolink mode? Per the "TM-D710-CDROM-English.pdf"
file (Echolink section page 23) and from what I have determined,
EL mode only does two things:
a. It uses alternative audio levels for the audio "DATA"
jack on the rear of the radio unit as programed in via
Kenwood MCP-2A Windows program compared to the
default "external TNC" levels
b. It changes the behavior of the RTS/CTS lines on
the PC port on the back of the radio unit from
standard RS232 signals to:
CTS line : TTL level : changes upon SQL and CTCSS open/close
RTS line : TTL level : changes used to key up the radio
+------------------------------------------------------------------------------+
| ** Critical Issue: Improper serial port shutdown with the D710 ** |
| |
| I consider it a major flaw that Kenwood connected the PTT |
| line to the RTS line. Why? |
| |
| Almost all programs that use serial port (including Svxlink) will |
| first initialize the serial port and assert the RTS line as part |
| of standard hardware flow control. It's the right thing to do per the |
| standard. Unfortunately since Kenwood chose to use this specific |
| serial line for PTT when in Echolink mode, that means the D710 will key |
| up the PTT and start transmitting! What's worse is that when these |
| serial programs exit, almost all will leave the serial port |
| initiaized (RTS will still be high ths PTT is still asserted on the D710 |
| and will continue transmitting **FOREVER**. |
| |
| This EXACT issue happens with Svxlink if Svxlink doesn't have the right |
| ALSA audio subsystem /dev/snd/* permissions! Svxlink will initialize |
| the serial port, fail to initialize the ALSA system because in Centos6, |
| the "audio" group in /etc/group doesn't have the "svxlink" user defined |
| as being allowed and then svxlink will abort leaving the serial port |
| initialzied. That means the D710 is stuck transmitting! This is |
| horrible and *can* destroy your radio's transmitter as it wasn't |
| designed for 24/7 full duty FM transmission! |
| |
| NOTE: The Kenwood D710 does have a Transmittion Timeout option that |
| can save your radio in this specific situation. See above for |
| setting the D710's "TOT" feature! |
| |
| Please see the modemtest perl script in the "Serial port troubleshooting |
| and tools" section on how to uninitialize the RTS line upon a serial |
| port not being being completely shutdown properly. |
+------------------------------------------------------------------------------+
- GRIPE: I don't understand why Kenwood put the SQL status signal
line on the "PC" port when they clearly had available pins
already on the "DATA" jack! Because of these missing lines,
you cannot use something like Echolink in non-EL D710 mode
with the stock Kenwood PG-5H cables. You might be able to
make your own Echolink cables to gain access to this cable
though but it's unclear what the behavior of CTCSS squelch
line would be. Read below on the "Echolink RX monitor"
feature below for more details.
!!!!!
- NOTE2: The manual says that that the internal D710 cannot use
!!!!! the internal AX.25 TNC when in Echolink mode per the
"TM-D710-CDROM-English.pdf" file (Echolink section page 23).
Yet the "E_TM-D710AE.book.pdf" manual, page 39 says it's
should work fine. I personally am using both at the same
time and don't have any problem when running the D710's
internal TNC in KISS mode with use with standard packet
operation (not APRS mode). If it doesn't work for you,
maybe your running an old version of the D710 firmware.
Internal D710 specific settings via Windows software
----------------------------------------------------
These settings are specific to the Kenwood D710. If you *aren't using*
a D710, you can skip this section.
- There are *three* settings on the D710 for Echolink mode that
can ONLY be configured via the free Kenwood MCP-2A Windows program:
- Echolink RX monitor
- Echolink RX audio level
- Echolink TX audio level
These settings CANNOT be set via any menu item on the radio
itself nor or a Linux program that I'm aware of. It's also
worth noting that these Echolink settings only activated when
you restart the radio into Echolink mode.
NOTE: I don't know if this MCP-2A software can operate from
WINE but if you know if it does / doesn't work, I'd
love to get an email about it from you!
See the D710 Echolink manul for more details on how to install
and operate this software but the only item you absolutely need
to change is:
Echolink RX monitor
-------------------
What this feature does is that enables the monitoring any
received signal that breaks squelch with the D710's volume.
What's unique is that ONLY if the signal also includes the
configured CTCSS/DCS tones while the radio is in CT (tone
squelch) mode, will that audio be sent out of the "DATA"
jack on the back of the radio unit towards the connected
computer for sending into the Echolink network
************************************************
Mandatory:
- Before trying to use the MCP-2A software, you
MUST Take the D710 out of Echolink mode via
a power cycle and the PF2 key
************************************************
- If the D710 is in packet KISS mode, shut down your
packet programs and daemons as well
- Connect the D710's COM port to an available serial
port on your Windows computer (for USB users, it's
highly recoomended to use an FTDI-based serial adapter
as many problems are seen with Prolific-based units)
- Configure the MCP-2A program to use:
- The proper Windows-detected serial port under Setup
--> COM port setting (I have to set this to COM16)
- I personally must use the AUTO setting for the
COM port speed. Manually setting it to say the 9600
baud speed does NOT work for me.
- Have the MCP-2A connect to the D710 by clicking on
Program --> "Read data from transceiver" to download
it's settings from the radio to the computer. Once read,
the D710 will do a soft reset but all your various settings
are left intact.
- Now set the radio to properly send the heard audio from
the RF side to the svxlink connected computer when CTCSS/DCS
is present by:
Edit --> Menu --> Transmit/Receive -->
Echolink RX monitor :: Set it to "Busy Only" from
the default of "CTCSS/DCS"
* You also might need to change the the D710's Echolink RX/TX
audio levels via the MCP-2A program but you won't know if
you do until start doing final audio level testing.
- Edit --> Data Terminal --> PR1 Output level -->
For Echolink Sysop mode :: Set it from the stock setting
of 3 to either to 6 to 7 (this level really depends on your
echolink-attached sound card and you settings might vary)
- Edit --> Data Terminal --> PKD Input Sensitivity -->
For Echolink Sysop mode :: Set it from the stock setting
of 2 to 5 (this level really depends on your echolink-attached
sound card and you settings might vary)
- Click on ok
- Have the MCP-2A write these changes to the D710 by clicking on
Program --> "Write data to transceiver" to upload the
settings from the computer to the radio. Once complete, the
radio will do a soft reset to activate the changes.
- Since you're already here, you might as well goto File -->
"Save As" and save a copy of all your radio's settings to
a backup file on the computer just in case!
- Disconnect the serial connection from the radio and re-connect
it to the Linux machine
- Turn off the radio and put it back into Echolink mode via the
PF2 button
43.d - Setting the Svxlink audio levels
Ok, go ahead and start up the svxlink program ONLY AS A TEST
in non-background mode:
sudo svxlink /usr/bin/svxlink
NOTE: It's HIGHLY recommended that once full configured, you start
svxlink via the start-svxlink.sh script mentioned in a later
section if you use a Kenwood D710!
- At that point, you should see something like the following:
--
SvxLink v0.13.99.15 (Oct 2 2012) Copyright (C) 2011 Tobias Blomberg / SM0SVX
SvxLink comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it in accordance with the terms and conditions in the
GNU GPL (General Public License) version 2 or later.
Using configuration file: /etc/svxlink/svxlink.conf
Starting logic: SimplexLogic
Loading module "ModuleHelp" into logic "SimplexLogic"
Module Help v0.7.0.99.0 starting...
Loading module "ModuleParrot" into logic "SimplexLogic"
Module Parrot v0.7.0.99.0 starting...
Loading module "ModuleEchoLink" into logic "SimplexLogic"
Module EchoLink v0.10.99.1 starting...
Loading module "ModuleTclVoiceMail" into logic "SimplexLogic"
Module Tcl v0.3.0.99.0 starting...
Event handler script successfully loaded.
Connected to APRS server 69.36.224.181 on port 14580
EchoLink directory status changed to ON
--- EchoLink directory server message: ---
EchoLink Server v2.5.9996
ECHO3: Scottsdale, AZ USA
--
NOTE: Notice that svxlink only loaded the ModuleHelp, Parrot, EchoLink,
and VoiceMail modules. These modules can be disabled and many other
modules enabled per "MODULES" line the the "[SimplexLogic]" section
of the svxlink.conf configuration file.
NOTE2: If you didn't see any messages about APRS, you have an invalid GPS
configuration (check your coordinates being in DMS vs. Decimal)
Unfortunately, Svxlink doesn't throw an error about this.
NOTE3: You might see errors from svxlink about NOT being able to log into
the Echolink servers. For example:
--
EchoLink directory status changed to ON
--- EchoLink directory server message: ---
NOT LOGGED IN
Because of a system problem,
you are not currently logged
in.
Please wait several minutes
for the server to reset.
--
This is either a problem with Svxlink or the Echolink system.
Svxlink will automatically retry to log in a few minutes later but
alternatively, you can simply shutdown the Svxlink program with
control-C and then restart it. It will almost always log you into
the Echolink servers just fine the second time.
Settings the radio link audio levels
------------------------------------
- Svxlink has some configuration settings to help speed this along:
http://sourceforge.net/apps/trac/svxlink/wiki/InstallationInstructions#Postinstallstuff
But the quick and dirty of it is:
Setting the Soundcard INPUT or Microphone level
-----------------------------------------------
- If you're already using other soundcard levels for HF (Fldigi), Packet radio
(soundmodem), etc., you should restore those levels FIRST, then tune these
Svxlink levels, and then save all the new levels together.
To start off, restore all your old levels you might have had with:
/sbin/alsactl restore
- Next, open up the Linux souncard mixer controls. On my system, I use Kmix
from KDE
- Find the tab for the specific sound card connected to your radio
- Back in the window running svxlink, change the radio to NOT
use PL/DCS tone squelch and then open up squelch level on the
radio. You should see something like the following (assuming you
configured Svxlink for "VOX" and not "SERIAL" (aka COS mode):
--
Rx1: The squelch is OPEN (0.161287)
Rx1: The squelch is CLOSED (5.85425)
--
NOTE: I had originally tried doing this step with my D7109 in
NON-Echolink mode and saw the following:
--
Rx1: The squelch is OPEN (2.93365)
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: The squelch is CLOSED (5.85425)
Rx1: The squelch is OPEN (0.774545)
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: Distorsion detected! Please lower the input volume!
Rx1: The squelch is CLOSED (5.89493)
--
These "Distorsion detected" warning errors are due to the fact
that my D710 radio was using the higher audio levels
associated with the non-Echolink mode (external packet mode).
When the D710 was put into in Echolink mode, the audio levels
were OVERLY lowered which required me to change the hidden
Echolink levels via the MCP-2A Windows program.
- While those messages are still scrolling across the window, go to
your preferred soundcard mixer application. I've described some
of the options in the Soundmodem section. On my setup, I did used
KDE's "kmixer" application for the following:
- Un-check the MUTE button for Auto Gain Control
- On the Microphone setting
- Make sure the Capture checkbox is checked
- There are two sliders on my setup
- The RIGHT SLIDER is the "Mic (capture)" slider that works on this
cheapie USB soundcard fob. This slider has 17 level lines on it
for some strange reason! The left slider has a mouse over label of
"Mic" and doesn't seem to do anything.
- With the D710 in Echolink mode with the stock Echolink
levels, I needed to slide that up to 100% level but I never
could increase the levels to show the "distortion detected"
as recommended by the svxlink documentation. Once I
altered the Echolink levels as described eariler in
a previous section, I COULD get the "Distorsion" warnings
and then tune the system as recommended. For me, I needed to
move the Kmix slider level setting to 5 of 17 (four keyboard
up-arrows to get to that level).
- The left "Mic" slider with much courser level markings didn't have
any bearing on the Echolink volume setting. This is probably due to
being a left channel of a stereo mic and that side isn't wired to
the D710.
Setting the Soundcard OUTPUT or "Speaker" level
-----------------------------------------------
- Have your second radio (HT) turned on, set to the correct Svxlink frequency
and is generally ready to receive
- Open up the Sound card mixer control, select the Echolink sound card,
and be prepared to change the "Speaker" level
- Go to the running Svxlink program running in the foreground (not in
daemon mode) and type in the key sequence: *# (that's asterisk and then pound)
- Svxlink should mention it's enabling TX and then start transmitting on
frequency.
NOTE: If you start seeing various errors, see the next section for
some examples and resolutions.
Listen to the quality of the audio on the second radio (HT) and
adjust the "Speaker" mixer level to have full volume without any distortion.
I recommend you move the volume slider all the way down and slowly work it
back up until a) the volume stops getting louder and b) the audio doesn't
start to distort.
NOTE: When I initially tried out Echolink mode on the D710,
a volume level of 100% (11/11) was pretty good. Once I
changed the internal D710 Echolink Receive sensitivity
level to a 5, I needed to adjust the volume to about
5% (2/11). That is 16 keyboard up-arrow presses to get
there.
- Once you're happy with the levels, save them with:
/sbin/alsactl store
With that setting, the start-svxlink.sh script
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/start-svxlink.sh
or packetrig.sh script
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/packetrig.sh
which will restore the right audio when started (along with other things).
Testing remote connectivity from an Internet-connected Echolink system
----------------------------------------------------------------------
- From a properly configured remote Echolink computer or Smartphone, look up your
callsign with the -L suffix and see if it can log in. In this example, I'm
connecting as KI6ZHD (no suffix) from my Echolink app on my Android phone
into KI6ZHD-L and then I disconnect:
--
Spurious audio packet received from 68.178.200.136
Incoming EchoLink connection from KI6ZHD (David) at 68.178.200.136
Spurious audio packet received from 68.178.200.136
Incoming EchoLink connection from KI6ZHD (David) at 68.178.200.136
--- EchoLink directory server message: ---
EchoLink Server v2.5.9997
ECHOEC2-3: Herndon, VA USA
Incoming EchoLink connection from KI6ZHD (David) at 68.178.200.136
Activating module EchoLink...
KI6ZHD: Accepting connection. EchoLink ID is 485085...
KI6ZHD: EchoLink QSO state changed to CONNECTED
--- EchoLink info message received from KI6ZHD ---
Station KI6ZHD
David - Santa Clara, CA
Santa Clara, CA
KI6ZHD is running EchoLink for Android on a motorola DROID2, with Android version 2.3.4.
Tx1: Turning the transmitter ON
Tx1: Turning the transmitter OFF
KI6ZHD: EchoLink QSO state changed to BYE_RECEIVED
KI6ZHD: EchoLink QSO state changed to DISCONNECTED
--
Notice above that the Svxlink program gets the remote client's detail from the
Echolink server and then it keys up the radio and then plays back audio giving
the remote station status details (see below what it would send).
NOTE: If your radio does't start transmitting, make sure you have configured
the svxlink.conf file correctly and/or the PTT circuit is wired correctly.
For D710 users, you must put the radio into EchoLink mode for PTT on the
PC port to function using the Kenwood Echolink cables
NOTE2: When you first installed the svxlink RPM package and did NOT
create the required directory and symbolic link for the audio
files, you'll see the following error messages:
--
*** WARNING: Could not find audio clip "activating" in context "Default"
*** WARNING: Could not find audio clip "name" in context "EchoLink"
*** WARNING: Could not find audio clip "connected" in context "EchoLink"
*** WARNING: Could not find audio clip "phonetic_k" in context "Default"
*** WARNING: Could not find audio clip "phonetic_i" in context "Default"
*** WARNING: Could not find audio clip "phonetic_6" in context "Default"
*** WARNING: Could not find audio clip "phonetic_z" in context "Default"
*** WARNING: Could not find audio clip "phonetic_h" in context "Default"
*** WARNING: Could not find audio clip "phonetic_d" in context "Default"
*** WARNING: Could not find audio clip "greeting" in context "EchoLink"
--
Please re-trace the Svxlink installation section on how to create those
mandatory links.
- Echolink testing via a local radio link (a second HT radio)
------------------------------------------------------------
- Setup another radio (say an HT with DTMF buttons on it) to use the same
frequency, and tone as your svxlink radio setup)
- Listen to the frequeny for some time and ensure that it's not in use.
- Key up the HT, verbally call out your callsign to ID and say something
like "KI6ZHD, controlling".
- Check the svxlink STDOUT messages and confirm the svxlink program should
output lines like:
--
Rx1: The squelch is OPEN (0.774545)
Rx1: The squelch is CLOSED (5.85425)
--
- Good! Ok, lets do some more TX tests:
- Key up the HT radio, verbally call out your callsign to ID and state
your intentions. For me, I would do a "This is KI6ZHD, controlling
an echolink LINK node". Then then press:
"*" and then "#" (or "*#") --> The svxlink system should make an
annoucement about the system. The audio should be
very clear, understandable, and not distorted
in any way. If you don't have all of those
data points, re-check the audio levels on
the sound card and possible the radio too.
- Next, try some longer audio:
"0#" --> HELP: To get more audio out of the system for better tuning,
try the svxlink help. The system should play back the help
audio for the specific svxlink module enabled (modulehelp,
parrot, or echolink).
- Now lets do some combo RX/TX tests. Key up the second radio, and issue
the following DTMF command and then release the PTT:
"1#" --> PARROT mode: The svxlink system will hear and then playback
the heard audio from you. This is very helpful for tuning the
audio levels. Key up the radio and send a "#" to turn off
parrot mode.
- At this point, key up the second radio again and talk into it's microphone
with a normal voice level and talk a little bit. Once done, release
the PTT. At that point, the svxlink program will playback the recorded
audio. While your listening to this, you might want to make additional
soundcard mixer adjustments to get the audio just right.
- Once done, key up the second radio and issue the # command to end the
Parrot mode.
Testing with the Echolink Test Server:
--------------------------------------
- Ok, last step! Let's check your end-to-end VoIP connectivity to the Echolink
Test server. Please note that the Svxlink DTMF commands are a little different
than the standard Echolink DTMF commands. That's ok and it's also a LOT more
powerful!
1. Key up the second HT radio, verbally call out your callsign to ID and
state your intentions. For me, I would do a "This is KI6ZHD,
controlling an echolink LINK node"
2. Activate the Echolink module by keying up the radio and while keyed,
enter in the following DTMF tones:
2#
and then let go of the PTT. The Svxlink program should tell you that
the Echolink module has been loaded.
3. To confirm your configured Echolink node number, again issue the DTMF
tones:
2#
and the svxlink program should announce your Echolink node number.
4. To confirm if any remote stations just happen to be already connected
to your station, key up the radio and issue the DTMF tones:
1#
and the svxlink program should announce it.
5. So let's connect the station to the official Echolink TEST server and
see how we sound. Key up the radio and enter the following DTMF tones:
9999#
and then let go of the PTT. The Svxlink program should link up to
the Echolink server and then the remote Echolink system should announce
you that you're connected in a very clear, crisp, and non-distorted
voice.
6. At this point, key up the radio and speak into the microphone just
like you did before for the local test. Once done, unkey the radio
and the Echolink system should play back what you said. Confirm that
the audio sounds good.
- The audio levels should be good as we already tested it locally.
If the levels are wrong, re-test the local levels as described
eariler in this doc.
- If the audio is garbled, it's most likely an Internet upload/
download issue. We can't cover that in this document but feel
free to email me if you need some help
7. Once complete with your Echolink "ECHO" testing, key up the second
radio and while keyed, enter in the DTMF key:
#
This will log you out from the remote Echolink TEST server. If
you're done with Echolink, go ahead and key up the second radio
and issue the DTMF command:
#
At this point, the Echolink module will be unloaded. If you don't
use the system for a while, the Echolink module will automatically
get unloaded and the svxlink system will make an annoucement as of
such.
Saving your new Soundcard audio levels
--------------------------------------
As mentioned in great detail in the "Soundmodem - Setting the right audio levels"
section above for packet radio stuff, you can use the command:
/sbin/alsactl save
to save all of these soundcard levels for both your svxlink soundcard levels but
also for all your other soundcards as well.
Fine tuning the Svxlink Configuration:
--------------------------------------
- If you are using VOX in your setup, you're probably going to need to do some
fine tuning to get it working just right. The parameters in the
/etc/svxlink/svxlink.conf file will really depend on your specific radio,
your soundcard, etc. but here are some of the values I played with:
[Rx1]
#default is 0
sql_start_delay=50
#default is 2000
vox_hangtime=2500
#Minimum input voice volume factor to trip VOX - default is 20
vox_Filter depth = 15
#default is 1000
vox threshhold = 800
43.e - Svxlink Startup: Safely Start/Stop Svxlink for local control and logging
As mentioned in the "Critical Issue: Improper serial port shutdown with the D710"
note above (go read it if you haven't already), the design of the Kenwood D710
in Echolink lends itself to leaving the radio always keyed!!
I've submitted a bug report about this issue to the Svxlink folk but until then,
please consider using the "start-svxlink.sh" and recovery script located at:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/start-svxlink.sh
http://www.trinityos.com/HAM/CentosDigitalModes/usr/local/sbin/modemtest-reset-serialport.pl
This script will:
- Verify that the ALSA audio system has the right permissions for the svxlink
user to initialize it
- Start svxlink in a named "screen" session so you can always view the STDOUT
logging and view remotely
- If Svxlink exits with an error code, it will run the "modemtest-reset-serialport.pl"
program to deassert the RTS serial line so the D710 radio won't be constantly
be transmitting! Please note that that this is a slightly modified version of
the script as provided from the "perl-Device-SerialPort" package to just
NOT send Hayes "AT" commands to the serial port.
43.f - Svxlink Cheatsheet, Using QSO Monitor to pick a free link frequency, bugs, and future features
It might be worth showing a quick cheat-sheet of other Svxlink commands that are available:
------------------
Enabling various modules
------------------------
0# - Help
1# - Parrot
2# - Echolink
3# - Svxlink voicemail
QSO Recorder (if enabled in the svxlink.conf file
-------------------------------------------------
81# - Enables the svxlink QSO recorder. When the system detects that SQL
is open, it will record a WAV file to the /var/spool/svxlink/qso_recorder/
directory. Read below for more details on this feature and how to
play the files.
80# - Disables the svxlink QSO recorder
User Defined Macros
-------------------
D1# - Executes the MACRO section in the svxlink.conf file.
Automatically loads the Echolink module and connects to the
Echolink Test server
D2# - Per the example above, load the echolink module and connect
to KI6ZHD-L's node if logged in
Picking a Simplex frequency to operate Svxlink on QSO_RECORDER:
---------------------------------------------------------------
As previously mentioned, a lot of HAMs in your area might camp out on a
particular simplex frequency and "claim it as their own". Yes, we all
know that they don't own the frequency but if they have been using that
frequency for their own nets, etc for a long time, it's probably NOT
good to put your Svxlink system on that frequency.
To avoid any conflicts, the svxlink QSO_RECORDER feature can really
help you here. What you should do is the following:
1. Disable tone squelch on your radio ("CT" on the D710) so that
all signals will be recorded
2. Either via a second radio or on the svxlink STDIN window, issue the
DTMF command:
81#
The svxlink program will annouce that the QSO_RECORDER feature
has been enabled.
NOTE:
Please note that the QSO recorder can ONLY be enabled or
disabled from the top level. It cannot be enabled or
disabled if say the Echolink module is loaded.
3. The first time the squelch is broken, svxlink will create
a timestamped file in the /var/spool/svxlink/qso_recorder
directory such as:
tmp_121010090933.wav
Each additional time the squelch is broken, the audio will
be recorded and appended to the file. All svxlink announcements
will NOT be recorded.
4. Once you're done with the recordings, issue the DTMF command:
80#
Which will disable the QSO recording. At that point the
temporary file will be renamed to reflect a final name
with start and stop timestamps. For my example:
from:
tmp_121010090933.wav
renamed to:
qsorec_121010090933_121010093615.wav
5. Don't forget to re-enable Tone Squelch (CT) on your radio to avoid
false squelch openings for normal operation
6. To listen to these recordings, I had to use a a similar elaborite command
when used to test the Svxlink sound card. To play my specific QSO
file back to the built-in sound-card, I used the following command:
aplay -D"plug:'hw:0,0'" -c 1 -f S16_LE /var/spool/svxlink/qso_recorder/qsorec_121010090933_121010093615.wav
NOTE: WAV files get big FAST so watch them. If you want to keep
recordings around for a long time, consider compressing them
with say an MP3 encoder such as "lame". Feel free to email
me if you need help with Lame.
Notes about Svxlink that might interest you, possible bugs found, etc.
----------------------------------------------------------------------
Changing the automated voice prompts
------------------------------------
- If you ever want to edit the Svxlink audio prompts (I didn't like
the length of the Echolink connected prompt), I used Audacity for
Linux to change the file as I deemed fit (email me if you want
a copy). To save the file, it's a little complicated since
Svxlink only uses 8khz files. Once edited, select
- File --> Export
- Name the file (say /tmp/greeting16.wav )
- Change the file format to "Other uncompressed files"
- Click on Options
- Header: WAV (microsoft)
- Encoding: Signed 16bit PCM
- Open a shell and goto /tmp
- Convert the 16bit WAV file to an 8bit WAV file
sox -c 1 -b 16 -e signed-integer greeting16.wav -r 8000 greeting.wav
- Backup the old file and put in the new one:
mv /usr/share/svxlink/sounds/en_US/EchoLink/greeting.wav \
/usr/share/svxlink/sounds/en_US/EchoLink/greeting.wav.orig
mv /tmp/greeting.wav \
/usr/share/svxlink/sounds/en_US/EchoLink/greeting.wav
To Add to the doc:
------------------
- Svxlinkwrapper - A python wrapper script that improves on svxlink
system logging, etc.
http://guysoft.wordpress.com/2012/05/17/svxlinkwrapper/
Linux Power management
----------------------
- One additional thing you will need to consider is if you have power management
enabled on your computer. If the computer is set to suspend due to inactivity,
this will interrupt Echolink operation. Consider looking at the power
management management function in the packetrig.sh script for ideas.
Possible Svxlink Bugs:
----------------------
- If the ALSA sound card ID as configured in svxlink.conf is wrong and "serial" RX
detection is enabled, when you start up the svxlink program, it will key up the
D710's radio transmitter, exit with an error. What's worse is that it leaves
the radio keyed up with no way to stop it from transmitting other than turning
it off or running a special program!
--
Starting logic: SimplexLogic
ALSA lib pcm_hw.c:1401:(_snd_pcm_hw_open) Invalid value for card
ALSA lib pcm_hw.c:1401:(_snd_pcm_hw_open) Invalid value for card
*** ERROR: Open capture audio device failed: No such file or directory
*** Error: Could not open audio device for receiver "Rx1"
*** ERROR: Could not initialize RX "Rx1"
*** ERROR: Could not initialize Logic object "SimplexLogic". Skipping...
*** ERROR: No logics available. Bailing out...
--
Please see the note on the start-svxlink.sh script to work around
this issue.
- The Fedora svxlink.spec file doesn't set secure file permissions on the
configuration file:
chmod 660 /etc/svxlink/svxlink.d/ModuleEchoLink.conf
chown -R svxlink.daemon /etc/svxlink/
chown svxlink.daemon /var/spool/svxlink/qso_recorder
- The Fedora /etc/rc.d/init.d/svxlink init script seems to be broken and svxlink
won't start -- [fix me]
- If there is an error in the APRS GPS coordinates (user configured Decimal vs.
DMS coordinates), it won't throw an error or warning though it should
Future Feature requests for Svxlink:
------------------------------------
- Support security prefix DTMF tones for all svxlink commands
- Ability to remap svxlink DTMF buttons to letters to emulate the official
Echolink key layout (Kenwood D710 mic)
- Be able to play svxlink announcements out an additional soundcard to
monitor what's being said instead of having to need a second radio.
Maybe if PulseAudio was supported, we could use it's "monitor" feature.
It sounds like this might already be possible by modifying some
specific svxlink shell scripts
- Have Qtel be able to directly interact with Svxlink to allow for browsing
of other stations, connect the svxlink system to the chosen remote stations,
etc
- Have QSO monitor annotate in the wav file what's going on, squelch
open, DTMF x, etc.
- Support a simple way to redefine all DTMF codes to say be identical with
the official Echolink program (73s to disconnect vs. using #, etc.)
- possibly solved with svxlink_wrapper? - Time stamp svxlink STDOUT lines when events
occur
- Be able to change the APRS symbol via the config file
- Support HUPing the svxlink process to reload the config w/o disconnecting
from the Echolink server, etc.
- The 8# command should not give an error, it should get better help about
using 80# and 81# instead
- Have the system be able to annouce the use of DCS codes and not just
CTCSS PL tones
- Have a "TX inhibit" command on the STDOUT console so that the system will
never transmit until turned off. Good to have when say I do a 80# and
then 81# to create a new qso monitor wav file, etc.
- 10/26/12 - Enabling QSO_RECORDER is not logged in STDOUT
- 10/26/12 - WHen connecting from an Android Echolink clin
- 10/26/12 - If svxlink is run under the svxlink user but that user doesn't
have a home directory, you will see errors like the following.
The solution is to create a proper home directory for the svxlink
user. My spec file has been updated to reflect that
*** ERROR: Unable to handle event: EchoLink::remote_greeting KI6ZHD (Could not send the message.
/sent: Permission denied (errno = 13))
No protocol specified
XOpenDisplay() failed
Home directory / not ours.
W: core-util.c: Failed to open configuration file '//.pulse//daemon.conf': Permission denied
W: daemon-conf.c: Failed to open configuration file: Permission denied
ALSA lib pulse.c:229:(pulse_connect) PulseAudio: Unable to connect: Connection refused
/usr/bin/play formats: can't open output file `default': cannot open audio device
43.g - Overview of Using Echolink and IRLP
Introduction to Echolink and IRLP:
----------------------------------
Echolink is a Amateur Radio / VoIP software solution originally written for Windows
to support multiple types of connections:
a. A Echolink enabled repeater to a remote Echolink enabled repeater
--
b. A computer with a headset to a remote Echolink enabled repeater
--
c. A computer with a headset to a remote computer or smartphone
(not really HAM radio if you ask me!)
--
d. A smartphone to a remote Echolink enabled repeater
--
e. A smartphone to a remote computer or smartphone
(not really HAM radio if you ask me!)
The Echolink group later wrote client-only apps for the Apple iPhone and Google
Android platforms but those versions are only clients and don't have all of the
validation and server side features. There are other non-official Echolink
programs out there like:
- Svxlink/Qtel for Linux as described in the previous sections
- EchoMac for the Apple OSX platform
IRLP
----
IRLP is somewhat similar to Echolink in the sense that it uses VoIP but instead of
connecting clients to a repeater, IRLP is intended to ONLY link repeaters to
other repeaters or IRLP reflectors. Unlike Echolink that doesn't require any unique
hardware, IRLP *does* require a proprietary board that gets connected to your
computer:
- The IRLP computer can ONLY run Linux today
- This IRLP hardware can only be connected to the system via a parallel port.
There isn't any USB hardware version of this board as of 2012.
43.h - Echolink Validation
Echolink account Validation
---------------------------
Since you're using the Internet, the Echolink people need to confirm that you're
an actual HAM since there is the real potential that the remote side of the
connection will be transmitting on a RF radio! The Echolink admins do this
validation in one of three ways ( http://www.echolink.org/faq_validation.htm ):
1. Send a copy of your FCC license to them (scan it in and upload or fax it).
--
Update: I personally had an issue with this as I considered it to be
a personal security breach. I later learned that ANYONE can
get an exact duplicate of your FCC license document in a PDF
from the FCC website? Since the FCC is essentially gives away
this document, it doesn't seem like it's very risky for you to
give it away to the Echolink folks.
2. Use your configured ARRL LOTW (always a good idea to signup to
exchange logs) to confirm you're a HAM. LOTW does the validation
things differently.. see the LOTW section in this document for full
details.
NOTE: As mentioned above, I didn't previously like the idea of sending
a copy of my license to the Echolink people so I went the LOTW
approach. Setting up a LOTW account does take a little more time
as the LOTW people have their own procedures rules but once enabled
there, you can then official QSO logging of your HF contacts, use
the LOTW to guarantee yourself on other HAM systems, etc!
NOTE2: Remember, LOTW is open to all global HAMs in any country.. not
just United States base HAMs!
Echolink Registration for your new LINK:
- When people first register with Echolink, they will most likely register their
plain callsign. In my case, I registered KI6ZHD. This is good for calling out
from say your Windows or Android Echolink app but it essentially means this
login is *only* a non-RF based Echolink client. There isn't any RF connections
in use nor any other people other than KI6ZHD using it.
For the Svxlink section above, we plan on putting up a Echolink system in Sysop
mode, specifically a LINK setup on a simplex frequency. As such, you'll need to
register the "-L" or "link" suffix. With that, my svxlink system could then log
into the Echolink system in Sysop mode as say "KI6ZHD-L" and the -L suffix means
I have a real RF link connected to my system. Btw, if you were actually working
on adding Echolink service to a full blown repeater, you'd want to register the
-R suffix.
NOTE: In Echolink's eyes, the new -L suffix is a new callsign so even if you
have a non-L validated account, you'll need to sign up as if you were a
new user. Fortunately, you will NOT have to re-validate your Amateur Radio
license like you did originally. Because of that, this step is pretty
quick and simple. To do so,
1. MANDATORY: Install and run the Windows Echolink program, Tools
--> Setup --> My Station and select Mode: Sysop --
This can only be done via the official Windows program
2. If need be, click on "Change Callsign" and add the -L suffix to
your callsign
3. There other information previously configured such as your
password for your non-Sysop password, name, and location.
4. Once you click on ok, the Windows program side is done and
now you need to validate the new -L callsign. To do that,
go to:
http://www.echolink.org/validation
to finish the validation. In that web interface, you'll
be sent an email to then go to the next validation step.
5. Once you receive the validation email and click on the web
link, assuming you already had a validated Echolink account
with the *same* callsign, click on the "password" option to
use that previous account's password. If all goes well,
you should get a "Validated" update message on your web browser
within a few seconds!
Using Echolink and IRLP:
------------------------
1. Using just a radio to interact with a remote Echolink node:
Once your radio is configured to use the proper local repeater (or Svxlink)
frequency, offset, tone, etc., you just need to find out what remote
nodes you want to connect to and what are the various DTMF codes to control
the local Echolink/IRLP system:
To see what Echolink, IRLP, or EchoIRLP nodes are operating out there, look
them up:
Echolink enabled repeaters and links (links are people who are using
computers or smartphones):
--
http://www.echolink.org/links.jsp
IRLP enabled repeaters:
--
http://status.irlp.net/index.php?PSTART=7
The local EchoIRLP codes for other open repeaters are usually publically posted
on the Echolink/IRLP website. For example, see the bottom of this IRLP status
page:
http://status.irlp.net/?nodeid=3246
Alternatively, those codes might be posted on the repeater/ham club's website.
If not posted, the codes might be reserved for members only. Once you have
the controlling EchoIRLP codes, give it a try!
NOTE: Svxlink has slightly different DTMF tones as previously mentioned.
The following example illustrates systems using the stock Echolink
DTMF codes:
NOTE2: Though most Echolink enabled nodes and links usually uses the same
standardized DTMF codes, IRLP doesn't have as much standardization.
As such for IRLP, you need to look at the bottom of the IRLP status
webpage for a given IRLP node to see what the codes are (if they are
given). If nothing is shown, you need to look at the repeater's
website and see if it's there (very common for open repeaters). If
not, you need to contact the repeater's trustee to get the codes.
Some common Echolink codes include the following and you can find more
examples at http://www.echolink.org/Help/dtmf_functions.htm :
node-number - connects to the remote Echolink node number
C+callsign+# - connects to the remote Echolink station by callsign.
To enter a callsign from the DTMF keypad, you have to
press two digits for each letter and a number which
assumes your DTMF buttons on your radio conform to:
button 1 - Q,Z button 6 - M,N,O
button 2 - A,B,C button 7 - P,R,S
button 3 - D,E,F button 8 - T,U,V
button 4 - G,H,I button 9 - W,X,Y
button 5 - J,K,L
NOTE: Svxlink uses a different key to letter layout
- The first digit is the button on which the letter
appears (using 1 for Q and Z - see letter to button
layout above)
- the second digit is 1, 2, or 3, to indicate which
letter is being entered. To enter a digit, press
the digit followed by 0. When finished, end with
the pound key (#).
- For example to connect to my station by CALLSIGN,
you would enter:
C K I 6 Z H D #
-- + -- -- -- -- -- -- + --
23 52 43 60 12 42 31 #
# - Disconnects the most recently connected Internet-facing
Echolink station. If there are multiple stations
connected, they won't be affected
## - Disconnects ALL connected Internet-facing Echolink
stations
---
00 - Connect to any random node regardless of type
01 - Connect to any random -L LINK or -R REPEATER node type
02 - Connect to any random confereence
03 - Connect to any random single user (non-L or -R) node type
---
001 - Connect to a random FAVORITE-configured node regardless
of type. Favorites are selected either on official Windows
Echolink or Android/Ipod clients.
011 - Connect to a random FAVORITE-configred random -L LINK or -R
REPEATER node type
021 - Connect to a random FAVORITE-configured conference
031 - Connect to a random FAVORITE single user (non-L or -R) node type
---
08 - Announces the currently connected Internet-facing
Echolink station
09 - Reconnects to the last Echolink node that connected
to this station
* - Plays the Echolink informaiton message
07+callsign+# - Fetches the status of the remote Echolink station
by callsign
06+node-number - Fetches the status of the remote Echolink station
by Echolink node number
73 - Disconnect the local system from the remote EchoIRLP
node
Don't forget that once you're done with the QSO, unlink from the remote destination
with the "73" code.
2. Using Echolink computer software only:
--------------------------------------
Installing the free Echolink is simple (available on Windows, iPhone, Android).
Other non-official solutions are available as well like EchoMac for Apple
computers, Svxlink+Qtel for and Linux, etc. The onlt other things you need is
an Internet connection, a headset (for better TX audio), and valid Echolink
account.
3. Echolink SmartPhones:
A free Echolink application is available on the iPhone and Android platforms.
All you have to do is enter the respective phone's App Store and install it.
Once installed, you need to enter your validated callsign and password (as
mentioned above). Once configured, there isn't any need for a headset as
your phone was specifically designed to work with microphones. Btw, the
speakerphone function on Smartphones works well and makes using Echolink very
VERY simple to use this way.
Qtel is a fully featured Echolink compatible client that's very similar to
the official Windows client. It has NO interface to the RF world and as
such, it will need it's own microphone. Most people recommend that you
get yourself a quality headset that has both headphones and a boom
microphone for the best results. The other benefit of a client like this
is that it allows you to easily browse around and find other
Echolink nodes by type, location, etc.
43.i - Configuring and using Qtel for Echolink
IMPORTANT: Qtel cannot run at the same time as Svxlink on your computer.
This is due to the fact that the Echolink network ports
are in use by Svxlink.


Qtel is automatically compiled and installed as part of the Svxlink package so
to get going with it, start "qtel" from the command line. Once started, you
should see the main window. To start configuring it, select Settings -->
Qtel Settings.
- In this main window, you need to enter in your non-L, non-R validated
Echolink callsign, your first name, and your Echolink password as created
in the previous section
- The directory setting defaults should be ok but check out the Qtel documentation
for other options
- Under the "Sound" tab, you need to select the correct ALSA device. In my
setup, I would use "alsa:plughw:3"
That's it and you're Qtel setup is configured! The client should now log you
in and you should be able to browse around to connect to various conferences,
links, repeaters, or stations.
Once connected, you can either click on the the big PTT button on the right-hand
side OR you can fine-tune and enable the VOX feature.
That's it!
44. - D*Star - Digital Voice, Data and other related technolgies
So what is Dstar? Is it voice? Is it Data? The answer is it's both. I always
describe D*star to people as:
D*star is a technology first created by the JARL (Japanese Amateur Radio League)
that sends digital voice and data at the same time is D*star frames. The voice
can work for local simplex or repeater communications or it can be lisked to the
Internet to cluster repeaters or connect to reflectors just like what you can
do with Echolink or IRLP. D*star can do a lot more than just this though and
I'll touch on some of it's other abilities in a moment.
I bet the next point in your mind is.. "yeah.. but I've heard it's proprietary".
This was a huge concern of mine as well as I don't like like the proprietary aspects
of it's closed, patented voice vocoder AMBE chip from the DVSI corporation. What
I did love is the concept of it's mixed voice/data format which is completely free
and open from the JARL. The points that pushed me over the edge to get over my
issues and try D*star was the following:
1. Yes, the AMBE2020 vocoder from DVSI is proprietary and patented but did
you know once upon a time Single Side Band (SSB) was also patented?
In the day, radio companies had to license those patents too to offer SSB
radios until they expired. Seems amateur radio technology has been this
way for some time.
2. AMBE-based radios are everywhere. P25 Phase1 (uses the older IMBE chip
actually), P25 Phase2, MotoTRBO/DMR, NXDN, Yaesu's new C4FM (4FSK) digital
mode, etc. All of these solutions use the AMBE chip for voice.
3. The voice quality isn't bad. No, it's not as good as a strong, full
quieting analog FM signal but it's a LOT better than a marginal FM signal
when D*star still sounds 100%.
4. The DVSI company makes these chips available to HAM radio for $20 ea and
there a lot of homebrew kits coming out to create your own D*star compatible
system for pretty cheap!
KJ6VU, a local linked analog repeater owner (and D*star repeater owner for that
matter) recently put it very plainly (paraphrasing here..):
"Suppose all these various radio technologies were widely deployed in the
area so there wasn't any issue of availability of local repeaters. Next
suppose if I were to go to the local HRO where they were selling all of
these radios right there in the store:
P25
MotoTRBO/DMR
NXDN
Yaesu's new 4FSK
DStar
Which would I pick? D*star. Why? None of the other systems support the
mixed voice and data that Dstar does. None of those systems support the
feature rich callsign routing and flexible messaging. Though some of
those new radios might have newer modulation types than Dstar's GMSK but
none of them have the very flexible and robust Dstar framing standard!"
44.a - Learning D*Star - Setting up a US Trust account and learning about how it all works
Here are some links for learning more about D*star:
Ok, so let's say you're sold and want to give it a try. You have a Dstar
radio but now what? To get on the "current" Dstar (US Trust-based system),
you first need to setup an account into that system. That process usually
only takes an hour or so to do but it can take several hours before the
local admin can get to approve it.
Before you continue reading anything else in this section, follow these
instructions in using one of the local D*star systems that support US
Trust registration:
http://www.k6mdd.org/k6mdd/register.html
NOTE: Your Dstar account *will not* be tied in any fashion to this
or any other repeater. The machine above is just one of the
many "true Icom stack" machines that you could use.
Once you fill in that above URL's forms and submit your request, then
read on while you wait:
NOTE on US Trust registration:
------------------------------
It's important to know that you WILL NOT get an automatic email saying
you were approved to the US Trust system. Some admins might manually
email you about the approval but that's to their own accord. I complained
about this to the K6MDD folks stating that if the software can't notify
the new user, they should ALWAYS send a quick "approved" message. They
didn't want to be bothered by it so the work around for this lack of
notification is to *try* to log into that's system:
https://k6mdd.dstargateway.org/Dstar.do
If you were approved, you'll be able to log in. If you haven't been
approved yet, you won't be able to login. Lame but that's reality at
the moment.
Once you ARE able to log into that D8star registration URL, again follow
the detailed steps on the 1st URL shown above:
http://www.k6mdd.org/k6mdd/register.html
to finalize your US Trust account. It's key to follow those steps TO
THE LETTER or bad things can happen. Don't worry about any of the IP addresses,
etc. You don't need those (I don't even know why they expose those).
So, while you wait for approval, you should start asking yourself "How do I use
it"? Here is an outline of key concepts to learn and other links to bring you
up to speed with Dstar:
- How to program your Dstar radio (such as an IC-80AD HT)
- What is the difference between Dstar MY, UR, RPT1, and RPT2 fields?
- What is the difference between Dstar A, B, C, G "RPT" suffixes?
- What is the difference between I, E, G, L, U remote callsign / reflector
suffixes?
- Using Dstar on simplex vs. intra-repeater vs. inter-repeater (global)
Here are some good URLs to come up to speed with the high level points:
- Introduction to Dstar, building your own non-Icom repeater, etc:
http://www.bay-net.org/articles.html
- Additional points are well covered here:
http://www.dstarinfo.com/Data/Sites/1/SharedFiles/presentations/dayton2012/%284%29-basic-programming.pdf
As you look to program your radio, you might want to look at the "Dstar calculator".
It can really help guide you to how you would program your radio step by step with
lists of real repeaters that is updated every day. Very slick:
http://www.dstarinfo.com/dstar-web-calculator.aspx
Once you mastered all that, now you start getting into some advanced D*star concepts:
- Broadcast CQCQCQ vs.
source-routing (think of it as callsign squelch) vs.
repeater linking (everyone on each repeater hears you) vs.
callsign routing (find the remote ham anywhere in the world)
- Here is some good details on the source-routing concept:
http://groups.yahoo.com/group/dstar_digital/message/9943
But here is a clear read on why Source Routing can be very bad:
http://groups.yahoo.com/group/dstar_digital/message/9947
- The "DR mode" on newer Dstar radios as designed by Icom in Japan have a
---REAL--- "difference" of opinion of how to use the CQCQCQ mode vs.
how it's commonly used in the United States (and possibly elsewhere)
More about this in a moment.
- Understanding the differences between the Icom G2 / US Trust vs.
DExtra/Xref and Dextra/DCS systems (Dstar politics) -- I might explain
what I know in detail in the future but email me if you wish to hear about
some of it sooner. It's all an ugly, sad story it seems. I can only
hope we'll have some convergence some day.
- Understanding the differences in incompatible D*Star Callsign Servers:
US Trust server (K5TIT), Robin Cutshaw (AA4RC), Dutch*star server, etc.
The repeater owner chooses.. you don't.
- An excellent tutorial tying together everything you've read from above
with specific details on how to use DR enabled radios like the IC-80AD:
http://napasars.net/2010/dstar-tutorial/
- Along the lines of the excellent write up from the author above, here is
his D*star blog. This chronologic blog also illuminates how Dstar has
fundamentally changed over the years from when it first debuted from
Japan to where the Amateur community is taking it:
http://napasars.net/2011/dstar-blog-2/
- Some additional points that might be helpful as well:
- How to get consistent radio memories across radios both digital and
analog:
http://chirp.danplanet.com/
- Build your data own cable for both radio memories and accessing the
DV-DD data.. and save yourself from a pointless $40 Icom cable:
http://www.d-rats.com/documentation/frequently-asked-questions/1-general-operation/12-what-cable-do-i-need
Additional reading:
- Dstar Voice linking Etiquette:
http://www.dstarinfo.com/Data/Sites/1/SharedFiles/presentations/dayton2012/%286%29-best-practices.pdf
- Data over Dstar - One application of the slow-speed data over D*star's
slow speed DV-DD (2m/70cm) or high-speed DD (23cm) network: D-RATS
This powerful programs does integrated offline mapping, Internet email,
Winlink 2000 messaging, small file transfers, instant messaging, etc)
- D-RATS can also do all that over Dstar but it can ALSO do it purely
using the Internet or packet radio too! See the next section for full
details!
44b. - D-rats - Email, IM messaging, and more via Internet, D-Star, packet radio, and more
I had heard about D-RATS some time ago as a form of a digital messaging system
for the slow data side of the D*Star DV mode. What I've come to realize the
following and they are NOT what I expected:
- D-RATS can work *strictly* over the Internet (no radio required) if you want
- D-RATS can use packet radio (custom KISS traffic or true AX.25 formatted)
--> Seems it cannot use Linux's native AX.25 stack today
- D-RATS can also use the Dstar DV data network
- D-RATS offers a POP email client (Internet based)
- D-RATS offers a Winlink internet and VHF / AX.25 packet email client
- D-RATS offers a file server for serving files
- D-RATS can create Internet to RF relay systems
- D-RATS is multi-platform and runs on Linux, Max, Windows, etc
It's truely a very slick software package that the creator of CHIRP has created
and all this comes in just v0.3.3! Check out the following presentation for
more details:
http://www.d-rats.com/download/doc/D-RATS-TCARC-2010.pdf
Here are some screen captures of it in action:
The chat view where you can see who's on, chat with them, etc:
So.. let's get it installed! As usual, we have some depencendies that need
to be installed first but if you've installed CHIRP from the previous chapter,
you should be good to go:
yum install pygtk2 libxml2-python libxslt-python
Two unique packages to D-Rats is libxslt-python and python-feedparser but both
are easily installed:
- From the Centos Repo: yum install libxslt-python
- From the EPEL repo: yum install python-feedparser
Next, I'd recommend to install the development version of D-rats as found
in http://dev.d-rats.com/drats_daily/ . This code is almost always reliable
and has the most features. For me, I did the following to install this most
recent release:
NOTE: I have not made this an RPM of this package just yet but it's
in the plan
cd /usr/src/redhat/SOURCES
wget http://dev.d-rats.com/drats_daily/daily-02232012/d-rats-daily-02232012.tar.gz
cd /usr/src/redhat/BUILD/
tar xzvf ../SOURCES/d-rats-daily-02232012.tar.gz
ln -s d-rats-daily-02232012 d-rats-daily
Ok, that's IT! Since it's a python program, there isn't anything to compile, etc.
Let's start it up and configure it:
cd /usr/src/BUILD/D-rats/d-rats-daily
#As a NON-root user, run the following on a Xwindows'ed environment:
./d-rats
At this point, you should be prompted that since you're a new user, you need
to configure the application. Fill out the following prompts as follows which
includes some recommendations from Paul, N3TSZ:
+--> Preferences
| |
| +--> Callsign (don't use any SSIDs here, just your call like KI6ZHD)
| +--> Name (your full name)
| +--> Sign-on/off msg (customize it a bit if you like)
| |
| +--> Paths
| | +--> File Transfer path: /var/ftp/pub (this can be any path you wish)
| | (make sure that directory is writable)
| | (with say a chmod 777)
| |
| +--> GPS
| | +--> (Change your Lat/Long/Alt and comment if you so wish)
| | +--> APRS symbol (See http://db.aprsworld.net/datamart/symbol-count.php)
| |
| +--> Appearance
| | +--> Notice RegEx: (put in your callsign here so you'll get
| | | a notice when your callsign is used)
| | |
| | +--> Ignore RegEx: [QST] (put reoccuring QSTs in a unique tab)
| |
| +--> Chat
| | +--> Scrollback lines: 9999
| |
| +--> Messages
| +--> Enable: Automatically Forward Messages
| +--> Queue flush interval: 30
| +--> Station TTL: 600
| +--> My Winlink SSID: 10
|
+--> Radio
| +--> Port: net:ref-d-rats.com:9000 NOTE: By default, only Internet based
| | connections are allowed on port
| | 9000. For RF connections, use
| | port 9001.
| |
| +--> For Dstar radio connections, use the SERIAL connection (more to come
| | here -- add udev serial device :: IC80AD runs at 9600 baud
| |
| +--> For packet radio stuff, it's not clear how it works since it's AX.25
| support asks for a serial port which it shouldn't :: researching
| but I suspect D-Rats cannot use Linux's AX.25 stack
Click on OK
Now, once everything is configured for D-Rats, do the following:
1. Click on the Chat tab
2. Goto File --> Ping Station
3. Type in the Station: CQCQCQ
4. Select the port RAT
5. Hit OK
That above step sends out broadcast ping which will populate your callsign list
with everyone that's currently logged into the the default "RAT:9000" ratflector.
Next, get some key files:
1. Click on the Files tab
2. In the far-right column, make sure that K2TJW is shown
3. In the middle-right colum in the "Station" field, type in K2TJW and click on
the connect icon
4. Highlight the "ratflector-list-03022012.txt" and download it
NOTE: D-rats does not download files anything faster than what a standard
Dstar radio's DV-Voice data can support: 999Bytes/sec
5. Download the Ratflector list 03022012.txt file
That's it for now. I plan on setting up a D-Rats Internet to RF gateway and
ratflector in the future!
PS. If you have a local Winlink system available to you, try sending a
"email" form message to yourself with one KEY point:
Destination Callsign : Add the prefix "WL2K:
to send a Winlink message. You'll soon notice in the "Messages" tab
that the message just showed up. Fast, nothing to configure, etc. Wow..
its that's simple!
45. Ldsped - AGWPE compatible AX.25 packet interface
+-------------------------------+
| Incomplete - Work in progress |
+-------------------------------+
The AGWPE Packet Engine for Windows is massive suite of software that includes
all of the following (and quite a bit more):
- soundcard based 1200 / 9600 baud AX.25 TNC
--> If you know other people looking for an alternative to the sometimes
flakey AGWPE soundcard feature (even in the commercial "Pro" version),
it've heard good reports about this new solution:
http://uz7.ho.ua/packetradio.htm
- true hardware TNCs support in KISS mode
- A terminal program to communicate to hardware TNCs (similar to HyperTerminal)
- Offers a network transport layer to other computers on your LAN to wanting
packet access
It's this final feature that Ldsped brings to Linux. If gives Linux the ability to
share it's AX.25 enabled stack connectivity to other TCP/IP enabled computers on your
local LAN via the common AGWPE protocol.
Current Ldsped Functionality:
-----------------------------
- AX.25 UNPROTO packets in and out
- AX.25 Connected packets INBOUND only (no outbound support yet)
Unlike most Linux software, this program is only available from the developer's
website and requires that you setup an account on his system first. So, follow
the prompts at:
http://www.on7lds.net/42/node/12
to request and account, an hopefully it will be authorized pretty quickly. Once
your account is created, go and download the code:
---&> More to be written shortly
50. - Serial port troubleshooting and tools
+---------------------------+
| to be updated for centos6 |
+---------------------------+
---------------------------
Serial port TroubleShooting
---------------------------
When troubleshooting PTT circuits say for my first setup with a Kenwood
TH-F6A ( http://www.dunmire.org/projects/DigitalCommCenter/index.html --> PTT),
I needed tools to make sure the serial ports were working properly. Finding
useful serial tools wasn't as easy as I thought it would be. As such, I've
put together a few tools that I like to use:
modemtest
- This program comes as part of the perl-Device-SerialPort package and has
the ability to display the current state of the serial lines (buggy?) and
then reset those lines to a sane state when done. This is critical if a
serial port is keying up say a Kenwood D710 radio via the RTS line (stupid
design) and you can't unkey the radio!!
statserial
- Shows the state of the various serial pins and what not. Very helpful.
#TO install from the EPEL repo:
yum install statserial
setserial
- allows for setting speeds, flow controls, etc. much of this program is
no longer needed as all programs that use a serial port will already
initialize the serial port again
NOTE: Though setserial can display the current stat of a serial port's
data lines, I've found that it's initialization routine will SET
or ALTER the state of the port's hardware flow control lines
especially on USB-based serial ports. Once these programs
exit, it does not bring things lines down and thus a Kenwood
D710 in Echolink mode will key up and NEVER unkey! Very bad!
See "statserial" above which avoids this issue.
stty
- A tool to send lower level commands with controlled formatting to tty
ports
minicom
- A very solid terminal program to interface to anything serial. It has
lots of features though you need to rememeber that when changing serial
ports, BAUD rates, etc., you have to save the settings, exit out, and
restart minicom for the changes to take effect
manual-set-rs232-signals.c
- This simple program can help set pins high/low which is very helpful for
troubleshooting, etc.
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/misc/manual-set-rs232-signals.c
tmd710_tncsetup.c
- This program can properly control a Kenwood D710 TNC and set it's various
TNC speeds, commands, etc. I tried doing all of this using stty commands
before but it wasn't reliable. This tool makes it reliable! Used in my
packetrig.sh script:
http://www.trinityos.com/HAM/CentosDigitalModes/usr/src/misc/tmd710_tncsetup.c
serlook
-----------
DEAD END:
----------
- In troubleshooting serial port issues, statserial and setserial only
do so much. serlook can show you a LOT more information if needed.
Unfortunately, it requires a version of lib-qt-2.12+ but
Centos5 only comes with 2.10 and much has changed between
those two versions. Centos6 is a even worse situation.
51. - Other useful tools for the Linux HamShack
+---------------------------+
| to be updated for centos6 |
+---------------------------+
-------------------
Navtex java decoder - http://www.frisnit.com/navtex/?id=decoder
-------------------
unzip JavaNAVTEX_0.2.zip
cd JavaNAVTEX
java -jar ./JavaNAVTEX.jar
sound card selection doesn't seem to work
---------------------------------------------
PACTOR-1, AMTOR, GTOR, RTTY soundcard program
---------------------------------------------
Out of date and unmaintained (unfortunately) Based on hfkernel by Tom Sailer,
with graphic interface (gtk+), spectrum display, logbook, textmacros,
English and German help.
http://sourceforge.net/projects/hfterm/
Appendix A - Recommended extra RPM repositories
--------------------------------------------------------------------------
40. Appendix A - Recommended extra and third-party RPM repositories
--------------------------------------------------------------------------
Getting stock Centos SRPMs
http://mirror.centos.org/centos/5/updates/SRPMS
Getting working SPEC files for HAM-related software
https://fedoraproject.org/wiki/SIGs/AmateurRadio/Packages
Getting updated packages for Centos via ELREPO
http://rpm.pbone.net/index.php3/stat/4/idpl/14102996/dir//com/alsa-kmdl-2.6.18-194.3.1.el5.centos.plus-1.0.20-80.el5.i686.rpm.html
Other RPM spec fixes
--------------------
I have experienced this problem before when building another package, try this:
echo "%_unpackaged_files_terminate_build 0" >> /etc/rpm/macros
then re-try the build from your spec file
Appendix B - KI6ZHD Running Packet notes for QTH
+---------------------------------------------------------------------+
| NOTE: |
| This is probably not useful information to you but it might |
| be. Up to you.. this is legacy notes that need to be removed |
+---------------------------------------------------------------------+
144.910Mhz
----------
10:29am 5/29/09 (Friday)
Callsign Port Packets Last Heard
W6XSC-6 sm0 2 Fri May 29 11:58:33 -- BEACON: Santa Clara County Digi Milpitas.
K6KP-6 sm0 12 Fri May 29 11:58:09
W6XSC-2 sm0 2 Fri May 29 11:56:06
K6SNY sm0 5 Fri May 29 11:55:36
W6XSC-5 sm0 84 Fri May 29 11:43:31
KE6AFE-10 sm0 1 Fri May 29 11:01:12
KI6ZHD-8 sm0 146 Fri May 29 10:22:06 -- me
With soundmodemconfig, I *also* see the following that axlisten doesn't:
--
Packet: fm WR6ABD-0 to ID-0 UI pid=F0
WR6ABD/R LPRC2/D WR6ABD-1/B LPRC2/N
Packet: fm WR6ABD-0 to BEACON-0 UI pid=F0
>Loma Pioneer Repeater Club www.LPRC.net
--
223.660Mhz
----------
Nothing as of 10:29am 5/29/09 (Friday)
441.500Mhz
----------
Good packet sessions :
----------------------
broadcast K6KP-6 is a BBS run by KN6PE
--
sm0: fm K6KP to MAIL ctl UI^ pid=F0(Text) len 67
0000 Mail for: GIL KN3PE LGREDC LGTEOC MSOEOC SAREOC SNCEOC SNYEOC W6
0040 TDM
fm K6KP-6 to KI6ZHD-8 ctl I10+ pid=F0(Text) len 104
0000 [JNOS-1.10m-IHM$]..Welcome ki6zhd,.to the K6KP-5 TCP/IP Mailbox
0040 (JNOS 1.10m (8088))..Currently 1 user...
fm K6KP-6 to KI6ZHD-8 ctl RR1-
fm K6KP-6 to KI6ZHD-8 ctl I11+ pid=F0(Text) len 110
0000 '?' or 'h command` for help. Please send local messages to 'user
0040 s'..Questions to sysop..Enjoy! -- jim kn6pe...
sm0: fm K6KP-6 to KI6ZHD-8 ctl I12+ pid=F0(Text) len 112
0000 You have 0 messages..Area: ki6zhd Current msg# 0..?,A,B,C,D,E,F,
0040 H,I,IH,IP,J,K,L,M,N,NR,O,P,PI,R,S,T,U,V,W,X,Z >.
--
W6XSC-2 on 144.910 doesn't work
W6XSC-5 on 144.910 is controller node
a few things:
--
PORTS
XSCNOD:W6XSC-5} Ports:
1 144.910 Mhz 1200 Baud
2 223.660 Mhz 1200 Baud
3 441.500 Mhz 1200 Baud
4 Bridge to County
#Seems the PORTS command there is misconfigured as I'm connected on 144.910
#but when I list port#3 (441.500), I get:
MHEARD 3
XSCNOD:W6XSC-5} Heard List for Port 3
KI6ZHD-8 09:59:11
W6XSC-6 09:57:30
K6KP-6 09:57:07
WR6ABD 09:57:00
W6MOL 09:56:23
W6XSC-2 09:54:55
K6SNY 09:54:33
WD0DNM 09:48:13
KE6AFE-10* 09:36:11
K6KP 09:34:55
KB6YNO-10* 09:19:45
K6SNY-1 08:59:43
KA3L-2 07:55:20
AD6TL-3 06:26:28
WB6EOC 01:50:46
WB6TMS 23:22:33
WB6TMS-15 22:42:33
K6OTT 22:09:21
SNYEOC 21:51:43
K3OES-10 19:36:56
USERS
XSCNOD:W6XSC-5} G8BPQ Network System V4.08a (133)
Uplink 3(KI6ZHD-8)
--
------------------------
axcall sm0 WR6ABD --- also known as LPRC2 (with less commands)
ENTER COMMAND: B,J,K,L,R,S, or Help >
B(ye) PBBS WILL DISCONNECT
J(heard) CALLSIGNS WITH DAYSTAMP
J S(hort) HEARD CALLSIGNS ONLY
J L(ong) CALLSIGNS WITH DAYSTAMP AND VIAS
L [x [y]] [;] LIST MESSAGES x THRU y YOU CAN READ
L <|> call LIST MESSAGES FROM OR TO CALL
LB LIST BULLETINS
LC [cat] LIST CATEGORIES
LL n LIST LAST n MESSAGES
LM(ine) LIST UNREAD MESSAGES ADDRESSED TO YOU
LO [+|-] LISTING ORDER
LT LIST TRAFFIC
LTn DISPLAY LOCATION TEXT n=1-4
K(ill) n DELETE MESSAGE NUMBER n
KM(ine) DELETE ALL READ MESSAGES ADDRESSED TO YOU
R(ead) n DISPLAY MESSAGE NUMBER n
RH n DISPLAY MESSAGE n WITH HEADERS
RM(ine) READ ALL MESSAGES ADDRESSED TO YOU
S(end) call SEND MESSAGE TO callsign
S[B|P|T] call SEND BULLETIN, PRIVATE, or TRAFFIC
ENTER COMMAND: B,J,K,L,R,S, or Help >
ENTER COMMAND: B,J,K,L,R,S, or Help > J L
K6ACS-10 > BEACON 05/29/2009 16:05:38
KB6YNO-10* > BEACON 05/29/2009 16:18:53
VIA *WD0DNM,WB6EOC,LPRC2
K6SNY-1 > KI6RLD 05/29/2009 16:23:28
KI6RLD > K6SNY-1 05/29/2009 16:23:29
W6MOL > BEACON 05/29/2009 16:25:33
AD6TL-3 > BEACON 05/29/2009 16:25:36
N6FRG-5 > ID 05/29/2009 16:27:34
WD0DNM > ID 05/29/2009 16:28:22
WA6PIC* > BEACON 05/29/2009 16:28:52
VIA *MAR5,SARA
WB6TMS > ID 05/29/2009 16:31:32
K6KP > MAIL 05/29/2009 16:34:06
W6XSC-2 > CQ 05/29/2009 16:34:32
KE6AFE-10 > BEACON 05/29/2009 16:35:19
VIA LPRC2
K3OES-10 > ID 05/29/2009 16:35:58
W6XSC-5 > ID 05/29/2009 16:38:15
W5OES-10 > ID 05/29/2009 16:38:21
K6SNY > BEACON 05/29/2009 16:38:44
KI6ZHD-8 > WR6ABD 05/29/2009 16:38:59
------------------------------
k6sny-1
--------------------------------------
ENTER COMMAND: B,J,K,L,R,S, or Help >
B(ye) PBBS WILL DISCONNECT
J(heard) CALLSIGNS WITH DAYSTAMP
J S(hort) HEARD CALLSIGNS ONLY
J L(ong) CALLSIGNS WITH DAYSTAMP AND VIAS
L [x [y]] [;] LIST MESSAGES x THRU y YOU CAN READ
L <|> call LIST MESSAGES FROM OR TO CALL
LB LIST BULLETINS
LC [cat] LIST CATEGORIES
LL n [;] LIST LAST n MESSAGES
LM(ine) LIST UNREAD MESSAGES ADDRESSED TO YOU
LO [+|-] LISTING ORDER
LT LIST TRAFFIC
LTn DISPLAY LOCATION TEXT n=1-4
NL n SET PAGE SIZE WHEN READING MESSAGES
K(ill) n DELETE MESSAGE NUMBER n
KM(ine) DELETE ALL READ MESSAGES ADDRESSED TO YOU
R(ead) n DISPLAY MESSAGE NUMBER n
RH n DISPLAY MESSAGE n WITH HEADERS
RM(ine) READ ALL MESSAGES ADDRESSED TO YOU
S(end) call SEND MESSAGE TO callsign
S[B|P|T] call SEND BULLETIN, PRIVATE, or TRAFFIC
U(sers) DISPLAYS EVERYONE CONNECTED TO BBS
ENTER COMMAND: B,J,K,L,R,S, or Help >
--------------------------------------
> Looking from the output of axlisten, things look ok but it's probably an
> issue with outpost. Watching it run, it's very chatty and creates a lot
> of unnessasary checks.
Is outpost in active development? Sure looks like it could use
some optimizations and add some latencies to let other people into
both the band and a given BBS. It really seems to dominate.
>I see retransmits from you (however my antenna is very low and has a lot
>of local noise near it).
Does your TNC show full decodes of traffic on the air? Is that how
you're seeing the retransmits? I'm on a Kenwood TH-F6A HT using
soundmodem (TNC emulation) on Linux. The whole rid isn't very ideal
right now. I plan on getting a good antenna this weekend (comments on
Comet vs. Diamond, vs. ???). I have an email I've been working over
if you'd be willing to look it over.
>I have an older KPC3 hardware TNC.
It seems like the hardware TNCs do better than soundmodem but this
soundmodem tool is free, it's very actively developed, etc. but
it does work.
>Look on the NCPA web site for BBS frequencies:
>http://www.n0ary.org/ncpa/ncpabandplan.html
i
Bandplans are one thing but does anyone USE them around here?
4.910 seems busy. There was also a question on tonights
City of Santa Clara RACES NET about any cross band digipeaters.
I want to say w6XSC can but I don't know if it's configured.
Thoughts?
--David; KI6ZHD
-andreas de K6OTT
Appendix C - Misc other topics: Baycom TNCs, etc
Baycom serial-attached TNCs:
----------------------------
I've recently been helping Janusz, SP1LOP, to migrate from a Centos3 to a
Centos5 based machine using external Baycom TNCs which look similar to this:
http://www.baycom.org/bayweb/cat/standard.htm . These are interesting TNCs
because:
1) Though RS232 attached, they don't use the usual TX/RX serial lines as
these modems are SYNCRONOUS. They use the DTR and CTS lines to do all
communications. Check out the following URL to see how they are wired:
http://www.baycom.org/bayweb/tech/rs-232.htm
2) One important point about this is that cheap, incomplete serial devices
(ISA, PCI, USB, etc.) *must* support full RS232 flow control or these
devices will not work!
http://www.tigertronics.com/bptsing.htm#BayCom%20and%2016550%20USART%20problems
2) Linux natively supports this hardware
Anyway, SP1LOP is uses two of these devices but one of them was attached to a
PCI-based serial card and it wouldn't get recognized with I/O 0x3400 / irq = 177,
The other Baycom TNC connected to an on-motherboard serial port with I/O 0x3f8 /
IRQ=4 would work. As it turns out, the 2.6.18 kernel in Centos5 is missing two
CRITICAL fixes to support these modems. Once I patched these into the kernel via
SPEC patches, all started to work!
I'm adding in these URLs just in case other HAMs find it helpful and the following
URL is very handy to see what other changes have made it into the kernel over the
years:
http://dev-eole.ac-dijon.fr/projects/eole-kernel/repository/revisions/539ac10c49dd6b813de2920586b0604c3ffab407/changes/drivers/net/hamradio/baycom_ser_fdx.c
Anyway, it took me a LONG time to figure out what was happening for SP1LOP's setup:
#1 - Support I/O ports higher than 0x1000 and IRQs higher than 15
http://forum.soft32.com/linux/PATCH-baycom_ser_fdx-ports-0x1000-enhanced-failure-logging-ftopict340811.html
#2 - payload corrupt due to CRC being put in the preamble
http://www.spinics.net/lists/linux-hams/msg01888.html
If anyone needs help on how to integrate these patches into the kernel.spec file,
just send me an email.
Appendix D - Radio Quirks : Using my specific radios
This is a work in progress but here are notes I plan on adding for my specific
radios:
Kenwood D710
- Turning on CrossBand Repeat
Enable Cross band repeat mode: - menu item 403
Configure your callsign for the CW IDer - menu item 405
Enable CW IDer - menu item 406
- Wiring your own "Echolink" cables so you don't have to run the radio
in Echolink and LOSE rig control support
Kenwood TH-F6A to Kenwood D710
- Enabling DMTF remote control (poor-man's Kenwood SkyCommand)
99. - To Do - Things that I need to still do
It's never done... EVER. Adding support for Centos6 should be proof to
that! Sheesh!
- Figure out what ax25spyd isn't reliable in compiling!
a. Doc Fldigi WWV calibration
DONE - update packetrig.sh to support per system MTUs
128 for 144.990
250 for 145.050
100. - Errata
03/21/13 - Added an update to the Soundmodem section that there are two
alternative SoftTNC programs out there that should significantly
out-perform the classic soundmodem. More research coming on this
topic
03/20/13 - Broke up the PreSetup section to more clearly break out some of the
more common issues that need to be fixed on Linux (regardless of
distro)
03/05/13 - Added a new section following Chirp on some programming ideas to
have consitent programming across many different radios
03/02/13 - Updated the Svxlink section to better show the PF2 button on the
D710 for Echolink mode
02/16/13 - Added a new section for APRX to support sending APRS objects into
APRSIS as well as support UI unproto digipeating for packet
02/09/13 - Added an important note and reference to a Yum script to work around
Glibc conflicts with the VE7FET libax25 libraries
02/03/13 - Added the modem-manager section to the deterministic Udev serial port
section
01/27/13 - Added some additional details on mixer programs in the Soundmodem section
- Added some recommended saving and restoring sound levels in the Svxlink
section and the start-svxlink.sh script
01/18/13 - Moved some of the RPM build environment setup from the custom kernel
section to the PreSetup section
- Added a Centos link on how to setup a non-root based build environment
01/11/13 - Added a new URL on how to reprogram the USB VID/PID values
for FTDI devices
12/16/12 - Added some minor cleanups to the Udev sections
12/10/12 - Updated Xastir from 2.0.1CVS to 2.0.5CVS
- Fixed some missing steps in renaming the CVS directory
- Added a new dependency for Xastir
12/08/12 - Updated one of the URLs for the isolation boards
12/01/12 - Updated the TRXAMADRM section to reflect the common unification, more details
on rig control, RX image file uploads via FTP, etc
11/11/12 - Added Flamp
- Added a new section on how to easily upgrade the various Fl-suite of programs
- Rearranged the Fldigi and logging related sections to be together
11/06/12 - Updated the Linpac section with a fix for macro/commands
11/05/12 - Start writing up on AMPR tunneling over the Internet.
10/31/12 - Started updating the Soundmodem section to better reflect Centos6
settings
10/30/12 - Added a reference to a 2 port FTDI-based USB to serial port adapter
10/26/12 - Major update to the Svxlink section
- Added a new details on a dangerous issue with the D710 using the
RTS serial line to control the radio's PTT.
- Added a startup script to work around this issue
- noted that the QSO recorder feature only works from the top level
and not when other modules are loaded
- Added a section on how to edit the default voice prompts
- Removed serlook as it's not compatible with Centos5 or Centos6
10/22/12 - Significant update to the Dstar section
- Added local audio and SMS notifications to Svxlink echolink connections
10/18/12 - Minor svxlink section updates
10/17/12 - Updated the LOTW section for Centos6 as well as added notes
on details on renewing your certificates (wow.. it's been 3yrs!)
- Updated a broken URL for how to submit logs via LOTW and EQSL
- Noted that the compiling of ax25spyd is still unreliable the first time
- Added a new section for ldsped but it's just getting started
10/15/12 - Added a Qtel client section
- More svxlink updates
10/08/12 - Finished the ALSA enumeration section -- man.. very complicated
- Greatly expanded the Svxlink section to include it's configuration,
configuring the Kenwood D710 for Echolink mode, etc.
- Added some Dstar tutorial links
10/04/12 - Added a new Svxlink+Qtel echolink section. It's not complete yet
- Updated the Echolink section a bit, refining it, added more details in
setting up a new account, etc.
- Added a quick section on paper QSL managers for bureaus
- Updated the RXAMADRM and TXAMADRM versions
09/25/12 - Added the start of how to create consistent ALSA device enumeration
09/16/12 - Added a link to another 4port FTDI based device for serial connections
09/15/12 - Fixed an important issue where you MUST use the Fedora SRPM
to get critical patches regardless of which SPEC file you download
- Broke up the Fldigi section a bit
- Broke out Hamlib into it's own compiling section
- More comments on Qsstv 7.1 and it's serial keying
09/14/12 - Updated RXAMADRM version
- Major update to the TXAMADRM section
09/13/12 - Updated the QSSTV section to support Qsstv 7.1.7
- Removed all references to QSSTV 6.0 Alpha (was broken)
09/07/12 - Changed the Linpac section as the SP/SB commands have to be upper case
09/02/12 - Updated the Linpac configuration section
08/31/12 - Updated the RXAMADRM section with new text, new version, etc
- Split out the TXAMADRM into it's own section - a work in progress
08/25/12 - Updated the third-party RPM repo section a bit
08/24/12 - Some changes for kernel compiling, more comments in there, etc
08/22/12 - Some additional cleanups on the Fldigi compiling section
- Updated the EPEL repo section a little
- Added some more details on USB to serial adapters
08/20/12 - Fixed a typo on checking the installed RPMs for creating a build
environment. Thanks WA6MBZ
- Cleaned up the Fldigi section a little
08/19/12 - Added some missing lines for downloading patch files needed for
various SPEC files and other programs
- Added a patch for fixing Unode coredumps when locally executed
- Added a fix in the packetrig.sh script to assign callsigns to
various daemons (needed by Unode)
08/18/12 - Updated the legacy node section to be complete -- for troubleshooting
node servers via netrom
- Added some key troubleshooting notes in troubleshooting Netrom node
services
- Added a key update to the ax25d.conf file for Netrom based
connections
- Added a note about the core problems I was seeing with Unode
where a workaround and a fix have been identified
08/17/12 - Added a new Dstar and D-RATS section - pretty cool program
that doesn't require D*star.. who knew?
- Added screen captures of some of the programs
08/11/12 - Added the start of an Echolink / IRLP :: EchoIRLP section.
Intro is there, installation and setup needs to be written
- Change the default Netrom route update to be 60 min
- Added some descriptions on what the various RPM build directories
are for, etc.
08/03/12 - Added a note about not setting VERBOSE on Netrom broadcasts
- Updates to the AX.25 messaging tools section but still no solution
06/28/12 - Cleaned up a bit of the Udev USB enumeration sections, improved the
debugging details, etc.
06/21/12 - Changed the recommended base AX.25 packages to VE7FET's which
integrated all of F6BVP's changes. There is one issue with the
ax25tools package but it's been resolved via a patch
06/11/12 - Added a new section on filtering packet logs
06/10/12 - Got Unode running on centos 6.2 though there is an outstanding issue
where if I connect to the node via localhost, the process will coredump.
06/02/12 - More Unode troubleshooting
06/01/12 - Updated the netrom settings as they were inconsistent (and wrong)
- Broke out the Netrom and Node services into different chapters
- Updated the ax25mail-utils section to include that we need to
configure four other files to properly relay messages to/from
the local BBS
- Trying to build Unode but the program is coredumping
05/29/12 - Working with N6ACK to fix some screwy linpac compile issues
using non-standard paths
05/26/12 - Updated the Packet radio section talking about trying to find a simple
PBBS style messaging solution. Covered pms, axmail so far
- Added a new, overly simplified section for ax25ipd for tunneling
AX.25 packets over the Internet
- Added initial ax25spyd support
- Adding better Linpac support via adding new sections for
ax25mail-utils and ax25spyd support
- Updated the Linpac section talking about editing the help, info
and init.mac files
05/16/12 - Updated the gpsd and Xastir sections to support Centos6 as well
as newer versions of GPSd
04/07/12 - Added an additional appendix section to document my findings in
patching the Centos5 2.6.18 kernel to properly support RS232
based Baycom TNCs
- Added a URL in Appendix-C to easily browse kernel commits by file
and not by date. Helpful to see if anything has changed for specific
drivers, etc
- Added a link to the Radio.Linux.org.au site
04/04/12 - Added some additional AX25 troubleshooting.
- More improvements have been made to the packetrig script
- Had to add the CONFIG_BAYCOM_EPP parameter to custom kernel compiling
for Centos5
03/31/12 - Updated the soundmodem section a bit and made significant updates
to the packetrig.sh script to support 300baud HF soundmodem
- Updated the soundmodem.spec file to support patching in these fixes
03/24/12 - Newer Centos kernels broke the initial udev setup when recognizing the
first two serial ports on the US Interface Navigator. Fixed with
adding ENV{ID_MM_DEVICE_IGNORE}="1", to the udev rule
- Updated the RXAMADRM section to reflect the new 0_4 version that's
coming that has lots of fixes, etc.
- Redhat no longer hosts Fedora SRPMs so I updated the impacted URLS
- Updated Hamlib to 1.2.15
03/18/12 - Updated the kernel compiling section a bit
- Update the power management section a bit, moved it to PreSetup section
- the updated the packetrig.sh script to include another attempt to be
able to disable suspend
03/12/12 - More updates on the RXAMADRM chapter
03/03/12 - Added a fix for missing mheard dir path and added a check in the
packetrig.sh script
03/02/12 - Updated the rxamadrm program to properly compile and run on Centos6
02/18/12 - Updated the user permissions in /usr/src/redhat to allow for
non-root RPM building
- Started working on RXAMADRM for Centos6 but roadblocked for now
02/14/12 - Changed the background to a light grey
- significantly cleaned up the index, renamed a few sections to be
much clearer on their actual content, identified more sections that
need Centos6 updates by the beginngin of their respective sections
02/12/12 - First public version of the new Centos6 materials pushed out to
the website
01/29/12 - Added PC speaker patch to the Linpac 0.17pre3 section
- Added a recommendation to backup the config-x86_64-generic-rhel
for future uses
- Updated the pskmeter.py section for Centos6
01/22/12 - Moved away from adding US Interface Navigator support via kernel
source code changes and I'm not using UDEV tricks
- Updated the 3rd party repo section a bit
01/15/12 - Stripped out significant sections of legacy, confusing kernel
configuration sections
- Changed the AX25 tools from the Official sources to the F6BVP
repo
- consolodated and removed older ax25 details, related bug reports,
etc.
- Added in some important rpmbuild optimizations to make sure
the created RPMs are optimized for your hardware. This is
very important for x86_64 systems
- moved the configuration of 3rd party repos to the top of the
document and not an appendix
12/28/11 - Updating the documentation to now include Centos6 support
11/29/11 - Will be replacing the Linuxnode section for the Unode software as has
more features, has security fixes, etc.
- Broke up the AX.25 packet section into a few sections to be more
modular
11/23/11 - Added missing AX.25 and US Navigator kernel patches to archives
and better documented them here
11/20/11 - Updated the nrbroadcast file to lower the default weight
of learned routes
11/13/11 - Added a Soundmodem level tuning URL in the soundmodem section
11/06/11 - Added a Creative Commons license to the doc
10/30/11 - Changed the nrports file to only advertise the node as it seems to
be bad form to send out multiple routes to the same station
10/22/11 - still tweaking the nrports file to get it right
10/20/11 - added URLs to specific AX25 apps/libs/tools bugs
- added an additional repo as it might be better than the official
ax.25 CVS
10/17/11 - some fixes and clarifications for Netrom interfaces
- updates to the packetrig.sh script to enable ADVAX25 depending
on the picked BEACON path
10/15/11 - Added Linuxnode : full Netrom proto system that offers a lot more
features
- Enabled ax25d to support other programs as well
- revamped the ax25-tools section to work around buggy code in the nrattach.c
file
09/17/11 - Added my LoTW / eqsl.cc notes to the LoTW section
- Changed the LOTW chapter name to ARRL Logbook (and Eqsl.cc) logging with Fldigi and other tools
09/04/11 - updated sources for the ax25 tools
08/23/11 - Added Gpredict 0.90 though supporting Centos5 is becoming harder and
harder
07/04/11 - Added a Serial troubleshooting section, fixed overlapping chapter
numbers
06/27/11 - Updated the Winlink2k section, better phrasing, formatting,
some typos
06/19/11 - Updated soundmodem to 0.16
06/11/11 - Added some recommendations for tuning the Signal browser in Fldigi
06/10/11 - Updated Flrig to 1.1.3CY
06/09/11 - Updated the Fldigi section to reflect a new update to Hamlib 1.2.13.1
05/19/11 - Added Flwrap and configuring Flarq
05/18/11 - Added Flmsg
05/15/11 - Added an additional URL for SRPMs
- Update the Flrig section to reflect building Alpha versions
05/14/11 - Updated the Outpost install on Wine
05/01/11 - Added flwkey
04/30/11 - Added flrig
- Added fixes to other sections for the legacy --vendor
SPEC attribute
04/24/11 - Added missing setup and configuration info for Linpac
04/20/11 - Updated the 3rd party RPM repo appendix to work around
an issue with conflicts that priorities doesn't fix
03/27/11 - Added initial DSD docs
03/15/11 - Added a new start to a Winlink2000 section
03/14/11 - Added some URLs in the beginning touching on Packet
tutorials for both VHF and HF
03/09/11 - Added wxtoimg for APT and WeFax satellite decoding
- Added links to
- NAVTEX decoding
- PACTOR-1 / AMTOR decoding
03/06/11 - Updated LOTW tqsllib to 2.2 and TrustedQSL to 1.13
02/12/11 - Added Chirp
- HTMLized the document - 1st phase
- Added a patch to Linpac to support many UNPROTO digipeaters
01/24/11 - Added Wine for eventual Outpost
12/26/10 - Added PskMail
10/30/10 - minor updates
09/29/10 - start to undo the Tk-8.5 damage required by RXADM
- Added notes to Fldigi to recommend tuning the soundcard with
WWV calibration and to also tune the IMD settings
- Added a todo section
09/23/10 - Working with W1HJK, upgraded portaudio from the ElRepo 0.19-8 to
tip of tree 2010-09-23 to try in resolve various FLdigi TX timeout
errors. So far, Contestia seems to be working now, etc.
08/30/10 - simplifying the kernel compiliung steps using more patches
all through the kernel-2.6.spec file and patch-99000
08/28/10 - added the removal of the setroubleshoot RPM as it causes issues
when the daemon isn't running
- disabled busted gpsd udev rules
08/14/10 - new version of soundmodem that fixes all the spectrum analysis
hangs. woohoo! Cleaned up the soundmodem section a little too
08/01/10 - Added a new gpsd section for supprot with Xastir and Ambicom
GPSes. Moved the incomplete Delorme section to it. Updated
the Xastir section
07/25/10 - added Xlog
07/09/10 - updated all ECST URLs
07/04/10 - cleaned the doc up a little, added QSSTV
06/20/10 - updated the kernel section;
- added mention of the US navigator kernel changes
05/08/10 - added comments about fldigi contesting, upgraded to fldigi 3.20.11
02/17/10 - added WSPR support
12/27/09 - added JT65 support`
11/28/09 - added new kernel steps
11/15/09 - added new Latitude aumix / kmix numbers; pskmeter numbers
10/23/09 - added TQSL
09/05/09 - updated to fldigi 3.12.4 from 3.11.5; updated SPEC file to include
new files and --enable-optimizations flag
08/02/09 - added jnos
07/03/09 - added fldigi