Packet radio is a particularly fun part of the ham radio hobby. Once upon a time, you might have squirted data about the airwaves using something like the Heathkit HK-21 Pocket Packet. Heathkit stopped being a going concern some time ago, but [btech] has now recreated the device with modern hardware.
[btech] has called the project the Pocket Pico, and like the hardware that inspired it, it acts as a terminal node controller for amateur packet radio. It literally runs the same firmware as the real HK-21. It achieves this by using the Raspberry Pi Pico to run a Z80 processor emulator that can run the same code, while also using the microcontroller to do the work of modulating and demodulating Bell 202 audio tones at 1200 baud to avoid the need for a dedicated modem chip.
Thanks to running the same firmware as the HK-21, you can use the Pocket Pico with lots of old packet radio software. It’s fully capable of doing APRS as well as AX.25 Level 2, and has a built in Personal Bulletin Board System for other stations to leave messages.
If you’re looking to get into packet radio, you might just find this project to be useful. Alternatively, you might like taking a look at some other projects we’ve featured in this space, like the capable OpenModem project. Video after the break.
[Thanks to btech for the tip!]

I was curious as to when the original made it’s debut.
Hi, I think it’s technically from 1988 because there’s a 73s review from early 1989.
It can be found here (I’m not affiliated): https://tinyurl.com/2ttaxvn2
Very cool. Thank you I have waveshare products like expansion boards, rs485 boards, etc. I had not heard of the pocket pico.
Why am I not at all surprised?!?
Fantastico Random Gene!!!
Interesting device.
I am curious if HK-21 is based on the TAPR2 design – that would allow many different firmware .bin files be be substituted while using the same z80 emulator and emulated bell 202 modem chips. (MFJ-1270 firmware or similar)
I took a brief look but information for Heathkit is less abundant than tapr – lots of scans.
The pico brings down the part count significantly, impressive that only some resistors are needed for conditioning the audio input/output.
Hi, maybe. A web search revealed that the finicky APRSdos can talk to it, at least.
So it must understand the TAPR2 command set, I guess.
Not sure about the hardware compatibility to TAPR2, though.
I believe some multi-mode TNCs (PK-232, MFJ-1278/B) had ports of TAPR2/TF firmware
or could be re-wired for standard TAPR2/TF firmware, however. 73s.
On the github site there is another project called TNCEMU. I read that the z80 emulation was based on this previous project where the tnc was emulated in Linux! In the WIKI there is tons of info on the HK-21 architecture and it does seem close to the TAPR design, however I saw that certain changes had to be made in the code for it to run in emulation. https://github.com/pfiliberti/tncemu/wiki/Heathkit-HK-21-TNC-Technical-Information
Sound cool! I hope TFPCX get’s a Linux port, too, eventually!
Because that’s already a high-level version of a TNC firmware.
Speaking of TAPR.. Here in Europe it’s not that well known, I’m afraid.
Over here, “TNC2” is better known than “TAPR2”.
Companies such ad Symek or Stabo produced various TNC2 compatibles, for example.
Maybe that’s not important but still good to know.
The Z80 hardware is same, I think, but firmware is different.
Over here, the TNC2 clones use(d) TheFirmware (TF, by Nord<>Link), WA8DED firmware (old), 6pack, KISS (just KISS protocol) or TheNet X-1J (digi) which are/were more common than TAPR firmware/hardware.
What’s also notable, there are two ways to access the TNC.
a) very fast via Pi Pico’s USB port (virtual COM port, also for control).
b) via rx/tx/gnd line of the Pico (3-wire serial interface, for terminal).
By using a terminal program, the serial interface can be set to work at 9600, 4800 or 2400 Baud or lower,
which is useful to DOS software or home computers such as Amiga, C64 etc.
For PC use, a MAX232 or other converter circuit has to be used,
because real RS-232 levels (+/- 12v) would damage the input pin of the Pi Pico (3.3v max).
In essence, it’s like interfacing an homebrew Arduino to a serial port.
There are several dirty tricks to do the interface between TTL <> RS-232.
Such as using a linear voltage regulator’s output on the MCU’s RX input and a diode for the MCU’s TX output (against reverse polarity from RS-232).
Or two transistors for pull-up/pull-down, an optocoupler..
The MAX232 or any comparable chip is probably the cleanest method for level conversion.
I just metioned the other methods because for sake of tinkering.