Инструкция для установки модема в Solaris 2

INFODOC ID: 12687

I. Введение

В этом документе описаны процедуры для конфигурации модема в Solaris 2. Если модем сконфигурирован неправильно то, например, удалённый пользователь вместо приглашения login может получить на экране "мусор". Правильное решение состоит в том, чтобы инициировать модем с помощью команды tip до проведения первой сессии входящего звонка в машину (dialin).

Модем должен быть инициализирован ещё до того момента, как Вы дадите разрешение на login по данному последовательному порту. В противном случае, при попытке инициализации, Вам может быть отказано в доступе, т.к. модем может вызвать активизацию программы login, которая захватит этот порт.

Также необходимо не забывать проводить реинициализацию модема после сбоя питания, ведь в этом случае модем может приобрести конфигурацию по-умолчанию (factory defaults).

Cтроки инициализации, посылаемые на модем, должны быть выданы с той-же скоростью (baudrate), что и само приглашение login. Если команда tip не использует ту-же скорость, что и login, модем не будет работать для входящих звонков, но, тем не менее, будет работать для исходящих (dialout).

Приведённая ниже информация - это наиболее основные и минимальные инструкции по инсталляции модема. Предполагается, что имена устройств последовательных портов ttya и ttyb.

II. Начальная инициализация Sun

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 ID       
	zsmon          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 

III. Настройка модема

Решение задачи настройки модема целиком и полностью ложится на пользователя. Имеется черезвычайно много различных типов модемов, так-же как и их производителей. Пользователь должен изучить документацию на модем и настроить его согласно требованиям предъявляемым со стороны Sun (смотри раздел V). Если у Вас есть вопросы касающиеся настройки модема, обратитесь к документации производителя модема или свяжитесь его службой поддержки. Приложение B содержит примеры начальной инициализации регистров модема. Эта информация может меняться в зависимости от версии встроенного программного обеспечения модема (firmware), модели модема и добавленных дополнительных возможностей. Используйте эту информацию только как пример.

Для того, чтобы правильно установить значения в регистрах модема Вы должны иметь доступ к модему.

1. Подготовьтесь к взаимодействию с модемом с использованием tip

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 на панели модема в тот момент когда Вы нажимаете кнопки клавиатуры компьютера. Если лампочки не мигают, то проверьте кабель соединяющий последовательный порт и модем.

2. Инициализация модема

a. Обратитесь к Приложению B, озаглавленному "Основные форматы инициализационных строк модемов" и поищите там Ваш тип модема. Если Вы нашли его, то установите dip-переключатели в указанное положение, а затем используйте найденную строку для инициализации модема. Например, для модема марки US Robotics Courier:

	AT&F1&B1&C1&D2X0S0=1&W

b. Если Вы не знаете инициализационную строку, то обратитесь к руководству по модему. В нем содержатся правила установки регистров модема. Если и в этом случае Вы не можете составить строку инициализации, то свяжитесь со службой технической поддержки производителя модема.

c. После инициализации модема выйдите из утилиты "tip", напечатав следующую последовательность:

	<CR>~.

Вышеприведённая последовательность это "возврат каретки" за которым следуют символы "~" и ".".

IV. Запуск процесса Login

Нижеследующая процедура конфигурирует службу порт-монитора, что является необходимым для обеспечения возможности входа в систему через модем.

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 ID       
	zsmon          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.

V. Требования, предъявляемые к модему

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 ID       
	zsmon          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 ID       
	zsmon          ttymon         ttyb           u    root     /dev/term/b b -
	/usr/bin/login - 9600m ldterm,ttcompat login:  - - n  #Modem - Bidirectional

Приложение B

Основные форматы инициализационных строк модемов

Далее приведены примеры инициализационных строк для модемов подсоединённых к компьютерам 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
---------------------------------------------------------------

Приложение C

Рекомендации по устранению неисправностей

"При попытке войти в Sun с удалённой системы на экране удалённой системы виден "мусор""

Это обычно является индикатором того, что скорость физического порта модема и скорость сконфигурированного порт-монитора не совпадают. Проверьте скорость порта модема и убедитесь, что она соответствует скорости Sun (последнее конфигурируется с помощью admintool). Подсоединитесь к модему из локальной системы с помощью tip и проверьте конфигурацию модема. Ещё раз выполните пункты II(2), IV.

"При звонке на удалённую систему модем отвечает, слышны переговоры модемов, затем один из модемов кладёт трубку и появляется CALL FAILED"

Вероятно это происходит из-за того, что на одном или обоих модемах используются какие-то фиксированные протоколы по скорости и/или компрессии данных. Если один модем не может договориться о протоколе с другим модемом - модемы рассоединяются. Проверьте установки обоих модемов.

"Что означает сообщение "all ports busy" из программы tip?"

Какой-то другой процесс открыл порт. Это может быть либо другая сессия 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 появлялся только тогда, когда несущая от удалённого модема зарегистрирована. Посмотрите в документации на модем как это сделать.


"Что означает сообщение 'permission denied or link down' от утилиты tip?"

Убедитесь, что Вы имеете строку "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"

Проверьте кабель модема. Убедитесь, что Вы используете нужный порт. Также важно, чтобы tip был выдан из shelltool с запрещённой прокруткой, а не из cmdtool, где прокрутка разрешена.

"При звонке на Sun модем не снимает трубку"

Модем сконфигурирован неправильно. Проверьте, что модем установлен в режим автоответа (обычно это S0=1). Убедитесь, что лампочка модема DTR или TR горит, что указывает что сигнал Data Terminal Ready выдаётся из Sun. Если это не так, то процесс ttymon либо завис, либо не выполняется. Попытайтесь переинициализировать порт для работы в двунаправленном режиме (bi-directional)

"Приглашение "Login:" искажено"

Приглашение искажено и, например, выглядит как "Logn:" или "Logi"; ничего не происходит при нажатии клавиши <Enter>, но происходит при нажатии <LF> или "Control-J".

Переконфигурируйте установки последовательного порта удалённого компьютера, чтобы установить размер данных 8 бит, 1 стоповый бит, без контроля чётности.


"Невозможно войти, кажется что пароль неверен"

Это проблема связана с контролем чётности. Порождённая сессия terminal/tip использует чётность, которая отличается от используемой ttymon.

"Нужно ли менять настройки в eeprom?"

Не меняйте eeprom, если Вашей задачей не является инсталляция терминала, работающего на уровне bootprom.

"Нет приглашения "login:""

При помощи указанной ниже команды проверьте запущен ли процесс 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/ttymon

PID 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 ID       
   zsmon          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.