Модем (modem) (образовано от modulator/demodulator) это устройство для преобразования цифровых сигналов, используемых компьютером в последовательные потоки аналоговых данных, передаваемых по телефонной линии. В первые дни ПК, модемы были внешними устройствами, которые подсоединялись к последовательному порту. Позднее, модемы стали выпускаться в виде плат, которые могли быть вставлены внутрь системного блока, что снижало стоимость размещения и подключения к сети, ликвидируя необходимость в кабеле между последовательным портом и модемом. Следующим снижением стоимости стало переложение некоторых функций, обычно выполнявшихся модемом, на программное обеспечение ПК. Модемы такого типа можно назвать, в зависимости от терминологии, soft-модемам, HCF модемами, HSP модемами, HSF модемами или модемами без контроллера (controllerless modem). Такие модемы были разработаны для снижения стоимости систем, которые в основном работают под Microsoft Windows. Термин win-модем часто используется в отношении этих устройств, хотя Win-модем® является зарегистрированной торговой маркой U.S. Robotics, которая производит различные модемы под этим именем.
Большинство внешних и полнофункциональных внутренних модемов будут работать без проблем и в Linux. Некторые из модемов, требующих помощи программного обеспечения Операционной системы ПК, также будут работать в Linux и список модемов этой категории постоянно пополняется. Soft-модемы, работающие в Linux часто называют lin-модемами и есть сайт, посвященный им (linmodems.org). Если у вас такой модем, то в начале следует посетить указанный сайт lin-модемов (смотри Ресурсы) и загрузить последнюю версию инструмента scanmodem. Она сообщит все что известно о доступном драйвере (если он есть) для вашего модема.
Если у вас ISA-модем, то вам нужно убедиться, что порты, IRQ и DMA каналы не конфликтуют с другими устройствами. Для дополнительной информации смотри предыдущий раздел Настройки BIOS.
Модемы. рассматриваемые в данном разделе являются асинхронными модемами. Есть также другой класс модемов, называемых синхронными модемами, использующихся для HDLC, SDLC, BSC или ISDN. Упрощенно, можно сказать, что асинхронная передача применяется для передачи отдельных байтов информации, а синхронная связь используется для передачи блоков информации.
Большинство соединений Linux используют Internet Protocol или IP. Поэтому Linux-системам необходимо нечто вроде IP для асинхронных линий, которые изначально разрабатывались не для блоковых протоколов вроде IP. Первый вариант реализации этого назывался Serial Line Interface Protocol (Протокол интерфейса последовательной линии) или SLIP. Его вариант, использующий сжатые заголовки, назвали CSLIP. В наши дни, Большинство Internet-провайдеров (ISP — Internet Service Provider) поддерживают dialup-соединения с использованием Point-to-Point Protocol или PPP.
При связи посредством модема, существует множество параметров настройки, которые вам возможно придется изменить на вашем компьютере с Linux. Наиболее важно установить скорость соединения системы с модемом. Обычно она выбирается больше чем номинальная скорость соединения в линии, и часто устанавливается максимально возможное значение для последовательного порта и модема. Одним из способов настроить или посмотреть параметры модема, используемые драйвером последовательного порта, является программа setserial. Команда setserial проиллюстрирована Листингом 13. Заметьте, что параметр -G приводит к форматированному выводу, удобному для применения в качестве установочных параметров с setserial. В данном случае, UART (Universal Asynchronous Receiver Transmitter) имеет буфер 16550, что является стандартом для UART в современных ПК. Установлена скорость 115,200 bps, которая также обычно используется с этим UART для большинства современных внешних модемов 56kbps. Следует отметить, что скорость по умолчанию на некоторых более новых системах может быть установлена вплоть до 460,800bps. Если ваш модем не откликается, то это первое, что вы должны проверить.
Листинг 13. Команда setserial
[root@attic4 ~]# setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
[root@attic4 ~]# setserial -G /dev/ttyS0
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
Единственное, что следует сказать особо о setserial так это то, что она не обращается к самому устройству. Все, что она выводит — это параметры, используемые драйвером последовательного порта, если только вы не используете параметры autoconfig и auto_irq parameters. В этом случае setserial попросит ядро опросить устройство. Для более полной информации об этих и других параметрах команды смотрите man-страницы setserial.
Мы рассмотрим сеть более подробно в учебнике для экзамена LPI 102 (Смотри Ресурсы). А между тем если вы хотите настроить PPP-соединение, то имеется несколько превосходных инструментов, которые помогут вам сделать это. Программа kppp имеет приятный графический интерфейс и проста в использовании. Команда wvdial является хорошим инструментом командной строки для настройки dialup соединений. В добавок к этому, дистрибутивы могут иметь другие инструменты или специально для PPP или dialup соединений, или как часть более общих инструментов настройки сети, такие как system-config-network в Fedora Core 4.
Другим аспектом модемных соединений, который также обычно контролируется коммуникационной программой, но может быть изменён или иметь значение по умолчанию записанное в самом модеме, является flow control (управление потоком данных). Он определяет способ, при помощи которого один модем передаёт другому команду подождать, пока не будет очищен буфер получения данных. Такая команда может выдаваться программным обеспечением путем отправки символов XON и XOFF, но более хороший способ, используемый также для PPP-соединений, называется hardware flow control (аппаратное управление потоком данных) при котором для индикации готовности к приему данных используются значения сигнальной линии модема. Используемые сигналы называются Clear to Send (Нечего передавать) или CTS и Ready to Send (Готов к передаче) или RTS, так что вы часто будете видеть их или нечто подобное при описании управления потоком данных с использованием RTS/CTS. На Рисунке 4 показано как настроить скорость и аппаратное управление потоком данных с использованием программы kppp.
Рисунок 4. Настройка параметров модема в kppp
Звуковые карты
Большинство персональных компьютеров, продаваемых в настоящее время содержат звуковую карту.
Звуковой порт (Sound Blaster)
Серия звуковых карт The Creative Labs Sound Blaster series стала de facto промышленным стандартом для звуковых карт. Хотя существует множество превосходных звуковых карт других брэндов, большинство из них предоставляют режим совместимости для одной или нескольких серий Sound Blaster. Оригинальная карта Sound Blaster была 8-битной и работала в оригинальном IBM PC. Позднее 16-битные модели для PC-AT и совместимые с ними использовали 16-битную шину PC-AT или ISA. Сейчас, большинство таких карт используют шину PCI. Многие материнские платы содержат даже встроенный чип, совместимый с Sound Blaster. Звуковые устройства могут быть также подсоединены через USB, хотя мы не будем рассматривать их.
Порты, используемые ISA-картой Sound Blaster это 0220-022F, хотя часто можно было выбрать базовый адрес 240, 260 или 280. Подобно этому, IRQ обычно выбирались из стандартного набора 2, 5, 7, или 10. По умолчанию использовалось IRQ 5. Также обычно можно было настраивать DMA каналы.
Как и для всех ISA-устройств, вы должны убедиться, что порты, IRQ и DMA каналы не конфликтуют с другими устройствами. Для дополнительной информации смотри предыдущий раздел Настройки BIOS.
MIDI порт (MPU-401)
Многие звуковые карты также имеют интерфейс для подключения устройства MIDI (от Musical Instrument Digital Interface — Цифровой Интерфейс Музыкальных Инструментов). Вообще этот интерфейс эмулирует Roland MPU-401. Стандартные порты, используемые ISA-интерфейсом MPU-401 это 0200-020F.
Как и для всех ISA-устройств, вы должны убедиться, что порты, IRQ и DMA каналы не конфликтуют с другими устройствами.
Настройка поддержки звука в Linux
Современные ядра 2.4 и 2.6 имеют поддержку звука для огромного числа разнообразных звуковых устройств, встроенную в ядро, обычно в качестве модуля. Как и для других устройств, мы можем использовать команду pnpdump для ISA-устройств, или команду lspci для PCI устройств, чтобы вывести информацию об устройстве. Листинг 14 содержит вывод команды lspci для звуковой системы от Intel (Intel sound system), встроенной в материнскую плату.
Листинг 14. Использование lspci для отображения звуковых ресурсов
[root@lyrebird root]# lspci | grep aud
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM
(ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)
Модули ядра — это предпочтительный способ для обеспечения поддержки различных устройств. Необходимо только загрузить модули, соответствующие устройствам реально присутствующим в системе, причем они могут выгружаться и подгружаться без перезагрузки системы. Для ядра версии 2.4 и более ранних, информация о конфигурации ядра хранится в /etc/modules.conf. Для ядер 2.6, система модулей ядра была изменена и теперь информация хранится в /etc/modprobe.conf. В любом случае, команда lsmod отформатирует содержимое /proc/modules и отобразит состояние загруженных модулей.
В Листинге 15 приведено содержимое /etc/modprobe.conf для ядра 2.6, а Листинг 16 содержит вывод команды lsmod, связанный со звуковыми устройствами этой системы.
Листинг 15. Пример /etc/modprobe.conf (Ядро 2.6)
[root@attic4 ~]# cat /etc/modprobe.conf
alias eth0 e100
alias snd-card-0 snd-intel8x0
install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 &&\
/usr/sbin/alsactl restore >/dev/null 2>&1 || :
remove snd-intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; \
/sbin/modprobe -r --ignore-remove snd-intel8x0
alias usb-controller ehci-hcd
alias usb-controller1 uhci-hcd
Листинг 16. Вывод команды lsmod, связанный со звуком (Ядро 2.6)
[root@attic4 ~]# lsmod |egrep '(snd)|(Module)'
Module Size Used by
snd_intel8x0 34689 1
snd_ac97_codec 75961 1 snd_intel8x0
snd_seq_dummy 3653 0
snd_seq_oss 37057 0
snd_seq_midi_event 9153 1 snd_seq_oss
snd_seq 62289 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device 8781 3 snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss 51185 0
snd_mixer_oss 17857 1 snd_pcm_oss
snd_pcm 100169 3 snd_intel8x0,snd_ac97_codec,snd_pcm_oss
snd_timer 33605 2 snd_seq,snd_pcm
snd 57157 11 snd_intel8x0,snd_ac97_codec,snd_seq_oss,
snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore 10913 1 snd
snd_page_alloc 9669 2 snd_intel8x0,snd_pcm
В Листинге 17 приведено содержимое /etc/modules.conf для ядра 2.4, а Листинг 18 содержит вывод команды lsmod, связанный со звуковыми устройствами этой системы. Заметьте, что файлы modules.conf и modprobe.conf схожи.
Листинг 17. Пример /etc/modules.conf (Ядро 2.4)
[root@lyrebird root]# cat /etc/modules.conf
alias eth0 e100
alias usb-controller usb-uhci
alias usb-controller1 ehci-hcd
alias sound-slot-0 i810_audio
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
Листинг 18. Вывод команды lsmod, связанный со звуком (Ядро 2.4)
Module Size Used by Not tainted
smbfs 43568 1 (autoclean)
i810_audio 28824 0 (autoclean)
ac97_codec 16840 0 (autoclean) [i810_audio]
soundcore 6436 2 (autoclean) [i810_audio]
st 30788 0 (autoclean) (unused)
Поддержка звука на многих системах 2.4 и более ранних обеспечивается благодаря драйверам Open Sound System (OSS) Free. Сегодня многие системы используют драйвера Advanced Linux sound architecture или ALSA. Утилита sndconfig была создана Red Hat для конфигурирования ISA PnP звковых карт. Она также работает и с PCI звуковыми картами. Эта утилита может присутствовать и в системах, не использующих драйвера ALSA, хотя поддежка современных модулей сделала ее практически не нужной. Эта утилита опрашивает звуковую карту, воспроизводя речь Линуса Торвальдса (Linus Torvalds) в качестве теста, а затем обновляет файл /etc/modules.conf. Типичная операция показана на Рисунках 5 и 6.
Взято на ibm.com