Asignaci?n de puertos por n?mero
Serial

Cuando disponemos de varios dispositivos entre ARS, Stacks, mandos de
antenas, etc y que se conectan a un mismo Host (equipo Linux por
ejemplo RaspBerry Pi) tenemos el inconveniente de no saber exactamente
cual es el dispositivo primero, segundo, etc puesto que Linux va
asignando sus nombres a medida que se encienden, con lo cual unas veces
uno puede ser el ttyACM00, ttyACM01 ?

Ejemplo de 4 unidades conectadas en una RsPi:

pi@raspberrypi:~$ dir -1 -A -l
/dev/ttyA*


crw-rw—T 1 root dialout 166,? 0
Sep? 9 14:02 /dev/ttyACM0


crw-rw—T 1 root dialout 166,? 1
Sep? 9 14:03 /dev/ttyACM1


crw-rw—T 1 root dialout 166,? 2
Sep? 9 14:07 /dev/ttyACM2


crw-rw—T 1 root dialout 166,? 3
Sep? 9 14:07 /dev/ttyACM3

Muchas veces es necesario que cada ARS tenga asignado un nombre
predeterminado, as? podremos asignar el servicio ser2net a cada unidad
asignando su correspondiente puerto.
Las ?ltimas versiones del firmware de las unidades ARS, Stacks, etc
(p.e. en el ARS desde la V2.3A) incluyen un n?mero de serie que podemos
usar para facilitar a Linux a reconocer a cada dispositivo, usando esta
caracter?stica del serial para crean una asociaci?n.

Si tienes una versi?n anterior del software del ARS que no incluya esta
funcionabilidad, tendr?s que actualizarlo y recordando que tendr?s que
usar un n?mero de serie diferente para cada ARS.

Se identifican f?cilmente los serial de cada firmware por los ?ltimos
digitos del nombre del binario, ejemplo:
-??? rci-usb-boot_23e_00001.hex
-??? rci-usb-boot_23e_00002.hex

El primero utiliza el serial 00001
y el segundo 00002

Si dispones de un equipo ARS con serial y quieres saber su n?mero,
conecta el ARS a un equipo Linux (ARS apagado) y ejecuta el comando
siguiente:
??? udevadm
monitor ?-environment

Entonces enciendes el ARS y tendr?s una salida similar a esta:


UDEV? [3740.322132]
add?????
/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)


ACTION=add

BUSNUM=001

DEVNAME=/dev/bus/usb/001/013

DEVNUM=013

DEVPATH=/devices/platform/soc/20980000.usb/usb1/1-1/1-1.4

DEVTYPE=usb_device

ID_BUS=usb

ID_MODEL=USB_Serial

ID_MODEL_ENC=USB\x20Serial

ID_MODEL_ID=000a

ID_REVISION=0100

ID_SERIAL=EA4TX_USB_Serial_00001

ID_SERIAL_SHORT=00001

ID_USB_INTERFACES=:020201:0a0000:

ID_VENDOR=EA4TX

ID_VENDOR_ENC=EA4TX

ID_VENDOR_ID=04d8

MAJOR=189

MINOR=12

PRODUCT=4d8/a/100

SEQNUM=920

SUBSYSTEM=usb

TYPE=2/0/0

UDEV_LOG=3

USEC_INITIALIZED=3740321035

Nota: este listado es un extracto de la salida para UDEV.

Este es un ejemplo donde el ID_SERIAL vale 00001

Recuerda que tendr?s que actualizar el firmware del ARS si ?ste no
incluye n?mero de serie por medio de la utilidad ARS_Loader. Los numero
de serie se comenzaron a incluir apartir de la version 2.3
Configuraci?n

Sabiendo el n?mero de serie que queremos asociar, podemos crear una
regla asignando ese numero de serie a un nombre de puerto.

Sabiendo que un ARS-USB usa el ID_SERIAL = “00001?, vamos al directorio
del equipo Linux:
cd /lib/udev/rules.d
donde tendremos un mont?n de ficheros, a?adiendo uno nuevo por ejemplo:

99-ars-usb.rules

Ejemplo:
sudo nano 99-ars-usb.rules

y a?adiendo una linea por cada ARS-USB que queremos identificar, en
este ejemplo disponemos de 6 ARS y 4 stacks:

SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”00001″ , SYMLINK+=”ars01″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”00002″ , SYMLINK+=”ars02″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”00003″ , SYMLINK+=”ars03″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”00004″ , SYMLINK+=”ars04″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”00005″ , SYMLINK+=”ars05″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”00006″ , SYMLINK+=”ars06″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”S0010″ , SYMLINK+=”stack1″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”S0015″ , SYMLINK+=”stack2″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”S0020″ , SYMLINK+=”stack3″


SUBSYSTEM==”tty”,
ATTRS{idVendor}==”04d8″, ATTRS{idProduct}==”000a”,
ATTRS{serial}==”S0040″ , SYMLINK+=”stack4″

De esta forma, Linux asigna el symlink = ars01 al dispositivo que sea
igual a:
??? IdVendor:? 04d8
??? IdProduct: 000A
??? Serial:?????? 00001
De forma similar con el resto.

Nota: Una vez salvado el
fichero, reinicia el equipo para que coja la configuraci?n

A partir de ahora cada vez que se encienda el ARS (serial 00001), Linux
le asigna el nombre de dispositivo ars01 (y de forma an?loga con el
resto)

Para abrir ahora el ARS01 vamos a usar el dispositivo: /dev/ars01 y
no? ya el /dev/ttyACMxxx (que era como se usaba antes y variaba
dependiendo del instante del encendido)

Lo puedes comprobar haciendo un ls o dir de la carpeta dev, ejemplo:
??? ls /dev

Ya con estos nombres, vamos al servicio ser2net y creamos los
encaminamientos o rutas de puerto TCP a serial, de la siguiente forma:

6000:raw:600:/dev/ars01:38400
8DATABITS NONE 1STOPBIT banner


6001:raw:600:/dev/ars02:38400
8DATABITS NONE 1STOPBIT banner


6002:raw:600:/dev/ars03:38400
8DATABITS NONE 1STOPBIT banner


6003:raw:600:/dev/ars04:38400
8DATABITS NONE 1STOPBIT banner


6004:raw:600:/dev/ars05:38400
8DATABITS NONE 1STOPBIT banner


6005:raw:600:/dev/ars06:38400
8DATABITS NONE 1STOPBIT banner


6010:raw:600:/dev/stack1:38400
8DATABITS NONE 1STOPBIT banner


6011:raw:600:/dev/stack2:38400
8DATABITS NONE 1STOPBIT banner


6012:raw:600:/dev/stack3:38400
8DATABITS NONE 1STOPBIT banner


6013:raw:600:/dev/stack4:38400
8DATABITS NONE 1STOPBIT banner

???
As? el servicio ser2net asocia las conexiones entrantes al puerto 6000
con el ars01 (que ten?a serial 00001)? o el 6001 con el ars02, ?

Recuerda reiniciar el servicio ser2net por medio del comando:
??? sudo
/etc/init.d/ser2net restart

Show Buttons
Hide Buttons