Sitio para la difusión de conocimiento informático. 

Twitter RSS

BandLuxe 4G-LTE en Ubuntu

Configurar BandLuxe 4G-LTE en Ubuntu/Linux

4G son las siglas utilizadas para referirse a la cuarta generación de tecnologías de telefonía móvil. Es la sucesora de las tecnologías 2G y 3G. La 4G está basada en el protocolo IP, siendo la principal diferencia con las generaciones predecesoras la capacidad para proveer velocidades de acceso mayores de 100 Mbit/s en movimiento y 1 Gbit/s en reposo.  En esta publicación mostraremos como configurar el modem BandLuxe 4G-LTE (ww.bandrich.com/data-card_c500.html) en Ubuntu, ya que si bien es detectado por el SO requiere de una configuración inicial.

 

1) Primero debemos verificar si tenemos instalado los paquetes “screen” y “usb_modeswitch”:
– Dado que este dispositivo USB tiene otros roles a parte de ser un modem 4G, debemos contar con el paquete “usb_modeswitch” para poder acceder a sus otras funciones: apt-get install screen usb_modeswitch
– El paquete “screen” lo utilizaremos para conectarnos al dispositivo y ejecutar comandos GPRS AT.

 

2) Una vez conectado el dispositivo en algún puerto USB, detectará una unidad de CD y luego una nueva tarjeta de red (ej. eth1), a su vez aparecerá un puerto serial /dev/ttyUSB2. Seguramente la nueva tarjeta de red intente obtener una dirección mediante DHCP sin éxito, hasta no configurar el modem y conectarnos.

Si no detecta esto, pero si la unidad de CD, debemos desmontar la unidad de CD ejecutando el comando “umount” seguido del directorio donde montó la unidad de CD. Si luego de desmontar la unidad de CD no detecta el puerto /dev/ttyUSB2, podemos ejecutar los siguientes comandos para forzar esto:
– El comando “usb-devices” o “lsusb -v” para obtener los ID de vendedor y producto.
– Editamos el archivo “/lib/udev/rules.d/40-usb_modeswitch.rules”, y agregamos las siguientes líneas:
# 4G LTE
ATTRS{idVendor}==”XXXX”, ATTRS{idProduct}==”XXXX”, RUN+=”usb_modeswitch ‘%b/%k'”
– Luego ejecutamos: “modprobe -r option“, “modprobe -a option” y “modprobe usbserial vendor=0xNÚMERO product=0xNÚMERO“.

 

3) Luego nos conectamos al dispositivo usando el comando “screen“, y configuramos el modem para nuestro proveedor de internet (recomiendo deshabilitar el PIN para continuar):
– Nos conectamos al dispositivo: screen /dev/ttyUSB2
– Descripción de los comandos GPRS AT que utilizaremos para configurar nuestro modem:
PIN del chip: AT+CPIN?
Comando para registrarse en la red home: AT+CGREG?
A que red estoy conectado: AT+COPS?
Conectarme a la red del proveedor: AT+cgatt=1
Desconectarme de la red del proveedor: AT+cgatt=0
Calidad de la señal: AT+CSQ
Mostrar perfiles de conexion: at+cgdcont?
Configurar un perfíl: at+cgdcont=1,”IP”,”antel.lte”
En mi caso debí dejar el campo donde especifico el APN (antel.lte) en blanco para acceder a la red 4G de ANTEL.
Activar el perfil: AT+CGACT=1,1 (con el primer 1 activo, el otro uno selecciona el perfíl por ID).
Para verificar la activación: AT+CEER
Disco: at$wancall=1
En caso de recibir un mensaje $WANCALL2, o $WANCALL3, ejecutamos  “at$wancall=0”, y luego nuevamente “at$wancall=1”.

 

4) Una vez que nuestro dispositivo quedó conectado a nuestro proveedor de servicios, ejecutamos el comando “dhclient eth1“, para obtener una dirección IP y poder acceder a la red 4G.

 

5) Configuramos el Modem usando comgt:- Es una herramienta de línea de comandos para controlar, configurar e interactuar con modems (HSDPA, UMTS, EDGE, GPRS, GSM), desde la línea de comandos de linux.
– Creamos un archivo de configuración con los comandos a ejecutar en el Modem, por ej. /home/usuario/config3g_and_dial.conf
# Dial LTE
set com 115200n81
set senddelay 0.05
waitquiet 1 0.2
send “AT+cgatt=1^m”
send “at+cgdcont=1,”IP”,””^m”
send “AT+CGACT=1,1″^m
send “AT$WANCALL=0^m”
send “AT$WANCALL=1^m”
Nota: al final de cada comando se encuentra ^m, correspondiente a un “enter” para que ejecute el comando; pero sin esto también funciona.
– Luego ejecutamos los comandos contenidos en el archivo anterior ejecutando comgt indicado el dispositivo usbserial correspondiente a nuestro modem con la opción “-d”, seguido del archivo de configuración:
comgt -d /dev/ttyUSB2 /home/usuario/dial.conf
– Y refrescamos la IP de nuestra tarjeta de red (en este ejemplo es la eth1): dhclient eth1

 

6) Configurar el Modem usando wvdial:
– Creamos el archivo de configuración “/etc/wvdial.conf-1″, con el siguiente contenido:
[Dialer Defaults]
Modem = /dev/ttyUSB2
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = at+cgdcont=1,”IP”,””
Init4 = AT+CGACT=1,1
Init5 = at$wancall=1
– Luego ejecutamos wvdial: wvdial -C /etc/wvdial.conf-1
Esto nos dejará conectado el modem 4G, ahora solo debemos asignar una IP a nuestra tarjeta de red que corresponde a nuestro modem, en mi caso es la eth1: dhclient eth1
– Para poder volver a discar, cuando se desconecta el modem, podemos crear otro archivo de configuración para wvdial y volver a conectarnos. Creamos el archivo “/etc/wvdial.conf-redial”:
[Dialer Defaults]
Modem = /dev/ttyUSB2
Init1 = at$wancall=0
Init2 = at$wancall=1
Volvemos a discar: wvdial -C /etc/wvdial.conf-redial
– Y refrescamos la IP de nuestra tarjeta de red (en este ejemplo es la eth1): dhclient eth1

 

Nota: Contador de ancho de banda para contratos con límite:

1) Creamos un archivo y pegamos el código ajustando el valor correpondiente al límite de nuestro contrato (está claro que esto solo sirve si utilizamos el modem LTE en el mismo equipo):

vi bandwith.sh

#!/bin/bash
if [ “$(lsusb | grep LTE | cut -d ” ” -f 10)” == “LTE” ]; then
for i in $(ls /dev/ttyUSB* | cut -d “B” -f 2); do
if [ “$(sudo udevadm info –query=path –name=/dev/ttyUSB$i –attribute-walk | grep “BandRich, Inc.” | cut -d ‘”‘ -f 2 | cut -d “,” -f 1)” == “BandRich” ]; then
j=$( expr $j + 1 )
if [ $j == 3 ]; then
USBPORT=”ttyUSB$i”
echo “LTE conectado en $USBPORT” >> /var/log/messages
echo “LTE conectado en $USBPORT”
ETH=$(ifconfig | grep “00:26:fa” | cut -d ” ” -f 1)
echo “Interface del modem $ETH”
OUT=$(sudo ifconfig $ETH | grep bytes | awk ‘{ print $2 ” ” $6 }’ | tr -d “bytes:” | cut -d ” ” -f 1)
IN=$(sudo ifconfig $ETH | grep bytes | awk ‘{ print $2 ” ” $6 }’ | tr -d “bytes:” | cut -d ” ” -f 2)
IP=$(sudo ifconfig $ETH | grep “inet addr:” | cut -d “:” -f 2 | awk ‘{ print $1 }’)
BTIME=$(sudo cat /proc/stat | grep btime | awk ‘{ print $2 }’)
DATE=$(date +%m)

echo $IN > /var/log/IN-$BTIME-$DATE.log
echo $OUT > /var/log/OUT-$BTIME-$DATE.log

CONSUMO=$(sudo cat /var/log/*-$(date +%m).log | awk ‘{ SUM += $1} END { printf (“%0.0f\n”, SUM) }’)

# Modificamos el siguiente valor a nuestro límite contratado:
# 1024 bytes x 5 = 5368709120
if [ $CONSUMO -gt  5368709120 ]; then
echo “ALERTA, van $CONSUMO bytes consumidos.” >> /var/log/messages
echo “ALERTA, van $CONSUMO bytes consumidos.”
else
echo “Van $CONSUMO bytes consumidos de 5368709120 notificados.” >> /var/log/messages
echo “Van $CONSUMO bytes consumidos de 5368709120 notificados.”
fi

fi
fi
done
else
echo “No hay modem conectado.”
fi

2) Le damos permisos de ejecución:
chmod 755 bandwidh.sh

3) Lo agregamos en el crontab con el comando “crontab -e”:
*/5 * * * * /path$/bandwith.sh

4) Podemos ejecutar el scritp y o ver el log /var/log/messages para ver si nos pasamos del límite configurado.

 

Espero que les sea útil esta información.

 
Home Linux OS Bash BandLuxe 4G-LTE en Ubuntu