Решено: USB 3G modem Мегафон проблема (помогите)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Решено: USB 3G modem Мегафон проблема

Сообщение Arthes »

Есть USB 3G modem Мегафон, тот который везде рекламируют HUAWEI E160G

Задача запустить его в Linux Fedora для отправки информационных СМС.

В интернетах нашел статьи как с помощью AT команд и програмки для работы с такими модемами gnokii отправлять SMS.

Например:

Код: Выделить всё

gnokii --sendsms destination_number


или сразу с тектом

Код: Выделить всё

%# echo test from gnokii | gnokii --sendsms +380503996172


Но программа виснет или на выводе версии программы.
-------------

Устройства /dev/ttyUSB0 и /dev/ttyUSB1 появляются тут же как только модем вставляется в USB порт.


Какие ваши мысли?


P.S Ошибки

Код: Выделить всё

[root@localhost ~]# echo test from gnokii | gnokii --sendsms +79085576279
GNOKII Version 0.6.27
Lockfile /var/lock/LCK..ttyUSB0 is stale. Overriding it..
Telephone interface init failed: Command timed out.
Quitting.
Command timed out.


Конфиг

Код: Выделить всё

# This is a sample ~/.gnokiirc file.  Copy it into your
# home directory and name it .gnokiirc.
# See [url="http://wiki.gnokii.org/index.php/Config"]http://wiki.gnokii.org/index.php/Config[/url] for working examples.
#

[global]

# Set port to the physical port used to connect to your phone.
# Linux version is:
###port = /dev/ttyS0
#
# For MacOSX you will need something like:
# port = /dev/cu.USA28X1P1.1
#
# For Win32 you want to use:
# port = com1:
# or similiar.
#
# FreeBSD (probably NetBSD and OpenBSD too) use:
# port = /dev/cuaa0
#
# With Linux-IrDA you will want to use
# port = /dev/ircomm0
# or similiar.
#
# Use this setting also for the Bluetooth connection:
# port = aa:bb:cc:dd:ee:ff
# when using it with AT driver set it to:
# port = /dev/rfcomm0
# or similiar.
#
# For the Linux USB cables you will need one of the following settings (or
# similiar)
 port = /dev/ttyUSB0
# port = /dev/tts/USB0
# port = /dev/ttyACM0
# the last one will work only with AT driver. The correct setting should be
# given in the dmesg output.
#
# If you use connection type dku2libusb use it to denote which use endpoint
# you'd wish to use. It is useful when you have more than one phone connected
# to your computer using DKU2 cable. Numbering goes from 1 upwards.
# Default is 1.
# port = 1

# Set model to the model number of your phone. For the
# Symbian phones use:
# model = symbian
# For other non-Nokia phones and when you want to use AT
# mode use:
 model = AT
# If you can't figure out what to put here read the FAQ.
# If it still doesn't help, consult gnokii-ml or #gnokii at freenode.
model = 6510
# There are few main models that should make use of the certain drivers.
# These are: 6110, 7110, 6510, 3110, 2110, 6160.

# Set IrDA device name.
# If you use irda connection you may want gnokii to autodetect the irda
# device it connects to. This is fine for most of the cases. if you have
# more than one device in range you may want to give manually the device
# name so gnokii correctly recognizes it. Use the name that you can see
# in the discovery log when the phone with infrared is in the range of
# your irda port.
# Note that you need to set this for each phone_ section separately. It
# isn't nested from the global section.
# irda_string = Nokia 6610i

# Initlength controls the number of characters sent to the
# phone during initialisation.  You can either set it to
# the word "default" or a positive integer.
#
# You can try setting this value if you want to connect
# to the phone quicker.  If you've never noticed the
# connection to be slow, it is suggested that you
# leave this alone.  Read the initialisation code in fbus-xxxx
# to understand what this changes if you're curious.
initlength = default

# The type of the connection, for IR set this to infrared or irda.
# For the nk6110 driver only infrared is valid for the IrDA connection.
# See Docs/gnokii-ir-howto for more detailes on this.
# If you have 6210/6250/7110 phone and dau9p cable (the one you can
# use with 6100 series and cannot use hardware modem from the phone)
# you may want to use 'dau9p' value to get faster initialization.
# If you use dlr3 or dlr3p cable for nokia phones in FBUS mode (ie.
# you don't use model = AT) you may want to use 'dlr3p' value here.
# Note that it is recommended and currently the best way to use this
# cable with nk6510 driver.
connection = serial
# With DKU-2 cable use the following setting if you want to libusb driver
# (recommended):
# connection = dku2libusb
# or the following setting if you want to use Linux kernel driver
# connection = dku2
# With DKU-5 cable use the following setting
# connection = dku5
# For Bluetooth and AT driver use the following setting
# connection = serial
# For other Bluetooth settings use
# connection = bluetooth
# For infrared connection with phones other than Nokia 6110/6130/6150 use:
# connection = irda
# Don't forget to run: 'irattach irda0 -s' or similiar before running gnokii
# For connection with a PC/SC compatible Smart Card reader use:
# connection = pcsc

# Set this to 'yes' if you want gnokii to set and check the lock file in
# /var/lock directory. It avoids potential conflicts with other serial
# port software (eg. minicom). If you have wrong permissions for the
# directory, a warning will be generated. If you don't want a lockfile, set
# it to 'no'.
#use_locking = no
use_locking = yes

# Baudrate to use on serial port connections.
# Currently used only by models AT and BIP/CIMD. Defaults to 19200.
serial_baudrate = 19200

# Force waiting after each sent character the specified usec time.
# Value -1 forces the fastest 'block' writing,
# value 0 writes each character separately without any explicit waiting,
# other positive values specify the appropriate 1/1000000 sec delaying.
# Siemens M20 requires at least "1"!  FIXME: Model-driven autodetection
#serial_write_usleep = 10000

# Force serial port handshaking mode, useful primarily for "AT" model.
# Gnokii "AT" model uses software handshake by default.
# Possible values: hardware (RTS/CTS - 7 wires) or software (XON/XOFF - 3 wires)
#handshake = software

# If defined (not commented out by '#') it will quit Gnokii anytime
# when DCD line will drop.
#require_dcd = 1

# If you are using a bluetooth connection, you can specify the rfcomm
# channel number here. If you don't specify the value, it is autodetected
# on connection (it may take an additional second). If none is detected,
# we assume default value: 1.
#rfcomm_channel = 1

# There may happen various timeouts during the communication with the phone.
# This parameter enables the retransmission policy. Ie. if the phone doesn't
# respond, we send the frame again. This happened mainly with the older
# phones. You may want to enable it when you see mysterious timeouts.
# Be very careful with this option. It is suspected to cause phone breakage
# with new DCT4 phones (like Nokia 6100). By default it is switched off
# (sm_retry = 0)
#sm_retry = 1

# Run the specified script(s) right after opening and initializing the device
# and before any communication (right before closing for disconnect_script).
# You may find handy to use it to connect your modem to SMS Center
# when using BIP or CIMD protocols
# Non-absolute path is relative to the specific directory where gnokii is run!
#connect_script = /absolute/path/to/gnokii/Docs/sample/cimd-connect
#disconnect_script =

# When sending SMS you can experience timeouts. This is the feature of the
# overloaded SMSCs. The phones waits for the response from the SMSC confirming
# that it received the short message. When the SMSC is DoSed with many requests
# it will take more time to get the response. Adjust it to your needs. The
# value is given in seconds to wait. Defaults to 10 seconds. Set to 0 to wait
# forever.
smsc_timeout = 10

# Set this to 1 if you want to break your phone with xgnokii. Works only
# with few Nokia models and FBUS communication
[xgnokii]
allow_breakage = 0

# Set bindir to point to the location of the various gnokiid binaries.
# In particular ensure that mgnokiidev is in this location, with
# permissions 4750, owned by root, group gnokii.  Ensure you
# are in the gnokii group and that the group exists...
[gnokiid]
bindir = /usr/sbin/

# Any entries in the following two sections will be set as environment
# variables when running the scripts.
# Handy for use for $VAR substitutions in your chat(8) script.
[connect_script]
# Don't put your phone number here!!!
TELEPHONE = 12345678

[disconnect_script]


# The following parameters control how libgnokii handles the debugging messages.
# Currently there are three categories: "debug" controls the libgnokii
# normal debug output, "rlpdebug" controls the debug output of the RLP
# subsystem, and "xdebug" is used by the xgnokii or smsd.

[logging]

# where to log the debug output (on: stderr, off: /dev/null)
#debug = on
debug = off

# where to log the rlp debug output (on: stderr, off: /dev/null)
rlpdebug = off

# where to log X debug output (on: stderr, off: /dev/null)
xdebug = off

# Fake-phone can be used for testing Gnokii functionality without
# having a physical phone connected.
# Example usage:
# gnokii --config gnokiirc --phone fake --identify
[phone_fake]
port = foobar
model = fake
connection = serial
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Решено: USB 3G modem Мегафон проблема

Сообщение arkhnchul »

AT-команды?
man chat. Зачем gnokii?
Losing is fun!
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Arthes »

arkhnchul писал(а):
30.11.2009 15:55
AT-команды?
man chat. Зачем gnokii?


AT команды работают и что дальше???
У меня задача сделать общение с модемом максимально удобным чтоб написать программу для отправки SMS нужным абонентам.

gnokii под это дело вроде неплохо бы подошла, причем у нее есть и WIN версия...

Кстати отключил невывод ошибок и вот что получил

----------это когда COM3 порт уже занят например на нем работает консоль гипертерминала.-----------

Код: Выделить всё

» SPOILER «
GNOKII Version 0.6.27
LOG: debug mask is 0x1
Config read from file C:\Documents and Settings\XXX\_gnokiirc
phone instance config:
model = 6510
port = com3:
connection = serial
initlength = default
serial_baudrate = 115200
serial_write_usleep = -1
handshake = software
require_dcd = 0
smsc_timeout = 10
rfcomm_channel = 0
sm_retry = 0
Connecting
Serial device: opening device com3:
Couldn't open FBUS device: Result too large
Error in link initialisation: 1
Serial device: opening device com3:
Couldn't open FBUS device: Result too large
Error in link initialisation: 1
Serial device: opening device com3:
Couldn't open FBUS device: Result too large
Error in link initialisation: 1
Telephone interface init failed: Command failed.
Quitting.3
Command failed.


-----------Это когда COM3 порт свободен-------------

Код: Выделить всё

» SPOILER «
W:\RRRR>gnokii --sendsms +7123456789
GNOKII Version 0.6.27
LOG: debug mask is 0x1
Config read from file C:\Documents and Settings\XXX\_gnokiirc
phone instance config:
model = 6510
port = com3:
connection = serial
initlength = default
serial_baudrate = 115200
serial_write_usleep = -1
handshake = software
require_dcd = 0
smsc_timeout = 10
rfcomm_channel = 0
sm_retry = 0
Connecting
Serial device: opening device com3:
Serial device: setting speed to 115200
Serial device: setting RTS to low and DTR to low
Getting model...
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Serial device: closing device
Serial device: opening device com3:
Serial device: setting speed to 115200
Serial device: setting RTS to low and DTR to high
Getting model...
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Serial device: closing device
Serial device: opening device com3:
Serial device: setting RTS to low and DTR to low
Serial device: setting RTS to high and DTR to high
Serial device: setting speed to 19200
Switching to FBUS mode
Serial device: setting speed to 115200
Getting model...
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Message sent: 0x1b / 0x0006
00 01 00 07 01 00 |
SM_Block: exiting the retry loop
Serial device: closing device
Telephone interface init failed: Command timed out.
Quitting.
Command timed out.


-------------------------------------------------
(WIN версия)
И это при том что с пом AT команд SMS из Гипертерминала или из Putty отсылаются
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Решено: USB 3G modem Мегафон проблема

Сообщение arkhnchul »

вам это на автомате делать надо или руками по одной смске?
Losing is fun!
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Arthes »

arkhnchul писал(а):
01.12.2009 17:57
вам это на автомате делать надо или руками по одной смске?


Нет это надо делать на автомате.
По одной SMS-ке можно вручную подсоединившись к модему как COM3 порту отсылать SMS с помощью AT команд.
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Решено: USB 3G modem Мегафон проблема

Сообщение arkhnchul »

Нет это надо делать на автомате.

ну так man chat. Стандартное средство передачи AT-команд. Великолепно вызывается из скриптов и внешних прог. Зачем вам лишние костыли в виде gnokii, если нужны только АТ без интерфейса?
Losing is fun!
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Ленивая Бестолочь »

есть такой демон - smsd, к нему в комплекте идет утиликта sendsms. для настройки в ней русского языка придется проделать небольшую операцию (если надо - помогу).
только вот я не знаю, как оно работает с 3g модемами, у нас оно шлет заббиксовые сообщения через телефон, подключеный по usb.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Arthes »

Все решено. И gnokii стала работать.

Надо было просто закоментить модель телефона Нокия и раскоментить AT generic модель модемов. Коим и является Мегафон модем.
Теперь все шлется...

Код: Выделить всё

# This is a sample ~/.gnokiirc file. Copy it into your
# home directory and name it .gnokiirc.
# See http://wiki.gnokii.org/index.php/Config for working examples.
#

[global]

# Set port to the physical port used to connect to your phone.
# For Win32 you want to use:
port = com3
# or similiar.
#
# Set model to the model number of your phone. For the
# Symbian phones use:
# model = symbian
# For other non-Nokia phones and when you want to use AT
# mode use:
model = AT
# If you can't figure out what to put here read the FAQ.
# If it still doesn't help, consult gnokii-ml or #gnokii at freenode.
#model = 6510 <<<<<<<<<<<<<<<< вот это надо было закоментировать
# There are few main models that should make use of the certain drivers.
# These are: 6110, 7110, 6510, 3110, 2110, 6160.

-||-||-||-||-||- (отсальное без изменений)


------------------------------------------------------------------
Но как вы и сказали проблема с кириллицей...
Подскажите как слать sms на русском, а то пользователи НегодуЕ :cray:

----> Таки как раз используется демон smsd который уже прикрутили к php форме...
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Ленивая Бестолочь »

Код: Выделить всё

excel:~# cat /usr/local/sbin/unicode2sms
#!/bin/sh

# checkhandler for SMS Tools 3
# autoconverts cyrillic messages to UCS-2BE
# add checkhandler=/path/to/ucsautoconvert into global part of smsd.conf
# written by lexy (lexy@mrlexy.ru), 2008

FILE=`mktemp /tmp/smsd_XXXXXX`

if [ ! `grep '[А-Яа-я]' $1 > /dev/null` -o `grep 'Alphabet:\s*U' $1 > /dev/null` ]
    then exit 0
fi

cat $1 | awk '{if(NF==0) {s=1} if(s==0 && NF>0 && $0!~/Alphabet:[ \t]*U/){print}}' > $FILE
echo Alphabet: Unicode >> $FILE
cat $1 | awk '{if(NF==0) {s=1} if(s==1){print}}' | iconv -t UCS-2BE >> $FILE

mv $FILE $1
chmod 664 $1

этому скрипту даете права на запуск и добавляется строку

Код: Выделить всё

checkhandler = /usr/local/sbin/unicode2sms

в smsd.conf
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Arthes »

Ленивая Бестолочь писал(а):
15.12.2009 16:08

Код: Выделить всё

excel:~# cat /usr/local/sbin/unicode2sms
#!/bin/sh

# checkhandler for SMS Tools 3
# autoconverts cyrillic messages to UCS-2BE
# add checkhandler=/path/to/ucsautoconvert into global part of smsd.conf
# written by lexy (lexy@mrlexy.ru), 2008

FILE=`mktemp /tmp/smsd_XXXXXX`

if [ ! `grep '[А-Яа-я]' $1 > /dev/null` -o `grep 'Alphabet:\s*U' $1 > /dev/null` ]
    then exit 0
fi

cat $1 | awk '{if(NF==0) {s=1} if(s==0 && NF>0 && $0!~/Alphabet:[ \t]*U/){print}}' > $FILE
echo Alphabet: Unicode >> $FILE
cat $1 | awk '{if(NF==0) {s=1} if(s==1){print}}' | iconv -t UCS-2BE >> $FILE

mv $FILE $1
chmod 664 $1

этому скрипту даете права на запуск и добавляется строку

Код: Выделить всё

checkhandler = /usr/local/sbin/unicode2sms

в smsd.conf


Я не использую smstools а использую gnokii-smsd-mysq. И у него нет файла smsd.conf.

Более того когда я просто отправляю через консоль напрямую через gnokii то кириллица отображается нормально! Системная локаль Федоры 10 RUS

Код: Выделить всё

[root@localhost smsd]# cat /etc/sysconfig/i18n
LANG="ru_RU.UTF-8"
SYSFONT="latarcyrheb-sun16"


Код: Выделить всё

[root@localhost sms_test]# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=


Локаль БД в UTF8
Спасибо сказали:
Аватара пользователя
arkhnchul
Сообщения: 2284
Статус: Толчковый инженер
ОС: Debian, Fedora

Re: Решено: USB 3G modem Мегафон проблема

Сообщение arkhnchul »

iconv --list:
.....
TIS620.2529-1, TIS620.2533-0, TIS620, TS-5881, TSCII, TURKISH8, UCS-2,
UCS-2BE, UCS-2LE, UCS-4, UCS-4BE, UCS-4LE, UCS2, UCS4, UHC, UJIS, UK,
UNICODE, UNICODEBIG, UNICODELITTLE, US-ASCII, US, UTF-7, UTF-8, UTF-16,
....

перекодируйте перед отправкой...
Losing is fun!
Спасибо сказали:
Arthes
Сообщения: 282
ОС: OS X Yosemite and CentOS

Re: Решено: USB 3G modem Мегафон проблема

Сообщение Arthes »

Проблема решена так:

Попробовал отсылать сообщения программой gnokii просто через консоль на русском. И пришла русская смс.
Это натолкнуло на мысль о том что smsd русские присылал кракозябрями потому что тескт смс и номера он берет в БД.
Так как системная локаль была UTF8 и все с кириллицей было нормально, то вопрос решился принудительной работы mysql с UTF8, путем след редактирования /etc/my.cnf

Код: Выделить всё

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
init-connect="SET NAMES utf8"
default-character-set=utf8
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

[mysql]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


Всем большое спасибо за помощь.
Спасибо сказали: