Как прописывается модуль связи в /etc/wb-hardware.conf

Добрый день!
Есть задача первоначального конфигурирования WirenBoard автоматически → человек не будет заходить на web-интерфейс и выбирать модуль связи, чтобы он корректно прописался в wb-hardware.conf.
Контроллеры перед настройкой модуля связи будут обновляться с помощью latest.fit прошивкой соответствующей “железу” (7.2.1, 6.9.1 и т.д.).
Из имеющихся на руках контроллеров получил следующую картину:

Hardware: 7.2.1
{
“id”: “wb72-wbc”,
“name”: “Modem slot”,
“compatible”: [
“wbc-usb”
],
“module”: “wbc-4g-usb”,
“options”: {}
}

Hardware: 6.9
{
“id”: “wb67-wbc”,
“name”: “Modem slot”,
“compatible”: [
“wbc”
],
“module”: “wbc-4g”,
“options”: {}
}

Вопросы следующие:

  1. Зависит ли от версии wb-**** прошивки то, как будет прописываться модуль связи в wb-hardware.conf? (По идее ставя последнюю fit прошивку этот вопрос не должен быть актуален, но всё же)
  2. Насколько я понял, главная зависимость - это версия “железа”. Можете ли написать логику (правила) как от версии железа прописать модуль связи?

Все модули связи идут предустановленные с контроллерами.

Не совсем понятно.
Но логика следующая:
Определяется версия контроллера из DTC. Затем по этой верси выбираетсяшаблон для hwconf, например /usr/share/wb-hwconf-manager/wb-hardware.conf.wb72x-73x - и он используется для создания уже рабочего, симлинк на который /etc/wb-hardware.conf
Уже из шаблона, по строке
“id”: “wb72-wbc”,
выбирается
/usr/share/wb-hwconf-manager/slots/wb72-wbc.def

То есть выбор основывается на /sys/firmware/devicetree/base/model

Вот выше описал.
В плане модема разница в том что на 6.7 на разъем модема выведен UART а на 7.x - нет, только USB.

1 лайк

То есть:
Для версий >7 будет приписка usb в compatible и module
“compatible”: [
“wbc-usb”
],
“module”: “wbc-4g-usb”,
а для версия >6.7 && <7 её не будет
“compatible”: [
“wbc”
],
“module”: “wbc-4g”,
Правильно?

А вот насчёт id не подскажете, есть ли способ программно определить, в какой шаблон смотреть, чтобы id оттуда взять? В /proc/device-tree/wirenboard есть board-reversion, но он возвращает 7.2.1.
Или только ручками самому матчить?

Да, верно.

А можно посмотреть как сам hwconf делает: wb-hwconf-manager/config.py at d03cd4f4bb57a7ec963907abe436cc8a8e2acdaa · wirenboard/wb-hwconf-manager · GitHub

Там просто списком захардкожено соответствие платы - версии.

1 лайк

Посмотрел, принцип понятен. Спасибо за помощь!

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.