Настройка 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_mppc/ppp-2.4.4-mppe-mppc-1.1.patch.gz 3) rp-pppoe-3.8.tar.gz На момент написания статьи последней была версия 3.8 Сливаем отсюда: http://www.roaringpenguin.com/penguin/openSourceProducts/rpPppoe 4) br2684ctl Если в вашей системе нет этой программы, тогда идем по ссылке и выбираем то что нужно Больше никаких исходников и пакетов не потребуется. Также потребуются параметры, которые вам должен выдать ваш провайдер(логин,пароль,адреса DNS-серверов,VPI,VCI) Настройка ядра (linux-2.6.18.tar.bz2) Распаковываем архив в /usr/src: Code: tar jxf linux-2.6.18.tar.bz2 Запускаем конфигуратор ядра: Code: cd linux-2.6.18/ make menuconfig Далее ставим все как описано ниже: Code: 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-модемов завершена. Теперь пересоберем ядро: Code: make clean # очищаем директорию с сорцами ядра от временных файлов, # оставшихся после прошлой сборки make bzImage # собираем ядро make modules # собираем модули make modules_install # устанавливаем модули Переносим в /boot bzImage и System.map, и если нужно, то обновляем конфиг загрузчика. За подробностями по сборке ядра обращайтесь в Kernel-HOWTO. Все, с ядром, я думаю разобрались. Теперь добавим в конец /etc/modules следующие строки: Code: cxacru br2684 В этом файле задаются модули, которые ядро загрузит при загрузке системы. Установка ppp (ppp-2.4.4.tar.gz) Как и полагается, разархивируем его в /usr/src: Code: tar zxf ppp-2.4.4.tar.gz cd ppp-2.4.4/ Здесь я вернусь к тому патчу для поддержки MPPC(опять же повторюсь, что его не обязательно ставить),если он вам нужен, установить его можно так: Code: zcat -f /путь/к/патчу/ppp-2.4.4-mppe-mppc-1.1.patch.gz |patch -p1 Далее выполняем: Code: ./configure --prefix=/usr/local/ppp make && make install Установка rp-pppoe-3.8 (rp-pppoe-3.8.tar.gz) Разархивируем: Code: tar zxf rp-pppoe-3.8.tar.gz cd rp-pppoe-3.8/ Конфигурирование и сборка: Code: ./go --prefix=/usr/local/ppp --enable-plugin=/usr/src/ppp-2.4.4 После запуска go, он(go) установит все сам, и сразу же запустит pppoe-setup для настройки pppoe-соединения. С этим уже сами разберетесь, там только на вопросы отвечать и все. Единственное, что хотел бы отметить, когда pppoe-setup задаст вопрос: Code: 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=, если она закомментирована, раскомментируйте ее, и вписываем туда следующее: Code: LINUX_PLUGIN=/usr/local/ppp/lib/pppd/2.4.4/rp-pppoe.so Все, в этом файле больше ничего менять не нужно Подключение Перед подключением необходимо создать и сконфигурировать сетевой интерфейс. Для этой цели и существует программа br2684ctl. Тут вам и понадобятся значения VPI и VCI. Допустим, что провайдер выдал вам такие значения – VPI=0,VCI=33, тогда вводим от рута следующую команду и в ответ видим следующее: Code: 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 Вот и все, настройка окончена, и теперь можно ввести финальную команду: Code: pppoe-start После ввода этой команды, будут появлятся точки, и когда соединится то все будет выглядеть так: Code: root@LServ(22:43:42)/etc # pppoe-start ........... Connected! Закрыть подключение: Code: root@LServ(22:46:00)/etc # pppoe-stop Killing pppd (10804) Killing pppoe-connect (10787) Посмотреть статус соединения: Code: 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: Code: 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 вписываем следующие строки: Code: # 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: Code: 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
Cпасибо HaOS, у миня тоже ADSL USB Conexant, система Debian GNU если по твоему совету всё получится и заработает выложу на форуме чо и как...
как начет модели sprinter@ADSL USB+ У меня эта модель sprinter@ADSL USB+,подойдут ли твои настройки для нее?Я также плохо понимаю те объяснения ,где не говорится "нажми то-получишь это",не хватает знаний и опыта в Линуксе.Ты бы мог помочь разобраться с этим ?
Бля не поверите... Но сеня весь день щанимлся сексом с настройкой интернета в ебунте =\\\ У мя Avangard DSL... D-link DSL-200 Gen ll ... Омг... Воть недавно вышел в винду чтобы скачать долбаный пакет rp-pppoe... Наткнулси на это =) Спасибо =)))))
сцуко pppoe-setup не пишет pppoe.conf =\\\\ Дай файл настройки... (Содержание pppoe.conf) Гребаный gcc не компилит =\ Гребаная ебунта! Гребаный интернет! ХЕЛП МИ! Айм нуб! Айм факин нуб!
а ты от рута запускаешь? Нужно от рута. /etc/ppp/pppoe.conf: Code: #*********************************************************************** # # 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
Не парь мозги, тут ман. по настройке D-Link http://www.demon.ru/d-linkdsl-200andlinux У меня такой-же модем только я ставил на Ubuntu, Гномик рулит! А вообще, по мне, то как гостевую линуху удобней ставить !