1 of 30

FX.25 KISS TNC development

and

Proposed extensions to the standard

Packet Radio Users’ Group

Sep.03, 2020

Kazuhisa Yokota, JN1DFF

Masaaki Yonezawa, JE1WAZ

Norito Nemoto, JH1FBM

2 of 30

FX.25 KISS TNC development

and

Proposed extensions to the standard

Packet Radio Users’ Group

Sep.03, 2020

Kazuhisa Yokota, JN1DFF

Masaaki Yonezawa, JE1WAZ

Norito Nemoto, JH1FBM

3 of 30

PRUG is a non-profit, voluntary organization in Japan.

It was established in 1985.

The purpose of PRUG is to promote the use of packet radio and to research the latest technologies in amateur radio.

PRUG (Packet Radio Users' Group)

4 of 30

Current status of

FX.25 KISS TNC development

5 of 30

FX.25

TNC

AX.25

TNC

reliable communication

with error correction

between FX.25 station

and AX.25 station

compatible with current system

FX.25

TNC

TRX

Wi-Fi

installation flexibility

using Wi-Fi interface

FX.25

TNC

TRX

independent sensor node

sensors

I2C

future plan

FX.25

TNC

TRX

USB

MIC

SP

PTT

between FX.25 stations

PC

TRX

TRX

PC

Use of FX.25 KISS TNC

and future plan

Now experimenting in the

430MHz band as APRS nodes.

Look for JK1MLY

6 of 30

FX.25

TNC

AX.25

TNC

reliable communication

with error correction

between FX.25 station

and AX.25 station

compatible with current system

FX.25

TNC

TRX

Wi-Fi

installation flexibility

using Wi-Fi interface

FX.25

TNC

TRX

independent sensor node

sensors

I2C

future plan

FX.25

TNC

TRX

USB

MIC

SP

PTT

between FX.25 stations

PC

TRX

TRX

PC

Use of FX.25 KISS TNC

and future plan

Now experimenting in the

430MHz band as APRS nodes.

Look for JK1MLY

7 of 30

FX.25

TNC

AX.25

TNC

reliable communication

with error correction

between FX.25 station

and AX.25 station

compatible with current system

FX.25

TNC

TRX

Wi-Fi

installation flexibility

using Wi-Fi interface

FX.25

TNC

TRX

independent sensor node

sensors

I2C

future plan

FX.25

TNC

TRX

USB

MIC

SP

PTT

between FX.25 stations

PC

TRX

TRX

PC

Use of FX.25 KISS TNC

and future plan

Now experimenting in the

430MHz band as APRS nodes.

Look for JK1MLY

8 of 30

Features of FX.25 KISS TNC

  • Using TI TCM3105 Bell 202 modem chip
    • Implements software modem on next version
  • Using ESP-WROOM-32 Wi-Fi module
    • Dual core 32bit RISC CPU, clock 80-240MHz
    • RAM 520kB, flash ROM 4MB
  • Host interface is USB serial and TCP/IP on Wi-Fi
  • KISS mode only
  • supports full FX.25 draft spec.
    • http://www.stensat.org/docs/FX-25_01_06.pdf
  • can receive AX.25 packet, too

9 of 30

Features of FX.25 KISS TNC

  • Using TI TCM3105 Bell 202 modem chip
    • Implements software modem on next version
  • Using ESP-WROOM-32 Wi-Fi module
    • Dual core 32bit RISC CPU, clock 80-240MHz
    • RAM 520kB, flash ROM 4MB
  • Host interface is USB serial and TCP/IP on Wi-Fi
  • KISS mode only
  • supports full FX.25 draft spec.
    • http://www.stensat.org/docs/FX-25_01_06.pdf
  • can receive AX.25 packet, too

10 of 30

Features of FX.25 KISS TNC

  • Using TI TCM3105 Bell 202 modem chip
    • Implements software modem on next version
  • Using ESP-WROOM-32 Wi-Fi module
    • Dual core 32bit RISC CPU, clock 80-240MHz
    • RAM 520kB, flash ROM 4MB
  • Host interface is USB serial and TCP/IP on Wi-Fi
  • KISS mode only
  • supports full FX.25 draft spec.
    • http://www.stensat.org/docs/FX-25_01_06.pdf
  • can receive AX.25 packet, too

11 of 30

FX.25 KISS TNC hardware

TCM3105

Wi-Fi

module

RXD

CDT

TXD

TXA

RXA

PTT

SP

MIC

GPIO

GPIO

GPIO

GPIO

PC

USB

TX

RX

USB

Serial

Bell 202

Pulse(TTL)

UART

(TTL)

FX.25 KISS TNC

Radio

12 of 30

Structure of TNC software

  • Implemented by C language
  • Running on FreeRTOS
  • Each functions implemented as tasks of OS
  • Using queues inter task communication
  • Using interrupt to read RXD signal of modem
  • Using infra red I/F to send the data to modem
  • Implements software modem on next version
    • The TNC software is available on GitHub
      • https://github.com/amedes/fx25-kiss-tnc

13 of 30

Proposed extensions to the

Fx.25 standard

14 of 30

Add a function to FX.25 draft.

  • One large FX.25 frame by combining multiple blocks.
  • Long packet can be sent in a single frame of FX.25 without splitting it up.
  • Any higher level protocols can use the FEC with relative ease.
  • More resistant to further burst errors.
  • Compatibility with the existing AX.25 facilities is maintained.

15 of 30

Correlation Tag

RS Message

RS Parity

One RS block (255bytes)

If you want to fix N bytes error in a block,

the message size will be up to 255-2N bytes.

Frame structure of FX.25 drafts:

Correlation Tag

RS Message

RS Parity

One RS block (255bytes)

16 of 30

Correlation Tag

RS Message

RS Parity

RS Message (255-2N bytes)

Flag

Addresses

Control�/PID

AX.25 packet frame

Information

FCS

Flag

Bit stuffing range

2 bytes

Up to 17 bytes

Flag

Addresses

Control�/PID

Information

FCS

Flag

Complete bit pattern

when transmitting

AX.25

Up to 256 bytes

Up to 332 bytes?

Umm. I cannot stuff to The Packet.

FX.25 packet frame

17 of 30

Flag

Addresses

Control�/PID

Information

FCS

Flag

Need to re-framing :

Flag

Addresses

Control�/PID

Information

FCS

Flag

Flag

Addresses

Control�/PID

Information

FCS

Flag

Correlation Tag

RS Parity

Correlation Tag

RS Parity

AX25

FX25

Data increased by packet division

18 of 30

The position of FX.25 in the OSI protocol layers

Layer1�Physical Layer

AX.25

Layer3 & up�Network Layer &

other

Layer2�Data Link Layer

Segment/Reassemble

AX.25 Layer3/�NETROM/�TCPIP etc.

Link & Address control

Bit stuff/Unstuff

Flag handle

Flame check

Forward error correction

FEC�SYNC

Frame synchronization

NRZI

1200bps

AFSK

Scramble

9600bps

GFSK

Radio

Bit sync

Bit sync

FX.25

not clearly separated

19 of 30

Solution: One large FX.25 frame by combining multiple blocks.

  • It enables FX.25 to send long messages.
  • You don't need to split the frame.
  • The problems presented in the previous section will be solved.

20 of 30

Multiple RS blocks in one FX.25 frame

RS

message

RS parity

Correlation Tag

RS

Message 1

RS parity 1

RS

Message 2

RS parity 2

If we simply put the blocks in order…

In this case, the message is divided by parity, and the packet cannot

be sent in a way that can be decoded by the existing AX.25 TNC

without any overhead.

Correlation Tag

Correlation Tag

RS

Message 2

RS parity 2

NG

21 of 30

Maintaining AX.25 compatibility in multiple block frames

not divided

Arrange the message parts so

that they are contiguous.

Messages are not divided by parity. Packets whose message length

exceeds the original RS message length can be sent without splitting.

RS

Message 1

RS parity 1

RS

Message 2

RS parity 2

Correlation Tag

RS

Message 1

RS parity 1

RS

Message 2

RS parity 2

Correlation Tag

OK

Correlation Tag

22 of 30

Interleaving

RS

Message 1

RS

Parity 1

RS

Message 2

RS

Parity 2

Correction Tag

By interleaving :

1. Improved burst error resistance.

2. Ensuring continuity of the message part in a form that is easy to process by software.

Message part

Parity part

RS encode

RS encode

23 of 30

Correlation Tag Exhaustion by Expansion

We propose a format that combines two types of Correlation Tags for frame with multiple blocks to reduce the number of Tags consumed in the future.

24 of 30

FX.25 Correlation Tag Code (part1)

Tag

Correlation Tag Value

Encoding Type

Tag type

00

0x566ED2717946107E

Reserved

01

0xB74DB7DF8A532F3E

RS(255,239)

Tag-1

02

0x26FF60A600CC8FDE

RS(144,128)

Tag-1

03

0xC7DC0508F3D9B09E

RS(80,64)

Tag-1

04

0x8F056EB4369660EE

RS(48,32)

Tag-1

05

0x6E260B1AC5835FAE

RS(255,223)

Tag-1

06

0xFF94DC634F1CFF4E

RS(160,128)

Tag-1

07

0x1EB7B9CDBC09C00E

RS(96,64)

Tag-1

08

0xDBF869BD2DBB1776

RS(64,32)

Tag-1

09

0x3ADB0C13DEAE2836

RS(255,191)

Tag-1

0A

0xAB69DB6A543188D6

RS(192,128)

Tag-1

0B

0x4A4ABEC4A724B796

RS(128,64)

Tag-1

0C

0x0293D578626B67E6

2 x RS(255,239)

Tag-1

0D

0x41C246CB5DE62A7E

2 x RS(255,223)

Tag-1

0E

0x720267AF1BE1F846

2 x RS(255,191)

Tag-1

0F

0x93210201E8F4C706

3 x RS(255,191)

Tag-1

continued

25 of 30

Frame length expansion format with 2nd Tag

RS

Message part

(Several messages)

Correlation Tag-1

Correlation Tag-2

RS �parity part

(Several parities)

Frame length

The first tag specifies the length of the frame.

The second tag specifies the FEC coding algorithm.

26 of 30

FX.25 Correlation Tag Code (part2)

Tag

Correlation Tag Value

Encoding Type

Tag type

10

0x10A58F97533893FA

Reserved

11

0xF186EA39A02DACBA

Reserved

12

0x60343D402AB20C5A

2 x Specified by PN2

Tag-2 (with Tag-3)

13

0x811758EED9A7331A

3 x Specified by PN2

Tag-2 (with Tag-3)

14

0xC9CE33521CE8E36A

4 x Specified by PN2

Tag-2 (with Tag-3)

15

0x28ED56FCEFFDDC2A

5 x Specified by PN2

Tag-2 (with Tag-3)

16

0xB95F818565627CCA

6 x Specified by PN2

Tag-2 (with Tag-3)

17

0x587CE42B9677438A

7 x Specified by PN2

Tag-2 (with Tag-3)

18

0x9D33345B07C594F2

8 x Specified by PN2

Tag-2 (with Tag-3)

19

0x7C1051F5F4D0ABB2

9 x Specified by PN2

Tag-2 (with Tag-3)

1A

0xEDA2868C7E4F0B52

10 x Specified by PN2

Tag-2 (with Tag-3)

1B

0x0C81E3228D5A3412

11 x Specified by PN2

Tag-2 (with Tag-3)

1C

0x4458889E4815E462

12 x Specified by PN2

Tag-2 (with Tag-3)

1D

0xA57BED30BB00DB22

13 x Specified by PN2

Tag-2 (with Tag-3)

1E

0x34C93A49319F7BC2

14 x Specified by PN2

Tag-2 (with Tag-3)

1F

0xD5EA5FE7C28A4482

15 x Specified by PN2

Tag-2 (with Tag-3)

continued

Table.2

27 of 30

FX.25 Correlation Tag Code (part3)

Tag

Correlation Tag Value

Encoding Type

Tag type

20

0x9428192C9F6C6EFC

Use PN2 (Extended tag)

Tag-3 (show table A)

21

0x750B7C826C7951BC

Undefined

22

0xE4B9ABFBE6E6F15C

Undefined

23

0x059ACE5515F3CE1C

Undefined

24

0x4D43A5E9D0BC1E6C

Undefined

25

0xAC60C04723A9212C

Undefined

26

0x3DD2173EA93681CC

Undefined

27

0xDCF172905A23BE8C

Undefined

28

0x19BEA2E0CB9169F4

Undefined

29

0xF89DC74E388456B4

Undefined

2A

0x692F1037B21BF654

Undefined

2B

0x880C7599410EC914

Undefined

2C

0xC0D51E2584411964

Undefined

2D

0x21F67B8B77542624

Undefined

2E

0xB044ACF2FDCB86C4

Undefined

2F

0x5167C95C0EDEB984

Undefined

continued

Table.3

28 of 30

FX.25 Extended Correlation Tag Code

Tag

Correlation Tag Value

Encoding Type

Tag type

20-0

0x9428192C9F6C6EFC

Reserved

Tag-3

20-1 (1bit rotated)

0x4A140C964FB6377E

RS(255, 239)

Tag-3

20-2 (2bit rotated)

0xA50A064B27DB1BBE

RS(255, 223)

Tag-3

20-3 (3bit)

0xD285032593ED8DDE

RS(255, 191)

Tag-3

20-4

0xE9428192C9F6C6EE

Reserved

Tag-3

20-5

0xF4A140C964FB6376

Reserved

Tag-3

20-6

0xFA50A064B27DB1BA

Reserved

Tag-3

20-7

0xFD285032593ED8DC

Reserved

Tag-3

20-8

0x7E9428192C9F6C6E

Reserved

Tag-3

20-9

0xBF4A140C964FB636

Etc.

Tag-3

20-10

0xDFA50A064B27DB1A

Etc.

Tag-3

20-11

0xEFD285032593ED8C

Etc.

Tag-3

20-12

0x77E9428192C9F6C6

Etc.

Tag-3

20-13

0xBBF4A140C964FB62

Etc.

Tag-3

20-14

0xDDFA50A064B27DB0

Etc.

Tag-3

20-15 to 20-62

Tag-3

Table.A

29 of 30

FX.25 Correlation Tag Code (part4)

Tag

Correlation Tag Value

Encoding Type

Tag type

30

0xD2E344CAB512ED78

Undefined

31

0x33C021644607D238

Undefined

32

0xA272F61DCC9872D8

Undefined

33

0x435193B33F8D4D98

Undefined

34

0x0B88F80FFAC29DE8

Undefined

35

0xEAAB9DA109D7A2A8

Undefined

36

0x7B194AD883480248

Undefined

37

0x9A3A2F76705D3D08

Undefined

38

0x5F75FF06E1EFEA70

Undefined

39

0xBE569AA812FAD530

Undefined

3A

0x2FE44DD1986575D0

Undefined

3B

0xCEC7287F6B704A90

Undefined

3C

0x861E43C3AE3F9AE0

Undefined

3D

0x673D266D5D2AA5A0

Undefined

3E

0xF68FF114D7B50540

Undefined

3F

0x17AC94BA24A03A00

Undefined

40

0x41C246CB5DE62A7E

Reserved

Table.4

30 of 30

Please visit PRUG website for further information.

http://www.prug.com/