From: Andrew Lugovskih, 2:5025/37.83 (18 Sep 99)
При написанні деяких пунктів даного тексту використовувалися тексти сторонніх
авторів!
1. Рівень сигналу на передачу і його регулювання.
Рівень сигналу, що передається, в модемах Акорп на чіпсеті Роквелл може
регулюватися за допомогою регістра S91. Значення в цьому регістрі можуть бути в
діапазоні від 0 до 15. Дані в цьому регістрі не запам'ятовуються командою &W і
обнуляються по команді ATZ. Для більшості прошивок значення за умовчанням S91=11.
Щоб змінити вміст регістра і продовжити роботу з цим значенням в мейлері T-MAIL,
необхідно в файлі t-mail.ctl прописати:
Init1 ATZ| S91=xx,
де хх - число від 0 до 15.
чим більше значення регістра, тим менше рівень сигналу, тобто тихіше.
Рекомендується підбирати значення з діапазону 8...12. Почніть з -10 Дб. Якщо
по статистиці видаленого модему видно, що до нього сигнал доходить сильно
ослабленим (-30Дб і менше) треба зменшити значення регістра S91. Також це
корисно робити для модемів страждаючих "глухотою", наприклад деякі моделі
ZYXEL. Але врахуйте, якщо лінія дзвінка, то, задираючи рівень вихідного сигналу,
Ви збільшите рівень ближнього еха і швидкість передачі даних впаде. В загальному
випадку, для ЭАТС рекомендується 10...12, для АТСК і ДШ АТС 8...10.
2. Рівень сигналу на прийом.
Використовуючи протокол MNP10 можна регулювати рівень чуттєвості модему.
Для цього в будь-якій термінальній програмі потрібно ввести
AT -K1 &W
Це дозволить використання протоколу MNP10. Після цього можна регулювати
чуттєвість командою
AT -sec=1,xx
де хх - число від 0 до 30 в -Дб. Чим менше значення, той чуттєвіший модем.
Не треба занадто зменшувати це значення - модем буде просто "глухнути".
До речі, значення цього осередку зберігається командою AT &W, так що досить
прописати все один раз в будь-якій термінальній програмі, а не ініціалізувати
модем подібним чином.
3. Ловимо сигнал "БІЗІ".
Практично весь приведений текст з невеликими змінами взятий з FAQ'а на
жаль невідомого мені автора. Я вважаю, що його виклад найбільш повний.
Прим. - перш ніж перейти до вмісту ОЗУ наполегливо рекомендую звернути
увагу на SC - регістри, допомагає в більшості випадків, оскільки на наших АТС
сигнал "ЗАЙНЯТО" не завжди відповідає західному стандарту.
Досить часто модем "не розуміє" сигнал зайнято. Інакше кажучи "не ловить бізі".
З чого треба почати в розв'язанні цієї проблеми. По-перше треба з'ясувати,
що сигнал зайнято, модему дозволено взагалі розпізнавати. Переконайтесь, що після
ініціалізації в конфігурації модема стоїть X3 або X4. При ініціалізації по
заводських установках AT&F автоматично встановлюється X4 (що і є правильно).
Тому переходимо до наступного етапу - спробуємо замінити країну. Але спочатку
з'ясуєте поточну країну. Код країни показується по команді ATI5 (в модемах
Diamond Supra ATI6). Подивіться по списку країн, що це за країна. Найчастіше
зустрічається 22 - Америка. В цьому випадку варто уважно поглянути на відповідь
модема на команду ATI3. Якщо вона має приблизно такий вигляд:
ATI3
V1.120 022-001-K56_DLP
OK
те немає сенсу шукати інші країни в цій прошивці, оскільки вона має тільки одну
країну - США. Якщо ж надія ще є, то спробуйте дати модему наступні команди.
1) 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. Це не одне і
те ж! Правильний тільки перший варіант.)
2) 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
В такому випадку для зміни країни використовуйте перші цифри в рядках.
3) Якщо на 1 і 2 модем відповість ERROR, то цих команд немає і у Вас є шанс
знайти можливі країни тільки методом перебору кодів країн від 1 до 40. Якщо
також крім ERROR Ви нічого не побачите, то сенсу перебирати далі немає.
Наступним кроком є недавно відкрита Konstantin Vasilyev зміна вмісту ОЗУ.
Проводиться це за допомогою недокументованої команди AT!, яка, на жаль,
присутня не в всіх прошивках. Перевірити її наявність легко - в терміналці
дайте модему команду AT!0000, якщо у відповідь Ви побачите
AT!0000
0000: DE FF FF 6D FF 40 FF 8B
або щось схоже, то Вам повезло (для виходу з цього режиму натисніть пропуск).
Переходьте до розділу, присвяченого цьому рішенню. Якщо Ви побачили ERROR,
то нажаль, єдиним виходом стає заміна прошивки.
SC - регістри. ВАЖЛИВО!!! ДОПОМАГАЄ В _БІЛЬШОСТІ_ ВИПАДКІВ З МОДЕМАМИ АКОРП.
У Вас ще є шанс навчити модем розуміти сигнал зайнято. Для цього в модемі
передбачені так звані 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
Якщо після цього модем почне розпізнавати сигнал, то можна звузити кордони. Якщо
ж це не має задовільного ефекту, то справа швидше за все, криється в дуже
сильному рівні сигналу або навіть в його частоті. В будь-якому варіанті
потрібно подумати про заміну прошивки. Підніміться трохи вище, для того щоб
взнати детальніше.
Змінюємо вміст ОЗУ. ДОПОМАГАЄ ПРАКТИЧНО В 100% ВИПАДКІВ, АЛЕ НА ЖАЛЬ
ПОДІБНИЙ СПОСІБ НЕДОСТУПНИЙ В ДОДАТКАХ ПІД WINDOWS 95/98.
Вміст ОЗУ можна подивитися або змінити командою
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 (18Kb, DOS)
Можна спитати у мене!
imodem.zip (15Kb, Windows 95/98)
Для реальної швидкості конекту простий рядок:
ATS95=47W1
=============================================================
Переклад - Olexandr Slobodyan, 18.I.2002
|