Рекомендации по проблеме Busy
Модем "не ловит Busy"
Довольно часто модем "не
понимает" сигнал занято.
Иначе говоря "не ловит
бизи".С чего надо начать в
решении этой проблемы. Во
первых надо выяснить, что
сигнал занято модему разрешено
вообще определять. Убедитесь,
что после инициализации в
конфигурации модема стоит X3
или X4. При инициализации по
заводским установкам AT&F
автоматически устанавливается
X4 (что есть правильно). Поэтому
переходим к следующему
этапу - попытаемся
заменить страну. Но сначала
выясните текущую страну. Код
страны показывается по команде
ATI5 (в модемах Diamond Supra ATI6).
Посмотрите по списку стран что это за страна. Чаще
всего встречается 22 - Америка. В
этом случае стоит внимательно
взглянуть на ответ модема на
команду ATI3. Если она имеет
примерно такой вид:
>>>ATI3
>>>V1.120 022-001-K56_DLP
>>>OK
то нет смысла искать другие
страны в этой прошивке, т.к. она
имеет только одну страну - США.
Пропустите следующие пункты и
переходите сразу к замене
прошивки. Если же надежда еще
есть, то попробуйте дать модему
следующие команды.
- ATI100. Иногда в ответ он может
выдать примерно мледующее.
>>>ATI100
>>>UK-16,AT-01,BG-02,DM-03,FN-04,FR-05,GM-06,IT-08
>>>NL-10,NW-11,SP-13,SD-14,SW-15,AU-40,SA-99
>>>OK
Цифры, это и есть коды стран,
которые нужно попытаться
использовать. Подставляйте их
вместо xx в команду AT*NCxx. (Иногда
пользователи не очень
внимательны к командам и
вместо AT*NC16 дают команду AT*NC=16.
Это не одно и то же! Правилен
только первый вариант.)
- AT*NC? может дать примерно такой
ответ:
>>>AT*NC?
>>>022 US 011
>>>001 AUS 00
>>>002 BLG 00
>>>003 DEN 009
>>>004 FIN 990
>>>005 FR 19
>>>006 GER 00
>>>007 IRE 353
>>>008 IT 00
>>>010 NL 09
>>>011 NOR 095
>>>OK
В таком случае для смены страны
используйте первые цифры в
строчках.
- Если на 1 и 2 модем ответит ERROR,
то этих команд нет и у Вас есть
шанс найти возможные страны
только методом перебора кодов
стран от 1 до 40. Если также кроме
ERROR Вы ничего не увидите, то
смысла перебирать дальше нет.
Следующим
шагом является недавно
открытое Konstantin Vasilyev изменение
содержимого ОЗУ. Производится
это посредством
недокументированной команды
AT!, которая к сожалению
присутствует не во всех
прошивках. Проверить ее
наличие легко - в терминалке
дайте модему команду AT!0000 если
в ответ Вы увидите
AT!0000
0000: DE FF FF 6D FF 40 FF 8B
или что-то похожее, то Вам
повезло (для выхода из этого
режима нажмите пробел).
Переходите к разделу,
посвященному этому решению.
Если Вы увидели ERROR, то увы,
единственным выходом
становится замена пошивки.
Что это значит для владельцев
модемов 33600 и 56000?
Замечание для владельцев модемов семейства Diamond Supra
У Вас еще есть шанс научить
модем понимать сигнал занято.
Для этого в модеме
предусмотрены т.н. SC регистры.
Вот кусочек из документации:
SCn=n Telephone Signal Cadence Settings (Defaults
change with country code)
Each register "pair" holds the value for
each setting. To set a value, divide the setting by
256. The integer value goes in the second (high byte)
register, while the remainder (low byte) goes in the
first. (A setting of 516 for the Phase 1 Minimum BUSY
ON Time period would convert to 2 with a of remainder
4, and could be set by sending AT SC0=4 SC1=2 to the
modem.) Settings are in 1/100ths of a second. Entries
are listed as follows Minimum ON Time (2 bytes),
Maximum ON Time (2 bytes), Min. OFF Time (2 bytes),
Max. OFF Time (2 bytes), Number of valid singal
cycles to occur before the signal is accepted as
valid (1 byte). Some countries codes specify a two
PHASE cadence pattern (On-Off in one pattern followed
by a different On-Off pattern) for some singals, and
in such cases, the "PHASE 2" entries would
have NON-ZERO values (the US country code setting
only supports single PHASE cadence patterns or
patterns that just repeat the same On-Off pattern
over and over.)
(Listed default values are for the United States
values)
SC(0-8) PHASE 1 BUSY
Minimum ON Time = 42 ( SC0=42 SC1=0 )
Maximum ON Time = 58 ( SC2=58 SC3=0 )
Minimum OFF Time = 42 ( SC4=42 SC5=0 )
Maximum OFF Time = 58 ( SC6=58 SC7=0 )
Number of Cycles = 4 ( SC8=4 )
Notes: USA (1) - SC0=22 & SC4=22 allows
CONGESTION ("FAST" BUSY signals to be
detected as a BUSY.)
Lithuania (370) - SC0=50 SC2=100 SC4=15 SC6=60 SC8=2
for BUSY
Если Вы не сильны в
английском поясню, что в
регистры 0, 2, 4, 6 нужно заносить
соответственно
минимальное/максимальное
время включения/выключения
импульса сигнала занято. В 8
регистр заносится минимальное
число циклов,
"достаточное" для
определения сигнала. Мы
конечно хотим, чтобы сигнал
"ловился" со второго
гудка. Поэтому в регистр SC8
нужно занести 2. Что касается
остальных регистров следует
напомнить, что для наших АТС
сигнал занято передается
импульсами длительностью 0,3...0,4
сек с такими же промежутками.
Но для надежности следует
установить более широкие
границы захвата 0,2...0,8 сек.
Делается это так:
ATSC0=20 SC1=0 SC2=80 SC3=0 SC4=20 SC5=0 SC6=80 SC7=0
SC8=2
Если после этого модем начнет
определять сигнал, то можно
сузить границы. Если же это не
имеет удовлетворительного
эффекта, то дело скорее всего
кроется в слишком сильком
уровне сигнала или даже в его
частоте. В любом варианте
следует подумать о замене
прошивки.
Изменяем содержимое ОЗУ
Содержимое ОЗУ можно посмотреть
или изменить командой
AT! <адрес> [<команда>]
Адрес задается четырехзначным
числом в шестнадцатеричной
системе. В режиме индикации
содержимого ОЗУ команда не
задается. Для изменения ОЗУ
используется команда M. Для выхода
из этих режимов нужно нажать
пробел. Примеры команд:
AT!0000 начать вывод
содержимого ОЗУ с адреса 0000h;
AT!02E3M начать
редактирование содержимого ОЗУ с
адреса 02E3h.
Как же использовать эти команды для
решения проблемы Busy? Очень просто!
Дело в том, что часть прошивки
модема копируется в ОЗУ и в ней как
раз содержится информация по
константам определения сигнала
"Занято". Воспользуйтесь
программой rock_ram
для считывания ОЗУ модема в файл. В
этом файле надо найти следующий
кусок:
000002B7: 00 05 00 02 C2 08
7C EE C2 08 74 C7 FE 74 C2 08
000002C7: 84 11 C2 08 4F CD 95 64 00 FF 00 05 0D 16 C3 1B
000002D7: C1 15 63 1B 0A 42 00 0E 00 13 03 01 2A 00 3A 00
000002E7: 2A 00 3A 00 04 5A 00 2C 01 22 01 CC 01 01 16 00
Характерным местом, в котором его
можно найти является уже указанный
адрес 02b7 или около того. В принципе
такой кусок входит в прошивку
несколько раз, а эффект достигается
при изменении только по одному
адресу.
Теперь о том, что надо на что
поменять. Для приведенного выше
куска это:
02B7: 00 00
02B8: 05 09
02B9: 00 00
02BA: 02 09
и еще в одном месте, рядом с
первым
02E3: 2A 23
02E4: 00 00
02E5: 3A 41
02E6: 00 00
02E7: 2A 23
02E8: 00 00
02E9: 3A 41
02EA: 00 00
02EB: 04 02
Такой вариант вполне хорошо
определяет сигнал занято. Если
после этого ничего не изменилось,
то попробуйте вместо первого
изменения подставить:
00 0A 00 0A или 00 0C 00 0C
Для второго лучше поставить:
0A 00 5A 00 0A 00 5A 00 02.
Все это к сожалению не дает
полной гарантии в определении
сигнала занято. И если частота
сигнала меньше ~350Гц или больше
~700Гц, то данным способом проблему
решить нельзя.
Внимание, важное замечание:
после изменения ОЗУ модем нельзя
инициализировать командой ATZ, т.к.
по ней содержимое ОЗУ
восстанавливается из прошивки
модема и все труды пойдут на смарку.
Инициализировать нужно командой
AT&F, дополняя ее по необходимости.
Таким образом, про NVRAM и сохранение
в ней конфигурации модема лучше
забыть.
Очень удобно менять содержимое ОЗУ
с помощью программы acinit.exe.
Эта программа абсолютно корректно
работает в DOS и иногда в Windows 95/98.
Пример использования этой
программы (строчки из autoexec.bat)
acinit 2 AT!02B7M 00090009
acinit 2 AT!02E3M 230041002300410002
Здесь 2 - номер порта.
Замена прошивки в модеме 33600
Итак что же значит замена
прошивки для владельца модема
на чипе RCV336ACF/*? Прежде всего
убедитесь, что у Вас не
установлена микросхема Flash ROM.
Если так, то вы не можете
рассчитывать на замену
прошивки без разборки модема и
без программатора. В случае,
если у Вас установлено УФПЗУ,
то Вам нужно:
- скачать
прошивку для своего модема;
- вместе с прошивкой и
микросхемой найти
программатор (скорее всего Вы
его найдете в ближайшей
компьютерной ремонтной службе)
и прошить новую прошивку
(сделайте на всякий случай
резервную копию старой);
вставить ПЗУ с новой
прошивкой в модем и радоваться
его улучшенной работе.
Если производитель модема
"на Вас сэкономил" и
установил в модем однократно
программируюмую ПЗУ, то ничего
не сотается делать, как искать
ей замену, т.к. в нее новую
прошивку записать невозможно.
Вы можете купить или УФПЗУ или
Flash, главное, чтобы время
выборки у нее не превышало 45 нс,
ну в самом худшем случае
составляло 70 нс. Ищите, т.к. если
Вы поставите микросхему с еще
худшим показателем, то либо
модем будет хаотично
подвисать, либо вообще не
заработает. Когда Вы купите
микросхему, то начинайте
действовать по
вышеприведенному плану.
Прочтите еще вопрос в FAQ'е по поводу замены
ПЗУ на Flash, т.к. не все типы
микросхем Flash подходят.
Замена прошивки в модемах 56000
Прежде всего убедитесь, что в
Вашем модеме установлена Flash
ПЗУ. Если ее нет, то Вам следует
читать раздел посвященный
замене прошивки в модемах 33600. Но все же
вероятнее у Вас Flash, и Вы можете
рассчитывать на замену
прошивки не открывая
компьютер. Есть несколько
вариантов действий:
- Вы можете скачать готовые прошивки,
хорошо себя зарекомендовавшие.
- Вы можете слить
с модема свою прошивку,
изменить ее и залить
снова.
- Наконец Вы можете найти любую
подходящую прошивку, изменить
ее и залить в свой модем.
|