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.zipObtendrá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 -> ReiniciarAhora 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/interfacesMi 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.4Ahora reiniciamos el servicio de red en el Pi:
sudo /etc/init.d/networking restartLuego deshabilitamos DHCP al inicio con este comando:
sudo update-rc.d -f dhcpcd removeSi de alguna manera deseas habilitarlo nuevamente más tarde, simplemente ejecuta el siguiente comando:
sudo update-rc.d dhcpcd defaultsAhora 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 -yPlaySMS
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 restartCuando 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.confCopia 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.shPresiona 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.localAgrega 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 startEdita el archivo vhost de apache:
nano /etc/apache2/sites-available/defaultMi 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 reloadLuego 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-devAhora he conectado el módem Huawei E3131, y puedo verlo listado con lsusb:
lsusblsusb
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 installAhora 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/NetworkcardAhora 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
makeSi 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 2Entonces haz lo siguiente:
nano src/MakefileEl problema es un tabulador faltante, ahora busca:
ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
override LFLAGS += -lsocket -lnsl
endifY mueve la línea override LFLAGS += -lsocket -lnsl con un TAB
ifeq (,$(findstring DISABLE_INET_SOCKET,$(CFLAGS)))
override LFLAGS += -lsocket -lnsl
endifY trata de ejecutar make nuevamente:
make
make installAhora 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/smsY 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.rulesACTION=="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 -> ttyUSB0Hice 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 = modem2Reinicia SMS Server Tools 3:
/etc/init.d/sms3 restartVerifica si SMS Server Tools 3 está en funcionamiento:
ps ax | grep -v grep | grep smsdMonitorea el archivo de registro de SMS Server Tools 3:
tail -f /var/log/smsd.logInicia 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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.