Packet Radio (AX.25)

This is the catch-all forum for anything related to radio life!!
Post Reply
Daniel Wee
Site Admin
Posts: 2328
Joined: Wed 25 Feb 25 2009 8:00 pm

Packet Radio (AX.25)

Post by Daniel Wee »

UZ7HO Soundmodem

The attached guide provides and easy way to get started with packet radio. This is especially useful if you already have a radio with a built-in sound card like the ICOM IC-705 and a Windows computer.

The programs that you need can be found at:-
http://uz7.ho.ua/packetradio.htm

Download the soundmodem zip file (currently soundmodem105.zip):-
http://uz7.ho.ua/modem_beta/soundmodem105.zip

and the EasyTerm file (currently easyterm46.zip):-
http://uz7.ho.ua/apps/easyterm46.zip

The rest of the instructions are in the attached PDF.
Attachments
UZ7HO_Setup.pdf
(321.62 KiB) Downloaded 58 times
Daniel Wee
Site Admin
Posts: 2328
Joined: Wed 25 Feb 25 2009 8:00 pm

Re: Packet Radio (AX.25)

Post by Daniel Wee »

Direwolf

In addition to UZ7HO, Direwolf appears to provide a soft-modem solution and supports multiple platforms. The user guide is attached and files can be downloaded from:-

https://packet-radio.net/direwolf/

At the time of writing, version 1.6 appears to be the latest.
https://github.com/wb2osz/direwolf/releases

Instructions to install on Linux platforms can be found here:-
https://github.com/wb2osz/direwolf

Here is a guide for setting Direwolf up with Windows (7):-
http://www.hardychronicles.com/html/dir ... ewolf.html

Simple setup instructions for ICOM IC-705
1. Download Direwolf and extract everything into a directory. In my case, I picked the 64-bit package as that conforms with my Windows 10 64-bit system.
https://github.com/wb2osz/direwolf/rele ... x86_64.zip

2. Navigate to the directory where the files were extracted and execute "direwolf.exe"
Once you do this, you should see a window where a list of devices will be listed, for example:-
Available audio input devices for receive (*=selected):

Code: Select all

 *  0: ICOM IC-705 from radio (USB Aud   (channel 0)
    1: Loopback Mix (MOTU M Series)
    2: Microphone (HD Pro Webcam C920)
    3: In 1-2 (MOTU M Series)
    4: In 3-4 (MOTU M Series)
    5: ICOM IC-7300 from radio (3- USB
    6: Loopback (MOTU M Series)
Available audio output devices for transmit (*=selected):
    0: Out 1-2 (MOTU M Series)
    1: ICOM IC-7300 to radio (3- USB A
 *  2: ICOM IC-705 to radio (USB Audio   (channel 0)
Close the Direwolf program after noting these values.

Note the number for your IC-705 (I've renamed my devices to be more obvious but yours could read "USB Audio Codec" or something similar). In my setup, the devices I am interested in are #0 for input and #2 for output. Keep these numbers in mind which will be used in the ADEVICE setting later on in the configuration file.

3. Go to Windows Device Manager and determine which COM port your IC-705 is sitting on. In my case, it is COM4.
In the ICOM IC-705 settings, under Connectors - make sure the USB SEND/KEYING has USB SEND set to USB (A) RTS.

4. Inside the directory where you extracted all the files, edit the file called "direwolf.conf" (you can use NotePad to do this if you do not have a proper text editor). Look for the line that says #ADEVICE HIGH and add the following lines below it (assuming my device numbers from step-2 above are 0 and 2:-

Code: Select all

ADEVICE 0 2
CHANNEL 0
MYCALL 9V1ZV-2
MODEM 1200
PTT COM4 RTS
TXDELAY 30
TXTAIL 10
CDIGIPEAT 0 0
CBEACON dest="BEACON" sendto=0
FIX_BITS 1
Of course, use your own settings for ADEVICE, MYCALL and PTT. Go through the rest of the configuration file and you may see the place where the above settings are normally put. I think the position is not critical as long as there are no duplicates. The # in front of the setting basically comments it out of use.

4. Fire up Direwolf again. You should see asterisks beside your ICOM IC-705 device if you have selected the ADEVICE correctly.

5. Get EasyTerm file (currently easyterm46.zip) and extract it to a directory of your choice:-
http://uz7.ho.ua/apps/easyterm46.zip

6. Fire up Term.exe and you should be ready to go.

7. Adjust the input audio so that the reported level on the Direwolf screen falls between 45 to 55.
Attachments
User-Guide.pdf
(3.57 MiB) Downloaded 54 times
Daniel Wee
Site Admin
Posts: 2328
Joined: Wed 25 Feb 25 2009 8:00 pm

Re: Packet Radio (AX.25)

Post by Daniel Wee »

Some additional information for setting this up with an ICOM IC-705:-

MENU -> SET -> Connectors -> MOD Input -> USB MOD Level = 50%
MENU -> SET -> Connectors -> MOD Input -> DATA MOD = USB
MENU -> SET -> Connectors -> MOD Input -> DATA OFF MOD = MIC, USB
MENU -> SET -> Connectors -> USB SEND/Keying -> USB SEND = USB (A) RTS


These settings allow the computer to send audio to the radio over the USB, and to key the PTT over the USB RTS line.

Further more, it would seem that the recommended mode for AFSK with FM is actually FM-D. I have not tested this but that seems to be what some APRS users say. The center frequency for the Bell 202 signal is 1700Hz with a low of 1200Hz and high of 2200Hz. This means that the total bandwidth used is about 1kHz. This means that FIL3 should technically work with the 7kHz pass band. FIL1 and FIL2 certainly works as well. It seems that the ideal settings should be FM-D FIL3 or FIL2.

The volume of the audio going into the radio is controlled by:-

MENU -> SET -> Connectors -> USB AF/IF Output -> AF Output Level = 50%

However, this is also affected by the computers individual volume control for that device. This can be found under:-

Open Sound Settings -> Sound Control Panel -> Playback -> Level (for the appropriate device)

Likewise, the volume of the sound the computer gets from the radio is controlled by the USB MOD Level above, but also by the computer's own level:-

Open Sound Settings -> Sound Control Panel -> Recording -> Level (for the appropriate device)
Daniel Wee
Site Admin
Posts: 2328
Joined: Wed 25 Feb 25 2009 8:00 pm

Re: Packet Radio (AX.25)

Post by Daniel Wee »

Installing Direwolf on Raspberry Pi 3 Model B+

https://orari.or.id/index.php/2019/09/0 ... ham-radio/

Hamlib needs to be built and installed first:-

Code: Select all

cd Downloads
wget https://sourceforge.net/projects/hamlib/files/hamlib/3.3/hamlib-3.3.tar.gz
tar -zxvf hamlib-3.3.tar.gz
cd hamlib-3.3
./configure --prefix=/usr/local --enable-static
make
sudo make install
sudo ldconfig
reboot
Then Direwolf needs to be built and installed:-

Code: Select all

su
cd /usr/src      (actually this can be Downloads as well)
git clone http://github.com/wb2osz/direwolf
cd direwolf
apt install cmake hamlib-utils libhamlib-utils libgps-dev libusb-dev libasound2-dev
mkdir build
cd build
cmake ..
make -j4
sudo make install
make install-conf
This should see hamlib and direwolf install, albeit with some minor warnings (hamlib snprintf especially). Plug the IC-705 into the Raspberry or Rock64 and check if the radio is recognized as a sound device:-

Code: Select all

aplay -l
arecord -l
Note the card and device number for the device association with the IC-705. This can be card 3, device 0, for instance. It should be the same for both aplay and arecord listing. Note that the card number may change with reboots. This is quite inconvenient and I'll have to look into how to prevent this or find out what conditions are leading to this change.

Also find out which are your COM ports:-

Code: Select all

dmesg | grep tty
In my case, this is ttyACM0 and ttyACM1. To gain access to this device, you probably need to add your user to the dialout group as follows:-

Code: Select all

sudo usermod -a -G dialout $USER
sudo reboot
There should now be a direwolf.conf in your home directory. We will need to edit this:-

Code: Select all

nano direwolf.conf
The basic changes you will have to make are as follows:-

Code: Select all

ADEVICE plughw:3,0         (card 3, device 0 in my case)
MYCALL 9V1ZV-2
PTT /dev/ttyACM0 RTS
TXDELAY 30
TXTAIL 10
FIX_BITS 1
CDIGIPEAT 0 0
CBEACON dest="BEACON" sendto=0
Note that your may want to append a suffix to your callsign here (called an SSID) so that Direwolf can be addressed separately from your terminal callsign. In my case, I tend to use -1 for the mailbox so I will use -2 for the Digipeater.

You should have the IC-705 plugged into the SBC (Raspberry Pi or Rock64) and reboot the board. You can then start the Direwolf server:-

Code: Select all

direwolf
If there are no errors, you should see something like this:-

Code: Select all

Dire Wolf version 1.6
Includes optional support for:  hamlib cm108-ptt

Reading config file direwolf.conf
Audio device for both receive and transmit: plughw:3,0  (channel 0)
Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, E+, 44100 sample rate / 3.
Ready to accept KISS TCP client application 0 on port 8001 ...
Ready to accept AGW client application 0 on port 8000 ...

Attached to AGW client application 0...

Ready to accept AGW client application 1 on port 8000 ...
If the SBC has an IP of 192.168.0.20 you can enter this IP address into your terminal program. In my case, I am using the UZ7HO EasyTerm so I put this into the "Station Setup" -> "TNC Setup" -> "Host" and it should work if you're on the same sub-net.

To start Direwolf at boot, follow the instructions in this page:-

https://www.marrold.co.uk/2019/04/insta ... ry-pi.html

If making Direwolf a service, remember to change the "User" parameter in the script to reflect your user (rock64 in my case).

Note that the Direwolf screen will report the audio level of the received signal. This should ideally be in the 45-55 region.

On Linux machines, the device number for your soundcard may sometimes change, thus leading to a failed start. If you have it working and then suddenly stop working, do an "aplay -l" to ensure that the device number for the sound card is still the same.
Daniel Wee
Site Admin
Posts: 2328
Joined: Wed 25 Feb 25 2009 8:00 pm

Re: Packet Radio (AX.25)

Post by Daniel Wee »

In order to get Direwolf working with the rock64 SBC, we will need to figure out the appropriate GPIO pins to use for activating the PTT. The GPIO pin numbers are going to be different from that of the Raspberry Pi. The mapping for the 40-pin header is as follows:-
rock64-GPIO-map.jpg
rock64-GPIO-map.jpg (299.88 KiB) Viewed 2720 times
More info can be found here, including the mapping for the second header:-
http://synfare.com/599N105E/hwdocs/rock64/index.html

In our case, we are going to pick pin-8 of the 40-pin header, which according to the mapping chart above corresponds to GPIO 64. In order to enable this pin for use, we will need to configure it first:-

Code: Select all

sudo bash
cd /sys/class/gpio
echo 64 > export
echo out > gpio64/direction
echo 0 > gpio64/value
This enables the GPIO pin (pin-8), makes it an output pin and turns it off. This number then goes into direwolf.conf as:-

Code: Select all

PTT GPIO 64
*update, we have switched to GPIO 101, pin-16, as GPIO 64 is part of the serial port and random data appears on it. Additionally, the above initialization is not necessary as Direwolf already handles all necessary GPIO configuration for the pin. We have now switched to using the pin as an open collector pin due to the pin defaulting to high when rebooting.

*The RK3328 SoC GPIO can source about 10mA (max 12mA), apparently adjustable in software.

More pinout mappings can be found here:-
https://github.com/Leapo/Rock64-R64.GPI ... GPIO-Modes

For some odd reason, the USB Audio Device is not immediately available upon reboot. For this to work right, you will need to enumerate BOTH the play and record devices before it will be properly recognized:-

Code: Select all

aplay -l
sleep 1
arecord -l
cd /home/rock64/direwolf/
sleep 5
/usr/local/bin/direwolf -c /home/rock64/direwolf/direwolf.conf
Daniel Wee
Site Admin
Posts: 2328
Joined: Wed 25 Feb 25 2009 8:00 pm

Re: Packet Radio (AX.25)

Post by Daniel Wee »

For rock64, you need to either enable AX.25 support in the Linux kernel or compile the modules. These instructions should work:-

http://k4gbb.us/docs/raspberry.html

For the autogen to work, you also need to install automake and the ncursesw library:-

Code: Select all

sudo apt install automake libncursesw5-dev
AX.25 kernel support for rock64 seems to be a dead-end though, as the kernel was specially compiled and omitted the AX.25 options. It might be possible to recompile the entire ayufan branch but that will have to be a last recourse. In rock64, before compiling, be sure to set the ARCH:-

Code: Select all

export ARCH=arm
https://github.com/ayufan-rock64/linux-kernel

*there may be a need to edit the drivers/gpu/arm/mali400/mali/Kbuild file to point towards mali_utgard_uk_types.h which is found in a different directory
include/linux/mali/mali_utgard_uk_types.h
*there is a need to edit linux-kernel/include/linux/bug.h on line 71 to increase the size of the array.
*there is also a need to edit drivers/gpu/arm/mali400/mali/Kbuild to include:-

Code: Select all

ccflags-y += -O0
Configure the options to include the "Amateur Radio" support under the networking heading:-

Code: Select all

make menuconfig
or

Code: Select all

make O=/home/rock64/build/kernel menuconfig
While in there, turn off unneeded modules - NVME, PCIE, and other stuff that will just complicate the build.

In linux-kernel/drivers/gpu/arm/Kbuild, comment out everything except mali400 support. The rest are not needed and compiles with errors.
Post Reply