Tuesday, April 26, 2016

Winlink on Raspberry PI

I've been wanting to find a way to check my Winlink using my Raspberry Pi. I was not too familiar with AX.25 and all of its workings, so this was an education process from the start.

I'm using a Pi 2 running Raspbian Jessie, along with Direwolf, a Singalink and a Baofeng UV-5R. I maintain a 1200 baud packet RMS Gateway at our our local Office of Emergency Management.  Here's the steps I took, with great thanks to Andrew's Memory Blog who was doing something similar.
  1. Connect the radio to the Pi. In my case, I had a spare Signalink which I used. I built an audio cord from half of an old Baofeng earpiece and some Cat5 cable.
  2. Update your Pi with: 'sudo apt-get update' and then 'sudo apt-get upgrade' 
  3. Download and build Direwolf. Instructions for doing so on a Pi are here. These instructions are for an iGate, but the basics of getting direwolf on the Pi come straight from the software author and as great. 
  4. Configure Direwolf with your callsign and sound card. The file to edit is direwolf.conf, found in the installation directory. VERY IMPORTANT: This tripped me up even AFTER reading this. Be sure to avoid the  “# ADEVICE – plughw:1,0” line. It looks a lot like the correct “ADEVICE  plughw:1,0” line, but takes input from stdin instead of the sound card. Uncomment the one WITHOUT the dash in the middle of it. 
  5. Install AX25. Next: sudo apt-get install ax25-tools ax25-apps libax25-dev libncurses5-dev
  6. Edit /etc/ax25/axports and set one line to:  radio  mycall 1200 255 2 VHF
  7. Make sure all the other lines in axports have # in front of them (it doesn’t like blank lines).
  8. Run “direwolf -p” to get the KISS port. It will show up as something like /dev/pts/2. Once it’s running, move to another terminal window
  9. Next: 'sudo kissattach /dev/pts/2 radio 44.56.4.120'. You should receive a notice saying something like the AX0 device is ready. (A little explination: Any address in the 44.0.0.0 range will work. Also, /dev/pts/2 can change with each running of direwolf. You can either use the setting direwolf reports OR use the symlink direwolf creates each time which is /tmp/kisstnc)
  10. Make sure everything is connected, your radio is on, the volume is turn up and you are on the right frequency.
  11. Call the local gateway. 'axcall radio -s <YOUR CALLSIGN> <GATEWAY'S CALLSIGN>'. As an example, I used: 'axcall radio -s w5cwt w5cwt-10' It should respond with "Trying..." Watch your direwolf window and you should be able to follow the traffic there. Once it gets a connected reply from the gateway, the axcall program will go into "Talk" mode with a split screen. When you type commands, they will appear in the bottom and the response will appear at the top. 
  12. Once you get a CMS prompt, enter LM (or another legal command) and you will be prompted for a password. The details of the password exchange are here. 
  13. After your password is accepted, it will respond with "Hello <CALLSIGN>". Now you can issue any of the keyboard access commands. 
  14. After your session, quit direwolf with <CTRL>-C. Also use 'sudo killall kissattach' to reset the AX25 port. Rebooting also works. 

Took me FOREVER to find these, so here's a list of Keyboard Access Commands: 
  • LM - List all messages
  • RM - Read all messages for me. 
  • KM - Kill (delete) all messages for me. 
  • R XXXXXXXXX  -Read content of message ID XXXXXXXXX (all caps)
  • K XXXXXXXXX - Kill message number XXXXXXXXX.
  • SP <DESTINATION> - Send a message. Can be a callsign within Winlink or a full email address. It will then prompt you for the Subject and Text. To end, use /EX on a blank line.
  • H - Help, Displays help information.
  • B - Bye, logs out of the system.