Трансформирайте ADSL модем Ethernet-Shield за Ардуино

Трансформирайте ADSL модем Ethernet-Shield за Ардуино

0x0 - въвеждане
0x1 - разбор :)
0x2 - да се запознаете с софтуерната част
0x3 - формат на фърмуера
0x4 - промяна на файловата система
0x5 - пише на първата програма
0x6 - сериен порт
0x7 - заключение
Трансформация на ADSL-модем в Ethernet-Shield

Може някой да си спомня за новогодишни празници сме били проучват ADSL модем базираната в Linux - ZTE ZXDSL831AII (подобно на D-Link DSL-2500U) и получаването на поредния споменах възможността да се превърне в един вид модем Ethernet -shild.
Е, това е време, за да го направя!

Трансформирайте ADSL модем Ethernet-Shield за Ардуино

По принцип, задачата изглежда лесно, но решението си Бях изправен пред редица капани, която отне доброто време за решението си :)

Основната идея на трансформацията на модема в Ethernet-Shield е много проста - всичко, което трябва, просто стартирате програмата модем, който ще се вслуша в определен мрежов порт и свържете въпроса негови данни от серийния порт, както и обратното, да предава получените данни към серийния порт.
Разбира се, това Ethernet-Shield позволява Arduino / CraftDuino работи не само като сървър, но на клиента (изпращат заявки до Google и пише в Twitter) - че това решение не позволява, макар че, мисля, че всичко зависи от програмата, която започва на ADSL модем)
Същият този разтвор е подходящ, ако имате нужда да управлявате вашия контролер чрез Ethernet. Например, въз основа на това решение, може да се изгради един истински интелигентен дом :) С една дума, всичко, което е ограничено от въображението си;)

Така че, ние се нуждаем от програма Proxy слушане гнездо и предаване на получените данни към серийния порт.

Тази програма е вече там:
ser2net.sourceforge.net - Serial да Network Proxy
но аз използвам полезност suart. написана от roboforuma участник - Мъртво

Ние прекомпилирате програма под наш модем. Аз вече сте инсталирали toolchain за ADSL модем D-Link 2500U


Въпреки това, когато се опитате да стартирате програмата за модема компанията постоянно генерира грешка:


така че трябваше да леко променя програмата.
Изтеглете изходния код и крайния програмата тук:
suart-DSL-2500.zip

По подразбиране програмата се слуша на порт 3000, и обръща данните от / сътрудничество / ttyS0 до 115200 процент.
Тези стойности могат да се променят параметрите на командния ред:


но и за цялата ни модем подходяща програма може да се управлява без параметри.

Така че, вие вече имате програмата, която искате да настоява за модема. За да направите това, вие трябва да промените файловата система.

Разопаковайте основната файлова система (rootfs могат да вземат файла от предишните примери като този - sq7.bin).
Напомням ви, че декомпресия трябва да се направи от корена на суперпотребител)
Ние имаме директория
SquashFS корен
копирате програмата ни suart директорията / ЮЕсАр / хамбар /
(Към сън програмата същото копие, която се като параметър броя секунди искате системата да спи - това е полезно за нас)
sleep-DSL-2500.zip

Но тъй като ние вече бутна два допълнителни програми - размерът на основната файлова система да расте и фърмуера на модема-вероятно няма да започне. Толкова е просто - трябва да се премахне всичко ненужно.
Например, изображения от уеб интерфейса!
Ходим на / ребра / и виждам много GIF-добре
изпълни командата

файловете са все още там, но сега имат нулев размер.

Въпреки това, ако просто стартирате програмата на модема - да достигне до 3000-тата порта няма да работи! Работата е защитна стена (.) Iptables, който работи на модема.

проверете дали порт използва Nmap-а:

тя ще даде на пристанището е отворено, но филтъра и се свързва с нея няма да работи :(

На последно място, провери хипотезата по отношение на защитната стена е проста - можете да убие HTTP (убие -9 команда) и бягай suart на порт 80

и тя ще работи :)

Ние ще трябва да се справят с IPTABLES. Звучи като нещо: да конфигурирате защитната стена на модема :)))

Преглед на съществуващите настройки с командата:


По принцип, можете просто да изчистите целия командата маса:


Но това не е нашият начин :)

Падащо научите номера и да го премахнете:


Извадете капка (11 правило INPUT веригата):


Ostaytsya отвори 3000ният порт:


Чек - работи!
Zapihnom тези команди във файла / ЮЕсАр / хамбар / mytest


Остава да се определи изпълнението на тези команди и последващо обаждане и suart в стартиране на.

Отначало се опита да прокара това нещо в /etc/init.d/rcS
Аз го измъчват по този начин и че се опита да постави в края на - програмата работи във фонов режим.
Suart добавя към параметъра w което предизвиква забавяне (в секунди) се вмъква в вилка suart () - във всеки!

В резултат на това най-новото издание на RCS

Но къде е предизвикателството на програмата? Толкова е просто - обърнете внимание на багажника влезете модем, който може да се гледа през серийния порт.

Ако използвате посочените по-горе RCS. линията
[I] Започнете.
Тя ще бъде веднага след линия
Algorithmics / MIPS FPU Emulator v1.5

и IPTABLES, изглежда, да се започне по-късно

обърнете внимание на линия


Тя намери в zdorovuschem (вече мегабайт!) Файл
/ Bin / CFM

Реших да направя ход рицарски - преименуване на файл / хамбар / CFM да / хамбар / cfm0
и на негово място влезе ол-ин на скрипт, както следва:


Както можете да видите, че работи на оригиналния / хамбар / cfm0 във фонов режим, и след това се изчаква 30 секунди и започва / ЮЕсАр / хамбар / mytest. който предвижда допълнителни IPTABLES конфигурация, а след това ни / ЮЕсАр / хамбар / suart

Не забравяйте да се направи скрипт изпълним и ... всичко! Можете да зареждате вашето фърмуер!

стартирайте командния пакет основната файлова система:

Освен това използвам моя комплект инструменти на packImage.exe
ParseImage

и генериране на файл на фърмуера.
за ZTE ZXDSL831AII:

Отиваме в уеб интерфейса на модема раздела за управление на -> Актуализация на фърмуер
Ние се посочи нашия файл резултат-sq8-suart.bin и изчакайте.

Ако се вгледате в сериен дневника на порта за зареждане, ще видим следното:

Моля, обърнете внимание - когато започва /etc/init.d/rcS (линия [в] Start.)
и когато / бен / CFM (линия [Ь] CFM).

проверка на пристанище с помощта на Nmap-A:


страхотно! порта е отворен!

Това е всичко. Разбира се, може би можете да деактивирате изхода на информацията за грешки, за това как да изтеглите модема към микроконтролера вход се излива допълнителни данни, но мисля, че не е необходимо - точно пред техните контролни команди трябва да добавите някои кодова дума и всичко останало.

Prompt, pliz, скъпи Guru), е възможно да се направи BR1 - подчерта в отделна група интерфейс - получават мрежови настройки от DHCP? чрез фоп да конфигурирате фиксиран IP и GW, а ако изпълните командата. vylaziet грешката. което е разбираемо, тъй като в директорията / Proc / реактивна / FYI / WAN нищо за BR1. Ако създадете връзка ADSL, името му се появява в папката WAN - тип nas_0_8_35.
Може би има начин да се създаде папка има и BR1? Или можете да стартирате dhcpc заобикаляйки използвате тази папка? Или може би можете да преименувате BR1 в nas_0_8_35.

Machine - DLink DSL-2640u / BRU / c2, препратено: 2.05

Помощ с фърмуера за D-Link 2500u - кой? Можете да оформите?

Моля, кажете ми как да добавите модем Telnet? Сега, когато се опитате да се свържете на пристанището е отворено, но връзката се прекъсне