Глава 15. Коммуникационные адаптеры

В этом разделе освещены вопросы о работе последовательных адаптеров во FreeBSD. Протоколы PPP и SLIP рассматриваются в разделе Работа в сети.

15.1. Как узнать, какие последовательные порты были обнаружены FreeBSD?
15.2. Как узнать, какие внутренние модемы были обнаружены FreeBSD?
15.3. Как осуществляется доступ к последовательным портам во FreeBSD?
15.4. Как включить поддержку многопортовых последовательных адаптеров?
15.5. Может ли FreeBSD использовать несколько многопортовых адаптеров с одинаковым IRQ?
15.6. Можно ли настроить для порта режим работы по умолчанию?
15.7. Как сделать вход через модем?
15.8. Как подключить терминал к FreeBSD?
15.9. Почему не удаётся запустить tip или cu?
15.10. Мой модем Hayes не поддерживается — что можно сделать?
15.11. Как я должен ввести эти AT-команды?
15.12. Почему не срабатывает знак @ для описания характеристики pn?
15.13. Как набрать телефонный номер из командной строки?
15.14. Нужно ли при этом каждый раз задавать скорость работы с портом?
15.15. Мне нужно иметь доступ к нескольких хостам через терминальный сервер.
15.16. Может ли tip использовать несколько телефонов для одного сайта?
15.17. Почему нужно нажимать Ctrl+P дважды для посылки одного этого символа Ctrl+P?
15.18. Неожиданно всё стало набираться ЗАГЛАВНЫМИ БУКВАМИ?
15.19. Как можно передавать файлы с помощью программы tip?
15.20. Как использовать zmodem вместе с tip?

15.1.

Как узнать, какие последовательные порты были обнаружены FreeBSD?

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

% dmesg | grep -E "^sio[0-9]"

Вот пример вывода вышеуказанной команды:

sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550A

Здесь присутствуют два последовательных порта. Первый находится на IRQ 4, использует порт ввода/вывода 0x3f8 и построен на микросхеме UART типа 16550A. Второй использует тот же тип микросхемы, но находится на IRQ 3 и использует адрес порта ввода/вывода 0x2f8. Внутренние модемы выглядят точно также, как последовательные порты, за исключением того, что модем к ним «подключен» всегда.

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

15.2.

Как узнать, какие внутренние модемы были обнаружены FreeBSD?

Посмотрите ответ на предыдущий вопрос.

15.3.

Как осуществляется доступ к последовательным портам во FreeBSD?

Третий последовательный порт, sio2 (посмотрите справку по sio(4)), который в DOS называется COM3), обозначается как /dev/cuad2 для устройств, выполняющих исходящие звонки, и /dev/ttyd2 для устройств, принимающих входящие звонки. Какая разница между этими двумя классами устройств?

Вы должны использовать ttydX для входящих соединений. При открытии /dev/ttydX в блокирующем режиме, процесс будет ожидать неактивности соответствующего устройства cuadX, а затем появления сигнала о наличии несущей. При открытии устройства cuadX он проверяет, что последовательный порт не используется уже устройством ttydX. Если порт доступен, он «похищает» его у устройства ttydX. Также устройство cuadX не следит за наличием несущей. С такой схемой работы и модемом, находящимся в режиме автоответа, вы можете позволить пользователям входить в систему и в то же время можете осуществлять исходящие звонки, а система позаботится о возможных конфликтах.

15.4.

Как включить поддержку многопортовых последовательных адаптеров?

Повторим ещё раз: информация о конфигурировании ядра содержится в разделе, посвящённом этому вопросу. Для многопортовых последовательных адаптеров добавьте в файл device.hints(5) по строке sio(4) на каждый порт. Но IRQ должен быть указан только у одного порта. Все порты на адаптере должны использовать одно и то же значение IRQ. Для обеспечения согласованности используйте для указания IRQ последний последовательный порт. Также укажите следующую опцию в файле конфигурации ядра:

COM_MULTIPORT

В следующем примере указано содержимое /boot/device.hints для 4-портового последовательного адаптера AST на IRQ 12:

hint.sio.4.at="isa"
hint.sio.4.port="0x2a0"
hint.sio.4.flags="0x701"
hint.sio.5.at="isa"
hint.sio.5.port="0x2a8"
hint.sio.5.flags="0x701"
hint.sio.6.at="isa"
hint.sio.6.port="0x2b0"
hint.sio.6.flags="0x701"
hint.sio.7.at="isa"
hint.sio.7.port="0x2b8"
hint.sio.7.flags="0x701"
hint.sio.7.irq="12"

Флаги указывают, что управляющий порт имеет младший номер устройства 7 (0x700), и все порты совместно используют один и тот же номер IRQ (0x001).

15.5.

Может ли FreeBSD использовать несколько многопортовых адаптеров с одинаковым IRQ?

Пока нет. Вы должны назначить уникальный IRQ для каждого адаптера.

15.6.

Можно ли настроить для порта режим работы по умолчанию?

Смотрите раздел Руководства FreeBSD, посвящённый последовательным соединениям.

15.7.

Как сделать вход через модем?

Ознакомьтесь с разделом Руководства FreeBSD, посвящённого входящим соединениям.

15.8.

Как подключить терминал к FreeBSD?

Информацию по этому вопросы можно найти в разделе Терминалы Руководства FreeBSD.

15.9.

Почему не удаётся запустить tip или cu?

Скорее всего, в вашей системе программы tip(1) и cu(1) могут получить доступ к каталогу /var/spool/lock только из-под пользователя uucp и членов группы dialer. Вы можете использовать группу dialer для управления доступом к вашему модему или удалённым системам. Достаточно добавить пользователя в группу dialer.

Вы можете разрешить всем пользователям вашей системы запускать tip(1) и cu(1), выполнив команды:

# chmod 4511 /usr/bin/cu
# chmod 4511 /usr/bin/tip

15.10.

Мой модем Hayes не поддерживается — что можно сделать?

Смотрите этот ответ в Руководстве FreeBSD.

15.11.

Как я должен ввести эти AT-команды?

Смотрите этот ответ в Руководстве FreeBSD.

15.12.

Почему не срабатывает знак @ для описания характеристики pn?

Смотрите этот ответ в Руководстве FreeBSD.

15.13.

Как набрать телефонный номер из командной строки?

Смотрите этот ответ в Руководстве FreeBSD.

15.14.

Нужно ли при этом каждый раз задавать скорость работы с портом?

Смотрите этот ответ в Руководстве FreeBSD.

15.15.

Мне нужно иметь доступ к нескольких хостам через терминальный сервер.

Смотрите этот ответ в Руководстве FreeBSD.

15.16.

Может ли tip использовать несколько телефонов для одного сайта?

Смотрите этот ответ в Руководстве FreeBSD.

15.17.

Почему нужно нажимать Ctrl+P дважды для посылки одного этого символа Ctrl+P?

Смотрите этот ответ в Руководстве FreeBSD.

15.18.

Неожиданно всё стало набираться ЗАГЛАВНЫМИ БУКВАМИ?

Смотрите этот ответ в Руководстве FreeBSD.

15.19.

Как можно передавать файлы с помощью программы tip?

Смотрите этот ответ в Руководстве FreeBSD.

15.20.

Как использовать zmodem вместе с tip?

Смотрите этот ответ в Руководстве FreeBSD.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.