M5StickC Plus2 (BRUCE 1.15) — полный гайд

Когда я впервые увидел M5StickC Plus2, это была любовь с первого взгляда. Крошечный ESP32-девайс размером с брелок, с экраном, батареей и кучей пинов — за смешные деньги. Но стоковая прошивка — это скучно. А вот Bruce превращает эту безделушку в нечто совершенно иное.
Это не обзор и не реклама. Это честный гайд от человека, который прошёл путь от «что это за хрень» до «почему у меня в кармане устройство, которым можно ронять Wi-Fi сети». Всё на русском, без воды, с реальными граблями.
Что такое Bruce и почему именно он
Bruce — это опенсорсная прошивка для ESP32-устройств, заточенная под оффенсив-секьюрити. Изначально она создавалась как альтернатива Flipper Zero для тех, у кого бюджет $20-30, а не $200. Автор проекта — pr3y, репозиторий живёт на GitHub в BruceDevices/firmware.
Прошивка работает на M5Stack Cardputer, StickC Plus 1.1 и Plus 2, StickS3, M5Core, Core2, а также на платах Lilygo T-Deck и T-Embed. Именно Bruce превращает эти карманные устройства в RF-инструменты — Sub-GHz (CC1101) и 2.4 ГГц (nRF24L01+).
Актуальный релиз — Bruce 1.15, вышел 25 мая 2026 года. На момент написания статьи это самая стабильная сборка.
Что умеет M5StickC Plus2 под Bruce
Таблица возможностей с официального репозитория:
Функция | M5StickC Plus2 |
|---|---|
CC1101 (Sub-GHz) | Да |
nRF24 (2.4 ГГц) | Да |
FM-радио | Да |
PN532 (NFC/RFID) | Да |
Микрофон | Да |
BadUSB | Да¹ |
RGB LED | Нет |
Спикер | Тон |
Fuel Gauge | Нет |
LITE_VERSION | Нет |
¹ — с оговоркой: на Plus2 BadUSB работает только через Bluetooth, об этом ниже.
Железо: что внутри и почему это важно
Прежде чем прошивать, нужно понимать, с чем работаешь. M5StickC Plus2 — это ESP32-PICO-V3-02 на 240 МГц (двухъядерный), 2 МБ PSRAM, 8 МБ флеша. Экран 1.14 дюйма, 135×240, драйвер ST7789V2.
Ключевой момент: в отличие от Plus 1.1, в Plus2 нет чипа управления питанием AXP192. Уровень заряда и подсветка экрана управляются напрямую через GPIO. Это важно для прошивки — не суйте в Plus2 сборки от старых версий.
Распиновка для радиомодулей (запомните, пригодится):
SPI CLK: GPIO 13
SPI MOSI: GPIO 15
I2C SDA: GPIO 21
I2C SCL: GPIO 22
Полный пинмап есть в даташите M5Stack, но эти четыре — базовые для подключения CC1101 и nRF24.
Прошивка: три способа, от простого к сложному
Способ 1: Web-флешер (рекомендую)
Самый быстрый путь. Открываете Chrome или Edge, идёте на bruce.computer/flasher, подключаете StickC Plus2 через USB-C, выбираете в списке плату m5stack-cplus2 и жмёте Flash.
Важно: выбирайте именно свою плату. Неверный board target — одна из главных причин, почему потом ничего не работает.
Способ 2: M5Launcher OTA
Если у вас уже стоит M5Launcher (а он стоит, я надеюсь), можно обновляться по воздуху. Удобно для быстрых апдейтов, не надо каждый раз дёргать кабель.
Способ 3: m5burner
Десктопное приложение от M5Stack. Если вы уже им пользуетесь — вперёд. Но для новичка web-флешер проще.
После прошивки: первый запуск может занять секунд 10-15. Устройство создаёт файловую систему в LittleFS, настраивает конфиги. Не паникуйте, если экран чёрный — подождите.
Самая частая проблема: «CC1101 / nRF24 Not Found»
Если вы вставили внешний RF-модуль и увидели это сообщение — радиомодуль почти наверняка жив. Это самая распространённая жалоба, и причины почти всегда одинаковые.
Причины по порядку вероятности:
Старая прошивка. Сборки 1.12 и 1.13 имели баги с таймингом SPI и управлением питанием. Обновление до 1.15 решает проблему.
Неверная распиновка в BrucePins.conf. Радиомодули подключены к конкретным пинам CS и IRQ, которые должны быть объявлены правильно.
Модуль не выбран в меню. Bruce по умолчанию может не указывать на ваш внешний CC1101/nRF24, пока вы вручную не выберете его.
Неплотная посадка модуля. Просто переткните — бывает, контакт плохой.
Как чинить:
Зайдите в RF → Config → RF Module, выберите CC1101 (on SPI / Legacy), перезагрузите устройство. Если не помогло — редактируйте BrucePins.conf. На некоторых устройствах его нужно менять и на SD-карте, и в LittleFS одновременно.
BadUSB: важный нюанс
Вот здесь很多人 спотыкаются. M5StickC Plus2 не имеет нативного USB HID через USB-C порт. ESP32-PICO-V3-02 подключён через USB-UART мост, поэтому хост видит последовательное устройство, а не клавиатуру.
Что это значит: BadUSB через кабель не работает. Точка.
Что работает: BLE BadUSB — Bruce эмулирует Bluetooth-клавиатуру и выполняет DuckyScript по воздуху. Это реально работает, я проверял.
Как запускать:
Кладёте .txt файлы DuckyScript в папку
/badusb/на SD-картеВ Bruce: BadUSB → BLE (не USB)
Спариваетесь с целевым устройством по Bluetooth
Выбираете скрипт и запускаете
Пример простого payload:
REM Example payload
DELAY 1000
GUI r
DELAY 500
STRING notepad
ENTER
DELAY 300
STRING Hello from Bruce!
ENTER
WiFi и BLE: что реально, а что хайп
WiFi Responder
Это Karma-style атака: устройство слушает probe-запросы от телефонов и ноутбуков, которые ищут известные сети, и отвечает «да, я та сеть». Технически — как PineAP на WiFi Pineapple, но за $25.
Грабли: ESP32 не умеет делать широкополосный jamming. Deauth-атаки работают только против старых сетей без PMF (Protected Management Frames). Современные роутеры и 5 ГГц сети игнорируют это.
BLE Presenter
Работает как Bluetooth-клавиатура для управления презентациями. Кнопка A (большая спереди) — следующий слайд, кнопка B (боковая) — предыдущий.
Если не работает:
Удалите устройство из Bluetooth на компьютере и спарьте заново
Проверьте, что презентация в фокусе (активное окно)
На macOS проверьте, что статус «Connected», а не просто «Paired»
Bluetooth Spam
Работает, но плохо без внешней антенны. Встроенная антенна слишком слабая, чтобы пробить фильтры современных смартфонов. С внешним nRF24L01+ ситуация кардинально улучшается.
IR: не ждите чудес
Встроенный IR-передатчик на Plus2 — это базовый TV-B-Gone с коротким радиусом действия. Работает только в прямой видимости и на близком расстоянии (<10 см для надёжного приёма).
Проблемы:
Проекторы используют другие частоты и протоколы — база кодов Bruce может не иметь нужного производителя
Если не работает — проверьте через камеру смартфона, мигает ли IR-светодиод
Совет: поднесите StickC Plus2 почти вплотную к приёмнику устройства. Не ждите работы с 3 метров, как в рекламе Flipper Zero.
JavaScript-интерпретатор: скрытая жемчужина
В Bruce встроен MicroQuickJS — можно писать кастомные скрипты для автоматизации.
Пример — мигание LED и вывод информации:
// Display hello world
var display = require("display");
display.setTextSize(2);
display.setTextColor(display.color(255, 255, 255));
display.drawString("Hello from llelv!", 10, 10);
// Blink notification
var notification = require("notification");
notification.blink(3000);
// Device info
var device = require("device");
const name = device.getName();
const battery = device.getBatteryCharge();
console.log(`Device: ${name}, Battery: ${battery}%`);
Доступные модули: Display, WiFi, BadUSB, IR, Sub-GHz, GPIO, Storage, Audio, RFID и другие. Если вам мало стандартного функционала — можно накодить своё.
Serial-команды: управление из терминала
Bruce понимает команды через Serial (115200 baud, 8N1). Большинство совместимы с Flipper Zero CLI.
Примеры:
# Отправить IR-сигнал
ir tx NEC 04000000 08000000
# Прочитать RF-сигнал (10 секунд)
subghz rx 10
# Воспроизвести тон
tone 1000 500
# Перевести в сон
power sleep
# Управление GPIO
gpio set 25 1
Через WebUI (bruce.local) тоже работает. По умолчанию логин admin, пароль bruce. Смените их, если не хотите, чтобы сосед по Wi-Fi поигрался с вашим устройством.
Честный итог: кому это надо
M5StickC Plus2 + Bruce 1.15 — это не Flipper Zero. Это не готовый продукт, это конструктор для тех, кто готов возиться.
Плюсы:
Цена в 5-10 раз ниже Flipper
Активное сообщество, частые обновления
JavaScript для кастомизации
Реально работает Sub-GHz с внешним модулем
Минусы:
Нет USB HID через кабель (только BLE)
Встроенные антенны слабые — без внешних модулей радиус действия смешной
Нужно самому докупать CC1101, nRF24, PN532 и паять
Не для «купил-включил-работает»
Если вы хотите устройство «из коробки» — берите Flipper. Если хотите понимать, как это работает, и не боитесь паяльника — StickC Plus2 + Bruce даст вам больше за меньшие деньги.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.