Некоммерческая прошивка AVC-56K

Материал предоставлен USRSupport (www.USRSUpport.ru) - медиа-порталом по продукции компаний 3Com, U.S.Robotics и Palm.

Введение:

Настоящая статья имеет целью познакомить посетителей сайта с прошивкой "AVC56K" Андрея Ваваева и облегчить как их переход на неё с прошивок ID_SDL v4.xx, так и обратный переход. Здесь и далее под "прошивкой" понимается управляющая модемом микропрограмма, размещаемая в постоянном запоминающем устройстве модема, причём в модемах USR Courier V.Everything, как правило (а для "родных" модемов -- всегда), в качестве такого запоминающего устройства применяется флеш-память объёмом 4 мегабита (512 килобайт).

В данной статье использован творчески переработанный мною материал из аннотаций к прошивкам "AVC56K" версии 2.1.6 и "ID_SDL" версии 4.03, а также материалы из ньюс-группы (эхи) news://fido7.ru.usr (RU.USR).

Итак, с чего всё началось и зачем это надо?.. Андрей Ваваев в аннотации к прошивке "AVC56K" пишет буквально следующее: "Учитывая большую распространённость модемов USR в России, а также отсутствие в настоящий момент разработки фирменных прошивок, ориентированных на наш рынок, мы посчитали целесообразным создать новый Freeware-проект для развития микропрограмм управления модемами USR Courier и USR Sportster. Разработка альтернативных ветвей развития микрокода к модемам USR Courier ведётся достаточно давно, начиная с моделей 14400 (проект RC-21600 питерской команды HT-System). В 1995 году появились первые разработки для Курьеров 28.8/33.6 -- "додоновские" прошивки, которые были коммерческими. В 1997 и 1998 годах появились первые свободно распространяемые проекты Константина Норватова (KN_SDL), а потом и Игоря Дягилева (ID_SDL)".

"Известные события", -- пишет далее Андрей Ваваев, -- "а также понимание того факта, что Freeware проекты развиваются значительно быстрее, подтолкнули меня к созданию качественно нового проекта, призванного улучшить работу модемов USR, а также помочь пользователям быстрее разобраться в настройке и эксплуатации этих модемов. Новый интернет-сайт http://www.USRModem.ru создан именно с этой целью".

Основные отличия прошивки AVC56K от ID_SDL

По словам Андрея Ваваева, "если чего-либо нет в AVC по сpавнению с ID_SDL, то чаще всего это означает бесполезность данной функции для подавляющего большинства пользователей (на мой взгляд). Основное напpавление дальнейшего pазвития пpошивки -- каpдинальная пеpеpаботка пpотокола V42/V42bis, так как оpигинальная pеализация USR изобилует ошибками и неоптимальным кодом. Hачаты pаботы по pеализации в Куpьеpе нового помехоустойчивого пpотокола, аналогичного по пpинципу действия небезызвестному TurboPEP. Эта технология на поpядок устойчивее, чем HST".

Прошивка выпускается в двух видах:

Соответствие настроек AVC56K настройкам ID_SDL

Озвучивание ретрейнов (процедур перетренировки модемов) включается командами ATM4 или ATM5, которые аналогичны используемым в прошивках ID_SDL командам ATM3+SA1+SB0 и ATM1+SA1+SB0 соответственно. Озвучивание спидшифтов (адаптивных изменений скорости без вызова процедуры ретрейна модемов) в текущей версии прошивки не предусмотрено.

Требование тонального (частотного) DTMF-пароля включается, в отличие от прошивок ID_SDL, не расширенным синтаксисом команды AT%T, а прописыванием требуемого пароля в 5-ой ячейке телефонных номеров (AT&Z5=пароль, он сохраняется в NVRAM) и взведением в единицу 3-го бита регистра S86 модема (S86.3=1). Процесс ожидания пароля прекращается по истечении тайм-аута, заданного в регистре S7, а при вводе неправильной цифры опрос начинается с начала.

Рассмотрим прочие дополнительные команды прошивки AVC56 в плане поиска аналогов в прошивках ID_SDL. Около каждой дополнительной команды указан в скобках её аналог в прошивке ID_SDL v4.03
КомандаОписание
ATBnВыбор метода модуляции при входящих и исходящих звонках
n = 0 (+SSA) Автоматический выбор метода модуляции. Модем выберет наивысшую модуляцию для конкретных условий. Приоритетность протоколов, и соответственно -- последовательность их перебора, такова: V.90, x2, V.34+, V.34, V.32terbo/ASL, V.32bis, V.32, V.22bis, V.22. Выбор протокола HST должен быть явно указан командой ATB1
n = 1 (+SSH) Выбор протокола модуляции HST.
n = 2 (&U1&N3) Выбор протокола модуляции V.22/V.22bis
n = 3 (+SST ?) Выбор протокола модуляции V.32/V.32bis/V.32terbo/ASL
n = 4 (нет аналога) Выбор протокола модуляции V.34/V.34+
n = 5 (+SSF) Выбор протокола модуляции V.FC
n = 9 (нет аналога) Выбор протокола модуляции V.90 или x2
ATR(+SR или +SR1) Определение номера с последующей эмуляцией сигналов АТС
ATR1(+SR1) Эмуляция сигналов с последующим переходом в командный режим без опускания трубки
ATJn(+SPn)Управление гнездом телефона для модемов с установленным дополнительным реле
n = 0Стандартный режим управления телефоном
n = 1Телефон всегда выключен
n = 2Телефон всегда включен

Рассмотрим аналогичным образом дополнительные регистры прошивки AVC56K. В скобках указано значение, устанавливаемое командой AT&Fn, далее в скобках указан аналог в ID_SDL (если он существует) и значение аналога по умолчанию. S99 (4)
Дополнительный регистрОписание
S70 (3) (+S64(0), кроме +S64.2)Режимы отображения и работы АОН:
=0Выключение АОНа (запрос не выдается)
=1Отображать номер отдельной строкой CALLER ID: nnnnnnn:k
=2Отображать номер в строке соединия CONNECT
=3Сочетает режимы n=1 и n=2
=4Определяет номер, но не отображает его. Впоследствии номер можно посмотреть в статистике по команде ATI6
S71 (8) (+S72(7)+1)Длина номера АОН, включая категорию абонента. Максимально допустимое значение - 8.
S72 (30)(+S61(2)*10?)Уровень сигнала запроса к аппаратуре АОН (от 0 до 63) Значение 0 соответствует минимальной громкости сигнала запроса, а значение 63 - максимальной громкости. Как правило достаточно значения по умолчанию (30). Слишком сильный сигнал запроса может заглушить приемник модема и создать помеху для правильного определения номера.
S73 (25)(+S60(30))Пауза после подключения к линии и перед посылкой запроса АОН (в 10-миллисекундных интервалах).Так как после поднятия трубки модемом в линии происходят переходные процессы, то необходимо выдерживать паузу перед определением номера, которая и задается в этом регистре. На разных линиях и станциях оптимальное значение может различаться. Но необходимо помнить, что слишком маленькие значения этого регистра (близкие к 0) создают предпосылки для ложного срабатывания фильтров АОНа на помехи во время переходных процессов, а слишком большие значения (более 50) не позволят вовремя послать запрос на АТС, в результате чего номер не определится.
S74 (1)(+S71(10)*0.01) Максимальная длительность запроса АОН (в секундах) Один длинный запрос позволяет упростить алгоритм определения, а также удовлетворяет некоторым кривым станциям, для которых стандартной длительности запроса (обычно 100 мс) недостаточно. Кроме того, удаденные модемы иногда принимают за BUSY серию коротких гудков в тех случаях, когда номер не определяется. Для междугородних соединений значение этого регистра можно увеличить до 2-ух. Но не рекомендуется ставить его больше 3-х секунд, так как номера некоторых абонентов не определяются по определению, и они будут вынуждены слушать длинный гудок.
S75 (3)(+S63(15)*0.01 при +S61=1) Таймаут на весь ответ от аппаратуры АОН (в секундах)
S76 (100)(старший полубайт +S2(0x8C)*10) Параметр импульсного набора: время импульса (в миллисекундах).
S77 (80)(младший полубайт +S2(0x8C)) Параметр импульсного набора: время между цифрами (в 10-мс интервалах).
S78 (30)(+S67(6)*10?)Громкость сигналов эмуляции по команде ATR и CID
S79 (42)(нет аналога)Частота сигналов эмуляции в десятках герц.
S80 (2)(+S18(2)) Чувствительность входного аналогового тракта АЦП модема во время сеанса связи:

1 = -6 dB
2 = 0 dB
3 = +6 dB

S81 (1)(+S19(1)) Общая регулировка уровня выходного сигнала аналогового тракта ЦАП модема:

1 = 0 dB
2 = -6 dB
3 = -12 dB

S82 (2)(+S18(2), фильтры по +S3(0), +S4(0)) Чувствительность входного аналогового тракта АЦП модема во время набора номера и процедуры соединения:

1 = -6 dB (ослабление чувствительности)
2 = 0 dB
3 = +6 dB (усиление чувствительности)

На некоторых телефонных станциях настолько громкие сигналы отбоя и готовности (busy и dialtone), что они перегружают входные цепи модема, в результате чего сигнал сильно искажа- ется и модем не модет опознать сигналы АТС. В таких случаях необходимо понизить чувствительность входных цепей модема, установив значение этого регистра в 1 (S82=1). Усиление чувствительности на этапе установления соединения, как правило, не требуется.

S83 (2)(нет аналога) Минимальный уровень детектирования сигналов "занято" (busy) и "диалтон" (dialtone) (0-255). Иногда на фоне громких сигналов "занято" в линии присутствует негромкий, но постоянный сигнал 425гц, который модем воспринимает как непрерывный сигнал dialtone вместо того, чтобы поймать busy. Увеличение значения этого регистра позволит избежать такого эффекта.

Проконтролируйте настройку, используя результаты команды ATY4.

S84 (0)(нет аналога) Тип фильтра для определения "занято" и "диалтон" (0-3). Сигнал DIALTONE на всех телефонных линиях должен удовлетворять некоторым стандартам и составлять 425 +/- 25Гц. Для выделения этого сигнала модем использует специально настроенный фильтр, который определяет присутствие в линии сигнала 425Гц. Однако некоторые АТС (или люди, которые их делали) не знают, что такое ГОСТы, поэтому бывает необходимо изменить частотный диапазон определения сигналов DIALTONE и BUSY (сигналы BUSY тоже должны быть 425Гц):
0Довольно широкий фильтр, выделяющий частоты 350..650 Гц. Для большинства АТС этого более чем достаточно.
1Для линий среднего и хорошего качества и электронных АТС -- 400..550 Гц.
2Для линий, где стандартами не пахнет вообще -- 0..700 Гц
3Очень узкополосный фильтр -- 410..450 Гц. Для линий, где идеальные сигналы BUSY/DIALTONE. Позволяет отрезать максимум ненужных частот и предотвратит ложные срабатывания (например шумы, запросы и ответы АОНов и др.).
S85 (0)(+S12(0)) Количество RINGING, после которых выдается сообщение NO ANSWER. Если S85=0, то подсчет сигналов RINGING не ведется.
S86 (6)Битовый регистр, дополнительные режимы:
Номер бита (и аналог в ID_SDL) Функция
0 (0)(+SC(0)) Не класть трубку по диагностике NO DIALTONE
1 (1)(нет аналога) Использовать лампу ARQ/FAX во время набора номера как лампочку OH (Off Hook). В модемах, сделанных на базе спортстеров, отсутствует индикатор OFF Hook, который показывает, находится модем на линии или нет. Когда в модеме установлено бесшумное реле набора номера, то бывает полезно контролировать набор номера именно по индикатору OFF Hook. Установив этот бит в "1", можно задействовать индикатор ARQ/FAX как OFF Hook на период набора номера.

Для оригинальных модемов Courier лучше сбросить этот бит в 0.

2 (1) (нет аналога) Запретить разрыв связи при пропадании напряжения в линии (причина разрыва связи -- "Loop Loss Disconnect")
3 (0) (расш. %T, без прямой аналогии) Включить режим определения тонального DTMF-пароля при ответе модема на входящий звонок. Тональный пароль должен быть записан в 5-ую ячейку номеров телефонов без пробелов и специальных знаков (тире, запятая и др.). В пароле допускаются только цифры.
S87 (8)(ATDтел@T#ab, без прямой аналогии) Уровень мощности передатчика для удаленного модема AVC-56 (если установлен S88.0=1)
S88 (0)(нет аналога)Битовый регистр, управление запросами уровней передатчиков
Номер битаФункция
0 (0) Разрешить запрос уровня у удаленного модема AVC-56 с использованием регистра S87
1 (0) Запретить изменение уровня мощности своего передатчика по запросу от удаленного AVC-56 модема
S98 (0)(нет аналога) Время в секундах для задержки сообщения RING. Может использоваться для задержки реакции на входящий звонок. 0 - нет задержек
(нет аналога)Битовый регистр, режимы АОН:
Номер битаФункция
0 (0)Определять номер по любому поднятию трубки, (в том числе ATD)
1 (0)Смену состояния линии RI com-порта считать признаком входного звонка
2 (1)Выводить неполностью определенные или нестандартные номера
3 (0)Выводить сообщение CALLER_ID (с подчеркиванием) для UNIX'ов
4 (0)Делать попытку определения номера по команде ATD в случае, когда S86.0=1 (коллизия звонков)
7 (0)Выводить сырой код для отладки и дополнительного анализа
S101 (35) (+S6(35)) Максимальная длительность сигналов BUSY. В единицах по 0.4 мс
S102 (4)(+S7(4)) Минимальная длительность пауз между сигналами BUSY. В единицах по 0.4 мс
S103 (255)(+S8(255)) Максимальная длительность пауз между сигналами BUSY. В единицах по 0.4 мс
S104 (9)(+S9(9)) Минимальная длительность сигналов RINGING. В единицах по 0.4 мс
S105 (125)(+S10(125)) Максимальная длительность сигналов RINGING. В единицах по 0.4 мс
S106 (75)(+S11(75)) Минимальная длительность пауз между сигналами RINGING. В единицах по 0.4 мс
S107 (24)(+S30(24)) Минимально допустимая длительность одного периода вызывного сигнала RING. В единицах по 0.4 мс
S108 (180)(+S31(180)) Максимально допустимая длительность одного периода вызывного сигнала RING. В единицах по 0.4 мс
S109 (4)(+S32(1024):256) Минимальная скважность вызывного сигнала RING: (общее время периода)/(время положительного полупериода) Если Ваш модем не определяет или плохо определяет входящие звонки, попробуйте поэкспериментировать со значением этого регистра на несколько единиц в "+" и в "-".

Условия распространения

Прошивка AVC-56/33.6 является свободно распространяемым программным обеспечением (Freeware) и может свободно копироваться для некоммерческого использования при условии того, что оригинальный дистрибутив сохранён. Все вопросы коммерческого использования прошивки AVC-56/33.6 должны быть согласованы непосредственно с автором - Андреем Ваваевым. Запрещается также предпродажная установка прошивки в модемы USR Courier.

Сайт поддержки прошивки -- http://www.USRModem.ru.

Заключение

В связи с известными событиями, работа над проектом ID_SDL временно приостановлена. До выхода некоммерческих прошивок AVC, по проводимым на нашем сайте опросам, первое место из используемых российскими пользователями проектов занимала прошивка ID_SDL, которой пользовались на тот момент около 60% респондентов. Насколько удачным будет проект AVC56K, покажет время, однако уже сейчас можно прогнозировать большой интерес особенно к голосовым функциям, которые впервые были введены в микрокод модемов Courier V.Everything Андреем Ваваевым. Через некоторое время мы проведём очередной опрос, где выясним рейтинг нового проекта AVC56K среди российских пользователей модемов данной марки.