Мелкие косячки

Добрый день!
В одной из поставок контроллер пришел без прошивки. Starting kernel и тишина. wb6_update_FACTORYRESET.fit помог.
В другой поставке контроллеры с knx пришли с винтовыми разъемами вместо knx фишек, как раньше.
Наверное, не повезло.

Здравствуйте! Извиняемся за недоразумение. Напишите, пожалуйста серийные номера контроллера и модулей, а также номера заказов. Мы проверим и постараемся разобраться, чтобы не допустить это в будущем.

По клеммам - 2 шт из заказа 181627
Не прошитый - 1 из заказа 180336. Остальные 6 прошитые.

Уточнил: модули KNX теперь поставляются с такими разъемами. Так и должно быть.

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

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

Логов не осталось. Я использую свой софт, поэтому гружусь с /dev/mmcblk0p3 и заливаю подготовленный образ на /dev/mmcblk0p2. Потом гружусь с /dev/mmcblk0p2 и заливаю на /dev/mmcblk0p3 и /dev/mmcblk0p6. Конечно лучше бы сделать свой fit для прошивки через usb, но пока не разбирался с этим. Некоторое время назад я разбирал wb6_update_FACTORYRESET.fit. Понятно, что можно заменить в нем root имидж, но у меня с ходу не получилось. Может, есть какая либо инструкция по сборке fit для wb?

https://wirenboard.com/wiki/Сборка_образов_прошивки

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

Ну и в целом мы делаем не очень привычный для рынка KNX продукт. Так что я думаю, что те клиенты, которые используют только благословлённый ассоциацией специальный кабель и верят в особые свойства красно-серых клемм, редко используют Wiren Board.

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

Что можно сделать сейчас:

  1. Купить и поставить зелёную ответную часть клеммника, но с пружинными контактами. При большом заказе это можно сделать через нас.

Вот нужный артикул: 15EDGKN-3.5-03P-14-00A(H) / 15EDGKN-3.5 / На кабель / Серия 15EDG / Разъемные клеммники / DEGSON

  1. Заказать у нас сразу 50 контроллеров с KNX-модулями, тогда мы соберём их сразу с красно-серыми клеммниками

Евгений, спасибо, получилось собрать образ с моей rootfs. Осталось поправить скрипт, отвечающий за установку, чтобы автоматом форматировал /dev/mmcblk0p6 - у меня все помещается в readonly root. А /dev/mmcblk0p6 только для данных.

По поводу сборки партии я уже интересовался. Кроме клемм knx мне еще надо убрать лишние разъемы. Александра Александрова написала, что это возможно.

Партию мне надо заказывать по любому, но сейчас рассматриваю альтернативные варианты. Есть похожее устройство на imx6 с knx и уже без лишних интерфейсов.

Спасибо!

Евгений, добрый день!
Обратил внимание, что в скрипте install_update.sh копируется сертификат в root. Правильно ли я понимаю, что без этого сертификата контроллер не загрузит root ? И второй вопрос - могу ли поменять этот сертификат, чтобы пользователь не мог загружать стандартные прошивки wb ? Или это можно сделать каким то другим способом ? Типа secureboot ?

не совсем понял, что вы имеете в виду под “не загрузит root”.
Некоторый наш софт использует, трогать это не надо. Если будете трогать - техподдержки не будет никакой, потому что в таких деталях разбираются только разработчики конкретных компонентов.

нет, см. ответ выше.

Опишите пожалуйста подробнее задачу, потому что я её пока не очень понял. Чем более издалека - тем лучше.

Зачем запрещать пользователю загружать стандартные прошивки? Если у вас используется кастомный софт, то я могу представить, зачем запрещать запускать ваш кастомный софт на купленных отдельно WB6, но зачем наоборот?

в этом процессоре он не очень удобный. Ну и “удобный” secureboot - это всего лишь 10 дополнительных шагов в сборке образа, отдельный security reference manual на 700 страниц под NDA про процедуру, несколько испорченных контроллеров, пока всё это будете отлаживать. А потом оно всё равно обойдётся через какую-нибудь плохо прикрытую дыру в юзерспейсе.
Или вы всё сделаете правильно, а производитель процессора сделает вот так.

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

Контроллер я использую только как железку с imx6. Свой образ начал с apt remove wb*. Сам добавляю ncn5120 в device tree.

Для защиты своих программ ставлю Sentinel HL Max Micro.

Так что это именно кастомный контроллер.

Вопрос мой связан с защитой. Можно ли как либо защитить root целиком от копирования - то есть загрузиться с чужой флешки и скопировать root. (fw_timeout я ставлю в 0, консоль на ttymxc0 отключаю)

Ну и вопрос не просто так. Принесли - сказали работать перестал. А там явно покопались. Поменяли shadow и т.д. Правда я тогда еще не ставил fw_timeout в 0. Инсталляторы народ любопытный… И контроллер все знают.

Даже если отключить в Uboot возможность загрузиться - то можно же просто сдуть EMMC и переставить на другую плату.
Тут можно использовать аппаратный ATECC608A

У больших инсталляторов есть специалисты по линукс, у которых руки чешутся. Но до переноса emmc думаю не дойдет. В плане защиты с использованием ATECC608A куда копать не подскажите? Пока что я ее использую только для привязки своего софта к контроллеру. Ну и поверх накатываю защиту кода sentinel ключом.

В принципе, если fw_timeout=0 дает минимальную защиту от копирования root, то уже неплохо. Надо мне будет помимо наличия fw_reset_file добавить поиск еще какого ни будь файла на флешке в качестве дополнительного условия для запуска обновления.

Если fw_timeout=0, и у пользователя нет пароля linux, то пользователь никак не сможет поменять u-boot env?

bootdelay -2 конечно имелось ввиду. Не fw_timeout.

Так а зачем защищаться от копирования, если ваше ПО к аппаратному токену привязано? Его-то точно не скопируют.

Кстати вместо стороннего аппаратного токена можете использовать ATECC608A, установленный внутри Wiren Board 6.

Кстати, мы это по-моему уже с вами всё обсуждали год назад: Atecc608a - #6 от пользователя EvgenyBoger

Посмотреть можно тут: CryptodevATECCx08 Auth — Wiren Board
и тут Аутентификация устройств на Linux по аппаратному ключу в системах верхнего уровня / Хабр

он может подклчюиться к отладочной консоли через imx_usb_loader/uuuu и залить свой юбут в оперативку через bootrom процессора. Или e.mmc снять. Или подпаяться к контактам emmc, не снимая её. Или найти дыру в пользовательском ПО.

Добрый день! Мы действительно обсуждали год назад. Я тогда выбрал sentinel, т.к. я его уже использовал на intel. У sentilel есть устройства под все мои потребности. Есть компактное для wb, есть в разъем шлейфа на материнке. Единое ПО под разные платформы. Вопрос сейчас встал опять, т.к. надо изготовить партию 40шт din реечных устройств. Но наверное не буду заморачиваться. Sentinel работает и ладно.

Евгений, добрый день! Решил все таки попробовать ATECC608A.

openssl engine ateccx08 -vv
(ateccx08) Microchip ATECCx08 Engine
VERSION: Get engine version
GET_DEVICE_KEY: Get engine key structure for DEVICE_KEY_SLOT and stores in the provided file
SET_KEY_SLOT: Where to find the device private key

проблем нет

openssl req -new -engine ateccx08 -keyform engine -key ATECCx08:00:04:C0:00 …
генерирует

Но вот с openvpn проблемы. Версия 2.4 не видит ateccx08
Версия openvpn 2.5.3 видит
openvpn --show-engines
Dynamic engine loading support [dynamic]
Microchip ATECCx08 Engine [ateccx08]

Но при запуске клиента пишет
Options error: --key fails with ‘engine:ateccx08:ATECCx08:00:04:C0:00’: No such file or directory (errno=2)

Все вроде сделал. В группу i2c прописал. Такое ощущение, что openvpn не понимает engine в качестве ключа.

Вот мы что-то такое с openvpn делали, не знаю, насколько это актуально: https://github.com/wirenboard/contrib/tree/master/openvpn-2.4.6

Спасибо! А то я мучаюсь. Нашел вроде подходящий патч engine method for loading the key но не пойму к какой версии openvnc. Сейчас попробую.