Linux-ax25.org git repositories.
Source link
http://git.linux-ax25.org/cgit
Packet-radio A Way Of Life
Please use the latest version, this prevents irritation and annoying things that you do not understand.
Ax25-Apps
-rw-r–r– 1 pd9q pd9q 185677 Mar 8 14:25 ax25-apps-0.0.1.tar.gz
-rw-r–r– 1 pd9q pd9q 196284 Mar 8 14:25 ax25-apps-0.0.2.tar.gz
-rw-r–r– 1 pd9q pd9q 197901 Mar 8 14:25 ax25-apps-0.0.3.tar.gz
-rw-r–r– 1 pd9q pd9q 198064 Mar 8 14:25 ax25-apps-0.0.4.tar.gz
-rw-r–r– 1 pd9q pd9q 207347 Mar 8 14:25 ax25-apps-0.0.5p2.tar.gz
-rw-r–r– 1 pd9q pd9q 207624 Mar 8 14:25 ax25-apps-0.0.5.tar.gz
-rw-r–r– 1 pd9q pd9q 273846 Mar 8 14:25 ax25-apps-0.0.6.tar.gz
-rw-r–r– 1 pd9q pd9q 462058 Mar 8 14:25 ax25-apps-0.0.8-rc1.tar.gz
-rw-r–r– 1 pd9q pd9q 430456 Mar 8 14:25 ax25-apps-0.0.8-rc2.tar.gz
-rw-r–r– 1 pd9q pd9q 469313 Mar 8 14:25 ax25-apps-0.0.8-rc3.tar.gz
-rw-r–r– 1 pd9q pd9q 442172 Mar 8 14:25 ax25-apps-0.0.8-rc4.tar.gz
-rw-r–r– 1 pd9q pd9q 479590 Mar 8 14:25 ax25-apps-0.0.8-rc5.tar.gz
Ax25-Tools
-rw-r–r– 1 pd9q pd9q 515474 Mar 8 14:25 ax25-tools-0.0.10-rc1.tar.gz
-rw-r–r– 1 pd9q pd9q 381575 Mar 8 14:25 ax25-tools-0.0.10-rc2.tar.gz
-rw-r–r– 1 pd9q pd9q 370079 Mar 8 14:25 ax25-tools-0.0.10-rc3.tar.gz
-rw-r–r– 1 pd9q pd9q 364332 Mar 8 14:25 ax25-tools-0.0.10-rc4.tar.gz
-rw-r–r– 1 pd9q pd9q 372851 Mar 8 14:25 ax25-tools-0.0.10-rc5.tar.gz
-rw-r–r– 1 pd9q pd9q 162320 Mar 8 14:25 ax25-tools-0.0.1.tar.gz
-rw-r–r– 1 pd9q pd9q 176989 Mar 8 14:25 ax25-tools-0.0.2.tar.gz
-rw-r–r– 1 pd9q pd9q 234032 Mar 8 14:25 ax25-tools-0.0.3.tar.gz
-rw-r–r– 1 pd9q pd9q 230243 Mar 8 14:25 ax25-tools-0.0.4.tar.gz
-rw-r–r– 1 pd9q pd9q 230243 Mar 8 14:25 ax25-tools-0.0.5.tar.gz
-rw-r–r– 1 pd9q pd9q 251941 Mar 8 14:25 ax25-tools-0.0.6.tar.gz
-rw-r–r– 1 pd9q pd9q 254019 Mar 8 14:25 ax25-tools-0.0.8.tar.gz
Libax25
-rw-r–r– 1 pd9q pd9q 103151 Mar 8 14:25 ax25-lib-0.0.1.tar.gz
-rw-r–r– 1 pd9q pd9q 122941 Mar 8 14:25 ax25-lib-0.0.2.tar.gz
-rw-r–r– 1 pd9q pd9q 123970 Mar 8 14:25 ax25-lib-0.0.3.tar.gz
-rw-r–r– 1 pd9q pd9q 143265 Mar 8 14:25 libax25-0.0.10.tar.gz
-rw-r–r– 1 pd9q pd9q 231325 Mar 8 14:25 libax25-0.0.11.tar.gz
-rw-r–r– 1 pd9q pd9q 361613 Mar 8 14:25 libax25-0.0.12-rc1.tar.gz
-rw-r–r– 1 pd9q pd9q 332178 Mar 8 14:25 libax25-0.0.12-rc2.tar.gz
-rw-r–r– 1 pd9q pd9q 359045 Mar 8 14:25 libax25-0.0.12-rc3.tar.gz
-rw-r–r– 1 pd9q pd9q 335535 Mar 8 14:25 libax25-0.0.12-rc4.tar.gz
-rw-r–r– 1 pd9q pd9q 360123 Mar 8 14:25 libax25-0.0.12-rc5.tar.gz
-rw-r–r– 1 pd9q pd9q 122442 Mar 8 14:25 libax25-0.0.4.tar.gz
-rw-r–r– 1 pd9q pd9q 129510 Mar 8 14:25 libax25-0.0.5.tar.gz
-rw-r–r– 1 pd9q pd9q 130198 Mar 8 14:25 libax25-0.0.6.tar.gz
-rw-r–r– 1 pd9q pd9q 131177 Mar 8 14:25 libax25-0.0.7.tar.gz
-rw-r–r– 1 pd9q pd9q 264673 Mar 8 14:25 libax25-0.0.9.tar.gz
Ax25-Utils
-rw-r–r– 1 pd9q pd9q 282655 Mar 8 14:25 ax25-utils-1.3.30.tar.gz
-rw-r–r– 1 pd9q pd9q 155821 Mar 8 14:25 ax25-utils-1.3.80.tar.gz
-rw-r–r– 1 pd9q pd9q 246854 Mar 8 14:25 ax25-utils-2.0.12c.tar.gz
-rw-r–r– 1 pd9q pd9q 204439 Mar 8 14:25 ax25-utils-2.0.12.tar.gz
-rw-r–r– 1 pd9q pd9q 359082 Mar 8 14:25 ax25-utils-2.1.22b.tar.gz
-rw-r–r– 1 pd9q pd9q 346153 Mar 8 14:25 ax25-utils-2.1.42a.tar.gz
-rw-r–r– 1 pd9q pd9q 344332 Mar 8 14:25 ax25-utils-2.1.42.tar.gz
-rw-r–r– 1 pd9q pd9q 21657 Mar 8 14:25 ax25utils.tar.gz
It can be easy to link an ax25 interface to Direwolf. This makes it possible to use RMSGateway, Uronode etc with Direwolf.
In this script Direwolf is started with the -p option. With the -p option a virtual tnc is created. /tmp/kisstnc.
With mkiss a kiss connection is made on the /tmp/kisstnc. With kissattach the PTY is connected to the ax25 interface.
Fist edit the file axports in /etc/ax25
pd9q@pd9q:/etc/ax25 $ cat axports # /etc/ax25/axports # name callsign speed paclen window description # ax0 PI1LAP-9 19200 255 7 RMSGateway pi1lap-10
Config the direwolf.conf file to set the right audio device and ptt port. Save file to /etc/ax25/direwolf.conf
ADEVICE plughw:1,0 ACHANNELS 1 CHANNEL 0 MODEM 300 2130:2230 D PTT GPIO 21 DWAIT 0 SLOTTIME 12 PERSIST 63 TXDELAY 40 TXTAIL 10 FIX_BITS 1 AX25 LOGDIR /var/log/direwolf
Run the script
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/bin:/usr/bin:/etc/ax25:/usr/local/ax25 echo "Starting direwolf" direwolf -t 0 -c /etc/ax25/direwolf.conf -p & #Check if Direwolf is running sleep 5 if [ -z "`ps ax | grep -v grep | grep direwolf`" ]; then echo -e "\nERROR: Direwolf did not start properly and is not running, please review direwolf.conf" exit 1 fi echo "Installing one KISS connection on PTY port /tmp/kisstnc" mkiss -s 19200 -x 1 /tmp/kisstnc > /tmp/unix98 #This creates a PTS interface like "/dev/pts/3" export PTS0=`more /tmp/unix98 | grep -w /dev | cut -b -11` echo "PTS0 device: $PTS0" kissattach $PTS0 ax0 > /tmp/ax25-config.tmp awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config1-tmp read Device < /tmp/ax25-config1-tmp
Let’s check if everything went well.
pd9q@pd9q:~ $ ps ax 1015 ? Ss 0:00 mkiss -s 19200 -x 1 /tmp/kisstnc 1025 ? Ss 0:00 kissattach /dev/pts/2 ax0
Try it out…
pd9q@pd9q:~ $ call ax0 pd9q-2 GW4PTS AX.25 Connect 2.0.0 Trying... *** Connected to pd9q-2 *** Cleared
Now it’s possible to setup RMSGateway or Uronode of whatever you want.
Here is an ax25 script that I use to control the Dual port KPC-9612 with mkiss and kissattach.
# Dual port TNC KPC-9612 mkiss -s 9600 -x 2 /dev/ttyUSB1 > /tmp/unix98 export PTS0=`more /tmp/unix98 | grep -w /dev | cut -b -11` export PTS1=`more /tmp/unix98 | grep -w /dev | cut -b 12-` sleep 1 # Port 1k2 144.850Mhz echo "Starting ax0 " if grep ax0 /etc/ax25/axports ; then kissattach $PTS0 ax0 || return=$rc_failed ifconfig ax0 44.137.31.73 netmask 255.255.255.224 sleep 2 else echo "Error ax0 not found in the file axports" return="Failed" fi echo "$1 $return" # Port 9k6 430.950Mhz echo "Starting ax1 " if grep ax1 /etc/ax25/axports ; then kissattach $PTS1 ax1 || return=$rc_failed ifconfig ax1 44.137.31.73 netmask 255.255.255.224 sleep 2 else echo "Error ax1 not found in the file axports" return="Failed" fi echo "$1 $return"
I have update the start script for pi1lap/pi8lap. I have add start/stop/restart/status in it.
The disadvantage of this script is if you for example make an adjustment in axport you have to stop and restart the whole system. Maybe divide into smaller parts.
Ok lets check the status.
root@linux:/etc/ax25# ./ax-start status Checking for fbb daemon: No, fbb is down :( Checking for ax25d daemon: No, ax25d is down :( Checking for netromd daemon: No, netromd is down :( Checking for ax25rtd daemon: No, ax25rtd is down :( Checking for flexd daemon: No, flexd is down :( Checking for mheardd daemon: No, mheardd is down :( Checking for ax25ipd daemon: No, ax25ipd is down :( Checking for ax25udp daemon: No, ax25udp is down :( Checking for linuxnet node: No, linuxnet node is down :( Checking for jnos bbs: No, jnos is down :( Checking for kissattach: No, kissattach is down :( Checking for slattach: No, slattach is down :( Checking for kissnetd: No, kissnetd is down :( Checking for mkiss: No, mkiss is down :( Checking for socat: No, socat is down :( Checking for rstatrxd: No, rstatrxd is down :( root@linux:/etc/ax25#
Now let start the system.
root@linux:/etc/ax25# ./ax-start start Starting ax0 ax0 PI1LAP-1 9600 128 4 144.850Mhz 1k2 AX.25 port ax0 bound to device ax0 start Done Starting ax1 ax1 PI1LAP-2 9600 128 4 430.950Mhz 9k6 AX.25 port ax1 bound to device ax1 start Done Starting ax2 ax2 PI1LAP-3 19200 128 4 Link local BBS pi8lap AX.25 port ax2 bound to device ax2 start Done Starting ax3 ax3 PI1LAP-6 19200 128 4 Link local Dx pi1lap-4 AX.25 port ax3 bound to device ax3 start Done Starting ax4 ax4 PI1LAP-8 19200 256 2 AX25/udp via pi1lap-8 AX.25 port ax4 bound to device ax4 start Done Starting ax5 ax5 PI1LAP-9 19200 256 2 AX25/ip via pi1lap-9 AX.25 port ax5 bound to device ax5 start Done Starting ax6 ax6 PD9Q-7 19200 256 2 Link local Jnos p9q AX.25 port ax6 bound to device ax6 start Done Starting rose0 rose0 2040330113 ROSE port 330113 Rose port rose0 bound to device rose0 start Done Starting nr0 nr0 PI1LAP-5 LAPURO 236 Uronode PI1LAP-15 NET/ROM port nr0 bound to device nr0 start Done Starting nr1 nr1 PI8LAP LAPBBS 236 Fbb BBS PI8LAP NET/ROM port nr1 bound to device nr1 start Done Starting nr2 nr2 PI1LAP-4 LAPDX 236 DxSpider PI1LAP-4 NET/ROM port nr2 bound to device nr2 start Done Starting nr3 nr3 PI1LAP-7 LAPPAC 236 FPAC node PI1LAP-7 NET/ROM port nr3 bound to device nr3 start Done Starting ax25d daemon start Done Starting mheardd daemon start Done Starting ax25rtd daemon start Done Starting flexd daemon FlexD started. start Done Starting netromd daemon start Done Starting FBB daemon Checking fbb tree.... Ok Checking fbb configuration : FBB options : -s -a Running XFBB in background mode ^C to abort Starting XFBB (pwd = /usr/local/var/ax25/fbb)...
Now look at the status
root@linux:/etc/ax25# ./ax-start status Checking for fbb daemon: Yes, fbb is up :) Checking for ax25d daemon: Yes, ax25d is up :) Checking for netromd daemon: Yes, netromd is up :) Checking for ax25rtd daemon: Yes, ax25rtd is up :) Checking for flexd daemon: Yes, flexd is up :) Checking for mheardd daemon: Yes, mheardd is up :) Checking for ax25ipd daemon: Yes, ax25ipd is up :) Checking for ax25udp daemon: Yes, ax25udp is up :) Checking for linuxnet node: Yes, linuxnet is up :) Checking for jnos bbs: Yes, jnos is up :) Checking for kissattach: Yes, kissattach is up :) Checking for slattach: Yes, slattach is up :) Checking for kissnetd: Yes, kissnetd is up :) Checking for mkiss: No, mkiss is down :( Checking for socat: Yes, socat is up :) Checking for rstatrxd: Yes, rstatrxd is up :)
Here you see that “mkiss” is down. That is because I do not use “mkiss” at the moment.
Ok, now we will stop the system
root@linux:/etc/ax25# ./ax-start stop Shutting down jnos bbs Shutting down FBB script Shutting down FBB daemon Shutting down mheardd daemon Shutting down netromd daemon Shutting down ax25d daemon Shutting down ax25ipd daemon Shutting down ax25upd daemon Shutting down rstatrxd daemon Shutting down ax25rtd daemon Shutting down mkiss daemon mkiss: no process found Shutting down kissattach daemon Shutting down kissnetd daemon Shutting down slattach daemon Shutting down socat daemon Shutting down beacon daemon Shutting down flexd daemon Shutting down netrom ports Shutting down ax ports Shutting down rose ports stop Failed
Here you see that stopping has failed, this is because “mkiss” can not be stopped.
Here is the start script
#!/bin/bash # Start AX25/Netrom networking daemons. # Script written and modified by Niels pd9q # Date of last modification: 11-14-2018 ### BEGIN INIT INFO # Provides: ax25 # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: AX25 server ### END INIT INFO # Add some color green='\e[0;32m' red='\e[0;31m' reset='\e[0m' set +e # Don't exit on error status PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/xnet:/usr/local/etc/ax25:/home/pd2lt/jnos DESC="AX25 server" ENABLED=1 base=${0##*/} link=${base#*[SK][0-9][0-9]} test $link = $base && AX_START=yes test "$AX_START" = yes || exit 0 test -x /usr/local/etc/ax25/ax-start || exit 0 return="Done" case "$1" in start) modprobe mkiss modprobe ax25 modprobe netrom modprobe rose # Dual port TNC KPC-9612 #mkiss -s 9600 -x 2 /dev/ttyUSB0 > /tmp/unix98 #export PTS0=`more /tmp/unix98 | grep -w /dev | cut -b -11` #export PTS1=`more /tmp/unix98 | grep -w /dev | cut -b 12-` #sleep 1 # Port 1k2 144.850Mhz echo "Starting ax0 " if grep ax0 /etc/ax25/axports ; then kissattach /dev/ttyUSB0 ax0 || return=$rc_failed ifconfig ax0 44.137.31.73 netmask 255.255.255.224 sleep 2 else echo "Error ax0 not found in the file axports" return="Failed" fi echo "$1 $return" # Port 9k6 430.950Mhz echo "Starting ax1 " if grep ax1 /etc/ax25/axports ; then kissattach /dev/ttyUSB1 ax1 || return=$rc_failed ifconfig ax1 44.137.31.73 netmask 255.255.255.224 sleep 2 else echo "Error ax1 not found in the file axports" return="Failed" fi echo "$1 $return" # link local pi8lap (xnet) echo "Starting ax2 " if grep ax2 /etc/ax25/axports ; then tmpfile="/tmp/$$.startax2.pts" kissnetd -p 2 > "$tmpfile" & sleep 2 attachthem () { read PTS1 PTS2 kissattach -l $PTS1 ax2 44.137.31.73 || return=$rc_failed ifconfig ax2 44.137.31.73 netmask 255.255.255.224 up sleep 1 sed -i "s,attach sdev3 kiss 3 1 19200 /dev/.*$,attach sdev3 kiss 3 1 19200 $PTS2," /usr/local/xnet/AUTOBOOT.NET } tail -n 1 $tmpfile | attachthem rm $tmpfile sleep 3 else echo "Error ax2 not found in the file axports" return="Failed" fi echo "$1 $return" # Link local pi1lap-4 (xnet) echo "Starting ax3 " if grep ax3 /etc/ax25/axports ; then tmpfile="/tmp/$$.startax3.pts" kissnetd -p 2 > "$tmpfile" & sleep 2 attachthem () { read PTS1 PTS2 kissattach -l $PTS1 ax3 44.137.31.73 || return=$rc_failed ifconfig ax3 44.137.31.73 netmask 255.255.255.224 up sleep 1 sed -i "s,attach sdev4 kiss 4 1 19200 /dev/.*$,attach sdev4 kiss 4 1 19200 $PTS2," /usr/local/xnet/AUTOBOOT.NET } tail -n 1 $tmpfile | attachthem rm $tmpfile sleep 3 else echo "Error ax3 not found in the file axports" return="Failed" fi echo "$1 $return" # create slip link Linux <-> Xnet socat -d -d -ly PTY,link=/dev/ttyq1 PTY,link=/dev/ptyq1 & sleep 2 slattach -s 38400 -p slip /dev/ptyq1 & sleep 1 ifconfig sl0 44.137.31.69 netmask 255.255.255.255 pointopoint 44.137.31.70 mtu 236 up sleep 1 # create axudp device socat -d -d -ly PTY,link=/dev/ttyq2 PTY,link=/dev/ptyq2 & sleep 2 echo "Starting ax4 " if grep ax4 /etc/ax25/axports ; then kissattach -m 256 /dev/ptyq2 ax4 44.137.31.73 || return=$rc_failed ax25udp -c /etc/ax25/ax25ipd-10093.conf > /tmp/axudp ifconfig ax4 44.137.31.73 netmask 255.255.255.224 up sleep 1 else echo "Error ax4 not found in the file axports" return="Failed" fi echo "$1 $return" # create axip device socat -d -d -ly PTY,link=/dev/ttyq3 PTY,link=/dev/ptyq3 & sleep 2 echo "Starting ax5 " if grep ax5 /etc/ax25/axports ; then kissattach -m 256 /dev/ptyq3 ax5 44.137.31.73 || return=$rc_failed ax25ipd -c /etc/ax25/ax25ipd-axip.conf > /tmp/axip ifconfig ax5 44.137.31.73 netmask 255.255.255.224 up sleep 1 else echo "Error ax5 not found in the file axports" return="Failed" fi echo "$1 $return" # create socat device (jnos-uro) socat -d -d -ly PTY,link=/dev/ttyq4 PTY,link=/dev/ptyq4 & sleep 2 echo "Starting ax6 " if grep ax6 /etc/ax25/axports ; then kissattach -m 256 /dev/ptyq4 ax6 44.137.31.73 || return=$rc_failed ifconfig ax6 44.137.31.73 netmask 255.255.255.224 up sleep 1 else echo "Error ax6 not found in the file axports" return="Failed" fi echo "$1 $return" # attach rose port echo "Starting rose0 " if grep rose0 /etc/ax25/rsports ; then rsattach rose0 || return=$rc_failed ifconfig rose0 44.137.31.73 netmask 255.255.255.224 rsparms -call PI1LAP-10 else echo "Error rose0 not found in the file rsports" return="Failed" fi echo "$1 $return" # MFnos running in DOSEmu # Set the comport in de file /etc/dosemu/dosemu.comf $_com1 = "dev/ttyq5" #socat -d -d -ly PTY,link=/dev/ttyq5 PTY,link=/dev/ptyq5 & # slattach -n -q -p slip -s 38400 /dev/ptyq5 & #sleep 2 # KISS inteface for MFnos / slip # kissattach /dev/ptyq5 ax6 44.137.31.73 # kissparms -p ax6 -c 1 -f y -t 10 -s 100 -r 255 # axparms -setcall ax6 pi1lap-10 # # ifconfig ax3 44.88.0.9 netmask 255.255.255.224 up #sleep 2 # create nr0 device (lapuro/pi1lap-5) uronode echo "Starting nr0 " if grep nr0 /etc/ax25/nrports ; then ifconfig nr0 down nrattach -i 44.137.31.73 -m 512 nr0 || return=$rc_failed ifconfig nr0 44.137.31.73 netmask 255.255.255.224 hw netrom PI1LAP-5 up else echo "Error nr0 not found in the file nrports" return="Failed" fi echo "$1 $return" # create nr1 device (lapbbs/pi8lap) f6fbb echo "Starting nr1 " if grep nr1 /etc/ax25/nrports ; then ifconfig nr1 down nrattach -i 44.137.31.73 -m 512 nr1 || return=$rc_failed ifconfig nr1 44.137.31.73 netmask 255.255.255.224 hw netrom PI8LAP up else echo "Error nr1 not found in the file nrports" return="Failed" fi echo "$1 $return" # create nr2 device (lapdx/pi1lap-4) dxspider echo "Starting nr2 " if grep nr2 /etc/ax25/nrports ; then ifconfig nr2 down nrattach -i 44.137.31.73 -m 512 nr2 || return=$rc_failed ifconfig nr2 44.137.31.73 netmask 255.255.255.224 hw netrom PI1LAP-4 up else echo "Error nr2 not found in the file nrports" return="Failed" fi echo "$1 $return" # create nr3 device (lappac/pi1lap-7) fpac echo "Starting nr3 " if grep nr3 /etc/ax25/nrports ; then ifconfig nr3 down nrattach -i 44.137.31.73 -m 512 nr3 || return=$rc_failed ifconfig nr3 44.137.31.73 netmask 255.255.255.224 hw netrom PI1LAP-7 up else echo "Error nr3 not found in the file nrports" return="Failed" fi echo "$1 $return" # start xnet cd /usr/local/xnet rm *.CFG &> /dev/null sleep 2 ./linuxnet < /dev/tty2 > /dev/tty2 2>&1 & ./rstatrxd /var/www/cgi-bin/postat/ &> /dev/null & sleep 2 # start jnos cd /home/pd9q/jnos ./startnos </dev/tty3>/dev/tty3 2>&1 & sleep 3 # route # Xnet route ip route add 44.137.31.70 dev sl0 table 44 src 44.137.31.69 # Mfnos route to 192.168.1.110 #route add 44.137.31.75 gw 192.168.1.112 # beacons beacon -c PI1LAP-15 -t 10 -d ID ax0 "Network node PI1LAP-15 Zeeland, JO11VN" & beacon -c PI1LAP-15 -t 10 -d ID ax1 "Network node PI1LAP-15 Zeeland, JO11VN" & beacon -c PI1LAP-15 -t 10 -d ID ax2 "Network node PI1LAP-15 Zeeland, JO11VN" & beacon -c PI1LAP-15 -t 10 -d ID ax3 "Network node PI1LAP-15 Zeeland, JO11VN" & # start ax25 deamons echo "Starting ax25d daemon " if [ -f /usr/local/etc/ax25/ax25d.conf ] ; then /usr/local/sbin/ax25d || return=$rc_failed else echo "/usr/local/etc/ax25/ax25d.conf file not found" return="Failed" fi echo "$1 $return" echo "Starting mheardd daemon " /usr/local/sbin/mheardd echo "$1 $return" echo "Starting ax25rtd daemon " if [ -f /usr/local/etc/ax25/ax25rtd.conf ] ; then /usr/local/sbin/ax25rtd || return=$rc_failed else echo "/usr/local/etc/ax25/ax25rtd.conf file not found" return="Failed" fi echo "$1 $return" echo "Starting flexd daemon " if [ -f /usr/local/etc/ax25/flexd.conf ] ; then /usr/local/sbin/flexd || return=$rc_failed else echo "/usr/local/etc/ax25/flexd.conf file not found" return="Failed" fi echo "$1 $return" echo "Starting netromd daemon " if [ -f /usr/local/etc/ax25/nrports ] ; then /usr/local/sbin/netromd -c -i -p 1 -t 15 || return=$rc_failed else echo "/usr/local/etc/ax25/nrports file not found" return="Failed" fi echo "$1 $return" echo "Starting FBB daemon " if [ -f /usr/local/etc/ax25/fbb/fbb.conf ] ; then /usr/local/sbin/fbb -s -a -l /etc/ax25/fbb.log || return=$rc_failed else echo "/usr/local/etc/ax25/fbb/fbb.conf file not found" return="Failed" fi echo "$1 $return" ;; stop) kill $(ps aux | grep '[l]inuxnet' | awk '{print $2}') echo "Shutting down jnos bbs" killall -KILL jnos || return="Failed" echo "Shutting down FBB script" killall -KILL fbb || return="Failed" echo "Shutting down FBB daemon" killall -KILL xfbbd || return="Failed" echo "Shutting down mheardd daemon" killall -KILL mheardd || return="Failed" echo "Shutting down netromd daemon" killall -KILL netromd || return="Failed" echo "Shutting down ax25d daemon" killall -KILL ax25d || return="Failed" echo "Shutting down ax25ipd daemon" killall -KILL ax25ipd || return="Failed" echo "Shutting down ax25upd daemon" killall -KILL ax25udp || return="Failed" echo "Shutting down rstatrxd daemon" killall -KILL rstatrxd || return="Failed" echo "Shutting down ax25rtd daemon" killall -KILL ax25rtd || return="Failed" echo "Shutting down mkiss daemon" killall -KILL mkiss || return="Failed" echo "Shutting down kissattach daemon" killall -KILL kissattach || return="Failed" echo "Shutting down kissnetd daemon" killall -KILL kissnetd || return="Failed" echo "Shutting down slattach daemon" killall -KILL slattach || return="Failed" echo "Shutting down socat daemon" killall -KILL socat || return="Failed" echo "Shutting down beacon daemon" killall -KILL beacon || return="Failed" echo "Shutting down flexd daemon" killall -KILL flexd || return="Failed" echo "Shutting down netrom ports" ifconfig nr0 down || return="Failed" ifconfig nr1 down || return="Failed" ifconfig nr2 down || return="Failed" ifconfig nr3 down || return="Failed" echo "Shutting down ax ports" ifconfig ax0 down || return="Failed" ifconfig ax1 down || return="Failed" ifconfig ax2 down || return="Failed" ifconfig ax3 down || return="Failed" ifconfig ax4 down || return="Failed" ifconfig ax5 down || return="Failed" echo "Shutting down rose ports" ifconfig rose0 down || return="Failed" ifconfig rose1 down || return="Failed" sleep 4 echo "$1 $return" ;; restart|reload) $0 stop && $0 start ;; status) echo -n "Checking for fbb daemon: " PID=`/bin/pidof -x xfbbd` if [ -n "$PID" ]; then echo -e "${green}Yes, fbb is up :)${reset}" else echo -e "${red}No, fbb is down :(${reset}" fi echo -n "Checking for ax25d daemon: " PID=`/bin/pidof -x ax25d` if [ -n "$PID" ]; then echo -e "${green}Yes, ax25d is up :)${reset}" else echo -e "${red}No, ax25d is down :(${reset}" fi echo -n "Checking for netromd daemon: " PID=`/bin/pidof -x netromd` if [ -n "$PID" ]; then echo -e "${green}Yes, netromd is up :)${reset}" else echo -e "${red}No, netromd is down :(${reset}" fi echo -n "Checking for ax25rtd daemon: " PID=`/bin/pidof -x ax25rtd` if [ -n "$PID" ]; then echo -e "${green}Yes, ax25rtd is up :)${reset}" else echo -e "${red}No, ax25rtd is down :(${reset}" fi echo -n "Checking for flexd daemon: " PID=`/bin/pidof -x flexd` if [ -n "$PID" ]; then echo -e "${green}Yes, flexd is up :)${reset}" else echo -e "${red}No, flexd is down :(${reset}" fi echo -n "Checking for mheardd daemon: " PID=`/bin/pidof -x mheardd` if [ -n "$PID" ]; then echo -e "${green}Yes, mheardd is up :)${reset}" else echo -e "${red}No, mheardd is down :(${reset}" fi echo -n "Checking for ax25ipd daemon: " PID=`/bin/pidof -x ax25ipd` if [ -n "$PID" ]; then echo -e "${green}Yes, ax25ipd is up :)${reset}" else echo -e "${red}No, ax25ipd is down :(${reset}" fi echo -n "Checking for ax25udp daemon: " PID=`/bin/pidof -x ax25udp` if [ -n "$PID" ]; then echo -e "${green}Yes, ax25udp is up :)${reset}" else echo -e "${red}No, ax25udp is down :(${reset}" fi echo -n "Checking for linuxnet node: " PID=`/bin/pidof -x linuxnet` if [ -n "$PID" ]; then echo -e "${green}Yes, linuxnet is up :)${reset}" else echo -e "${red}No, linuxnet node is down :(${reset}" fi echo -n "Checking for jnos bbs: " PID=`/bin/pidof -x jnos` if [ -n "$PID" ]; then echo -e "${green}Yes, jnos is up :)${reset}" else echo -e "${red}No, jnos is down :(${reset}" fi echo -n "Checking for kissattach: " PID=`/bin/pidof -x kissattach` if [ -n "$PID" ]; then echo -e "${green}Yes, kissattach is up :)${reset}" else echo -e "${red}No, kissattach is down :(${reset}" fi echo -n "Checking for slattach: " PID=`/bin/pidof -x slattach` if [ -n "$PID" ]; then echo -e "${green}Yes, slattach is up :)${reset}" else echo -e "${red}No, slattach is down :(${reset}" fi echo -n "Checking for kissnetd: " PID=`/bin/pidof -x kissnetd` if [ -n "$PID" ]; then echo -e "${green}Yes, kissnetd is up :)${reset}" else echo -e "${red}No, kissnetd is down :(${reset}" fi echo -n "Checking for mkiss: " PID=`/bin/pidof -x mkiss` if [ -n "$PID" ]; then echo -e "${green}Yes, mkiss is up :)${reset}" else echo -e "${red}No, mkiss is down :(${reset}" fi echo -n "Checking for socat: " PID=`/bin/pidof -x socat` if [ -n "$PID" ]; then echo -e "${green}Yes, socat is up :)${reset}" else echo -e "${red}No, socat is down :(${reset}" fi echo -n "Checking for rstatrxd: " PID=`/bin/pidof -x rstatrxd` if [ -n "$PID" ]; then echo -e "${green}Yes, rstatrxd is up :)${reset}" else echo -e "${red}No, rstatrxd is down :(${reset}" fi ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac exit 0
Script provided by Charles S. Schuman modified by F6BVP for updating AX.25 libraries and applications. October 22/2017
#!/bin/bash # script updated October-22-2017 for VE7FET new AX.25 github repository (F6BVP) # Copy this script file in /usr/local/src/ax25/updAX25.sh # cd into /usr/local/src/ax25 # and execute command : sudo chmod a+x updAX25.sh # execute command to run the script : ./updAX25.sh # It will update and re-compile AX.25 libraries, AX.25 tools and AX.25 apps LIBAX25=linuxax25-master/libax25/ TOOLS=linuxax25-master/ax25tools/ APPS=linuxax25-master/ax25apps/ # Color Codes Reset='\e[0m' Red='\e[31m' Green='\e[30;42m' # Black/Green Yellow='\e[33m' YelRed='\e[31;43m' #Red/Yellow Blue='\e[34m' White='\e[37m' BluW='\e[37;44m' echo -e "${BluW}\t\n\t Script provided by Charles S. Schuman modified by F6BVP for updating AX.25 libraries and applications\t\n\t\t\t ${Red} October-22-2017 \n \t\t${Yellow} k4gbb1@gmail.com \n${Reset}" if ! uid=0 then su fi #if [ -f /usr/lib/libax25.a ]; then echo -e "${Green} Removing Old Libax25 files out of the way${Reset}" rm -fr /usr/lib/libax25* rm -fr /usr/lib/libax25*.* #fi # Make directories if not exist if [ -d /usr/local/src/ax25/ ] then echo "directory /usr/local/src/ax25 already exists" else mkdir /usr/local/src/ax25/ fi if ! [ -d /usr/local/etc/ax25/ ] then mkdir /usr/local/etc/ax25/ fi if ! [ -d /usr/local/var/ax25/ ] then mkdir /usr/local/var/ mkdir /usr/local/var/ax25 fi # # Download libax25 source file cd /usr/local/src/ax25 rm -fr /usr/local/src/ax25/libax25 rm -f master.zip echo -e "${Green} Getting AX25 libraries, AX25 tools and AX25 apps archives${Reset}" wget https://github.com/ve7fet/linuxax25/archive/master.zip if [ $? -ne 0 ] then echo -e "${Red}\t Ax25 Source files are Missing${Reset}" exit 1 fi echo -e "${Green} Now unarchiving AX.25 files ${Reset}" rm -fr linuxax25-master unzip master.zip #Libax25 (updating configure.ac for automake > 1.12 compliance) cd /usr/local/src/ax25/$LIBAX25 # echo -e "${Green}\t Creating Makefile(s) to prepare libraries compilation ${Reset}" ./autogen.sh ./configure > liberror.txt 2>&1 echo -e -n "\t *" echo -e "${Green}\t Compiling Runtime Lib files ${Reset}" # Clean old binaries make clean # Compile echo -n " *" make echo -e "\t *" if [ $? -ne 0 ] then echo -e "${Red}\t Libax25 Compile error - See liberror.txt ${Reset}" exit 1 fi echo " *\n" # Install # make install >> liberror.txt 2>&1 make install if [ $? -ne 0 ] then echo -e "${Red} Libax25 Install error - See liberror.txt${Reset}" exit 1 else echo -e "${Green} Libax25 Installed${Reset}" rm liberror.txt fi # AX25 libraries symbolic name needed for some applications cd /usr/local/lib/ ln -s libax25.so libax25.so.0 # AX25 libraries declaration (into ld.so.conf) echo "/usr/local/lib" >> /etc/ld.so.conf && /sbin/ldconfig # AX25-APPS cd /usr/local/src/ax25 rm -fr /usr/local/src/ax25/ax25apps echo -e "${Green} AX.25 applications${Reset}" #Libax25 (updating configure.ac for automake > 1.12 compliance) cd /usr/local/src/ax25/$APPS # echo -e "${Green}\t Creating Makefile(s) to prepare apps compilation ${Reset}" ./autogen.sh ./configure > appserror.txt 2>&1 echo -n -e "\t *" # Clean old binaries make clean # Compile Ax25-apps echo -n " *" echo -e "${Green}\t Compiling Ax25 apps ${Reset}" make echo -n -e "\t *" if [ $? -ne 0 ] then echo -e "${Red}\t Ax25-Apps Compile Error - see appserror.txt ${Reset}" exit 1 fi # Install Ax25-apps echo " *" # make install >> appserror.txt 2>&1 make install echo -e "\t *" if [ $? -ne 0 ] then echo -e "${Red} Ax25-Apps Install Error - see appserror.txt ${Reset}" exit 1 else echo -e "${Green} Ax25-apps Installed ${Reset}" rm appserror.txt fi # AX25-TOOLS cd /usr/local/src/ax25 rm -fr /usr/local/src/ax25/ax25tools echo -e "${Green} AX.25 tools${Reset}" cd /usr/local/src/ax25/$TOOLS # echo -n -e "\t *" echo -e "${Green}\t Creating Makefile(s) to prepare apps compilation ${Reset}" ./autogen.sh ./configure > toolserror.txt 2>&1 # Clean old binaries make clean # Compile Ax.25 tools echo -e "${Green}\t Compiling AX.25 tools ${Reset}" echo -e "\t *" make echo -e "\t *" if [ $? -ne 0 ] then echo -e "${Red}\t AX.25 tools Compile error - See toolserror.txt ${Reset}" exit 1 fi # Install Ax.25 tools echo " *" make install if [ $? -ne 0 ] then echo -e "${Red}\t AX.25 tools Install error - See toolserror.txt ${Reset}" exit 1 else echo -e "${Green} AX.25 tools Installed ${Reset}" rm toolserror.txt fi # Set permissions for /usr/local/sbin/ and /usr/local/bin cd /usr/local/sbin/ chmod 4775 * cd /usr/local/bin/ chmod 4775 * echo -e "\t \e[030;42m Ax.25 Libraries, applications and tools were successfully rebuilt and installed${Reset}" echo -e "${Green} If this is a first install of AX.25 tools execute 'make installconf' from ax25tools directory${Reset}" echo -e "${Green} If this is a first install of AX.25 apps execute 'make installconf' from ax25apps directory${Reset}" echo -e "${Green} in order to create sample configuration files into /usr/local/etc/ax25/${Reset}" echo -e "\t \e[030;42m Now it is time to compile and install AX.25 application programs${Reset}" # (End of Script)
Ax25-tools > ax25-tools-0.0.10-rc4.tar
Ax25-apps > ax25-apps-0.0.8-rc4.tar
LibAx25 > libax25-0.0.12-rc4.tar
Howto set ax25 parameters on a tnc in kissmode.
/usr/local/sbin/kissattach /dev/ttyUSB0 1 44.137.31.85 > /tmp/ax25-config.tmp awk '/device/ { print $7 }' /tmp/ax25-config.tmp > /tmp/ax25-config-tmp Device=ax0 # Check for Device if [ -d /proc/sys/net/ax25/$Device ] then cd /proc/sys/net/ax25/$Device/ /etc/ax25/ax25parms echo -e "Port 1 attached to $Device" else echo -e "** Error setting $Device parms*" fi echo -e -n "$"
Below the file ax25parms. (chmod 755)
#! /bin/bash # Parms for a USER Port echo 5000 > t1_timeout # (Frack) echo 500 > t2_timeout # (RESPtime) echo 300000 > t3_timeout # (Check) echo 900000 > idle_timeout # Idle Timer echo 5 > standard_window_size # Outstanding Frames echo 8 > maximum_retry_count # Max Retrys echo 256 > maximum_packet_length # Paclen echo 0 > ax25_default_mode echo 0 > ip_default_mode echo 0 > backoff_type echo 2 > connect_mode #echo 180000 > dama_slave_timeout echo 32 > extended_window_size echo 0 > protocol
I had some problems getting the flexnet destinations in uronode. Xnet node is running with various flexnet links. Now I also want uronode to know these flexnet destinations. There appears to be a small secret in the “prompt” that flexd expects. I had a prompt “pi1lap ==>” That is not what flexd expected. Flexd expects a prompt “=>” So now I had to adjust the Xnet prompt to the expectations of flexd. (Tnx Brian n1uro for the hint)
Maybe the “pi1lap =>” prompt will work, I have to test that
There is also something with the buffer size of flexd. See the README.flexd in the source dir.
root@gw:/etc/ax25# cat /usr/local/src/uronode-2.8/README.flexd If you find that your flexd isn't properly working, scroll down to line 120 where it says: char buffer[256], port[14], path[AX25_MAX_DIGIS*10] and adjust the buffer per your neighbor's screens. The formula is: 2 data frames: 256 3 data frames: 512 4 data frames: 1024
Okay so how muts frames i have, let’s have a look
[3] fm PI1LAP-15 to PI1LAP ctl SABM+ [3] fm PI1LAP to PI1LAP-15 ctl UA- [3] fm PI1LAP to PI1LAP-15 ctl I00^ pid F0 (211) (X)net V1.39 Node PI1LAP
That are 2 frames. I had to set the buffer size to 256 and recompile flexd.c
int download_dest(char *gateway, char *fname) { FILE *tmp; char buffer[256], port[14], path[AX25_MAX_DIGIS*10];
Also i have made a change to line 277. Also change to 256 buffer size
if (FD_ISSET(s, &read_fd)) { // if ((n = read(s, buffer, 512)) == -1) break; if ((n = read(s, buffer, 256)) == -1) break;
Setup flexd.conf
# /etc/ax25/flexd.conf # see man flexd.conf # The callsign-ssid you wish to poll your flex neighbor with: MyCall pi1lap-15 # How often do we poll our flex neighbor (in seconds): PollInterval 300 # The FlexNet node we're to poll: FlexGate pi1lap
The prompt for Xnet
root@gw:/etc/ax25# grep prompt /usr/local/xnet/AUTOEXEC.NET my prompt =>
Let’s give it a try.
[3] fm PI1LAP-15 to PI1LAP ctl SABM+ [3] fm PI1LAP to PI1LAP-15 ctl UA- [3] fm PI1LAP to PI1LAP-15 ctl I00^ pid F0 (211) (X)net V1.39 Node PI1LAP Lap = F6fbb bbs PI8LAP Jnos = Jnos 2.0k.1 PD2LT Dx = Cluster Dxspider PI1LAP-4 Uro = Uronode PI1LAP-15 => [3] fm PI1LAP-15 to PI1LAP ctl I10^ pid F0 (2) d [3] fm PI1LAP to PI1LAP-15 ctl I11^ pid F0 (236) BBS 0-0 33 CE8FGC 0-0 33 CX2SA 0-0 34 CX2SA 5-5 5 DB0ERF 0-12 4 DB0ERF 13-13 3 DB0ERF 14-14 30 DB0ERF 15-15 30 DB0RES 0-9 5 DB0RES 10-10 4 DB0ZWI 0-1 6 DB0ZWI 3-3 [3] fm PI1LAP to PI1LAP-15 ctl I12^ pid F0 (236) 5 DB0ZWI 4-15 4 DH4LAR 1-1 4 DL0HBS 7-7 30 F1ZYS 8-8 10 F3KT 0-10 4 F4DUR 7-7 5 F4DUR 8-8 39 F5ZFC 0-7 132 F8KHI 3-3 39 F8KHI 7-7 39 FGCBBS 0-0 33 HB9CSR 1-1 [3] fm PI1LAP to PI1LAP-15 ctl I13^ pid F0 (236) 40 HB9CSR 3-3 5 HB9CSR 8-8 40 HB9ON 1-1 39 HB9ON 8-8 34 HB9ON 9-9 34 HB9ON 10-10 4 HB9ON 14-14 5 HG0PLA 0-0 5 HG6PGA 0-0 109 HG8IT 0-0 35 HG8LXL 0-0 31 HG8PCS 0-0
Uronode
pd2lt@uro.pd2lt.ampr.org-IPv6: d FlexNet Destinations: BBS 0-0 34 CE8FGC 0-0 34 CX2SA 0-0 35 CX2SA 5-5 5 DB0ERF 0-12 5 DB0ERF 13-13 4 DB0ERF 14-14 31 DB0ERF 15-15 31 DB0RES 0-9 6 DB0RES 10-10 5 DB0ZWI 0-1 7 DB0ZWI 3-3 6 DB0ZWI 4-15 5 DH4LAR 1-1 5 DL0HBS 7-7 31 F1ZYS 8-8 6 F3KT 0-10 4 F4DUR 7-7 5 F4DUR 8-8 39 F5ZFC 0-7 116 F8KHI 3-3 39 F8KHI 7-7 39 FGCBBS 0-0 34 HB9CSR 1-1 41
Yes, all looks okay.
The flexnet destinations are saved in “/usr/local/var/ax25/flex” on a debian wheezy system.