Cuando tiene varios dispositivos EA4TX como ARS, RemoteBox, etc. conectados a un mismo equipo (una computadora Linux como Raspberry Pi), Linux asignará sus nombres a medida que estén conectados, por lo que a veces los dispositivos no se identifican en el mismo orden como los conectó originalmente. Si los dispositivos USB se identifican en diferente órden, su ARS-USB de 20m podría identificarse como el de 10m, 15m o 40m (o cualquier otro).

Ejemplo de 4 unidades ARS-USB conectadas a una Raspberry Pi (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

Cuando necesitamos mapear puertos a dispositivos serie, es fundamental tener nombres predeterminados para establecer rutas con el servicio ser2net, por lo que utilizaremos Udev para la identificación básica de dispositivos.

Qué es el servicio Udev?

Udev es un administrador de dispositivos para el kernel de Linux 2.6 que crea/elimina dinámicamente nodos de dispositivos en el directorio /dev. Es el sucesor de devfs y hotplug. Se ejecuta en el espacio de usuario y el usuario puede cambiar los nombres de los dispositivos utilizando las reglas de Udev.

En nuestro caso, Udev utilizará la ID del producto (Pid) + la ID del proveedor (Vid) + el número de serie para identificar un dispositivo y asignaremos un nombre para cada dispositivo único.

Desde febrero de 2015, todas las versiones de firmware de las unidades ARS, RemoteBox o StckMain (p.e. en el ARS desde V2.3A) incluirán un número de serie utilizado por el servicio Udev para reconocer cada dispositivo.

Si tiene versiones anteriores del software ARS (u otros dispositivos EA4TX) que no se identifican con un número de serie único, comuníquese con EA4TX para obtener un nuevo firmware.

Para encontrar la ID del producto, la ID del proveedor y el número de serie, escriba el siguiente comando.

pi@raspberrypi:~$ usb-devices

Em este ejemplo:

  • Vendor is 04d8
  • Product ID is 000a
  • SerialNumber is 12198

Recuerde actualizar el firmware en caso de que su unidad no incluya un número de serie, utilizando la herramienta ARS_Loader. El firmware incluirá un número de serie a partir de la versión v.2.3 del ARS 

Configuración

Conociendo el número de serie de un dispositivo, podemos crear una regla en Udev para asignarlo a un enlace simbólico o nombre persistente.

Con la lista de números de serie en la mano, creemos un conjunto de reglas UDEV que identificará un enlace simbólico para cada uno de estos dispositivos. Las reglas de UDEV generalmente se encuentran dispersas en muchos archivos en /etc/udev/rules.d. Cree un nuevo archivo llamado 99-ea4tx.rules y escriba (copie) las siguientes líneas.

Ejemplo:

pi@raspberrypi:~$ sudo nano /lib/udev/rules.d/99-ea4tx.rules

Agregue una línea por cada dispositivo que desee identificar. En este ejemplo, usaremos 3 ARS-USB, 2 StackMains, 1 RemoteBox para 4-Square y 1 RemoteBox 2×8:

SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»22198″ , SYMLINK+=»ars01″
SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»22199″ , SYMLINK+=»ars02″
SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»22203″ , SYMLINK+=»ars03″
SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»21477″ , SYMLINK+=»stack1″
SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»21478″ , SYMLINK+=»stack2″
SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»22474″ , SYMLINK+=»4-square1″
SUBSYSTEM==»tty», ATTRS{idVendor}==»04d8″, ATTRS{idProduct}==»000a», ATTRS{serial}==»21327″ , SYMLINK+=»rb28″

 

Una vez que guarde el archivo, reinicie la máquina. Otra opción es recargar la Udev con el comando:

pi@raspberrypi:~$ sudo udevadm control –reload-rules

De ahora en adelante cada vez que se detecte el ARS con serie 22198, Linux asigna el nombre del dispositivo /dev/ars01 (y de manera similar con el resto)

Puede verificar que los enlaces simbólicos apunten al dispositivo correcto emitiendo el comando «ls» o «dir» en la carpeta /dev, por ejemplo:

pi@raspberrypi:~$ ls /dev

Y con estos nombres, vamos a dar servicio a ser2net y creamos las rutas o enrutamiento del puerto serie TCP, de la siguiente manera:

Nota: La configuración anterior de /etc/ser2net.conf era válida para v3.5 y versiones anteriores.

La nueva configuración utilizada por ser2net desde V4 es un archivo YAML, ejemplo: /etc/ser2net.yaml

El servicio ser2net monitorea las conexiones entrantes en el puerto 6001 y las envía a /dev/ars01 (serie 22198). La comunicación de /dev/ars01 se devuelve a través del puerto 6001 y sale a la red.

Recuerda reiniciar el servicio ser2net con el comando:

pi@raspberrypi:~$ sudo service ser2net restart

De esta forma tan sencilla puedes crear un nombre personalizado para cada dispositivo conectado al puerto USB y distinguirlo fácilmente de otros dispositivos. Además, esta identificación es más fácil que usar los nombres /dev/ttyACMxx que se crean por defecto y que no tienen ningún significado.