Como
utilizar un TNC en modo KISS bajo Linux
La utilización de un TNC en
modo KISS en uno de los métodos más comunes para hacer packet.
Para ello necesitaremos un
TNC seteado en modo KISS con algún programa especial y conectado a uno de los
puertos serie de la máquina.
Luego debemos crear en nuestro Linux, los dispositivos adecuados
para operar.
Existen dos drivers
destinados a esta tarea. Repasemos cada uno de ellos:
mkiss
Este es el driver utilizado
con mayor frecuencia para conectar TNC´s en modo KISS, al utilizarlo nos
permitirá crear los dispositivos llamados:
ax0, ax1 etc
6pack
Este es un nuevo driver que
se utiliza como una alternativa al KISS. Pero como nunca lo probé y este
documento solo habla sobre configuraciones probadas y en funcionamiento.,
dejaremos su descripción para el momento adecuado.
Como en la mayoría de las
necesidades de radioaficionados, habrá que compilar un nuevo kernel capaz de
soportar el protocolo AX.25 y los dirvers adecuados. El kernel genérico
instalado por Linux no está preparado, aunque el código fuente nos ofrece todas
las herramientas como para armarlo a medida.
No describiremos aquí todas
las opciones a incluir para un correcto funcionamiento del sistema. Tan sólo
nos limitaremos a describir las opciones necesarias para operar AX.25 con TNC
en modo KISS.
Recordemos que solamente una cuidadosa selección de las opciones
en concordancia con todo nuestro hardware nos garantizará el correcto
funcionamiento del sistema.
Para esta descripción
utilizaremos Código fuente del kernel 2.4.19 (último kernel estable al momento
de este documento)
En Linux es posible
utilizar un kernel con los dirvers incluidos en él, o bien crearlos como
módulos, para poder cargar y descargarlos según lo necesitemos.
Si nuestra intención es
armar un kernel con los drivers incluidos (built in), en la sección Amateur
Packet Radio seleccionaremos lo siguiente:
[*] Amateur Radio Support
<*> Amateur Radio
AX.25 level 2 Protocol
AX.25 Network Device Drivers
---à
<*> Serial port KISS driver for AX.25
Si nuestra intención es
armar un kernel con los drivers construidos como módulos, en la sección Amateur
Packet Radio seleccionaremos lo siguiente:
[*] Amateur Radio Support
<M> Amateur Radio
AX.25 level 2 Protocol
AX.25 Network Device Drivers
---à
<M> Serial port KISS driver for AX.25
Repasemos los pasos para
compilar el kernel:
Comúnmente el código fuente
lo encontraremos en el dir:
/usr/src/linux
allí, ejecutaremos los
siguientes comandos:
make mrproper Prepara
archivos para compilar
make menuconfig Presenta
el menú contextual de selección
make dep Establece las dependencias
make clean Limpia elementos innecesarios
make bzImage Compila
el nuevo núcleo
make modules Compila los módulos
make modules_install Instala los módulos en el dir /lib/modules
Nuestro nuevo kernel se
ubicará en:
/usr/src/linux/arch/i386/boot/bzImage
Este archivo lo copiaremos
a nuestro directorio de boteo y luego haremos las modificaciones necesarias en
/etc/lilo.conf para que al reiniciar la máquina encontremos disponible nuestro
flamante kernel con soporte para TNC en modo KISS.
NOTA: Un error frecuente al reiniciar con el nuevo kernel, se debe a la selección del tipo de microprocesador. Si tenemos algún problema, podremos seleccionar procesador 386, el cual será compatible con una gran cantidad de hardware, incluso Pentium y AMD.
Si elegimos compilar con
los dirver incluidos en el kernel, podremos dedicarnos directamente a la
configuración de los dispositivos.
Si optamos por compilar los
módulos, deberemos cargarlos antes de configurar:
modprobe ax25
modprobe mkiss
Recordemos algunos comandos
para el manejo de módulos:
insmod nombre_del_archivo Cargo el módulo
modprobe nombre_del_modulo Carga el módulo y módulos dependientes
lsmod Muestra la lista de módulos cargados
rmmod nombre_del_modulo Descarga un determinado módulo
Recordemos que los módulos
se pueden cargar con el comando “insmod”, pero para que funcione
satisfactoriamente habrá que cargar en orden el resto de los módulos
dependientes. Por ello si utilizamos “modprobe” se cargaran de forma
inteligente todos los módulos necesarios que dependan del indicado.
Antes de configurar el
driver será necesario declarar datos escenciales de los nuevos puertos que
utilizaremos.
Este archivo se aloja en:
/etc/ax25/axports
Se puede crear con un
procesador de texto común, y su formato es el siguiente:
# /etc/ax25/axports
#
#
# name callsign speed paclen window description
#
vhf LW2DTQ 9600 256 4 TNC en modo KISS
El formato de la línea
será: en primer término el nombre del port, en este caso vhf (que se asociará
al dispositivo ax0), luego la licencia, luego la velocidad de comunicación
entre el puerto serie y el TNC (en este caso 9600 aunque luego el TNC salga al
aire en 1200 bauds), luego el paclen, el window (similar al maxframe) y una
descripción.
Una vez que hemos boteado
con el nuevo kernel (y cargado los módulos si fuere necesario) deberemos
configurar los dispositivos a utilizar. Estas herramientas de configuración
están incluidas en el paquete de utilidades ax25 conocidos como:
“ax25-utils”
Es recomendable instalar este paquete completo en nuestro
sistema ya que nos proveerá de herramientas indispensables para diferentes
usos. La versión que yo utilizo es:
ax25-utils-2.1.42a-3.i386.rpm
Este paquete auto-instalable lo podremos bajar de:
y lo instalaremos con:
rpm –i ax25-utils-2.1.42a-3.i386.rpm
Si lo deseamos podremos buscar una versión en código fuente
y compilarla e instalarla a nuestro gusto. Pero esto es una tarea opcional por
si queremos darle una personalización mayor.
Ahora, procederemos a
elegir el puerto serial que vamos a utilizar.
Recordemos que en linux las
denominaciones son diferentes a D.O.S:
COM1 ttyS0
COM2 ttyS1
COM3 ttyS2
COM4 ttyS3
Supongamos que elegimos el
“ttyS1” (COM2), con el driver mkiss
Ahora sí, utilizaremos la
ax25-util conocida como “kissattach” para crear y configurar el dispositivo:
kissattach /dev/ttyS1 vhf
Así quedará creado el
dispositivo ax0, el cual podremos observar con el comando:
ifconfig ax0
A medida que vayamos
creando más dispositivos KISS, estos se llamarán ax1, ax2 y ax3.
Ya estamos en condiciones
de asignar a ese dispositivo dirección ip correspondiente:
ifconfig ax0 44.153.32.70
Ahora rutearemos por allí
las direcciones de ips que necesitemos.
Por ejemplo:
route add 44.153.32.83
ax0
Existe otra utilidad ax25
que nos permite especificar parámetros adecuados a nuestra transmisión como
txdelay, persist, etc. Por ejemplo:
kissparms –p vhf –t 100 –s 100 –r 25
Aquí el significado de cada
una de las opciones mas comunes:
-p port Indica el puerto que configuraremos
-t txd Configura
el txdelay expresado en milisegundos (múltiplos de 10)
-l txt Configura
en txtail expresado en milisegundos (múltiplos de 10)
-r persist Configura el persist en el rango de 0 a
255
-s slot Configura
el slottime en milisegundos (múltiplos de 10)
Hasta este punto estamos en
condiciones de salir al aire utilizando el kernel del linux, sin necesidad de ningún
programa adicional.
Pero si nuestra intención es correr un programa del tipo NOS, es
posible usar el dispositivo ya creado y asociarlo para que pueda ser utilizado
simultáneamente.
Para esta tarea necesitaremos otra utilidad ax25 llamada:
net2kiss
Esto nos permitirá crear
una pseudo terminal que vinculará el dispositivo del kernel con el dispositivo
“atachado” en el Jnos/Tnos. Esta pseudo-tty se la considera como un enlace con
dos extremos. Del lado del kernel se llamará:
ptyp0, ptyp1, ptyp2 etc.
Y del lado del jnos:
ttyp0, ttyp1, ttyp2 etc
Recordemos que siempre
trabajarán en pares, y que el numero del dispositivo virtual debe coincidir en
ambos extremos.
Por ejemplo, crearemos en
el kernel una pseudo-tty que enlace al Jnos para el dispositivo ax0:
net2kiss -i ax0 /dev/ptyp0 &
Ahora en el otro extremo
(un attach de Jnos) crearemos el puerto con:
attach asy ttyp0 - ax25 2m 1024 256 38400
NOTA: El símbolo &
(ampersand) al final de los parámetros del comando net2kiss hace que el
proceso quede en background. Es decir que continúe ejecutándose, aunque no lo veamos.
Para no generar conflictos, debemos asignar números Ip diferentes al kernel y al jnos.
Mas detalles sobre
Jnos/Tnos se pueden encontrar en el documento destinado a placas scc en http://www.qsl.net/lw2dtq/scc.htm
Un TNC en modo KISS nos
permitirá utilizar un Jnos/Tnos sin necesidad de los dispositivos creados en el
kernel ni de las utilidades ax25. Es una función sencilla aunque menos completa
que la descripta anteriormente.
Por ello no hace falta
recompilar nada. Si tenemos una instalación estándar de Linux, podremos
instalar un Jnos/Tnos en versión de linux y agregar una línea en el
autoexec.nos como la siguiente:
attach asy ttyS1 – ax25 vhf 1024 256 9600
Eso ya generará el protocolo
ax25 en el puerto serie ttyS1 (COM2). Luego el resto de parámetros de Jnos/Tnos
permitirán ajustar a medida nuestra transmisión.
16 de septiembre de 2002
Diego de Nicolás
LW2DTQ