Raspberry Pi · 9 min read · Dec 08, 2025

Come installare un server SMS Raspberry Pi

Prima di iniziare

Questo tutorial ti mostrerà come impostare un server SMS su un Raspberry Pi 2 Model B, che esegue Raspbian.

Useremo playsms e smstools. Nel mio esempio, ho utilizzato un modem 3G Huawei E3131.

Raspbian

Prima dobbiamo scaricare raspbian, puoi prendere l’ultima versione su https://www.raspberrypi.org/downloads/

Url diretto: http://downloads.raspberrypi.org/raspbian_latest

Ora dobbiamo estrarre il file: 2015-05-05-raspbian-wheezy.zip:

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

Otterrai un file chiamato 2015-05-05-raspbian-wheezy.img, questo file deve essere scritto sulla tua scheda micro-sd.

Se hai bisogno di conoscere alcune nozioni di base su come lavorare con raspberry pi e scrivere l’immagine sulla micro-sd, puoi iniziare leggendo questo tutorial:

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

Scrivi il file immagine sulla scheda micro-sd, sul mio PC la scheda micro-sd è vista come /dev/mmcblk0 su Linux puoi usare dd:

dd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/mmcblk0
  • Si prega di notare che la dimensione del blocco impostata su 4M funzionerà la maggior parte delle volte; se non funziona, prova 1M, anche se questo richiederà notevolmente più tempo.
  • Inoltre, nota che se non sei loggato come root dovrai anteporre questo con sudo.

Quando l’immagine è scritta, inserisci la scheda micro-sd nel tuo Raspberry Pi e accendilo.

Quando il Raspberry Pi è avviato, dovresti vedere uno schermo come questo, al primo avvio.

Ora seleziono le seguenti opzioni:

1 Espandi filesystem  
3 Abilita avvio su desktop/Scratch -> Seleziona Console Testo Console, richiedendo login (predefinito)  
8 Opzioni avanzate -> A4 SSH -> Abilita  
8 Opzioni avanzate -> A0 Aggiorna   
Fine -> Riavvia

Ora puoi accedere con il seguente nome utente: pi e password: raspberry.

Prima configuriamo la configurazione di rete per il nostro server modificando

sudo nano /etc/network/interfaces

Il mio file /etc/network/interfaces appare così (cambia la configurazione secondo le tue esigenze):

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

Ora riavviamo il servizio di rete sul Pi:

sudo /etc/init.d/networking restart

Poi disabilitiamo DHCP all’avvio con questo comando:

sudo update-rc.d -f dhcpcd remove

Se in qualche modo desideri abilitarlo di nuovo in seguito, esegui semplicemente il seguente comando:

sudo update-rc.d dhcpcd defaults

Ora possiamo usare un client SSH come PuTTY per connetterci dal nostro PC al Raspberry Pi.

Ora aggiorniamo raspbian con il seguente comando:

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

PlaySMS

Scarica e installa 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 ti viene chiesto di inserire la nuova password per l’utente MySQL “root”, usa una password forte, in questo esempio ho usato MyP@$$w0rd

Ora possiamo andare su http://your-ip, nel mio caso http://10.255.50.30 ,e vedremo una pagina che mostra: “Funziona!”.

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 in install.conf e modifica install.conf

Leggi install.conf e apporta modifiche per adattarle alla configurazione del tuo sistema.

Ho modificato il file, quindi appare così:

# INSTALL DATA
# ============


# Si prega di cambiare INSTALL DATA qui sotto per adattarsi alle configurazioni del tuo sistema

# Si prega di non cambiare il nome della variabile, puoi cambiare solo il valore

# Nome utente del database MySQL
DBUSER="root"

# Password del database MySQL
DBPASS="MyP@$$w0rd"

# Nome del database MySQL
DBNAME="playsms"

# Host del database MySQL
DBHOST="localhost"

# Porta del database MySQL
DBPORT="3306"

# Utente del server web, ad esempio l'utente apache2 di default è www-data
# nota: assicurati che l'utente del tuo server web
WEBSERVERUSER="www-data"

# Gruppo del server web, ad esempio il gruppo apache2 di default è www-data
# nota: assicurati che il gruppo del tuo server web
WEBSERVERGROUP="www-data"

# Percorso ai file sorgente estratti di playSMS
PATHSRC="$(pwd)"

# Percorso ai file web di playSMS
# nota: assicurati che il percorso della tua radice web, in questo esempio è /var/www/html
PATHWEB="/var/www/html/playsms"

# Percorso ai file aggiuntivi di playSMS
PATHLIB="/var/lib/playsms"

# Percorso ai file binari e daemon di playSMS
PATHBIN="/usr/local/bin"

# Percorso ai file di log di playSMS
PATHLOG="/var/log/playsms"


# FINE DEI DATI DI INSTALLAZIONE
# ===================

Ora esegui:

./install-playsms.sh

Premi Y se tutto sembra OK.

Ora vogliamo assicurarci che playsms si avvii all’avvio aggiungendo una riga nel file rc.local.

nano /etc/init.d/rc.local

Aggiungi quanto segue al file: /usr/local/bin/playsmsd start
sul fondo del file (prima di exit se c’è un comando exit).
In questo modo playsmsd si avvierà automaticamente all’avvio.

..
/usr/local/bin/playsmsd start

Modifica il file vhost di apache:

nano /etc/apache2/sites-available/default

Il mio file vhost appare così:

        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

        # I valori possibili includono: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

Ora ricarica la configurazione di Aapache2 per applicare le modifiche.

service apache2 reload

Poi dovresti essere in grado di accedere al sito web playsms al seguente url:

Vai su http://your-ip ecc. http://10.255.50.30

Puoi accedere con:

nome utente: admin
password: admin

Gateway - SMS Server Tools 3

Prima installiamo gli strumenti di build per costruire l’ultima versione. Esegui:

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

Ora ho collegato il modem Huawei E3131 e posso vederlo elencato 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.

Vorremmo che fosse con ID: 12d1:1506, ma attualmente è rilevato con 12d1:14fe.

Per cambiare questo, installiamo usb_modeswitch nel sistema, puoi prendere l’ultima versione da qui:

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

Ora scollega il modem e ricollegalo, quindi esegui:

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

Ora abbiamo ottenuto la modalità desiderata: 12d1:1506.

Successivamente procediamo con SMS Server Tools 3.

Prima lo scarichiamo, poi lo estraiamo e lo installiamo.

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 vedi un errore come nel mio caso, quando esegui make:

 make
cd src && make -
make[1]: Entering directory '/usr/local/src/smstools3/src'
Makefile:51: * recipe commences before first target.  Stop.
make[1]: Leaving directory '/usr/local/src/smstools3/src'
Makefile:10: recipe for target 'compile' failed
make: * [compile] Error 2

Allora fai quanto segue:

nano src/Makefile

Il problema è una mancanza di tabulazione, ora cerca:

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

E sposta la riga override LFLAGS += -lsocket -lnsl con un TAB

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

E prova a eseguire di nuovo make:

make  
make install

Ora creiamo alcune cartelle necessarie:

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 poi sposta il file di configurazione originale e scarica un campione da 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/

Per assicurarmi di utilizzare sempre il dispositivo corretto, utilizzerò un file di dispositivo dinamico. Leggi di più sui file di dispositivo dinamici al seguente 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;
    }
}

Ora scollega e ricollega il tuo modem, e dovrebbe trovarsi in /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

Ho apportato alcune modifiche al file, quindi ecco la mia configurazione, il mio modem si trova in /dev/gsm1-1 sostituisci quello con la tua posizione.

# Configurazione globale

#devices = modem1, modem2
devices = modem1

loglevel = 5

# file di log
stats = /var/log/sms/stats
logfile = /var/log/sms/smsd.log

# Directory della coda predefinita = /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

# non impostare la cartella di report, lascia che i file di report di stato siano salvati in incoming
#report = /var/spool/sms/report

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

# Configurazioni della coda

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

# Configurazioni del modem

# Nome del modem: modem1
# Tipo di 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 del modem: modem2
# Tipo di 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

Riavvia gli SMS Server Tools 3:

/etc/init.d/sms3 restart

Verifica se SMS Server Tools 3 è in esecuzione:

ps ax | grep -v grep | grep smsd

Monitora il file di log di SMS Server Tools 3:

tail -f /var/log/smsd.log

Accedi e configura smstools nel pannello web di playsms

Accedi alla tua installazione di playsms il mio indirizzo è http://10.255.50.30/

Il nome utente è admin
La password è admin

Ora vai su Impostazioni => Gestisci gateway e SMSC.

Dovresti vedere uno schermo come questo:

Ora fai clic per modificare il gateway smstools.

E assicurati che sia impostato in questo modo:

Fai clic su Salva, e quando è salvato fai clic su indietro.

Ora devi configurare l’SMSC, quindi seleziona il segno + su SMSTools.

Dovresti compilare i dettagli dell’SMSC in questo modo, nel numero del ricevente scrivi il numero di telefono del tuo modem.

Quando hai finito fai clic su salva.

Ora vai su Impostazioni => Configurazione principale

E compila i seguenti campi:

ID mittente predefinito
Prefisso predefinito o codice paese

E imposta SMSC predefinito su smstools, come mostrato nell’immagine qui sotto.

Fai clic su salva, siamo pronti per inviare il primo SMS.

Invia un SMS

Ora vai su Il mio account => Componi messaggio

Scrivi il tuo numero di cellulare in Invia a, e un messaggio ecc. Ciao Mondo! nel campo messaggio, e fai clic su invia.

Se il messaggio viene messo in coda, puoi seguire la transazione qui:

Vai su Report => Tutti i messaggi inviati

I messaggi in arrivo che non vengono gestiti vengono mantenuti in sandbox, lo vedrai in Report => Sandbox

E il log se qualcosa non si trova in Report => Visualizza log

Se hai problemi con la tua configurazione, un buon posto per cercare aiuto è il forum di playsms.

https://forum.playsms.org/

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.