Винмодемы и Linux HOWTO


Винмодемы и Linux HOWTO

Alexandre J., alexandre12@mageos.com, перевод Александра В. Шубнякова, http://linmodems.nm.ru/, linmodemsATnmDOTru

v1.2, 29 апреля 2001


Этот документ поможет (надеюсь) пользователям, имеющим винмодем, заставить его работать под Linux.

1. Что есть винмодем?

2. ISA или PCI?

3. Установка драйвера модема

4. Конец...


1. Что есть винмодем?

1.1 Они - модемы...

Винмодем, подобно другим модемам, используется для доступа к телефонным услугам, таким как BBS, Internet, Voice Phone, Факс и т.д. Это определяется телефонной линией и характеризуется ее скоростью. Если Вы хотите узнать больше о модемах, я отсылаю Вас к Modems-HOWTO.

1.2 ...не как настоящие модемы!

Но они - ВИНмодемы. То есть они нуждаются в Windows. Почему? Просто, потому что они "глупы". Они нуждаются в специальном программном обеспечении - драйвере, для выполнения своих задач. А драйверы, идущие с модемом, в 99 % исключительно для платформы MS WINDOWS. Но с "продвижением Linux в массы", некоторые производители, как LT или Motorola, решили создать linux-драйвер для своих модемов. Но они не принимают linux-философию: драйверы , конечно, обеспечивают работу, но они ' Закрытый Код '. Они бесплатные в смысле цены, но не находятся под GPL. Это означает, что код не доступен.

Так, некоторые 'хакеры' решили сделать OpenSource-драйвер, но они не знают многого об этих модемах, потому что изготовители не хотят сообщать спецификации своих модемов, так что OpenSource-драйверы часто являются alpha или beta.

1.3 Как узнать, винмодем у меня или нет

1. Попытайтесь узнать, к какому последовательному порту подключен ваш модем (под Windows или MS DOS, например: COM1, COM2...).

Имя вашего модема под Linux есть /dev/ttyS(x-1), где x - номер последовательного порта под DOS . < Пример: Под DOS - COM1, под Linux - ttySx, где x=1-1, таким образом ttyS0

2-ой пример: Под DOS - COM3, под Linux ttyS2

и так далее

2. Сделайте символическую ссылку /dev/modem для /dev/ttySx:


rm -f /dev/modem
ln -s /dev/ttySx /dev/modem

3. Скачайте и установите пакет minicom. Затем выполните 'minicom -s'.

Выберите 'Serial Port Setup', нажмите 'A', чтобы перейти к 'Serial Device', удалите всю строку, наберите '/dev/modem'. Затем нажмите [Enter]. Нажмите [Esc], выберите 'save setup as dfl' и, наконец, выберите 'Exit'.

Подождите немного, затем наберите 'AT', если модем ответит 'OK', значит у Вас НЕ винмодем - Вы имеете стандартный модем...

Если инициализация идет слишком долго, то Вы - "счастливый обладатель" винмодема. Читайте этот HOWTO. Log in as root.

4. Выйдите из Minicom, нажав CTRL+A, затем X.


2. ISA или PCI?

2.1 PCI?

О'кей, значит, имеем винмодем... Но есть два типа винмодемов: ISA или PCI, отличающихся друг от друга. Итак, теперь мы проверим: PCI- или ISA-модем у нас. Сперва, Вы должны сконфигурировать ваше ядро. В *config Вы должны ответить 'Yes' на следующие вопросы:

  • В 'Loadable module support': 'Enable loadable module support (CONFIG_MODULES)' и 'Set version information on all modules for symbols (CONFIG_MODVERSIONS)' (обратите внимание, что у Вас должен быть установлен пакет modutils; См. Kerneld-HOWTO)
  • В 'General setup':

    'PCI support' (CONFIG_PCI)

    Выберите 'Any' в 'PCI Access Mode' (CONFIG_PCI_GOBIOS)

    'PCI quirks' (CONFIG_PCI_QUIRKS)

    'Backward compatible /proc/pci' (CONFIG_PCI_OLD_PROC)

  • Если Вы можете сконфигурировать PCI Device Name Database (возможно для ядер 2.4+), Вы можете ответить Y, это сделает ваш файл /proc/pci более легким для понимания (CONFIG_PCI_NAMES).
  • В 'Filesystems'

    '/proc filesystem support' (CONFIG_PROC_FS)

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

Теперь мы предполагаем, что ваше новое ядро установлено.

Выполните 'cat /proc/pci'. Если Вы видите название вашего модема в строках, возвращенных по данной команде, то у Вас PCI-винмодем. Переходите к разделу 'Установка драйвера'

2.2 или ISA?

Если Вы не находите это (не видите названия своего модема в строках, возвращенных по команде 'cat /proc/pci'), возможно Вы имеете ISA-модем. Как убедиться?

ISA по умолчанию не поддерживается Ядром (UPDATED: если Вы имеете ядро версии 2.4.x, оно (ядро) может сделать это (поддержать ISA) автоволшебно (automagically) для Вас, если это так, то пропустите этот раздел и читайте следующий). Есть стороннее программное обеспечение, называмое isapnp, которое делает это (поддерживает ISA). Сначала Вы должны убедиться, что у Вас установлен этот пакет. Если нет, установите его, скачав пакет isapnptools.

Установив isapnptools, мы запустим специальную программу pnpdump, которая "осмотрит" (inspect) ваш компьютер на предмет обнаружения ISA-устройств. Затем она попытается угадать ресурсы, используемые устройствами, и напечатает их в файл /etc/isapnp.conf. Затем Вы отредактируете этот файл и запустите другую программу isapnp, которая прочтет файл isapnp.conf и автоматически сконфигурирует ваши устройства.

А? Звучит неправдоподобно? Тогда следуйте следующим (sorry, за неоднократную тавталогию) инструкциям:

1. Выполните 'pnpdump > /etc/isapnp.conf'.

2. Отредактируйте его с помощью вашего любимого текстового редактора

3. Найдите раздел с описанием вашего модема.

4. Раскомментируйте (uncomment) несколько строчек в этом файле (Удалите # в начале строки. Вам нужны:

1 строка '(IO 0 ...)'

1 строка '(INT 0 ...)'

1 строка '(DMA 0 ...)'

1 строка '(DMA 1 ...)'

1 строка '(IO 1 ...)'

5. Удалите '(CHECK)' во всех раскомментированных IO-строках

6. Выполните 'isapnp /etc/isapnp.conf'. Если Вы получите ошибки, отредактируйте файл isapnp.conf - попробуйте изменить параметры, сообщения об ошибках помогут Вам справиться с этим. Если же Вы не получите сообщений об ошибках, продолжайте редактировать isapnp.conf - раскоментируйте '(ACT Y)'-строку в разделе с описанием вашего модема. Сделав это, перезапустите 'isapnp /etc/isapnp.conf'. В ответ вы должны получить "[[Название вашего модема]] Enabled OK"

7. Добавьте 'isapnp /etc/isapnp.conf' в ваш /etc/rc.d/rc.local, набрав 'echo "isapnp/etc/isapnp.conf" >> /etc/rc.d/rc.local'. Это полезно для авто-конфигурирования ваших устройств при каждом запуске

Если это может помочь, то здесь я привел выдержку из моего файла /etc/isapnp.conf (я закомментировал этот файл, комментариям в оригинальном файле здесь предшествует ##)


# Незначительные детали ...
## (DEBUG)
(READPORT 0x0203)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # или WARNING

# Идентификация моей модемной карты

## Card 1: (serial identifier e2 00 00 01 00 05 50 c3 1e)
## Vendor Id GVC5005, Serial Number 256, checksum 0xE2.
## Version 1.0, Vendor version 0.1
## ANSI string -->LT Win Modem<--
##
## Logical device id HSM0140
##     Device support I/O range check register
#

# Мы хотим cконфигурировать карту GVC5005/256

(CONFIGURE GVC5005/256 (LD 0

# I/O Base address 0x03f8, with a range of 8
(IO 0 (SIZE 8) (BASE 0x03f8) )
# IRQ 4
(INT 0 (IRQ 4 (MODE +E)))
# DMA 5
(DMA 0 (CHANNEL 5))
# DMA 7
(DMA 1 (CHANNEL 7))
# I/O Base Address 2  0x0100, range 8
(IO 1 (SIZE 8) (BASE 0x0100) )
# Name of the card
 (NAME "GVC5005/256[0]{LT Win Modem        }")
# Activate it
(ACT Y)
# End configuration
))

######## Параметры остальных моих ISA-устройств ##############
 
## Возвращает все карты в состояние "Wait for Key"
(WAITFORKEY)

2.3 ISA и ядра версий 2.4

Если у Вас ядро версии 2.4 (чтобы узнать это, запустите 'uname -r'), то Вам не надо производить все вышеописанные хитрые манипуляции с third-party пакетом isapnptools (его время прошло), так как ядра версий 2.4 позволяют использовать метод, сходный с методом для PCI. Но чтобы воспользоваться этой особенностью, Вам надо ответить 'Y' или 'М.' на 'Plug and Play support' (CONFIG_PNP) и 'ISA Plug and Play support' (CONFIG_ISAPNP) во время конфигурирования ядра (все это находится в разделе 'Plug and Play configuration'). Затем снова перекомпилируйте ваше ядро и установите его. Если Вы ответили 'М' на 'ISA Plug-and-Play support', то хорошо бы выполнить 'modprobe isapnp'. Вы должны иметь драйвер, совместимый с этим новым методом доступа к устройствам (например, ltmodem 5.78, читайте следующий раздел).


3. Установка драйвера модема

Вам не надо читать этот раздел полностью; читайте только тот, который соответствует вашему модему. На данный момент он описывает только установку LT Modem с использованием драйвера от Lucent и OpenSource-драйвера. Если Вы написали или использовали другой драйвер для винмодема, Open- или ClosedSource, то Вы можете послать его описание мне по электронной почте (alexandre12@mageos.com), и я включу его в этот раздел.

3.1 ltmodem 5.78

URL: http://www.tux.org/pub/dclug/marvin/ltmodem-5.78e.tar.gz

Автор: Lucent

Лицензия: Non-GPL

Поддерживает: ISA/PCI-модем с чипсетом от Lucent (семейство Mars)

Особенности: Ядерный модуль; симулирует последовательный порт. Позволяет использовать PPP, Fax и Voice

Текущая версия: 5.78e

Документация: README-1ST

Требует: 2.2.x или 2.4.x; ISA PNP Support; Loadable module support; C Compiler

Как использовать: Читайте README-1ST. Там все очень понятно написано.

Проблемы:

  • Unresolved symbols: xxx_isapnp_xxxx: выполните modprobe isapnp.
  • Device or ressource busy: ваш модем не совместим с этим драйвером
Комментарии: Lucent предоставила код для некоторых элементов.

3.2 LT WinModem (от Lucent) 5.68 (УСТАРЕВШИЙ)

URL: http://www.linmodems.org/linux568.zip

Автор: Lucent Technologies

Лицензия: Non-GPL

Поддерживает: ISA/PCI-модемы с чипсетом от Lucent (семейство Mars)

Особенности: Ядерный модуль; симулирует последовательный порт. Позволяет использовать PPP, Fax и Voice

Текущая версия (насколько я знаю): 5.68

Документация: README

Требует: ядро 2.2.12 или выше от RedHat; loadable module support

Как использовать: Разархивируйте пакет ('unzip linux568.zip') и выполните ./ltinst. Это - все!

Проблемы:

  • 'insmod: ltmodem: Unresolved symbol(s) *****': У Вас ядро, не соответствующее ltmodem. Скачайте ядро версии 2.2.12 с ftp.kernel.org, скомпилируйте и установите его
  • 'Warning: kernel version mismatch...": Это из-за того, что версия вашего ядра не 2.2.12-20. Это всего лишь предупреждение - на работу модема это никак не влиет
  • 'ltmodem: init_module: device or resource busy':
    • У Вас установлен не lt модем или ваш модем не совместим с ним
    • Если у Вас ISA-модем, то, значит, он не сконфигурирован посредством isapnp
    • Если у Вас PCI-модем, то, значит, не была сконфигурирована поддержка PCI ядром

3.3 Программа LTMODEM (OpenSource драйвер)

URL: http://www.close.u-net.com

Авторы: Richard Close и Pavel Machek

Лицензия: GPL

Поддерживает: ISA/PCI-модемы с чипсетами от Lucent (семейство Mars)

Особенности: User-space driver; позволяет использовать Voice calls; не позволяет использовать PPP (V90)

Текущая версия (насколько я знаю): 0.99

Документация: README

Требует: GNU C Compiler, automake

Как использовать:

  • PCI: make ; make install - Затем используйте программу 'ltmodem' для связи с модемом
  • ISA: (прочтите файл README.ISA) mv Makefile Makefile.PCI ; mv Makefile.ISA Makefile ; отредактируйте config.h - замените на правильные значения параметров вашего модема (I/O Address, DMA, IRQ) ; make ; make install - Затем используйте программу 'ltmodem' дл связи с модемом.

Проблемы:

  • "Sorry, I can't found any modem...":

    • У Вас не LT модем
    • Ваш ISA-модем не сконфигурирован isapnp
    • Ваш ISA-модем сконфигурирован ; но ltmodem не скомпилирован как ISA
    • У Вас PCI-модем, но поддержка PCI не включена в ядро
    • У Вас PCI-модем и совместимое с ним ядро, но ltmodem не скомпилирован как PCI


4. Конец...

4.1 Лицензия, Авторское право

Copyright (C) 2000, 2001 Alexandre J.

Эта программа явлется free software; Вы можете передавать и/или изменять

ее в соответствии с GNU General Public License

Фонда свободного программного обеспечени версии 2 или

(если хотите) любой более поздней версии.

Эта программа распространется в надежде, что она будет полезна,

но БЕЗ КАКОЙ-ЛИБО ГАРАНТИИ.

См. GNU General Public License для получения информации.

Вы должны были получить копию GNU General Public License

вместе с этой программой; если нет, то напишите во Free Software

Foundation, Inc, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

4.2 Контакты

Если Вы имеете любые идеи по поводу этого документа, пожалуйста пошлите их мне по электронной почте: alexandre12@mageos.com.

4.3 Ссылки

  • Домашняя страница проекта Linmodems: http://www.linmodems.org

  • Домашняя страница проекта LTModem: http://www.close.u-net.com

  • Домашняя страница Lucent Technologies: http://www.lucent.com

  • Ядро Linux: http://www.kernel.org

  • Домашняя страница isapnptools: http://www.roestock.demon.co.uk/isapnptools

  • Домашняя страница LDP (для получения HOWTO): http://www.redhat.com/mirrors/LDP