Перейти к содержимому

Фото

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


  • Чтобы отвечать, сперва войдите на форум
13 ответов в теме

#1 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 10 Апрель 2017 - 19:00

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

 

Так сложилось, что уже довольно давно использую свой домашний 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. Прошивка маршрутизатора.

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

Прикрепленный файл  ddwrt_asus.png   241,93 Кб   0 раз скачано

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

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

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

 

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

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

Прикрепленный файл  openvpm_rsa.png   20,6 Кб   0 раз скачано

Запускаем консоль 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:

Прикрепленный файл  openvpn_start.png   36,57 Кб   0 раз скачано

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

  • 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 нажимаем ПКМ на иконке и подключаемся.

Прикрепленный файл  connect.png   8,14 Кб   0 раз скачано

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


Изменено: kharlashkin, 12 Апрель 2017 - 19:05

  • 3

#2 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 11 Апрель 2017 - 14:45

Подключаем флешку/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.

 

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

Прикрепленный файл  usb.png   26,79 Кб   0 раз скачано

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

Прикрепленный файл  telnet.png   10,47 Кб   0 раз скачано

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

Прикрепленный файл  telnetWin.png   16,68 Кб   0 раз скачано

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

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" и добавить команды в загрузочный скрипт и выключения:

Прикрепленный файл  usb_auto.png   22,98 Кб   0 раз скачано

 

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


Изменено: kharlashkin, 12 Апрель 2017 - 08:06

  • 0

#3 StranikS_Scan

StranikS_Scan

    Теоретик WorldOfTanks

  • Premium Member
  • 5 751 сообщений
  • WoT Server:RU (Русский)

Опубликовано 12 Апрель 2017 - 07:32

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

 

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


Изменено: StranikS_Scan, 12 Апрель 2017 - 07:32

  • 0

#4 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 12 Апрель 2017 - 08:34

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

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

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


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

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


Изменено: kharlashkin, 12 Апрель 2017 - 08:33

  • 1

#5 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 12 Апрель 2017 - 22:32

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


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

 

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

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

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

Прикрепленный файл  openwrt.png   94,21 Кб   0 раз скачано

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

Прикрепленный файл  flask_helloworld.png   141,36 Кб   0 раз скачано


Изменено: kharlashkin, 13 Апрель 2017 - 10:40

  • 1

#6 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 13 Апрель 2017 - 13:02

Прошил в свою 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. Что получилось:

Прикрепленный файл  wrt-serial.png   176,36 Кб   0 раз скачано

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

 

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


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

platformio serialports monitor -b 57600

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


Изменено: kharlashkin, 13 Апрель 2017 - 11:42

  • 0

#7 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 14 Апрель 2017 - 06:36

Сказано, сделано - нашелся проект 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.


Изменено: kharlashkin, 14 Апрель 2017 - 06:42

  • 1

#8 Azbuka

Azbuka
  • Пользователь
  • 968 сообщений

Опубликовано 14 Апрель 2017 - 10:36

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

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


  • 1

#9 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 14 Апрель 2017 - 10:51

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

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


  • 0

#10 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 17 Апрель 2017 - 11:37

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

Прикрепленный файл  gparted_start.png   46,85 Кб   0 раз скачано

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

Прикрепленный файл  gparted_unmount.png   76,2 Кб   0 раз скачано

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

Прикрепленный файл  gparted_delete.png   71,73 Кб   0 раз скачано

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

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

Прикрепленный файл  gparted_disk.png   41,25 Кб   0 раз скачано

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

Прикрепленный файл  gparted_create.png   79,83 Кб   0 раз скачано

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

Прикрепленный файл  gparted_end.png   34,45 Кб   0 раз скачано

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


  • 1

#11 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 18 Апрель 2017 - 12:40

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

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

Прикрепленный файл  start.png   106,16 Кб   0 раз скачано

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

Прикрепленный файл  software_update_list.png   77,52 Кб   0 раз скачано

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

Прикрепленный файл  install_sowftware.png   102,88 Кб   0 раз скачано

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

Прикрепленный файл  mount_points.png   127,47 Кб   0 раз скачано

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

Прикрепленный файл  overlay.png   103,35 Кб   0 раз скачано

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

Прикрепленный файл  overlay_advanced.png   187,76 Кб   0 раз скачано

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

Прикрепленный файл  software_1000.png   169,02 Кб   0 раз скачано

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


  • 1

#12 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 20 Апрель 2017 - 13:02

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, нужно будет попробовать.


Изменено: kharlashkin, 20 Апрель 2017 - 07:06

  • 0

#13 Azbuka

Azbuka
  • Пользователь
  • 968 сообщений

Опубликовано 20 Апрель 2017 - 17:00

blink_serial.ino.elf

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

blink_serial.ino.hex

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

blink_serial.ino.with_bootloader.hex

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

 

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

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

 

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

 

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


  • 1

#14 kharlashkin

kharlashkin
  • Пользователь
  • 750 сообщений
  • Nick:kharlashkin
  • Город: Северодонецк

Опубликовано 20 Апрель 2017 - 19:22

 

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

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

Заработало!

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 страничку загрузки прошивок буду делать.


Изменено: kharlashkin, 20 Апрель 2017 - 19:30

  • 0





0 пользователей читают эту тему

0 зарегистрированных, 0 гостей, 0 невидимых

© Mr 13