Packet.Kiss.Serial 0.22.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Packet.Kiss.Serial --version 0.22.0
                    
NuGet\Install-Package Packet.Kiss.Serial -Version 0.22.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Packet.Kiss.Serial" Version="0.22.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Packet.Kiss.Serial" Version="0.22.0" />
                    
Directory.Packages.props
<PackageReference Include="Packet.Kiss.Serial" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Packet.Kiss.Serial --version 0.22.0
                    
#r "nuget: Packet.Kiss.Serial, 0.22.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Packet.Kiss.Serial@0.22.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Packet.Kiss.Serial&version=0.22.0
                    
Install as a Cake Addin
#tool nuget:?package=Packet.Kiss.Serial&version=0.22.0
                    
Install as a Cake Tool

Packet.Kiss.Serial

Generic serial-port KISS modem for any TNC that speaks standard KISS over USB-CDC or a hardware UART.

KissSerialModem opens a serial port, runs a background read pump, and surfaces inbound KISS frames as an async stream — implementing the neutral IAx25Transport seam so the rest of the stack can move AX.25 frames without caring that the wire is a serial KISS TNC. Part of Packet.NET, a .NET amateur-radio / AX.25 packet stack.

Install

dotnet add package Packet.Kiss.Serial

Quick start

using Packet.Ax25.Transport;
using Packet.Kiss;
using Packet.Kiss.Serial;

// Open the port and start the background read pump (defaults to 57600 baud).
await using var modem = KissSerialModem.Open("/dev/ttyACM0");

// Apply CSMA channel-access parameters (KISS TXDELAY / PERSIST / SLOTTIME).
await modem.SetTxDelayAsync(30);      // 300 ms keyup delay (units of 10 ms)
await modem.SetPersistenceAsync(63);
await modem.SetSlotTimeAsync(10);     // 100 ms slot

// Send an AX.25 frame body. It's KISS-encoded (escaped + FEND-framed) as a Data frame.
await modem.SendFrameAsync(ax25FrameBytes);

// Pull every inbound KISS frame until the modem is disposed.
await foreach (KissFrame frame in modem.ReadFramesAsync())
{
    if (frame.Command == KissCommand.Data)
        Console.WriteLine($"RX {frame.Payload.Length} bytes on port {frame.Port}");
}

Because KissSerialModem implements IAx25Transport, you can also hand it to anything that takes a transport and consume only AX.25 Data frames (non-Data KISS commands are filtered out, and each frame is stamped with a receive time):

IAx25Transport transport = modem;
await transport.SendAsync(ax25FrameBytes);
await foreach (Ax25InboundFrame inbound in transport.ReceiveAsync())
    Console.WriteLine($"AX.25 frame at {inbound.ReceivedAt}");

Plain serial KISS has no TX-completion signal, so this transport deliberately does not implement ITxCompletionTransport — sends are fire-and-forget. For NinoTNC-specific features (ACKMODE TX-completion correlation, SETHW mode switching, TX-Test frame classification) use Packet.Kiss.NinoTnc instead.

Key types

  • KissSerialModem — the serial KISS transport; Open(portName, baudRate, timeProvider) opens the port and starts the read pump. Implements IAx25Transport, ICsmaChannelParams, IAsyncDisposable.
  • KissSerialModem.ReadFramesAsync / FrameReceived — pull (async stream) or push (event) access to inbound KISS frames.
  • KissSerialModem.SendFrameAsync / SendKissAsync — send an AX.25 body as a KISS Data frame, or an arbitrary KISS command.
  • KissSerialModem.SetTxDelayAsync / SetPersistenceAsync / SetSlotTimeAsync / SetTxTailAsync / SetFullDuplexAsync — the KISS CSMA channel-access parameters.

See also


MIT-licensed. Part of the Packet.NET stack.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Packet.Kiss.Serial:

Package Downloads
Packet.Kiss.NinoTnc

NinoTNC-specific KISS extensions for the Packet.NET stack — ACKMODE TX-completion correlation, SETHW mode switching, TX-Test frame classification, USB port discovery. Built on Packet.Kiss.Serial for generic serial-port plumbing. Source: github.com/packet-net/packet.net.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.24.0 45 7/20/2026
0.23.0 104 7/14/2026
0.22.0 112 7/14/2026
0.21.0 114 7/9/2026
0.20.0 108 7/5/2026
0.19.0 114 7/5/2026
0.18.0 113 7/5/2026
0.17.0 119 6/23/2026
0.16.0 122 6/23/2026
0.15.0 115 6/23/2026
0.14.0 113 6/22/2026
0.13.0 116 6/22/2026
0.12.0 121 6/21/2026
0.11.0 130 6/18/2026
0.10.0 112 6/17/2026
0.9.0 224 6/17/2026
0.8.0 122 6/12/2026
0.7.0 98 6/10/2026
0.6.1 117 6/7/2026
0.6.0 123 6/5/2026
Loading failed