неділя, 8 січня 2012 р.

TP-Link 1043 ND + Nokia CA-42. А также о наших "авторизированных сервис центрах"

Собственно этот блог я и начал писать, чтобы не забывать как настраивать систему, когда меняешь девайс или перешиваешь. Надоедает каждый раз гуглить - искать нужны конфиги.
Год назад, я был тогда еще зелен (зеленее не бывает) в прошивке OpenWRT, при очередной перепрошивке брикнул TP-Link 1043ND. Он конечно был гарантийный, но мне, я считал себя аццким перцем (бугога), захотелось перешить самому.
Погуглил, раскрыл, припаял контакты к материнке роутера (последовательный порт). Подключил к старому компу с RS232 портом. Он мне выдал крякозябры. Я расстроился. Понял что я бессилен. А гарантии уже нет :-( Пошел сначала по знакомым - у тех тоже самое. Потом звонил всем подряд сервис-центрам. Везде одно и тоже: "мы таким не занимаемся." Стоит, если делать, дороже, чем купить новый роутер. Другие говорили: "Мы, типа, iPhone'ами занимаемся, а китайцами - нам не пруха". Видать забыли, что ЯМобилки - собирают там же в Китае. Бугога.
Причем нашел на openwrt.org как вообще выпаять и перешить флеш-чип с полным мануалом. Принес еще одному умельцу. Сказал зайди через неделю. Через неделю "умелец" Вова сказал - "НЕТ. Процесс дорогой. Лучше купи новый роутер." А за "диагностику" взял мил человек 30 грн. и не побрезговал :-).
Расстроился я окончательно, достал из дорогой мне заначки $100 и с горя купил Linksys WRT160NL. Собственно тогда я и завел блог. Хотя, ввиду схожести архитектуры, все написанное здесь работает и на TP-Link'e (Проверено электроникой).
TP-Link жил себе на работе, перенес переезд в другой кабинет. Я уже думал выкинуть его ко всем чертям. Как вдруг, btard, дал линк на то, как он поднял свой WRT160NL после сбоя. Думаю, заберу домой, а вдруг, как говорится?... :-)
Естесственно у меня ничего не вышло. Другой подход в создании бут-лоадера. Linksys поэтому и дороже в 1.5 раза, потому что он умнее :-). CISCO как никак! Но решил опять погуглить. Терять уже нечего, рабочий роутер есть. Прежде чем выкидывать, так попробую. Залез в гугл. Нашел статью и форум, где на нее была ссылка. Там увидел, в чем была моя проблема. Проблема была в том, что я подключал в порту компа напрямую. А там, если все правильно помню на выходе 5В, а надо 3.3В. Один форумчанин описал симптомы с другим питанием в точ-точь как у меня: кракозябры и прочее. Ага, значит надежда есть :-) В соответствии с мануалом, купил на радиорынке китайский кабель Nokia CA-42, хотя как мне потом сказал Win7 x64, это не нокия, а prolific.com.tw . Соответственно и фирменные Nokia кабеля того же производителя.
Так как моя Винда х64 не захотела запускать девайс USB-to-RS232, я включил кабель в ноут с Ubuntu. dmesg мне сказал, что /dev/ttyUSB0 - готов к работе.
Осталось дело за малым:
1. Скачал родную прошивку для TP-LINK
2. Поставил TFTP сервер как в мануале по дебрикингу на ноут с семеркой и подлючил его к порту 1 роутера. (не имеет значения с какого компа заливать по TFTP - главное прописать адрес сетевой на ноуте 192.168.0.5 (только его). У меня так получилось, что консолью я ходил из под Ubuntu, а заливал по TFTP из под Win7 x64. Но это мои детали. Просто мне не захотелось бороться с Gnome Network Manager. Туповатый он, когда пытаешься ручками адреса прописать. Вообщем влом было и торопился я.
3. Разделал кабель (решил не заморачиваться с припаиванием контактов - гемор еще тот), определил где какой шнур. В моей случае было так: БЕЛЫЙ - RX, ЗЕЛЕНЫЙ - TX, СИНИЙ - GND. Соответственно на роутере TX/RX меняются местами.
4. Подлючил все и о ЧУДООО!! - увидел надписи в Putty на родном английском языке. Конечно запрыгал от счастья :-)
5. Дальше все по манулу, все поднялось и запело.
...................
Естественно родная прошивка TP-LINK, к-ю я сразу влил - как всегда, даже последняя версия, начала лагать с IPTV по WiFi.
Я взял конфиги с WRT160NL, чуть допили, и настроил его под себя уже в OpenWRT10.3.1.
На данный момень 2 часа - полет нормальный. Роутер работает!!!!.
...................
P.S. Полный привэд сервис-мэну Вове. Вова - если ты читаешь этот пост - ганьба тебе. Если есть совесть - верни деньги. Дело принципа!!!!
P.P.S. Полный привэд ВСЕМ сервис-мэнам "авторизированных" СЦ. Ребята - с Вас китайцы сделали обезьян, умеющих только платы переставлять. Вы забыли про паяльник и программатор. Помнится в студенческие годы я криво проапдейтил BIOS на компе :-) (Традиция у мну такая). 1999 год. Операция по восстановлению компа с выниманием флешки, программатором и возвратом назад заняли 20 минут и 20 грн. денег (тогда курс курс 5.35 для справки).
P.P.P.S. Всем спасибо. У кого есть подобные проблемы - задавайте вопросы. Чем смогу - помогу. Сегодня хороший день!
P.P.P.P.S. btard - Вам за вдохновение и автору манула ELVEON (Антон) для TP-LINK - мой респект и уважуха. Спасибо огромное. С меня \_/\_/\_/

пʼятниця, 12 серпня 2011 р.

OpenWRT + Linksys WRT160NL

Решил таки прошить роутер последней прошивкой OpenWRT. Тем более было обещано, что стабильной работы WiFi от Atheros улучшена.
До этого стояла DD-WRT. Для корректной прошивки, сначала через web-интерфейс прошился в родную прошивку linksys. А с нее уже перешился в OpenWRT.
Прошивку брал последней версии 10.03.1-rc5. Все делал через Web-интерфейс, используя штатные функции. Все прошло гладко.
Сразу после перешивки доступен telnet, LUCI (Web-интерфейс).
Доустановил DDNS, UDP Proxy, Pure-FTP, SAMBA3, Transmission Daemon, nano, htop, mc и прикрутил USB Диск на 500 ГБ, сделав на нем 2 раздела: 128MB под swap раздел, а остальное раздел для данных в ext3. 
Позже расскажу как это все дело запустить. На wiki.openwrt.org есть все подробные доки по настройке. Я лишь расскажу, как поднять то, что было необходимо мне.


Система стоит уже 3 дня. Стоит отметить, что стабильность работы системы на высоте. DD-WRT уже бы раз пять повесилась при прикручивании того или другого. Особенно глючно на DD-WRT работает WiFi.


----------------------------------------------------------------------
26-12-2011
-----------------------------------------------------------------------
Перешился на релиз OpenWRT 10.3.1 через LUCI. Прошивка *squashfs-sysupgrade*. Обязательно необходимо убирать галку "Keep Configuration Files". Иначе можно брикнуть роутер.  Все прошло без сучка. Кста роутер запомнил измененный MAC-address.
Все работает замечательно.

середа, 15 грудня 2010 р.

wrt160nl + DD-WRT + Multicast IPTV + udpxy

wrt160nl, как и вся продукция от linksys by cisco, из коробки отказывается работать с multicast IPTV по WiFi на стоковой прошивке. dd-wrt тоже не имеет стандартных средств для этого. Вся проблема заключается в том, что мультикаст igmp-траффик сильно "засоряет" WiFi, путем многоадрессной рассылки пакетов по всем адресам внутри сети, а не только на адрес получателя.  Делает это настолько "хорошо", что WiFi просто отваливается. Даже если смотреть IPTV по шнурку, все равно WiFi отвалится. Так как по дефолту WiFi и LAN в бридже.
На своем старом роутере wrt54gl я ставил udpxy - UDP Proxy, который берет мультикаст пакеты из внешнего интерфейса и пересылает на конкретный IP адрес. Таким образом WiFi остается рабочим. Есдинственное "но" - необходимо изменить адрес канала (указать адрес и порт прокси), но об этом чуть позже.
Решил искать скомпиленный udpxy для wrt160nl. Оказалось проблемой, так как другой производитель чипсета (Atheros, а не Broadcom). Нашел на форуме dd-wrt. Один добрый человек скомпилил под Атеросы. Только надо зарегиться, тогда будет видно ссылку.

Далее описаны шаги, как заставить работать udpxy автоматически и автоматически всегда иметь свежий плейлист со списком каналов, адаптированный под udpxy.
  1. Скачиваем этот файл (udpxy).
  2. Далее необходимо разрешить раздел /jffs (Web Interface -> Administration -> Management ).
  3. Заходим на роутер по SSH (клиент любой, самій простой putty). Для этого он должен быть предварительно разрешен (Web Interface -> Services).
  4. Выполняем с консоли:
         mkdir -p /jffs/etc/config
         mkdir /jffs/bin
         mkdir /jffs/iptv  (позже объясню зачем)
  5.  Копируем на роутер файл udpxy в папку /jffs/bin/ :
    • Из под Линукса это можно сделать командой scp:
                scp udpxy root@192.168.1.1:/jffs/bin
    • Из под Windows, предварительно скачав и установив программу WinSCP.
  6. Далее, опять в консоли, выполняем следующее: 
  7.         chmod +x /jffs/bin/udpxy  (делаем файл исполняемым. Можно тоже самое делать с помощью WinSCP - установить атрибут исполняемого файла)

  8. Теперь, либо прямо из консоли посредством vi, либо на компьютере набрать, а потом скопировать любым описанным выше способом создаем файл запуска прокси в папке /jffs/etc/config. 

       vi /jffs/etc/config/udpxy.wanup  

    Разрешение файла .wanup - обязательно. Оно указывает на то, что файл будет запускаться сразу после поднятия внешнего интерфейса, смотрящего к провайдеру. И набираем текст: 

       iptables -I INPUT -d 224.0.0.0/240.0.0.0 -j ACCEPT
       /jffs/bin/udpxy  -p 81 -M 30 -B 256Kb -m 10.10.1.1 -a 192.168.1.1


    Сохраняем. Выходим.
    где:
    -p 81 - порт на котором будет выстявляться во внутреннюю сеть каналы по http протоколу;
    10.10.1.1 - внешний адрес роутера (заменить на свой);
    192.168.1.1 - внутренний адрес роутера (заменить на свой).


  9. Далаем стартовый скрипт исполняемым: 
  10.       chmod +x /jffs/etc/config/udpxy.wanup 
    В принципе по работе самой прокси все. Если теперь рестартонуть роутер - прокся поднимется и будет слушать по 81 порту запросы на получение IPTV. Но есть 1 нюанс. Мультикаст UDP адрес IPTV канала имеет вид: udp://@239.0.0.59:1234 .
    И наша поднятая прокси никак не сможет догадаться, что он нее хотят, если не изменить адрес канала. Необходимо в адресе указать, что надо пойти за каналом на проксю. И адрес канала изменится на следующий: http://192.168.1.1:81/udp/239.0.0.59:1234 . Это необходимо сделать для всего плейлиста со списком каналов. Хорошо если провайдер не меняет список доступных каналов. А если наоборот? И список меняется чуть-ли не каждый день, что характерно для провайдеров, которые только запускают услугу IPTV. Каждый раз менять руками (с помощью текстового редактора) весь плейлист - тяжко и напряжно. Правда в IPTV Player есть возможность указать сетевой интерфейс откуда брать "телевизор". Тогда плейлист можно не менять, а в интерфейс вписать адрес роутера и порт: 192.168.1.1:81. В VLC Media Player я такого не нашел. Может плохо искал. Но решил, что можно сделать и по другому.
  11. Необходимо плейлист менять на роутере, благо все для этого в нем есть, и грузить уже непосредственно с роутера. Необходимо создать в нем скриптовый файлик и сделать его исполняемым: vi /jffs/iptv/iptv_playlist.sh . И вбиваем туда следующий текст:
  12. echo -----------------------------------------------
    echo updating providers iptv playlist from iptv.inet-provider.com  
    echo -----------------------------------------------
    cd /jffs/iptv/
    rm udp_playlist.m3u  
    rm http_playlist.m3u  
    wget http://iptv.inet-provider.com/udp_playlist.m3u
    sed 's|udp://@|http://192.168.1.1:81/udp/|' udp_playlist.m3u > http_playlist.m3u
    echo ----------------------------------  
    echo iptv playlist successfully updated  
    echo ----------------------------------
    где:
    • iptv.inet-provider.com - адрес в сети провайдера, по которому можно найти плейлист;
    • udp_playlist.m3u - плейлист со списком каналов, который нам отдает провайдер, который надо менять;
    • http_playlist.m3u - плейлист со списком каналов, который мы формируем под наш udpxy;
    • 192.168.1.1 - внутренний адрес роутера.
    • После этого делаем его исполняемым: chmod +x jffs/iptv/iptv_playlist.sh 

  13. Аналогично, описанному в шаге 7 создаем файлик: vi /jffs/etc/config/iptv.wanup и вбиваем туда следующий текст: /jffs/iptv/iptv_playlist.sh . Потом делаем его исполняемым, как описано выше. Все, с редактированием файлов закончено. Переходим к настройкам через Web.
  14. Заходим в админку роутера на страницу: Services -> NASРазрешаем ProFTPD сервер. Устанавливаем File Directory: /jffs. Allow Write: Disable. В поле User Password List вбиваем одном строкой: iptv iptv. Anonymous Login (Read-only) запрещаем. Сохраняем результат.
  15. Переходим на страницу Administration -> Management. Разрешаем планировщик заданий cron и вбиваем в поле Additional Cron Jobs задачу, например, ежедневного обновления в 6-00 плейлиста со списком каналов: 0 6 * * * root /jffs/iptv/iptv_maxnet.sh .
  16. Все сохраняем и перезагружаем роутер.
  17. Измененный список каналов теперь доступен по адресу: ftp://iptv:iptv@192.168.1.1/iptv/http_playlist.m3u
  18. Для VLC создается ярлык и правится строка запуска. После самого плеера вбивается этот адрес. Теперь у Вас всегда будет свежий плейлист с каналами.
  19. Для IPTV Player в настройках вбить адрес и указать обновление при запуске.

Теперь, Вам неважно, поменял провайдер список каналов или нет. Он всегда будет обновленным. И не надо менять руками на каждом девайсе список, достаточно указать адрес списка каналов с роутера.


P.S. Данное решение подходит не только для этого роутера. Для любого, под который есть скомпиленный udpxy, и в прошивке есть ftp-server. Изначально решение было создано на роутере TP-Link TL-WR1043ND, но после того, как я его убил перепрошивкой на OpenWRT - Купил Linksys WRT160NL. Кста на OpenWRT это тоже работает, только там я ставил другой ftp-server (не помню какой). Но это и не важно. Можно вместо ftp, использовать http.

(с) william 

dd-wrt + linksys wrt160nl и MAC-addres Clone

После установки dd-wrt (rel. 14896) на linksys wrt160nl, обнаружил, что не работает функция MAC-address clone (клонирования MAC-адреса) внешнего сетевого интерфейса, смотрящего к провайдеру. До рестара роутера все работает. После рестарта - снова выставляется аппаратный MAC-адрес.
Поиск в гугле результатов не принес. Кроме того, что проблема есть не только у меня одного.
Решение было найдено. Написал скрипт через веб-морду и сохранил его как стартап скрипт:

ifconfig eth1 down 
killall udhcpc 
ifconfig eth1 hw ether aa:bb:cc:dd:ee:ff 
ifconfig eth1 up 
udhcpc -i eth1 -p /var/run/udhcpc.pid -s /tmp/udhcpc

Где aa:bb:cc:dd:ee:ff - заменить клонированным МАС-адресом. 

После этого - ребут. Все работает. 
Только в веб-морде для WAN интерфейса все равно светится хардварный МАС адрес. ИМХО, это не важно - главное железка работает. 


З.Ы. Это нужно для тех, у кого провайдер жестко привязывается к MAC-адресу устройства.

(c) william