Лучшая система размещения статей
 Добавить в избранное |  Сделать стартовой 
Поиск По Сайту
Навигация
     Главная
     Форум
     Новости
     Обзор новостей
     Гостевая
     Статьи
     Файлы
     Магазин
     Пользователи
     Контакты
     О Проекте
     Карта Сайта
Вход
Логин:

Пароль:


Запомнить меня
Вам нужно Авторизоваться.
Забыли Пароль?
Регистрация
Атестат
Подписка на новости: Подписаться

Wireless Ethernet D-Link DWL-520+ и Linux

Источник: www.opennet.ru
Добавлено: 2006-03-04 15:04:07

Введение
Не секрет, что самой большой проблемой open source операционных систем является отсутствие поддержки со стороны производителей аппаратуры.

Для многих устройств отсутствуют <<родные>> драйверы. На сайтах многих производителей аппаратуры присутствуют драйверы только для семейства Windows. Возникает вопрос: а знают ли они вообще о чем-нибудь, кроме <<конторской>> Windows? :-)

Точно такая же ситуация возникла и с беспроводной сетевой карточкой DWL-520+ от D-Link (www.d-link.com/) -- на сайте производителя отсутствуют драйверы для Linux. А ведь карточку поднять надо...

Что для этого надо?
Поиск на Google по ключевым словам <<DWL-520+>>, <<linux>> и <<driver>> очень быстро дал ответ на вопрос <<Что надо, чтобы поднять карточку>>. На первой же странице можно обнаружить ссылку на проект acx100.sourceforge.net/, где можно легко найти сам драйвер и море информации на тему беспроводных сетей. Например, легко выяснить, почему в адресе проекта присутствует наименование acx100. Оказывается, это наименование чипсета от Texas Instruments, на котором построена карточка. К слову, стоит отметить, что предшественница DWL-520+, карточка DWL-520, была основана на совершенно ином чипсете -- Prism2. Что нам нужно для полно счастья? Мне было необходимо следующее:
linux-2.4.26.tar.gz -- последнее ядро (для порядка); www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.26.tar.gz
wireless_tools.26.tar.gz -- средства настройки беспроводных сетевых интерфейсов; pcmcia-cs.sourceforge.net/ftp/contrib/wireless_tools.26.tar.gz
dwl520+_drivers_307.zip -- драйверы для Windows. Оттуда нам необходимо firmware для карточки DWL-520+; ftp.dlink.com/Wireless/dwl520+/Driver/dwl520+_drivers_307.zip
[acx100-0.2.0pre7.tar.bz2 -- последняя стабильная версия драйвера для Linux. Можно, конечно, взять и версию 0.2.0pre8, но на момент написания материала она была в разработке и я не стал рисковать. rhlx01.fht-esslingen.de/~andi/acx100/acx100-0.2.0pre7.tar.bz2
Как это сделать?
Начать надо с того, чтобы войти в систему как root. Далее собрать новое ядро. Перед сборкой надо убедиться в том, что в конфигурацию ядра включена поддержка беспроводных сетевых устройств.

Сборка займет много времени, поэтому ее стоит начать в первую очередь. Материалов по сборке ядра много, и я опущу ее описание.

Далее, во время сборки ядра, можно подготовить остальные средства. Начнем, например, со сборки wireless_tools.26.tar.gz. Для этого достаточно сделать следующее: pre> # tar -xzf wireless_tools.26.tar.gz # cd wireless_tools.26 # make && make install Теперь можно заняться драйвером acx100. Распакуем его и драйверы для Windows: pre> # tar -xjf acx100-0.2.0pre7.tar.bz2 # unzip dwl520+_drivers_307.zip Теперь необходимо скопировать файлы firmware из набора драйверов для Windows и скомпилировать драйвер: pre> # cp Drivers/520+/WinXP/*.BIN acx100-0.2.0pre7/firmware # make -C acx100-0.2.0pre7 Теперь подождем, пока завершится сборка ядра... подождем... пойдем покурим, попьем кофе...

После окончания сборки ядра перезагрузим Linux с новым ядром.

Настройка
Теперь стоит проверить работоспособность карточки. Для начала, для простоты, допустим, что у нас есть другая машина под управлением Windows с такой же карточкой, настроенная и готовая к работе.

Предположим, что карточка имеет такую конфигурацию: pre> SSID: HomeLan Wireless Mode: Ad-hoc Channel: 6 TxRate: Auto Preamble: Long Preamble Power Mode: Continuous Access Mode IP: 192.168.85.1 Теперь настроим скрипт запуска драйвера сетевой карточки из пакета acx100-0.2.0pre7. Для этого перейдем в каталог acx100-0.2.0pre7/scripts и отредактируем файл start_net. Установим следующие значения переменных: pre> DEV=wlan0 ESSID=HomeLan RATE=11M CHAN=6 MODE=Ad-hoc ALG=open IP=192.168.85.2 NETMASK=255.255.255.0 GATEWAY=192.168.85.1 Запускаем скрипт start_net и смотрим результат... Если нет сообщений об ошибках, то проверяем связь: pre> # ping 192.168.85.1 Если не идет обмен, надо проверить еще раз настройки и на том ли месте firmware, включена ли в ядре поддержка беспроводных сетей... и попробовать снова.

Так как связь установлена нормально, можно приступать к настройке автоматического запуска сетевого драйвера по старту ОС. Автоматический запуск: взгляд из Slackware Linux 9.1

Лично я подошел к вопросу автоматизации запуска следующим образом:
Скопировал модуль драйвера для DWL-520+ (acx100_pci.o) в каталог /lib/modules/2.4.26/kernel/drivers/net/wireless.

Создал каталог /lib/modules/2.4.26/firmware/acx100_pci и скопировал в него файлы firmware: WLANGEN.BIN, RADIO11.BIN, RADIO0d.BIN, AIRPLUS.BIN.

В каталоге /etc/rc.d создал два файла: rc.dwl_520p и rc.dwl_520p.conf:
a. Содержание файла rc.dwl_520p: pre>#! /bin/sh # #set -x ############################ # READ NETWORK CONFIG FILE # ############################ # Get the configuration information from /etc/rc.d/rc.dwl_520p.conf: . /etc/rc.d/rc.dwl_520p.conf WLAN_DEV_NO="0" KERNEL_VER=`uname -r` MODULES_DIR="/lib/modules/${KERNEL_VER}" MODULE_TYPE="acx100_pci" MODULE_FILE="${MODULES_DIR}/kernel/drivers/net/wireless/${MODULE_TYPE}.o" FIRMWARE_DIR="${MODULES_DIR}/firmware/${MODULE_TYPE}" dwl_520p_up() { DEV="wlan${1}" if test -r "$FIRMWARE_DIR/WLANGEN.BIN" -o -r "$FIRMWARE_DIR/TIACX111.BIN"; then insmod $MODULE_FILE debug=$DEBUG firmware_dir=$FIRMWARE_DIR if test "$?" = "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Module $MODULE_FILE successfully inserted." fi if test -n "$RATE"; then iwconfig $DEV rate $RATE if test "$?" != "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Failed to set rate $RATE!" fi fi fi if test -n "$CHAN"; then iwconfig $DEV channel $CHAN if test "$?" != "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Failed to set channel $CHAN!" fi fi fi if test -n "$TXPOWER"; then iwconfig $DEV txpower $TXPOWER if test "$?" != "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Failed to set Tx power level to $TXPOWER dBm!" fi fi fi iwconfig $DEV essid "$ESSID" if test "$?" != "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Failed to join or set ESSID $ESSID!" fi fi if test -n "$MODE"; then iwconfig $DEV mode $MODE if test "$?" != "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Failed to set mode to $MODE!" fi fi fi if test -n "$KEY" -a "$ALG" != "open"; then iwconfig $DEV key $ALG "$KEY" if test "$?" != "0"; then if test "$DEBUG_ETH_UP" = "yes"; then echo "Failed to set key to $KEY and algorithm $ALG!" fi fi fi if test "${USE_DHCP}" = "yes"; then # use DHCP to bring interface up if test ! "${DHCP_HOSTNAME[$1]}" = ""; then /sbin/dhcpcd -t 10 -h ${DHCP_HOSTNAME} -d $DEV else /sbin/dhcpcd -t 10 -d $DEV fi else # bring up interface using a static IP address if test ! "${IPADDR[$1]}" = ""; then # skip unconfigured interfaces # Determine broadcast address from the IP address and netmask: BROADCAST=`/bin/ipmask ${NETMASK} ${IPADDR} | cut -f 1 -d ` `` # Set up the ethernet card: echo "Configuring $DEV:" echo "/sbin/ifconfig $DEV ${IPADDR} broadcast ${BROADCAST} netask ${NETMASK}" /sbin/ifconfig $DEV ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK} /sbin/ifconfig $DEV mtu 576 else if test "$DEBUG_ETH_UP" = "yes"; then echo "$DEV interface is not configured in /etc/rc.d/rc.dwl-520p.conf!" fi fi fi else if test "$DEBUG_ETH_UP" = "yes"; then echo "Error while inserting module $MODULE_FILE! Failed..." fi fi else if test "$DEBUG_ETH_UP" = "yes"; then echo "Firmware not found or not readable. Failed..." fi fi } dwl_520p_down() { DEV="wlan${1}" if test "${USE_DHCP}" = "yes"; then /sbin/dhcpcd -k -d $DEV sleep 1 else /sbin/ifconfig $DEV down fi rmmod acx100_pci } # Function to bring up the gateway if there is not yet a default route: gateway_up() { if ! /sbin/route | grep "^default" 1> /dev/null ; then if [ ! "$GATEWAY" = "" ]; then /sbin/route add default gw ${GATEWAY} metric 1 fi fi } # Function to take down an existing default gateway: gateway_down() { if /sbin/route | grep "^default" 1> /dev/null ; then /sbin/route del default fi } ############ ### MAIN ### ############ case "$1" in `start`) # "start" brings up all available interfaces: dwl_520p_up $WLAN_DEV_NO gateway_up ;; `stop`) # "stop" takes down all existing interfaces: gateway_down dwl_520p_down $WLAN_DEV_NO ;; *) # The default is to bring up all interfaces: dwl_520p_up $WLAN_DEV_NO gateway_up esac # End of /etc/rc.d/rc.dwl_520p

b. Содержание файла rc.dwl_520p.conf: pre># /etc/rc.d/rc.dwl_520p.conf # # Config information for wlan0: ESSID="HomeLan" RATE="11M" CHAN="6" MODE="Ad-hoc" ALG="open" KEY="" IPADDR="192.168.85.2" NETMASK="255.255.255.0" GATEWAY="192.168.85.1" USE_DHCP="no" DHCP_HOSTNAME=""

Внес изменение в файл rc.M, добавив после строк: pre># Initialize the networking hardware. If your network driver is a module # and you haven`t loaded it manually, this will be deferred until after # the hotplug system loads the module below. if [ -x /etc/rc.d/rc.inet1 ]; then . /etc/rc.d/rc.inet1 fi

следующие строки:

pre># Setup D-Link DWL-520+ if [ -x /etc/rc.d/rc.dwl_520p ]; then . /etc/rc.d/rc.dwl_520p fi

Потом перезапустил Linux.

Понравилась статья? Поделись с друзьями!
Facebook Опубликовать в LiveJournal Tweet This


Оглавление   |  ?? ????

Оглавление        Вернуться к Статье

Скачай CMS сейчас!
Текущая версия системы управления сайтом WebCodePortalSystem:
v.7.1.00
Скачать CMS v.7.1.00
Обновление с версии 6.2.01

Сайт разработчика:
Новые бета версии

На Сайте
Гостей: 9
Пользователей: 0


10 новых статей
Наши Партнеры


Copyright WebCode-Command © 2003-2012
Работает под управлением WebCodePortalSystem v. 6.2.01
Rambler's Top100