модем GSM, запись звука, помощь в экспериментах

смысл разработки?

преамбула:
сегодня мобильная связь заняла лидирующую позицию и у подавляющего большинства населения есть как минимум мобильник.
но даже у дорогостоящих смартфонов нет функции ЗАПИСИ ЗВОНКА. (причина, как я вижу только одна, ЗАКОННОСТЬ записи разговора)
в место этого есть куча левых сервисов, которые предоставляют, на основании подписки за деньги, данную функцию, но они при этом являются посредниками (нужно открывать КОНФЕРЕНЦИЮ при звонке который нужно записать и эти записи хранятся у посредника).
ТАК ВОТ, если у вас уже есть GSM модем (соответственно с симкой) и какой нибудь КОМП (соответственно с ЛИНЕМ), вы сможете сделать и хранить записи на своем компе без дополнительных посредников!!! платя только за электричество.

оборудование:
GSM модем, какой то (у меня хуавей) ...
симка, какая то...
мобильник, какой то...
ну и какой то комп с Арчем (соответственно у меня именно он, но по факту можно любой линь)...

ПО:
picocom или другой терминал.
aplay или другой проигрыватель RAW данных.

ПОРТЫ МОДЕМА:
значения констант могут быть разные у разного железа, поэтому, если нужно, заменить на ВАШИ реальные!!!!

COMMAND_PORT='/dev/ttyUSB0'
DATA_PORT='/dev/ttyUSB1'
COMMAND_PORT_ALL='/dev/ttyUSB2'
эти константы буду в дальнейшем использоваться.
ВНИМАНИЕ! если нет доступа к портам, то дайте себе доступ!!!
ну или всем :)
chmod 777 "${COMMAND_PORT}"
chmod 777 "${DATA_PORT}"
chmod 777 "${COMMAND_PORT_ALL}"
------------------------------------------------------------------------
1. открываем один терминал и запускаем для получения и озвучивания данных.
aplay -t raw -f S16_LE -r 8000 --period-time=20 -D pulse "${DATA_PORT}"
-D pulse - выбираем куда отправлять звуковые данные. в моем случае это pulse (колонки)
текущие параметры звука можно узнать по команде:
AT^CVOICE?
ответ:
^CVOICE: 0, 8000, 16, 20
что означает:
0 - голос поддерживается
8000 - частота
16 - битность
20 - 20mc блок

2. открываем второй терминал и запускаем.picocom.
picocom -c "${COMMAND_PORT_ALL}"

2.1. сброс модема на стандартные настройки.

пока я не знаю что тут нужно делать, у меня со старта работает!!!
НО реально нужно модем подготовить.
переключаем на голосовой режим

AT^CVOICE=0
ответ:
OK

2.2.. включаем вывод данных на "${DATA_PORT}", который у нас уже прослушивается (пункт 1.).

AT^DDSETEX=2
ответ:
OK
3. с мобильник звоним себе на модем (номер симки) и ждем появления сообщения "RING" во втором терминале с запущенным picocom
в мобильнике мы слышим гудки.
3.1. после получения сообщения "RING"
вводим команду "поднять трубку"
ATA
ответ:
^CONN:1,0
и на том устройстве, куда были перенаправленны аудио данные, мы услышим свой голос, который пришел с мобильного.
!!!естественно это будет с задержкой!!!

4. что бы положить трубку с модема нудно ввести команду
ATH
или с мобильного как обычно "положить трубку"
ответ:
^CEND:1,71,0,16

5. для следующего приема звонка повторяем с пункта 2.2.
------------------------------------------------------------------------

И ТАК, у меня это работает...
А КАК У ВАС, получилось?

P/S/ пока так. в данном эксперименте нужно услышать звук в колонках который идет с мобильного!
у меня он очень тихий, так что приходится, при эксперименте, увеличивать громкость!!!
если вы в колонках слышите треск, то звук идет, но с ОШИБКАМИ!!! (надо разбираться)

давайте дополним алгоритм, так как я его упростил до минимума.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
если вы в колонках слышите треск, то звук идет, но с ОШИБКАМИ!!! (надо разбираться)
вот реально, у меня или треск или мой голос слышен. ПО РАЗНОМУ происходит! пока не разобрался в чем прикол (((
cat "${DATA_PORT}" | aplay -t raw -f S16_LE -r 8000 --period-time=20 -D pulse
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
underrun!!! (at least 36,403 ms long)
и вылетает...
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja, поэкспериментировал бы, НО не получится - как то уже приводил свой вывод
AT^CVOICE?
^CVOICE: 1, 8000, 16, 20
В инете пишут, что если 0 - голосовая функция поддерживается, а если 1 - то не поддерживается - хотя это не совсем так, тонкости не знаю, но в DOC написано так (тоже упоминал об этом)
vasek
где 1-ое значение есть Voice mode и согласно DOC: 0 - PC Voice Mode; 1 - Earphone Mode
что конкретно это означает, точно не знаю, но главное в том, что установка в 0 у меня не возможна, так что поэкпериментировать не получится
AT^CVOICE=0
ERROR

В части
nafanja
ПО РАЗНОМУ происходит! пока не разобрался в чем прикол (((
… underrun!!! (at least 36,403 ms long)
Погугли по этому сообщению - подробности не помню, но это связано с опустошением буфера - идет задержка выполнения команды и в итоге получаешь пустой буфер, то есть шумы.
Причины могут быть разными, нужно искать с чем связана задержка. Но если установлен pulseaudio, то рекомендуют его временно удалить, чтобы aplay отправлял данные прямо на звуковую карту, минуя pulseaudio … но это может и не помочь, если причина в другом.
Ошибки не исчезают с опытом - они просто умнеют
vasek, если у тя модем один, то вполне возможно что в момент эксперимента он используется ДЛЯ ДРУГОГО.
и переключить его (в момент эксперимента не удалось)
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
попробуй
AT^CVOICE=?
что покажет?
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
AT^CVOICE=?
что покажет?
Уже приводил в другом топике
AT^CVOICE=?
^CVOICE: (0)
... и как видим 0 ...
Ошибки не исчезают с опытом - они просто умнеют
vasek, ну вроде бы как должно поддерживаться.
это мой профанский вывод.
но для этого нужно что то сделать.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
ну вроде бы как должно поддерживаться.
должно то должно, но нужно с этим досканально разбираться ... и с начала нужно понять что означает Earphone Mode - когда то давно немного читал об этом и запомнилось одно, что для определенных модемов для голосовых функций нужно наличие микрофона - особо ничего на эту тему тогда не нагуглил и забросил.
Ошибки не исчезают с опытом - они просто умнеют
vasek
должно то должно, но нужно с этим досканально разбираться …
с этим могу согласиться

vasek
то для определенных модемов для голосовых функций нужно наличие микрофона
а вот с этим НЕТ!
модем в принципе не может знать о микрофоне!
а получает данные с порта "${DATA_PORT}" , а их может и не быть...
соответственно модем думает что с микрофона идет тишина.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
У тебя в выводе AT^SETPORT=? имеется упоминание VOICE ???
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.