Jump to content
Korean Random
kharlashkin

Альтернативные прошивки маршрутизаторов.

Recommended Posts

Добрый день всем!

 

Так сложилось, что уже довольно давно использую свой домашний Asus RT-N16 не только по "прямому" назначению. Хочу здесь публиковать свои изыскания относительно использования таких коробочек.

 

Я как-то уже спрашивал нашу скромную компанию - "Стоит ли делиться опытом?". Конечно стоит!

 

Так сложилось что мне пришлось обновлять прошивку. Соответственно нужно опять запускать OpenVPN и раз так заодно поделюсь этим опытом с форумчанами.

 

1. Почему именно DD-WRT?

 

Как показывает практика, все производители домашних маршрутизаторов спустя рукава относятся к программному обеспечению, установленному на свои железки. А если говорить о таких вещах, как тонкая настройка множества параметров  - заводские прошивки не представляют никаких инструментов от слова вообще. Хотя есть некоторые исключения в виде командной строки, но для этого нужно обложиться учебниками и справочниками, "курить манюалы", много гуглить и т.п.

 

По закону подлости, всего не предусмотришь и часто что-то делая через shh и telnet ошибка приводит к отсутствию интернета так как роутер не может корректно загрузиться и раздать интернет, а практически никто не имеет дома резервный (или открытый соседский) канал интернета для допиливания конфигураций маршрутизатора из консоли. 

 

Я пробовал практически все альтернативные прошивки для своего Asus и только вышеназванная мною имеет возможность редактировать множество параметров "из коробки" в web-интерфейсе. Особенно это касается следующего пункта.

 

2. Почему OpenVPN?

Тут все довольно просто - приведу пример. Вы с находитесь в гостевой сети (учеба/работа/интернет-кафе и т.п.) где суровым системным администратором запрещено почти всё - он-лайн игры, скачивание торрентов, просмотр потокового видео и т.д. Стандартные VPN обычно используют тоже известные порты и протоколы, таким образом очень сомневаюсь что тот, который настраивал доступ в интернет так же оставил Вам возможность использовать для обхода что-то типа PPTP/L2TP/PPPoE. Но у нас же есть предварительно настроенный OpenVPN, который работает на любом порте и TCP/UDP транспорте. Как пример если наше соединение работает по 443 порту (https) и используется TCP-транспорт, то для маршрутизатора, который нам дает доступ в интернет это будет выглядеть как будто мы просто просматриваем сайт (как google.com или koreanrandom.com). Трафик весь шифруется, и даже с помощью специальных утилит никто не увидит что же мы на этом сайте делаем.

 

3. Прошивка маршрутизатора.

Идем в соответствующий раздел, вводим название производителя маршрутизатора и нам вываливаются список моделей которые можно прошить.

post-19155-0-12429900-1491844853_thumb.png

Небольшое отступление. Так сложилось что мой первый домашний роутер был Asus WL-520gU и первый провайдер предоставлял доступ к интернет с PPPoE Dual Access (Russian PPPoE) - т.е. доступ к локальным ресурсам и отдельно доступ к сети интернет. При чем мой работодатель так же был подключен к этому провайдеру, соответственно я мог получать доступ к своему терминальному рабочему месту (1С, почта, файловое хранилище) и сайту (периодически наполнял его интересными статьями) из дома с наивысшей скоростью, как по локальной сети. Просидев пару вечеров допоздна с dd-wrt я так и не смог корректно настроить одновременную работу интернета и локальной сети провайдера. Вернулся на заводскую прошивку, но всё решил случай. В один летний день грянул гром, т.е. ожидалась гроза и провайдер выключил интернет - на тот момент кое-где между домами использовалась витая пара, и в целях сохранности своего оборудования этот поставщик услуг просто выключал физически электричество на всей своей сети. Поискав доступные беспроводные сети я нашел какую-то соседскую без пароля, подключившись увидел что там доступ к интернету имеется. Зайдя на маршрутизатор соседа глянул что там прописано в настройках - оказалось что другой провайдер, доступный в моем доме, не имеет вышеозначенных проблем с медными кабелями, а раздает интернет статическим адресом. И я просто сменил провайдера ;) А для доступа к ресурсам работодателя подключил себе услугу "Статический IP-адрес" за $2 и попросил системных администраторов разрешить мне доступ извне с этого IP.

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

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

 

4. Подготовка OpenVPN.

Так как большинство используют Windows, сборку ключей и сертификатов будем делать под этой ОС. Сначала идём на официальную страницу загрузки и качаем нужную версию. Установка ничем особо не отличается, кроме необходимости поставить галочку в нужном месте:

post-19155-0-15413600-1491912643_thumb.png

Запускаем консоль Windows - ПКМ (правая кнопка мыши) на Пуск - выполнить - "cmd".

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

cd C:\Program Files\OpenVPN\easy-rsa

и последовательно выполняем команды:

init-config.bat
vars.bat
clean-all.bat
vars.bat
build-ca.bat
vars.bat
build-dh.bat
vars.bat
build-key-server.bat "имя сервера"
vars.bat
build-key.bat "имя клиента"

Под полями "имя сервера" и "имя клиента" вводите свои имена для маршрутизатора и подключаемых к нему потом устройств. При создании сертификатов/ключей у нас будут постоянно спрашивать всякое-разное, я вводил ответы "как оно есть".

В итоге у нас в папке C:\Program Files\OpenVPN\easy-rsa\keys множество нам нужных ключей и сертификатов. И мы можем переходить к настройке маршрутизатора.

 

5. Настройка маршрутизатора.

Идем на web-интерфейс нашего маршрутизатора и переходим на вкладку Services - VPN и включаем наш OpenVPN Daemon:

post-19155-0-96677200-1491915822_thumb.png

Затем поочередно заполняем соответствующие поля нашими сертификатами и ключами из папки, просто открывая в текстовом редакторе:

  • CA Cert - C:\Program Files\OpenVPN\easy-rsa\keys\ca.crt;
  • Public Client Cert - C:\Program Files\OpenVPN\easy-rsa\keys\"имя сервера".crt;
  • Private Client Key - C:\Program Files\OpenVPN\easy-rsa\keys\"имя сервера".key;
  • DH PEM - C:\Program Files\OpenVPN\easy-rsa\keys\dh1024.pem;

В поле OpenVPN Config, записываем конфигурацию, это пример моей:

mode server
tls-server
daemon
server 192.168.66.0 255.255.255.0
port 443
proto tcp-server
dev tun0
ca /tmp/openvpn/ca.crt
cert /tmp/openvpn/cert.pem
key /tmp/openvpn/key.pem
dh /tmp/openvpn/dh.pem
push "redirect-gateway def1"
push "dhcp-option DNS 192.168.66.1"
push "dhcp-option WINS 192.168.66.1"
keepalive 10 120
client-to-client
persist-key
persist-tun
verb 3

6. Настройка клиента Windows.

Так как у нас уже есть установленная версия, на ОС под которой мы создавали ключики и сертификаты, то просто редактируем с помощью блокнота "C:\Program Files\OpenVPN\sample-config\client.ovpn" и сохраняем конфигурационный файл в папку "C:\Program Files\OpenVPN\config".

client
dev tun
proto tcp-client
remote "myIP" 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\"имя клиента".crt" 
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\"имя клиента".key"
verb 3

Где "myIP" - это статический адрес нашего маршрутизатора или имя маршрутизатора через службу Динамического DNS. А "имя клиента" то же что и выше.

 

7. Собственно и всё.

Запускаем OpebVPN GUI нажимаем ПКМ на иконке и подключаемся.

post-19155-0-48617100-1491918171.png

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

Edited by kharlashkin
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Подключаем флешку/hdd к dd-wrt.

 

Небольшое отступление. Так как у меня уже есть отдельный постоянно включенный "домашний ПК", мне не понадобиться файлообменник, торрентокачалка, медиа-сервер на маршрутизаторе. Хотя несколько лет назад это всё у меня прекрасно работало, был подключен портативный 2,5" HDD объемом на 1 ТБ к usb и были установлены:

  • Transmission;
  • Samba;
  • Twonky;
  • OpenVPN.

Все это несколько лет прекрасно крутилось в круглосуточном бесшумном режиме. Конечно было заметно слабенький процессор - скорость закачки торрентов ≈ 2 МБ/сек, работа с сетевыми папками ≈ 6 МБ/сек. Затем был куплен большой стационарный ПК под телик, туда установлен HDD на 4 ТБ, а портативный HDD подарен.

 

Как вспомню как, что делалось - дополню темку. Сейчас появилась необходимость сделать свой web-интерфейс типо "вумного дома" и чтобы не городить дополнительно сервер с  Raspberry/Orange/Banana Pi пробую завести это все дело на маршрутизаторе ;)

 

Имеется флешка на 8 ГБ, её и будем использовать. Разметил я её в GParted под Ubuntu как два раздела Ext3, один на 1000 МиБ под /opt раздел - сюда будем устанавливать наши пакеты, второй всё что осталось как /mnt - сюда буду складывать, что там мне может понадобиться. Для Windows можно использовать её же как LiveCD.

 

Идем в интерфейс маршрутизатора и выставляем нужные галочки.

post-19155-0-19359100-1491978095_thumb.png

Подключаем флешку в порт устройства и перегружаем его. Проверить подключилась ли флешка придется из консоли, как выше генерировали ключи сертификаты. Проверяем что у нас включен доступ к маршрутизатору через Telnet-протокол, вкладка "Services - Services"

post-19155-0-37238800-1491978397_thumb.png

Включаем в Windows поддержку этого протокола. ПКМ на Пуск - Панель управления - Программы и компоненты - Клиент Telnet.

post-19155-0-74297600-1491978636_thumb.png

Запускаем консоль и вводим:

telnet 192.168.1.1

Маршрутизатор спросит у нас логин, и пароль - вводим что там выставлено при первоначальной настройке.

Проверяем подключилась ли наша флешка:

dmesg|grep lun

Ответ должен быть таким:

/dev/scsi/host0/bus0/target0/lun0: p1 p2

И теперь подключаем наши разделы на флешке как и было задумано, первый к /opt и второй к /mnt:

mount -o noatime /dev/discs/disc0/part1 /opt
mount -o noatime /dev/discs/disc0/part2 /mnt

Проверить правильно ли все смонтировалось можно командой "df".

Для подключения и отключения наших разделов нужно пройти на вкладку "Administration - Commands" и добавить команды в загрузочный скрипт и выключения:

post-19155-0-50803800-1491980798_thumb.png

 

Следующим этапом мы установим Python на наш маршрутизатор, поднимем простенький сайт на нем и подключим его к Arduino.

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

Следующим этапом мы установим Python на наш маршрутизатор, поднимем простенький сайт на нем и подключим его к Arduino.

 

На NAS поднимать простенький сайт надо, где относительно нормальная дисковая подсистема и процессор есть, а не на маршрутизаторах это делать.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

На NAS поднимать простенький сайт надо, где относительно нормальная дисковая подсистема и процессор есть, а не на маршрутизаторах это делать.

Под простеньким сайтом имелось ввиду внутренний домашний, в моем случае мониторинг воздуха дома.

Когда-то у меня дома стоял D-Link DNS-313 который тоже настраивал как и маршрутизатор и могу сказать что скорость работы с ним была на уровне Asus Wl-520GU. Если сейчас посмотреть на характеристики и цены NAS и маршрутизаторов - думаю не всё так однозначно будет - потому как цены на NAS начинаются от $100. Если выпускать наружу сайтик - то лучше уж что нибудь из "пирогов" или VPS за символическую плату.

 

 

подключим его к Arduino.

Тут у меня другая проблема - оказалось под dd-wrt нет драйвера для китайских Arduino с чипом ch340g.

Edited by kharlashkin
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

До утра сидел за ноутом, сегодня половину рабочего дня "гуглил" на работе - решил попробовать OpenWRT, так как в ней вроде есть нужный драйвер для китайских ардуин... Если чуть позже запал не пройдет - буду пробовать собрать драйвер для dd-wrt.


решил попробовать OpenWRT

 

Изначально боялся что придется всё делать в консоли, но оказалось есть неплохой веб-интерфейс. До этого только один раз устанавливал OpenWRT родителям дома из-за глючности заводской прошивки TP-Link, а других вариантов не было.

Подключил флешку, при чем делается проще чем в dd-wrt - практически всё через web.

Установил драйвер для китайской Arduino:

post-19155-0-17473700-1492076447_thumb.png

Поставил python, pip, flask, pyserial. вывел себе в браузер "Hello world!" - красота ;)

post-19155-0-47262900-1492032720_thumb.png

Edited by kharlashkin
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Прошил в свою Arduino Nano 3.0 (специально покупал под проект мониторинга воздуха) следующий скетч:

void setup() {
  Serial.begin(57600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  Serial.println("Led On");
  delay(1000);                     
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("Led Off"); 
  delay(1000);                     
}

То есть мигаем светодиодом и шлем сообщения. Подключил к маршрутизатору арудинку. Набросал проверочную программку:

import serial

ser = serial.Serial('/dev/ttyUSB0', 57600)

while True:
    line = ser.readline()
    print line

Скопировал её в папку на маршрутизаторе /mnt/test/ с помощью WinSCP. Что получилось:

post-19155-0-50787100-1492079581_thumb.png

Никаких перерезаний дорожек и т.п. не потребовалось (тьфу-тьфу, может в будущем нужно будет).

 

Кстати, у меня нормально так и не получилось подключаться к файловой системе маршрутизатора под Ubuntu. Так что я скачал портативную версию WinSCP распаковал в папку домашнего каталога и тупо запускаю её - через Wine все работает.


Появилась мысль удаленного железного контроля Arduino. Заливка прошивки, монитор порта и т.д. и т.п. Сказано, сделано - нашелся проект Platformio, и был успешно установлен на маршрутизатор. Пока глубоко не копал и не совсем представляю что с ним делать - но команда

platformio serialports monitor -b 57600

грузит процессор почти на 40% но выдает то же что и выше на скриншоте (python скрипт почти не грузит процессор, встроенные счетчики нагрузки в OpenWRT не фиксируют изменений). Для отладки скетчей самое то, прикрутить бы ещё форму заливки скетчей...

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites
Сказано, сделано - нашелся проект Platformio

 

Как всегда - "Весело!".

При попытке собрать и залить прошивку в адруинку вывалилась ошибка:

root@OpenWrt:/mnt/pio# platformio run --target upload
[Fri Apr 14 01:30:29 2017] Processing nanoatmega328 (platform: atmelavr, board: nanoatmega328, framework: arduino)
--------------------------------------------------------------------------------
PlatformManager: Installing atmelavr
Downloading  [####################################]  100%
Unpacking  [####################################]  100%          
atmelavr @ 1.4.5 has been successfully installed!
The platform 'atmelavr' has been successfully installed!
The rest of packages will be installed automatically depending on your build environment.
PackageManager: Installing toolchain-atmelavr @ ~1.40902.0
Error: Could not find a version that satisfies the requirement '~1.40902.0' for your system 'linux_mips'

Если я правильно понял, для того чтобы иметь возможность компилировать прошивку прямо на девайсе - нужно пересобрать Toolchain под Linux MIPS платформу.

Учитывая что инструмент этот хоть и может быть полезным в некоторых случаях, но несколько избыточен для того чтобы пару раз залить скетч. Так что решил пока отложить использование Platformio "на потом".

 

Может кто подскажет/поможет с реализацией Toolchain.

Edited by kharlashkin
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

Может кто подскажет/поможет с реализацией Toolchain.

А зачем? Компилировать можно и на своем компьютере (это быстрее, да и позволяет проверить код на ошибки), а использовать маршрутизатор только для программирования МК. Думаю, что скомпилировать AVRDUDE для MIPS легче, чем собрать avr-gcc.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

 

Думаю, что скомпилировать AVRDUDE для MIPS легче, чем собрать avr-gcc.

Тем более что avrdude уже есть в репозитории OpenWRT.

Share this post


Link to post

Short link
Share on other sites

“Не было бы счастья, да несчастье помогло”
Так вышло, что у родителей вышел из строя HDD, флешку мою, забытую у них в спутниковом тюнере, мне не привезли. Пришлось вытягивать из маршрутизатора и делать из неё загрузочную - чтобы установить ОС на новый HDD, соответственно первоначальную настройку делать сначала. Таким образом появилась эта инструкция.
1. Подготовка носителя в GParted.
Открываем программу и выбираем нашу флешку:

post-19155-0-40265000-1492423592_thumb.png

Отмонтируем нашу флешку от ОС, ПКМ - Отмонтировать:

post-19155-0-20749100-1492424011_thumb.png

Удаляем все что есть на ней, клавиша "delete" или ПКМ - Удалить:

post-19155-0-62853800-1492424183_thumb.png

Я решил, что под установочные пакеты отдам 1000 МиБ, под swap раздел 256 МиБ, остальное под мои файлы.

Создаем разделы на флешке как мы задумали: , клавиша "insert" или ПКМ - Новый, для разделов под программы и мои файлы выбираем файловую систему "Ext3", под раздел подкачки "linux-swap":

post-19155-0-81924500-1492424526_thumb.png

Применяем нужные нам изменения:

post-19155-0-87474800-1492424641_thumb.png

Соглашаемся с применением изменений, ждём окончания операций.

post-19155-0-59278000-1492424741_thumb.png

Закрываем GParted и вытягиваем флешку из ПК.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

2. Подключаем накопитель к OpenWRT.

Идем на веб страничку установки пакетов:

post-19155-0-21811300-1492513958_thumb.png

Обновляем список доступных пакетов, кнопка Update list:

post-19155-0-32199000-1492515198_thumb.png

Устанавливаем пакеты - kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-storage block-mount нажимаем и перегружаемся System  - Reboot - Perform reboot

post-19155-0-60117800-1492514275_thumb.png

Заходим в настройки точек монтирования System - Mount points и видим нашу флешку, ставим галочку напротив нашего раздела для установки пакетов и жмем кнопку Edit:

post-19155-0-25783600-1492514823_thumb.png

Ставим галочку подключать диск, UUID оставляем тот же:

post-19155-0-93725700-1492515005_thumb.png

Переходим на вкладку Advanced Settings и выбираем нашу файловую систему из выпадающего меню:

post-19155-0-66958700-1492515115_thumb.png

Перегружаемся, после перезагрузки все наши настройки сбросятся, но мы увидим что наш раздел для установки стал намного больше:

post-19155-0-65433300-1492515400_thumb.png

Опять устанавливаем нужные пакеты kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb-storage block-mount, и подключаем теперь уже swap раздел и домашний каталог по аналогии.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
AVRDUDE для MIPS

Чего-то не взлетело у меня, а информации в интернете маловато.

При проверке скетча в Arduino IDE, компилируется прошивка в нескольких вариантах, находятся в папке /tmp/arduino_build_XXXXXX/:

  • blink_serial.ino.elf
  • blink_serial.ino.hex
  • blink_serial.ino.with_bootloader.hex

Пробовал с первым и вторым файлом следующие манипуляции - копирую на маршрутизатор в папку, устанавливаю avrdude, пробу. прошить следующими командами с выводом:

root@OpenWrt:/kharlashkin/tmp# avrdude -p m328p -P /dev/ttyUSB0 -c avrispmkII -U
 flash:w:blink_serial.ino.elf
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
^C
root@OpenWrt:/kharlashkin/tmp# avrdude -p m328p -P /dev/ttyUSB0 -c avrispmkII -U
 flash:w:blink_serial.ino.hex
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
^C
root@OpenWrt:/kharlashkin/tmp# avrdude -p m328p -P /dev/ttyUSB0 -c arduino -U fl
ash:w:blink_serial.ino.hex
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
^C
root@OpenWrt:/kharlashkin/tmp# avrdude -p m328p -P /dev/ttyUSB0 -c arduino -U fl
ash:w:blink_serial.ino.elf
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
^C

Нашел инструкцию по заливке с помощью picocom, нужно будет попробовать.

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

 

 

blink_serial.ino.elf

Здесь помимо машинного кода находится отладочная информация.

 

 

blink_serial.ino.hex

Сам машинный код.

 

 

blink_serial.ino.with_bootloader.hex

Код и... бутлоадер?

 

@kharlashkin, мне нагуглилась такая статья. Если коротко - нужно выставить baudrate с помощью ключа -b. 


==================

 

Ха-ха, отмена операции. avrdude может использовать Arduino как программатор, но не может использовать Arduino, чтобы запрограммировать саму себя.

 

В Arduino есть собственный бутлоадер, который позволяет загружать программы по UART. Так что да, нужно воспользоваться picocom'ом.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

 

Есть сподвижки, сейчас вот так:

root@OpenWrt:/kharlashkin/tmp# avrdude -pm328p -carduino -P/dev/ttyUSB0 -b57600 
-Uflash:w:/kharlashkin/tmp/blink_serial.ino.hex:r

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/kharlashkin/tmp/blink_serial.ino.hex"
avrdude: writing flash (5618 bytes):

Writing | ################################################## | 100% 1.81s

avrdude: 5618 bytes of flash written
avrdude: verifying flash memory against /kharlashkin/tmp/blink_serial.ino.hex:
avrdude: load data flash data from input file /kharlashkin/tmp/blink_serial.ino.hex:
avrdude: input file /kharlashkin/tmp/blink_serial.ino.hex contains 5618 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 1.41s

avrdude: verifying ...
avrdude: 5618 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

Но прошивка не происходит, адруинка молчит потом как убитая. В порт ничего не шлет.

Заработало!

root@OpenWrt:/kharlashkin/tmp# avrdude -p m328p -P /dev/ttyUSB0 -b 57600 -c ardu
ino -U flash:w:blink_serial.ino.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "blink_serial.ino.hex"
avrdude: input file blink_serial.ino.hex auto detected as Intel Hex
avrdude: writing flash (1990 bytes):

Writing | ################################################## | 100% 0.66s

avrdude: 1990 bytes of flash written
avrdude: verifying flash memory against blink_serial.ino.hex:
avrdude: load data flash data from input file blink_serial.ino.hex:
avrdude: input file blink_serial.ino.hex auto detected as Intel Hex
avrdude: input file blink_serial.ino.hex contains 1990 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.52s

avrdude: verifying ...
avrdude: 1990 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

root@OpenWrt:/kharlashkin/tmp# python test.py 
Led Up!

Led Down!

Led Up!

Led Down!

Теперь под Flask страничку загрузки прошивок буду делать.

Edited by kharlashkin

Share this post


Link to post

Short link
Share on other sites

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

Как-то статья мимо меня прошла - "Умный обход блокировок в Украине". Ну и ссылка на репозиторий.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Прошла гроза, сгорел мой добрый Asus RT-N16. Вот взял во временное пользование у знакомого железку попользоваться, теперь есть некоторое время ломать голову покупкой нового маршрутизатора. Денег много как то вообще не готов отдавать, потому как гроза за собой потянула и стационарный комп (пока масштаб бедствий не известен).

Что нужно - usb, пара внутренних портов и наверное AC. Разумеется чтобы работало это все под OpenWRT. Вот смотрю в сторону Xiaomi Mini, кто что думает?

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Ну хоть один человек (кроме меня) одобрил мой выбор - плюсик поставил. Заказал я себе Xiaomi MiWiFi Mini, при чем оаказалось что дешевле и быстрее заказать себе этот маршрутизатор по месту, в Украине. На AliExpress цена около 718 грн с бесплатной доставкой, в интернет-магазине ROZETKA я покупал во вторник за 609 грн +35 грн доставка (сейчас ещё подешевел до 599 грн.). Вчера днем его забрал, вечером настроил на китайской стоковой прошивке и больше суток все нормально работало до сегодняшнего вечера.

Сегодня же руки зачесались, и решил попробовать установить на него ту прошивку для которого эта железка и покупалась - OpenWrt. Всё встало/заработало без проблем и считаю своим долгом поделиться опытом.

Первым делом сходил на страничку с описанием маршрутизатора на OpenWrt и увидел способ прошивки без плясок с бубном, регистрации и смс.

Вчера я обновлял прошивку на последнюю от производителя, и при попытке получить telnet доступ я не получил правильное сообщение об ошибки из описания:

{"msg":"未能連線到指定Wi-Fi(Probe timeout)","code":1616} 

Был ответ на китайском с кодом 1617 ;)

Первым делом я откатился в ручном режиме на стоковую прошивку с версией 2.1.6, хотя маршрутизатор после перезагрузки ругался что последняя версия доступная 2.15.78:

post-19155-0-81682900-1500151086_thumb.png

Далее в соседней вкладке вводим в адресную строку:

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap?
ssid=whatever&encryption=NONE&enctype=NONE&channel=1%3B%2Fusr%2Fsbin%2Ftelnetd

Где <STOK> это цифробуквенный код с обычного web-интерфеса, мой видно на скриншоте.

Получаю правильную ошибку, и ввожу следующий запрос:

http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqsystem/set_name_password?oldPwd=<CURRENTPASS>&newPwd=<NEWPASS>

Где <CURRENTPASS> это установленный на этапе настройки пароль доступа к вебморде (кстати в родной прошивке он ключ к Wi-Fi) и <NEWPASS>, соответственно новый пароль. Открываем консольку и телнетом перешиваем, последовательно вводя несколько команд - загрузка прошивки OpenWrt, проверка расположения MTD и собственно прошивка. Ниже привожу просто копипаст из терминала.

kharlashkin@asus-K56CB:~$ telnet 192.168.31.1
Trying 192.168.31.1...
Connected to 192.168.31.1.
Escape character is '^]'.
XiaoQiang login: root
Password: 


BusyBox v1.19.4 (2015-03-20 10:08:59 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

 -----------------------------------------------------
        Welcome to XiaoQiang!
 -----------------------------------------------------
root@XiaoQiang:~# cd /tmp; wget http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin
--2017-07-16 03:36:31--  http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin
Resolving downloads.openwrt.org... 78.24.191.177
Connecting to downloads.openwrt.org|78.24.191.177|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3670020 (3.5M) [application/octet-stream]
Saving to: 'openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin'

100%[======================================>] 3,670,020   2.61M/s   in 1.3s    

2017-07-16 03:36:33 (2.61 MB/s) - 'openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin' saved [3670020/3670020]

root@XiaoQiang:/tmp# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00c80000 00010000 "OS1"
mtd5: 00b21c3e 00010000 "rootfs"
mtd6: 00200000 00010000 "OS2"
mtd7: 00100000 00010000 "overlay"
mtd8: 00010000 00010000 "crash"
mtd9: 00010000 00010000 "reserved"
mtd10: 00010000 00010000 "Bdata"
root@XiaoQiang:/tmp# mtd -r write openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mi
ni-squashfs-sysupgrade.bin OS1
Unlocking OS1 ...

Writing from openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin to OS1 ...     
Rebooting ...

После перезагрузки увидя активное сетевое подключения и посмотрев адрес полученный от dhcp - 192.168.1.115 я возликовал, а зайдя в веб-интерфейс и увидев OpenWrt - вдвойне ;)

Edited by kharlashkin
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Должен сообщить, что OpenWrt лучше родной прошивки. Приведу пример.

Выше отписывал, что гроза потянула за собой стационарный ПК, который у меня как HTPC работает. Выгорел сетевой порт, и отвалились часть usb-портов. Во временное пользование был выпрошен у знакомого Wi-Fi usb-свисток. Так вот с родной прошивкой от Xiaomi наблюдалось периодическое отваливание беспроводной сети, помогало только физическое передергивание модуля. Изначально грешил именно на беспроводной модуль - так как мне сразу говорили что он очень глючный и пришлось повозиться с драйверами (в комплекте не было, в интернете тоже не сразу нашлись). После перепрошивки маршрутизатора, отваливаний не наблюдаю пока от слова "вообще".

Edited by kharlashkin
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...