91 lines
6.1 KiB
Markdown
91 lines
6.1 KiB
Markdown
---
|
||
Author: UT3UMS
|
||
Title: Прошивка Meshtastic модему TBEAM
|
||
Description: Прошивка TBEAM модему для роботи з Meshtastic
|
||
---
|
||
|
||
# Self build
|
||
|
||
Для зборки проєкту нам знадобиться
|
||
[platformio](https://docs.platformio.org/en/latest/core/installation/shell-commands.html)
|
||
([PlatformIO · GitHub](https://github.com/platformio), open source) це
|
||
набір скриптів, конфігурацій, темплейтів, тощо для роботи
|
||
embedded-розробників. Щось на кшталт pip/npm.
|
||
`platformio.ini`{.verbatim} - конфігураційний файл в корені проєкту
|
||
визначає архітектуру, специфічні потреби, параметри компіляції.
|
||
Існтрумент `platformio`{.verbatim} або скорочено `pio`{.verbatim}
|
||
самостійно завантажує потрібний тулчейн, налаштовує і виконує збірку
|
||
прошивки та заливку артефактів збірки на пристрої. Без цього, я думаю,
|
||
збирати тулчейн для плати буде складніше. Особливо людям без досвіду в
|
||
embedded.
|
||
|
||
Реокмендований офіційним сайтом спосіб встановлення platformio
|
||
|
||
``` {#станом на <2023-07-22 Sat 00:43> це офіційні рекомендації команди platformio по встановленню існтурментарію .bash org-language="sh" eval="never"}
|
||
wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py
|
||
python3 get-platformio.py
|
||
|
||
# наступні кроки для того, щоб систем "знала" про pio, яке буде встановлене у директорю користувача
|
||
sudo ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
|
||
# або додайте ~/.platformio/penv/bin/pio в змінну $PATH, як це зробити залежить від багатьох факторів вашої системи
|
||
```
|
||
|
||
Нам знадобиться вихідний код meshtastic, який ми будемо модифікувтаи.
|
||
Крім того я використовував деякі скрипти з директорії
|
||
`firmware/bin`{.verbatim}, але про це згодом.
|
||
|
||
``` {#отримання вихідного коду meshtastic .bash org-language="sh" eval="never"}
|
||
git clone https://github.com/meshtastic/firmware.git && cd meshtastic && git submodule update --init
|
||
```
|
||
|
||
На цьому етапі вам має бути доступний код meshtastic. Для прикладу
|
||
[змінимо максимальну
|
||
потужність](https://wikimesh.pp.ua/uk/%D0%BD%D0%B0%D0%BB%D0%B0%D1%88%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F/%D0%97%D0%B1%D1%96%D0%BB%D1%8C%D1%88%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BF%D0%BE%D1%82%D1%83%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%96)
|
||
передавача для мого регіону та [додаму українські
|
||
літери](https://wikimesh.pp.ua/uk/%D0%BD%D0%B0%D0%BB%D0%B0%D1%88%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F/%D0%A3%D0%B2%D1%96%D0%BC%D0%BA%D0%BD%D0%B5%D0%BD%D0%BD%D1%8F_%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D0%BE%D1%97_%D0%BC%D0%BE%D0%B2%D0%B8)
|
||
у екранний шрифт.
|
||
|
||
Трохи почитавши інтернет та сам файл конфігурації
|
||
`platformio.ini`{.verbatim} я знайшов два способи запустити збірку
|
||
проєкту:
|
||
|
||
``` {#збірка з указанням оточення (environment) .bash org-language="sh" eval="never"}
|
||
pio run -e tbeam
|
||
```
|
||
|
||
або просто відредагувати `platformio.ini`{.verbatim} розкоментувавши
|
||
своє оточення і закоментувавши решту. У мене плата Lilygo Tbeam, тому у
|
||
моєму конфізі буде щось таке:
|
||
|
||
``` example
|
||
[platformio]
|
||
default_envs = tbeam
|
||
```
|
||
|
||
Не зважаючи на успішний білд, команда прошивки
|
||
`pio run -t upload`{.verbatim} повернула незрозумілі помилки контрольних
|
||
сум. Можливо в цьому винне саме моє оточення - чув що робота esptool для
|
||
ядер :+ ще не стабільна. В будь-якому, на цьому кроці я вже маю артифакт
|
||
`firmware.bin`{.verbatim}. `pio`{.verbatim} поклав їх в піддиректорію
|
||
проєкту: `.pio/build/tbeam/firmware.bin`{.verbatim}
|
||
|
||
``` {#meshtastic build + flash, .bash org-language="sh" eval="never"}
|
||
pio run -t upload
|
||
```
|
||
|
||
Намагаючись розібратися з прошивкою, я запустив
|
||
`esptool chip_id`{.verbatim}, программа звалилась на середині роботи,
|
||
через неможливість відкрити такий файл:
|
||
`/usr/lib/python3/dist-packages/esptool/targets/stub_flasher/stub_flasher_32.json`{.verbatim}.
|
||
Документація каже що це готові шаблони пам\'яті, які esptool закидує в
|
||
пристрій при прошивці. Простого підкладання файлу з офіційного
|
||
репозиторію на місце допомогла запустити `esptool`{.verbatim}, але
|
||
`pio`{.verbatim} все ще скаржився на md5. В решті решт я натрапив на
|
||
скріпт у директорії `./bin`{.verbatim}. Скріпт закінчився із
|
||
попередженнями та помилками, але прошивка пройшла успішно. Після
|
||
кофігурації присторю я побачив українську мову на дисплеї і зміг
|
||
виставити рівень 14dBm, а не дефолтні 12.
|
||
|
||
``` {#Альтернативний спосіб прошивки .bash org-language="sh" eval="never"}
|
||
./bin/device-install.sh -f ../.pio/build/tbeam/firmware.bin
|
||
``` |