Raspberry Pi · 9 min read · Dec 08, 2025

Cómo instalar un servidor SMS en Raspberry Pi

Antes de empezar

Este tutorial te mostrará cómo puedes configurar un servidor SMS en un Raspberry Pi 2 Modelo B, ejecutando Raspbian.

Usaremos playsms y smstools. En mi ejemplo, he utilizado un módem 3G Huawei E3131.

Raspbian

Primero necesitamos descargar raspbian, puedes obtener la última versión en https://www.raspberrypi.org/downloads/

URL directa: http://downloads.raspberrypi.org/raspbian_latest

Ahora necesitamos descomprimir el archivo: 2015-05-05-raspbian-wheezy.zip:

unzip 2015-05-05-raspbian-wheezy.zip

Obtendrás un archivo llamado 2015-05-05-raspbian-wheezy.img, este archivo debe ser escrito en tu tarjeta micro-sd.

Si necesitas conocer algunos conceptos básicos sobre cómo trabajar con Raspberry Pi y escribir la imagen en micro-sd, puedes comenzar leyendo este tutorial:

https://www.howtoforge.com/tutorial/howto-install-raspbian-on-raspberry-pi/

Escribe el archivo de imagen en la tarjeta micro-sd, en mi PC la tarjeta micro-sd se ve como /dev/mmcblk0 en Linux puedes usar dd:

dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/mmcblk0
  • Ten en cuenta que el tamaño de bloque establecido en 4M funcionará la mayor parte del tiempo; si no, intenta con 1M, aunque esto tomará considerablemente más tiempo.
  • Además, ten en cuenta que si no has iniciado sesión como root, necesitarás anteponer esto con sudo.

Cuando la imagen esté escrita, inserta la tarjeta micro-sd en tu Raspberry Pi y enciéndela.

Cuando el Raspberry Pi se inicie, deberías ver una pantalla como esta, en el primer arranque.

Ahora selecciono las siguientes opciones:

1 Expandir sistema de archivos  
3 Habilitar inicio en escritorio/Scratch -> Seleccionar consola de texto de consola, requiriendo inicio de sesión (predeterminado)  
8 Opciones avanzadas -> A4 SSH -> Habilitar  
8 Opciones avanzadas -> A0 Actualizar   
Finalizar -> Reiniciar

Ahora puedes iniciar sesión con el siguiente nombre de usuario: pi y contraseña: raspberry.

Primero configuramos la configuración de red para nuestro servidor editando

sudo nano /etc/network/interfaces

Mi archivo /etc/network/interfaces se ve así (cambia la configuración según tus necesidades):

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 10.255.50.30
        netmask 255.255.255.0
        gateway 10.255.50.1
        dns-nameservers 8.8.8.8 8.8.4.4

Ahora reiniciamos el servicio de red en el Pi:

sudo /etc/init.d/networking restart

Luego deshabilitamos DHCP al inicio con este comando:

sudo update-rc.d -f dhcpcd remove

Si de alguna manera deseas habilitarlo nuevamente más tarde, simplemente ejecuta el siguiente comando:

sudo update-rc.d dhcpcd defaults

Ahora podemos usar un cliente SSH como PuTTY para conectarnos desde nuestra PC al Raspberry Pi.

Ahora actualizamos raspbian con el siguiente comando:

sudo apt-get update &&  apt-get upgrade -y && apt-get dist-upgrade -y

PlaySMS

Descarga e instala playsms 1.1:

sudo -s  
apt-get install apache2 libapache2-mod-php5 mysql-server php5 php5-cli php5-mysql php5-mcrypt php5-gd php5-imap php5-curl  
php5enmod mcrypt  
service apache2 restart

Cuando se te pida la nueva contraseña para el usuario “root” de MySQL, usa una contraseña fuerte, en este ejemplo he usado MyP@$$w0rd

Ahora podemos ir a http://tu-ip, en mi caso http://10.255.50.30 ,y veremos una página que muestra: “¡Funciona!”.

cd /tmp/  
wget http://downloads.sourceforge.net/project/playsms/playsms/Version%201.1/playsms-1.1.tar.gz  
tar -zxf playsms-1.1.tar.gz -C /usr/local/src  
ls -l /usr/local/src/  
cd /usr/local/src/playsms-1.1/  
cp install.conf.dist install.conf  
nano install.conf

Copia install.conf.dist a install.conf y edita install.conf

Lee install.conf y haz cambios para adaptarlo a la configuración de tu sistema.

He editado el archivo, así que se ve así:

# DATOS DE INSTALACIÓN
# ============


# Por favor cambia los DATOS DE INSTALACIÓN a continuación para adaptarlos a la configuración de tu sistema

# Por favor no cambies el nombre de la variable, solo puedes cambiar el valor

# Nombre de usuario de la base de datos MySQL
DBUSER="root"

# Contraseña de la base de datos MySQL
DBPASS="MyP@$$w0rd"

# Nombre de la base de datos MySQL
DBNAME="playsms"

# Host de la base de datos MySQL
DBHOST="localhost"

# Puerto de la base de datos MySQL
DBPORT="3306"

# Usuario del servidor web, por ejemplo el usuario de apache2 por defecto es www-data
# nota: por favor asegúrate de que tu usuario del servidor web
WEBSERVERUSER="www-data"

# Grupo del servidor web, por ejemplo el grupo de apache2 por defecto es www-data
# nota: por favor asegúrate de que tu grupo del servidor web
WEBSERVERGROUP="www-data"

# Ruta a los archivos fuente extraídos de playSMS
PATHSRC="$(pwd)"

# Ruta a los archivos web de playSMS
# nota: por favor asegúrate de que tu ruta raíz web, en este ejemplo es /var/www/html
PATHWEB="/var/www/html/playsms"

# Ruta a los archivos adicionales de playSMS
PATHLIB="/var/lib/playsms"

# Ruta a los archivos binarios y daemon de playSMS
PATHBIN="/usr/local/bin"

# Ruta a los archivos de registro de playSMS
PATHLOG="/var/log/playsms"


# FIN DE LOS DATOS DE INSTALACIÓN
# ===================

Ahora ejecuta:

./install-playsms.sh

Presiona Y si todo parece estar bien.

Ahora queremos asegurarnos de que playsms se inicie al arrancar añadiendo una línea en el archivo rc.local.

nano /etc/init.d/rc.local

Agrega lo siguiente al archivo: /usr/local/bin/playsmsd start
en la parte inferior del archivo (antes de exit si hay un comando de salida).
De esta manera, playsmsd se iniciará automáticamente al arrancar.

..
/usr/local/bin/playsmsd start

Edita el archivo vhost de apache:

nano /etc/apache2/sites-available/default

Mi archivo vhost se ve así:

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html/playsms
        
                Options FollowSymLinks
                AllowOverride None
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Los valores posibles incluyen: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

Ahora recarga la configuración de Aapache2 para aplicar los cambios.

service apache2 reload

Luego deberías poder acceder al sitio web de playsms en la siguiente URL:

Ve a http://tu-ip etc. http://10.255.50.30

Puedes iniciar sesión con:

nombre de usuario: admin
contraseña: admin

Gateway - SMS Server Tools 3

Primero instalamos herramientas de compilación para construir la última versión. Ejecuta:

apt-get install build-essential libusb-1.0 libusb-1.0-0-dev

Ahora he conectado el módem Huawei E3131, y puedo verlo listado con lsusb:

lsusb
lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 12d1:14fe Huawei Technologies Co., Ltd.

Nos gustaría que fuera con ID: 12d1:1506, pero actualmente se detecta con 12d1:14fe.

Para cambiar esto, instalamos usb_modeswitch en el sistema, puedes obtener la última versión de aquí:

http://www.draisberghof.de/usb_modeswitch/#download

cd /tmp  
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.2.5.tar.bz2  
tar jxvf usb-modeswitch-2.2.5.tar.bz2  
cd usb-modeswitch-2.2.5  
make install  
cd /tmp  
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-data-20150627.tar.bz2  
tar xjvf usb-modeswitch-data-20150627.tar.bz2  
cd usb-modeswitch-data-20150627  
make install

Ahora desconecta el módem y vuelve a conectarlo, luego ejecuta:

lsusb
 lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 006: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard

Ahora tenemos el modo deseado: 12d1:1506.

A continuación, procedemos con SMS Server Tools 3.

Primero lo descargamos, luego lo descomprimimos e instalamos.

cd /usr/local/src  
wget http://smstools3.kekekasvi.com/packages/smstools3-3.1.15.tar.gz  
tar -zxvf smstools3-3.1.15.tar.gz  
cd smstools3  
make

Si ves un error como en mi caso, cuando ejecutas make:

 make
cd src && make -
make[1]: Entrando en el directorio '/usr/local/src/smstools3/src'
Makefile:51: * la receta comienza antes del primer objetivo.  Detener.
make[1]: Saliendo del directorio '/usr/local/src/smstools3/src'
Makefile:10: receta para el objetivo 'compile' falló
make: * [compile] Error 2

Entonces haz lo siguiente:

nano src/Makefile

El problema es un tabulador faltante, ahora busca:

ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
override LFLAGS += -lsocket -lnsl
endif

Y mueve la línea override LFLAGS += -lsocket -lnsl con un TAB

ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
        override LFLAGS += -lsocket -lnsl
endif

Y trata de ejecutar make nuevamente:

make  
make install

Ahora creamos algunas carpetas requeridas:

mkdir -p /var/log/sms/stats  
mkdir -p /var/spool/sms/{checked,failed,incoming,outgoing,sent}  
mkdir /var/spool/sms/modem1  
chown www-data:www-data -R /var/spool/sms  
chmod 777 -R /var/spool/sms

Y luego movemos el archivo de configuración original y descargamos un ejemplo de PlaySMS:

mv /etc/smsd.conf /etc/smsd.conf.dist  
cd /tmp   
wget -c https://raw.githubusercontent.com/antonraharja/playSMS/master/contrib/smstools/smsd.conf  
cp smsd.conf /etc/

Para asegurarme de que siempre usaré el dispositivo correcto, usaré un archivo de dispositivo dinámico.

Lee más sobre archivos de dispositivo dinámico en la siguiente URL: http://antonraharja.com/2015/05/14/persistent-paths-for-dynamic-device-file/

nano /etc/udev/rules.d/80-ttyusb-map.rules
ACTION=="add", KERNEL=="ttyUSB[0-9]*", PROGRAM="/etc/udev/rules.d/ttyusb-map.sh %p", SYMLINK+="gsm%c"
touch /etc/udev/rules.d/ttyusb-map.sh   
chmod 755 /etc/udev/rules.d/ttyusb-map.sh   
nano /etc/udev/rules.d/ttyusb-map.sh
#!/usr/bin/perl -w

@items = split("/", $ARGV[0]);
for ($i = 0; $i < @items; $i++) {
    if ($items[$i] =~ m/^usb[0-9]+$/) {
        print $items[$i + 1] . "\n";
        last;
    }
}

Ahora desconecta y vuelve a conectar tu módem, y debería estar ubicado en /dev/gsm*:

ls -l /dev/gsm*   
lrwxrwxrwx 1 root root 7 Jul 24 01:39 /dev/gsm1-1 -> ttyUSB0   
lrwxrwxrwx 1 root root 7 Jul 24 01:39 /dev/gsmmodem -> ttyUSB0

Hice algunos cambios en el archivo, así que aquí está mi configuración, mi módem está ubicado en /dev/gsm1-1 reemplaza eso con tu ubicación.

# Configuración global

#devices = modem1, modem2
devices = modem1

loglevel = 5

# archivos de registro
stats = /var/log/sms/stats
logfile = /var/log/sms/smsd.log

# Directorio de cola predeterminado = /var/spool/sms
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent

# no establecer carpeta de informe, dejar archivos de informe de estado guardados en incoming
#report = /var/spool/sms/report

delaytime = 2
errorsleeptime = 10
blocktime = 180
autosplit = 3
#receive_before_send = yes
incoming_utf8 = yes

# Configuraciones de cola

[queues]
modem1 = /var/spool/sms/modem1
#modem2 = /var/spool/sms/modem2

# Configuraciones del módem

# Nombre del módem: modem1
# Tipo de módem: Wavecom USB
[modem1]
#init = AT+CNMI=2,2,0,1,0;+CMEE=1
#init = AT+CPMS="ME","ME","ME"
device = /dev/gsm1-1
baudrate = 19200
incoming = yes
pin = 3391
report = yes
queues = modem1
decode_unicode_text = yes
cs_convert = yes

# Nombre del módem: modem2
# Tipo de módem: Wavecom USB
#[modem2]
#init = AT+CNMI=2,2,0,1,0;+CMEE=1
#device = /dev/ttyUSB1
#baudrate = 115200
#incoming = yes
#report = yes
#queues = modem2

Reinicia SMS Server Tools 3:

/etc/init.d/sms3 restart

Verifica si SMS Server Tools 3 está en funcionamiento:

ps ax | grep -v grep | grep smsd

Monitorea el archivo de registro de SMS Server Tools 3:

tail -f /var/log/smsd.log

Inicia sesión y configura smstools en el panel web de playsms

Inicia sesión en tu instalación de playsms mi dirección es http://10.255.50.30/

El nombre de usuario es admin
La contraseña es admin

Ahora ve a Configuración => Administrar puerta de enlace y SMSC.

Deberías ver una pantalla como esta:

Ahora haz clic para editar la puerta de enlace smstools.

Y asegúrate de que esté configurado así:

Haz clic en Guardar, y cuando se haya guardado haz clic en volver.

Ahora tienes que configurar el SMSC, así que selecciona el signo + en SMSTools.

Deberías llenar los detalles del SMSC así, en el número de receptor escribe tu número de teléfono del módem.

Cuando hayas terminado haz clic en guardar.

Ahora ve a Configuración => Configuración principal

Y llena los siguientes campos:

ID de remitente predeterminado
Prefijo o código de país predeterminado

Y establece SMSC predeterminado en smstools, como se muestra en la imagen a continuación.

Haz clic en guardar, estamos listos para enviar el primer SMS.

Enviar un SMS

Ahora ve a Mi cuenta => Redactar mensaje

Escribe tu número de teléfono celular en Enviar a, y un mensaje etc. ¡Hola Mundo! en el campo de mensaje, y haz clic en enviar.

Si el mensaje se coloca en cola, puedes seguir la transacción aquí:

Ve a Informes => Todos los mensajes enviados

Los mensajes entrantes que no se manejan se mantienen en sandbox, verás esto en Informes => Sandbox

Y el registro si algo no está ubicado en Informes => Ver registro

Si tienes algún problema con tu configuración, un buen lugar para buscar ayuda es el foro de playsms.

https://forum.playsms.org/

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.