IRLP Node 2471
This is an experimental node in Waterloo Region, Ontario, Canada. Find out the status of this node.
The node depends on a tiny circuit board available from the IRLP web site. This board is usually installed in the computer where it also draws the 5v power from. I am no electronics expert, but as far as I can tell, this board does a few simple control line things and DTMF decode. Software control is provided from the parallel port of your Linux computer. The other end of the controls are represented by PTT and COS lines from your node radio. Other than that it uses a couple of audio lines between your sound card and the node radio, with a fork to the board to assist with the DTMF (i.e. touch tone) decoding. The whole IRLP system gets driven off of the touch tone key pad available on most ham microphones and walkie-talkies these days.
A couple of "social" notes. The community for installation will require you to go through the right religious rituals in order to obtain the right to yahoo group support -- this in order to steer most casual users away from sand traps and tar pits. Click on the IRLP link at the right column if you've never used Linux before.
If you are setting up a dedicated node machine, you can follow the officially blessed protocol and buy the CD with the IRLP board. Or buy the flash based node, an ideal solution for those uncomfortable with computers, or with Linux. Click on the IRLP link at the right if you just want a node up and running and don't intend to use Linux for anything else.
The description of what I did for set up (below) is not officially blessed. It is, however, interesting if you are adding IRLP to a Linux computer which is serving some other function. If you are familiar with Linux and learn by taking things apart, you are likely to find some fun in doing what I did, and do wade into deep waters and expect little sympathy at the Yahoo support group.
Setting up the node radio
I bought a used Motorola m1225 radio on eBay. The products are normally marketed to the commercial radio sector, so normally you won't find these high quality radios in the usual channels. These also require absolutely no modifications to run in the amateur band, but they do require "programming" using proprietary software and the associated skill and expertise of a trained technician. Setting the channel, the technician will normally also check alignment and power levels.
It also implies you need to decide up front what the channel parameters are going to be, because once it arrives on your doorstep, there will be few opportunities to modify it or otherwise muck around with the settings. This might perceived to be the drawback of using this type of manufactured equipment, but for a node radio the added rigidity is an advantage.
Most modern Motorola radios have a 16 pin plug on the back. Many of the 16 pins are programmable. Notably, you need to set the COS pin 8 to tracking received signals by going low, so that without a valid signal pin 8 sits at 5v. The default for this pin is null. There is also a corresponding jumper setting on the IRLP board which tracks COS low.
Use the information from http://batlabs.com/m1225.html to augment this overview.
The IRLP web site has instructions for a couple other radios along this vein.
Other than that, we followed the "IRLP Board Instruction Manual" to make the cable. The documentation is available in convenient PDF from the IRLP web site. [[ addition instructions to be added ]]
My experience with m1225 radios has been very favorable. They are compact, rugged and highly stable.
Computer hardware and Linux options
At this time I am using an ASUS P5 with an AMD K6-2 400Mhz, 393,216K RAM, AIC7xxxx Adaptec SCSI-UW controller, Fujitsu SCSI-UW disks. The motherboard supports the older USB 1.0 interface -- you can use flash drives. I am using a SoundBlaster PCI128 CT4700.
The IRLP software with its uncompressed audio files initially consumes less than 15 meg (070806). This can be expected to grow with increasing use over time.
It's a decent computer, although the PTT comes on whenever you reboot it. You need to remember to shut the radio off before you reboot. It will be a project at some point to find a way to work around this in an automated solution.
Linux sees the K6-2 processor as an i586. If you are going to use an i586 system, forget about using the default Fedora 7 LiveCD as the basis for your node. Perhaps I will sit down and figure out how to roll my own Pentium I IRLP LiveCD, if I get time.
In the past I've used Pentium I, 133Mhz, 32 meg RAM systems and they worked. However with modern Fedora releases, you will find that anaconda (installer) might not run well if you have less than 128meg. You will have to experiment with other releases of Linux. As of 2004 I had installed Slackware successfully on such machines.
There are some drawbacks of using very old hardware. The festival text to voice software on such a platform tended to get length delays. They don't support USB. They have limited RAM, a big problem with Fedora and decendants. Old BIOS will not access modern IDE hard drives beyond the first couple gig. Modern Linux installs tend to assume bootable CD, whereas old computers will only boot from floppy.
Assuming you find a way to work with the other limitations, this last one can be worked around using Smart Boot, http://btmgr.sourceforge.net/about.html Copy Smart Boot Manager to a floppy using the instructions on the web site. Booting from this floppy will bring up a boot menu which includes boot systems on your CD. It's proven itself quite handy for scroungers like me.
IRLP software will run on most versions of Linux that I've tried. I have not tried non-Linux unices like BSD Unix based systems, but I bet it would not be a difficult port for a knowledgeable person. In Linux, there are many people who wrap the system up in various ways -- refered to as distributions, or in the Linux community vernacular, "distro". And then there are the geneaologies. Fedora begets Red Hat. Red Hat begets CentOS. CentOS, like many others, liked what they saw in Red Hat and was created by a group who addressed what they considered deficiencies. There are in fact numerous distributions downstream of Fedora, which all share the underlying philosophy and tend to be quite similar usually with minor changes and additions. In my opinion, any of these downstream distros would make a good home for an IRLP node. Caveat emptor -- CentOS is the currently "supported" distro.
If you are like the rank and file IRLP folk, most of whom know little about computers, much less Linux, and you are still reading this, let me re-iterate that you will be best off getting the embedded flash based system advertised on the project web site. This solution offers the least setup and configuration and the tiniest footprint of any IRLP solution that I've seen. This is a real sweet solution with few moving parts.
If you happen to have a retired Windoze machine that you'd like to convert from the dark-side to Linux, let me re-iterate the recommendation to buy the officially supported CD available from the project website (or download and burn the CD). When you use the IRLP CD to install your node, it does a bit of set up for you and much of the following discussion will not apply to you.
Installing IRLP on a pre-existing Linux system while preserving the multi-use functionality (minus parallel printer connection and soundcard).
I happened to have a couple of Linux boxes running, one of which running Fedora Core 2 has just become my node computer. Here is what I did.
The first thing you need to do is turn off your printer on your parallel port.
$ chkconfig --del cups
After this, you might notice (using lsmod) that the driver modules are still running, which you can manually remove, or do like windoze, simply reboot the computer to get rid of these drivers.
Next, verify that you have the correct sound driver running, that you have working audio in and out, and that mixer levels are sane. Connect some device, i.e. your iPod, to the input, and amplified speakers to your output. Test your sound set up. If you had previously installed your node, chances are you'd have gotten the sound card working by now and only a bit of verification is needed.
Next, get a copy of the install-irlp shell script: ncftpget ftp://ftp.irlp.net/pub/install/irlp-install
I walked through the shell script to identify the system specific code bits. There is some checking for utilities which IRLP is dependent on. For example, it likes to have ncftp, whereas I normally use wget. There is also totally silly checks for pico... why should it matter to them whether I choose to use vi, emacs, joe, or pico? There would be room for greater sophistication in this department.
If you want to install this on something other than Red Hat/Fedora/CentOS derived Linux, you will need to take a close look at the hard-coding of path names in this script. Also, you should run this script with the "nosound" option, since you already have a working setup for sound.
Much of the script will work on any version of Linux with minor modifications. Pay attention to the security edits, since there has been some movement of these files in more recent versions of Fedora and CentOS.
Running the script will request your new node number -- which is real good if this is the first time you are running this, real bad if you are trying to re-run this script. It also updates PGP key info to the IRLP server key ring for you and a few other things I think you only ever want to do once.
The script is somewhat brittle, but with basic understanding of scripting you should be able make this work with little difficulty.
Once installed, the IRLP software takes care of rsyncing the latest files, some seems via cron, others seemingly on demand. This happens more or less automatically, but I mention it because it won't happen if you shut your computer down between uses.
Once the script has run, there will be a few days during which a volunteer at the server end sets you up. But, you won't be able to do the rest of the setup until you get an e-mail response saying that your node entry is set up on their end.
What if you are using masquerading or are behind a firewall?
In most cases you will have a little box referred to as a router sitting on a DSL or cable modem. Often these are inexpensive Linksys, or DLink devices. Alternatively, you can also set up Linux to be your router. A router simply forwards packets based on network rules. A firewall is somewhat more sophisicated and differs slightly in its motivation, security. The firewall will support a bunch of security rules including modifying, redirecting, rejecting, or dropping packets directly. Most of the inexpensive home market routers have simple firewall functionality built in.
In your router, set the port forwarding of UDP ports 2074 - 2093 and TCP port 15425 to point to the LAN address of your Linux box.
Your firewall can be on the IRLP node machine in which case you simply "allow" those ports, no forwarding required. The firewall on Linux can be manipulated from the commandline using ipchains. However, the persistence mechanism used by the GUI relies on files in /etc/sysconfig/...
If you have a simple routing configuration for which you want to use Linux, usually the routing configuration is implied automatically when you set one interface adaptor to your WAN or PPPoE, and the other to your LAN address. Usually, you don't need to configure any more than this. If you use the IRLP node as your router, make sure that you enable the firewall also in masquerading mode. Firewall support on Linux is quite powerful. If you've no experience with iptables, I suggest you stick to the simpler configurations supported in the GUI.
Initial testing and configuration
Once you get the software installed, there are a number of things you need to do. Firstly, connect to echo reflector by holding PTT and keying in 9990 on your touch tone key pad of your hand held (or other non-node radio, tuned appropriately to the node frequency). If all went well, you will hear the announcement that you are connected. Next key your PTT on the handheld for a second and then give your call sign and some test message before unkeying. After a number of seconds your test message should be transmitted back to you. Listen carefully. Is it distorted? Get into the mixer (i.e. aumix) on Linux and back down the levels a notch for line out and PCM. Repeat until audio is clear and at a reasonable level.
If you hear breaking up of the sound you hear coming back from the reflector, the biggest cause are that your sound levels are too high. The second biggest class of problems causing breakup of the audio, is if your internet connection is near its capacity, or if you have a router in your route that is about to fail. Audio problems are easy to fix -- don't connect to a reflector until you've fixed it. Internet routers that are flakey are more difficult -- get someone with internet know-how to help you narrow down which router is causing the packet problem and file a detailed technical report with your ISP. Your ISP will not know anything about IRLP, most likely, so try to describe the problem in terms of packet drop rate.
If audio levels are set correctly and your internet connection is working properly. There should be no breaking up.
If you didn't get this far, check the lights on the IRLP board. Red is for PTT (transmitter is being keyed) and green is for COS (receive signal present). Do you get the right LED at the right time? If not, do you have your PL/CTCSS tone or DCS value correctly configured? More convenient checking of this type is available from the command line, su'd to user repeater, using the coscheck and the readinput IRLP utilities. Another diagnostic help is the irlp/log/messages file ($ tail -f /home/irlp/log/messages; <ctrl-c> when done).
If everything seems to be working, but your are getting no sound, verify that the router forwarding rules are correct. Also, verify that the permissions were set up correctly in /etc/security and in /etc/udev. Aslo double check that the file /etc/aumixrc exists and is writable to by group sys. Finally, doublecheck that there is a symlink to this file from /home/irlp/.aumixrc.
Other than that, we assume that continuity of your cable is kosher... right?!
Once you are satisfied that your node is behaving, then it is time to update your database entry at http://status.irlp.net:15427/updatenode/index.php. Clicking this link from behind a masquerading firewall/router will work if you share the LAN between your desktop and node, otherwise use lynx on the node machine itself to update these forms. You might want to figure out your latitude and longitude before trying this. The form will allow you to set the password, and is recommended.
You can optionally record your customized connect and disconnect messages. By far, the best tool to do this in is Audacity, available freely at http://audacity.sourceforge.net/ for Linux, Mac OS X, and Windoze (and keep this tool around, there will be other times you will use it.) Use 8 bit mono, at 8000 hz, exporting as a Windows PCM .wav file -- IRLP is fussy. The speech of your on message should be something like this: "IRLP 2 4 7 1 VA3XTO Kitchener, Ontario, Canada, link on" -- adjust accordingly to your context. Select all and apply compression. Explore the other editing features before exporting the wave file using the naming convention, i.e. "stn2471on.wav". The speech of your off message can be something like this ending in "link off" and using the file naming convention, i.e. "stn2471off.wav". Some people get creative when it comes to the speech -- suit yourself. Place these files into the /tmp folder of your Linux box and run script called send_wave_files. This script seems to insist on being run as root. I don't recommend you ever run as root, so I edited mine to not treat non-root as fatal, and it ran fine as user repeater.
Updating Linux after having installed and configured the node
There is a backup script provided that you can use. It just builds a compressed tar ball excluding certain files it considers expendible -- the IRLP system does automatically get certain things on demand and in cron. You can use this, or just tar ball /home/irlp and transfer it to some safe place. Safe place can include another machine on your LAN or on a connected USB flash drive.
Older versions of Fedora require you mount /mnt/flash before it becomes available to the system. Newer versions should automatically mount it, depending on your configuration.
You can also do an scp to your Mac or another Linux workstation. Mac and Linux come pre-equipped with the SSH tools, however, for windoze you would have to get a copy of putty or something that implements ssh on that platform (for me, that in itself is enough reason to switch OS platforms!).
Install your new OS. In my case I did a destructive install, i.e. reformatting the hard drive, rather than and upgrade from FC2. I installed Fedora 7 from the F7 rescue cd booted in install mode. I pointed it at http://gulus.usherbrooke.ca/pub/distro/fedora/linux/releases/7/Fedora/i386/os/ and about six hours later I have a working over the net installed server system. I selected the web server install and then did a custom list when the dialogue came up, and checked a few things of interest, but significantly I unchecked printing. If you missed that you need to disable the printer driver (previously described).
Within days of a release you get updates -- so get the latest bug fixes before you tear your hair out needlessly on bugs that have already been fixed. In my case it took several hours to run [hundreds of meg of download aggravated by sporatic network outages, it seems]:
$ yum update
The default Fedora 7 packages did not include some packages that the IRLP instructions assume are there:
$ yum install ncftp
$ yum install aumix
Since I am planning on installing my auto responder, I also will need lynx:
$ yum install lynx
The default Fedora 7 install also includes some nuisance packages, like an Outlook-like mail user agent called evolution. I would use Sylpheed or Thunderbird, personally. To remove unwanted disk cluttering stuff:
$ yum remove evolution
My entire Fedora 7 filesystem consumes about 2.6 gig at this point.
If you did a destructive install, you will need to re-add your users, including user repeater with a home directory of /home/irlp. On the previous version of the Linux OS, I had issued the command:
$ id repeater
And, I got output resembling this:
uid=50x(repeater) gid=50x(repeater) groups=50x(repeater),3(sys),7(lp)
So now I issue:
$ adduser repeater -G sys,lp -d /home/irlp -s /bin/bash
Next, restore your tarball of /home/irlp.
By the way, since I had selected a web server installation, it boots to multi-user mode by default. This in the Linux vernacular is called init level 3. It allows multiple users to login but does not run the GUI. I enabled the GUI temporarily by issuing the command:
$ init 5
Once I was done, I re-entered the non-GUI mode by issuing the command:
$ init 3
Very importantly, Fedora 7 enables the firewall with fairly restrictive rules by default. Previous versions of Fedora did not. You need to open up ports as described for the router above. This is easy to add via the sys admin firewall GUI.
Check your soundcard configuration. I used the system admin tools avalable via the GUI. Everything seems to have detected and installed fine in my case.
Have a look at the permissions set up in /etc/security and compare it to the relevant section in install-irlp. It could be different in the new release. I extract the relevant portion and make the necessary edits and run the new script.
I needed to install a file called 99-irlpsound.perms into /etc/security/console.perms.d/ -- file is available from the server listed in the install script. Subsequently, I noticed that this file results in audit messages in the dmesg. I then rolled the contents of the 99 file into the file that was there, 50.default.perms and now it is giving an error that it cannot parse the file. Reverting to the original file yields the same error on boot up. This is a weird problem related to security enhanced Linux. Because we changed the security file, it will be rejected by the system. For instructions on re-labeling files, see man selinux.
In Fedora 7 a folder previously called /etc/udev/permissions.d is now called rules.d and the file has been renamed 50-udev.rules. I have created a script myirlp-udev-perms.sh which converts the rule to be IRLP friendly.
Once the system is restarted, aumix works fine under user repeater. However, there was no /etc/aumixrc file. I ran aumix as root and saved the .aumixrc. Next I copied the file to /etc/aumixrc, did
$ chmod 0664 /etc/aumixrc
$ chgrp sys /etc/aumixrc
I verified that the symlink in /home/irlp/.aumixrc pointed to /etc/aumixrc. Note, if you forget to do that, you will find that you will periodically get no sound because line recording bit gets turned off.
The install script goes about setting file permissions on /dev nodes -- this is moot since the arrival of udev. Also, setting file permissions and ownerships on files in the irlp folder makes little sense if you regenerated the repeater account with the same uid. The script regenerates keys and sends them in -- I don't think that is necessary either.
Finally, the irlp-install adds rc.irlp to rc.local. This is a major bugaboo, since it does not take advantage of the sys V init stucture. To remedy this, I created myirlp and copied it to /etc/init.d. I also created a rc.irlp_stop script and copied it to irlp/custom folder. Next I ran:
$ chkconfig --add myirlp
$ chkconfig --list myirlp
now tells me that IRLP will be started whenever the system enters run level 3. And, very importantly, init will shutdown IRLP cleanly when the system is being shutdown or rebooted.
Since the node is currently down, we must start it by running:
$ service myirlp start
To stop it I would issure:
$ service myirlp stop
[ I will link these scripts here once the bugs are worked out.]
The code utility we normally use is called sccw. Thus far I have not gotten this to produce the desired results on Fedora 7.
A few other notes:
You will need to fix scripts/ipupdate so that it uses the system wget instead of the broken version in irlp/bin/wget. I tried to fix this the easiest way, is by getting rid of irlp/wget and cp $(which wget) irlp/bin but every time I change the binary or the script, irlp overwrites my fixes with files that are several years old. Needs deeper surgury, I guess....
The reason for hard coding a special version of wget rather than letting the PATH variable rule is unclear. However, many of the IRLP scripts do this sort of thing. This is one of the facets of IRLP that I find, how shall I say it, unsavoury.
IRLP, when I asked, I was told is not open source. This seems unfortunate, because it is based on open source at the platform level, i.e. Linux, and the VoIP technology is based on speak freely, the latest versions of which are GPL'd. UNIX guys complaining about the software however will be directed at the Yahoo group. I don't know about you, but questions of a thousand whose only Linux exposure has been running the IRLP install on a few nodes can be taxing.
Other notes. The IRLP upgrade doc suggests you run a script called get-irlp-files ... this is unimportant, I am left to assume, although I can't find the script anywhere.