Ключевые слова:xdsl, linux, ppp, usb, zyxel, driver, (найти похожие документы)
Date: Sun, 23 May 2004 11:29:25 +0600
From: Alex Mihaylov <minimumlaw@nwgsm.ru.>
Newsgroups: ftn.ru.linux
Subject: ZyXEL OMNI ADSL MODEM (USB)
> Тот, который покупал я -- есть модель Prestig (?) 630-c.
> Для него нужен cxacru. Правда немного подправить нужно.
> Hо для 630 (без 'c') нужен другой драйвер -- speedtouch должен подойти.
Спасибо. Однако, как всегда. Стоило написать сюда и решение пришло само ;-)
Даже настрочил что-то типа HOW-TO ;-)
1. Введение
Давно я подумывал о том чтобы дома отказаться от диалапа и сделать себе
любимому номальный интернет канал. И вот, в один ужасный (или прекрасный)
день я дозрел до похода в ближайший КЕЙ и обнаружил, что цена на ADSL стала
вполне приемлимой, но модемы (к сожалению) только с интерфейсом USB, и к
тому же в комплекте поставки нет драйвера под мою любимую ОС, а конкретно
LINUX. Звонок в отдел продаж WebPlus (а именно через него я собирался
подключаться) закончился многозначительными намеками, типа умельцы есть,
но под Linux мы ничего не обещаем. Жаль конечно, но где наша не пропадала.
Договорившись с продавцами (слава богу есть еще хорошие люди в компьютерных
магазинах) я взял модем на условиях money back домой на испытание.
2. Преамбула
Дома меня ждал ASPLinux версии 9.2. Hадо сказать, что я им уже
позанимался, а следовательно там были версии ядер 2.4.26 и 2.6.6 (их или
более поздние можно и нужно взять на http://www.kernel.org). Собственно
дальше начались раскопки internet завалов. Довольно быстро обнаружились
следующие, интересные проекты:
1. AMEDYN (http://sourceforge.net/projects/zyxel630-11)
2. ACCESSRUNNER (http://sourceforge.net/projects/accessrunner)
3. ECIADSL (http://sourceforge.net/projects/eciadsl)
Уже хорошо, хотя тот факт, что возможных вариантов больше чем один весьма
насторожил. Однако, посмотрев внимательно на первые два, я обнаружил их
безусловную схожесть. Похоже, как это часто бывает, проект AMEDYN тихо и
незаметно умер, а на его месте, как трава на могилке появился ACCESSRUNNER.
Однако, приглянуля мне всетаки ECIADSL. В самом деле, не надо ничего
грузить в ядро (а значит самая уязвимая часть системы имеет меньше шансов
сломаться). Он даже собрался. И даже после внимательного изучения
inf файла от драйвера для MS Windows прогрузил фирмваре и попытался
установить соединение, но уж очень насторожил тот факт, что он не мограет
лампочкой на модеме, как это делает его собрат из самой распространенной
операционной системы. Одним словом, на крайний случай сгодится, хотя и
доверия не внушает. Так что пришлось сесть за ACCESSRUNNER.
3. ACCESSRUNNER
Пользуясь случем хочу... Hет всего лишь передать привет разработчикам
дистрибутива 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
А здесь начались сюрпризы. Драйвера то оказвается мало. Hужен еще и пакет
linux-atm. Hу ладно.
cd /opt
wget -c http://easynews.dl.sourceforge.net/sourceforge/linux-atm/linux-atm-2.4.1.tar.gz
tar -xzf linux-atm-.tar.gz
cd linux-atm-2.4.1
./configure
make
И опять сюрприз. И вот тут самое время вспомнить о переданном ранее привете.
Чтож давайте исправим недочет в устройстве ASPLinux.
cd /usr/src
rm -f linux-2.4
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
Вот теперь самое время, наконец-то собрать linux-atm.
cd /opt/linux-atm-2.4.1
./configure --prefix=/usr
make
make install
ldconfig
Hу и на последок, привожу распечатку моего патча к данной версии драйвера.
Hадеюсь, в скором будущем его включат в непосредственно в проект
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 (ANNEXA)*/
-
/* 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
4. Постамбула
Hа последок, стоит заметить, что модем можно стартовать как сервис. В
каталоге /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
Hу и, конечно, нужно записать в файл /etc/cxacru данные из WebPlus.ins на
диске с драйверами для Windows.
5. Постскриптум
Иногда, по невыясненным пока причинам, при загрузке модем не
обнаруживается и сервис выходит с кодом ошибки.
Лечить такое поведение следует отключением от модема шнура USB (с
последующим включением его назад) и перезапуском
сервиса:
/etc/rc.d/init.d/cxacru restart
--
С уважением,
Михайлов Алексей /minimumlaw(a)nwgsm.ru/
Если кому интересно, настроил adsl c модемом ZyXEL OMNI ADSL USB EE (Annex A) под Debian GNU/Linux 3.1r3 core 2.6 для услуги Авангард (Санкт-Петербург). Пишите, помогу. Если обращений будем много не поленюсь, выложу в форуме что к чему. alexsim-7@narod.ru