portapack-mayhem/mayhem-firmware で、受信専用ビルドをする

送信系のアプリを全て削除したファームウェアのビルドの仕方。

本来は SETTINGS/blacklist で制御できるのだけれど、私の個体では何かの拍子に消えてしまうので、次善の策として最初から入っていないものを作った。

基本的には今回も Using ARM on Debian の通り。

環境は以下の通り。

user@host:~$ uname -a
Linux host 5.15.146.1-microsoft-standard-WSL2 #1 SMP Thu Jan 11 04:09:03 UTC 2024 x86_64 GNU/Linux

user@host:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
user@host:~$ sudo apt update
user@host:~$ sudo apt-get install -y git tar wget dfu-util cmake python3 bzip2 lz4 curl hackrf python3-distutils python3-setuptools python3-yaml
user@host:~$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; python3 get-pip.py
user@host:~$ export PATH=/home/user/.local/bin:$PATH
user@host:~$ pip install pyyaml (上で python3-yaml を入れているので不要)
user@host:~$ sudo mkdir /opt/build && cd /opt/build
user@host:/opt/build$ sudo wget -O gcc-arm-none-eabi.tar.bz2 'https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2?revision=108bd959-44bd-4619-9c19-26187abf5225&rev=108bd95944bd46199c1926187abf5225&hash=E367D388F6429B67D5D6BECF691B9521'

user@host:/opt/build$ sudo mkdir armbin
user@host:/opt/build$ sudo tar --strip=1 -xjvf gcc-arm-none-eabi.tar.bz2 -C armbin

user@host:/opt/build$ echo 'PATH=/opt/build/armbin/bin:/opt/build/armbin/lib:/home/user/.local/bin:$PATH' >> ~/.bashrc
user@host:/opt/build$ source ~/.bashrc
user@host:/opt/build$ cd /opt

最新のリポジトリをひっぱってくるとビルドエラーになりやすいので、リリースバージョンを指定して clone する。

user@host:/opt$ sudo git clone --recurse-submodules https://github.com/portapack-mayhem/mayhem-firmware.git -b v2.0.1
user@host:/opt$ sudo chown -R user:user /opt/mayhem-firmware
user@host:/opt$ cd /opt/mayhem-firmware/
user@host:/opt/mayhem-firmware$ mkdir build && cd build
user@host:/opt/mayhem-firmware/build$ cmake ..
user@host:/opt/mayhem-firmware/build$ make

ひとまずビルドできることまで確認する。

組み込まれている送信系アプリをメニューから外す。

user@host:/opt/mayhem-firmware/build$ cd ../firmware/application/
user@host:/opt/mayhem-firmware/firmware/application$ cp ui_navigation.cpp ui_navigation.cpp.org
user@host:/opt/mayhem-firmware/firmware/application$ vi ui_navigation.cpp

編集は vi でなくてもよい。

183行目付近に以下のようなところがある。

    /* TX ********************************************************************/
    {"adsbtx", "ADS-B TX", TX, ui::Color::green(), &bitmap_icon_adsb, new ViewFactory<ADSBTxView>()},
    {"aprstx", "APRS TX", TX, ui::Color::green(), &bitmap_icon_aprs, new ViewFactory<APRSTXView>()},
    {"bht", "BHT Xy/EP", TX, ui::Color::green(), &bitmap_icon_bht, new ViewFactory<BHTView>()},
    {"bletx", "BLE Tx", TX, ui::Color::green(), &bitmap_icon_btle, new ViewFactory<BLETxView>()},
    {"morse", "Morse", TX, ui::Color::green(), &bitmap_icon_morse, new ViewFactory<MorseView>()},
    //{"nuoptixdtmf", "Nuoptix DTMF", TX, ui::Color::green(), &bitmap_icon_nuoptix, new ViewFactory<NuoptixView>()},
    {"ooktx", "OOK", TX, ui::Color::yellow(), &bitmap_icon_remote, new ViewFactory<EncodersView>()},
    {"pocsagtx", "POCSAG TX", TX, ui::Color::green(), &bitmap_icon_pocsag, new ViewFactory<POCSAGTXView>()},
    {"rdstx", "RDS", TX, ui::Color::green(), &bitmap_icon_rds, new ViewFactory<RDSView>()},
    {"soundbrd", "Soundbrd", TX, ui::Color::green(), &bitmap_icon_soundboard, new ViewFactory<SoundBoardView>()},
    {"sstvtx", "SSTV", TX, ui::Color::green(), &bitmap_icon_sstv, new ViewFactory<SSTVTXView>()},
    {"touchtune", "TouchTune", TX, ui::Color::green(), &bitmap_icon_touchtunes, new ViewFactory<TouchTunesView>()},

これを、

    /* TX ********************************************************************/
    /*
    {"adsbtx", "ADS-B TX", TX, ui::Color::green(), &bitmap_icon_adsb, new ViewFactory<ADSBTxView>()},
    {"aprstx", "APRS TX", TX, ui::Color::green(), &bitmap_icon_aprs, new ViewFactory<APRSTXView>()},
    {"bht", "BHT Xy/EP", TX, ui::Color::green(), &bitmap_icon_bht, new ViewFactory<BHTView>()},
    {"bletx", "BLE Tx", TX, ui::Color::green(), &bitmap_icon_btle, new ViewFactory<BLETxView>()},
    {"morse", "Morse", TX, ui::Color::green(), &bitmap_icon_morse, new ViewFactory<MorseView>()},
    //{"nuoptixdtmf", "Nuoptix DTMF", TX, ui::Color::green(), &bitmap_icon_nuoptix, new ViewFactory<NuoptixView>()},
    {"ooktx", "OOK", TX, ui::Color::yellow(), &bitmap_icon_remote, new ViewFactory<EncodersView>()},
    {"pocsagtx", "POCSAG TX", TX, ui::Color::green(), &bitmap_icon_pocsag, new ViewFactory<POCSAGTXView>()},
    {"rdstx", "RDS", TX, ui::Color::green(), &bitmap_icon_rds, new ViewFactory<RDSView>()},
    {"soundbrd", "Soundbrd", TX, ui::Color::green(), &bitmap_icon_soundboard, new ViewFactory<SoundBoardView>()},
    {"sstvtx", "SSTV", TX, ui::Color::green(), &bitmap_icon_sstv, new ViewFactory<SSTVTXView>()},
    {"touchtune", "TouchTune", TX, ui::Color::green(), &bitmap_icon_touchtunes, new ViewFactory<TouchTunesView>()},
    */

のようにしてコメントアウトする。

user@host:/opt/mayhem-firmware/firmware/application$ cd ../../build/
user@host:/opt/mayhem-firmware/build$ make clean
user@host:/opt/mayhem-firmware/build$ make

これでビルドが完了すること。

次に external なアプリについて。

user@host:/opt/mayhem-firmware/build$ ls -alF firmware/firmware_tar/APPS/
total 292
drwxr-xr-x 2 user user  4096 May 17 23:07 ./
drwxr-xr-x 4 user user  4096 May 17 23:07 ../
-rw-r--r-- 1 user user 20040 May 17 23:07 afsk_rx.ppma
-rw-r--r-- 1 user user 14104 May 17 23:07 analogtv.ppma
-rw-r--r-- 1 user user  7068 May 17 23:07 audio_test.ppma
-rw-r--r-- 1 user user 21368 May 17 23:07 blespam.ppma
-rw-r--r-- 1 user user 10008 May 17 23:07 calculator.ppma
-rw-r--r-- 1 user user 11172 May 17 23:07 coasterp.ppma
-rw-r--r-- 1 user user  2168 May 17 23:07 extsensors.ppma
-rw-r--r-- 1 user user   992 May 17 23:07 font_viewer.ppma
-rw-r--r-- 1 user user 19556 May 17 23:07 foxhunt_rx.ppma
-rw-r--r-- 1 user user 14448 May 17 23:07 gpssim.ppma
-rw-r--r-- 1 user user 16728 May 17 23:07 jammer.ppma
-rw-r--r-- 1 user user 13512 May 17 23:07 keyfob.ppma
-rw-r--r-- 1 user user 16680 May 17 23:07 lcr.ppma
-rw-r--r-- 1 user user 14224 May 17 23:07 lge.ppma
-rw-r--r-- 1 user user 17900 May 17 23:07 nrf_rx.ppma
-rw-r--r-- 1 user user 16832 May 17 23:07 pacman.ppma
-rw-r--r-- 1 user user 20748 May 17 23:07 spainter.ppma
-rw-r--r-- 1 user user  5064 May 17 23:07 tetris.ppma
-rw-r--r-- 1 user user  2836 May 17 23:07 wardrivemap.ppma

user@host:/opt/mayhem-firmware/build$ ls -alF firmware/firmware_tar/FIRMWARE/
total 1032
drwxr-xr-x 2 user user    4096 May 17 23:07 ./
drwxr-xr-x 4 user user    4096 May 17 23:07 ../
-rw-r--r-- 1 user user 1048576 May 17 23:07 portapack-mayhem_dev.bin

マイクロSD カード向けに以上のようなファイルが作られているので、

  • blespam.ppma
  • gpssim.ppma
  • jammer.ppma
  • keyfob.ppma
  • lcr.ppma
  • lge.ppma
  • spainter.ppma
  • coasterp.ppma

を削除しておく。

最後にバージョン番号表示について。

cmake の前に

user@host:/opt/mayhem-firmware/build$ export VERSION_STRING="v2.0.1_rx"

のようなことをしておくと、それが反映されるらしい。

ちなみに元々使っていた blacklist は以下の通り。

ADS-B TX
APRS TX
BHT Xy/EP
BLE Tx
Morse
OOK
POCSAG TX
RDS
Soundbrd
SSTV
TouchTune
BLESpam
BurgerPgr
GPSSim
Jammer
Keyfob
TEDI/LCR
LGE
S.Painter

Add a comment

Fields followed by * are mandatory

HTML code is displayed as text and web addresses are automatically converted.

Add ping

Trackback URL : https://www.pseudomoon.jp/dotclear/index.php?trackback/215

Page top