Upcoming release of Jnos

Read all about it…….

differences between 2.0m.5Gx and 2.0m.5G - April 17, 2021

 being released this evening (CDT) ...

 ax25 heard has been 'revamped', new 'heard via digipeater' feature,
 so that you can actually see stations not directly heard, I created
 this due to my crazy obsession with Robust Packet lately and seeing
 all the APRS frames coming in on 30 meters, many via K4KPN-10, nice
 to know who else you can qso with (indirectly), really liking this.

 the save/load functionality improved, you can specify save and load
 file now, and times are FINALLY accurate on load, this took a lot of
 effort, but worth it in the end I think. I have NOT included saving
 of the latest digipeater heard list (yet), that will be next time.

 To be honest ? I hated the introduction of the 'show' subcommand, so
 the original 'ax25 h <iface>' is back and will stay that way ...

 command help dialogue now taken from a NEW usage/ax25/heard.txt file
  (create new /jnos/usage/ax25 directory, copy heard.txt over to it)

 note : I have NOT updated j2addendum.txt (yet)

Jnos with a KPC3(+) or Kam in kiss

I was reading in the Jnos mail list about a problem with getting a KPC3 + or Kam modem in kiss or out of kiss. There are some nice examples of how that works.

First get the modem out of Kiss.

echo -e "\xc0\xff\xc0" > /dev/ttyS0'

In the autoexec.nos

attach asy ttyS0 - ax25 p144 4096 256 9600
ifconfig p144 description "p144 - 144 Mhz - 1200 baud"
ifconfig p144 ax25 bbscall w3xsc-1
ax25 digipeat p144 off
ifconfig p144 tcp mss  216
ifconfig p144 tcp window  432
arp eaves p144 on
source p144.local
# Pause a sec to make sure the TNCs have time to reset
pause 1
trace p144 0111
ax25 bcport p144 on
trace p144 0111 ./logs/p144.trace 1000

In the p144.local file

# Serial interface
comm p144 "xxx"
comm p144 "INTFACE TERM"
comm p144 "ABAUD 9600"
comm p144 "XFLOW OFF"
comm p144 "START $00"
comm p144 "STOP $00"
comm p144 "XON $00"
comm p144 "XOFF $00"
comm p144 "TXFLOW OFF"
comm p144 "TRFLOW OFF"
comm p144 "MONITOR OFF"
# Radio interface
comm p144 "HBAUD 1200"
comm p144 "XMITOK ON"
comm p144 "CD SOFTWARE"
# Services
comm p144 "DIGIPEAT OFF"
comm p144 "NUMNODES 0"
comm p144 "USERS 0"
comm p144 "PBBS 0"
# 'PBBS 0' causes a soft reset if not already set to 0
pause 2
# Identification
comm p144 "MYCALL w3xsc-15"
comm p144 "MYPBBS w3xsc-14"
comm p144 "BTEXT SCCo ARES/RACES W3XSC BBS - Mountain View - Offline"
comm p144 "BEACON EVERY 15"
# AX.25 channel
comm p144 "PACLEN 0"
comm p144 "MAXFRAME 2"
comm p144 "RETRY 8"
comm p144 "FRACK 5"
comm p144 "SLOTTIME 10"
comm p144 "PERSIST 96"
comm p144 "DWAIT 0"
comm p144 "DIGIPEAT OFF"
comm p144 "TXDELAY 40"
comm p144 "CHECK 30"
# KISS mode
comm p144 "INTFACE KISS"
pause 1
comm p144 "RESET"
pause 2
# KISS Parameters
param p144 TxDelay 40
param p144 Persist 96
param p144 SlotTime 10
param p144 FullDup 0

This was the first option, now the second.

# KPC3P stuff
remark KPC3P USB (1200 baud) on port 'kpc3p'
attach asy ttyUSB1 - ax25 kpc3p 4096 256 1200
ifconfig kpc3p description "kpc3p - 1200 baud port"
# Put the KPC3P into KISS mode
#   the pauses are critical -- things may fail
#   sporadically if pauses are too short.
remark "Putting the KPC3P into KISS mode -- "
remark "  this takes about 10 seconds!"
pause 2
comm kpc3p ""
pause 2
comm kpc3p "intface kiss"
pause 2
comm kpc3p "reset"
pause 5

I have tested both options and they work perfectly. Nice.

Jnos start with screen

Jimmy K3CHB, Was looking at how he could get a restart option in Jnos in combination with “screen”.

Below how he did it.


echo "Starting [JNOS-2.0n.beta-IHM$]"
screen -d -m -S jnos-console ./nos.loop exit 0


# JNOS 2.0 Loop script by K3CHB

killall -KILL jnos 2> /dev/null
while [ $exit_code -ne 0 ]
     cd /jnos
     rm -f /jnos/spool/mqueue/*.lck 2> /dev/null
     rm -f /jnos/spool/mail/*.lck 2> /dev/null
     rm -f /jnos/spool/ptmx_direwolf.cfg 2> /dev/null
     sleep 2
     grep -o "/dev/pts/." /jnos/direwolf.log > /jnos/spool/ptmx_direwolf.cfg 
     sleep 2
     export TZ=EST5EDT
     export TERM=xterm-color
     /jnos/jnos -g2 -i -d/jnos && exit_code=0
exit 0


Jnos NNTP(s) Server

Jean VE2PKT helpt me to get things going. Thank you Jean. I really appreciate it.

I first have to compile a new Jnos version with the NNTP(s) enabled, edit your config.h and define NNTPS.
(#define NNTPS   /* Netnews client and server */)
I had problems if I wanted to connect the NNTP server. Jnos crached right away. After a distro update of my linux version from “Stretch” to “Buster” all went fine.


# NNTP server/client
start nntp
nntp profile fullname "Niels PD9Q"
nntp profile host jnos.packet-radio.nl
nntp profile organ "Amateur Radio"
nntp profile reply pd9q@jnos.packet-radio.nl
nntp profile user pd9q
nntp access off
nntp firstpoll 5
nntp ihave 0
nntp lzw on
nntp quiet 2

Fist create newsgroups on the Jnos prompt

jnos> nntp create ng.bpq y

nntp create <news.group.name> [y|n]

Updates the /spool/news/active file, which must have an entry for each news group you wish to receive.  Choose y to permit posting to this group, or n to deny posting.  y is assumed if nothing is specified.  The /spool/news/pointer file is also updated with the path to the directory which will contain the articles. Articles will be stored as separate files, named by an integer corresponding to their arrival order.

The NNTPS software includes a mail-to-news feature, such that email with a To: address that begins with “!” is passed to the NNTPS module.  The remainder of the To: address is interpreted as a newsgroup name, with the name truncated at the first occurrence of one of “%@.,/”, and with “!” translated to “.” and “+” to “,”. An alias is usually used to provide this special name. For example, to route all NLD bulletins to both the NLD area, and the NG.NLD newsgroup, use the alias:

#News groups
nld     nld     !ng!nld

My alias file looks like this
nld     nld     !ng!nld
bpq     bpq     !ng!bpq
7plus   7plus   !ng!7plus
ww      ww      !ng!ww
eu      eu      !ng!eu
aprs    aprs    !ng!aprs
local   local   !ng!local
prop    prop    !ng!prop

The NNTPS software includes a news-to-mail feature, such that news articles can be emailed to local or remote destinations after they are processed by nntp. This would allow, for example, emailing to a public area, so that BBS users too could read news articles. JNOS must be compiled with NNTPS and NEWS_TO_MAIL #define’d and a file /spool/news/gateway must exist to define the mapping from a newsgroup to an SMTP To: address. Each non-comment line in the gateway file must begin with a newsgroup name (starnames OK), followed by spaces or tabs, followed by the email To: address.

ng.nld  aprs@nld
ng.nld  prop@nld
ng.nld  all@nld
ng.nld  7plus@nld
ng.7plus        all@7plus
ng.ww   all@ww
ng.eu   all@eu
ng.local        all@local
ng.bpq  all@bpq

Expire time of bulletins or newsgroup messages.

# bulletins received from AX25 network
nld 90
bpq 60
7plus 30
eu 30
check 45
ww 30
!ng.nld 90
!ng.bpq 60
!ng.7plus 30
!ng.check 30
!ng.eu 30
!ng.prop 30
!ng.ww 30

I’m using Thunderbird to read and post messages as bulletin and newsgroup mail.


Fri Feb 21 20:22:46 2020 queue job 2333 To: !ng!local From: pd9q@jnos.packet-radio.nl
Fri Feb 21 20:22:46 2020 queue job 2333 To: local From: pd9q@jnos.packet-radio.nl
Fri Feb 21 20:26:50 2020 deliver Msg-Id: 2335@jnos.packet-radio.nl To: local From: pd9q@jnos.packet-radio.nl Subject: Test ng.local
Received: by jnos.packet-radio.nl with NNTP
        id AA2332 ; Fri, 21 Feb 2020 20:22:46 CET
Newsgroups: ng.local
From: Niels PD9Q <pd9q@jnos.packet-radio.nl
Subject: Test ng.local
Message-ID: <2331@jnos.packet-radio.nl>
Date: Fri, 21 Feb 2020 20:22:41 +0100
Errors-To:  sysop
To: all@local

Test the ng.local newsgroup.
Newsgroups: ng.local
X-Mozilla-News-Host: news://
From: Niels PD9Q <pd9q@jnos.packet-radio.nl>
Path: jnos.packet-radio.nl!not-for-mail
Subject: Test ng.local
Message-ID: <2331@jnos.packet-radio.nl>
Date: Fri, 21 Feb 2020 20:22:41 +0100
User-Agent: Thunderbird/60.9.1
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: nl
Content-Transfer-Encoding: 7bit
Lines: 1

Test the ng.local newsgroup.
Path: jnos.packet-radio.nl!NNTP_GATE@jnos.packet-radio.nl!jnos
From: pd9q@jnos.packet-radio.nl
Newsgroups: ng.local
Subject: Test all@local
Message-ID: <c00aaec4-9b7f-b803-b9cd-adc1941ba8b9@jnos.packet-radio.nl>
Sender: NNTP@jnos.packet-radio.nl
Comments: Article created from mail
X-Mozilla-News-Host: news://
To: all@local
Date: Fri, 21 Feb 2020 20:53:28 +0100
User-Agent: Thunderbird/60.9.1
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: nl
Content-Transfer-Encoding: 7bit

Test all@local bulletin

73 Niels

That’s look pretty cool, isn’t it?


Jnos colors are back

For the Raspberry Pi users among us, Maiko has found a solution for the Colors in Jnos and the NNTP server and probably even more stability issues.
For a long time we had to miss the colors, but I immediately imagine myself back in the 90s.

The Solution…..

JNOS is doing strange things on PI platforms. Because gcc in the ARM processors are forcing CHAR variables to be UNSIGNED, not SIGNED!

Until I find a better solution (long term), you must add :


to the CFLAGS in the makefile.

make clean

Thank you Maiko….

Start Jnos with Systemd

# Starting Jnos at boot, and restart when fail
# Jnos is running in the background

cd /lib/systemd/system
sudo nano jnos.service

Add to the file

Description=Jnos Daemon

ExecStart=/bin/bash /home/pd9q/jnos/startnos



sudo systemctl enable jnos.service


# Jnos start file
cd /home/pd9q/jnos
sleep 2
rm -f /home/pd9q/jnos/spool/mqueue/*.lck 2> /dev/null
rm -f /home/pd9q/jnos/jnos/spool/mail/*.lck 2> /dev/null
sleep 1
TZ='Europe/Amsterdam'; export TZ
export TERM=linux
exec ./jnos2.0m.1rc -C -wf+b -u3 -fnos.cfg -i  </dev/tty2>/dev/tty2 2>&1

sudo apt-get install conspy
sudo conspy 2

And there is jnos….. Hit a couple off times [esc] to exit conspy

sudo systemctl status jnos

pd9q@packet-jnos:~/jnos/logs $ sudo systemctl status jnos
● jnos.service - Jnos Daemon
Loaded: loaded (/lib/systemd/system/jnos.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-02-08 07:36:44 CET; 6h ago
Main PID: 525 (jnos2.0m.1rc)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/jnos.service
└─525 ./jnos2.0m.1rc -C -wf b -u3 -fnos.cfg -i

Feb 08 07:36:44 packet-jnos systemd[1]: Started Jnos Daemon.
pd9q@packet-jnos:~/jnos/logs $



Maiko has been busy again to make some adjustments in Jnos. A friend of mine had asked if it was possible to save a Most Heard list. A few days later it was already done. Fantastic. It is also possible to leave the file ftpusers and use hashed passwords.

Read change.2.0m.1.txt for al the new options.

Jnos Download

Save and Load ax25 Heard List

 The ax25 heard list can now be saved to a file or loaded (restored) from a file.

 Decided to also revamp the 'ax heard' command at the JNOS console, since there are
 now several commands available, all of which really should be categorized as being
 subcommands of 'ax heard' - so with this update, the new syntax is as follows :

     Usage : ax heard < show | dest > [<iface>]
             ax heard < save | load >

 The 'dest' and 'hearddest' commands are gone, absorbed by the above syntax.

 The heard data is kept in a new 'AxHeardFile' in the JNOS root directory.

 There are two files to update (ax25cmd.c and axheard.c), they have been added
 to the patch file noted further down (under the Password Management section),
 so if you're not interested in the password code, just extract the 2 files.

 Add '#define BACKUP_AXHEARD' to your config.h, then :

    rm ax25cmd.o axheard.o ; make


Write to Jnos UDP port.

I was reading in the release notes of NOSAprs and found something to play with.

Release 1.15b5 (patch)

  • June 24, 2003
  •  DID YOU KNOW – You can send aprs data to NOSaprs using UDP port 16161, and it will go out the APRS rf port. It’s actually been like that for quite some time.

This are two ways to write data to the udp port 16161

exec 3<>/dev/udp/
echo -e "writing to udp port 16161 Jnos" >&3
exec 3>&-

Sun Dec 22 20:59:52 2019 – ax0 sent:
KISS: Port 0 Data
AX25: PD9Q-10->APZ200 v WIDE1-1 UI pid=Text
0000 …writing to udp port 16161 Jnos…

echo -n “$ver” | nc -4u -w1 16161

Sun Dec 22 20:59:56 2019 – ax0 sent:
KISS: Port 0 Data
AX25: PD9Q-10->APZ200 v WIDE1-1 UI pid=Text
0000 … 20:59:56 up 6:03, 2 users, load average: 0.16, 0.17, 0.17…

Nice let`s think about that

Jnos 2.0m run as NON-Root user

From version 2.0m it is possible to run Jnos as a NON-Root user.

The changelog from the website of Maiko.

a) create a new JNOS user and group


  b) change ownership of the entire JNOS runtime area

       chown -R jnos:jnos /jnos/rte

  c) as root user, configure a tunN interface, and just leave it there forever.

       ip tuntap add mode tun dev tun4

       ifconfig tun4 pointopoint mtu 1500 up

     WARNING : make sure you pick a number N that does not conflict with any
               other tun interfaces that might be running - OpenVPN comes to
               mind for example, some VM subsystems might use tun as well ?

   d) modify autoexec.nos, add an extra parameter to the 'attach tun' entry,
      and make sure to comment out the point to point ifconfig.

      So what was previously run as root, for example, below :

       attach tun tun0 1500 0

       shell ifconfig tun0 pointopoint mtu 1500 up

      will now just become a one line entry, below :

       attach tun tun0 1500 0 tun4

I have add some of the stuff in my /etc/rc.local file.

# Jnos
sysctl -w net.ipv4.ip_forward=1
ip tuntap add mode tun dev tun4
ifconfig tun4 pointopoint mtu 1500 up

# Put a "Proxy ARP" on the Linux Ethernet so that it can answer any
# querries for the JNOS addres
/usr/sbin/arp -i eth0 -Ds eth0 pub

This is what i have in the autoexec.nos

attach tun tun0 1500 0 tun4
ifconfig tun0 ipaddress
ifconfig tun0 netmask 0xfffffffc
ifconfig tun0 mtu 1500

Now you can run Jnos as a “normal” user.

Direwolf and Jnos (review)

In the previous post about Direwolf and jnos i use Direwolf-1.3 and does not know about the SERIALKISS port.
John WQ6N point it out to me… Tnx John WQ6N. Nice one.
Read the previous post.
So maybe I wrote that script for nothing. This is working pretty simple 🙂

In Direwolf 1.5-beta is it possible to use SERIALKISS to connect com to com.
I have try to use a PTY pair created with socat.

# Create pty pair
socat -d -d -ly PTY,link=/dev/ttyq1 PTY,link=/dev/ptyq1 &
sleep 2
# Start Direwolf
direwolf -d kn -c /direwolf/direwolf.conf &> /var/log/direwolf.log >/dev/tty3 &
sleep 2

SERIALKISS  /dev/ttyq1 19200

# Jnos autoexec.nos
attach asy ptyq1 - ax25 ax0 4096 256 19200

Fireup Jnos
./jnos -C -g2 -u3 -f nos.cfg -i

I use conspy to look at the output of Direwolf. apt-get install conspy
Use it just like this “conspy 3” The number 3 stands for the tty were Direwolf is running on /dev/tty3.
Hit the escape button a couple of times to exit.

Here is the output of Direwolf

>>> Data frame to KISS client application, port 0, total length = 82
  000:  c0 00 92 88 40 40 40 40 e0 9c 98 70 b4 b4 8a 60  ....@@@@...p...`
  010:  ae 92 88 8a 62 40 63 03 f0 43 6f 6e 6e 65 63 74  ....b@c..Connect
  020:  20 4e 4c 36 5a 5a 45 20 66 6f 72 20 74 68 65 20   PD2LT-6 for the
  030:  4a 4e 4f 53 20 43 6f 6e 76 65 72 73 20 28 6c 69  JNOS Convers (li
  040:  6e 6b 65 64 20 77 69 74 68 20 6f 74 68 65 72 73  nked with others
  050:  29 c0

Ok that is working quit well.
I start Direwolf with the option “-d kn” So you can look at the kiss communication between Direwolf and Jnos.

Some text out of the User-Guide.pdf.
“Up to 3 concurrent TCP KISS client applications are allowed at the same time.
You can raise this limit by increasing the value of MAX_NET_CLIENTS, in source file kissnet.c and recompiling.”

Whoooo thats nice up to 3 (and more) applications can connect to Direwolf on the KISSPORT.
And there is also the AGW and the SERIALKISS port. Men where do I start.

John WQ6N

John WQ6N has found something that is useful. He use a Legacy BSD pseudo pair.
There are no Legacy BSD pseudo pairs in Linux any more. But it is possible to create some.

Change line from:
(Where 10 is the number of pty legacy devices you require.)
This created 10 ptypX/ttypX terminal pairs.

After editing the grub file run the command “update-grub” and reboot.

So now it`s time to set Direwolf and Jnos to use the pty Legacy devices.

The Direwolf SERIALKISS 
SERIALKISS /dev/ptyp0 19200

The associated JNOS2 attach line:
attach asy ttyp0 - ax25 hfgw 4096 256 19200