Dialup с помощью аналогового модема
Я сначала создал Puppy для доступа в Интернет через обычный модем с помощью коммутируемого доступа к ISP (Internet
Service Provider), через телефонную сеть общего пользования (PSTN). Такой модем называется аналоговым, так как он принимает и отправляет данные на звуковых частотах, которые вы можете слышать когда модем звонит к ISP.
Я перешёл на различные способы широкополосного доступа, однако многие
люди, в некоторых частях мира, всё ещё используют аналоговый dialup.
Следовательно, этот раздел всё ещё очень актуален!
Традиционно, Линукс работал по настоящему только с тем, что мы
называем "аппаратными" последовательными модемами -- в то время,
как многие модемы являются так называемыми
"софт" модемами, и продаются только с драйверами для Microsoft Windows.
Если ваш ПК имеет внутренний модем или внешний модем, подключаемый через
USB, скорее всего это софт-модем.
Пожалуйста обратите внимание, что я здесь говорю об аналоговых модемах,
для дозвона к
ISP (Internet Service Provider) -- они отличаются от 3G, ADSL и
кабельных модемов, которые используются для широкополосного цифрового
доступа в Интернет.
- Внешний аппаратный модем.
Если у вас внешний модем, его легко можно узнать по отличительному
кабелю -- довольно большому квадратной формы с 9 или 25 выводами. Это
аппаратный модем и он определённо будет работать в Puppy.
- Внутренний PCI модем.
'PCI' это разъём на материнской плате, в который можно вставить
внутренний модем. До 2002, выпускались аппаратные PCI модемы, после
этого все они были программными -- так, что скорее всего у вас также он.
- Модем встроенный в материнскую плату.
Технически это всё равно PCI-модемы, так как термин "PCI" на самом деле
относится к главной интерфейсной шине на материнской плате, к которой
подключены все устройства ввода-вывода. Они все являются софт-модемами.
- Внешний USB-модем. В
наши дни USB используется практически для всех внешних устройств --
мыши, клавиатуры, модема, принтера, сканера. Существуют некоторые
аппаратные USB модемы, но скорее всего это софт-модем.
- PCMCIA модем.
Также известен как cardbus. Это разъём на ноутбуках. Они могут быть
программными и аппаратными, современные скорее всего -- программные.
Что такое программный модем? В основном, это более дешёвый модем, в
котором для большинства операций используется процессор компьютера. Это
означает, что он нагружает процессор, что не будет заметно на
современных процессорах, но имеет значение для старых ПК. Мой личный
опыт также показывает, что аппаратные модемы имеют большую скорость
передачи даже на современных ПК.
Настоящий недостаток софт-модема, однако, в том, что для того, чтобы
заставить процессор выполнить определённую работу по обработке требуется
специальный драйвер для этого конкретного модема, и большинство
производителей позаботилось написать драйвера только для Windows.
Однако, некоторые производители стали более
"осведомлены о Linux", а также некоторые любители Linux разработали драйвера.
Имейте ввиду, если у вас софт-модем, он может не работать с
Puppy. Любитель
Puppy 'ezeze5000' (имя на форуме) прислал мне пол-дюжины старых PCI
софт-модемов для тестирования. Это было в 2008, и в то время только один
из них работал в Puppy. С тех пор уровень успеха улучшился, и в 2010
половина из них работала.
Заметьте, что если софт-модем работает в Linux, на жаргоне его называют "linmodem".
Как использовать dialup
В общем, Puppy автоматически определит ваш аналоговый модем и если он
поддерживается, то всё будет автоматически настроено и вы будете готовы к
подключению. Для последовательных модемов это просто, однако
Puppy сейчас поддерживает много софт-модемов. Если он поддерживается, он
скорее всего будет определён автоматически.
Примечание: автоопределение и автонастройка некоторых модемов в процессе
разработки, и есть некоторые текущие обсуждения этой темы на форуме
Puppy.
Всё что вам нужно сделать для подключения - кликнуть на значок
"Соединить" на рабочем столе. Это вызовет "Мастер подключения к
Интернет" в котором вы увидите кнопку "Интернет через аналоговый или
беспроводной модем" -- просто нажмите на неё и вы в деле -- запустится
программа, которую я разработал, называемая PupDial, и она скажет вам, был ли определён ваш модем или нет.
Обратите внимание, внизу в Мастере подключения вы увидите радио-кнопки.
Они позволят вам настроить значок рабочего стола "Соединить" для
немедленного запуска PupDial, а не Мастера -- на один клик меньше чтобы
выйти онлайн!
Одна вещь, хотя Puppy может автоматически определить многие
модемы и автоматически настроить всё так, что модем готов к
использованию, В некоторых случаях вам возможно нужно будет произвести
дополнительные настройки. Например, Puppy определяет ваш модем, но он не
дозванивается -- вы делаете некоторые исследования и находите,
что "строка инициализации" должна быть изменена и тогда он
работает. Но, если вы настраивали софт-модем и заставили его работать,
пожалуйста пожалуйста дайте мне знать об этом и я смогу встроить эти
настройки в следующий релиз Puppy.
Например, некоторым софт-модемам нужно чтобы "проверка гудка" в PupDial была выключена.
Дальнейшая полезная информация
Если вам нужно устранить неполадки вашего модема для коммутируемой
линии, я рекомендую побродить на форуме Puppy. Там есть
специальный раздел для dialup модемов, с множеством ответов и решений.
Главный парень, который сможет вам помочь - это участник форума
'rerwin', который сейчас работает над автоматическим определением и
автоматической настройкой модемов. Rerwin также обновляет PupDial.
Если по какой-либо причине PupDial не работает для вас, в Puppy есть две
другие программы для дозвона с помощью модема, называемые Gkdial и Xeznet,
они в PET-пакетах, которые вы можете установить (см. значок
'Установка' на рабочем столе) -- хотя имейте ввиду, что первое - это
приложение GTK1, а второе приложение Tcl/Tk и в случае с Puppy 4.x и
позднее эти зависимости также должны быть установлены (хотя 4.20 и
4.21 содержат Tcl/Tk, 4.3 и более поздние - нет) -- так, что оставайтесь
с
PupDial если это возможно. Замечание по Xeznet: при добавлении учётной
записи, в поля
"tty" и "speed" не нужно ничего вводить так как они по умолчанию
установлены как
/dev/modem и 115200bps.
Если вы хотите поэкспериментировать с отправлением Hayes команд
на ваш модем, в Puppy есть маленькая аккуратная программа командной
строки называемая modem-stats. Откройте терминал из запустите её подобным образом:
# modem-stats -c "ATZ" /dev/ttyS0
Для неё есть локальный файл справки. Puppy также содержит ещё одну маленькую утилиту связи для командной строки называемую picocom. Онлайн-справка для picocom: http://linux.die.net/man/8/picocom.
Есть ещё одно приложение, называемое Cutecom,
графическая терминальная программа для последовательного порта, которую
вы найдёте в меню Утилиты (заметьте, что последние релизы Puppy не
содержат этой программы внутри
-- она в PET-пакете: см. меню Настройка --> Менеджер пакетов Puppy,
или кликните на значок 'Установка' на рабочем столе -- она требует пакет
библиотеки
Qt, который будет автоматически установлен). Её очень легко
использовать: для моего модема мне нужно было поставить флажок
"Handshake:
software" и выбрать "CR,LF line end" из списка внизу окна. После
открытия последовательного порта на любые Hayes команды, которые вы
введёте в окне "Input:", ответ от модема появится в верхнем текстовом
окне. Например, вы ввели "AT" и нажали ENTER и модем должен ответить
"OK".
На этом сайте больше информации по софт-модемам:
linmodems.technion.ac.il/resources.html
Вот несколько ссылок со списками строк для конкретных модемов:
www.56k.com/inits
www.west.net/~jay/modem
|
'Dialup' через беспроводной модем
Беспроводные модемы часто называют 3G или HSDPA модемами. По сути,
они дают возможность доступа в Интернет без проводов. Они также
используют процедуру "dialup" подобно аналоговым модемам, так, что в
Puppy мы можем использовать тот же графический инструмент PupDial для обоих.
Однако, в этих модемах используется много различных технологий, кроме 3G
или HSDPA, таких, как GPRS, главное различие с точки зрения
пользователя в скорости передачи данных. В принципе, порядок возрастания
скорости такой: GPRS, 3G, HSDPA.
Я только начал писать этот раздел (в декабре 2010), основанный на моём
опыте с тремя различными 3G модемами. Я представляю некоторые записи о
них, которые вы можете найти полезными. Я живу в Австралии, так, что эти
записи могут быть особенно полезными для других австралийцев.
Vodafone
|
Номер доступа: *99#
APN: vfprepaymbb
|
Optus Huwaei E160-E
|
Номер доступа: *99#
APN: preconnect
|
Telstra
|
Номер доступа: *99#
APN:
|
В PupDial, заполните поля 'Номер доступа' и 'APN'. Поля
'Пользователь' и 'Пароль' не имеют значения, так, что оставьте их как есть -- не делайте их пустыми так как приложение wvdial протестует. Обычно, всё остальное можно оставить как есть и просто нажмите кнопку
''Соединить".
Когда PupDial запущен и новый/изменённый модем определён, PupDial
проверяет, что модем отвечает и пытается определить подходящую
"строку инициализации" -- команды, которые даются модему, известны как
Hayes Commands. Они также используются для аналоговых модемов, но с
некоторыми расширениями. Эта страница Википедии является хорошим
введением, и также описывает расширения для 3G/GSM:
http://en.wikipedia.org/wiki/Hayes_command_set
Может быть так, что PupDial не получит строку иницилизации
именно для вашего модема. В этом случае, если вы найдёте альтернативную
строку, которая работает, дайте мне знать.
Вот различная информация, которую прислали мне пользователи, или которую я нашёл:
Huawei E1550 3G USB модем
|
Участники форума Puppy 'zygo' и 'pakt' сообщили, что строка по умолчанию не работает (1 2), но эта работает:
AT &FE0 V1 X1 &D2 &C1 S0=0 Обновление:
Кажется, проблема в переподключении модема. Просто подключите его, и
строка, созданная PupDial по-умолчанию должна работать. Также было
обнаружено, что лучше подключать модем после загрузки.
|
Huawei E160-E 3G USB модем
|
Этот модем интересен тем,
что ему не нужен modeswitch. Он одновременно находится в режимах модема и
диска. Таким образом, когда вы его подключите на рабочем столе появится
значок диска, но он одновременно работает как модем (на порте
/dev/ttyUSB0).
Я бы хотел получить информацию о других модемах, которые работают таким
образом, тогда я смогу сделать запись в
/etc/udev/rules.d/52-usb_modem_puppy.rules, чтобы выскакивало сообщение
об обнаружении при подключении модема.
|
Дополнительные подсказки/советы
- Вы можете получить лучшие/твёрдые результаты если подключите модем после загрузки.
В теории, если модем вставлен при запуске от также должен работать, но
были сообщения о непоследовательном поведении в этой ситуации.
- Некоторые 3G-модемы не нужно переключать в другой режим.
Возможно, они они были переключены один раз и затем остаются постоянно
переключенными. Вы можете получить ситуацию, когда значок оптического
диска появляется на рабочем столе при подключении модема, но он всё
равно работает как модем -- это означает, что он одновременно в обоих
режимах.
- Сначала настройте в Windows. Мне не нравится
рекомендовать это, но если у вас есть доступ к системе Windows,
подключите ваш новый модем и подключитесь к сети в Windows. Это позволит
избежать некоторых неприятностей установки. После этого вы сможете
использовать этот модем в Linux. Я бы хотел получить сообщения об опыте
без использования Windows вообще, особенно успешные истории!
|
Техническая информация
Некоторые заметки для тех, кто хочет понять как Puppy работает "под капотом". Пользователям не обязательно знать об этом.
С точки зрения определения модемов в Puppy есть два типа модемов:
внутренний (фиксированный) и внешний (подключаемый или съёмный).
Внутренние модемы определяются при загрузке Puppy, съёмные могут быть
определены при загрузке, но также и если модем был подключен после
загрузки.
При загрузке, скрипт /etc/rc.d/rc.sysinit вызывает загрузку правильных драйверов
(модулей) для определённого оборудования. Если вы посмотрите в rc.sysinit, вы увидите важную строку кода:
echo add > ${ONEPATH}/uevent #generates an 'add' uevent. Это
говорит ядру сгенерировать так называемый 'uevent' для определённого
элемента оборудования. Программа-демон 'udevd' читает эти uevents и в
соответствии с правилами в /etc/udev/rules.d и /lib/udev/rules.d,
загружает/устанавливает подходящий драйвер, микропрограмму (и т.д.).
Самый важный файл правил udev /etc/udev/rules.d/50-udev-puppy-basic.rules, который содержит эти две строки:
# kernel firmware loader SUBSYSTEM=="firmware", ACTION=="add", RUN+="/sbin/pup_event_backend_firmware" # Module autoloading ACTION=="add", SUBSYSTEM=="?*", ENV{MODALIAS}=="?*", RUN+="/sbin/pup_event_backend_modprobe"
Два скрипта 'pup_event_backend_firmware' и
'pup_event_backend_modprobe' заботятся о загрузке драйверов и
микропрограмм. Микрограммы это файлы с данными, которые нужны некоторым
драйверам и они хранятся в /lib/firmware.
Определение оборудования и загрузка модулей
Puppy разработаны специально для Puppy и отличаются от других
дистрибутивов Linux. Микропрограмма, также нужная драйверу (плюс любые
другие файлы данных или приложения), может изначально не быть в
/lib/firmware, но храниться в архиве 'firmware tarball' в
/lib/modules/all-firmware -- pup_event_backend_modprobe заботится о
распаковке соответствующих архивов микропрограмм.
Важно отметить, что беспроводные модемы часто являются гибридными или
двойными устройствами. Мои 3G USB модемы содержат два устройства -- они
могут себя вести как устройство хранения и как модем. В большинстве
случаев при подключении они находятся в режиме хранения и не будут
работать, как модем. Их нужно переключить в режим модема и у нас для
этого есть программа 'usb-modeswitch'...
usb-modeswitch
Существуют специальные правила udev которые вызовут приложение usb-modeswitch, /lib/udev/rules.d/40-usb_modeswitch.rules и
/etc/udev/rules.d/41-usb_modeswitch-puppy.rules.
Когда вы подключаете USB модем, usb-modeswitch должен быть вызван, и модем будет переключен в режим модема.
Последовательность следующая: правило udev для конкретного USB устройства запускает
/lib/udev/usb_modeswitch, который в свою очередь запускает
/usr/sbin/usb_modeswitch_dispatcher и /usr/sbin/usb_modeswitch_status.
Первый выполнит фактическое переключение в режим модема и если
потребуется, загрузит драйвер для этого модема. Второй написан
специально для Puppy и выводит на экран сообщения о статусе.
В некоторых случаях usb-modeswitch не срабатывает, например, когда модем
уже вставлен при загрузке. В этом случае при запуске PupDial, он также
запускает /usr/sbin/pupdial_init_hotpluggable, который определит
правильный подключённый модем и перезапустит uevents ядра при
необходимости (что вызовет usb-modeswitch).
|