?

Log in

entries friends calendar profile My LJ Previous Previous Next Next
ADSL модем D-Link DSL-2640U. Часть IV. Собрал первую тестовую прошивку. - Michael V. Pudeev
pudeev
pudeev
ADSL модем D-Link DSL-2640U. Часть IV. Собрал первую тестовую прошивку.
Честно говоря, надоело исследовать структуру каталогов в модеме с помощью команды echo:
# echo /* 
/bin /dev /etc /lib /linuxrc /mnt /proc /sbin /usr /var /webs 
# echo /bin/* 
/bin/adsl /bin/adslctl /bin/atm /bin/atmctl /bin/bftpd /bin/brctl /bin/busybox /bin/cat /bin/cfm /bin/chmod
/bin/date /bin/ddnsd /bin/df /bin/dhcpc /bin/dhcpd /bin/dhcpr /bin/dmesg /bin/dnsprobe /bin/dumpmem
/bin/ebtables /bin/echo /bin/epi_ttcp /bin/ethctl /bin/false /bin/hotplug /bin/igmp /bin/iptables
/bin/kill /bin/ln /bin/mkdir /bin/mount /bin/msh /bin/nas /bin/nas4not /bin/netctl /bin/openssl /bin/ping
/bin/pppd /bin/ps /bin/pvc2684ctl /bin/pvc2684d /bin/pwd /bin/reaim /bin/ripd /bin/rm /bin/sendarp
/bin/setmem /bin/sh /bin/siproxd /bin/snmp /bin/sntp /bin/sysinfo /bin/tftpd /bin/true /bin/udhcpd
/bin/upnp /bin/wlctl /bin/zebra



D-Link почему-то не посчитал нужным включить в пакет BusyBox самую распространенную и полезную консольную утилиту ls (листинг файлов), наверное, чтобы юзеры не лазили там где им "не положено" . Правда, в прошлом году, под давлением общественности, D-Link испугался судебных разбирательств и выложил на своем ftp-сервере исходники прошивки, теперь можно их спокойно скачивать и делать со своим модемом все, что угодно. Естессно, на свой страх и риск .

Вообщем, решил форсировать события, и собрать свою прошивку. В качестве теста включил в первую сборку утилиту ls:
# ls -l 
drwxrwxrwt 13 0 0 640 var 
dr-xr-xr-x 40 0 0 0 proc 
drwxr-xr-x 1 0 0 0 mnt 
drwxr-xr-x 1 0 0 516 dev 
drwxr-xr-x 1 0 0 2085 webs 
drwxr-xr-x 1 0 0 10 usr 
drwxr-xr-x 1 0 0 113 sbin 
lrwxrwxrwx 1 0 0 11 linuxrc -> bin/busybox 
drwxr-xr-x 1 0 0 171 lib 
drwxrwxrwx 1 0 0 291 etc 
drwxr-xr-x 1 0 0 487 bin

... и полезную утилиту netstat:
# netstat -an 
Active Internet connections (servers and established) 
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:5190 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:1863 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:1864 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:30005 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:4443 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:5566 0.0.0.0:* LISTEN 
tcp 0 147 192.168.1.1:23 192.168.1.4:3798 ESTABLISHED 
udp 0 0 0.0.0.0:30006 0.0.0.0:* 
udp 0 0 0.0.0.0:67 0.0.0.0:* 
udp 0 0 0.0.0.0:65002 0.0.0.0:* 
udp 0 0 0.0.0.0:5099 0.0.0.0:* 
udp 0 0 0.0.0.0:5100 0.0.0.0:* 
raw 0 0 0.0.0.0:2 0.0.0.0:* 0 
Active UNIX domain sockets (servers and established) 
Proto RefCnt Flags Type State I-Node Path 
unix 2 [ ACC ] STREAM LISTENING 785 /var/br2684 
unix 2 [ ] DGRAM 2385 /var/cfm_socketapi


Файл нового firmware, с добавлением двух новых команд, получился 3300704 байт:
BFD: stW1Uybz: warning: allocated section `.bss' not in segment
Code text starts: textAddr=0x80010000  Program entry point: 0x801A9018,
Before compression: 1745030  After compression (level=2): 538808
Percent Compression = 69.12
Write Model Name string:[RU_DSL-2640U]
bcmImageBuilder
        CFE image size                : 62332
        File tag size                 : 256
        Root filesystem image size    : 2699264
        Kernel image size             : 538820
        ASUS Model name size          : 32
        Combined image file size      : 3300704


[root@localhost RU_DSL-2640U_3-06-04-3C]#


Оглавление:
Часть I. Описание, тех. характеристики
Часть II. Подключаем консольный кабель
Часть III. Boot Loader, OS Linux 2.6.8.1 и оболочка BusyBox 1.0
Часть IV. Собрал первую тестовую прошивку
Часть V. Процесс сборки/разборки firmware
Часть VI. Подключение JTAG кабеля

Tags: , , , , , , , , , , , ,

25 comments or Leave a comment
Comments
lisnenko From: lisnenko Date: June 22nd, 2008 01:54 pm (UTC) (Link)
Эх, класс, спасибо Вам большое за такие логи! :)

1. Я так пока в никсах не шарю, в связи с чем вопрос - вы туда можете (можно ли вообще) воткнуть PPTP клиент? Я думаю этого как раз и не хватает 2640U очень сильно.

2. Более низкой значимости имхо - реализация возможности прикручивания DHCP сервера к каждому порту по отдельности.

3. Возможность установки доступа к устройству самому, к шлюзу по мак-адресу сетевой платы в привязке с IP и портом, можно естественно хотя бы по маку.

4. Ну и народ там на форуме д-линка очень хотел более информативных страничек про WLAN, там про мощность сигнала и т.д.
pudeev From: pudeev Date: June 24th, 2008 04:37 am (UTC) (Link)
Что-то новое добавить или убрать ненужное из прошивки конечно можно, но в ближайшее время я врядли буду этим заниматься, тк нет сил, знаний и времени. По прошивкам еще занимались ребята с www.modemsite.ru, но там по ходу тоже все заглохло :-(
lisnenko From: lisnenko Date: June 24th, 2008 01:36 pm (UTC) (Link)
Понятно. Про modemsite в курсе.
From: (Anonymous) Date: July 15th, 2008 09:40 am (UTC) (Link)
Еще бы команду ether_wake добавить :) для wake on lan.
From: (Anonymous) Date: July 15th, 2008 06:23 am (UTC) (Link)

Странно - скачал с D-Link прошивку - при разархивировании пишет - архив поврежден - часть файлов в пролёте... У кого такая проблема была?
pudeev From: pudeev Date: July 15th, 2008 07:08 am (UTC) (Link)
Проверьте контрольную сумму файла.
Файл скаченный мной - RU_DSL-2640U_3-06-04-3C_GPL.tar.gz имеет MD5 989762a64aec9554c71ace3b7c1d9a7d
From: (Anonymous) Date: July 15th, 2008 08:46 am (UTC) (Link)

Скачал заного - разархивировалось нормально: но терь проблема при сборке - ща разбираюсь.

[root@localhost RU_DSL-2640U_3-06-04-3C]# make PROFILE=RU_DSL-2640U
cp -f /work/RU_DSL-2640U_3-06-04-3C/targets/fstab320k /work/RU_DSL-2640U_3-06-04-3C/targets/fs.src/etc/fstab
/work/RU_DSL-2640U_3-06-04-3C/hostTools/scripts/gendefconfig /work/RU_DSL-2640U_3-06-04-3C/targets/RU_DSL-2640U/RU_DSL-2640U
cd /work/RU_DSL-2640U_3-06-04-3C/kernel/linux; \
cp -f /work/RU_DSL-2640U_3-06-04-3C/kernel/linux/arch/mips/defconfig /work/RU_DSL-2640U_3-06-04-3C/kernel/linux/.config; \
make oldconfig; make
make[1]: Entering directory `/work/RU_DSL-2640U_3-06-04-3C/kernel/linux'
HOSTCC scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91: ошибка: static declaration of ‘current_menu’ follows non-static declaration
scripts/kconfig/lkc.h:63: ошибка: previous declaration of ‘current_menu’ was here
make[2]: *** [scripts/kconfig/mconf.o] Ошибка 1
make[1]: *** [oldconfig] Ошибка 2
make[1]: Leaving directory `/work/RU_DSL-2640U_3-06-04-3C/kernel/linux'
make[1]: Entering directory `/work/RU_DSL-2640U_3-06-04-3C/kernel/linux'
find . -lname "*" -name "bcm96348" -print -exec rm -f "{}" ";"
./opensource/char/serial/bcm96348
./opensource/char/board/bcm963xx/bcm96348
./broadcom/net/enet/bcm96348
./broadcom/net/wl/bcm96348
./broadcom/atm/bcm96348
./broadcom/char/atmapi/bcm96348
./broadcom/char/bcmprocfs/bcm96348
./broadcom/char/adsl/bcm96348
/bin/sh -c " ln -sn impl1 opensource/char/board/bcm963xx/bcm96348; ln -sn impl1 opensource/char/serial/bcm96348; ln -sn impl1 broadcom/atm/bcm96348; ln -sn impl1 broadcom/char/atmapi/bcm96348; ln -sn impl1 broadcom/char/adsl/bcm96348; ln -sn impl1 broadcom/char/bcmprocfs/bcm96348; ln -sn impl2 broadcom/net/enet/bcm96348; ln -sn impl1 broadcom/net/wl/bcm96348;"
HOSTCC scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91: ошибка: static declaration of ‘current_menu’ follows non-static declaration
scripts/kconfig/lkc.h:63: ошибка: previous declaration of ‘current_menu’ was here
make[3]: *** [scripts/kconfig/mconf.o] Ошибка 1
make[2]: *** [silentoldconfig] Ошибка 2
make[1]: *** [include/linux/autoconf.h] Ошибка 2
make[1]: Leaving directory `/work/RU_DSL-2640U_3-06-04-3C/kernel/linux'
make: *** [kernelbuild] Ошибка 2


From: (Anonymous) Date: July 15th, 2008 09:38 am (UTC) (Link)
Еще бы команду ether_wake добавить :)
From: (Anonymous) Date: July 28th, 2008 10:29 am (UTC) (Link)
Михаил -ты пишешь:Вообщем, решил форсировать события, и собрать свою прошивку. В качестве теста включил в первую сборку команду ls:

А как собственно добавить их? Ну вот я скачал исходники - поставил RedHat 9 - всё без проблем собралось - прошилось - заработало!

Вопрос - а как добавлять ваще утилу ну например ls - в прошивку?
Очень интэрэсно :-)
pudeev From: pudeev Date: July 29th, 2008 09:55 am (UTC) (Link)
Вот тут все будет написано
http://pudeev.livejournal.com/31111.html
From: (Anonymous) Date: September 17th, 2008 04:52 pm (UTC) (Link)

lavrik

собраная тобою прошивка от zhone глючит, убивет модем ри попытке возврата на стандартную.
после этого ни чем не вернуть модем к жизни.
сделал кабель консольный из dku-5 от нокии не пашет. у меня в кабеле вмсто красного желтый проводок, ну подключл всё как ты писал не работает.
что деать то, отпиши на на асю 394845890
pudeev From: pudeev Date: September 18th, 2008 08:58 am (UTC) (Link)

Re: lavrik

Иногда при перепрошивки слетают данные по МАК адресу (Base MAC Address, Number of MAC Addresses), типу платы (Board Id Name) из NVRAM. Поэтому инициализация модема на низком уровне не проходит и он подвисает. У меня такой трабл был пару раз. Причину незнаю, возможно из-за не полной совместимости самопальных прошивок.
Выход один - подключить консоль и вручную их ввести. По поводу usb-serial кабеля для Nokia, то все они от разных китайских производителей, поэтому цветовая маркировка может и не совпадать. Посмотри здесь распиновку своего кабеля:
http://www.topnokia.ru/forum/index.php?showtopic=34383
http://www.dku5.ru/delivery/1167/
для модема нужны только три выхода - земля, rx и tx.
Помимо этого, нужно установить драйвер для этого кабеля и корректно настроить терминал.
From: (Anonymous) Date: December 18th, 2008 08:36 am (UTC) (Link)
scripts/kconfig/mconf.c:91: ошибка: static declaration of ‘current_menu’ follows non-static declaration
Уф ;) Собрал. Такая же ошибка была. Перекопал практически весь скрипт сборки. Все оказалось проще некуда. Надо закоментировать строку 91 в scripts/kconfig/mconf.c:91, потому как current_menu уже объявлена в lkc.h. вот новый gcc и ругается.
Там после этого куча подводных камней. Нехватало hender файлов на MARK фильтр (добавил) и еще куча всего. Собирал на Linux Mandriva powerpack 2008
Прошил модем все OK )
Копаем дальше ->>
From: (Anonymous) Date: January 11th, 2009 05:34 pm (UTC) (Link)
Я думаю корректнее поправить mkconf.c
на предмет

struct menu *current_menu;

вместо

static struct menu *current_menu;

в mconf.h

было собрано на Debain-Etch-n-half (текущей версии)
оба рпма былт сперва дебианизированы
alien *.rpm
потом установлены
dpkg -i *.deb

для сборки был заюзано все текущих версий

libc6-dev
libncuresr5-dev
libstdc++5

вот резалт

bcmImageBuilder
CFE image size : 62332
File tag size : 256
Root filesystem image size : 2695168
Kernel image size : 538853
ASUS Model name size : 32
Combined image file size : 3296641

нету у меня редхата - как-то везде Debian и в офисе и тут.






From: (Anonymous) Date: February 28th, 2009 12:25 pm (UTC) (Link)

ПОжалуйста приймите участи в девелопе FW

http://forum.dlink.ru/viewtopic.php?p=423532#423532 начинаем координально разрабатывать, дорабатывать прошиву на 2640у. Бфли бы примного благодарны за ваше участие
From: (Anonymous) Date: July 14th, 2009 05:19 pm (UTC) (Link)

WAN ports

здравствуйте. есть интересный вопросик по поводу этого модема.
возможно ли один из его портов на LAN интерфейсе использовать в качестве WAN порта локальной сетки?
пытался разделить порты, но успеха в этом деле почему то не добился (
посмотрел новые модема в которых присутствует отдельный порт WAN и заметил что они отличаются только наличием 5 портового LAN интерфейса. значит реализация скорее всего программная, а не программная - вроде 2х сетевух
From: (Anonymous) Date: September 11th, 2009 12:03 pm (UTC) (Link)

Re: WAN ports

да меня тоже интересует этот вопрос, на дсл с локалки возвращаться не хочу да и модем менять тоже... Было бы чудно, если сделать например lan1 как Wan... Поиск в интернете привел меня сюда http://www.ddixlab.ru/forum/viewtopic.php?t=385 , но модем с большим упорством отказывается полноценно выполнять команды. (то прав нет-то еще чего и т.п) Можно ли такое сделать?
From: (Anonymous) Date: September 11th, 2009 12:09 pm (UTC) (Link)

Re: WAN ports

Ах да забыл, модем мой BRU/C, h/w ver.C1, f/w ver.1-22
From: abatapa Date: December 15th, 2009 11:25 am (UTC) (Link)

Re: WAN ports

Можно. И, как правило, это есть в меню (port mapping).
Вот только интерфейс не готов к такому - и, значит, все настройки придется делать "мимо" него.
From: (Anonymous) Date: March 4th, 2010 04:52 pm (UTC) (Link)

Re: WAN ports

А как нибудь поподробнее можно?
From: (Anonymous) Date: November 6th, 2010 08:52 pm (UTC) (Link)

Re: WAN ports

LAN интерфейсе использовать в качестве WAN порта локальной сетки? скажите пожайлуста может есть прошивка с помощью которой можно реализовать это? или какието указание по настройке? наработки?
From: (Anonymous) Date: September 28th, 2009 06:35 pm (UTC) (Link)

mac

вечер добрый!
всё прочитал - спасибо за труды.
есть простой вопрос - как можно поменять mac-адрес на интерфейсе и чтобы он сохранился после ребута?
спасибо!
From: (Anonymous) Date: September 29th, 2009 12:44 pm (UTC) (Link)

Re: mac

в CFE.

;b - Change board parameters
CFE> b
Number of MAC Addresses (1-32) : 11
Base MAC Address : XX:XX:XX:XX:XX:XX
From: (Anonymous) Date: October 14th, 2009 05:59 am (UTC) (Link)

Что залить во флешь через программатор?

Убит dsl-2640u через j-tag не видит флешь mx29lv320cbtc. Есть возможность залить через программатор - вопрос что? wholeflash.bin лил модему монопесуально.
agent_0007 From: agent_0007 Date: May 23rd, 2011 09:18 am (UTC) (Link)
Конечно понимаю, что данная тема была давно, но все-таки попытаю удачи)))

Вы пробовали писать свои программы под этот длинк?
Как их запускать? я так понял что там какой-то встроеный блокировщик запуска стоит и похоже что он называется cm_ps.
Вопрос в том, как запустить свое приложение на роутре?

с кросс-компиляцией знаком. исполняемый фаилик собрал.
25 comments or Leave a comment