Post

VR-N76 (UV-PRO) with KISS-TNC under Linux

How to operate the VR-N76 Hamradio with KISS-TNC under Linux.

VR-N76 (UV-PRO) with KISS-TNC under Linux

A few weeks ago, I bought the VGC VR-N76 (also known as BTECH UV-PRO) because it is currently the only new device available with a built-in 1k2 KISS-TNC. I wanted to use it for mobile Packet Radio.

In this post, I want to share my experiences and show how I got the KISS-TNC function working under Linux.

VGC VR-N79

First of all

The following sentences reflect only my personal experience. They should not be taken as universally valid but rather as a guide for others.

At first, I felt too dumb for it…

… at least that was my impression for many days. The VR-N76! A really good radio with a great app (search for “HT APP” in the Android PlayStore). Here’s a rough list of its features:

  • APRS position and messages
  • Configuration of the transceiver
  • Recording QSOs (audio)
  • Amateur radio satellite tracking and automatic adjustment of TX/RX frequencies (keyword: Doppler shift)

But as mentioned, the reason I chose this radio was the built-in KISS-TNC combined with its price. 😁 Getting it to run under Linux, however, was not so straightforward.

Configure VN-R76

First, we need to activate KISS-TNC. Please refer to the screenshots.

Bluetooth

To use the VR-N76 via Bluetooth as an RFCOMM device on Linux, I had to do the following:

First, I had to globally disable the Bluetooth headset profile on Linux. Otherwise, the radio was detected as a headset, which prevented RFCOMM from working. Since I don’t need a BT headset on this machine, disabling it globally was fine for me. For others, setting up UDEV rules might be the better solution.

1
2
3
4
sudo vim /etc/bluetooth/input.conf

[General]
Disable=Headset

Next, pair the radio with Linux. On the transceiver, scroll down in the menu until you see “Pairing”, then press the green button.

On Linux, open a shell, start bluetoothctl, and enable scanning:

1
2
3
bluetoothctl

scan on

Once the radio appears, stop the scan with scan off, note the MAC address (example: 38:D2:00:AA:BB:CC), and type in bluetoothctl:

1
2
pair 38:D2:00:AA:BB:CC
trust 38:D2:00:AA:BB:CC

Exit bluetoothctl afterwards.

Binding as RFCOMM device

To use the radio as a KISS-TNC, bind it as an RFCOMM device:

1
sudo rfcomm bind /dev/rfcomm0 38:D2:00:AA:BB:CC 1

It’s very important to add the number 1 at the end. Without it, or with a different number, it simply didn’t work for me.

Since many peoples stop reading here 😅, let me quickly mention that you must also release the RFCOMM device after use. Do this with:

1
sudo rfcomm release 0

Direwolf and KISS-TNC

It took me a few frustrating days to realize that I couldn’t get it working with Direwolf. Yes, there are YouTubers and bloggers claiming that the VR-N76 works with Direwolf, but we seem to have different definitions of “working”. What does work is receiving APRS packets. But that’s only half the story –I also want to transmit. And transmitting does not work with Direwolf. Why that is, I don’t know. The information available is sparse and very general. I also don’t know if this is a general Direwolf issue or something specific to the VR-N76.

The good old TFKISS

TFKISS was developed between 1988–1996 by the NORD><LINK group, so it’s been around for quite a while. TFKISS connects to a KISS-capable device and converts it into HOSTMODE. HOSTMODE is an even older TNC protocol 😅 but was the standard used on hardware TNCs back in the day. Why was this done? Simply; many devices spoke KISS because the hardware was cheaper, but most Packet Radio software mainly supported HOSTMODE.

I unofficially took over maintenance of TFKISS as part of my work on FlexPacket (a Packet Radio terminal program). After my failed Direwolf attempt, I gave TFKISS a try. And what can I say… It didn’t work either. 😅 This time, I was able to transmit but not receive APRS packets. 🤦🏻‍♂ It turned out, APRS UI frames simply weren’t supported in TFKISS. They were received but discarded. With version 1.3.0, I finally added support for APRS UI frames –five years after the last release.

Configuring TFKISS

To configure TFKISS for the KISS-TNC of the VR-N76, edit the tfkiss.ini file as follows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sudo vim /usr/local/share/tfkiss/conf/tfkiss.ini


#device for kiss port
device /dev/rfcomm0

tfkiss_socket /tmp/tfkiss_socket

# lockfile for device used for kiss port
tfkiss_lockfile /tmp/LCK..cua0

# speed on device for kiss port
speed 9600

# switch kiss-tnc to fullduplex if DAMA detected
fulldup_on_dama 1

# type of KISS on kiss port: 0: KISS, 1: SMACK, 2: RMNC-KISS
kisstype 0

# enable (1) or disable (0) kiss port
kiss_active 1

# enable (1) or disable (0) axip port
axip_active 0

The speed refers to the communication between TFKISS and the TNC, not the RF baud rate of the TNC itself. The VR-N76 seems to automatically adjust to the speed requested by the terminal. In other words, if we set this to 19200, it works without issue.

Starting TFKISS

I usually start TFKISS with the -u parameter. This overrides existing lock files in case you forgot to properly shut down TFKISS earlier. 😅

1
2
3
4
5
6
7
8
9
10
11
tfkiss -u

        TheFirmware (Linux/AXIP/XPID) Version 2.7b DAMA (50 Channel)
            Copyright (c) 1988-1996 by NORD><LINK e.V. (05Oct96)
   -*- Es gilt die allgemeine Lizenz fuer Amateurfunk Software (ALAS) -*-
                     ONLY for non-commercial usage
         Linux-porting copyright (c) 1995-1996 by Mark Wahl, DL4YBG
          solaris-porting copyright (c) 1999 by hans mayer, oe1smc
        netbsd-porting copyright (c) 1999 by Berndt Josef Wulf, VK5ABN
                Copyright (c) 2025 by Andreas Peters, DC6AP
                         version 1.3.0 - 07/09/2025

Configuring FlexPacket

To connect FlexPacket with TFKISS, start the program and go to settings → TFKISS:

clipboard_20250911214301.bmp

As shown, I adapted the default configuration to match my TFKISS version.

Now simply enable TFKISS under settings → enable. FlexPacket will restart and connect to TFKISS. If everything is configured correctly, the VR-N76 display will show a small telephone-like icon next to the power level indicator (L, M, H). This indicates that the RFCOMM connection is established.

When APRS data is received, it should appear in the monitoring channel.

clipboard_20250911214701.bmp

Conclusion

The VR-N76 works very well with TFKISS under Linux. Together with FlexPacket and APRSMap, I can now operate Packet Radio and APRS on Linux while mobile. 🥳 The road to get here wasn’t exactly smooth. But hey… That’s Hamradio too! Diving into technology, learning, fixing, and rebuilding things to make them work.


Download latest FlexPacket
Download latest APRSMap
Download TFKISS

This post is licensed under CC BY 4.0 by the author.