Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
Pocket Pico: a packet-radio TNC that runs 1980s firmware on a Pi Pico
2026-09-26

Pocket Pico: a packet-radio TNC that runs 1980s firmware on a Pi Pico

This week's pick is Pocket Pico, a Raspberry Pi Pico TNC for amateur packet radio: a Z80 emulator runs the original Heathkit HK-21 firmware while the Pico handles the Bell 202 modem in software, for roughly $15–30 and an intermediate weekend.

Hardware Hackers DIY Pick
Hardware Hackers DIY Pick@NeoDrop Official

The pick

Pocket Pico is a terminal node controller for amateur packet radio, built on a Raspberry Pi Pico. The board and firmware are by pfiliberti (KF7PSM), and the photographs and build notes come from the amateur station behind N7WDZ. Hackaday featured the project on 25 September 2026. 123
A TNC is the box that sits between a radio and a computer on a packet network. It turns data into the tones a voice radio can carry, decodes the tones it hears back into data, and runs the AX.25 protocol that the two ends of a packet link use to exchange packets. 4 The established cheap way to do that is software on a PC, which means leaving a computer switched on for as long as you want to stay reachable. 5
Pocket Pico takes a different route. A Z80 processor emulator runs inside the Pico, and the program loaded into that emulated machine is the original Heathkit HK-21 Pocket Packet firmware, the code the 1980s hardware ran. 6 The Pico itself supplies the modem, the serial ports, the switches and the status lights. 4
Weekend verdict. The electronics are one through-hole board of 25 parts, and a compiled firmware file sits in the repository, so flashing takes minutes. One unit costs roughly $15–30 as a planning estimate, most of it the Pico and a minimum-order batch of printed circuit boards. Rate the build intermediate: every part is through-hole, but the board has to be fabricated or the same circuit hand-wired, the transmit audio level has to be trimmed to suit your radio, and you need an amateur licence and a radio before any of it goes on the air.

Why it stands out

The emulation is the reason to spend a weekend on this one. Because the HK-21 code runs unmodified, the command set, the timing and the behaviour all come from the 1980s firmware, and the Pico only has to provide what that firmware expects: memory, serial ports, a modem and a push-to-talk line. 6 That is what lets older packet software talk to it, and what gives it connected-mode AX.25 Level 2 on top of the APRS work most cheap TNCs stop at. 34
The firmware image being emulated is published with the project, as roms/hk21rom.bin, and the project's credits record that Howard Goldstein (N2WX) wrote the original TNC EPROM code and gave permission for the binary to be distributed here. The Z80 emulator itself is Lin Ke-Fong's z80emu, which is also credited. 78
The project's own timeline is worth knowing before the file list. The repository dates from July 2025, it is a fork of the earlier PICO TNC by amedes, and its last code push was 22 September 2026, three days before the feature ran. 29
There is no modem chip on the board. The Bell 202 audio — 1200 baud, 1200 Hz for a mark and 2200 Hz for a space — is generated and decoded on the microcontroller's own peripherals. 4 Transmit runs through the Pico's PIO and DMA hardware; receive samples the ADC eleven times per bit, at 13.2 kilosamples per second, through a 27-tap low-pass and a 25-tap band-pass filter, and decodes the result with a phase-locked loop. 101112 The receiver works with the squelch open, deciding for itself when a carrier is present, with no carrier line to connect. 4
A black Heathkit Pocket Packet TNC sitting on the keyboard of a vintage Tandy computer, with wires attached to its rear.
The device being recreated: a Heathkit HK-21 Pocket Packet, the 1980s TNC whose firmware runs inside the Pico. The photograph is from the build notes. 3

BOM and budget

The repository publishes a bill of materials as both a PDF and a CSV exported from the board layout, which is what the two lists below follow exactly. 13 Neither file carries prices, so every figure here is a planning estimate from current supplier listings, with the Pico's own price taken from Raspberry Pi. 14

On the board

QtyPartSpecificationRole in buildPlanning cost
1Microcontroller boardRaspberry Pi Pico (RP2040), 2 × 20 pinsRuns the Z80 emulation, the modem and the serial ports$4
3Capacitor100 nF ceramic, 2.5 mm pitchTransmit filter, transmit coupling, receive coupling$0.30
4LED3 mm through-hole, any colourPush-to-talk, carrier, connected and station-data indicators$0.40
2Diode1N4148Clamp the receive audio into the ADC's range$0.20
1Transistor2N3904, TO-92Keys the radio's push-to-talk line$0.15
4Resistor1 kΩLED series resistors$0.20
2Resistor4.7 kΩTransistor base drive and base pull-down$0.10
2Resistor10 kΩBias divider on the receive input$0.10
1Resistor100 ΩTransmit filter series resistor$0.05
1ResistorR9: 4.7 kΩ for Yaesu, 22 kΩ for Icom and StandardPush-to-talk series resistor; value follows your radio$0.05
1Trimmer10 kΩ horizontal, Runtron RM-063 patternSets the transmit audio level into the radio$0.60
1DIP switch4-position SPST piano, 2.54 mm pitchSelects the console and KISS ports, and cuts the LEDs$0.60
2Jack socket3.5 mm PJ320D horizontal (four-pole) and PJ-307 (three-pole)Radio cable and serial cable$2.00

Board, case and consumables

QtyPartSpecificationRole in buildPlanning cost
1PCBTwo-layer, from the published KiCad files or gerbers; fabricators sell fiveThe interface sub-board$5–15 for five
1Case and lidPrinted from the OpenSCAD source or the published STLs, PLA or PETGHolds the board$1–2 of filament
2Headers2 × 20-pin, 2.54 mm, if your Pico has no pre-soldered pinsMounts the Pico$1–2
—ConsumablesSolder, hook-up wire, heat-shrinkAssembly$2–3
One thing the board list will not cover: the radio, a shielded audio cable terminated to suit it, and a USB cable for power and the console. Power comes from the Pico's USB input, and there is no battery or charging circuit on the sub-board. 15
A single unit lands between $15 and $30; the spread is almost entirely the PCB batch and which parts you already own. A builder who has a Pico in a drawer is looking at the price of jacks, a trimmer and a switch.

Schematic and board layout

The sub-board is one KiCad sheet, titled "Pico TncEmu Radio Interface SubBoard", revision 0.70, dated 18 November 2025, and it is entirely through-hole. 15 It does three jobs: it converts the Pico's digital output into something a radio's microphone input can take, it conditions the radio's audio so the ADC can read it, and it keys the transmitter.
KiCad schematic of the Pico TncEmu Radio Interface SubBoard showing the Raspberry Pi Pico with a transmit filter and trimmer to the radio jack, an ADC input protection network, four status LEDs, a four-position DIP switch, a PTT transistor and two jack connectors.
The published Rev 0.70 schematic. The PWM net runs through R10 and C1 into the RV1 trimmer and on to the radio's microphone input; receive audio arrives from the radio's speaker through C3, sits on an R2/R3 divider and is clamped by D5 and D6 before reaching GP26. 15
Pico pinNetWhat it doesWhere it goes
GP10PWMTransmit audio, generated by the PIO and DMAR10 → C1 → RV1 → C2 → MIC on the radio jack J1
GP11PTTKeys the transmitterR7 → Q1 base; Q1 collector → R9 → PTT_R on J1, and D1 lights
GP26ADC0Receive audio into the ADC at 13.2 kS/sFrom SP on J1 through C3, biased by R2/R3 and clamped by D5/D6
GP12CDTCarrier-detect indicatorR6 → D2
GP14CONConnected indicatorR4 → D3
GP15STAStation-data indicatorR5 → D4
GP16, GP17, GP18OPT1, OPT2, OPT3Read the three mode switchesSW1 positions 1 to 3
GP0, GP1TX0, RX03.3 V TTL serial on UART0J2: R pin is TX0, T pin is RX0
Two notes belong before you order anything. First, R9 is the one part whose value depends on your radio: the schematic prints 4.7 kΩ for Yaesu and 22 kΩ for Icom and Standard, and the BOM marks it optional, because its job is to match the push-to-talk line your specific transceiver presents. 1315
Second, the manual and the board disagree about two pins, and the board wins. The manual's hardware summary says GP0 is the transmit audio output and GP26 is the receive input; on this revision GP26 is still the receive input, but the transmit audio leaves on GP10, and GP0 and GP1 are wired to the TTL serial jack. The firmware's own pin definitions and the schematic agree with each other on this. Wire from the schematic, and treat that line in the manual as inherited from the earlier project this one forked. 41215

Firmware and software

Two paths to a working Pico, and the easy one is genuinely easy. A compiled pico_tnc.uf2 sits in the repository: hold the Pico's BOOTSEL button while plugging in USB, drag the file onto the drive that appears, and the Pico reboots into the TNC. 416 Building from source is the conventional Pico route — CMake against the Pico SDK — and the repository also ships a Dockerfile that assembles a toolchain image, which saves setting up the SDK by hand. 617
Boot the board and the firmware announces itself as Pico TNCEMU Emulated Z80 TNC Ver 0.81, then, in console modes, waits up to five seconds for a console to attach before starting. Behind that, the emulated machine prints its own banner — AX.25 Level 2, version 2.0, a 32 kB Z80 machine with the mini PBBS — and it answers the HK-21 command set, including the cmd: commands that dump the TNC's current settings. 418
Terminal window showing the emulated TNC's banner identifying an AX.25 Level 2 virtual machine TNC and the output of its cmd:disp c command, listing configuration values.
The emulated TNC answering over a serial terminal: the Z80 side reports an AX.25 Level 2 virtual machine TNC with a mini PBBS, and cmd:disp c dumps the configuration. The capture is from the project repository. 6
The four DIP switches do the setup work. The fourth turns the status LEDs off, which the manual suggests when running from a battery, since the LEDs draw more than the Pico's core. The first three decide which port gets the TNC console and which gets KISS. 4
Switches 1–3USB portTTL serial portWhat it means
off, off, offConsoleKISSDefault: terminal on USB, KISS on the serial jack
on, off, offKISSConsoleConsole moves to the serial jack
off, on, offConsoleConsoleBoth ports mirror the console
on, on, offKISSKISSBoth ports speak KISS
on, on, on——Pico resets into the bootloader for a firmware update
Firmware changes to the switches are picked up on their own; the firmware deliberately lets its watchdog reboot the board into the new mode rather than asking you to press reset. The watchdog runs at one second, so a wedged emulator recovers by itself. 418
Which mode you want depends on the software at the other end. KISS turns the board into a modem for a host program that speaks the KISS protocol, such as Xastir or Winlink. Console mode gives you the emulated TNC's own prompt, its command set and its personal bulletin board system, so a terminal on its own is enough to run the station. The manual covers both modes, along with the full command reference and the PBBS sysop commands. 4
The assembled purple interface board with a Raspberry Pi Pico fitted inside a grey 3D-printed case, showing four clear LEDs along the top edge, the blue trimmer at the left and the jack and switch openings.
The Rev 0.70 board in its printed case, with the four status LEDs along the top edge and the transmit-level trimmer at the left. The case is published as OpenSCAD source and as STL files, and the repository also carries a shorter case variant. 319

Reproduction difficulty: intermediate

Most of this build is beginner work. Every part is through-hole, the BOM is 25 components, the board layout is published, and the firmware is a single file you drag onto the Pico. 1316 The manual even carries a PCB assembly checklist that orders the work from the smallest parts up through the headers, the Pico mount and the DIP switch. 4
Three things push it past beginner, and all three are outside the soldering iron.
  • Getting the board. The gerbers and the KiCad project are published, so a fabricator can make the board, but that is a week of waiting and a minimum order of five, or you wire the same circuit point to point and lose the layout that makes the board compact. 20
  • Matching your radio. The transmit level is set by hand with the RV1 trimmer, and R9 has to suit the push-to-talk line of the specific transceiver you plug in. Get either wrong and the TNC keys up without being heard, or overdrives the radio's microphone input. 415
  • The radio and the licence. The board has no radio in it. Anything you transmit needs an amateur licence for the band, and the manual is written for licensed operators. 4
Nothing here is advanced. There is no surface-mount work, no RF layout to get right on this board — the radio does that — and no tuning beyond the one trimmer.
Three caveats worth knowing before you commit. This is a VHF 1200-baud Bell 202 design: the README lists 1600 and 1800 Hz tones for HF as a to-do, so HF packet is not available yet. The open-squelch carrier detection can flicker on a noisy channel, which the manual describes as expected behaviour. And the manual names both the original Pico and the Pico 2 while calling the board RP2040-based, which points at two different chips — so buy the RP2040 Pico that the published compiled firmware was built for. 46

Build or skip?

Build Pocket Pico if you want to get on packet radio without leaving a computer running, if you already have a 2 m radio and a licence, or if the idea of running 1980s firmware inside a four-dollar microcontroller is the fun part. Ordering five boards and building one is a sensible Saturday, and the manual's assembly order is good enough to follow without prior PCB experience. 4
Skip it this weekend if you have no radio or no licence, since the board does nothing audible on its own, or if you need HF packet today rather than after the modem gains 1600 and 1800 Hz tones. 6
The first step costs one Pico and nothing else. Flash pico_tnc.uf2, open the USB serial port at 115200 baud, and watch the emulated machine print its banner and answer a cmd: command. Set the switches through their combinations and confirm the console moves between the USB port and the TTL jack. If the emulation runs and the switches respond on a bare Pico, the board is worth ordering; if it does not, you have learned that for the price of the microcontroller you already had. 416
One last thing to sort before you transmit: the firmware and code are BSD 3-Clause, the emulated TNC firmware image is distributed with the original author's permission, and the project is a fork of an earlier Pico TNC. What each licence asks of you differs, so read the LICENSE and CREDITS files in the repository rather than assuming the whole tree is under one licence. 72122

References

  1. 1
    Pi Pico Recreates The Heathkit Pocket Packet

    hackaday.com

  2. 2
    pfiliberti/pico_tnc

    github.com

  3. 3
    Pocket Pico TNC build notes

    n7wdz.com

  4. 4
    Pocket Pico user manual

    github.com

  5. 5
    Project information file

    github.com

  6. 6
    Pocket Pico README

    github.com

  7. 7
    CREDITS

    github.com

  8. 8
    anotherlin/z80emu

    github.com

  9. 9
    amedes/pico_tnc

    github.com

  10. 10
    tnc.h

    github.com

  11. 11
    receive.c

    github.com

  12. 12
    send.c

    github.com

  13. 13
    BOM.pdf

    github.com

  14. 14
    Raspberry Pi Pico

    raspberrypi.com

  15. 15
    schematic

    github.com

  16. 16
    pico_tnc.uf2

    github.com

  17. 17
    Dockerfile

    github.com

  18. 18
    main.c

    github.com

  19. 19
    picotnc_case.scad

    github.com

  20. 20
    pico-pcb: KiCad, gerbers and fabrication outputs

    github.com

  21. 21
    LICENSE

    github.com

  22. 22
    pfiliberti/tncemu

    github.com

Hardware Hackers DIY Pick
Hardware Hackers DIY Pick@NeoDrop Official

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • The pick
  • Why it stands out
  • BOM and budget
  • On the board
  • Board, case and consumables
  • Schematic and board layout
  • Firmware and software
  • Reproduction difficulty: intermediate
  • Build or skip?