Arrow – TNC w/ BLE and 2M Radio

I’ve been working on Arrow for a while now, but I think it’s time I put it to rest for a bit and write down what has been completed.

I’ve learned lots of fun things from this project (and some horrible things…like AX.25 and the FCC limitations on the 2M band’s data rates!) and I hope someone in the future can make use of it or would be willing to work with me to encourage further development!

What is It?

Currently, Arrow is a full fledged TNC which means the following KISS parameters are supported: TX Delay, TX Tail (why is this even a thiiiiing?!?), Slot Time, and Persistence with built-in BLE connectivity and a 2M radio which is frequency agile. In addition to AFSK for AX.25, the radio supports FSK, GFSK, MFSK, and OOK along with M-ary options.

What is a TNC?

TNC for the uninformed stands for Terminal Node Controller in the amateur radio space….Yeah, I didn’t get much from that the first time I heard it either. In fact, I still don’t. I recommend reading the Wikipedia page for a primer.

In short, a TNC is a modem which was used in the early days of packet radio (actually lives on today mainly in APRS) to send digital data from your computer over audio links. TNCs were fantastic because they allow anyone with a radio capable of sending audio (the most common kind when TNCs were all the rage) to send digital data. You can think of it as the cooler cousin of your 56K dial-up modem, but typically way slower.

TNCs were originally used around about the same time the internet was in it’s infancy. The infrastructure and cost at the time for the internet was substantial; so instead amateur hobbyists would setup internet-like networks using what amounts to their walkie talkies, their home computer, and I hope you can guess it at this point – yes, their TNC.

Why did I do it? 

I want to explore and eventually create a new standard for packet radio in the Amatuer space which could provide voice, and data. While I’m still far from the dream I knew the solution would need the following:

  1. Use modern digital modulation techniques for better BER at low SNR.
  2. Reverse compatibility or support of AX.25 for APRS.
  3. Cheap to drive adoption
  4. Built-In Radio and Frequency agile

Current Specifications and Capabilities 


  • TI (CC1200) RF Transceiver IC with Balun + Matching Network for 2M (no PA at the moment)
  • ESP32
  • 18650 cell w/ built-in charger
  • Micro-USB connection for charging and UART access for debugging
  • JTAG port
  • Status LEDs
    • TX
    • RX
    • Battery Charging
    • Battery Charged


Arrow uses the KISS protocol over the Bluetooth SPP profile. This means when Arrow is connected to a computer, tablet or phone it presents itself as a virtual serial port. The KISS protocol is one of the standardized methods used to communicate and configure TNCs; therefore, it is well supported by existing programs (LinBPQ), apps (APRSDroid), and kissattach (Linux’s ax25-tools).

The uC on-board (ESP32) directly samples data from the CC1200 to decode FM AFSK BELL202 utilized for the standard 1200bps AX.25 used for APRS. Here you can see a video using two arrows to send a ping request over AX.25.

This combination provides what amounts to a plug-and-play solution for linking Arrow into existing Amatuer Radio solutions. The combination does have some limitations I hope to address (see below), but I believe hits most of my goals listed above.


The current implementation has the following limitations:

  1. The CC1200 does not support LoRa or PSK.
  2. The output power is very low (+15dBm) and a PA must be added for this to be viable solutions. Please reach out to me if you’re willing to help.
  3. Bluetooth SPP is not supported by iOS, but luckily the code can be adjusted to use a BLE GATT/GAP setup instead.

Learn More

Here is a presentation I’ve done on Arrow

Where can I get one?

I don’t believe the current solution is viable with its low output power. It does work well as an APRS receiver. If you’re interested in purchasing one feel free to contact me via this forum. The code and electrical design files can be found here. Hack away.

16 thoughts on “Arrow – TNC w/ BLE and 2M Radio”

  1. Great project. Txtail is a thing. It takes some time in transceivers to go from tx to RX, in the meanwhile you want modulation otherwise a silence is sent and other stations will collide as they detect no longer a carrier. This is txtail.

    1. The radio is built into this, which is part of what makes it interesting. A Mobilinkd would work if you already have a transceiver.

      Tyler, this looks like a lot of fun. I don’t have the knowledge to help bump up the power, but I hope you find someone who can help.

    2. Espressif has a the Lyra-T boards which have line in / line out connections and an external audio codec. I’m sure this is possible without considerable work.

  2. Hello,
    I’m a ham op I’m interested in your project. Very enlightening, read through what needs to be done. Wouldn’t you be able to use an external sound card or virtual sound card for the pa? Might be worth checking out. Or if you could put one on board. Signalink is an external unit for radios that don’t have a sound card like the new radios have. Just a little insight. Might be able to use Olivia for psk and other modes many plugins for that software might be another possibility.

    1. Hey Peter!

      I’ve actually connected arrow to my computer using KISS (over BT) using ax.25 tools. I was able to remotely telnet into my server. There is demo video in the code repo showing me send a few pings.

      Support of the FX.25 extension is totally possible. Let review it again and think about it.

  3. Have you measured the harmonics out of the transmitter? Been working on a project for a compact filter for VHF.

  4. The early progression has always been a bit unclear, and I was at that first public display of amateur radio packet in May 1978.

    Tnere was an official from the Canadian Department of Communication, who had some connection to AlohaNet in Hawaii, that began in June 1971. It was part of Arpanet. I know he thought ham radio should embrace digital, I think it was announced right there that Canada would add a digital ham license, no code but a test that included digital matters, and only 220MHz and up. (Virtually nobody ever got that license)

    I was never sure what influenced the local hams to build packet radio.

    It was a new mode, I don’t think it was seen in terms of an alternative to ArpaNet. Straddling that month Byte had a 3part article on computer networking, but using small computers. ArpaNet was only mentioned in passing. If you lived in one world, you knew about ArpaNet, for the rest of us, no. One of those three issues of Byte also had an article about the first computer BBS, so packet radio was cutting edge.

    So it was more seen at the time like an upgrade to Radio Teletype. Notions of networking came later. Either that, or I missed it that May.

    Arpanet added controllers to existing computers for networking, so maybe TNCs followed that. But circa 1978, home computers were limited, and varied. Making a separate box meant any terminal could be used, no need to write software for every computer. You also couldn’t get the needed signals out of a UART, so a board would have to be added. A TNC made it easier, albeit an additional cost. I don’t remember “KISS” emerging till the Macintosh, the UART also able to be a USART which was needed.

  5. It seems to me, if you’re looking for higher power output, that a solution would be something like a CMX902 amplifier IC from CML Micro… It’s a product intended for sensor networks / fsk, has compatible voltage requirements (2.5v-6v DC), appropriate frequency range (130-700MHz), appropriate matching (50ohm) and has produced 2.8Watts out @ 160MHz, 1.75W @ 435MHz..

    It’s a small 28pin WQFN SMD package and I don’t think integrating it, even with it’s associated components would increase the size of the Arrow that significantly.

    Another alternative would be to develop an amplifier board based on this chip, the same shape and dimensions as the Arrow, which ‘rides’ on top of Arrow’s PCB. Source voltage from the same 18650 cell and use a small 180 degree jumper from the Arrow’s RFOUT to the amplifier’s RFIN. Throw an appropriate rubber ducky on an amplifier board mounted SMA RFOUT and you’re in business.

    It’s been 20+ years since I’ve done PCB layout otherwise I’d offer to give you a hand with it. I LOVE the project though, how hackable / reconfigurable it could be to other frequency bands and modulation schemes.

    There are a LOT of other battery cells out there which could extend runtime such as 20700’s / 21700’s.. if you have any interest let me know.. I happen to have a decent quantity sitting idle that are new-in-box (offer to the dev only please, not looking to get swamped with requests, lol)

    73′ NB2E

  6. Any way to either buy a board, or get the gerbers to have a board made?
    Definitely interested in this!

  7. Nice project. My interest is enabling a couple of media for reporting data from air quality measurement nodes distributed in a city as part of a community project. APRS seems like a good idea, but the application requires low power. This project seems promising for applications like that. As you say, needs a PA. I might be interested in helping.

Leave a Reply

Your email address will not be published.