ЗАМЕТКА
В рамках поднятия IPTV в сети столкнулись с приставкой D-Link DIB-120.
Симптомы
Приставка D-Link DIB-120 при загрузке показывает логотип Alpha и потом черный экран и больше ничего.
Выяснилось
Компания Dlink завезла в Россию партию DIB-120, залитых безбраузерной прошивкой.
Отличить такую приставку можно по ее серийному номеру. Он начинается с Р1Т818.
В приставке прошит статический IP-адрес 192.168.1.1 и она слушает мультикаст группу с адреса 239.60.8.1:37732
Решение проблемы
Существуют два способа решения проблемы:
1. Если у вас есть сервер с OS Linux, то можно запустить вещание файла прошивки на мультикаст адрес 239.60.8.1:37732 с помощью проги amfus.
Положите файлы прошивки и amfus в одну папку, затем создайте в этой же папке конфиг:
DIB120.conf:
a0_rootfs a-fs-cramfs.img V4.03.009 14299136 e6d0e447beed049bb2d41798721f29d7
kernel vmlinuz-7402c0 V4.03.009 1602656 7cc07013cc6ff0ea8f078920175791c1
Затем запустите:
./amfus -d DIB120.conf -m 239.60.8.1:37732 -i 1000 -t 32
2. Можно закачать прошивку с помощью HTTP сервера. Как это сделать было описано в этой статье, процитирую ее:
По умолчанию IP STB D-Link DIB-120 поставляется без прошивки (при загрузке отображается ALPHA и черный экран).
На форумах говорят, что это «бракованная» партия, а на самом деле это «чистый» аппарат без странички.
Чтобы исправить это можно загрузить в него следующую прошивку 4.04.013_multicast.rar (доступна обновленная прошивка для DIB-120 от 6.11.09 4.05.004_multicast.rar).
Для перепрошивки понадобиться любой WEB сервер (например Apache).
В корневую директорию сервера необходимо сохранить два файла, которые находятся в архиве (a-fs-cramfs.img и vmlinuz-7402c0).
В качестве примера установлен IP сервера (компьютера с установленным Apache) – 192.168.1.2.
Устройство по умолчанию имеет IP 192.168.1.1, для этого в командной строке нужно выполнить команду telnet 192.168.1.1 на запрос имени пользователя необходимо указать root, а пароль пустой.
В командной строке DIB-120 нужно выполнить следующие команды:
cd /tmp
wget http://192.168.1.2/vmlinuz-7402c0
eraseall /dev/mtd2 ; dd if=vmlinuz-7402c0 of=/dev/mtd2wget http://192.168.1.2/a-fs-cramfs.img
eraseall /dev/mtd0 ; dd if=a-fs-cramfs.img of=/dev/mtd0reboot
Внимание! После перезагрузки пароль root’a будет изменен (см. файл password.txt в архиве), пароль можно изменить выполнив команду passwd
Оригинал статьи тут: http://cworld.org.ua/2009/09/16/firmware-d-link-dib-120/
Большое спасибо Hades за данную публикацию, а то у меня FreeBSD и я уже чуть было не озадачился поднятием эмулятора Linux 🙂
Сделал все как описано в статье, за исключением того, что поднял не Apache, а по быстрому поставил nginx (/usr/ports/www/nginx).
Все получилось, после прошивки и ребута приставка начала стучаться по DHCP и успешно получила от моего сервера DHCP IP-адрес.
Вот конфиг nginx.conf:
user www www;
worker_processes 1;
error_log logs/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 192.168.1.2:80;
server_name localhost;
location / {
root /usr/local/www/nginx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
}
Вот пример вывода с приставки при перепрошивке:
# cd /tmp # wget http://192.168.1.2/vmlinuz-7402c0 Connecting to 192.168.1.2[192.168.1.2]:80 vmlinuz-7402c0 100% |*****************************| 1565 KB --:--:-- ETA # eraseall /dev/mtd2 ; dd if=vmlinuz-7402c0 of=/dev/mtd2 Erasing 128 Kibyte @ 1e0000 -- 93 % complete. 3130+1 records in 3130+1 records out # wget http://192.168.1.2/a-fs-cramfs.img Connecting to 192.168.1.2[192.168.1.2]:80 a-fs-cramfs.img 100% |*****************************| 13964 KB 00:00:00 ETA # eraseall /dev/mtd0 ; dd if=a-fs-cramfs.img of=/dev/mtd0 Erasing 128 Kibyte @ 11e0000 -- 99 % complete. 27928+0 records in 27928+0 records out # # reboot # Connection closed by foreign host.
Уверен, что данная заметка пригодится не только мне.
Автор: Николаев Дмитрий (virus (at) subnets.ru)