On Thu, 10 Aug 2006, Alvaro Cornejo wrote:

Hi

I think I´m not getting it right.

The cable I´ve for my GSM phone is an USB cable. Kannel needs serial. So I
need to connect the Serial port of my PC to the USB cable of the phone.

I was looking for those serial2USB adapters but I found converters from
USB2Serial but not serial2usb. Thus they are not the same thing right?

Do you know where can I found those serial2uSB cables?

usb is serial, it's just faster than a standard db9 connection. you can use kannel to drive a mode, connected to a usb port.

cheers

iain

Regards

Alvaro

-----Mensaje original-----
De: Lars-Hendrik Schneider [mailto:[EMAIL PROTECTED]
Enviado el: Jueves, 10 de Agosto de 2006 09:17
Para: users@kannel.org
Asunto: Re: Connecting USB GSM phones


Hi Alvaro,

Alvaro Cornejo schrieb:
Hi

I´m newbie into kannel.

So far I was unable to make it work and user guide does not say
anithing about USB connections.... Unless I miss something ;-(

I would like to know if there is a way to connect GSM phones to Kannel
using USB cables instead of serial cables. Here in Mexico we can not
find serial cables to connect phones to PC but USB cables. Is there a
way we can use an USB connection ?

I wrote something a longer time ago (see below). First of all, you can
connect a serial device using a Serial2USB converter. Afterwards you can
address the device using sth. like /dev/ttyUSB0 or whatever your system
assigns the device to. The snippet below might help you to understand
what happens here:

++++++++++++++++++ !EOF

Hi everyone,
I have written a small and simple script which I use here to assign my
three modems that are connected using USB to the different kannel instances.

The problem in short:

- I need 3 gsm modems (because there is no routing between the
provider's networks in the destination country :-(.)
- Therefore I use USB to serial converters to connect my modems to the
computer running kannel (on Ubuntu 5.10 Breezy).
- The USB devices are managed by the hotplug daemon assigning a
"/dev/ttyUSBxxx" to every found device, BUT:
- You cannot be sure about the order in which these devices are assigned
(especially when you plugout and plugin again.) So /dev/ttyUSB*** changes...
This led me to a few headaches.
- Solution: Fight the multiheaded USB monster!
(http://www.linuxjournal.com/article/6518)

NOTE: All modems are connected to ONE USB hub using a PL-2303-USB-Serial
converter. (By understanding the syntax of /proc/tty/driver/usbserial
you can add more switches of course!)

Step by step through my tiny script:

- The hotplug daemon needs to be restarted by root. Therefor simple
check for root first.
- Then: Kill all kannel stuff the hard way (easy, just to make sure,
normally the script is run at boot time)
- Now restart the hotplug daemon so that it reads the devices again and
from scratch and automatically assigns them to /dev/ttyUSB0 -> /dev/ttyUSBn
- These information are now stored in /proc/tty/driver/usbserial, hooray!:

<snip>
usbserinfo:1.0 driver:v2.0
0: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1
port:1 path:usb-0000:00:1d.7-4.1
1: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1
port:1 path:usb-0000:00:1d.7-4.2
2: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1
port:1 path:usb-0000:00:1d.7-4.3
</snip>

This reads like:
"0:" -> this is the device /dev/ttyUSB0 (the 0 at the end) that hotplug
found. Wonderful, but normally you can't rely on that this is always the
same modem. Argl.

"module:pl2303 name:"PL-2303" vendor:067b product:2303" -> some
information about the converter, because I use three the same it was not
very helpful to identify every modem by this (but can be if you have
more than 3 modems)...

"path:usb-0000:00:1d.7-4.1" -> here comes the important stuff. Just read
it from the back, so the "1" stands for the physical port 1 of the USB
hub, the "7-4" has something to do with the hub itself, then follows the
 physical address of the USB port to which the hub is connected to.
Read the website above to find more about it.

Well the idea is now: I always connect the modem that uses e.g.
kannel1.conf to the the physical(!) port 1 of the hub, but cannot be
sure that the hotplug will assign it to /dev/ttyUSB0 always (as it mixes
it up). Thats why, have look afterwards and make a symlink to the final
destination and change kannel1.conf e.g. to the symlink /dev/gsm1


Example: So if it is like

3: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1
port:1 path:usb-0000:00:1d.7-4.1

The system knows my modem on port 1 (physical port of the hub) as
/dev/ttyUSB3 - normally a problem, but with a ln -s /dev/ttyUSB3
/dev/gsm1 I can add /dev/gsm1 as fixed device in my kannel.conf, no
matter which device hotplug finds first.

/dev/gsm1 -> /dev/ttyUSB3

I just need 3 modems, and therefore I made only 3 simple if/elif to find
whether my modems are found or not.

As it works for me (as simple as this) - perhaps it puts someone into
the right direction when fighting the multiheaded USB hydra...


Here the script (no, I'm not a bash god but I wanted to give my 2cents
back to the community - perhaps it helps):

greetz from Bonn,
Lars-Hendrik


#!/bin/bash

# setttyUSB.sh - sets /dev/gsm* by hardware address for the GSM modems #
# written by:     Lars-Hendrik Schneider <[EMAIL PROTECTED]>
# date:     2005-01-23
# last change:    2006-02-13
#
# NOTES:    - needs to be run as root
#

# // CHECK FOR ROOT FIRST

ID=`/usr/bin/id -u`
if [ "$ID" != "0" ]; then
    echo "ERROR: This script needs to be run as root!"
    echo "EXIT."
    exit 1
fi

# // SET PATHS & VARIABLES USBSERIAL="/proc/tty/driver/usbserial" # (file
where usbserial settings
are given)
DEVICENAME="PL-2303" # (device 'name:' of the serial converter from
usbserial file)

UNIQUE=`date | md5sum | sed -ne "1s/^0* //" -ne "s/ //gp"` # make a
file/variable/anything unique
TMPFILE=/tmp/$UNIQUE.txt

# // KILLALL BEARERBOX & SMSBOX TO MAKE SURE THAT THEY WILL BE MAPPED
CORRECTLY
echo "NOTE: First try to kill all kannel services ..."
echo " * Try to kill smsbox(es) ..."
killall smsbox
echo " * Try to kill bearerbox(es) ..."
killall bearerbox
echo " * Try to kill wapbox(es) ..."
killall wapbox
# // RESTART HOTPLUG TO ENSURE THE DEVICES ARE READ FROM SCRATCH echo "NOTE:
Restarting hotplugd to read USB devices from scratch ..."
/etc/init.d/hotplug restart

# // DUMP USB DEVICE LIST TO TMPFILE
cat $USBSERIAL | grep $DEVICENAME  > $TMPFILE

# // REMOVE ALL OLD /DEV/GSM* - SYMBOLIC LINKS BEFORE SETTING THE NEW ONES
echo "NOTE: Remove old symlinks in /dev/ ..." rm -f /dev/gsm*

# // READ TMPFILE TO GET DEVICE <-> TTYUSB*
echo "NOTE: Read $USBSERIAL for device linking ..."
exec 3<&0
exec 0<$TMPFILE
while read LINE
do
    TTYUSB=`echo $LINE | cut -d" " -f1`
    USBPATH=`echo $LINE | cut -d" " -f8`
    TTYUSB=`echo $TTYUSB | awk -F':' '{ print $1 }'`
    USBPATH=`echo $USBPATH | awk -F'.' '{ print $3 }'`

    if [ "$USBPATH" == "1" ]
    then
    echo " * NOTE: GSM modem @ port $USBPATH of the hub is known as
/dev/ttyUSB$TTYUSB"
    ln -s /dev/ttyUSB$TTYUSB /dev/gsm$USBPATH
        echo " * NOTE: /dev/ttyUSB$TTYUSB  linked to /dev/gsm$USBPATH"
    # TODO -> Start bearerbox/smsbox for /dev/gsm$USBPATH NOW!

    elif [ "$USBPATH" == "2" ]
    then
        echo " * NOTE: GSM modem @ port $USBPATH of the hub is known as
/dev/ttyUSB$TTYUSB"
    ln -s /dev/ttyUSB$TTYUSB /dev/gsm$USBPATH
        echo " * NOTE: /dev/ttyUSB$TTYUSB  linked to /dev/gsm$USBPATH"
    # TODO -> Start bearerbox/smsbox for /dev/gsm$USBPATH NOW!

    elif [ "$USBPATH" == "3" ]
    then
        echo " * NOTE: GSM modem @ port $USBPATH of the hub is known as
/dev/ttyUSB$TTYUSB"
    ln -s /dev/ttyUSB$TTYUSB /dev/gsm$USBPATH
    # TODO -> Start bearerbox/smsbox for /dev/gsm$USBPATH NOW!

    echo " * NOTE: /dev/ttyUSB$TTYUSB  linked to /dev/gsm$USBPATH"
    else
        echo " * ERROR: GSM modem @ port $USBPATH of the hub is known
as /dev/ttyUSB$TTYUSB - but will not be linked!"
    fi
done

# CLEANUP
echo "NOTE: Remove tmpfiles ..."
rm -f $TMPFILE
echo "NOTE: Done."
+++++++++++++++++++ EOF



Regards

Alvaro


--
**********************************************

terrestris Till Adams & Hinrich Paulsen GbR

Lars-Hendrik Schneider
Diplom-Geograph

Siemensstr. 8
D-53121 Bonn

Telefon: +49 (0)228 - 962 899 53
Fax: +49 (0)228 - 962 899 57
E-Mail: [EMAIL PROTECTED]
Internet: http://www.terrestris.de

**********************************************



Reply via email to