Raspberry Pi · 9 min read · Dec 08, 2025

Como instalar um servidor SMS Raspberry Pi

Antes de começarmos

Este tutorial mostrará como você pode configurar um servidor SMS em um Raspberry Pi 2 Model B, executando Raspbian.

Usaremos playsms e smstools. No meu exemplo, usei um modem 3G Huawei E3131.

Raspbian

Primeiro, precisamos baixar o raspbian, você pode pegar a versão mais recente em https://www.raspberrypi.org/downloads/

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

Agora precisamos descompactar o arquivo: 2015-05-05-raspbian-wheezy.zip:

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

Você obterá um arquivo chamado 2015-05-05-raspbian-wheezy.img, este arquivo deve ser gravado no seu cartão micro-sd.

Se você precisar saber alguns conceitos básicos sobre como trabalhar com raspberry pi e gravar a imagem no micro-sd, você pode começar lendo este tutorial:

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

Grave o arquivo de imagem no cartão micro-sd, no meu PC o cartão micro-sd é visto como /dev/mmcblk0 no Linux você pode usar dd:

dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/mmcblk0
  • Observe que o tamanho do bloco definido como 4M funcionará na maioria das vezes; se não, tente 1M, embora isso leve consideravelmente mais tempo.
  • Além disso, observe que se você não estiver logado como root, precisará prefixar isso com sudo.

Quando a imagem for gravada, insira o cartão micro-sd no seu Raspberry Pi e ligue-o.

Quando o Raspberry Pi for inicializado, você deve ver uma tela como esta, na primeira inicialização.

Agora eu seleciono as seguintes opções:

1 Expandir Sistema de Arquivos  
3 Ativar Inicialização na Área de Trabalho/Scratch -> Selecionar Console Texto Console, exigindo login (padrão)  
8 Opções Avançadas -> A4 SSH -> Ativar  
8 Opções Avançadas -> A0 Atualizar   
Finalizar -> Reiniciar

Agora você pode fazer login com o seguinte nome de usuário: pi e senha: raspberry.

Primeiro, configuramos a configuração de rede para nosso servidor editando

sudo nano /etc/network/interfaces

Meu arquivo /etc/network/interfaces se parece com isto (altere a configuração conforme suas necessidades):

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

Agora reiniciamos o serviço de rede no Pi:

sudo /etc/init.d/networking restart

Em seguida, desativamos o DHCP na inicialização com este comando:

sudo update-rc.d -f dhcpcd remove

Se você de alguma forma quiser ativá-lo novamente mais tarde, basta executar o seguinte comando:

sudo update-rc.d dhcpcd defaults

Agora podemos usar um cliente SSH como PuTTY para conectar do nosso PC ao Raspberry Pi.

Agora atualizamos o raspbian com o seguinte comando:

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

PlaySMS

Baixe e instale o 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

Quando solicitado a nova senha para o usuário MySQL “root”, use uma senha forte, neste exemplo usei MyP@$$w0rd

Agora podemos ir para http://your-ip, no meu caso http://10.255.50.30, e veremos uma página mostrando: “ 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

Copie install.conf.dist para install.conf e edite install.conf

Leia install.conf e faça alterações para se adequar à configuração do seu sistema.

Eu editei o arquivo, então ele se parece com isto:

# DADOS DE INSTALAÇÃO
# ============


# Por favor, altere os DADOS DE INSTALAÇÃO abaixo para se adequar às configurações do seu sistema

# Por favor, não altere o nome da variável, você pode alterar apenas o valor

# Nome de usuário do banco de dados MySQL
DBUSER="root"

# Senha do banco de dados MySQL
DBPASS="MyP@$$w0rd"

# Nome do banco de dados MySQL
DBNAME="playsms"

# Host do banco de dados MySQL
DBHOST="localhost"

# Porta do banco de dados MySQL
DBPORT="3306"

# Usuário do servidor web, por exemplo, o usuário apache2 por padrão é www-data
# observe: por favor, certifique-se de que o usuário do seu servidor web
WEBSERVERUSER="www-data"

# Grupo do servidor web, por exemplo, o grupo apache2 por padrão é www-data
# observe: por favor, certifique-se de que o grupo do seu servidor web
WEBSERVERGROUP="www-data"

# Caminho para os arquivos de origem extraídos do playSMS
PATHSRC="$(pwd)"

# Caminho para os arquivos web do playSMS
# observe: por favor, certifique-se do caminho da raiz do seu web, neste exemplo é /var/www/html
PATHWEB="/var/www/html/playsms"

# Caminho para os arquivos adicionais do playSMS
PATHLIB="/var/lib/playsms"

# Caminho para o daemon do playSMS e outros arquivos binários
PATHBIN="/usr/local/bin"

# Caminho para os arquivos de log do playSMS
PATHLOG="/var/log/playsms"


# FIM DOS DADOS DE INSTALAÇÃO
# ===================

Agora execute:

./install-playsms.sh

Pressione Y se tudo parecer OK.

Agora queremos ter certeza de que o playsms inicia na inicialização adicionando uma linha no arquivo rc.local.

nano /etc/init.d/rc.local

Adicione o seguinte ao arquivo: /usr/local/bin/playsmsd start
na parte inferior do arquivo (antes de exit se houver um comando exit).
Dessa forma, o playsmsd será iniciado automaticamente na inicialização.

..
/usr/local/bin/playsmsd start

Edite o arquivo vhost do apache:

nano /etc/apache2/sites-available/default

Meu arquivo vhost se parece com isto:

        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

        # Valores possíveis incluem: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

Agora recarregue a configuração do Aapache2 para aplicar as alterações.

service apache2 reload

Então você deve ser capaz de acessar o site do playsms no seguinte URL:

Vá para http://your-ip etc. http://10.255.50.30

Você pode fazer login com:

nome de usuário: admin
senha: admin

Gateway - SMS Server Tools 3

Primeiro, instalamos as ferramentas de compilação para compilar a versão mais recente. Execute:

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

Agora eu conectei o modem Huawei E3131 e posso vê-lo listado com 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.

Gostaríamos que fosse com ID: 12d1:1506, mas está sendo detectado com 12d1:14fe agora.

Para mudar isso, instalamos o usb_modeswitch no sistema, você pode pegar a versão mais recente daqui:

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

Agora desconecte o modem e conecte-o novamente, depois execute:

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

Agora temos o modo desejado: 12d1:1506.

Em seguida, prosseguimos com SMS Server Tools 3.

Primeiro, fazemos o download, depois descompactamos 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

Se você ver um erro como no meu caso, quando você executa make:

 make
cd src && make -
make[1]: Entrando no diretório '/usr/local/src/smstools3/src'
Makefile:51: * receita começa antes do primeiro alvo.  Parar.
make[1]: Saindo do diretório '/usr/local/src/smstools3/src'
Makefile:10: receita para o alvo 'compile' falhou
make: * [compile] Erro 2

Então faça o seguinte:

nano src/Makefile

O problema é uma aba ausente, agora procure por:

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

E mova a linha override LFLAGS += -lsocket -lnsl com uma TAB

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

E tente executar make novamente:

make  
make install

Agora criamos algumas pastas necessárias:

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

E então movemos o arquivo de configuração original e baixamos um exemplo do 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 ter certeza de que sempre usarei o dispositivo correto, usarei um arquivo de dispositivo dinâmico.

Leia mais sobre arquivos de dispositivo dinâmicos no seguinte 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;
    }
}

Agora desconecte e reconecte seu modem, e ele deve ser localizado em /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

Eu fiz algumas alterações no arquivo, então aqui está minha configuração, meu modem está localizado em /dev/gsm1-1 substitua isso pela sua localização.

# Configuração global

#devices = modem1, modem2
devices = modem1

loglevel = 5

# arquivos de log
stats = /var/log/sms/stats
logfile = /var/log/sms/smsd.log

# Diretório de fila padrão = /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

# não defina a pasta de relatório, deixe os arquivos de relatório de status salvos em incoming
#report = /var/spool/sms/report

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

# Configurações de fila

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

# Configurações do modem

# Nome do modem: modem1
# Tipo de modem: 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

# Nome do modem: modem2
# Tipo de modem: Wavecom USB
#[modem2]
#init = AT+CNMI=2,2,0,1,0;+CMEE=1
#device = /dev/ttyUSB1
#baudrate = 115200
#incoming = yes
#report = yes
#queues = modem2

Reinicie o SMS Server Tools 3:

/etc/init.d/sms3 restart

Verifique se o SMS Server Tools 3 está em execução:

ps ax | grep -v grep | grep smsd

Monitore o arquivo de log do SMS Server Tools 3:

tail -f /var/log/smsd.log

Faça login e configure o smstools no painel web do playsms

Faça login na sua instalação do playsms meu endereço é http://10.255.50.30/

O nome de usuário é admin
A senha é admin

Agora vá para Configurações => Gerenciar gateway e SMSC.

Você deve ver uma tela como esta:

Agora clique para editar o gateway smstools.

E certifique-se de que está configurado assim:


Clique em Salvar, e quando for salvo clique em voltar.

Agora você precisa configurar o SMSC, então selecione o sinal + no SMSTools.

Você deve preencher os Detalhes do SMSC assim, no número do receptor escreva o número do telefone do seu modem.

Quando terminar, clique em salvar.

Agora vá para Configurações => Configuração principal

E preencha os seguintes campos:

ID do remetente padrão
Prefixo ou código do país padrão

E defina SMSC padrão para smstools, como mostrado na imagem abaixo.

Clique em salvar, estamos prontos para enviar o primeiro SMS.

Enviar um SMS

Agora vá para Minha conta => Compor mensagem

Escreva seu número de celular em Enviar Para, e uma mensagem etc. Olá Mundo! no campo da mensagem, e clique em enviar.

Se a mensagem ficar na fila, você pode acompanhar a transação aqui:

Vá para Relatórios => Todas as mensagens enviadas

Mensagens recebidas que não são tratadas são mantidas em sandbox, você verá isso em Relatórios => Sandbox

E o log se algo não estiver localizado em Relatórios => Ver log

Se você tiver algum problema com sua configuração, um bom lugar para buscar ajuda é o fórum do playsms.

https://forum.playsms.org/

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.