INFODOC ID: 12687
В этом документе описаны процедуры для конфигурации модема в Solaris 2. Если модем сконфигурирован неправильно то, например, удалённый пользователь вместо приглашения login может получить на экране "мусор". Правильное решение состоит в том, чтобы инициировать модем с помощью команды tip до проведения первой сессии входящего звонка в машину (dialin).
Модем должен быть инициализирован ещё до того момента, как Вы дадите разрешение на login по данному последовательному порту. В противном случае, при попытке инициализации, Вам может быть отказано в доступе, т.к. модем может вызвать активизацию программы login, которая захватит этот порт.
Также необходимо не забывать проводить реинициализацию модема после сбоя питания, ведь в этом случае модем может приобрести конфигурацию по-умолчанию (factory defaults).
Cтроки инициализации, посылаемые на модем, должны быть выданы с той-же скоростью (baudrate), что и само приглашение login. Если команда tip не использует ту-же скорость, что и login, модем не будет работать для входящих звонков, но, тем не менее, будет работать для исходящих (dialout).
Приведённая ниже информация - это наиболее основные и минимальные инструкции по инсталляции модема. Предполагается, что имена устройств последовательных портов ttya и ttyb.
1. Подсоедините модем к Sun. Используйте либо ttya либо ttyb. Убедитесь, что кабель RS-232 является "модемным", т.е. не перекрещенным и имеет задействованные контакты с номерами 1-8 и 20 (как правило все кабели типа 25x25 удовлетворяют этим требованиям).
Не используйте "нуль-модемный", т.е. перекрещенный кабель или нуль-модемный кабель типа "вилка-розетка".
Если Вы используете систему с разделяемыми портами a и b, например, SPARC 10, Classic/LX и т.п. и хотели бы использовать в качестве модемного порта порт b, Вы должны использовать кабель-разветвитель (p/n: X985A).
2. Добавьте следующие строки в файл "/etc/ttydefs". Они будут использованы системой для установки скорости канала "порт-модем".
38400m:38400 hupcl:38400 hupcl crtscts::38400m 19200m:19200 hupcl:19200 hupcl crtscts::19200m 9600m:9600 hupcl:9600 hupcl crtscts::9600m
Напоминаем, что такие значения как 14000 и 28800, относятся к значениям скорости передачи данных по каналу "модем-модем" и не имеют никакой связи со скоростью канала "порт-модем".
3. Убедитесь, что на конфигурируемом порту не "висит" программа порт-монитора. Для этого выполните команду:
# pmadm -p zsmon -l PMTAG PMTYPE SVCTAG FLGS IDzsmon ttymon ttya u root /dev/term/a - - /usr/bin/login - 9600 ldterm,ttcompat login: - vt100 y #Terminal zsmon ttymon ttyb u root /dev/term/b - - /usr/bin/login - 9600 ldterm,ttcompat login: - vt100 y #Terminal
Если программа присутствует, как это видно в вышеприведённом примере, удалите её, напечатав:
# pmadm -p zsmon -r -s
Решение задачи настройки модема целиком и полностью ложится на пользователя. Имеется черезвычайно много различных типов модемов, так-же как и их производителей. Пользователь должен изучить документацию на модем и настроить его согласно требованиям предъявляемым со стороны Sun (смотри раздел V). Если у Вас есть вопросы касающиеся настройки модема, обратитесь к документации производителя модема или свяжитесь его службой поддержки. Приложение B содержит примеры начальной инициализации регистров модема. Эта информация может меняться в зависимости от версии встроенного программного обеспечения модема (firmware), модели модема и добавленных дополнительных возможностей. Используйте эту информацию только как пример.
Для того, чтобы правильно установить значения в регистрах модема Вы должны иметь доступ к модему.
a. Модифицируйте файл "/etc/remote" и добавьте следующие строчки к файлу, поместив их после строки "hardwire:\" (напоминаем, что в программе tip должна использоваться та-же самая скорость доступа к модему, что будет использоваться в дальнейшем программой login)
Для порта ttya:
hardwire:\ :dv=/dev/term/b:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D: modem1:\ <--- добавьте эту и следующую строку :dv=/dev/cua/a:br#9600: за предыдущей строкой ^ |_ скорость канала "порт-модем"* должна соответствовать скорости login
Для порта ttyb:
hardwire:\ :dv=/dev/term/b:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D: modem1:\ <--- добавьте эту и следующую строку :dv=/dev/cua/b:br#9600: за предыдущей строкой ^ |_ скорость канала "порт-модем"* должна соответствовать скорости login
* Если Вы используете модем типа 28.8k, то установите это значение равным 38400; для модема типа 14.4 установите 19200; а для модема типа 9600 установите 9600.
b. Измените права доступа и владельца модемного порта:
# chmod 666 /dev/cua/a ; chown uucp /dev/cua/a
и/или, для порта b:
# chmod 666 /dev/cua/b ; chown uucp /dev/cua/b
c. После модификации файла "/etc/remote" и изменения прав доступа к порту/портам, стартуйте shelltool (если Вы используете OpenWindows) и выдайте следующую команду:
tip modem1
Вы должны получить сообщение "connected". Если Вы получили нечто другое, например, "all ports busy" - проверьте правильно ли Вы модифицировали файл "/etc/remote".
d. Убедитесь что модем отвечает на команды, напечатав
at (cr)
Вы должны увидеть ответ модема OK.
Напоминание: Вы должны выполнять tip в shelltool, где запрещена прокрутка (scrolling), в противном случае символ возврата каретки (cr) может не быть послан в модем.
Если Вы не получили OK, то обратите внимание на то, подмигивают ли лампочки RD или SD на панели модема в тот момент когда Вы нажимаете кнопки клавиатуры компьютера. Если лампочки не мигают, то проверьте кабель соединяющий последовательный порт и модем.
a. Обратитесь к Приложению B, озаглавленному "Основные форматы инициализационных строк модемов" и поищите там Ваш тип модема. Если Вы нашли его, то установите dip-переключатели в указанное положение, а затем используйте найденную строку для инициализации модема. Например, для модема марки US Robotics Courier:
AT&F1&B1&C1&D2X0S0=1&W
b. Если Вы не знаете инициализационную строку, то обратитесь к руководству по модему. В нем содержатся правила установки регистров модема. Если и в этом случае Вы не можете составить строку инициализации, то свяжитесь со службой технической поддержки производителя модема.
c. После инициализации модема выйдите из утилиты "tip", напечатав следующую последовательность:
<CR>~.
Вышеприведённая последовательность это "возврат каретки" за которым следуют символы "~" и ".".
Нижеследующая процедура конфигурирует службу порт-монитора, что является необходимым для обеспечения возможности входа в систему через модем.
1. Используя программу Administration Tool (admintool), добавьте в конфигурацию поддержку модема как для входящих так и для исходящих звонков. Если Вы не можете использовать admintool, то обратитесь к Приложению A.
a. Щёлкните по иконке "Serial Port Manager".
b. С помощью левой кнопки мыши выделите желаемый порт.
c. Правой кнопкой мыши нажмите кнопку edit один раз. Затем, также правой кнопкой мыши, нажмите на поле "Modify Service". Это действие вызовет появление нового всплывающего меню.
d. Нажмите на кнопку "Use Template" правой клавишей мыши и выберите пункт меню "Modem - Bidirectional".
e. Нажмите на кнопку меню "Baud Rate:" и выберите "Other".
f. Появится новое всплывающее окно. В зависимости от желаемой скорости канала "порт-модем" введите в нём 38400m, 19200m или 9600m. Затем нажмите кнопку "Apply".
Замечание: Используйте строку 38400m для модема, работающего на скорости 28800, 19200m для модема на 14400, и 9600m для модема на 9600.
g. Введите тип терминала, который удалённые пользователи будут использовать для входа в систему, например vt100.
h. Проверьте всех поля в которые вводились данные и затем нажмите кнопку "Apply".
i. Завершите программу "admintool".
2. Проверьте, что порт-монитор сконфигурирован. Для этого введите команду:# pmadm -p zsmon -l PMTAG PMTYPE SVCTAG FLGS IDzsmon ttymon ttyb u root /dev/term/b b - /usr/bin/login - 9600m ldterm,ttcompat login: - dialup n #Modem - Bidirectional
Если Вы не увидели строку, описывающую порт-монитор, то вернитесь к пунктам II(2), IV и не забудьте нажать кнопку "Apply" перед завершением программы admintool. Если и после этого Вам не удаётся сконфигурировать порт-монитор, то, для получения дальнейшей помощи, свяжитесь со службой поддержки Sun.
Sun ограничивает себя только формулированием требований, предъявляемых к модему и не даёт рекомендаций касающихся настройки индивидуальных модемов и/или их регистров. Эти требования даны ниже.
Ниже приводятся процедуры предназначенные для пользователей, которые не имеют доступ к оконному интерфейсу и, следовательно, не могут использовать программу admintool.
Установка службы модема для двунаправленной работы.
1. Проверьте, выполняется ли в составе подсистемы SAC процесс zsmon. Для этого напечатайте следующую команду:
# sacadm -l PMTAG PMTYPE FLGS RCNT STATUS COMMAND tcp listen - 0 ENABLED /usr/lib/saf/listen tcp # zsmon ttymon - 0 ENABLED /usr/lib/saf/ttymon #
2. Если Вы в столбце PMTAG не видите идентификатор zsmon, то выполните следующую команду:
# sacadm -a -p zsmon -t ttymon -c /usr/lib/saf/ttymon -v `ttyadm -V`
Снова посмотрите, появился ли zsmon (в поле STATUS должно быть STARTING и это правильно).
3. Теперь убедитесь, что порт-монитор zsmon присутствует. Выполните следующую команду:
# pmadm -p zsmon -l PMTAG PMTYPE SVCTAG FLGS IDzsmon ttymon ttyb u root /dev/term/b b - /usr/bin/login - 9600m ldterm,ttcompat login: - - n #Modem - Bidirectional
4. Если порт-монитор zsmon присутствует, то удалите его используя следующую команду:
# pmadm -r -p zsmon -s <SVCTAG>
Замечание: Значение <SVCTAG> определяется как результат выполнения предыдущей команды. В вышеприведённом примере это "ttyb".
5. А теперь сконфигурируйте порт-монитор:
a. Создайте файл с именем pm_script и показанным ниже содержимым.
Замечание: Не забудьте задать для переменных ttydefs, mport и service значения соответствующие Вашим условиям.
---- begin script ------- #!/bin/sh # командный файл для добавления порт-монитора PATH=/usr/sbin:/usr/bin export PATH # Определите переменную ttydefs определяющую (в файле "/etc/ttydefs") # скорость канала порт-модем. # Задайте одно из следующих значений: 38400m, 19200m, или 9600m: ttydefs=9600m # Укажите порт. Используйте либо "/dev/term/a" или "/dev/term/b" mport=/dev/term/b # Задайте имя конфигурируемой службы. В зависимости от используемого # порта укажите либо "ttya" либо "ttyb" service=ttyb # А теперь сама команда. # Замечание: Все одиночные кавычки - это символ обратная кавычка. # Обычно этот символ расположен на одной клавише с символом "~" ("тильда") # Некоторые принтеры воспроизводят этот символ неправильно. # Имейте это ввиду, если Вы распечатали этот текст. pmadm -a -p zsmon -s $service -i root -fu -v `ttyadm -V` \ -m "`ttyadm -Sn -d $mport -b -m ldterm,ttcompat -l $ttydefs -s /usr/bin/login`" \ -y "Modem - Bidirectional" ------- end script -----------
6. Сделайте этот файл выполнимым:
# chmod 755 pm_script
и выполните его.
7. Проверьте, что порт-монитор присутствует в системе:
Замечание: Вывод должен быть такой как показано ниже, хотя поля содержащие имя порта и/или скорость канала порт-модем могут отличаться.
# pmadm -p zsmon -l PMTAG PMTYPE SVCTAG FLGS IDzsmon ttymon ttyb u root /dev/term/b b - /usr/bin/login - 9600m ldterm,ttcompat login: - - n #Modem - Bidirectional
Далее приведены примеры инициализационных строк для модемов подсоединённых к компьютерам Sun и используемых как для входящих, так и для исходящих звонков.
--------------------------------------------------------------- Hayes Optima/Acura, Generic Modems:
Если Ваш модем отсутствует в этой инструкции, то попытайтесь использовать нижеприведённую строку:
AT&FN0Q2X0&C1&D2S0=1&W --------------------------------------------------------------- US Robotics Courier Modems: AT&F1&B1&C1&D2X0S0=1&W dip switch settings: Switch Setting 1 OFF 2 OFF 3 ON 4 OFF 5 OFF* 6 OFF 7 ON* 8 ON 9 OFF 10 OFF --------------------------------------------------------------- US Robotics Modems: AT&F1&B1&C1&D2X0S0=1&W --------------------------------------------------------------- Telebit Modems: WorldBlazer, T3000, or T1600 modem: AT &F3 E1 X0 &S0 S2=255 S45=255 S48=0 S58=2 &W AT SO=1 S59=15 S68=255 S111=255 S180=2 &C1 &W T2500, TrailBlazer Plus, T2000 or T1000 modem: AT &F X0 Q4 S45=255 S48=1 S51=254 S52=2 S54=3 &W AT SO=1 S58=2 S64=1 S66=1 S95=2 S97=1 S106=1 S131=1 &W --------------------------------------------------------------- GVC 288 V.34 Modem: AT&F2E0Q1S0=1&C1&D2&W&W1 --------------------------------------------------------------- Black Box Corporation, Modem 144FX: ATN0S37=0S0=1Q1&C1&D2&K3&W ---------------------------------------------------------------
Это обычно является индикатором того, что скорость физического порта модема и скорость сконфигурированного порт-монитора не совпадают. Проверьте скорость порта модема и убедитесь, что она соответствует скорости Sun (последнее конфигурируется с помощью admintool). Подсоединитесь к модему из локальной системы с помощью tip и проверьте конфигурацию модема. Ещё раз выполните пункты II(2), IV.
Вероятно это происходит из-за того, что на одном или обоих модемах используются какие-то фиксированные протоколы по скорости и/или компрессии данных. Если один модем не может договориться о протоколе с другим модемом - модемы рассоединяются. Проверьте установки обоих модемов.
Какой-то другой процесс открыл порт. Это может быть либо другая сессия tip, или, например, программа lp. Это также может быть другой порт-монитор.
Как найти кто это сделал:
Как root, если, например, имя устройства - /dev/cua/a, выполните команду:
# fuser /dev/cua/a /dev/cua/a: 652o 651o <---- PID'ы процессов, использующих этот порт.А теперь Вы можете использовать ps -ef, для того, чтобы определить программы, использующие порт.
NB: PID'ы равны 652 и 651 (удалите символ "o" на конце)Если процессом использующим порт является /usr/bin/login или ttymon, то:
1. Кто-то звонит в Вашу машину - посмотрите на индикаторы модема, активен ли он.
2. Модем постоянно получает сигнал DCD. Модем должен быть сконфигурирован так, чтобы Data Carrier Detect появлялся только тогда, когда несущая от удалённого модема зарегистрирована. Посмотрите в документации на модем как это сделать.
Убедитесь, что Вы имеете строку "dv=/dev/cua/a" или "dv=/dev/cua/b" в секции hardwire файла "/etc/remote". Также проверьте, директорию "/var/spool/locks" на наличие файла блокировки LCK.* и удалите этот файл. Проверьте правильно ли указаны права доступа к файлам последовательных устройств (/dev/cua/a или /dev/cua/b) и их владелец.
Модем сконфигурирован неправильно. Модем должен быть сконфигурирован так, чтобы сигнал Data Carrier Detect появлялся только тогда, когда несущая от удалённого модема зарегистрирована. Посмотрите в документации на модем как это сделать.
Проверьте кабель модема. Убедитесь, что Вы используете нужный порт. Также важно, чтобы tip был выдан из shelltool с запрещённой прокруткой, а не из cmdtool, где прокрутка разрешена.
Модем сконфигурирован неправильно. Проверьте, что модем установлен в режим автоответа (обычно это S0=1). Убедитесь, что лампочка модема DTR или TR горит, что указывает что сигнал Data Terminal Ready выдаётся из Sun. Если это не так, то процесс ttymon либо завис, либо не выполняется. Попытайтесь переинициализировать порт для работы в двунаправленном режиме (bi-directional)
Приглашение искажено и, например, выглядит как "Logn:" или "Logi"; ничего не происходит при нажатии клавиши <Enter>, но происходит при нажатии <LF> или "Control-J".
Переконфигурируйте установки последовательного порта удалённого компьютера, чтобы установить размер данных 8 бит, 1 стоповый бит, без контроля чётности.
Это проблема связана с контролем чётности. Порождённая сессия terminal/tip использует чётность, которая отличается от используемой ttymon.
Не меняйте eeprom, если Вашей задачей не является инсталляция терминала, работающего на уровне bootprom.
При помощи указанной ниже команды проверьте запущен ли процесс ttymon:
$ ps -ef | grep ttymon root 208 204 80 Sep 21 ? 0:01 /usr/lib/saf/ttymon root 17258 208 2 10:42:43 ? 0:00 /usr/lib/saf/ttymonPID 208 это идентификатор родительского процесса, а PID 17258 это идентификатор процесса-потомка для порта term/b.
Позвоните на модем и проверьте, что поле TTY у ttymon-потомка изменилось с "?" на "term/b":
$ ps -ef | grep ttymon root 208 204 80 Sep 21 ? 0:01 /usr/lib/saf/ttymon root 17258 208 6 10:42:43 term/b 0:00 /usr/lib/saf/ttymonЕсли этого не случилось, то проверьте, что последовательный порт сконфигурирован соответствующим образом и служба порт-монитора присутствует. Для этого напечатайте:
# pmadm -p zsmon -l PMTAG PMTYPE SVCTAG FLGS IDzsmon ttymon ttyb u root /dev/term/b b - /usr/bin/login - 9600m ldterm,ttcompat login: - tvi925 n #Modem - Bidirectional Также проверьте, что скорость, установленная для службы порт-монитора соответствует скорости канала "порт-модем". Используйте утилиту tip и попытайтесь вновь подсоединиться к модему.
Copyright © 1996 Sun Microsystems, Inc., 2550 Garcia Ave., Mtn. View, CA 94043-1100 USA. All rights reserved.
Перевод: Copyright © 1996 Виталий Филатов (vitaly@royint.com) All Rights Reserved.