diff --git a/images/camera-connector-colorcode.jpg b/images/camera-connector-colorcode.jpg new file mode 100644 index 0000000..7b75a44 Binary files /dev/null and b/images/camera-connector-colorcode.jpg differ diff --git a/images/camera-uart.jpg b/images/camera-uart.jpg new file mode 100644 index 0000000..07cf853 Binary files /dev/null and b/images/camera-uart.jpg differ diff --git a/images/soc-hisilicon.jpg b/images/soc-hisilicon.jpg new file mode 100644 index 0000000..bcab575 Binary files /dev/null and b/images/soc-hisilicon.jpg differ diff --git a/ru/discussion.md b/ru/discussion.md index 30e611a..78aa5c4 100644 --- a/ru/discussion.md +++ b/ru/discussion.md @@ -1,81 +1,106 @@ -![OpenIPC logo](https://cdn.themactep.com/images/logo_openipc.png "OpenIPC logo") +![OpenIPC logo][logo] -# Заметки от Игоря Залатова +Заметки от Игоря Залатова +========================= - - -## Вопросы и ответы, коротко о главном +Вопросы и ответы, коротко о главном +----------------------------------- ### Majestic -* Можно-ли вывести данные для настройки автофокуса линз вместо текущего sample_af в стандартный /metrics ? + +* Можно-ли вывести данные для настройки автофокуса линз вместо текущего + sample_af в стандартный /metrics ? * Нет, это отдельный тяжелый алгоритм, его нет смысла запускать просто так. +Сбор предложений по оформлению репозиториев проекта +--------------------------------------------------- -## Сбор предложений по оформлению репозиториев проекта +### Предложения от @themactep -### Предложения от @themactep -* Убрать из README файлов исходников ссылки на динамические графические элементы (бейджи). -* Оформить маркдаун разметку файлов для чтения в терминале при ширине поля не более 80 символов. +* Убрать из README файлов исходников ссылки на динамические графические + элементы (бейджи). +* Оформить маркдаун разметку файлов для чтения в терминале при ширине поля + не более 80 символов. * Бейджи использовать на индивидуальных страницах проектов в вики. ### Предложения из чатов в Telegram -* Переименовать проект microbe-web в более короткое и схожее по смыслу, например amoeba + +* Переименовать проект microbe-web в более короткое и схожее по смыслу, + например amoeba. - -## Разработка нового Microbe Web UI +Разработка нового Microbe Web UI +-------------------------------- ### Цели -* Снизить порог вхождения в проект OpenIPC для тех, кто мало разбирается в SSH и UART консолях + +* Снизить порог вхождения в проект OpenIPC для тех, кто мало разбирается + в SSH и UART консолях. * Предоставить доступ к устройству с любого браузера, включающего мобильные. ### Безопасность -* Сделать постоянно висящее сообщение о необходимости смены дефолтного пароля -* Разделить уровни доступа для пользователей admin (настройка сети, даты, и обновление стабильного релиза) и root (пролный доступ с массой диагностики) + +* Сделать постоянно висящее сообщение о необходимости смены дефолтного пароля. +* Разделить уровни доступа для пользователей admin (настройка сети, даты, и + обновление стабильного релиза) и root (пролный доступ с массой диагностики). - -## Фичи +Фичи +---- ### Сброс конфигурации на заводские настройки -* Способы и варианты сброса ? + +* Способы и варианты сброса? ### Поступили предложения -* Создание конструкторов пошивок подобных [wifi-iot](https://wifi-iot.com) и [tasmocompiler](https://github.com/benzino77/tasmocompiler) -* Создание публичных FTP/TFTP/NFS серверов для тестовых сборок компонентов прошивки + +* Создание конструкторов прошивок подобных [wifi-iot](https://wifi-iot.com/) и + [tasmocompiler](https://github.com/benzino77/tasmocompiler). +* Создание публичных FTP/TFTP/NFS серверов для тестовых сборок компонентов + прошивки. +Программный переход с openipc-1.0 (OpenWrt) на openipc-2.1 (Buildroot) 👻 +------------------------------------------------------------------------- -## Программный переход с openipc-1.0 (OpenWrt) на openipc-2.1 (Buildroot) 👻 +Заходим на устройство со старым openipc-1.0 и останавливаем любыми способами +максимум сервисов кроме dropbear. Те сервисы которые "оживают" повторно +останавливаем по примеру snmp. -Заходим на устройство со старым openipc-1.0 и останавливаем любыми способами максимум сервисов кроме dropbear. -Те сервисы которые "оживают" повторно останавливаем по примеру snmp. `/etc/init.d/snmpd stop; /etc/init.d/snmpd disable` -Меняем при помощи команды **fw_setenv** переменную **bootargs**, добавляя туда в свою очередь переменную **init=/init**. -Для моей платы строка выглядит вот так, но у вас она может быть другой. +Меняем при помощи команды `fw_setenv` переменную `bootargs`, добавляя туда в +свою очередь переменную `init=/init`. Для моей платы строка выглядит вот так, +но у вас она может быть другой: + `fw_setenv bootargs 'console=ttyAMA 0,115200 root=/dev/mtdblock3 init=/init rootfstype=squashfs,jffs2 panic=20 mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'` -Добавляем новую переменную soc при помощи команды **fw_setenv** указав свой процессор +Добавляем новую переменную soc при помощи команды `fw_setenv` указав свой +процессор: + `fw_setenv soc hi3516ev100` -Прошиваем командой flashcp файловую систему, которую предварительно скачали с GitHub аккаунта OpenIPC. -В моём случае это раздел /dev/mtd3 но могут быть отличия на каких-то старых железках +Прошиваем командой `flashcp` файловую систему, которую предварительно скачали +с GitHub аккаунта OpenIPC. В моём случае это раздел `/dev/mtd3`, но могут быть +отличия на каких-то старых железках: + `flashcp -v rootfs.squashfs.hi3516ev100 /dev/mtd3` -Делаем жесткий ребут плате командой +Делаем жесткий ребут плате: + `reboot -f` -Загружается **недо**-openipc-2.1 с получением адреса по DHCP. -После этого выполняем команду для глобального и красивого обновления. +Загружается **недо**-openipc-2.1 с получением адреса по DHCP. После этого +выполняем команду для глобального и красивого обновления: + `sysupgrade -k -r -n` -Профит ! +Профит! - -## Ростелекомовская камера с NAND +Ростелекомовская камера с NAND +------------------------------ ``` setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hinand:512k(boot),512k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)' @@ -97,14 +122,15 @@ nand erase 0x800000 0x7800000 run uk; run ur; reset ``` +Adapting syslogd to work with time zones other than GMT +------------------------------------------------------- - -## Adapting syslogd to work with time zones other than GMT - -Some syslog() implementations like musl's[1] always send timestamps in UTC. -This change adds a new option to syslogd, -Z, to assume incoming timestamps +Some `syslog()` implementations like musl's[1] always send timestamps in UTC. +This change adds a new option to `syslogd`, `-Z`, to assume incoming timestamps are always UTC and adjust them to the local timezone (of the syslogd) before logging. [sysklogd: add -Z option to adjust message timezones](http://lists.busybox.net/pipermail/busybox/2017-May/085437.html) + +[logo]: https://cdn.themactep.com/images/logo_openipc.png diff --git a/ru/index.md b/ru/index.md index 7aaf212..7c174b4 100644 --- a/ru/index.md +++ b/ru/index.md @@ -1,11 +1,158 @@ -![OpenIPC logo](https://cdn.themactep.com/images/logo_openipc.png "OpenIPC logo") +![OpenIPC logo][logo] # Русская версия -## Ресурсы для переработки и интеграции +## Прошивка OpenIPC -- что это? -* [https://github.com/OpenIPC/camerasrnd/blob/master/docs/FAQ-ru.md](https://github.com/OpenIPC/camerasrnd/blob/master/docs/FAQ-ru.md) +Прошивка OpenIPC (OpenIPC firmware) -- это коллективный труд многих +программистов с целью создания отрытого стека для работы на IP камерах. -* [Заметки от Игоря Залатова](https://github.com/OpenIPC/wiki/blob/master/ru/discussion.md) +## Хочу попробовать. Что для этого требуется? +### IP камера. + +Естественно, вам понадобится IP камера. Если вы еще не приобрели камеру, +изучите, на какие именно параметры необходимо обратить внимание перед +покупкой. Если у вас есть сомнения в правильности выбора, попросите помощи у +разработчиков в Telegram-канале. + +Убедитесь, что ваша IP камера снабжена процессором, поддерживаемым прошивкой +OpenIPC. [Список таких процессоров][socs] пока ограничен, но быстро расширяется. + +Самым надежным способом определения типа процессора является частичный разброр +корпуса. Для большинства камер это довольно простая и безболезненная операция: +пара винтов здесь, пара защелок там, и вы получаете доступ к электронике. + +Процессор IP камеры (System on a chip, или SoC) -- это, как правило, крупный чип +на обратной стороне от объектива. Лазерная гравировка на поверхности чипа +подскажет вам, с каким именно процессором вы имеете дело. + +Сделайте фотографии всех плат, компонентов, маркировок и наклеек. Они еще не +раз понадобятся вам для идентификации устройств без последующего разбора камеры. + +Аккуратно снимите объектив (он держится на двух винтах) и сделайте фото матрицы. +Одни и те же процессоры могут комплектоваться разными типами матриц, каждая из +них требует собственного кофигурационного файла. + +Сделайте фотографии разъемов, чтобы не перепутать подключения, если вам +понадобится их разъединить, например для удобного доступа к матрице. _Маленькая +хитрость: сделайте маркировку на обеих частях разъема цветным фломастером для +пластика, так вы точно будете знать, какой штекер от какого разъема._ + +![](../images/camera-connector-colorcode.jpg) + +### Знание Linux. + +Необходимым условием для установки на вашу IP камеру прошивки OpenIPC является +ваше умение работать в среде Linux. Прошивка OpenIPC построена на базе Linux. +И хотя мы стремимся сделать нашу прошивку максимально простой и понятной обычному +пользователю, проект находится в ранней стадии разработки. А это значит, что +каждый день мы вносим изменения в код, и некоторые из них требуют ручного +вмешательства на уровне системы. + +### Паяльник и умение с ним работать. + +Самый простой способ получения доступа к загрузчику и операционной системе +камеры -- подключение к её порту UART. Это довольно простая процедура, +требующая недорогого [адаптера][g-usbttl] для серийного подключения с порта USB вашего +компьютера. + +Большинство камер идут с нераспаянным, а зачастую и немаркированным портом +UART. Как правило, это группа из трех, реже четырех контактных площадок, +расположенных на самом краю платы. + +![](../images/camera-uart.jpg) + +Вам нужно будет самостоятельно определить порт на плате, выяснить его +распиновку, и либо распаять на него коннектор, либо припаять провода напрямую +к контактам порта. Так же можно использовать прищепку с пружинными щупами для +подключения адаптера к камере. В любом случае, соединение должно быть надежным, +иначе пропадание контакта во время записи/чтения может обернуться искажением +передаваемых данных, что в свою очередь может обернуться порчей содержимого +флэш-памяти и вывести камеру из строя. И тогда вам потребуется программатор +микросхем и паяльная станция. + +**Прежде чем подключать адартер к камере, убедитесь, что переключатель уровня +рабочего напряжения на адартере установлен в 3.3 вольта!** Иногда для этого +достаточно выставить положение джампера, иногда надо перепаять ключ на +контактной площадке. Некоторые адартеры работают только с напряжением 5 вольт. +В этом случае вам понадобится дополнительный [конвертер][g-3.3ttl] уровня сигналов TTL, +включенный между адартером и портом UART камеры. + +Один из нужных вам контактов порта UART -- GND. Его легко определить, проверив +мультиметром неразрывность цепи на любой другой известный контакт GND. Нашли? +Тогда остаётся найти ещё два контакта -- RX и TX, они используются для +получения и передачи данных, соответственно. Соедините GND камеры с контактом +GND адаптера, подключите USB разъём адаптера к порту USB вашего компьютера, +запустите на компьютере программу подключения к серийному порту и установите +соединение с адаптером. Используйте скорость подключения 115200 bps. После +этого соедините контакт RX адаптера с предполагаемым контактом TX порта UART. +Подайте питание на камеру. Если вы угадали правильно, на экране появится лог +загрузки. Если же экран остался чистым -- повторите процедуру с другим +свободным контактом UART. После того, как вы определили порт RX, подключите +порт TX адаптера к оставшемуся свободному контакту порта UART. Попробуйте +прервать загрузку камеры нажатием комбинации клавиш на клавиатуре компьютера. +Если все получилось -- поздравляем, вы получили доступ к камере. + +Четвертым контактом порта UART может быть VCC. Он используется для подачи +напряжения во время прошивки камеры на заводе. Мы настоятельно советуем +__не подключать питание камеры через VCC порт UART__, а использовать для +этого штатный разъем питания. + +В критических ситуациях хорошим подспорьем будет умение работать с паяльником +и программатором микросхем. Паяльная станция также может пригодиться вам для +замены некоторых компонентов с целью достижения лучшей совместимостью камеры +с нашей прошивкой: например для замены модуля WiFi или микросхемы флэш-памяти. + +### TFTP сервер. + +Мы советуем вам настроить в своей сети сервер TFTP. Его удобно использовать для +загрузки в камеру файлов новой прошивки, для сохранения дампа оригинальной, +поставляемой вместе с камерой, прошивки, а так же для хранения самописанных +часто используемых скриптов -- таким образом вы сможете быстро восстановить +привычную рабочую среду после очередной перепрошивки с очисткой системы. + +**Обязательно сохраните оригинальную прошивку!** Она позволит вам вернуть +камеру в исходное состояние, если вас что-то не устроит в прошивке OpenIPC. +Вы так же сможете использовать её для сравнительных тестов, если решите принять +участие в разработке нашей прошивки. + +### Любопытство, кураж и терпение. + +Следует понимать, что на нынешней стадии разработки прошивка OpenIPC -- это ещё +не готовый продукт, а R&D, НИОКР. Как правило, производители камер не раскрывают +свои секреты, не дают пароли для доступа к штатным прошивкам, даже не делятся +документацией со сторонними разработчиками. Поэтому мы экспериментируем, пробуем +разные подходы, изучаем и анализируем накопленные знания. Это даёт свои плоды, +но так же иногда приводит к сбоям. Если что-то хорошо и стабильно работает +сегодня вечером, то оно может быть сломано завтра утром, и снова починено к +следующему вечеру. + +Устанавливая прошивку OpenIPC сегодня, вы должны отдавать себе отчет, что это +путь к прекрасному открытому будущему, но мы не обещаем, что именно сейчас +дорога будет легкой. + +OpenIPC -- это увлекательный эксперимент, в котором вы можете принять участие. +Помогайте нам, и однажды OpenIPC станет самой стабильной, гибкой и открытой +прошивкой для всех IP камер. + + +## Что можно прочитать про прошивку OpenIPC? + +* [Часто задаваемые вопросы и ответы на них][faq1] +* [Заметки от Игоря Залатова][faq2] + + +## Установка прошивки OpenIPC. + +Итак, если вы всё ещё хотите попробовать прошивку OpenIPC на своей камере, +вам поможет [пошаговая инструкция](/ru/installation.md). + + +[logo]: https://cdn.themactep.com/images/logo_openipc.png +[socs]: https://github.com/OpenIPC/firmware/wiki/supported_devices +[faq1]: https://github.com/OpenIPC/camerasrnd/blob/master/docs/FAQ-ru.md +[faq2]: https://github.com/OpenIPC/wiki/blob/master/ru/discussion.md +[g-usbttl]: https://google.com/search?q=ftdi+usb+ttl +[g-3.3ttl]: https://google.com/search?q=logic+level+converter+3.3v+5v diff --git a/ru/installation.md b/ru/installation.md new file mode 100644 index 0000000..379ad35 --- /dev/null +++ b/ru/installation.md @@ -0,0 +1,51 @@ +![OpenIPC logo][logo] + +Установка OpenIPC. Шаг за шагом. +================================ + +### Шаг 1. Определите тип процессора. + +![SoC Marking](../images/soc-hisilicon.jpg) +_Пример маркировки процессора Hisilicon Hi3518EV100. Значимые символы обведены жёлтым._ + +### Шаг 2. Скачайте прошивку. + +Найдите свой тип процессора на странице и убедитесь, что для него есть готовая прошивка. +Если вам повезло, и такая прошивка существует -- скачайте её на свой компьютер. + +### Шаг 3. Установите и настройте сервер TFTP. + +TFTP расшифровывается как Trivial File Transer Protocol. Как следует уже из +названия, это очень простой протокол, предназначенный для передачи файлов по +компьютерной сети. TFTP не поддерживает аутентификацию. Его код настолько прост +и компактен, что TFTP клиенты используются в сетевых и встроенных системах для +получения загрузочных образов с сетевых серверов. + +#### Если на вашем компьютере Linux + +Если на вашем компьютере установлен Linux, то здесь всё просто. Скомилированный +и готовый к использованию пакет сервера TFTP уже лежит в репозитарии, и вам +только надо установить его и настроить: + +``` +sudo apt install tftpd-hpa +sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa +sudo systemctl restart tftpd-hpa.service +``` + +Теперь у вас есть свой TFTP сервер, который работает с файлами в директории +`/srv/tftp`. Разверните архив с прошивкой, скачаный в п.2 в эту директорию. + +``` +sudo tar -C /srv/tftp/ -xvf openipc.*.tgz +``` + + +_...to be continued._ + + +** ПРОВЕРИТЬ ВСЕ КОМАНДЫ НА ЖИВОЙ СИСТЕМЕ!*** + + + +[logo]: https://cdn.themactep.com/images/logo_openipc.png