Ключевые слова:xdsl, modem, linux, usb, (найти похожие документы)
From: Алексей Михайлов <MinimumLaw@Rambler.Ru.>
Date: Mon, 18 Nov 2004 14:31:37 +0000 (UTC)
Subject: Настройка ADSL модема ZyXEL OMNI ADSL EE с USB интерфейсом под Linux
Оригинал: http://user.rol.ru/~minlaw/omni-adsl-usb-ee-howto.html
Авторские права
---------------
Держателем авторского права на этот документ является его автор,
Михайлов Алексей Анатольевич, он же MinimumLaw. Данный документ можно
передавать на электронных носителях и по сетям связи в любых форматах.
Использование данного документа в печатных изданиях разрешена только
по согласованию с автором или любым из соавторов. Разрешено внесение
исправлений в электронные версии данного документа, при выполнении
следующих условий:
Данная секция обязательно должна присутствовать в итоговом документе.
При внесении незначительных исправлений, не имеющих отношения к
тематике данного произведения необходимо обеспечить доступ к исходному
материалу о чем в явной форме указать в тексте откорректированного
документа, или согласовать корректировку с автором.
О всех изменениях, касающихся непосредственно тематики произведения
необходимо уведомить держателя авторских прав, и, если они окажутся
существенными, для внесения их в последующие версии данного документа.
Если исправление признается существенным, и будет внесено в
последующую версию документа, то автор исправления получает статус
соавтора.
Текущая версия документа: 1.0, соавторов нет.
Введение
Давно я подумывал о том чтобы дома отказаться от диалапа и сделать
себе любимому нормальный интернет канал. И вот, в один ужасный (или
прекрасный) день я дозрел до похода в ближайший КЕЙ и обнаружил, что
цена на ADSL стала вполне приемлемой, но модемы (к сожалению) только с
интерфейсом USB, и к тому же в комплекте поставки нет драйвера под мою
любимую ОС, а конкретно LINUX.
Звонок в отдел продаж WebPlus (а именно через него я собирался
подключаться) закончился многозначительными намеками, типа умельцы
есть, но под Linux мы ничего не обещаем. Жаль конечно, но где наша не
пропадала. Договорившись с продавцами (слава богу есть еще хорошие
люди в компьютерных магазинах) я взял модем на условиях money back
домой на испытание.
Преамбула
Дома меня ждал ASPLinux версии 9.2. Надо сказать, что я им уже
позанимался, а следовательно там были версии ядер 2.4.26 и 2.6.6 (их,
или более поздние, можно и нужно взять на http://www.kernel.org).
Собственно дальше начались раскопки internet завалов. Довольно быстро
обнаружились следующие, интересные проекты:
AMEDYN (http://sourceforge.net/projects/zyxel630-11)
ACCESSRUNNER (http://sourceforge.net/projects/accessrunner)
ECIADSL (http://sourceforge.net/projects/eciadsl)
Уже хорошо, хотя тот факт, что возможных вариантов больше чем один
весьма насторожил. Однако, посмотрев внимательно на первые два, я
обнаружил их безусловную схожесть. Похоже, как это часто бывает,
проект AMEDYN тихо и незаметно умер, а на его месте, как трава на
могилке появился ACCESSRUNNER.
Однако, приглянулся мне все таки ECIADSL. В самом деле, не надо ничего
грузить в ядро (а значит самая уязвимая часть системы имеет меньше
шансов сломаться). Он даже собрался. И даже после внимательного
изучения inf файла от драйвера для MS Windows прогрузил фирмваре и
попытался установить соединение, но уж очень насторожил тот факт, что
он не моргает лампочкой на модеме, как это делает его собрат из самой
распространенной операционной системы. Одним словом, на крайний случай
сгодится, хотя и доверия не внушает. Так что пришлось сесть за ACCESSRUNNER.
ACCESSRUNNER
Предварительные требования
Для начала работы в любом случае необходимы исходные тексты ядра. Они
могут быть установлены из дистрибутива (что хуже) или скачаны с
http://www.kernel.org. В последнем случае (так как всё равно
необходима перекомпиляция ядра системы) рекомендую включить поддержку
шины USB как модуль. В противном случае понадобиться вносить изменения
в загрузочные скрипты драйвера. Данная статья написана с
использованием ASPLinux 9.2 в качестве базового дистрибутива, но без
всяких изменений может быть использована и с версиями ASPLinux вниз
вплоть до 7.0. Для других дистрибутивов она вполне применима, с
возможными поправками на символические ссылки в /usr/include. Я не
тестировал данное руководство применительно к ядру серии 2.2, но судя
по всему и здесь проблем быть не должно.
Если вы установили ядро из дистрибутива, то необходимым условием будет
так же установка базовых пакетов разработчика (make, gcc, autotool и т.д.).
Установка драйвера
Пользуясь случаем хочу... Нет всего лишь передать привет разработчикам
дистрибутива ASPLinux. Если бы не их настойчивое желание сделать Linux
похожим на часы партизанские с семью стрелками, я бы управился
быстрее. Итак, приступим. Для начала скачаем сам драйвер, допустим в
каталог /opt, и там его распакуем.
cd /opt
wget -c http://easynews.dl.sourceforge.net/sourceforge/accessrunner/cxacru.tar.bz2
bzcat cxacru.tar.bz2 | tar -xf-
Далее по накатанной дорожке.
cd /opt/cxacru
make
А здесь начались сюрпризы. Драйвера то оказывается мало. Нужен еще и
пакет linux-atm. Ну ладно.
cd /opt
wget -c http://easynews.dl.sourceforge.net/sourceforge/linux-atm/linux-atm-2.4.1.tar.gz
tar -xzf linux-atm-2.4.1.tar.gz
cd linux-atm-2.4.1
./configure
make
И опять сюрприз. И вот тут самое время вспомнить о переданном ранее
привете. Давайте исправим недочет в устройстве ASPLinux.
cd /usr/src
rm -f linux-2.4 linux-2.6 linux # удаляем старые ссылки
ln -s linux-2.6.6 linux-2.6 # если у нас есть ядро 2.6
ln -s linux-2.4.26 linux-2.4 # если у нас есть ядро 2.4
ln -s linux linux-2.6 # или ln -s linux linux-2.4, если работаем с ядром 2.4
cd /usr/include
mv asm asm_distrib # на всякий случай оставим оригинальные версии
mv linux linux_distrib # хотя их назначение для меня загадка
ln -s ./../src/linux/include/asm-i386 asm
ln -s ./../src/linux/include/linux linux
Этими действиями мы установили символические ссылки на включаемые
файлы текущего ядра для сборки программ из исходных текстов. Теперь,
если программа использует заголовочные файлы ядра, она берет их именно
из текущей версии ядра (подразумевается, что исходные тексты
последнего ядра распакованы в каталог /usr/src).
Вот теперь самое время, наконец-то собрать linux-atm.
cd /opt/linux-atm-2.4.1
./configure --prefix=/usr
make
make install
ldconfig
Ну и на последок, привожу распечатку моего патча к данной версии
драйвера. Надеюсь, в скором будущем его включат в непосредственно в
проект ACCESSRUNNER. И еще, так как у меня ядро серии 2.6, я должен
запускать make new. Ради интереса, я собрал модуль для ядра серии 2.4
таким же образом и он заработал. Так что рекомендую поступать именно
так.
cd /opt/cxacru
cat - > cxacru-MinimumLaw.patch
diff -u -r cxacru-Patched/init/cxioctl.c cxacru/init/cxioctl.c
--- cxacru-Patched/init/cxioctl.c 2004-05-18 01:47:26.000000000 +0400
+++ cxacru/init/cxioctl.c 2003-09-07 01:06:12.000000000 +0400
@@ -256,10 +256,6 @@
else if (vid == 0x08e3 && pid == 0x0100)
return 2;
- /* Vendor = ZyXEL, Product = OMNI ADSL USB EE (Annex A) */
- else if (vid == 0x0586 && pid == 0x330a)
- return 3;
-
/* Vendor = Olitec, Product = ADSL modem version 3 */
else if (vid == 0x08e3 && pid == 0x0102)
return 3;
diff -u -r cxacru-Patched/init/cxload.c cxacru/init/cxload.c
--- cxacru-Patched/init/cxload.c 2004-05-18 01:46:13.000000000 +0400
+++ cxacru/init/cxload.c 2003-09-07 01:07:02.000000000 +0400
@@ -1097,10 +1097,6 @@
else if (vid == 0x08e3 && pid == 0x0100) return 2;
- /* Vendor = ZyXEL, Product = OMNI ADSL USB EE (Annex A) */
- else if (vid == 0x0586 && pid == 0x330a)
- return 3;
-
/* Vendor = Olitec, Product = ADSL modem version 3 */
else if (vid == 0x08e3 && pid == 0x0102) return 3;
diff -u -r cxacru-Patched/module2/xdslusb.c cxacru/module2/xdslusb.c
--- cxacru-Patched/module2/xdslusb.c 2004-05-18 01:44:13.000000000 +0400
+++ cxacru/module2/xdslusb.c 2003-09-17 13:50:43.000000000 +0400
@@ -134,10 +134,6 @@
#define AME_VENDORID 0x06b9 /* Vendor = Alcatel Microelectronics */
#define AME_PRODUCTID 0xa5a5 /* Product = DynaMiTe USB Modem */
-/* ZyXELL */
-#define OMNI_VENDORID 0x0586 /* Vendor = Zyxel */
-#define OMNI_PRODUCTID 0x330a /* Product = OMNI ADSL USB EE (ANNEX A)*/
-
/* Conexant AccessRunner USB reference design */
#define CXACRU_VENDORID1 0x0572 /* Vendor = Conexant */
#define CXACRU_PRODUCTID1 0xcafe /* Product = ADSL modem (Euphrates project) */
@@ -239,7 +235,6 @@
#define hex2int(c) ( (c >= "0") && (c <= "9") ? (c - "0") : ((c & 0xf) + 9) )
static struct usb_device_id udsl_usb_ids [] = {
- { USB_DEVICE (OMNI_VENDORID, OMNI_PRODUCTID) },
{ USB_DEVICE (SPEEDTOUCH_VENDORID, SPEEDTOUCH_PRODUCTID) },
{ USB_DEVICE (AME_VENDORID, AME_PRODUCTID) },
{ USB_DEVICE (CXACRU_VENDORID1, CXACRU_PRODUCTID1) },
Нажатие CTRL-D
patch -p1 -R < cxacru-MinimumLaw.patch
make new
Авторы этого проекта, видимо люди неординарные. Они посчитали запуск
make install излишней роскошью, ну да и ладно.
Постамбула
На последок, стоит заметить, что модем можно стартовать как сервис. В
каталоге /opt/cxacru/scripts/service обнаружится готовый к
употреблению скрипт. Допустим так:
cp /opt/cxacru/scripts/service/cxacru /etc/rc.d/init.d/cxacru
/sbin/chkconfig -add cxacru
/sbin/chkconfig --level 01246 cxacru off
/sbin/chkconfig --level 35 cxacru on
Ну и, конечно, нужно записать в файл /etc/cxacru данные из WebPlus.ins
на диске с драйверами для Windows.
Список литературы
ADSL-MINIHOWTO
KERNEL-HOWTO
Networking-Ovwrview-HOWTO
NET-3-HOWTO
Home-Network-mini-HOWTO
Постскриптум
Иногда, по невыясненным пока причинам, при загрузке модем не
обнаруживается и сервис выходит с кодом ошибки. Лечить такое поведение
следует отключением от модема шнура USB (с последующим включением его
назад) и перезапуском сервиса:
/etc/rc.d/init.d/cxacru restart
файлы, содержащиеся в этой статье можно скачать прямо отсюда
cxacru.tar.bz2 (http://user.rol.ru/~minlaw/soft/cxacru.tar.bz2)
linux-atm-2.4.1.tar.gz (http://user.rol.ru/~minlaw/soft/linux-atm-2.4.1.tar.gz)
cxacru-MinimumLaw.patch (http://user.rol.ru/~minlaw/soft/cxacru-MinimumLaw.patch)
А если у Вас нет желания обновлять ядро до последней версии (что я бы
всё-таки рекомендовал сделать), то в этом нет ничего страшного. Просто
создайте необходимые символические ссылки в каталоге /usr/include и
/usr/src (ну и конечно, установите пакет KERNEL-SOURCE). Этих действий
вполне достаточно чтобы оживить данный модем.
Ну, и конечно, оригинал этой статьи (и возможно исправления к ней, с
работающими ссылками на файлы) можно найти в интернете по адресу
http://user.rol.ru/~minlaw/omni-adsl-usb-ee-howto.html. Можно написать
мне по адресу [email protected].
для ядра 2.6.10 пробовал кто это проделать?
у меня модуль xdslusb вызывает ошибку ;(
ранее использовал патч к ядру все работало, но в 2.6.10 там поменяли/перенесли файл speedtouch.c
перерь патч не накладывается.
Я просто не понимаю, как приведенный автором патч может работать.
Во первых непонятно, почему он реверсивный? - Такое чувство, что он писался вручную.
Во вторых, он приципиально не может работать, ибо в файле xdslusb.c (где собственно и содержится код работы с утройством), тип VENDOR и PRODUCT ID указан, но нигде не используется. А там он необходим, где-то в районе функции probe (возвращает тип модема), ибо в эта функция необходимо узнать тип содема. Требуемых тип модема - connexant reference design (2).
К сожалению, патч привести не могу.
Несколько заметок в помощь тем, кто после меня мучаться будет - При компиляции cxacru в основном makeфайле для 2.6 ядра удалите все ссылки на bridged (если он у вас не компилится естественно). В Debian (testing 3.1-Sarge точно) есть все необходиные библиотеки, кроме самого cxacru (т.е. качать нужно только его).
Два дня мучался вопросом... Под 2.4.26 так и не удалось заставить работать, но под 2.6.7 (kernel-image из debian). А так с webplus-spb -- работает.
Подскажите как настроить данный модем . Выбор что то большой при установке драйверов . Создается автоматом ярлык на столе для подключения. Для чего? Если предидущие модемы настраивалось отдельное подключение,где прописывался логин и пароль
Помогите с настройкой этого модема, по инструкции ниполучаеться!!! Что делать, опишите все поэтапно! У меня ноутбук ОС windows vista SP1
modem ADSL-2500 U!!!!! Заранее спасибо!!!!