Using gammu-smsd with multiple phone
This mini tutorial will show you how to use gammu-smsd with multiple modem.
The idea of using multiple modem is you want to have backup on your system, or you want to use some scheduler where the first modem work on the day and the second one works on the night, or anything else, it’s depends on your need.
In this implementation, i’m using gammu 1.28 (compilled with MySQL support) and my modem is Sierra Wireless Aircard 881 and Wavecom Fasttrack Supreme WM20392.
OK, now let’s create smsdrc config for these two modem. You can put it anywhere, i’m choosing /etc/.smsdrc-sierra and /etc/.smsdrc-fasttrack.
This is /etc/.smsdrc-sierra configuration:
[gammu]
device = /dev/tty.sierra05
connection = at115200[smsd]
service = MYSQL
PIN = 1234
logfile = /etc/.smsdlog-sierra
debuglevel = 255
phoneid = sierrauser = root
password = password
pc = localhost
database = kalkun
And /etc/.smsdrc-fasttrack configuration:
[gammu]
device = /dev/tty.PL2303-0000101D
connection = at115200[smsd]
service = MYSQL
PIN = 1234
logfile = /etc/.smsdlog-fasttrack
debuglevel = 255
phoneid = fasttrackuser = root
password = password
pc = localhost
database = kalkun
Now, you can run each daemon by passing configuration parameter on it:
$ gammu-smsd -c /etc/.smsdrc-sierra
and
$ gammu-smsd -c /etc/.smsdrc-fasttrack
As you can see, the configuration for this two modem is almost the same, except for one thing, phoneid. phoneid is the key, it’s unique string for every modem you’ve configured. So, if you want to send sms through the first modem (in this case, it’s sierra), you have to specified this in your CreatorID and SenderID field on outbox parameter, for example the SQL statement should be something like this:
INSERT INTO outbox (DestinationNumber, TextDecoded, SenderID, CreatorID, Coding) VALUES (’123456′, ‘Hi, this is sierra.’, ‘sierra’, ‘sierra’, ‘Default_No_Compression’);
Or you can easily do that with gammu-smsd-inject:
$ gammu-smsd-inject -c /etc/.smsdrc-sierra TEXT 123456 -text “Hi, this is sierra.”
Where 123456 is your destination number, you’ve to change it.
So, if you want to send sms over the second modem (in this case, fasttrack), it’s should be like this:
INSERT INTO outbox (DestinationNumber, TextDecoded, SenderID, CreatorID, Coding) VALUES (’123456′, ‘Hi, this is fasttrack.’, ‘fasttrack’, ‘fasttrack’, ‘Default_No_Compression’);
Or, if you are using gammu-smsd-inject:
$ gammu-smsd-inject -c /etc/.smsdrc-fasttrack TEXT 123456 -text “Hi, this is fasttrack.”
OK, now sending sms over multiple modem is works like a charm.
Now, you may ask, how to detect incoming sms comes from which modem? sierra or fasttrack?
The answer is look at the RecipientID from the inbox table, it’s show which modem has the incoming sms. Quick SQL code to get incoming sms from specific modem:
SELECT * FROM inbox where RecipientID=’sierra’;
Or, if you want to get incoming sms from fasttrack:
SELECT * FROM inbox where RecipientID=’fasttrack’;
That’s all for multiple modem ![]()
Kalkun should have this feature in the future

ditunggu fitur ini dan yg masih ditunggu adalah howto upgradenya
Salamat poh.
Bro arie, supaya multiple modem ini bisa digunakan setiap kali reboot bagaimana ya?
@Manda: Tergantung OS nya, kalau Linux bisa ditambahkan di startup file seperti rc.local, kalau di Windows bisa ditambahkan sebagai Services.
Untuk lengkapnya silahkan akses dokumentasi dari gammu
http://wammu.eu/docs/man/en/gammu-smsd.1/
Thanks, nice posting.. sangat membantu.
Salam kenal,
terima kasih artikelnya sangat berguna bagi saya, oya, bagaimana cara mengirim sms multipart selain menggunakan gammu-smsd-inject. Soalnya saya mencoba dengan mengisi tabel outbox dan outbox-multipart selalu gagal terus, memang pesan berhasil terkirim, tetapi sms tidak dapat dibuka di nomor tujuan.
mohon pencerahannya mas…
@Wakidi: Caranya benar yaitu dengan mengisi tabel outbox dan outbox_multipart, tapi perlu diperhatikan ID sms dan UDH nya harus berurutan, misalnya UDH di outbox = 050003D30201 maka UDH di outbox_multipart = 050003D30202 (lihat 2 digit angka terakhir), selain itu field SequencePosition juga diisi dengan urutan pesan, misalnya 2.
Contoh lengkapnya bisa dilihat disini: http://wammu.eu/docs/man/en/gammu-smsd-tables.7/
Thanks! Very Helpful!
terima kasih infonya mas
sangat3 membantu duakali ^^
kalau modem GSM nya ada 40-an apa gammu nya sanggup dan gak ngehang ?
Saya belum nyoba sampai sebanyak itu pak, paling banyak 2 modem.
Thank you! This post really helped me!
Salam kenal ya..
sy sedang mmbuat TA ttg sms gateway, sy menggunakan Gammu..
tp msih blum mengerti utk instalasi dan msih ggal dlam pengiriman sms..
maklum masih belajar, hehe
sy menggunakan hp siemens C55 sbg modem..
mohon pencerahannya yaa..bs via email..
trimaksii
Salam Kenal,
Saya mencoba membuat SMS Gateway menggunakan gammu+Sierra Wireless 881+WIndows 7.
Ketika saya mencoba “gammu identify” kenapa muncul pesan “No response in specified timeout. Probably phone not connected.”??
Padahal saya bisa melakukan sms menggunakan software bawaan sierra (sierra wireless watcher).
Saya sudah mencoba menggunakan gammu versi 1.22.1, 1.24, dan 1.29.0.
Settingan connection untuk gammurc yang saya gunakan at115200
Terima Kasih
@wibi: Mungkin lokasi port yang Anda gunakan salah, coba aktifkan dan lihat log-nya. Pastikan juga tidak ada software lain yang mengakses modem tersebut.
port yang saya gunakan sudah sesuai yang ada di “Control Panel-Modem”.
Untuk mengecek software lain yang mengakses modem itu gimana ya Mas??
masih stuck di no response in specified timeout:(
@wibi: Aktifkan dan lihat log-nya
“No response in specified timeout. Probably phone not connected” … saya sering mengalami masalah ini. Device/port yang saya pakai sudah benar, saya mencoba restart gammu-smsd ketika masalah ini terjadi. Dan hasilnya lumayan, gammu-smsd kembali jalan seperti biasa. Untuk mengatasi permasalahan ini yang terjadi sewaktu-waktu, saya menulis script shell di bawah ini yang dijalankan menggunakan crontab untuk menganalisa 5 baris terakhir dari smsd.log. Jika di file smsd.log ditemukan pesan erro di atas “No response in specified timeout. Probably phone not connected”, maka gammu akan di restart. Script shellnya sebagai berikut:
#!/bin/bash
# war49,,
# mail: line.console49@gmail.com
# attack-research.blogspot.com
GAMMU_LOG_FILE=/var/log/smsd.log
GAMMU_CONF_FILE=/etc/smsdrc
PROC_ID=`ps ax |grep -m 1 “gammu-smsd” | awk ‘{print $1}’`
if `tail -n 5 $GAMMU_LOG_FILE | grep ‘No response in specified timeout’ > /dev/null`; then
# kill gammu procid
kill -9 $PROC_ID
# start gammu
/usr/local/bin/gammu-smsd -c $GAMMU_CONF_FILE &
else
echo “tidak masalah kok” # > /dev/null
fi
# simpel kannn…..
Mas, mau tanya, saya pake sierra 881u juga, dan kmrn sempat pake gammu 1.22, tapi ktnya ga cocok ma sierra nya, karna service sering mati, dan sms ga masuk ke database.
trus berdasarkan postingannya mas, saya ganti pake gammu 1.28.95.
saya pake windows mas, utk setting ‘device’ di smsdrc ma gammurc nya gmn ya mas?
kalo di versi sebelumnya kan pake ‘port’.
mohon pencerahannya.
Makasih banyak..
@bobotha: Sama saja, device adalah “istilah” baru untuk port.
Haloo semua,
Saat saya mencoba proses inject, datanya langsung masuk ke tabel OUTBOX, pertanyaannya, bisa tidak saat proses inject, datanya tidak masuk ke tabel OUTBOX, tapi ke tabel lain, misal OUTBOX_TAMPUNG? Klo bisa, bagaimana caranya? Mohon bantuannya.
Thank’s
@voy: Sepertinya tidak bisa karena sudah di “hardcode” di gammu, silahkan lihat-lihat disini http://gitorious.org/gammu/mainline/blobs/master/smsd/core.c bagian SMSD_InjectSMS dan disini http://gitorious.org/gammu/mainline/blobs/master/smsd/services/sql.c bagian SMSDSQL_CreateOutboxSMS.
Apakah ada alasan khusus untuk menggunakan tabel lain selain outbox?
@war49
bisa dibikinkan yang versi Windows (batch file)?
@voy : jika anda ingin merubah tabel outbox, tentunya anda harus memodifikasi file-file bahasa C tersebut (core.c & sql.c, atau mungkin ada file-file .c lainnya) silahkan edit bagian-bagian yang mengandung outbox, seperti:
GSM_SMSDService SMSDSQL = {
…
SMSDSQL_CreateOutboxSMS,
…
};
GSM_Error SMSD_InjectSMS(GSM_SMSDConfig *Config, GSM_MultiSMSMessage *sms, char *NewID) {
…
/* Store message in outbox */
error = Config->Service->CreateOutboxSMS(sms, Config, NewID);
…
}
dan seterusnya, dst dst. Kemudian di-compile ulang (configure, make, make install atau pake cmake,… dst dst). Karena kode dimodifikasi dan dikompile, maka anda harus siap membenahi error-error yang terjadi.
———————
@ichsan :
Terus terang saya tidak bisa, karena keterbatasan pengetahuan saya. Namun, script di atas bisa anda translate ke batch jika anda faham dengan batch programming. Logikanya sederhana sesuai dengan yang saya tulis di atas. Selain itu, dengan batch cobalah menemukan nomor ID proses gammu-smsd dan dimatikan prosesnya secara otomatis. Jika di shell scripting (bash) saya menggunakan pipe ‘|’, grep dan awk untuk mendapatkan nomor ID proses hasil output dari utility PS.
Mas Azhari HArahap, saya mau tanya nih. Kalau saya menggunakan odem wavecom fastrack M1206B/M1306B Q2406B USB untuk konfigurasi bagian device = … apa ya Mas? Mohon jawabannya dan pencerahannya.
Terima kasih
Catatan: Saya menggunakan OS WIndows
@adi: Tergantung terdeteksinya dimana pak. Kalau di Windows kalau tidak salah ada di Control Panel –> Phone/Modem.
mas ari, saya mencoba mengkonfigurasi beberapa modem sekaligus (misalnya 8 modem) karena ada banyak sekali operator di indonesia tercinta ini. saya menempatkan masing-masing 1 sim card operator kedalam 1 modem. nah, semua sudah terdeteksi oleh gammu. kemudian saya ingin sms yang dikirim/diterima itu berdasarkan modemnya, misalnya sms dari/ke telkomsel di modem ke-1, sms dari/ke XL di modem ke-2 dst, termasuk operator cdma. gimana konfigurasinya mas, terus gimana mengaitkannya dengan kalkun?
@ahmadsobandi: Caranya ya seperti yang saya jelaskan di posting diatas pak. Jadi setiap modem punya phoneid yang berbeda/unik. Untuk menyambungkan dengan Kalkun caranya ada di https://github.com/back2arie/Kalkun/wiki/Multiple-Modem.
@adi
System Properties [shortcut = windows key + pause break] -> Hardware -> Device Manager -> Ports (COM & LPT) -> Prolific USB-to-Serial Bridge (COMx)
Pak, apakah perlu menggunakan multiple modem untuk menerima sms masuk apabila traffic penerimaan sms tinggi. Kalau iya, bagaimana sistem kerjanya ?
Terima kasih untuk jawabannya dan aplikasi yang bermanfaat ini. Bravo!!
Tentunya itu tergantung dari kondisi real di perusahaan bapak, jika memang satu modem dirasa tidak cukup, maka bisa menggunakan modem tambahan untuk memisah trafik, tapi tentunya dengan nomer yang berbeda. Gammu sudah mendukung multiple modem, hanya tinggal mengkonfigurasi di bagian phoneid di smsdrc saja seperti yang dijelaskan di postingan di atas.
I have installed Gammu and trying to add multiple modems but not working please suggest.
Can you provide error or logs?
i want to use gammu-smsd multiple modems 3, 4 all the time on single machine.
This is the error i am getting.
“Error at init connection: Error opening device, it dosen’t exist. (DEVICENOTEXIST[4])”
Have you by any chance configure and test modem connection one by one? it’s looks like gammu can’t find your phone location.
Yes i have checked single modem on gammu which works fine and make a new config file as the default one but new file return this error.
Hmmm, strange.
Can you post your configuration here?
This config file works fine
Run with “gammu-smsd -c .gammu-smsdrc” command
this is the 2nd file for same modem but not work i have follow the instruction of this post.
Run with “gammu-smsd -c /etc/.smsdrc-zong1″ command file saved with this name….
This is the error i am getting.
“Error at init connection: Error opening device, it dosen’t exist. (DEVICENOTEXIST[4])”
Are you sure it’s the right config? what OS do you use? because your config “device = com8:” indicate that you’re using windows, but on “port = /dev/ttyACM0″ is typically for UNIX.
And also are you 2 config for same modem? because once the smsd daemon start, you can access the modem that already used.
I am using linux and i have make 2 config files for same modems but gammu-smsdrc Works fine but the 2nd one is not working giving me error.