Great
Thanks for the responses. In my case, I like using the background
process rather than the daemon, here's why. The background process
outputs to stdout which allows me to view the debug output of the "-v"
option. This information contains the pings which tell the signal
quality. This avoids having to write this information to the log by
running at log-level 0 rather than log-level 1. This keeps the log files
much smaller as since I am pinging the modem quite often (every 4 minutes).
I currently don't have much time to setup an sqlbox, but I think I will
eventually. I would greatly appreciate the help of Alejandro and others.
First a question. Do I need to recompile with MySQL settings? By this I
mean use the options that point to MySQL for Kannel's standard feature
of storing DLR reports. It wasn't that I could get this to work, it was
just that I wasn't interested in DLR so I didn't use it.
Here is the error message for the "./boostrap"
$ ./bootstrap
+ set -e
+ amvers=no
+ automake-1.10 --version
+ automake-1.9 --version
+ automake-1.8 --version
+ automake-1.7 --version
+ automake-1.6 --version
+ amvers=-1.6
+ test -1.6 = no
+ libtoolize=no
+ glibtoolize --version
+ libtoolize=glibtoolize
+ test glibtoolize = no
+ set +x
+ test '!' -d autotools
+ glibtoolize --copy --force
/usr/bin/glibtoolize: line 1: cd: /usr/share/libtool: No such file or
directory
glibtoolize: cannot list files in `/usr/share/libtool'
_____
It appears I don't have libtool. Now that I ran this I'm noticing that
this error might be different from what I was doing before and required
me to install autotools. It might be as simple as now installing libtool
via Darwin ports. Not exactly sure.
Anyway Thanks again.
Alejandro Guerrieri wrote:
For the record, I'm not the author. I've contributed code and
documentation to the project and I'm currently the code maintainer.
Check the AUTHORS file on the source tree for the complete "cast" ;)
Regards,
Alejandro
On Fri, Mar 13, 2009 at 6:52 PM, Nikos Balkanas <nbalka...@gmail.com
<mailto:nbalka...@gmail.com>> wrote:
Dear Jason,
It is very satisfying to hear stories from the field. In your
case, especially, since its use is so much aligned to its purpose.
I imagine that the original creators and the long time
contributors, would feel very content with your message.
FYI Alejandro G, is the author of sqlbox.
A couple of additions to your setup:
Use "modemtype = siemens_mc75". This will both shorten startup,
and guarantee that you will always get the said modem.
The "&" in Unix (MacOS is a freeBSD clone - I believe) means to
throw the process in the background. Commands to administer
process state are:
"fg" - bring background process to foreground
"^z" (suspend) followed by "bg" - throw foreground process to
background
Background is not the same as daemon. Daemon suppresses output to
stdout (logs are still updating). It is best to run as daemon. I
suspect that it works fine, except that you missunderstood it. Try
the following:
kill all kannel processes.
bearerbox -d -P <confifile>
pgrep -fl bearerbox (or ps -elf | grep bearerbox)
tail -f <bearerbox.log>
You should see 2 bearerbox processes, and logs should be updated
normally. If not, post the logs with the problem.
BR,
Nikos
----- Original Message ----- From: "Jason Higbee"
<ja...@covalentglobal.org <mailto:ja...@covalentglobal.org>>
To: <users@kannel.org <mailto:users@kannel.org>>
Cc: "Nikos Balkanas" <nbalka...@gmail.com
<mailto:nbalka...@gmail.com>>
Sent: Friday, March 13, 2009 8:58 AM
Subject: Re: setup Kannel Mac OSX 10.4, Samba 75 Modem, daemon +
parachute
I wanted to follow up on what I've done in case there are
other's looking to learn form my setup.
Kannel builds great on a Mac once you have the Devopment tool
installed. No problem there. I complied without the MySQL
option because I'm not interested in DLR reports (though I may
need to change that later, read on)
The smskannel.conf is the whole essence of Kannel, so
understanding this one file and you basically understand how
to use Kannel. (at least the basic functions of it). Because I
was interested in keeping the modem awake (keepalive) I setup
this feature to ping the modem with an AT command that
provides the signal strength( in "group = smsc" add "keepalive
= 240" then in "group = modems" add "keepalive-cmd = AT+CSQ").
Using this it will ping the modem every 240 seconds with
AT+CSQ which will return two numbers the first is RSSI (signal
strength from 0 to 31; 99=not detected) and the second number
returned is BER (Interference from 0 to 7; 99=not detected).
So for a good signal (i.e. more "cell phone bars") you want
the RSSI to be high and BER to be low. For my current
location, which the wireless carrier has labeled a 2 bar area,
I typically get RSSI=14, BER=7. It works fine. If the message
is scrambled from too much interference Kannel does a good job
of repulling the message.
For implementation I run Kannel at log-level 1 with the "&"
option selected. This allow me to see the pings of the
keepalive in the terminal window and will also keep Kannel
(the bearerbox running if the Terminal window closes. I'm not
sure exactly what the "&" option is but I bet it's has to do
with Terminal (bash) and not Kannel itself. I also run it with
a parachute "-P" option in Kannel. The daemon option didn't
work for me but using the "&" option solves my needs, it runs
as a process in the background of the computer. You can also
set it up to run as a launchd process. If you are going to set
this up I recommend a program called Lingon for getting your
Kannel startup command into the modified XML that launchd
uses. This will allow you launch Kannel when your computer
first logged in and can restart the bearerbox and smsbox if
you kill them. So with Kannel's parachute option and launchd
you are pretty much bulletproof for keeping Kannel up.
Unfortunately I couldn't get sqlbox running. Took me a long
time to even find sqlbox, eventually I just checked out the
CVS. My problem is with the autoconf bootstrap. It stops
before creating the configure file. I downloaded the latest
version of autoconf via Darwin ports and installed that but
that didn't help. Admittedly, I don't quite understand Darwin
ports. So I gave up on that and have a work around. I could
not get the "get-url" option in the sms-service to send to two
locations so I route it locally to MAMP (apache and Mysql
running locally), the script stores the message locally then
routes it on to the webserver. It would have been nice to have
a sqlbox sitting between the bearerbox and smsbox but this
setup works just fine for preserving messages.
Lastly I'll include the modem and smsc groups I use in
smskannel.conf in case someone needs to get Samba 75 up and
running
group = smsc
smsc = at
smsc-id = falcom
modemtype = auto
device = /dev/tty.usbmodem1B11
keepalive = 240
my-number = 55555555555
connect-allow-ip = 127.0.0.1
group = modems
id = siemens_mc75
name = "Siemens MC75"
detect-string = SIEMENS
detect-string2 = MC75
init-string = "AT+CNMI=2,2,0,1,1"
keepalive-cmd = "AT+CSQ"
That's it. Hope this helps. and thanks to the developers of
Kannel and those who support it in this forum. The project
this is being used for is called PamojaConnect and will allow
charity organizations in rural and remote areas of Africa to
share their work, express there views and ask questions over
SMS. The messages are route live to the web on
http://covalentglobal.org/pamoja , in GoogleMaps, and on Twitter.
Nikos Balkanas wrote:
Hi,
On a final note:
Panic in "kannelise" means the process dies due to
unexpected behaviour (core dump, etc. - never happens,
though). To test parachute quickly:
start bearerbox with -P flag. You should see 2 bearerbox
processes running, one is the child of the other.
Send an unexpected signal to the child, i.e. kill -USR1
<process-id>. Kannel can't be fooled by any normal signal
(INT, ABRT, KILL, SIG, etc.) and will die since it will
consider it a user action ;-)
You will notice that a new child is spawned with new pid.
If you have bearerbox logs open you will see clearly the
reinitialization.
Everyone in the group has plenty of experience with SMSc
timeouts and disconnects. Kannel will realize it when it
tries to send a message and gets an error. It will try to
reconnect and resend the message. That has the danger,
that if you do not send any messages, and the SMSc gets
disconnecterd, kannel won't know it. Therefore most SMScs
have keepalives that kannel understands and will try to
reconnect.
BR,
Nikos
----- Original Message ----- From: "Jason Higbee"
<ja...@covalentglobal.org <mailto:ja...@covalentglobal.org>>
To: "Nikos Balkanas" <nbalka...@gmail.com
<mailto:nbalka...@gmail.com>>
Cc: <users@kannel.org <mailto:users@kannel.org>>
Sent: Thursday, March 05, 2009 11:40 PM
Subject: Re: setup Kannel Mac OSX 10.4, Samba 75 Modem,
daemon + parachute
See in line comments.
-Jason
Nikos Balkanas wrote:
Hi,
Please see inlined answers. For all answers check
relevant info in the latest userguide.
----- Original Message ----- From: "Jason Higbee"
<ja...@covalentglobal.org
<mailto:ja...@covalentglobal.org>>
To: <users@kannel.org <mailto:users@kannel.org>>
Sent: Thursday, March 05, 2009 6:43 PM
Subject: setup Kannel Mac OSX 10.4, Samba 75
Modem, daemon + parachute
Users,
I'm planning a project so I am looking for
advice and corrections on what I think Kannel
can do.
I have:
Mac OS X 10.4.11
Samba 75 (Siemens MC75) USB modem with the
modem scripts
- it can connect with another SMSC program on
port ../tty.usbmodem1B11 or ../cu.usbmodem1B11
(not sure the difference but both seem to work)
I have compiled Kannel 1.4.2 on my Mac but
haven't properly configured and used it as a
SMSC to send and receive messages. I plan on
recompling with Kannel 1.4.3 as the bug report
suggests.
I also have php scripts setup to receive the
HTTP GET requests.
There seems to be a confusion here. I presume you
refer to DLRs (SMS delivery confirmations).
Otherwise kannel doesn't have php builtin and can
only use php to send HTTP requests (Push) .
Sorry for the confusion. the php is my script on my
server set up to receive HTTP GET requests.
Here's what I need Kannel to do:
(1) forward the received messages through a
HTTP GET across the internet;
Yes, through sms-service.
Great.
(2) to run as a Mac daemon so I can sleep the
computer and it will still run.
Mac is Unix. I imagine that anything running
unattented will also run in sleep mode. This is
feature in Unix systems for the past 30 years
(daemons).
Nice. I've used other daemons that run while in sleep
mode and connect to the internet, so it would be great
if I could get kannel to do the same.
(3) to tell me the signal strength of the
modem (i.e. how many 'bars' so I know I'm not
in a deadzone);
Dunno. Maybe someone else can help. But this is
not strictly a kannel issue. If the modem gets
garbled messages, kannel cannot help (GIGO).
Yeah perhaps there's some AT commands I can send
through kannel.
(4) automatically restart itself if it loses
connection to modem (I believe this is called
parachute mode);
No. It will restart only if process panics. But
not to worry. It has a queue. If it looses
connection to an SMSc, this SMSc is marked
inactive. Other SMSc connections can pickup the
traffic. In addition, kannel will try to reconnect
to the inactive SMSc, according parameters set in
the configuration.
That's good. Does anyone have any practical experience
with this? Does Kannel do a good job of detecting when
the SMSc is down and reconnecting? (also, I'll read up
on what exactly 'panic' means).
(5) and store messages received locally in a
database (I believe this done through an addon
called sqlbox; I use MAMP for a local instance
of MySQL but would use anything that would
work with this system).
I don't know MAMP, but yes, you can do that with
sqlbox. Other embedded choices are controlled
through "store-type" paramater in core
configuration and are "file" or "spool" (directory).
Yeah that's great. Just flat files are fine too.
So I am hoping Kannel can hit a home run and
do all that! Please correct me if I'm wrong
and point me in the right direction on these 5
things to create this Kannel system.
Thanks.
Best of luck,
Nikos
Thanks for your comment Nikos, I appreciate it.