Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Настройка USB ADSL модема на чипе Conexant AccessRunner в ОС Linux (https://forum.antichat.xyz/showthread.php?t=31757)

L0rd_Ha0S 21.01.2007 03:25

Настройка USB ADSL модема на чипе Conexant AccessRunner в ОС Linux
 
Настройка USB ADSL модема на чипе Conexant AccessRunner в ОС Linux

Intro.

В данной статье будет описана настройка USB ADSL модема в ОС Linux на чипе Conexant AccessRunner, а также настройка PPPoE соединения с провайдером. Все что здесь будет описано проверялось на модеме Acorp ADSL@Sprinter USB за 28$, которым я пользуюсь сам.
Эта статья написана на основании информации с форумов, найденых заметок + немного моего опыта.

Начнем.

ЗаTARиваемся...

Хотя на сайте Acorp(http://acorp.ru) в мане настройке модема под Линуксом требуется установить целую кучу пакетов, на практике нам понадобятся только 4:

1) linux-2.6.x.tar.bz2 - исходники ядра – взять их можно тут
Именно из ветки 2.6, потому что, насколько я знаю, в предыдущих ветках драйвер Conexant AccessRunner не был включен в ядро, и его нужно скачивать отдельно. (Если я не прав – поправьте меня). В моем случае версия ядра была 2.6.18.
Но на всякий случай вот ссылка на проект AccessRunner:
http://accessrunner.sourceforge.net/
Если у вас уже есть «ядерные сорцы», тогда используйте их.

2) ppp-2.4.x.tar.gz
Слить архив можно тут - ftp://ftp.samba.org/pub/ppp/
Также у меня на ppp установлен патч для поддержки MPPC(поддержка сжатия для Microsoft PPTP VPN), но устанавливать его необязательно(это так – отступление от темы :)) Если он таки нужен, то для ppp-2.4.4 его можно слить отсюда
http://dimez.findall.ru/docs/mppe_mp...c-1.1.patch.gz

3) rp-pppoe-3.8.tar.gz
На момент написания статьи последней была версия 3.8
Сливаем отсюда:
http://www.roaringpenguin.com/pengui...oducts/rpPppoe

4) br2684ctl
Если в вашей системе нет этой программы, тогда идем по
ссылке
и выбираем то что нужно :)

Больше никаких исходников и пакетов не потребуется.
Также потребуются параметры, которые вам должен выдать ваш провайдер(логин,пароль,адр са DNS-серверов,VPI,VCI)

Настройка ядра (linux-2.6.18.tar.bz2)

Распаковываем архив в /usr/src:
Код:

tar jxf linux-2.6.18.tar.bz2
Запускаем конфигуратор ядра:
Код:

cd linux-2.6.18/
make menuconfig

Далее ставим все как описано ниже:

Код:

Networking  --->
        Networking options  --->
                ...
                <M> Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)        ## обязательно(M or y)
                <M>    Classical IP over ATM (EXPERIMENTAL)                ## для PPPoE это необязательно
                                                                        # этот вид сейчас редко
                                                                        # используется провайдерами
                ...
                <M>            RFC1483/2684 Bridged protocols                        ## обязательно (можно
                                                                        # ставить модулем(желательно),
                                                                        # а можете
                                                                        # включить в ядро, т.е.
                                                                        # соответственно M or y)

Device Drivers  --->
        Network device support  --->
                ...
                <M> PPP (point-to-point protocol) support                #включаем поддержку PPP
                ...
                <M>  PPP over Ethernet (EXPERIMENTAL)                        #включаем поддержку PPPoE
                <M>  PPP over ATM                                        #включаем поддержку PPPoA
                                                                        # (для PPPoE необязательна, но у меня
                                                                        # установлена, на всякий пожарный :))

        USB support  --->
                USB DSL modem support  --->
                        <M> USB DSL modem support                        # только модулем, иначе просто не
                                                                        # получится :)
                        <M>  Conexant AccessRunner USB support        # собственно вот и поддержка модемов
                                                                          # на чипах AccessRunner

Вот и все, настройка ядра для поддержки CxAcRu-модемов завершена.
Теперь пересоберем ядро:
Код:

make clean                # очищаем директорию с сорцами ядра от временных файлов,
                        # оставшихся после прошлой сборки               
make bzImage                # собираем ядро
make modules                # собираем модули
make modules_install        # устанавливаем модули

Переносим в /boot bzImage и System.map, и если нужно, то обновляем конфиг загрузчика. За подробностями по сборке ядра обращайтесь в Kernel-HOWTO.
Все, с ядром, я думаю разобрались. :)

Теперь добавим в конец /etc/modules следующие строки:
Код:

cxacru
br2684

В этом файле задаются модули, которые ядро загрузит при загрузке системы.

Установка ppp (ppp-2.4.4.tar.gz)

Как и полагается, разархивируем его в /usr/src:
Код:

tar zxf ppp-2.4.4.tar.gz
cd ppp-2.4.4/

Здесь я вернусь к тому патчу для поддержки MPPC(опять же повторюсь, что его не обязательно ставить),если он вам нужен, установить его можно так:
Код:

zcat -f /путь/к/патчу/ppp-2.4.4-mppe-mppc-1.1.patch.gz |patch -p1
Далее выполняем:
Код:

./configure --prefix=/usr/local/ppp
make && make install

Установка rp-pppoe-3.8 (rp-pppoe-3.8.tar.gz)

Разархивируем:
Код:

tar zxf rp-pppoe-3.8.tar.gz
cd rp-pppoe-3.8/

Конфигурирование и сборка:
Код:

./go --prefix=/usr/local/ppp --enable-plugin=/usr/src/ppp-2.4.4
После запуска go, он(go) установит все сам, и сразу же запустит pppoe-setup для настройки pppoe-соединения. С этим уже сами разберетесь, там только на вопросы отвечать и все. :)
Единственное, что хотел бы отметить, когда pppoe-setup задаст вопрос:
Код:

Enter the Ethernet interface connected to the DSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0):

То нужно ввести интерфейс nas0. Его создание будет описано ниже.

Небольшая настройка

Теперь немного поковыряемся в конфигах
Открываем файл /etc/ppp/pppoe.conf
Ищем в нем строку LINUX_PLUGIN=, если она закомментирована, раскомментируйте ее, и вписываем туда следующее:
Код:

LINUX_PLUGIN=/usr/local/ppp/lib/pppd/2.4.4/rp-pppoe.so
Все, в этом файле больше ничего менять не нужно

Подключение

Перед подключением необходимо создать и сконфигурировать сетевой интерфейс. Для этой цели и существует программа br2684ctl. Тут вам и понадобятся значения VPI и VCI. Допустим, что провайдер выдал вам такие значения – VPI=0,VCI=33, тогда вводим от рута следующую команду и в ответ видим следующее:
Код:

root@LServ(22:23:55)/etc # br2684ctl -b -c 0 -a 0.0.33
RFC1483/2684 bridge: Interface "nas0" created sucessfully
RFC1483/2684 bridge: Communicating over ATM 0.0.33, encapsulation: LLC
RFC1483/2684 bridge: Interface configured

Теперь поясню, что означают эти параметры:
-b Процесс запускается в бэкграунде
-c n Номер интерфейса, где n=число(например, если n=0, то интерфейс будет nas0, если n=1, то nas1)
-a [itf].vpi.vci
[itf] необязательный параметр,обычно равен 0, можно вообще не указывать
vpi значение VPI
vci значение VCI
Есть еще два необязательных параметра
-e 0|1 Тип инкапсуляции 0=LLC,1=VC mux. Чаще всего провайдерами используется именно LLC, поэтому можно не указывать. Если не указан явно, то используется LLC(т.е. 0)
-s sndbuf Размер буфера отправки, по умолчанию 8192. Нам этот параметр вовсе не нужен.
Если нужны подробности, то читаем man br2684ctl.
Эта команда выполняется только один раз(для поднятия интерфейса nas0).

FINISH

Вот и все, настройка окончена, и теперь можно ввести финальную команду:
Код:

pppoe-start
После ввода этой команды, будут появлятся точки, и когда соединится то все будет выглядеть так:
Код:

root@LServ(22:43:42)/etc # pppoe-start
........... Connected!

Закрыть подключение:
Код:

root@LServ(22:46:00)/etc # pppoe-stop
Killing pppd (10804)
Killing pppoe-connect (10787)

Посмотреть статус соединения:
Код:

root@LServ(22:56:05)/etc # pppoe-status
pppoe-status: Link is up and running on interface ppp0
ppp0      Link encap:Point-to-Point Protocol
          inet addr:1.1.1.1  P-t-P:1.1.1.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:1638 (1.5 KiB)  TX bytes:1194 (1.1 KiB)

Какие могут быть проблемы

Возможен и другой вариант после выполнения pppoe-start:
Код:

root@LServ(22:43:42)/etc # pppoe-start
........... TIMED OUT

Это значит, что соединение не удалось установить. У меня такое бывает довольно часто, после каждого такого сообщения советую выполнить ifconfig -a, и посмотреть не появился ли интерфейс ppp0, часто бывает так, что выдается TIMED OUT, но интерфейс создается, то есть подключение есть , но pppoe-start думает, что его нет, в этом случае им можно пользоваться, но чтобы его закрыть, нужно просто прибить процесс pppd, и все. Если же интерфейс не появился, то тогда снова выполнить pppoe-start.

И еще. Такую же надпись (TIMED OUT) можно увидеть еще в двух случаях:
1) Когда pppd пытается авторизоваться с неверными логином/паролем, и сервер, естественно, шлет его нах.
2) Когда строка LINUX_PLUGIN в файле /etc/ppp/pppoe.conf либо не задана, либо закоментирована, либо неверно задана(например, неверный путь, или указывает на плагин от другой версии pppd)
Как определить в чем именно проблема? Во время ковыряний со своим модемом, я определил, что если pppd не может загрузить свой плагин(случай 2, т.е. не может загрузить rp-pppoe.so), то лампочка, показывающая, что идет передача данных(у меня она подписана как Rx на модеме) НЕ ГОРИТ/НЕ МОРГАЕТ вообще.(имеется в виду во время попытки установки соединения pppoe-start, т.е. пока появляются точки, до момента появления TIMED OUT). Если же эта лампочка периодически моргает(во время работы pppoe-start), тогда плагин загружен, и проблема либо в перегруженном сервере, либо в правильности передаваемых логина/пароля.

Упрощаем себе жизнь

Для того чтобы каждый раз не логиниться под рутом, чтобы установить соединение с инетом, можно(и даже нужно – поговорку линуксоида - «Не тусуйся под рутом» - никто не отменял :)) проводить все действия с помощью sudo. Для этого в файл /etc/sudoers вписываем следующие строки:
Код:

# user – имя твоей учетной записи
Host_Alias      HOME = 127.0.0.1, localhost
Cmnd_Alias      ADSL = /usr/sbin/pppoe-start, /usr/sbin/pppoe-stop, /usr/sbin/br2684ctl
user            HOME = NOPASSWD: ADSL

Этим самым мы разрешаем пользователю с логином user запускать на локалхосте pppoe-start,pppoe-stop,br2684ctl от рута без запроса пароля.
За подробностями по формату /etc/sudoers -> man sudoers
Теперь добавим алиасы в свой .bashrc:
Код:

alias pppoe-start='sudo /usr/sbin/pppoe-start'
alias pppoe-stop='sudo /usr/sbin/pppoe-stop'
alias br2684ctl='sudo /usr/sbin/br2684ctl'

Теперь при выполнении пользователем user команды pppoe-start, она будет выполнена от рута.

Но если тебе совсем лень выполнять целых две команды(br2684ctl -b -c 0 -a 0.vpi.vci;pppoe-start), то можешь записать первую команду в какой-нибудь из стартовых скриптов, и выполнять только pppoe-start/pppoe-stop.

Все, приехали.

Вот собственно и все что я хотел бы сказать по поводу настройки USB ADSL модемов на основе микросхем Conexant AccessRunner. Если у кого-то есть какие-либо дополнения, замечания - выкладывайте их здесь.

(с) L0rd_Ha0S

Mega_Zidar 01.04.2007 05:20

Cпасибо HaOS, у миня тоже ADSL USB Conexant, система Debian GNU
если по твоему совету всё получится и заработает выложу на форуме чо и как...

Фдучун 10.11.2007 11:14

как начет модели sprinter@ADSL USB+
 
У меня эта модель sprinter@ADSL USB+,подойдут ли твои настройки для нее?Я также плохо понимаю те объяснения ,где не говорится "нажми то-получишь это",не хватает знаний и опыта в Линуксе.Ты бы мог помочь разобраться с этим ? :confused:

L0rd_Ha0S 11.11.2007 01:39

Мог бы. Отписался в ПМ.

bul.666 11.11.2007 02:45

Бля не поверите... Но сеня весь день щанимлся сексом с настройкой интернета в ебунте =\\\ У мя Avangard DSL... D-link DSL-200 Gen ll ... Омг... Воть недавно вышел в винду чтобы скачать долбаный пакет rp-pppoe... Наткнулси на это =) Спасибо =)))))

L0rd_Ha0S 11.11.2007 03:42

Значит, не зря я старался =)))))

bul.666 11.11.2007 04:16

сцуко pppoe-setup не пишет pppoe.conf =\\\\
Дай файл настройки... (Содержание pppoe.conf)

Гребаный gcc не компилит =\ Гребаная ебунта! Гребаный интернет!

ХЕЛП МИ! Айм нуб! Айм факин нуб!

L0rd_Ha0S 11.11.2007 18:20

Цитата:

сцуко pppoe-setup не пишет pppoe.conf =\\\\
а ты от рута запускаешь? Нужно от рута.
/etc/ppp/pppoe.conf:
Код:

#***********************************************************************
#
# pppoe.conf
#
# Configuration file for rp-pppoe.  Edit as appropriate and install in
# /etc/ppp/pppoe.conf
#
# NOTE: This file is used by the pppoe-start, pppoe-stop, pppoe-connect and
#      pppoe-status shell scripts.  It is *not* used in any way by the
#      "pppoe" executable.
#
# Copyright (C) 2000 Roaring Penguin Software Inc.
#
# This file may be distributed under the terms of the GNU General
# Public License.
#
# LIC: GPL
# $Id: pppoe.conf,v 1.11 2005/08/09 02:49:12 dfs Exp $
#***********************************************************************

# When you configure a variable, DO NOT leave spaces around the "=" sign.

# Ethernet card connected to DSL modem
ETH='nas0'

# PPPoE user name.  You may have to supply "@provider.com"  Sympatico
# users in Canada do need to include "@sympatico.ca"
# Sympatico uses PAP authentication.  Make sure /etc/ppp/pap-secrets
# contains the right username/password combination.
# For Magma, use xxyyzz@magma.ca
USER='YourLogin'

# Bring link up on demand?  Default is to leave link up all the time.
# If you want the link to come up on demand, set DEMAND to a number indicating
# the idle time after which the link is brought down.
DEMAND=no
#DEMAND=300

# DNS type: SERVER=obtain from server; SPECIFY=use DNS1 and DNS2;
# NOCHANGE=do not adjust.
DNSTYPE=SPECIFY

# Obtain DNS server addresses from the peer (recent versions of pppd only)
# In old config files, this used to be called USEPEERDNS.  Changed to
# PEERDNS for better Red Hat compatibility
PEERDNS=no

DNS1=62.212.64.122
DNS2=62.212.65.123


# Make the PPPoE connection your default route.  Set to
# DEFAULTROUTE=no if you don't want this.
DEFAULTROUTE=yes

### ONLY TOUCH THE FOLLOWING SETTINGS IF YOU'RE AN EXPERT

# How long pppoe-start waits for a new PPP interface to appear before
# concluding something went wrong.  If you use 0, then pppoe-start
# exits immediately with a successful status and does not wait for the
# link to come up.  Time is in seconds.
#
# WARNING WARNING WARNING:
#
# If you are using rp-pppoe on a physically-inaccessible host, set
# CONNECT_TIMEOUT to 0.  This makes SURE that the machine keeps trying
# to connect forever after pppoe-start is called.  Otherwise, it will
# give out after CONNECT_TIMEOUT seconds and will not attempt to
# connect again, making it impossible to reach.
CONNECT_TIMEOUT=30

# How often in seconds pppoe-start polls to check if link is up
CONNECT_POLL=2

# Specific desired AC Name
ACNAME=

# Specific desired service name
SERVICENAME=

# Character to echo at each poll.  Use PING="" if you don't want
# anything echoed
PING="."

# File where the pppoe-connect script writes its process-ID.
# Three files are actually used:
#  $PIDFILE      contains PID of pppoe-connect script
#  $PIDFILE.pppoe contains PID of pppoe process
#  $PIDFILE.pppd  contains PID of pppd process
CF_BASE=`basename $CONFIG`
PIDFILE="/var/run/$CF_BASE-pppoe.pid"

# Do you want to use synchronous PPP?  "yes" or "no".  "yes" is much
# easier on CPU usage, but may not work for you.  It is safer to use
# "no", but you may want to experiment with "yes".  "yes" is generally
# safe on Linux machines with the n_hdlc line discipline; unsafe on others.
SYNCHRONOUS=no

# Do you want to clamp the MSS?  Here's how to decide:
# - If you have only a SINGLE computer connected to the DSL modem, choose
#  "no".
# - If you have a computer acting as a gateway for a LAN, choose "1412".
#  The setting of 1412 is safe for either setup, but uses slightly more
#  CPU power.
CLAMPMSS=1412
#CLAMPMSS=no

# LCP echo interval and failure count.
LCP_INTERVAL=20
LCP_FAILURE=3

# PPPOE_TIMEOUT should be about 4*LCP_INTERVAL
#PPPOE_TIMEOUT=80
PPPOE_TIMEOUT=100

# Firewalling: One of NONE, STANDALONE or MASQUERADE
FIREWALL=NONE

# Linux kernel-mode plugin for pppd.  If you want to try the kernel-mode
# plugin, use LINUX_PLUGIN=/etc/ppp/plugins/rp-pppoe.so
LINUX_PLUGIN=/usr/local/ppp/lib/pppd/2.4.4/rp-pppoe.so

# Any extra arguments to pass to pppoe.  Normally, use a blank string
# like this:
PPPOE_EXTRA=""

# Rumour has it that "Citizen's Communications" with a 3Com
# HomeConnect DSL Modem DualLink requires these extra options:
# PPPOE_EXTRA="-f 3c12:3c13 -S ISP"

# Any extra arguments to pass to pppd.  Normally, use a blank string
# like this:
PPPD_EXTRA=""

########## DON'T CHANGE BELOW UNLESS YOU KNOW WHAT YOU ARE DOING
# If you wish to COMPLETELY overrride the pppd invocation:
# Example:
# OVERRIDE_PPPD_COMMAND="pppd call adsl"

# If you want pppoe-connect to exit when connection drops:
# RETRY_ON_FAILURE=no


fucker"ok 11.11.2007 18:58

Лучше сразу выбирать ethernet модем. Воткнул в хаб и нет проблем :)

bul.666 11.11.2007 19:05

Цитата:

а ты от рута запускаешь? Нужно от рута.
Ясен хрен от рута... gcc пишет, что "Can't create executable"....


Время: 12:18