В статье изложена идея разработки NAS с самого начала, от проектирования плат, портирования софта и до дизайна корпуса.

Для чего нам этот проект? - Есть следующие основные причины:

  • Интерес к разработке своими силами сложного устройства, такого как NAS.

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

  • Получение дохода, с целью продолжения работы над другими интересными устройствами из нашего списка разработок, в котором NAS занимает основную позицию.

Мы довольно малочисленная команда энтузиастов, которая объединяет схемотехников, программистов, конструкторов и менеджеров. Несмотря на значительный опыт работы в разных компаниях, это наш первый общий проект. Поэтому хочется всё сделать по уму, используя не только свои предпочтения, но и хорошо известные подходы организации процесса проектирования.

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

Процесс разрабтки NAS
Процесс разрабтки NAS

Наш концепт открытого и модульного NAS

Открытая платформа нашего проекта подразумевает, что все схемы, файлы для производства, 3D модели корпусных деталей, исходники и другие файлы, можно будет скачать в открытом доступе по Creative Commons лицензии - Атрибуция 3.0 Непортированная. Ну или адаптированный для чтения вариант:

Что можно будет делать с нашими файлами в открытом доступе
Что можно будет делать с нашими файлами в открытом доступе

При наличии большого количества NAS, отлично зарекомендовавших себя за долгие годы эксплуатации и к тому же не требующих особых навыков настроек, наш проект может показаться малозначительным. Но это только на первый взгляд. В наших дизайнах мы нацелены на ряд функций, которые доступны в дорогих и продвинутых NAS. Например, в зависимости от модели модуля, будет реализована поддержка памяти ECC, горячая замена дисков, встроенное резервное питание, объем оперативной памяти до 32ГБ, возможность выбора процессора для создания не только хранилища данных, но и стриминга видео и другие продвинутые функции.

Модульность железа - это основа нашего дизайна, на которую мы опираемся. Если вам нужен NAS в виде уже готового устройства, которое остается только включить и он будет работать годами, то лучше всего выбрать решения от ряда известных фирм. Конечно, мы понимаем, что это и есть то к чему следует стремиться, но кто из нас не собирал компьютер для себя и своих близких? Ведь реально, если вашим родителям или детям нужен компьютер, то большинство будет радо собрать нужный компьютер самостоятельно, установит нужный софт, сконфигурирует его и настроит. Это то, чем можно гордиться по-настоящему.

Большое количество всевозможных плат с разным функционалом и определяет модульность. Можно собрать как NAS начального уровня только для хранения различных файлов, а с другой стороны ничто не мешает сразу или постепенно собрать более навороченный NAS для стриминга видео, музыки и с набором полезных сервисов, выполняющих рутинные задачи.

Кастомизация корпуса - очень важный для нашего проекта принцип. С большой долей вероятности, можно с первого раза определить, что перед нами NAS. Сменные отсеки дисков, большая вентилируемая панель, работающий компьютер где-то на антресолях, ноутбук со сломанным экраном и несколькими дисками, да много чего еще странного и не очень, но все эти устройства собранные с большой любовью и вниманием к деталям, как раз таки могут представлять собой NAS. Поэтому, нет смысла ограничиваться одним дизайном корпуса, гораздо эффективней предложить конструктивные решения, которые позволят улучшить потребительские качества. Например, красивый, легко трансформируемый дизайн за счет замены только одной детали конструкции, эффективное, но тихое охлаждение, параметрическая модель корпуса и его составляющих, простой доступ к дискам и так далее.

Архитектура NAS

Чтобы появилась некая архитектура NAS, необходимо сформулировать технические требования. В предыдущей статье - Что такое свой NAS и как его начать делать?, был сформулирован ряд ключевых требований, в кратком виде это:

Ключевые элементы NAS
Ключевые элементы NAS

Также была представлена таблица с техническими характеристиками базового / начального варианта NAS, основные параметры которого приведены ниже:

Название

Характеристика

Вычислительный модуль

SODIMM на базе процессора ARM

Операционная система

Armbian / Debian

Жесткие диски

SATA с поддержкой RAID 5, 6

Сетевое подключение

1GbE

Внешний порт данных

3x USB 3.1 Gen1 / Type-C PD

Видео выход со звуком

Mini DP / Type-C DP Alt Mode

Питание

230В

Резервное питание

Батарея не менее 20Вт•ч

На первый взгляд всё просто, только необходимый функционал и ничего лишнего. Такой NAS может хранить данные с достаточной надежностью за счет организации дисков в RAID5 или RAID6, и при этом будет доступным. Однако, даже в простых дизайнах есть свои сильные стороны. Давайте посмотрим, что из этого может выйти.

Попробуем расширить / изменить базовый набор за счет уже имеющихся интерфейсов. Например, что мешает подключить дополнительную сетевую карту к интерфейсу USB или дополнительный контроллер дисков SATA:

Вариант

расширения

Тип интерфейса

SATA Gen3

PCIe 2.1 / 3.0

USB 3.0 / Type-C

Подключение нескольких SATA дисков хранилища

SATA Port Multiplier

до 15 дисков на один порт SATA

PCIe / SATA Bridge 

5-6 дисков на PCIe x2

2-4 диска на PCIe x1

USB / SATA adapter

1-2 диска

Системный SSD

NVME x2 / x4

SATA / NVME x2 adapter

Ethernet

1GbE / 2.5GbE

В таблице показана только часть возможных расширений, относящихся к дисковой подсистеме. Существующий набор интерфейсов в современных процессорах ARM позволяет создавать и другие варианты, что особенно ценно, если цель спроектировать не просто NAS, а еще и поддержать развлекательный контент.

Декомпозиция дизайна

Попробуем определить связи между техническими требованиями и конкретными узлами, которые за них отвечают. Для этого разобьем дизайн на ряд основных блоков и попытаемся их “прокачать”.

Контроллеры дисков

Рассмотрим особенности шин PCIe и SATA, которые нам позволят снять ограничения по количеству дисков в системе (с разумной точки зрения, ясное дело).

Так зачастую PCIe контроллеры процессоров поддерживают разветвление шины PCIe - bifurcation, что позволяет организовывать несколько независимых шин PCIe:

Примеры разветвления шины PCIe
Примеры разветвления шины PCIe

Получив несколько независимых шин, к одному процессору теперь можно подключить уже не один, а несколько PCIe / SATA Bridge контроллеров, и тем самым увеличить количество дисков в системе:

Подключение нескольких PCIe / SATA Bridge контроллеров
Подключение нескольких PCIe / SATA Bridge контроллеров

Еще один из вариантов расширения размера хранилища - это подключение нескольких SATA дисков к одному порту, если контроллер SATA поддерживает функцию PMP - Port Multiplier:

Схема подключения нескольких дисков к одному SATA
Схема подключения нескольких дисков к одному SATA

Хотя функция PMP довольно известная, но среди производителей контроллеров SATA найдется не так много вариантов чипсетов и встроенных контроллеров, которые могут “увидеть” на одном порту SATA сразу несколько дисков.

К сожалению, в ARM процессоры довольно редко встраивают контроллер SATA. На мой взгляд, производители таким образом пытаются всеми способами выжить данную технологию и заменить её на более универсальную PCIe. В отличие от x86 и AMD процессоров, для которых выпускаются специальные чипсеты с поддержкой нескольких SATA портов, у ARM процессоров даже таких вариантов нет.

Тем не менее, некоторые производители до сих пор размещают PCIe Gen2 “рядом” с PCIe Gen3. Спрашивается для чего? - Лучше бы увеличили ширину PCIe Gen3. Но если разобраться, то ответ становится очевидным:

  • Высокоскоростные лэйны PCIe Gen2 имеют практически такую же скорость как USB3.0 (иначе USB3.1 Gen1) и самое важное SATA Gen3. Это позволяет подключать нужный контроллер внутри процессора к комбинированным лэйнам со скоростью до 6Гб/с в зависимости от интерфейса. Далее, как мы видели на рисунке выше, даже к одному SATA с поддержкой функции PMP можно подключить до 15 SATA дисков.

Вычислительный модуль

Не хотелось бы сейчас подробно останавливаться на теме, связанной с возможностями современных ARM процессоров. Для этого мы постараемся приготовить отдельный материал, с оценкой возможностей нескольких процессоров, которые для нашего проекта являются целевыми. Тем не менее, хочется рассказать ещё об одном элементе системы - вычислительном модуле SODIMM.

  • Идея размещения на одном модуле самых важных компонентов процессорной системы, широко известна. Для каждого встраиваемого процессора в мире существует хотя бы один универсальный модуль. Действительно удобно, одна универсальная плата служит основой для создания совершенно разных устройств.

Мы тоже придерживаемся этого пути, поэтому, спроектировали вычислительный модуль с минимумом периферии для нашего варианта NAS начального уровня:

Состав нашего модуля на RK3399
Состав нашего модуля на RK3399

На плате модуля есть 200-pin краевой разъём, на который выведены практически все интерфейсы процессора, питание и цепи управления:

Назначение

Название интерфейса

100/1000 Ethernet

RGMII

DIY, управление системой

GPIO x50 (UART, SPI, I2C, I2S, PWM, etc) / ADC x5

Подключение SD

SDMMC

Подключение дисков

PCIe x4 Gen2

USB устройства и модули

Type-C / USB 3.1 / USB 2.0 x2

Дисплеи и камеры

MIPI TX x4 / RX x4 / TX-RX x2 / eDP

Сброс / Питание

Reset / Power Enable / 5V

Конструкция вычислительного модуля - это многослойная печатная плата, производство, сборка и начальное тестирование которой, рассчитано на контрактное производство - EMS (Electronic Manufacturing Service) provider:

Внешний вид нашего модуля на RK3399
Внешний вид нашего модуля на RK3399

На модуле размещены только самые необходимые компоненты для работы системы: процессор, оперативная память, eMMC и NOR флэш, а также PMU / PMIC (контроллер питания и DC/DC преобразователи). Никаких WiFi модулей, SD карт, Ethernet Phy и т.д.

Почему? - Ответ прост:

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

С другой стороны, благодаря модульности всегда можно “прокачать” устройство в нужную сторону. Например, сейчас мы планируем дополнительно разработать ещё два вычислительных модуля, один с увеличенным объемом памяти, а другой с ECC для аппаратной поддержки ZFS.

Все вычислительные модули будут совместимы как конструктивно, так и в части электрического подключения (есть такая надежда), и замена одного модуля на другой пройдет безболезненно.

Есть еще один момент в пользу выбора модульного дизайна. Многие используют контроллеры определенных производителей: JMicron, Marvell, ASMedia и т.д. В случае модульного дизайна и стандартного разъёма, у пользователей будет возможность подключить свой контроллер. К примеру, на рисунке представлены варианты контроллеров PCIe / SATA Bridge на 5 и 6 дисков фирм JMicron и ASMedia (качество скринов не очень, в нашем распоряжении пока только один контроллер M.2 и тот в работе):

Плата 5-портового PCIe / SATA контроллера на M.2
Плата 5-портового PCIe / SATA контроллера на M.2
Плата 6-портового PCIe / SATA контроллера на M.2
Плата 6-портового PCIe / SATA контроллера на M.2

Несущая плата

В качестве конструктива несущей платы начального уровня был выбран nano-ITX с размерами 120мм x 120мм. Это на 50мм меньше чем mini-ITX по каждой стороне. 

На плате размещен минимальный набор компонентов и разъемов как для подключения внешних устройств, так и для модулей. Для примера, ниже показана структурная схема несущей платы с установленными модулями резервного питания - UPS, контроллером дисков с разъемом M.2 и модулем сетевого адаптера 2.5GbE:

Структурная схема несущей платы с установленными модулями
Структурная схема несущей платы с установленными модулями

Спецификация несущей платы:

Название

Характеристика

Тип разъема

Вычислительный модуль

ARM

SODIMM 200-pin

Подключение USB / Type-C

DisplayPort Alt Mode

2x USB2.0

2x USB3.0 Front Panel

2x USB3.0

Type-C PD

Pin Header 2x5

Twin USB Type A

Pin Header 2x10

Сетевое подключение

100 / 1000 Ethernet

RJ45

Контроллер дисков

PCIe Gen2 x 4lanes

M.2 key M

Дисплей / камера

DisplayPort

MIPI CSI / DSI

MIPI-CSI

MIPI-DSI

DP

FPC-30

FPC-30

FPC-30

Низкоскоростная периферия

I2C

I2C / UART / SPI

ADC 4-channel

Pin Header 1x6

Pin Header 2x5 - UEXT

Pin Header 1x6

Консоль

USB / UART

Type-C

Аудио вход / выход

Кодек ES8388

HD Audio Header

Основное питание 

12В

Mini-DIN / ATX 4-pin

Несущая плата сейчас активно разводится, при этом все основные разъемы для подключения кабелей и модулей уже расставлены:

Внешний вид несущей платы с основными разъемами и модулями
Внешний вид несущей платы с основными разъемами и модулями

Firmware контроллеров

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

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

Например, контроллеры PCIe и SATA, о которых рассказывалось выше, не работают нормально, если при включении питания они не будут проинициализированы либо из локальной EEPROM, либо по SPI. Причем последовательность команд инициализации чаще всего известна только производителю. Среди этих команд есть очень специфичные, касающиеся процедуры тренинга линков перед началом работы. Если этот тренинг не пройдет успешно, то нестабильная работа на высоких скоростях практически гарантирована.

Мы уже столкнулись с нестабильной работой одной из новых плат с SATA Multiplier, на которой производитель попросту не обновил конфигурационную EEPROM. В результате регулярно терялся линк на произвольном SATA диске.

Пришлось на время отложить тесты с этой платой и обращаться в поддержку с просьбой выслать рабочую конфигурацию. Хотя можно было бы скопировать эту конфигурацию из рабочего контроллера самостоятельно, благо такой был.

На практике очень сложно поддерживать все возможные варианты контроллеров, а тем более отслеживать качество прошивок. В этом смысле, открытый дизайн хорош тогда, когда он ограничен проверенными железками.

Проверка концепции

Очевидно, что проверять концепцию следует в самом начале перед стартом основных работ. В этом плане мы тоже не исключение, поскольку заранее начали проводить тесты с железом, для чего собрали несколько прототипов NAS.

У нас не было особых ограничений по стоимости прототипов, поэтому, мы не экономили. В результате получилось собрать три прототипа. Два из них, собраны на одинаковой платформе ARM - процессоре RK3588, но только с разными вариантами подключения дисков. Еще один прототип NAS мы собрали на x86 материнке с процессором Core i3, где диски подключались стандартно к чипсету.

С помощью этих трех прототипов мы планировали провести и потом сравнить результаты тестов производительности NAS. Также мы хотели оценить возможные проблемы, связанные с работой дисков при их подключении через SATA Multiplier и PCIe / SATA Bridge.

Характеристика

x86 Mini Server

RK3588 19”

RK3588 Mini Server

Процессор

Core i3-10100

RK3588

RK3588

Память

DDR4 - 8ГБ

LPDDR4 - 16ГБ

LPDDR4 - 16ГБ

Материнская плата

H510M-ITX/ac

ITX-3588J

ITX-3588J

Контроллер SATA / чипсет

Intel H510

PCIe / SATA Bridge

JMB585

SATA Multiplier

JMB575

Поддержка SATA PMP

нет

да

да

Количество дисков NAS

4

5

4

Модель дисков

Toshiba P300

Toshiba P300

Toshiba P300

RAID

5

6

5

Системный SSD M.2

NVME

SATA

SATA

ОС

Debian 11

Armbian / Debian 11

Armbian / Debian 11

ПО для NAS

OMV6

OMV6

OMV6

Сборка прототипов для проверки концепта

Сборка NAS на x86 никаких трудностей не вызвала, все четыре диска были подключены к разъемам на плате:

В x86 прототипе все диски подключены к штатным SATA
В x86 прототипе все диски подключены к штатным SATA

Особой необходимости в NAS на x86 не было, хотели просто оценить разницу в производительности между x86 и ARM.

Сборка второго и третьего NAS на ARM процессорах также прошла относительно просто, благодаря стандартной плате формата mini-ITX. В одном из них диски были подключены к плате PCIe с контроллером PCIe / SATA Bridge JMB585:

Подключение пяти дисков к контролеру SATA / PCIe Bridge в прототипе с корпусом 19"
Подключение пяти дисков к контролеру SATA / PCIe Bridge в прототипе с корпусом 19"

Для этого NAS был специально собран прототип модульного UPS, состоящий из модуля контроля и модуля батарей 2S2P. В основу конструкции UPS легла идея, подробно изложенная в нашей предыдущей статье:

Размещение модульного UPS внутри 19" прототипа
Размещение модульного UPS внутри 19" прототипа

В третьем прототипе NAS на базе ARM процессора, диски были подключены в разъемы, расположенные на самой плате. В качестве контроллера на плате установлен чип JMB575 - SATA Multiplier на 5 дисков, который подключен прямо к процессору также через SATA интерфейс:

Подключение четырех дисков к плате на ARM процессоре с контроллером SATA PMP
Подключение четырех дисков к плате на ARM процессоре с контроллером SATA PMP

В этом NAS был размещён наш первый прототип UPS с интегрированной батареей 2S1P:

Размещение блока UPS в прототипе на ARM процессоре в корпусе Mini Server
Размещение блока UPS в прототипе на ARM процессоре в корпусе Mini Server

Первые результаты

Смоук тест всех трех NAS прошел успешно. После этого на все три прототипа был установлен Debian 11 / Armbian, поверх которого мы установили openmediavault. Но обнаружилась одна проблема со стабильной работой дисков хранилища на прототипе с SATA Multiplier.

  • Диски, подключенные к контроллеру SATA PMP спонтанно “терялись” и вновь “находились”, при этом скорость линка снижалась доходя с 6Гб/с до 3Гб/с и даже 1.5Гб/с. Причем, чем выше нагрузка была на диски, тем чаще происходили такие события:

[  886.887645] ata1.04: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[  886.887649] ata1.04: failed command: WRITE DMA
[  886.887658] ata1.04: cmd ca/00:01:08:00:00/00:00:00:00:00/e0 tag 20 dma 512 out
                        res 40/00:01:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[  886.887662] ata1.04: status: { DRDY }
[  888.097425] ata1.15: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  888.408754] ata1.00: SATA link down (SStatus 0 SControl 310)
[  888.408828] ata1.01: hard resetting link
[  888.718265] ahci fe210000.sata: FBS is disabled
[  888.874071] ahci fe210000.sata: FBS is enabled
[  888.874600] ata1.01: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  888.874642] ata1.02: hard resetting link
[  889.185254] ahci fe210000.sata: FBS is disabled
[  889.344063] ahci fe210000.sata: FBS is enabled
[  889.344648] ata1.02: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  889.344690] ata1.03: hard resetting link
[  889.655095] ahci fe210000.sata: FBS is disabled
[  889.810750] ahci fe210000.sata: FBS is enabled
[  889.811339] ata1.03: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  889.811381] ata1.04: hard resetting link
[  890.122080] ahci fe210000.sata: FBS is disabled
[  890.280720] ahci fe210000.sata: FBS is enabled
[  890.281310] ata1.04: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
[  890.592159] ata1.05: SATA link down (SStatus 0 SControl 310)
[  890.901819] ata1.06: SATA link down (SStatus 0 SControl 310)

Мы предположили, что проблема могла быть в начальной конфигурации контроллера JMB575 - SATA Multiplier. Дело в том, что после подачи питания, контроллер считывает конфигурацию внутренних регистров из локальной EEPROM, и если, к примеру, эти данные отсутствуют, то работа линков SATA может быть нестабильной.

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

Попытка проверить работу SATA PMP на x86 прототипе
Попытка проверить работу SATA PMP на x86 прототипе

В этот момент пришло осознание того, что в действительности не все чипсеты с контроллерами SATA, выпускаемые Intel и другими фирмами, поддерживают SATA Port Multiplier. В нашем случае, чипсет H510 не поддерживал эту функцию. Контроллер SATA видел только один диск из четырех, при этом на произвольном порту. К слову, функция SATA PMP не является обязательной.

Так что пришлось подключать SATA PMP адаптер к другому прототипу, но уже в один из портов PCIe / SATA Bridge адаптера. На слух звучит запутано, поэтому, приведу схему тестирования для этого случая:

Подключение SATA PMP к PCIe / SATA Bridge
Подключение SATA PMP к PCIe / SATA Bridge

Выглядело такое подключение следующим образом:

Подключение SATA Multiplier к SATA / PCIe Bridge контроллеру
Подключение SATA Multiplier к SATA / PCIe Bridge контроллеру

Так как на этом прототипе уже был поднят RAID6, то после загрузки сразу удалось убедиться, что проблем с дисками нет и контроллер JMB575 на этой плате работает нормально.

После обсуждения пришли к выводу, что необходимо связаться с техподдержкой производителя и решить с ними вопрос, касающийся стабильной работы контроллера JMB575, установленного на материнской плате. Хотя можно было бы и содержимое рабочего EEPROM скопировать и перенести на проблемную плату.

Итоги

Результат, который мы получили, вполне нас устроил, так как мы столкнулись с типичными проблемами и особенностями интеграции различных контроллеров с целью создания массива дисков. В добавок, проверили теорию на практике. Если бы всё прошло гладко, то не факт, что в следующий раз мы не столкнулись бы с подобным, а так уже будем готовы.

Основные итоги проверки концепта в части создания дискового массива приведены в таблице:

Название

Результат

Общая проверка SATA Multiplier

В целом работает

Необходима начальная конфигурация чипа от производителя

Поддержка SATA Multiplier в чипсетах и HOST контроллерах

Необходимо смотреть на поддержку данной функции в контроллерах SATA, без этой поддержки применение SATA Multiplier невозможно

Общая проверка PCIe / SATA Bridge

Работает без вопросов

Не требует особой поддержки со стороны Root контроллера PCIe

Проверка PCIe / SATA Bridge в режиме PMP

Успешно проверен в режиме работы PMP с подключенным SATA Multiplier

Предварительные тесты производительности дисковых массивов для ARM процессора c PCIe / SATA Bridge контроллером и референсной платформы x86 на чипсете H510 представлены в следующей таблице:

Название теста

RK3588 19” / 5 дисков / RAID6

x86 Mini Server / 4 диска / RAID5

fio RANDOM 4k READ

5168KiB/s (5292kB/s)

4724KiB/s (4837kB/s)

fio RANDOM 4k WRITE

1000KiB/s (1024kB/s)

981KiB/s (1005kB/s)

fio SEQUENTIAL 512k READ

624MiB/s (654MB/s)

1626MiB/s (1705MB/s)

fio SEQUENTIAL 512k WRITE

216MiB/s (227MB/s)

287MiB/s (301MB/s)

В итоге, мы рассомтрели концепцию модульного NAS с открытой аппаратной архитектурой. Оценили возможные риски, связанные с применением различных аппаратных решений, в особенности контроллеров для создания дисковых массивов. Были представлены вычислительный модуль на ARM процессоре и универсальная несущая плата, которые могут быть испоьзованы для сборки NAS начального уровня. В конце оценили результы отладки и тестирования прототипов и показали, что разработка собственного NAS имеет достаточное обоснование.

Что дальше

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

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

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

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

Комментарии (46)


  1. torgeek
    00.00.0000 00:00

    Любопытный проект у вас получается. Чем-то напоминает проекты модульных открытых ноутбуков MNT Reform и Framework.

    Но не видно в какие вычислительные нагрузки вы целитесь. Кто/что будет потребителем ваших устройств? Какие задачи, какой софт окажется в выигрыше от применения вашего открытого решения? В чем сила? :)


    1. sdy Автор
      00.00.0000 00:00
      +2

      Основной сектор - это SOHO (Small Office Home Office), там где нет высоких нагрузок, процессоры ARM, которые мы хотим испоьзовать ориентированы на встраиваемые приложения, в которых баланс потребление / производительность склоняется больше в сторону малого потребления. Если сравнить TDP x86 c нашими ARM, то это как минимум порядок разницы в потреблении. Софт -- Armbian + openmediavault. Сила в правде. Собираем NAS как лего -- что хотим, конфигурацию дисков, устройства внешние, адаптеры сетевые, камеры, дисплеи, то и собираем. Не забываем про корпус, в готовых NAS с корпусом уже ничего не сделать, а тут будет куда развернуться.


      1. Goron_Dekar
        00.00.0000 00:00
        +2

        В SOHO часто надо быстро положить отснятые RAW на диск, а потом прямо с него обрабатывать в Lightroom. И это очень сильно грузит samba server


  1. m0xf
    00.00.0000 00:00
    +4

    Интересно увидеть потребление системы на ARM и x86 в простое и под нагрузкой. На сколько существенной будет разница?


    1. sdy Автор
      00.00.0000 00:00
      +2

      Хороший вопрос. Сделаем.


  1. maledog
    00.00.0000 00:00

    Никогда не понимал всей этой идеи с NAS. Что кроме габаритов мешает превратить в NAS обычный компьютер, и не иметь проблем с ремонтом в дальнейшем?


    1. sdy Автор
      00.00.0000 00:00
      +3

      Так NAS тоже компьютер, но для специфических задач


      1. maledog
        00.00.0000 00:00

        Для каких? Вот я собрал компьютер с несколькими жесткими дисками и накатил OMV. В чем преимущество NAS?

        Вот у меня валяется несколько лет NAS на miniITX. После того как блок питания сгорел, я просто не нашел подходящий по размерам. Я собирал его так как думал, что он будет менее шумным и можно будет раздавать торрент ночами. Но на практике - малогабаритный корпус требует лучшее охлаждение, так что вентиляторы на максимуме работают. Малый вес корпуса способствует усилению шума от вставленных в него жестких дисков, если он металлический или перегреву этих дисков если он пластиковый.


        1. sdy Автор
          00.00.0000 00:00
          +2

          Вы используете компьютер как для игр, работы, общения, так и для OMV. NAS для игр вряд ли используют, ну разве что сервер для Майнкрафта поднять можно. Ну это как каклькулятор карманный и ноутбук сравнивать.


          1. maledog
            00.00.0000 00:00

            Нет. У меня есть NAS. Просто это обычный комп с Linux и двумя дисками в RAID1(если нужно я могу туда добавить еще 3-5 дисков и развернуть RAIDZ). Я не вижу смысла в разработке под эти цели специального железа, если оно не имеет преимуществ перед обычным компом.

            При этом я могу обновлять свой "NAS" после каждого обновления своего компьютера просто переставляя туда устаревшее оборудование.


            1. sdy Автор
              00.00.0000 00:00
              +2

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


              1. maledog
                00.00.0000 00:00

                Сейчас я склоняюсь к тому, что неплохим решением для домашнего NAS будет просто старый ноутбук у которого вместо DVD установлен дополнительный жесткий диск. Шум минимальный. Производительность зависит от от железа. Знаю место где за 20-25 т. р. 1000 можно купить б/у Lenovo c i5 3-5 поколения и 4-8 гигабайтами оперативной памяти.

                На Avito конечно же можно накопать и нечно совсем дешевое, но уникальное, но для этого нужно разбираться в железе (что я умею) и знать условия эксплуатации (что конечно потребует разборку ноутбука).


        1. Fox_exe
          00.00.0000 00:00
          +3

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

          Если посмотреть в сторону тогоже Synology - Там и удобный интерфейс имеется и проц имеет аппаратные SATA порты, либо выделенный RAID контроллер, и габариты самой "коробки" весьма скромные, и вентиляторы тихие и прочие радости... За весьма нескромный бюджет :(
          * Речь про домашний и офисный сегмент.

          Лично я купил себе на алике плату с Celeron'ом на борту (N5105) и 6ю SATA портами, запилил под это дело корпус, распечатанный на 3D принтере, понапихал туда SSD дисков (2,5") и получил вообще бесшумный NAS, весьма скромных размеров.
          А главное - туда без проблем поставил ProxMox, внутри которого уже разворачивал все остальные сервисы, какие нужны.
          Вся эта радость, с учётом 4х SSD дисков "Кушает" 10-15 ватт в простое и до 80 в пике.


          1. sdy Автор
            00.00.0000 00:00
            +2

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


            1. maledog
              00.00.0000 00:00
              +1

              Часто все же можно восстановить. Например linux умеет читать структуру intel soft-raid. Кроме того, контроллеры одного производителя умеют подхватывать raid созданный до них. Часто RAID на контроллерах Adaptec можно считать на другом контроллере Adaptec и тоже самое с Intel. Иногда мне помогало создание нового массива поверх старого на том же контроллере. Но конечно аппаратный RAID проигрывает по надежности программному, если нет backup unit(флэш или батарейка, или и то и другое).
              А вобще дешевые аппаратные RAID это от бедности. Ну не умеет Windows программный RAID нормально до сих пор. Потому приходится извращаться. Я вот в свое время навозившись с windows и intel soft-raid или intel RAID аппаратный, но за 1000$, понял что для отказоустойчивости проще XEN/KVM + linux RAID, а уже внутри виртуальной машины windows. И по производительности небольшой проигрыш и по времени восстановления в 10 раз меньше чем первое решение.


              1. sdy Автор
                00.00.0000 00:00
                +2

                Я не спорю, все можно восстановить при желании, но аппаратный рэйд для нашего случая не вариант. В принципе есть бюджетные контроллеры, даже на USB3.2, которые умеют создавать RAID 0,1 из двух дисков, но нам это не подходит, по причине ненадежности такого решения.


                1. AquariusStar
                  00.00.0000 00:00

                  Да, у меня на одном старом NAS оказался программный массив. При переносе дисков на новый сервер Linux без проблем прочитал полную структуру и потом представил как один массив. Несмотря на то, что они сидели на отдельных SATA-контроллерах. Потом OMV 6 каким-то образом всё испортил, перестав воспринимать как один массив. Но диски остались читаемыми, что спокойно и перетащил данные.


            1. DaemonGloom
              00.00.0000 00:00

              У вас какие-то странные сведения об аппаратном рейде. Ничего они себе в мозги не пишут. Если у вас умирает, условный контроллер от HP, то ваши действия будут:
              1) Взять новый контроллер того же поколения или новее
              2) Воткнуть в него диски
              Всё, дальше он сам прекрасно найдёт этот массив.


              1. sdy Автор
                00.00.0000 00:00

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


          1. maledog
            00.00.0000 00:00

            Если посмотреть в сторону тогоже Synology - Там и удобный интерфейс
            имеется и проц имеет аппаратные SATA порты, либо выделенный RAID
            контроллер, и габариты самой "коробки" весьма скромные, и вентиляторы
            тихие и прочие радости...

            А потом Synology забил на обновления или вовсе развалился и у вас в руках неподдерживаемая железка. И что-то мне подсказывает, что "вентиляторы тихие", это если производительность от NAS не ожидается или в ущерб ресурсу HDD.


            1. ash_lm
              00.00.0000 00:00

              Вы видимо не пользовались продукцией Synology. Лично у меня (и не только) от неё только положительные впечатления.

              А потом Synology забил на обновления или вовсе развалился и у вас в руках неподдерживаемая железка .

              А если Intel / AMD / Microsoft / Apple / etc развалились, а Илон Маск улетел на Марс?


              1. sdy Автор
                00.00.0000 00:00
                +1

                Не, ну Китай то останется. Не знаю как в других отраслях, но по микроэлектронике с ними можно договориться. Сейчас практически все дистрибьютеры переключились на Китайский рынок чипов.


              1. maledog
                00.00.0000 00:00

                А я и не топил за вендорлок. Если у меня в NAS Debian, и уцелели хотя бы жесткие диски, то скорее всего я в кратчайшие сроки подниму его на любом железе, если оно архитектурой не отличается. Посмотрим как вы будете выковыривать из Synology скажем пользователей с паролями. Хорошо, есть бэкап, но где гарантия что данная модель еще выпускается?
                Ситуации бывают разные. Однажды мне пришлось восстанавливать оборудование после пожара. Мы буквально мыли материнские платы от копоти. Еще раз мне приносили ноутбук который в автокатастрофе побывал. А еще у меня лет пять работал сервак intel у которого корпус не закрывался так как штатный блок питания сгорел и пришлось прилаживать ATX, так как модель давно была снята с производства.
                В моем понимании, чем проще и доступнее найти деталь для ремонта, просто заглянув в ближайший компьютерный магазин, тем лучше. Пример, однажды 31 декабря у меня сдох блок питания в домашней файлопомойке и я рисковал остаться на новый год без коллекции музыки и фильмов, ничего вопрос решил просто сбегав в ближайший магазин. Вот такой в моем понимании должен быт NAS. Если он при этом еще не будет жрать много энергии, то это в плюс, но не в ущерб производительности.


                1. sdy Автор
                  00.00.0000 00:00
                  +1

                  Это частично верно для x86 платформы, в случае с ARM платформой, на которую мы ориентируемся, в магазе ее так просто не купить.


              1. xSVPx
                00.00.0000 00:00
                +1

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

                Проще продать компактный nas. И он будет именно таковым. То, что в условиях серверной с +18 вполне рабоче в условиях home превращается в компактную печку для hdd.

                Компактнее и красивее, когда фильтров на притоке нету. И вот уже через полгода вы выгребаете тонны пыли из своего наса.

                Итд итп.

                Мне достался не синоложи, но вполне брендовые нас. Развернул. Поставил. Залил данные. Работаю. Обращаю внимание на то, что веб интерфейс еле живой. Загрузка cpu 100%. Копаю. Копаю. Копаю. Логинюсь в консоль. Разбираюсь.

                Результат: даже если отключить все галки в чудесном веб интерфейсе этот кусок пропиетарного говна продолжает создавать какие-то иконки для эпл тв что-ли, фиг знает. Он создаёт миллионы файлов. Засирает диск, сжирает производительность, вырабатывает ресурс хардов. Он месяц их насиловал в попытках все это сделать. К счастью, из консоли удалось это все убить. Зачем мне веб интерфейс, если он работает так, как описано сверху ?

                Тысячу раз уже пожалел, что с этим всем связался(досталась даром железка). Былоб дешевле купить новое железо стандартного размера и на нем все поднять. Времени куча просрано и нет никакой уверенности в будущем...


  1. beho1der
    00.00.0000 00:00
    +1

    А не думали над ethernet 10Gb для NAS это очень актуально сейчас?


    1. ciuafm
      00.00.0000 00:00
      +1

      Тут поддерживаю. Раз уж вы начали тестирование, обязательно нужно рассмотреть 10Gbps сеть. Т.к.ставить NVMe на гигабитную сеть - это верх расточительства.

      +Опция m.2 WiFi для любителей протатива.

      +Опция mini-pci разъема для WiFi для бережливых

      +Опция 10 Gbps хаба, или как минимум вариант 1х10Gbps + 1Gbps hub гнезд на 5-8. Можно навесить опцию роутера, тогда минимум 3 порта ethernet 10 +1+1(отдельный аплинк) или даже 10+1+0.1(отдельный аплинк)

      +Опция pci-e хаба для подключения нескольких NVMe, пусть даже с софтовым зеркалом.


      1. sdy Автор
        00.00.0000 00:00
        +1

        Насчет 10G надо считать, потому что бюджет железа чую подскочет. Еще непонятно как с производительностью проца будет. Тут все таки процы для встройки.

        WiFi на USB3 планировали.

        PCIe switch в планах был, но это тоже тема не очень чтобы простая. Броадком теперь нам коммутаторы PCIe не отгружает, да и раньше только под большие проекты соглашались.


    1. sdy Автор
      00.00.0000 00:00
      +2

      10G пока дорого. Осваиваем 2.5G, с ним проблем вроде нет.


      1. AquariusStar
        00.00.0000 00:00

        Можно оставить задел на переход. Я так и сделал. Сейчас у меня сервер имеет соединение 2.5G. Осталось только сетевой адаптер подключить. Коммутатор уже умеет в 10G.


        1. sdy Автор
          00.00.0000 00:00
          +1

          Прикинул варианты.

          Подключать сетевой контроллер 10G на PCIe в принципе можно, но это минимум 2 лэйна надо занимать, а они у нас все посчитаны.

          Самый подходящий - это USB3.2 (Gen2) в PCIe x2, далее ставим сетевой контроллер 10G. Только это не бюджетно.

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


          1. AquariusStar
            00.00.0000 00:00
            +1

            Именно поэтому я и выбрал вариант на AMD с 35 Вт потребления. Можно менять конфигурацию железа по мере необходимости. Поэтому может спокойно вывозить все 15 дисков, не считая NVMe накопителей. (В реальности может больше, просто корпус может вместить только 15 дисков). Ещё на полновесный 10G останется. Там главные 16 линий свободны. Пока работает на встройке, которая есть на материнской плате.

            Сидел некоторое время на Raspberry Pi 4. Узким местом оказался USB 3.0 и Ethernet. Если перекидывать файлы с диска на диск, которые сидят на одном USB (а там ещё торрент крутится и на приставке фильм крутится), то получается реальный напряг с этим. Ещё пахали вместе с ним ещё тройка NAS-серверов на базе ARM и PowerPC. Поэтому и было главной задачей собрать все диски этих серверов в одном сервере. Слишком много шума от них.

            P.S. Я смотрю, вы используете OMV 6 в качестве ПО. С ним надо быть осторожным в плане обновлений. Обязательно что-нибудь отвалится. У меня так доменное имя сервера во всех машинах не отображается (даже на Андроидах). Только IP-адрес показывает. Только Windows 10 через некоторое время может достучаться до имени. А в начале всё работало нормально.


            1. sdy Автор
              00.00.0000 00:00
              +1

              Не, мы пашем целенаправленно в сторону ARM процессоров для встройки, для устройств типа NAS это самое то. Хотя RPi тоже ARM, но насколько я помню у него всего лишь один лэйн PCIe и тот Gen2. Так что по сравнению с этим отличным процессором, те варианты чипов, на которые мы делаем ставку, обладают существенно лучшими возможностями. Как минимум это 4 лэйна PCIe Gen2, а для процессора в прототипах - 3 комбинированных лэйна с возможностью PCIe Gen2 и отдельный PCIe Gen3 Root c 4 лэйнами да в добавок с поддержкой разделения. Так что в этом плане мы ничем особым не ограничены.

              Кстати, что касается разделения, то не все чипсеты x86 его поддерживают. Так что в этом плане у нас есть отличное преимущество в плане расширения возможностей PCIe.


              1. AquariusStar
                00.00.0000 00:00

                Ну если у вас устройство покрывает ваши задачи, то почему бы и нет. Я просто исходил из того, что могу так или иначе применить сервер для ряда задач (если изменятся потребности) в будущем и могу использовать как можно больше дисков, чтобы не иметь кучу мелких серверов, коих у меня расплодилось. На сервере тоже используются платы расширения (на базе ASM1166). Главное, чтобы они могли обеспечить гарантированную работу одновременно с двумя дисками без снижения скорости, как это было на малинке с USB 3.0, где скорость падала. Ваш вариант для меня слабоват в плане количества доступных линий PCIe в процессоре. Если было бы 8 или 16 линий, то можно было бы рассмотреть. А поскольку ни один ARM процессор не предложил вариант с таким количеством линий, выбор для меня был очевидным.


                1. sdy Автор
                  00.00.0000 00:00

                  Дело не только в количестве лэйнов, надо ещё смотреть можно ли разделять шину чтобы была возможность подключения независимых контроллеров.


  1. Goron_Dekar
    00.00.0000 00:00
    +1

    А можно к тестам добавить скорость чтения/записи с windows компа через samba?

    Я чаще всего упираюсь именно в производительность samba server, а не в sata. И как тут себя поведёт arm не очень понятно.


    1. sdy Автор
      00.00.0000 00:00
      +1

      Да, как раз самбу тестить собирались.


  1. DAzgluk
    00.00.0000 00:00
    +1

    Посмотрите на https://www.kickstarter.com/projects/storaxa/fully-customizable-home-cloud-storage-with-remote-access-nas/description

    В частности вот их решения в контексте PCI-E лиинй. https://drive.google.com/drive/folders/1Crz6dTwEf3t_Sp23xlDgZDfYvguz8Zo8

    Немаловажным так же считаю рассмотреть возможность поддержки ECC памяти, раз уж мы говорим о системе хранения данных, то bit flips могут быть опасны.


    1. sdy Автор
      00.00.0000 00:00

      Ага, очень близкие решения. Спасибо за линк. Тоже PCIe / SATA Bridge для SATA дисков и коммутатор PCIe на ASM2812 для NVME массива. Как раз вчера на asmedia смотрел. Хотя по ссылке x86, но с точки зрения подключения дисков у нас очень похожая архитектура. Ryzen 7 у них, без поддержки ECC. Насколько я знаю только Pro версия поддерживает ECC.


  1. PwrUsr
    00.00.0000 00:00
    +1

    Имхо:

    1. SATA Multiplier - тупик.

    2. ARM - тупик.

    3. СЕТЬ меньше 10 гига - тупик.

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

    кому нужна модульность - соберут на любом писюке НАС и добавят туда что захотят...

    я собрал много НАСов на писюках

    чего мне не хватает "в модульности" это обычных линий PCI-E

    в идеале НАС должен иметь где-то 3 штуки х8 (минимум 2х8+4) если у него нет встроенных контроллеров типа 10 гига и/или SAS...

    далее - SATA кабели - дичь дикая, нет для двух дисков норм, но больше - желательно тот же SATA выводить через SFF-8087 или MiniSAS конектор

    на а SAS2008/3008 - контроллеров как грязи и в том числе "маленьких" на 1 порт...

    и кстати вот они маштабируются вообще без проблем (как USB) в отлисии от SATA

    питание - многие диски умею не запускатся при отсутсвии 11го пина на питании (не все, да, но многие) - потому у SATA Power 11й пин должен висеть в воздухе

    ну и наконец самая боль - корпус... увы пока даже китайцам не удалось сделать идеальный (для меня корпус):

    MicroATX c 3мя PCI-E , с обычным блоком питания и с хотсвопами (можно даже не хот свопы а по типпу новых MiniProliant - оно не хотсвоп (хотя дурнуть можно), на зато занимает меньше места так как без корзин....


    1. sdy Автор
      00.00.0000 00:00

      Спасибо, кстати, за конструктивную критику.

      Модульность PCIe - это как раз то, за что мы будем бороться. Тем более что чипы, на которые мы делаем ставку, обладают возможностью разделять общую шину на несколько соединений.

      Не очень понятно зачем NAS такие широкие шины PCIe как x8. В варианте PCIe / SATA bridge как правило используется только два лэйна. Если Root не поддерживает bifurcation, то при подключении к любой шине контроллера, который использует только два лэйна, все остальные лэйны окажутся бесполезными.

      Что касается корпуса, тут я с вами частично соглашусь, хотя Jonsbo предлагает довольно удачные корпуса для NAS на 5 дисков. Они хорошо смотрятся и система охлаждения у них продумана.

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

      Насчет подключеня бэкплейна, на мой взгляд лучше SFF-8643 ничего не придумать. Почему? - потому как дешево и сердито.


      1. PwrUsr
        00.00.0000 00:00

        Еще раз напомню - у меня большой опыт именно самосбора, отсюда у меня разумеется есть перекосы:

        зачем х8 ? затем что в самосборе как правило используется б/у серверное оборудование и самая дешевизна это SAS2008 и Mellanox Connectx-2, они на PCI-E v2 и разумеется их можно воткнуть в х4 и даже х1 (я пробовал - работает) - но физически они х8 а если делать слоты х4 они не влезут

        так что поправочка - физически слоты должны быть х8... для совместимости и модульности, линий конечно может быть и 4 и 1...

        насчет хот-свопа:

        хот-своп вещь хорошая, но удорожает (покрайней мере в самосборе) - есть, как я писал выше, полухотсвоп - как на MiniProliante - для SOHO где есть какой-то аникейщик думаю это не проблемма - всё таки диски не часто меняются... но опять же всё от цены зависит...

        насчет корпусов:

        SOHO и домашнии НАСы имеют один нюанс, мы счас не рассматриваем 2дисковые варианты с зеркалом:

        этот нюанс заключается в том, что в большенстве случаев "на полочке не лижит запасной диск" я уже не говорю про хот-спаре, именно из-за цены... потому надо четку определится с избыточностью, имхо опять же для ценных данных (бэкап это конечно хорошо, но в 90+ % случаев НАСы никто не бэкапит) и если НАС хотя бы на 4 диска, то это скорее всего RAD5/RAIDZ1 , и при вылете диска остается страйп... потому корпус на 5 дисков не туда не сюда, для "большого" домашнего/СОХО НАСа , имхо это 6 дисков минимум (4+2) или больше...

        и вот тут с корпусами проблемаа....

        а так же проблемма с бэкпленом - так как "SAS конекторы" это 4 диска или 8, а 6 как-то по середине проваливается

        в конце фотка полу-хотсвопа на микросервере g10 кажется... (только что сфоткал, диск просто для примера - IDE туда не ставится :) )


    1. sdy Автор
      00.00.0000 00:00

      Насчет 11 пина, на всех пинаутах, которые я встречал, про это ничего не говорится. Это земля вроде как. Нашел только вот такое. Странное объяснение. Надо будет разобраться, какие еще варианты кроме земли могут быть.


      1. dartraiden
        00.00.0000 00:00

        Про одиннадцатый тоже ничего не встречал. Третий — да, может доставлять проблемы, если накопитель поддерживает SATA 3.3, а блок питания нет.


  1. DAzgluk
    00.00.0000 00:00

    Из того что уже есть на рынке:

    CWWK nas board, их там две, на базе n6005 и j6413

    От них же есть готовое решение AIO-T6

    Ещё есть одноплатники от hardkernel odroid. У них есть решения как на arm, так и на x86

    В целом ниша интересная конечно, но конкурировать придется например с terramaster f4-423


    1. sdy Автор
      00.00.0000 00:00

      За ссылки спасибо, всегда приятно посмотреть на готовые решения.

      Не вижу проблем с конкуренцией, так как это рынок готовых решений. Чисто пошел и купил.

      С другой стороны купить нечто готовое и пересобрать его для себя вряд ли кто этим будет заниматься. Такому проще поискать открытые проекты, посмотреть на разные варианты и собрать кастомный дивайс. Вот для таких мы и собираемся двигать наш проект.