Пингвин в гостях у Дельфина: как UNIX-like система появилась на Flipper Zero
Когда на экране Flipper Zero впервые появилось терминальное приглашение `#`, устройство перестало выглядеть исключительно как инструмент для экспериментов с радиопротоколами, NFC и инфракрасными пультами. Перед разработчиком оказался настоящий карманный компьютер - пусть и очень компактный, со скромными ресурсами, но с ядром, процессами, командной оболочкой и файловой системой на microSD.
До этого результата путь был далеко не простым. Flipper приходилось подключать сразу несколькими проводами, прошивки загружались через ST-Link, консоль выводилась на внешний UART, а ошибка при работе с SD-картой могла превратить запуск системы в бесконечный поток непонятных сообщений. Однако именно такие ограничения и делают проект особенно интересным.
Идея возникла из типичного инженерного любопытства: попробовать запустить UNIX-подобную систему на любом устройстве, которое хотя бы теоретически для этого подходит. У Flipper Zero есть 32-битный микроконтроллер STM32WB55, дисплей, кнопки, USB, Bluetooth и слот microSD. На первый взгляд это вполне убедительный набор для создания небольшого автономного компьютера.
Полноценный Linux на такой платформе невозможен. Главные препятствия - отсутствие MMU и крайне небольшой объём оперативной памяти: всего 256 КБ SRAM. Поэтому пришлось искать более компактную альтернативу. Ею стала FUZIX - UNIX-like операционная система, рассчитанная на маломощные микроконтроллеры.
FUZIX разработал Алан Кокс, принимавший участие в развитии ядра Linux. Первоначально система создавалась для 8-битных процессоров, включая Z80, но позднее получила порты для 6502, 68000, MSP430, ESP8266, ARM и других архитектур. По возможностям она заметно превосходит обычную командную оболочку: в системе есть процессы, системные вызовы, устройства в `/dev`, файловая система, перенаправление ввода-вывода, каналы и базовые консольные утилиты.
Разумеется, сравнивать FUZIX с современным Linux напрямую нельзя. В ней нет полноценной виртуальной памяти, графического рабочего окружения и привычного набора универсальных драйверов. Размер отдельного процесса ограничен 64 КБ, а приложения нередко приходится специально адаптировать или пересобирать. Но именно минимализм позволяет системе запускаться там, где полноценное Linux-ядро даже не сможет начать загрузку.
По характеристикам Flipper Zero оказался близок к Raspberry Pi Pico. У RP2040 имеется 264 КиБ SRAM и два ядра Cortex-M0+, а STM32WB55 располагает 256 КиБ SRAM и основным ядром Cortex-M4. Микроконтроллеры разные, но для эксперимента с компактной UNIX-подобной системой находятся примерно в одной категории.
Готового порта FUZIX для Flipper Zero найти не удалось, поэтому аппаратную платформу пришлось изучать самостоятельно. Основной задачей на первом этапе стало создание минимального запускаемого окружения: загрузочного кода, таблицы прерываний, драйвера UART и базовой поддержки памяти.
Первые эксперименты потребовали ST-Link, внешнего UART и немалого количества временных решений. Нужно было не только собрать прошивку, но и понять, на каком именно этапе она перестаёт работать. Если Flipper просто молчал, приходилось проверять тактирование, адреса памяти, обработчики исключений и последовательность инициализации периферии.
Следующим серьёзным этапом стала работа с microSD. Сначала обмен организовали через GPIO, фактически вручную управляя линиями интерфейса. Такой подход помог разобраться в протоколе и быстро получить первый результат, но для постоянной эксплуатации он был слишком медленным и неудобным. Затем разработчик перенёс работу на аппаратный SPI2, избавившись от лишних программных операций и сделав доступ к карте стабильнее.
Одной загрузки недостаточно: системе необходимо сохранять данные, создавать файлы и повторно использовать их после перезапуска. Поэтому поддержка microSD стала не отдельной демонстрацией, а основой настоящей файловой системы FUZIX. На этом этапе Flipper уже начал вести себя как маленький компьютер, а не просто как микроконтроллер с экспериментальной прошивкой.
Постепенно исчезали и внешние зависимости. UART заменили на USB CDC, благодаря чему терминал можно было открывать обычным USB-кабелем. Затем появилась возможность отказаться от ST-Link и загружать прошивку через штатный USB-интерфейс. Это существенно упростило цикл разработки: собрать, передать образ, перезапустить устройство и проверить изменения стало возможно без дополнительного оборудования.
Отдельная задача - вывод информации на встроенный экран. Терминал удобен для отладки, но постоянное подключение компьютера противоречит идее автономного карманного устройства. Поэтому понадобился собственный интерфейс, который позволил бы отображать состояние системы, список файлов и результаты выполнения команд непосредственно на дисплее Flipper.
Эксперименты с Bluetooth-клавиатурой оказались сложнее ожидаемого. Поддержка беспроводного ввода потребовала учитывать особенности стека Bluetooth, обработку событий и ограниченные ресурсы микроконтроллера. В итоге наиболее практичным решением стал гибридный подход: использовать USB для полноценной работы с терминалом и экран Flipper для автономных сценариев.
На следующем этапе появился файловый браузер, благодаря которому команду `ls` уже не требовалось вводить вручную. Пользователь мог просматривать содержимое microSD с экрана устройства, а USB File Bridge позволил обмениваться файлами между Flipper и компьютером. Это превратило проект из демонстрации UNIX-окружения в более цельную операционную систему.
Тем, кто планирует Flipper Zero купить для подобных экспериментов, стоит учитывать: стандартная прошивка остаётся наиболее удобным вариантом для повседневных задач, а FUZIX и другие экспериментальные сборки предназначены прежде всего для обучения и разработки. Перед установкой необычной системы важно сохранить резервную копию и разобраться с процедурой восстановления.
Проект также наглядно показывает, насколько важна архитектура прошивки. В обычных сценариях Flipper воспринимается как готовый многофункциональный гаджет, однако за его интерфейсом скрывается микроконтроллер с жёсткими ограничениями памяти и производительности. Создание UNIX-like окружения заставляет заново реализовать работу с памятью, периферией, накопителем, вводом-выводом и графическим интерфейсом.
При этом FUZIX нельзя считать заменой штатной системы Flipper Zero. Это отдельная экспериментальная среда со своим набором драйверов, утилит и ограничений. Совместимость с привычными приложениями ограничена, а многие функции оригинальной прошивки - радио, NFC, Bluetooth и управление питанием - требуют самостоятельной адаптации.
Наиболее перспективным направлением остаётся развитие драйверов и пользовательского интерфейса. Улучшение поддержки экрана, кнопок, Bluetooth-клавиатур и USB может сделать систему удобнее, а перенос дополнительных консольных программ расширит практическую ценность проекта. В дальнейшем можно ожидать появления более полноценной среды разработки прямо на устройстве.
Отдельный интерес представляет взаимодействие FUZIX со штатной прошивкой. Теоретически Flipper мог бы использовать разные режимы загрузки: оригинальную систему для повседневных задач и UNIX-подобное окружение для программирования, работы с файлами и экспериментов. Для этого потребуются аккуратный загрузчик, понятная схема хранения образов и безопасный механизм переключения.
Тем, кто ищет информацию о том, какая Flipper Zero прошивка подходит для экспериментов, важно отличать стабильные пользовательские сборки от исследовательских портов. В одном случае приоритетом являются готовые функции и надёжность, в другом - возможность изменять ядро, драйверы и загрузочную цепочку.
В результате Flipper Zero получил не просто строку приглашения `#`, а минимальную, но настоящую UNIX-подобную среду. Проект демонстрирует, что даже микроконтроллер с несколькими сотнями килобайт памяти способен стать основой для операционной системы с процессами, файловой системой и набором привычных инструментов.
Именно в этом заключается главный результат эксперимента: не попытка превратить Flipper в полноценный настольный компьютер, а доказательство того, что грамотная архитектура и аккуратная работа с ограничениями позволяют разместить Flipper Zero операционная система даже в столь компактном устройстве. А появление проектов вроде FlippixOS для Flipper Zero показывает, что вокруг платформы постепенно формируется отдельное сообщество разработчиков, готовых исследовать её далеко за пределами штатных возможностей.


