The NinoTNC is an open-source Terminal Node Controller (TNC) designed by Nino KK4HEJ. It’s become popular for packet radio operations due to its affordability, reliability, and support for both 1200 baud AFSK and 9600 baud FSK modes.
Hardware Versions
- NinoTNC N9600A: Original version with through-hole components
- NinoTNC N9600A3: Surface mount version, more compact
- NinoTNC N9600A4: Latest revision with improved audio handling
Initial Setup
USB Driver
The NinoTNC uses a USB serial interface. On Linux, it should be recognized automatically as /dev/ttyACM0 or similar. On Windows, the device appears as a COM port.
# Check if recognized on Linux
dmesg | grep ttyACMSerial Terminal Settings
Connect to the NinoTNC with a terminal program:
- Baud rate: 57600
- Data bits: 8
- Parity: None
- Stop bits: 1
- Flow control: None
# Using screen on Linux
screen /dev/ttyACM0 57600Essential Commands
Access the command interface by pressing ESC three times quickly, then type KISS OFF to enter command mode.
| Command | Description |
|---|---|
KISS ON |
Enable KISS mode for software like Direwolf, APRX |
KISS OFF |
Disable KISS mode, enter command mode |
TXDELAY n |
Set TX delay in 10ms units (default: 50 = 500ms) |
TXTAIL n |
Set TX tail in 10ms units |
PERSIST n |
Set persistence value 0-255 (default: 63) |
SLOTTIME n |
Set slot time in 10ms units (default: 10) |
FULLDUP ON/OFF |
Enable/disable full duplex mode |
DISPLAY |
Show current settings |
SAVE |
Save settings to EEPROM |
Recommended Settings
For APRS (1200 baud)
TXDELAY 30
TXTAIL 1
PERSIST 63
SLOTTIME 10
FULLDUP OFFFor 9600 Baud FSK
TXDELAY 15
TXTAIL 1
PERSIST 128
SLOTTIME 5
FULLDUP OFFAudio Level Adjustment
The NinoTNC has potentiometers for TX and RX audio levels:
- TX Level: Adjust for proper deviation (3-3.5kHz for FM)
- RX Level: Set for optimal decode with your radio’s audio output
Use an SDR or deviation meter to verify TX audio levels. The LED indicators help with RX level adjustment - the DCD LED should light consistently when receiving packets.
LED Indicators
| LED | Function |
|---|---|
| PWR | Power on |
| TX | Transmitting |
| DCD | Data Carrier Detect (receiving valid signal) |
| CON | Connected (not used in APRS mode) |
Operating Modes
As of firmware release 3.40 / 4.40 / v40 (all refer to the same version), the NinoTNC supports multiple operating modes selectable via DIP switches.
IL2Pc is shorthand for IL2P plus CRC.
QtSM NOTE: For IL2P and CRC modes, these need to be enabled per modem in the Settings/Modems menu.
Current Modes
| # | Mode | QtSM Mode | Baud | bps | Mod | Proto | Usage | BW | Typical use |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0001 | ? | 19200 | 19200 | 4FSK | IL2Pc | FM | 25k | High SNR links between dedicated data radios. v41 firmware required. |
| 3 | 0011 | ? | 9600 | 9600 | 4FSK | IL2Pc | FM | 12.5k | High SNR links between dedicated data radios. Suitable for UK 2m band. |
| 2 | 0010 | ? | 9600 | 9600 | GFSK | IL2Pc | FM | 25k | Recommended mode for new 70cm (25kHz) links where both ends are compatible. |
| 5 | 0101 | ? | 3600 | 3600 | QPSK | IL2Pc | FM | 12.5k | For situations where only a speaker/mic connection is available but >1200 baud is desired. |
| 11 | 1011 | QPSK v26a | 1200 | 2400 | QPSK | IL2Pc | SSB/FM | 2.4kHz | HF - quadrature version of 1200 BPSK, twice the throughput for +3dB SNR. |
| 10 | 1010 | ? | 1200 | 1200 | BPSK | IL2Pc | SSB/FM | 2.4kHz | HF - use for circuits where wider transmission is acceptable. |
| 9 | 1001 | ? | 300 | 600 | QPSK | IL2Pc | SSB | 500Hz | HF - quadrature version of 300 BPSK, twice the throughput for +3dB SNR. |
| 8 | 1000 | BPSK AX.25 300bd | 300 | 300 | BPSK | IL2Pc | SSB | 500Hz | HF - slowest but best performing mode. ~7dB better than classic 300 baud FSK AX.25. |
| 14 | 1110 | AFSK AX.25 300bd | 300 | 300 | AFSK | IL2Pc | SSB | 500Hz | CRC improvement of IL2P 300 baud AX.25. Recommended if you can’t do BPSK/QPSK on HF. |
| - | 1111 | ? | n/a | n/a | n/a | n/a | n/a | n/a | Allows the mode to be set by a SETHW KISS command (v41+). |
Superseded Modes (Still Supported)
| # | Mode | Baud | bps | Mod | Protocol | Superseded by | Usage | BW | Typical use |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0000 | 9600 | 9600 | GFSK | AX.25 | 9600 GFSK IL2P | FM | 25k | Backwards compatibility with legacy G3RUH modems. |
| 4 | 0100 | 4800 | 4800 | GFSK | IL2Pc | 9600 4FSK IL2Pc | FM | 12.5k | Was the recommended mode for new 2m (12.5kHz) links until 9k6 4FSK came along. |
| 7 | 0111 | 1200 | 1200 | AFSK | IL2P | 4800 GFSK IL2Pc | FM | 12.5k | Improvement over 1200 AFSK IL2P, where none of the GFSK modes are possible. |
| 6 | 0110 | 1200 | 1200 | AFSK | AX.25 | 1200 AFSK IL2P | FM | 12.5k | VHF APRS, backwards compatibility with classic/legacy TNCs like PK232. |
| 12 | 1100 | 300 | 300 | AFSK | AX.25 | 300 AFSK IL2P | SSB | 500Hz | Backwards compatibility with legacy HF packet modems. Modulation invented c. 1962! |
| 13 | 1101 | 300 | 300 | AFSK | IL2P | 300 AFSK IL2Pc | SSB | 500Hz | IL2P improvement of AFSK 300 baud AX.25. |
Firmware v.44 Mode Mapping
The operating mode values are internal and may change with firmware version. For firmware v.44:
| Switch Mode | BrdSwchMod Value | Mode Name |
|---|---|---|
| 0 (0000) | 0x00 | MODE_9600_GFSK_AX25 |
| 1 (0001) | 0x41 | MODE_19200_4FSK |
| 2 (0010) | 0xB0 | MODE_9600_GFSK_IL2P_CRC |
| 3 (0011) | 0x40 | MODE_9600_4FSK |
| 4 (0100) | 0xA3 | MODE_4800_GFSK_IL2P_CRC |
| 5 (0101) | 0xF1 | MODE_3600_QPSK_IL2P_CRC |
| 6 (0110) | 0x02 | MODE_1200_AFSK_AX25 |
| 7 (0111) | 0x93 | MODE_1200_AFSK_IL2P_CRC |
| 8 (1000) | 0x91 | MODE_300_BPSK_IL2P_CRC |
| 9 (1001) | 0x92 | MODE_600_QPSK_IL2P_CRC |
| 10 (1010) | 0xA0 | MODE_1200_BPSK_IL2P_CRC |
| 11 (1011) | 0xA2 | MODE_2400_QPSK_IL2P_CRC |
| 12 (1100) | 0x31 | MODE_300_AFSK_AX25 |
| 13 (1101) | 0x22 | MODE_300_AFSKPLL_IL2P |
| 14 (1110) | 0x23 | MODE_300_AFSKPLL_IL2P_CRC |
| 15 (1111) | 0xF3 | MODE_SET_FROM_KISS |
Signal Settings (DIP Switches)
The NinoTNC has 4 DIP switches for signal configuration.
Switch Functions
Switch 1 - Transmit Audio Range (DATA/MIC)
- ON/UP (DATA): Increases TXA level for data radio input range
- OFF/DOWN (MIC): Reduces transmit audio to microphone-level-input range
Switch 2 - Receive Audio Sensitivity (1x/11x)
- ON/UP (1x): Appropriate for speaker output or data radio output
- OFF/DOWN (11x): For radios with very low receive audio (e.g., speaker mic connection)
Switch 3 - Transmit Audio Coupling (DC/AC)
- ON/UP (DC): DC coupling - rarely needed
- OFF/DOWN (AC): Normal operation, leave here unless you have a specific requirement
Switch 4 - External Carrier Detect (EN/CD)
- ON/UP (EN): Use external transmit inhibit via pin 2 of DB9
- OFF/DOWN (CD): Normal operation, leave here unless you need external TX inhibit
Radio-Specific Settings Cheat Sheet
| Radio | Signals | Notes |
|---|---|---|
| Yaesu FT-450D | 0000 | Requires low level TX audio - the FT-450D is very sensitive. RX audio setting probably doesn’t matter, control with appropriate RF gain/AGC. |
| Tait TM8100/8200 | 1100 | Requires high level TX audio, low level RX audio. Requires AC coupling to block DC present on TX audio pin. Works with 19k2! |
| Tait T2010 I & II | 1100 | Tested up to Mode 0100 (4800 GFSK IL2P+CRC). |
| Yaesu FTM-300D | 1100 | Tested up to Mode 0100 (4800 GFSK IL2P+CRC). |
| Kenwood TK-90 | 0100 | TX audio is pretty sensitive, works better in mic range. |
| Quansheng UV-K5 | 1100 | Works with the 9k6 hardware mod (SA0WII). |
Integration with Software
Direwolf
In direwolf.conf:
CHANNEL 0
MODEM 1200
KISSPORT 0
PTT /dev/ttyACM0 RTSAPRX
In aprx.conf:
<interface>
serial-device /dev/ttyACM0 57600 8n1 KISS
callsign DL7EDU-10
tx-ok true
</interface>Pat Winlink
Configure as a KISS TNC pointing to the serial port.
Troubleshooting
No decode on receive:
- Check RX audio level potentiometer
- Verify squelch is open on your radio
- Confirm correct mode (1200 vs 9600 baud)
Transmit issues:
- Adjust TXDELAY if first part of packets are cut off
- Check TX audio level for proper deviation
- Verify PTT is working (TX LED should light)
KISS mode not working:
- Triple-ESC then
KISS ONandSAVE - Power cycle after saving
Resources
- OARC NinoTNC Wiki - Comprehensive documentation including operating modes and signal settings
- NinoTNC GitHub - Firmware and documentation
- TARPN Project - Network using NinoTNCs
- Packet Radio Info - General packet resources
- HamServe UK - Where I sourced my NinoTNC parts
73 de DL7EDU