PPP HOWTO: Конфигурирование вашего модема и последовательного порта

Next Previous Contents

9. Конфигурирование вашего модема и последовательного порта

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

Помните:

    DOS com1: = Linux /dev/cua0 (и /dev/ttyS0)
    DOS com2: = Linux /dev/cua1 (и /dev/ttyS1)
итд

Также стоит запомнить, что, если вы имеете 4 последовательных порта, то на стандартном PC com1 и com3 совместно используют IRQ4, а com2 и com4 совместно используют IRQ3.

Если вы имеете устройства на стандартных последовательных портах, которые совместно используют IRQ с вашим модемом, то у вас будут проблемы. Вы должны удостовериться, что ваш последовательный порт модема находится на собственном, уникальном IRQ. Многие современных последовательных плат (и последовательные порты на материнской плате лучшего качества) позволяют вам менять IRQ последовательных портов.

Если у вас ядро Linux 2, то вы можете проверить "задействованные" IRQ, используя команду cat /proc/interrupts, которая выведет примерно вот что:

  ______________________________________________________________________
   0:    6766283   timer
   1:      91545   keyboard
   2:          0   cascade
   4:     156944 + serial
   7:     101764   WD8013
  10:     134365 + BusLogic BT-958
  13:          1   math error
  15:    3671702 + serial
  ______________________________________________________________________

Видно, что последовательные порты занимают IRQ4 (мышь) и IRQ15 (постоянная модемная PPP связь с Интернетом. (Имеется также последовательный порт на com2, IRQ3 и com4 находится на IRQ14, но поскольку они незадействованы, то они не обнаружены).

Предупреждение: Вы должны знать, что вы делаете, если вы собираетесь поиграться с вашими IRQ! Вы должны не только отрыть ваш компьютер, вытащить платы и поиграть с джамперами, но и должны знать какие IRQ используются для каждого кстройства. В моем случае, компьютер оборудован только SCSI внешними устройствами, так что я могу отключить на материнской плате IDE интерфейсы, которые обычно используют IRQ14 и 15!

Также не забудьте, что, если на вашем PC загружаются другие операционные системы, изменение IRQ может привести к тому, что OS не сможет загружаться правильно - или вообще не загрузится!

Если вы назначаете вашему последовательному порту не обычное IRQ, то вы должны сообщить Linux, какое IRQ какой порт использует. Это делается программой setserial и лучше всего выполнять это как часть процесса начальной загрузки в rc.local или rc.serial, который вызывается из rc.local, или как часть инициализации SysV. Для машины, рассмотренной выше, используются команды

______________________________________________________________________

/bin/setserial -b /dev/ttyS2 IRQ 11 
/bin/setserial -b /dev/ttyS3 IRQ 15
______________________________________________________________________

Однако, если вы используете динамически загружаемые по требованию процесса kerneld модули serial, то вы не можете установить один раз и забыть IRQ и т.д во время начальной загрузки. Это потому, что при выгрузке модуля serial Linux забудет про специальные установки.

Итак, если вы загружаете модуль serial по требованию, то вы должны будете переконфигурировать IRQ и т.д при каждой загрузке модуля.

9.1 Примечание, касающееся последовательных портов и возможностей быстродействия

Если вы используете высокоскоростной (внешний) модем (14,400 кбит или выше), то ваш последовательный порт должен успевать обрабатывать трафик, причем модем особенно производителен при использовании алгоритмов сжатия данных.

Для этого требуется, чтобы ваш последовательный порт использовал современный UART (Универсальный Асинхронный Приемопередатчик) типа 16550(A). Если вы используете старую машину (или старую последовательную плату), то возможно, что ваш последовательный порт имеет только 8250 UART, который может вызвать у вас значительные проблемы при использовании с высокоскоростным модемом.

Используйте команду

setserial -a /dev/ttySx
чтобы Linux вывел вам тип UART, который у вас установлен. Если у вас нет UART типа 16550A, то купите новую последовательную плату (она стоит менее $50). Когда вы приобретаете новую плату, удостоверьтесь, что вы можете на ней менять IRQ!

Обратите внимание: первые версии микросхем 16550 UART имели ошибку. Это было быстро обнаружено, и был выпущен исправленный вариант микросхемы - 16550A UART. Относительно небольшое число дефектных микросхем однако вошло в обращение. Маловероятно, что вы столкнетесь с одной из них, но вы должны посмотреть, точно ли у вас стоит 16550A, особенно на последовательных платах некоторого года изготовления.

9.2 Имена последовательных портов

Исторически, Linux использовал для исходящих звонков устройства cuaX и устройства ttySx для входящих звонков.

Код ядра, который требовал это был изменен в версиях ядер 2.0.x, и вы должны теперь использовать ttySx и для исходящих, и для входящих звонков. Я полагаю, что имена устройств cuaX могут совсем исчезнуть в будущих версиях ядра.

9.3 Конфигурирование вашего модема

Для PPP вы должны будете сконфигурировать ваш модем правильно - чтобы сделать это ПРОЧТИТЕ РУКОВОДСТВО ПО ВАШЕМУ МОДЕМУ! Большинство модемов приходит с фаюричной настройкой по умолчанию, в которой определены опции, требуемые для PPP. Минимальная конфигурация определяет:

  • Аппаратное управление потоком данных (RTS/CTS) (&K3 на многих Hayes модемах) Вы должны проверить другие установки (в стандартных командах Hayes):
  • E1 Command/usr/src/linux-2.0.27/include/linux/serial.h Эхоотображение ВКЛ (требуемый для работы chat)

  • Q0 Отчет по кодам результата (требуемый для работы chat)

  • S0=0 Автоответ ВЫКЛ (если вы не хотите, чтобы модем брал трубку)

  • &C1 Обнаружение несущей (Carrier Detect) ВКЛ только после соединения

  • &S0 Готовность данных (DSR) всегда ВКЛ

  • (в зависимости) Data Terminal Ready

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

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

Это известно как операция разбиения скорости. Если ваш модем поддерживает ее, то заблокируйте последовательный интерфейс модема на самой высокой доступной скорости (обычно 115,200 бод, но возможно и 38,400 бод для модемов 14,400).

Используйте ваше коммуникацуонное программное обеспечение (например minicom или seyon), чтобы выяснить конфигурацию вашего модема, и установите его для PPP.

Многие модемы сообщают свои текущие установки в ответ на AT$V, но вы должны свериться с вашим руководством по модему.

Если вы полностью сбили установки, то вы (обычно) можете возвратиться к первоначальным, дав команду AT$F - возвращение к установкам. (Для большинства модемов, с которыми я сталкивался, фабричные установки включают все необходимое для PPP - но все-таки вы должны это проверить).

Как только вы составили строку установки модема, требуется вписать ее. Примите решение: вы можете сохранить эти установки в энергонезависимой памяти вашего модема, так что они могут быть задействованы соответствующей командой AT. В качестве альтернативы вы можете передавать правильные установки на ваш модем как часть процесса установки соединения PPP.

Если вы используете ваш модем только чтобы звонить из Linux вашему ISP или на корпоративный сервер, то самым простым для вас будет сохранить настройки вашего модема в энергонезависимом ОЗУ.

Если, с другой стороны, ваш модем используется другими приложениями и операционными системами, то безопаснее передавать эту информацию на модем, поскольку при каждом звонке предполагается, что модем гарантированно находится в правильном состоянии. (Этот подход имеет дополнительное преимущество, выраженное в том, что не будет страшно потерять строку установки модема, записанную в энергонезависимом ОЗУ, что может действительно случиться).

9.4 Обратите внимание на управление потоком данных последовательного интерфейса

Когда данные путешествуют по последовательным линиям связи, может случаться так, что данные прибывают быстрее, чем компьютер может их обработать (компьютер может быть занят выполнением чего-то еще - помните, что Linux - многопользовательская многозадачная операционная система). Чтобы гарантировать, что данные не потерялись (входной буфер может переполниться и следовательно данные теряются), нужен какой-то способ управления потоком данных.

  • На последовательных линиях есть два главных способа это сделать:
  • Использование аппаратных сигналов (Clear To Send/Request to Send - CTS/RTS)
  • Использование программных сигналов (Control-S и Control-Q, также известные как XON/XOFF).
В то время как последний может хорошо подходить для терминальной (текстовой) связи, данные при PPP связи использует все 8 битов - и очень вероятно, что где-нибудь в данных появятся байты, которые могут быть истолкованы как Control-S и Control-Q. Так что, если модем установлен с использованием программного управления потоком данных, то things can rapidly go berserk!

Для высокоскоростных связей, использующих PPP (который использует 8 битов данных) необходимо аппаратное управление потоком данных, и по этой причине вы должны использовать аппаратное управление потоком данных.

9.5 Тестирование вашего модема на исходящие звонки

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

При использовании пакета вашего коммуникационного терминала (типа minicom), установите требуемую для PPP инициализацию модема, и позвоните на PPP сервер, с которым вы хотите осуществить сеанс PPP связи.

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

В течение этого процесса, или "захватите" (направьте лог в файл) весь процесс входа в систему в файл или тщательно (очень тщательно) запишите в точности, какие подсказки сервер выдает вам при вводе вашего имени пользователя и пароля (и любые другие команды, необходимые для установления PPP соединения).

Если ваш сервер использует PAP, то вы не должны видеть подсказку входа в систему, но должны взамен видеть на вашем экране (в текстовом представлении) запуск протокола управления связи (который похож на мусор).

Несколько предупреждений:

некоторые серверы очень интеллектуальны: вы можете регистрироваться либо используя текстовые приглашения ко вводу имени/пароля пользователя, либо используя PAP. Так что, если ваш ISP или корпоративный сайт использует PAP, но вы не видите тут же появляющийся мусор, то это не обязательно означает, что вы сделали что-то неправильно.

  • некоторые серверы требуют, чтобы вы ввели сначала некоторый текст и только потом начинают посялать стандартные PAP последовательности.
  • Некоторые PPP серверы пассивны - который ничего не делают до тех пор, пока клиент не отправит им допустимый lcp пакет. Если ppp сервер, с которым вы соединяетесь, функционирует в пассивном режиме, то мусор вы не увидите!
  • Некоторые серверы не запускают PPP, пока вы не нажмете enter - так что, если вы правильно регистрируетесь и не видите мусор, то попробуйте нажать enter!
Cтоит позвонить по крайней мере дважды - некоторые серверы изменяют свои подсказки (например, со временем!) при каждой последующей регистрирации. Две критические подсказки, которые ваш Linux компьютер должен уметь определять:
  • подсказка, которая требует, чтобы вы ввели ваше имя пользователя;
  • подсказка, которая требует, чтобы вы ввели ваш пароль;
Если вы должны выдать команду, чтобы запустить PPP на сервере, то вы будете также должны выяснить, какую подсказку сервер выдает вам, для ввода этой команды.

Если ваш сервер автоматически запускает PPP, как только вы зарегистрировались, то вы увидите мусор на вашем экране - это PPP сервер посылает на вашу машину информацию, чтобы запустить и сконфигурировать PPP соединение.

Это должно выглядеть примерно так

______________________________________________________________________

~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}
______________________________________________________________________
(and it just keeps on coming!)

На некоторых системах PPP должен быть явно запущен на сервере. Это обычно из-за того, что сервер был установлен с позволением входить по PPP-логину в систему и запускать системный шелл, используя ту же самую пару имени/пароля пользователя. Если дело обстоит так, то выдайте эту команду, когда зарегистрируетесь в системе. Снова вы увидите мусор,так как серверная сторона запустила PPP соединение.

Если вы не видите это сразу же после соединения (и регистрации в системе и запуска PPP сервера, если требуется), то нажмите enter, чтобы увидеть, запустится ли PPP сервер ...

В этой точке, вы можете сказать вашему модему "положить трубку" (обычно, для этого надо быстро напечатать +++ и потом дать команду ATHO, если ваш модем ответил OK).

Если вы не можете заставить ваш модем работать, читать руководство по вашему модему, man по вашей коммуникационной программе и Serial HOWTO! Когда вы их изучите, действуйте как сказано выше.


Next Previous Contents