Когда я впервые увидел 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 даст вам больше за меньшие деньги.
Автор: llelv. По вопросам — в комментарии.