Как было написано программное обеспечение для IP-камер «Рувер»?
12 октября 2025 - 7 дней тому назад
Сб-Арсенал: друзья, эта статья была написана и размещена на Хабре нашими коллегами от лица разработчика. Мы представляем полный текст статьи для читателей нашего блога.
Русский софт: не роскошь, а необходимость?
Сразу поясню: отечественное ПО на отечественном железе - это не патриотическое желание встать в очередь на импортозамещение, а насущная необходимость. Когда вы сами разрабатываете платы и модули, некоторые аутсорсинговые или партнерские решения подходят все меньше и меньше, вплоть до неработоспособности.
Опять же, повторяя тезисы из прошлой статьи о корпусах - если вы продаете массовый продукт, то программного обеспечения для него предостаточно, начиная от локализации китайского ПО под конкретный видеомодуль, адаптации свободного ПО и заканчивая аутсорсинговыми прошивками, написанными сторонней командой. Кроме того, практически любой OEM-производитель любезно добавит в свою прошивку березки и кокошники в любых количествах и назовет ее "Кострома" или "Финист". Но если продукт уникален и имеет множество опций - все это не сработает. Причин тому несколько:
Необходимость постоянной синхронизации аппаратного и программного обеспечения, даже при небольших изменениях в том или ином все перестает работать как надо;
Негибкость и закрытость готовых решений, они подходят для широкого спектра популярных видеомодулей, но не предполагают возможности серьезных изменений под свои нужды;
Низкое качество решений в программном обеспечении, которое можно заказать у китайских или даже отечественных аутсорсеров для своего оборудования - низкая надежность, проблемы с текучкой и низкое время работы как лишь малая часть проблем в оборудовании, которое по определению должно быть беспроблемным. Сторонние разработчики не вникают в суть вопроса.
Поэтому мысли о программном обеспечении «Рувер» появились практически сразу после того, как мы с коллегами сделали нашу первую плату (кстати, это была плата RoE).
Откуда взялась прошивка RUS?
На побережье, почти 5 лет назад, создание собственной прошивки казалось чем-то простым: берешь SDK от производителя процессора, накатываешь какое-нибудь легкое ядро linux, прикручиваешь простенькую веб-морду, дружишь со всем этим - и вуаля. Точнее даже так - сначала мы взяли исходники уже работающей прошивки у китайцев и попытались быстро ее адаптировать.
Для реализации этого проекта был нанят программист из Москвы. Через полгода, когда он так и не разобрался, что к чему, стало понятно, что для одного человека эта задача просто нереальна. В сборках перекомпилированных прошивок постоянно что-то отваливалось, происходили сбои, а китайцы, в свою очередь, с лицом ехидной лягушки разводили руками и говорили, что у них все работает, проблема на стороне laovai.
К тому времени в офисе уже собирался полноценный, но все еще небольшой отдел разработки, частично на аутсорсе, частично из местных разработчиков. Все без исключения программисты имели большой опыт во всем, кроме создания ПО для IP-камер. Это, кстати, одна из ключевых проблем для нас на российском рынке ИТ-кадров: веб-программистов любого уровня много, специалистов по мобильной разработке, разработке игр, финтеху хватает. А вот разработчиков встраиваемых систем, способных писать программное обеспечение даже для популярных SoC, не найти ни за какие деньги - их просто нет. Поэтому нам пришлось растить (и до сих пор приходится) собственный штат.
Начали мы с SoC от Hisilicon - у них есть хороший, функциональный SDK, но с огромным количеством унаследованного кода на Си, костылей, просто непонятных или устаревших решений. Разумеется, вся документация была на китайском языке, что не добавляло легкости в освоении.
В какой-то момент более опытные аутсорсеры решили уйти от нас - проект оказался для них слишком сложным и оторванным от реальности ради непонятной прибыли. И дело здесь вовсе не в оплате, а даже наоборот: привыкнув работать за хорошие деньги в условиях обилия проектов, человек по понятным причинам не захочет возиться с тем, что для него сложно, да еще и ради целей, которые он не разделяет. С другой стороны, команда разработчиков из Краснодара оказалась ближе к производству, к земле, к заразительному энтузиазму директора - почти все они до сих пор работают в компании. Поэтому, прежде чем покорять Эверест, убедитесь, что ваша команда состоит из тех людей, которые хотят достичь вершины, а не просто умеют забираться на пять с плюсом.
Оставшись у разбитого корыта, но получив реальный опыт в этом деле, было решено написать прошивку заново, теперь уже на C++, и с самого начала придерживаясь полноценной архитектуры - предыдущая прошивка работала на костыльно-велосипедной тяге просто чудом.
Как родился Nexus?
Конечно, останавливаться на этом названии не планировалось, да и вообще вопрос с названиями был не особо важен. Были IP-камеры 360+1 от НИЦ "Технологии", а прошивка, как само собой разумеющееся, никак не называлась. Nexus называлась ядром, но какой-то менеджер случайно услышал это и решил, что было бы круто назвать саму прошивку и продавать ее как killer-feature в наших камерах - отечественные камеры с отечественным софтом! Хотя, на самом деле, если не считать некоторых инструментов, все это время оно было отечественным, но никому до этого не было дела. До санкций с импортозамещением электроники было еще некоторое время, поэтому отечественное происхождение не приносило никаких выгод, кроме излишне навязчивого внимания государственных органов.
Вскоре ядро начало обрастать необходимым функционалом, и до определенного момента все шло хорошо. Камеры работали вместе с собственным кодом, и туда быстро добавили чипы. В 2021 году Nexus прошел добровольную сертификацию и был включен в реестр Министерства цифровых технологий (№12466 от 30.12.2021), а также прошел проверку НДВ в восьмом управлении ФСБ - это необходимо, если вам нужно поставить камеру на режимный объект. Насколько мне известно, ПО от НИЦ "Технология" - единственное российское ПО для видеонаблюдения с сертификатом НДВ ФСБ (до известных событий такой сертификат был у Samsung, Siemens и Bosch). Сама эта процедура - отдельная статья, вкратце можно сказать, что если софт написан не вами, или вы его написали, но давно завалили костылями - пройти проверку вы не сможете, вас буквально заставят отчитываться за каждую строчку, невероятно утомительная процедура, да еще и долгая. Плюс ко всему, сертификат получает только та версия, которая исследовалась в ФСБ - если вы решите накатить обновление по воздуху, то камера потеряет все сертификаты.
И вроде бы все хорошо, сиди себе и радуйся, разрабатывай прошивку, добавляй функционал - но нет, добавление функционала в итоге стало проблемой. Изначально при разработке ядра прошивки была одна цель - сделать так, чтобы все работало, не было видения конечного продукта. Поэтому я столкнулся со стандартной проблемой масштабирования - то, что сначала работало хорошо, начинало работать нестабильно по мере добавления новых функций, или падало у клиентов, а потом исправлялось прямо на лету. Но сдаваться было нельзя - эти функции уже продавались!
На этом этапе было решено создать специальный отдел тестирования аппаратного и программного обеспечения. Конечно, тестирование было и до этого, но все тестировалось с учетом опыта тестирования веб-приложений, а тест-кейсы и сами тесты были простыми, как мы видим сейчас - неактуальными. С появлением полноценного отдела тестирования ПАК (программно-аппаратных комплексов) тесты стали ближе к реальности - например, стали проверять падения битрейта в сетях разных типов, время работы камер, стрессовые нагрузки на видеомодуль до появления артефактов и многое другое, о чем раньше не задумывались.
Примерно в это время к команде присоединился очень талантливый и целеустремленный сеньор, который возглавил разработку. Разработчики начали разбирать и систематизировать все нагромождение функций, костылей и багов, которыми оброс Nexus за это время, и пришли к разумному выводу - проще будет переписать все заново, имея опыт и, главное, видение конечного продукта.
Третья итерация - «Рувер»
Следующие два года команда разрывалась между поддержкой проблемного Nexus и грамотной разработкой нового программного обеспечения - Ruware или просто Ruver. Опять же повторюсь - ядро писалось с нуля, на собственной сборке, поэтому готовых решений не было, и подсмотреть у кого-то другого было невозможно. Это заняло довольно много времени - почти год. Для некоторых крупных клиентов мы включили в прошивку уникальную функциональность - например, шифрование загрузчика или SSM (source specific multicast). Таких функций вы не найдете в камерах наблюдения массового спроса, хотя для многих клиентов это может показаться функцией ради функции. Но самое главное преимущество «Рувер» в том, что она упорядочена, новый функционал не ломает старый, есть место для последующего роста.
На данный момент вся базовая функциональность готова, программное обеспечение стабильно. Но до коммерческого релиза еще потребуется время - нужно доработать дополнительный, но очень востребованный функционал, отполировать интерфейс. Кроме того, инженеры рассматривают возможность замены процессоров на более мощные, новые датчики - процесс разработки очень живой, приоритеты могут часто меняться, все это значительно замедляет процесс, но компания старательно ползет к релизу! Я очень завидую своим коллегам по рынку, у которых процесс написания полностью отечественной прошивки с нуля занимает в среднем год, к сожалению, я могу только мечтать о таком процессе.....
Можно, конечно, критиковать за медлительность, но не стоит забывать, для чего пишется софт - памяти в камере 16 мегабайт, а процессоры не то чтобы плохие, но малопроизводительные. И это не тот случай, когда можно просто навалить на все деньги - не забывайте, компании приходится конкурировать в цене с азиатскими производителями и их колоссальными объемами. Каждая лишняя сотня рублей в стоимости элементной базы - это лишняя тысяча в конечной цене, чем с удовольствием воспользуются конкуренты.
Что в итоге?
Какие выводы должен сделать хороший читатель из нашей истории? На мой взгляд, их два:
Собственное программное обеспечение для вашего оборудования - это необходимость, не отдавайте его на аутсорсинг или в руки незаинтересованной команды, это как раз тот случай, когда сделать хорошо - значит сделать это самому.
Реалистично оценивайте сроки. Понятно, если ваш проект уникален, и сравнивать его не с чем - вам придется угадывать с погрешностью плюс-минус полгода. В любом случае не ставьте сроки во главу угла - с большой вероятностью они будут сорваны.
Напоследок, как и обещали, расскажем вам самый курьезный случай из разработки. В какой-то момент баланс белого в тестовой версии начал немного уходить в сторону, и никто не мог понять, почему - проблему искали в партии сенсоров, в сборке тестовых камер, даже код изучали. Изменения казались незначительными, но они были заметны на разных профилях BB. Через некоторое время программист, отвечавший за настройку ББ и цветовых профилей, наконец признался, что он дальтоник и настраивает баланс белого примерно по гистограмме, а молчит, потому что боится, что его выгонят. Вот такие дела, брат!
ВНИМАНИЕ!
Ваше имущество находится под защитой! 👍
Это напоминание для владельцев хорошей системы видеонаблюдения!