Linux.yaroslavl.ru
Вы можете использовать или внешний или внутренний модем. Внутренние стоят меньше и не занимают местоо на столе или корпусе компьютера. Но внешний проще в устанавке и имеет лампочки, которые дают вам сведения о том, что происходит. Однако внешние модемы нужно выключать, когда они не используются, и вероятно, они немного потребляют электричество даже когда выключены.
Внешние модемы
Сначала, удостоверьтесь, что у вас правильный кабель. Ваш модем требует прямой кабель, без пересекающихся штырьков. Любой компьютерный магазин должен иметь их. Удостоверитесь, что вам дали то, что нужно. Если вы используете DB25 последовательный порт, то он всегда будет будет «папа» DB25 (входящий разъем). Не путайте его с параллельным портом, который является «мамой» DB25 (охватывающим). Подключите ваш модем к одному из ваших последовательных портов. Проконсультируйтесь с руководством по вашему модему об том, как сделать это, если вам нужна справка.
Внутренние модемы
Для внутреннего модема вам не нужен кабель. Внутренний модем не нуждается в последовательном порте, он в него встроен. Все, что вы должны сделать — настроить его на незанятые прерывание и адрес порта ввода-вывода. Проконсультируйтесь с вашим руководством по модему, если вы затрудняетесь. Также, см. раздел «Я могу использовать более чем два последовательных устройства?», если вам нужна справка при выборе прерываний или адресов.
На некоторых материнских платах вы должны будете отключить последовательный порт, который заменяет модем, чтобы избежать конфликтов. Это может быть выполнено перемычками или в установках BIOS, в зависимости от вашей материнской платы.
Проконсультируйтесь с руководством по вашей материнской плате.
Если у вас видеоплата IBM8514, то вы должны знать о том, что в ней есть ошибка. Вы можете столкнуться с проблемами, если захотите, чтобы ваш внутренний модем работал на ttyS3. Если Linux не обнаруживает ваш внутренний модем на ttyS3, вы можете использовать setserial, и модем будет прекрасно работать. Внутренние модемы на ttyS <0-2>не должны иметь каких-либо проблем.
Linux не производит автоматической конфигурации на ttyS3 из-за ошибки этой видеоплаты.
Используйте kermit, minicom или другую программу связи, чтобы проверить установку, прежде, чем вы перейдете к более сложным вещам типа SLIP или PPP. Вы можете найти последнюю версию kermit на http://www.columbia.edu/kermit/.
Например, надо сказать, что ваш модем был на ttyS3, и его быстродействие было 115200 бит\сек. Вы должны были бы сделать следующее:
Чтобы вернуться к подсказке kermit, нажав клавишу Ctrl, нажмите клавишу наклонной черты влево, затем отпустите клавишу Ctrl, и нажимите клавишу C:
Нормальный способ состоит в том, чтобы позволить kermit звонить с помощью встроенной базы данных модемов и возможностями автоматическими набора, например, для модема USRobotics (USR):
См. раздел «Программы cвязи» о программах связи, если вам нужны какие-либо указания.
Когда вы делаете исходящий звонок вашим модемом, установите быстродействие последовательного порта самым высоким, которое поддерживает ваш модем (обычно это не более 115200 бит\сек). This is not the same as the «advertised» speed of the modem such as 56K. Версии Linux с libc версии выше 5.x имеют поддержку для скоростей до 115200 бит\сек. В Linux работают даже более высокие скорости, чем эти.
Для использования модема только для исходящих звонков, вы можете сконфигурировать ваш модем.
Если вы предполагаете использовать ваш модем для входящих звонков, вы должны настроить ваш модем на то же самое быстродействие, которое вы предполагаете указать в getty. Однако, большинство модемов сегодня устанавливает свое быстродействие автоматически на одинаковое быстродействие, используя команды модема. Таким образом, getty, запущенный на скорости 115200, автоматически установит модем на это быстродействие, когда getty пошлет init строку на последовательный порт, на котором установлен модем. Вообще, фабричные значения по умолчанию, которые дают возможность исправления ошибок и аппаратного управления потоком данных — это самая лучшая установка для исходящих звонков модемом, проконсультируйтесь с руководством по вашему модему для этих установок.
Источник
Принять звонок 3g модема из консоли
Здравствуйте, являюсь обладателем 3g модема huawei E171 от МТС, он поддерживает голосовые звонки, смс и интернет. Для мака и винды для этого модема есть софт с помощью которого можно слать смс сидеть в нете и звонить. В линуксе я справился с задачей отправки/приема смс, теперь мне нужно следующее: Когда я звоню на этот модем, комп должен взять трубку и включить микрофон, в телефоне я буду слышать все, что происходит рядом с компом, небольшая система безопасности.
Если «модем» прикидывается serial-портом, то при входящем звонке он отдает в порт строчки
RINGING
RINGING
RINGING
RINGING
а если надо снять трубку, командуем в порт
При входящем звонке он отдает команду RING. Это отслеживает мой скрипт, затем тот же скрипт шлет команду ATA, и модем снимает трубку, а как с микрофона аудио передать на модем не знаю! При подключении модема появляются 3 устройтсва ttyUSB0,ttyUSB1,ttyUSB2
Мне известна только вот эта штука: http://forge.asterisk.org/gf/project/chan_datacard/. Это модуль для asterisk’а, который может использовать модемы huawei. Насчёт наличия чего-либо более простого в использовании и подходящего под задачу — хз. Простого способа программно «соединить» микрофон с 3G-модемом точно нет.
При входящем звонке он отдает команду RING. Это отслеживает мой скрипт, затем тот же скрипт шлет команду ATA, и модем снимает трубку, а как с микрофона аудио передать на модем не знаю! При подключении модема появляются 3 устройтсва ttyUSB0,ttyUSB1,ttyUSB2
Судя по всему, аудио-данные (закодированные каким-то кодеком из семейства GSM) нужно писать и читать из ttyUSB1.
Подсказали что аудио-данные должны быть посылаться пакетами по 320 байт каждые 20 мс в формате slin. Вот как создать поток в таком формате и порциями направлять на ttyUSB1, по не могу сделать.
320 байт за 20мс, по моему, маловато. По крайней мере, конечные точки типа bulk по стандарту USB 2.0 предназначены для пересылки больших объёмов данных, блоками по 512 байт. Что же касается формата slin, то это 16 bit Signed Linear PCM. Поэтому, читайте http://www.linuxjournal.com/article/6735 и действуйте по аналогии.
Столкнулся с подобной задачей! Получилось ли у вас отослать голосовые данные на модем? и если да поделитесь советом как это реализовать?
если это PCM — то man sox (конкретно, rec).
Тут дело не в том как создан фаил и сжат он или нет тут дело в передачи этого файла через GSM соединение! то есть как происходит передача пакетами или идёт потоком тут в этом дело.
хз. думаю что что надо копать стандарты на GSM. 🙁
либо reverse-eng .:)
Тут дело не в том как создан фаил и сжат он или нет тут дело в передачи этого файла через GSM соединение! то есть как происходит передача пакетами или идёт потоком тут в этом дело.
Вы не пробовали просто послать звук формата 16 bit Signed Linear PCM в /dev/ttyUSB1, например так cat sound.wav >/dev/ttyUSB1?
как ты себе это представляешь? там же AT-команды ожидаются (GSM subset)
как ты себе это представляешь? там же AT-команды ожидаются (GSM subset)
Зря не пробовали. В ttyUSBx можно посылать всё что угодно, просто модем отвечает только на то что понимает. AT-команды ожидаются в USB0 (ppp-сессия) и USB2 (контрольный интерфейс). Перечитайте тред внимательнее, узнаете много нового.
А вообще тут кто-нибудь засовывал сотовую связь в софтфоны через huawei-мопеды? Астериск такое потянет?
2ArtSh Пробывал посылать тишина в трубке, игрался с форматом выходного wav файла! при чём на обычно dial-up модеме проверил он мне с первого раза проиграл в трубку wav.
После того, как послали команду ATA\r, пошлите команду AT^DDSETEX=2\r
Кстати, что выдаёт модем в ответ на AT^CVOICE?\r
Спасибо большое! в системе два модема ZTE 180S и Huawei E1550 система определяет так: ZTE /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 симлинки соответсвенно ZTE_MODEM1 Пока не разобрался как заставить работать!
Huawei /dev/ttyUSB3 /dev/ttyUSB4 /dev/ttyUSB5 симлинки соответсвенно HUAWEI_MODEM5 команды шлю для Huawei в /dev/ttyUSB5 команда AT^CVOICE? возвращает
команда cat test.wav > /dev/ttyUSB4 в трубке слышится кряхтение и шипение значит в порт пишутся данные и то что в трубке не тишина уже радует
Снял показания снифом в винде и обнаружил что если скидывать всё что приходит с аудио порта модема в wav там не хватает 44 байта что соответствует заголовку wav файла теперь разбираюсь с форматом файла, проигрывать в порт wav блоками по 320 байт или как то иначе ? сейчас буду проверять как подготовить wav файл что бы он нормально воспроизводился!
подпишусь, пожалуй, на тему. Спасибо за подробное описание действий
Источник
Приём и обработка SMS-сообщений на Linux-машине
В одном из наших свежих проектов команде разработчиков была поставлена задача собрать максимально реальные контактные данные о пользователях нашего сайта. Жаркое обсуждение правильных и неправильных форм регистрации, одно- и двушаговые, дополнение информации по мере пользования сайтом… Казалось поток идей не остановится. Однако ни одна из них не гарантировала, что в результате мы не получим кучу никчемных данных. Валидировать? Можно, но разве все предусмотришь? Активация учетной записи через почтовый ящик для его валидации? Но куча сервисов типа 10 Minute Mail сводят на нет эффект. К тому же, специфика проекта не позволяла слишком растягивать процесс регистрации. Решено было, что пользователь должен зайти, сделать своё дело, а потом уже активировать или нет свою учетную запись. В конце концов прозвучала фраза «А давайте активировать по SMS!». Поиск провайдеров, изучение прайс-листов и отказ от идеи взвалить обработку SMS на стороннюю контору… Стало понятно, что принимать и обрабатывать их придется самим.
Скромный опыт работы с VOIP/Asterisk и подбора оборудования для VOIP-шлюза имелся. Полез по старым ссылкам к китайским братьям искать SMS-gateway. Но во-первых время поджимало, во-вторых по опыту работы с ними с первого раза редко что-то выходит, поэтому стало интересно, сможет ли обычный USB GSM-модем справиться. И, забегая вперед, скажу что это решение было правильным. По крайней мере на данном этапе.
Настройка сервера
Итак, ко мне в руки попал модемчик Huawei E1750 (HSPA USB Stick) с контрактом. Первое с чем столкнется человек взявшийся за подобную задачу, это то, что все свежие модели GSM-модемов, в угоду пользователям Windows, опознаются в системе сначала как устройство хранения данных (SCSI CD-ROM). С него запускается autorun, который установит драйвера и переключит модем в режим модема (о как!). Сразу как я узнал это, я решил «приехали». Однако еще полчаса, и была найдена утилита usb_modeswitch, которая выполняет переключение режимов модема. Только после этого модем заработает по его прямому назначению. Запускается и настраивается она просто, тут писать особо нечего.
Ну, с богом! Информации к этому моменту уже было нарыто не сказать чтоб много, но достаточно, чтобы копать в нужном направлении. Существующие решения были отфильтрованы по признаку «работает как демон», в итоге остался один кандидат — SMS Server Tools. Нужно отметить, что оригинальный пакет уже не развивается, но его продолжение SMS Server Tools 3 не только развивается, но и отлично поддерживается своим создателем Mr. Keijo «Keke» Kasvi.
К сожалению, в моей любимой Gentoo не нашлось ebuild-а для свежей версии, последняя имеющаяся версия 2.2.20. Но, недолго погуглив, я нашел уже готовый ebuild для 3-й версии, который и скомпилировал после небольшой его правки. На данный момент у меня установлена и стабильно работает версия 3.1.14.
Как оказалось, настройка smstools является настолько простой, что практически с начальным конфигом можно уже начинать принимать сообщения. Нет, ну конечно, если у вас симка закрыта пин-кодом, Вам его придется добавить в конфигурацию, но это делается очень просто.
Структура файла конфигурации тоже понятна до безобразия (viva unix-way!). В начале файла прописываем глобальные настройки демона, а затем в секциях описываем настройки наших устройств:
# Глобальные настройки демона
.
.
# Наш модем и его настройки
[Huawei E1750 ]
.
# И еще одно устройство, если оно у нас есть, со своими настройками
[AnotherModem]
.
Глобальные настройки
Самый важный параметр, это какие устройства демон будет опрашивать на предмет наличия новых сообщений. Если у вас всего одно устройство, как у меня, просто пропишите devices = HuaweiE1750 , если их у Вас несколько, перечислите их тут через запятую.
Еще два важных параметра — это user = smsd и group = sms . Людям, знакомым с линукс, объяснять их значение не надо, я же ограничусь лишь напоминанием о правильных правах на все ресурсы, к которым демон должен иметь доступ. Ну и упомяну про такие инструкции, как pidfile = /var/run/smsd/smsd.pid , logfile = /var/log/smsd/smsd.log , значение которых тоже должно быть понятно. Кстати, на момент отладки рекомендую вставить в конфигурацию также инструкцию loglevel = 7 , это позволит Вам отслеживать, что же происходит внутри демона. В дальнейшем я выставил loglevel = 5 .
Настройки модема
В принципе, тут тоже, как было обещано, все просто. Однако я столкнулся с некоторыми проблемами, из-за которых я собственно и решился поделиться с Вами информацией.
Одной проблемой стало жгучее желание модема все время соскочить на новое устройство. Один раз он определялся как /dev/ttyUSB0 , в другой раз под другим номером. Такое положение дел не устраивало меня. Поэтому, я стал искать как писать udev правила для устройств. Однако, когда я уже был готов внести свои изменения, обнаружилось, что ebuild usb_modeswitch уже сделал это за меня добавив в систему файл /lib64/udev/rules.d/40-usb_modeswitch.rules , согласно которому в системе появлялся симлинк на девайс по адресу /dev/gsmmodem . Его мы и пропишем в конфигурации.
Второй проблемой стало зависание модема время от времени. К сожалению, вычитывать матчасть времени уже не было, да и гугл выдал такое количество вариантов, что пробовать их все не имело смысла. Поэтому, не особо рассчитывая на помощь, я пополз на форум smstools3. Каковы же были мои удивление и радость, когда keke ответил на мой пост через жалких 2-3 часа. Нет, точного решения он не давал, однако две строки которые он рекомендовал добавить в конфиг раз и навсегда избавили меня от зависаний. Для меня до сих пор остаётся загадкой, где брать значения для них, я не нашел технической документации по модему:
check_memory_method = 1
memory_start = 0
Ну, и третьей проблемой, из-за которой затевался весь сыр-бор, стало написание обработчика SMS. Для этого в конфиг была добавлена инструкция eventhandler = /usr/local/scripts/activate , внутри которого происходила отправка на сервер проекта запроса на активацию учетной записи. Скрипт, получает два параметра — тип события и файл сообщения. Выдергивает из него нужные нам данные, и отсылает на сервер.
Итого, получили вот такой короткий конфиг:
devices = Huawei
loglevel = 5
user = smsd
group = sms
logfile = /var/log/smsd/smsd.log
infofile = /var/run/smsd/smsd.running
pidfile = /var/run/smsd/smsd.pid
alarmlevel = 7
alarmhandler = /usr/local/scripts/activate/smsd-alarm
[Huawei]
device = /dev/gsmmodem
baudrate = 115200
pin = 1111
incoming = high
cmgl_value = 0
check_memory_method = 1
memory_start = 0
eventhandler = /usr/local/scripts/activate
Неожиданный profit
Изначально форма регистрации содержала поле Мобильный телефон — это было в требованиях проекта. Пришедшее SMS должно было быть отправлено с указанного телефона, и учетная запись с этим телефоном активировалась. Однако, как оказалось, пользователи становятся в тупик, когда им в сообщении ничего не надо писать. Сначала после регистрации появилась инструкция «Отправьте на номер 12345678 сообщение с текстом «F»». Потом родилась другая, гениальная как сейчас кажется, идея: из формы было убрано поле Мобильный телефон, после короткой регистрации (Имя, Фамилия, E-mail/login, Пароль), пользователю выдается код, который он должен отправить на указанный номер. По этому коду находится учетная запись, а телефон, с которого пришла СМС-ка заносится в профиль пользователя. Вуаля, у нас есть пользователь, есть его реальный телефон, есть возможность добавить кучу телефонов в свой профиль, и сменить номер телефона в профиле в случае утери старого, отправив еще одну СМС и удалив старый номер.
Источник