Flipper Zero — прогресс за сентябрь
Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3],[4],[5]
В этом выпуске: Системное API, Набор для разработчиков, Улучшения в механике и электронике, Обновления в GPIO, Новая функция в NFC, Удаленный тестовый стенд.
В сентябре мы почти ничего не писали о проекте, и сейчас пришло время объяснить, почему. Мы приостановили всю маркетинговую деятельность, чтобы сосредоточиться на разработке и других задачах: контракты на поставку и производство, юридические вопросы, поиск новых сотрудников и многое другое. Все это отнимало силы настолько, что у нас даже не было времени опубликовать обновление. Теперь мы готовы поделиться с вами новостями.
Системное API
За этот месяц мы разработали архитектуру прошивки и системные API-интерфейсы, абстракции для взаимодействия с железом, управление потоками и многозадачность. Это работа под капотом, которую мы не показываем, но это важная часть разработки.
Наша главная цель при разработке прошивки — сделать ее максимально удобной и понятной для разработчиков, чтобы они могли легко писать свои программы для Flipper Zero. Поэтому после завершения кампании мы выбросили весь грязный код и начали разработку архитектуры с нуля.
За это время мы активно работали над внутренностями: писали бутлоадер, рефакторили код операционной системы, писали драйвера периферии, проектировали API пользовательских приложений. Также рефакторинг затронул систему сборки и зависимостей, переработан код пользовательского интерфейса. Наиболее важные изменения произошли в стеке нашей разработки: мы обновили используемый CMSIS RTOS до второй версии и привели наш код к использованию единого API. Новый API пользовательских приложений сделал большой шаг в сторону беты и мы надеемся открыть его публично в ближайшем будущем.
Улучшения механики и электроники
Новые комплектующие и дизайн корпуса
Корпус сильно изменился по сравнению с первым прототипом. Мы полностью переработали расположение кнопок и компонентов внутри, чтобы Флиппер не разваливаясь, был прочным и мог выдерживать интенсивное использование.
Мы перенесли модули RFID и NFC на отдельную плату под аккумулятором. Она подключена к материнской плате кабелями FPC.
Новый кнопочный механизм
Новые подпружиненные кнопки
Мы добавили 3 пружины к крестовине для лучшего тактильного отклика.
Your browser does not support HTML5 video.
Как проходят тесты механики кнопок
Сменный аккумулятор
Несъемные аккумуляторы — это бич современных устройств. Мы решили не использовать запаянную батарею и взяли батарею с трехконтактным разъемом, чтобы пользователи могли поменять батарею самостоятельно. Для большей ремонтопригодности мы планируем продавать отдельные компоненты Флиппера, в том числе и батарею, прямо на сайте.
InfraRed переместился на угол
После некоторых тестов мы обнаружили, что предыдущее размещение ИК-порта было не очень удобным: он перекрывался указательным пальцем и внешним модулем. В итоге было решено передвинуть его на угол.
Больше GPIO
Переделали распиновку GPIO. Теперь есть три контакта заземления вместо одного — ее никогда не бывает слишком много.
Новая фича: USB NFC Reader
Ресурсоемкие задачи, вроде криптографических атак требуют гигагерцы процессора. Их нельзя запустить напрямую на Флиппере. Для некоторых даже недостаточно raspberry pi, а нужен полноценный мощный десктопный процессор. Например:
- Атаки на Mifare classic: mfoc (nested), mfcuk (Dark Side)
- Атака на Mifare Plus: Hard Nested
Для этого мы решили добавить возможность использовать Флиппер в качестве обычного USB NFC-адаптера вместе с библиотекой LibNFC. В итоге все существующие программы, работающие через LibNFC, будут работать сразу из коробки без модификаций. В этом режиме все команды с ПК будут проксироваться непосредственно на NFC-чип ST25R3916 через USB-интерфейс.
Главная проблема этой задачи в том, что библиотека LibNFC жестко прибита гвоздями к чипам NXP PN5xx, и в новом драйвере придется по сути эмулировать поведение чипа PN53ххх, но это не так страшно.
Flipper Zero Девкит
Для разработчиков, которые работают над прошивкой и железом мы сделали специальный девкит. По сути это обычный Флиппер с развернутыми платами в пластиковой оснастке, чтобы все компоненты были легко доступны снизу и сверху, и легко можно было подлезть щупами к каждому элементу.
Flipper Lab
За кулисами Flipper Lab
Пока пишется код, его нужно постоянно тестировать. Задача осложняется тем, что тесты нужно выполнять на реальном железе и взаимодействовать с реальным миром. Для этого был сделан удаленный тестовый стенд, который интегрируется с CI-скриптами через github workflow и после каждого коммита в прошивку, она автоматически заливается в девайс и выполняются тесты, по ходу выполнения девайс выплевывает результат в UART и можно понять какие тесты как завершились. Пока это работает криво, но в дальнейшем мы будем проверять так все функции: принимать/отправлять радио, считывать/записывать NFC карты, передавать/принимать ИК-сигнал и т.д.
Это такой же dev kit для разработчиков. Физические подключены через реле, что позволяет управлять устройством удаленно. Изображение с экрана снимается камерой и транслируется на сайте в режиме реального времени. Через веб-морду можно залить прошивку вручную и потыкать на кнопки, если даже у разработчика нет устройства под рукой.
Макет интерфейса испытательного удаленного стенда Flipper Zero
Лаборатория в настоящее время находится на стадии альфа версии, но позже мы откроем ее публично, чтобы любой разработчик мог:
- Загрузить собственную прошивку или плагин на настоящий образец Flipper Zero
- Просматривать логи в режиме реального времени и даже отправлять сообщения UART на Flipper
- Нажимайть все кнопки удаленно
- Тестировать периферийные устройства с помощью физических карт RFID и тегов iButton
Live-апдейты в Дискорде
На нашем сервере в дискорде мы добавили прямую трансляцию обновлений внутри проекта. Вы можете узнать, как идут дела у разработчиков в режиме реального времени с новым каналом #updates, видеть какие коммиты отправляют в репозиторий.
Наш сервер Discord превысил 4000 участников!
Присоединяйтесь к нашему серверу Discord, чтобы:
- Общаться с нашими инженерами и бекерами
- Следить за ходом разработки в реальном времени с каналом #updates
- Обсудить варианты использования Flipper Zero
- Познакомьться с тысячами гиков
- Получить доступ к секретному каналу только для спонсоров (свяжитесь с @Backers Bot в личных сообщениях, чтобы получить особую роль)
— Алло, мы ищем таланты!
Два месяца назад мы запустили программу Flipper Developer Program и получили около тысячи откликов. Несколько разработчиков мы пригласили в полузакрытый репозиторий с прошивкой.
К сожалению, мы поняли, что горизонтальная модель управления нам не подходит, потому что большинство разработчиков, не работающих фулл-тайм, уделяют время проекту только когда у них есть вдохновение и желание. Таким процессом сложно управлять и прогнозировать результат во времени. Поэтому сейчас мы нанимаем только разработчиков в штат на фулл-тайм. Возможно, когда основная часть низкоуровневого кода будет готова и мы откроем репозиторий, принимать вклад от сообщества будет проще.