notes/hw/tbeam-firmware-ut3ums.md

91 lines
6.1 KiB
Markdown
Raw Normal View History

2023-07-22 23:48:53 +03:00
---
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
```