Разработка приложения-компаньона с Bluetooth для Flipper Zero

Sdílet
Vložit
  • čas přidán 16. 08. 2024
  • Взял интервью у Никиты Куликова, разработчика open source Android приложения-компаньона для Flipper Zero, которое активно использует Bluetooth Low Energy (BLE)
    🔗 Telegram канал "Android Broadcast" ttttt.me/andro...
    💰 Поддержать проект на Boosty boosty.to/andr...
    🔗 Чат сообщества в Telegram ttttt.me/andro...
    🔗 Telegram канал "Kotlin Broadcast" ttttt.me/kotli...
    🔗 Flipper Zero Android GitHub github.com/fli...
    🔗 Flipper Kickstarter www.kickstarte...
    🔗 Купить Flipper Zero amperka.ru/pro...
    🔗 Nordic Semiconductor Android BLE Library github.com/Nor...
    00:00 Про Flipper Zero
    00:34 Тамагочи для исследователей безопасности
    05:05 Гаджет для хакера
    06:56 Как происходит коммуникация по Bluetooth между устройствам
    10:08 Разница между Bluetooth и BLE
    12:11 Насколько важен BLE
    14:04 Формат данных для передачи
    16:42 Безопасность соединения
    17:32 Особенности архитектуры приложения с Bluetooth
    19:00 Оптимизация
    21:47 Почему не обычный Bluetooth
    23:02 Развитие Bluetooth
    26:32 Передача данных по Bluetooth умерла
    29:46 Проблемы на устройствах разных вендоров
    35:36 Развитие Bluetooth в Android
    45:44 Что стоит улучшить в Bluetooth API
    47:47 Как изучить работу с Bluetooth
    #androiddev #android #программирование #kotlin #КириллРозов #андроид #AndroidBroadcast
  • Věda a technologie

Komentáře • 47

  • @AndroidBroadcast
    @AndroidBroadcast  Před rokem

    🔗 Telegram канал "Android Broadcast" ttttt.me/android_broadcast
    💰 Поддержать проект на Boosty boosty.to/androidbroadcast
    🔗 Чат сообщества в Telegram ttttt.me/android_broadcast_talks
    🔗 Telegram канал "Kotlin Broadcast" ttttt.me/kotlin_broadcast

  • @antaki93
    @antaki93 Před rokem +5

    Вот это ностальгия для меня :) Когда-то начинал свой путь в андроид-разработке с подобного приложения-компаньона с BLE. Ох уж этот гигантский коллбэк, ох уж эти байтовые массивы, адвертайзинг и всё прочее...)

  • @alexgireff2180
    @alexgireff2180 Před rokem +8

    Отличный контент, спасибо, Кирилл!
    Наверное, немного не хватило более подробной информации о месте BLE в архитектурном плане. Но Никита упомянул про сервисы. Значит, есть направление, куда копать)))
    Видел Никиту в видео несколько раз в различные периоды его карьеры. Очень приятно смотреть, как человек растёт, развивается и продолжает исследовать. Так держать!

    • @AndroidBroadcast
      @AndroidBroadcast  Před rokem

      Исходники открыты, лучше посмотрите их

  • @albinapavlenko9924
    @albinapavlenko9924 Před rokem +1

    А мы, когда перекидывали файлу по ИК-порту, телефоны просто на лавочку клали. Держать 2 часа два телефона в хитром положении довольно неудобно 🤪. Беседа просто отличная! Большое спасибо, очень информативно!

  • @ivanov83
    @ivanov83 Před rokem +4

    О, крутая тема. Спасибо большое что затронули. Никита - красавчик, раньше часто виделись на офлайн митапах до ковида, не знал что он в флиппере сейчас работает.
    Очень много работал с интеграцией мобильных приложений, и через обычный bluetooth (RFCOMM socket и вот это всё) и через BLE (GATT сервисы и иже с ними).
    BLE - хороший годный протокол, но апи для работы с ним в андроиде - чистая боль и страдание. Жуткие колбэки к которым невозможно толком подвязаться, необходимость делать простые операции типа подписки на NOTIFY уведомления от gatt характеристики путём низкоуровневых операций, когда в ios это делается в одну строчку. У каждого вендора какие-то свои приколы, типа невозможности отправить или принять данные в первую 1-2 секунды, необходимость выжидать паузу между передачей фреймов. Никакой обратной связи и индикации ошибок, операция может просто не выполниться и никакое исключение не будет выброшено.
    Ограничение в 20 байт полезной нагрузки на передаваемый фрейм. Расширение размера пейлоада предусмотрено в протоколе но не работает на практике в большинстве устройств, и вообще не работает в ios, поэтому, для унификации используют фреймы по 20 байт. Заявленная пропускная способность BLE в 2 мбит/сек - чушь полная. Это расчёт для сферической идеальной ситуации в вакууме. В действительности фреймы передаются по радио в специальные окна, которые зависят от многих параметров и буферы с кадрами должны быть подготовлены заранее. На практике это просто не работает в мобилках (которые КМК используют и реализуют так мало возможностей блютус как можно было) и несколько килобайт в секунду, это то что вы реально получите. Загрузка обновления прошивки на устройство по 20 минут и прочие прелести прилагаются.
    ИМХО, главная причина по которой все пользуются этими жуткими костылями для постоянного соединения через BLE, это то что только через него можно сделать полноценное приложение компаньон. Android поддерживает и bluetooth и BLE. ios - только BLE, apple имеет готовое апи для работы с bluetooth classic, но не релизит его публично (впрочем можно им воспользоваться на джейлбрейкнутых устройствах), отсюда и весь этот цирк с конями. Хотя для подобных сценариев BLE подходит значительно хуже стандартного сокета.
    Безопасность блютус периферии - это вообще атас. Ничего более удивительного в жизни не видел. Да, есть стандартный пейринг, но во-первых, вся работа процесса пейринга скрыта как чёрный ящик, и возможности посмотреть реально передаваемые байты у нас нет, а атаки понижающие защиту с шифрования на ничего с помощью специального оборудования уже всплывали, а во-вторых, логика аутентификации мастер устройства и приём команд только от него НЕ (!) встроена в протокол пейринга, в результате к доброй половине устройств можно просто подклбчиться когда спаренный с ним телефон не в зоне радио и не держит с ним активного соединения, и передавать свои команды. К тому же, для передачи важных данных нельзя доверять защиту встроенному пейрингу, необходим отдельный слой шифрования и подписи данных на прикладном уровне, а такое я видел в жизни ровно один раз - это был платёжный терминал, ко всем остальным устройствам можно было подключиться любому мимокрокодилу и отправить им что угодно (например текст на экран с бегущей строкой, это не шутка, я такое лично видел), исправить это практически невозможно, а производителям периферии в большей части случаев просто пофиг. Только отсутсвие широкого интереса со стороны исследователей к этим проблемам удерживает скандалы которые могут разжечься по этому поводу
    В общем, блютус - это весело. Спасибо за отличный выпуск!)

    • @LionZXY
      @LionZXY Před rokem

      Расширение MTU таки работает, на ios стабильно как часы, на андроид как пойдет, но в большинстве случаев тоже работает. 1мбит/с для BLE реальная скорость, у нас есть прототипы BLE устройства которое выдает такую скорость - на нашем устройстве этого нельзя сделать из-за ограничений со стороны STM. Снифать ble/bluetooth довольно легко, мы такое делали в микроволновке. Защита от MITM тоже встроена в протокол и стандарт, правда реализованная не на всех чипах эмбедеда - мы имеем у себя "trust zone" куда пускаем только запейренные устройства и не доверенную зону, которую могут считывать все.
      Хотя по остальному было почитать очень интересно, если вдруг меня увидите где-то, я бы пообщался)

    • @silentage6310
      @silentage6310 Před 4 měsíci

      Благодарю, полезный комментарий. тоже сейчас делаю железку с мобильным управлением по БТ. пока придумал при спаривании передавать токен, и потом авторизовываться им после очередного подключения.

  • @VokaMut
    @VokaMut Před rokem +4

    Спасибо за обзор, очень интересно =)
    3:35 очень много "типа"

  • @ViktorYakunin
    @ViktorYakunin Před rokem +1

    По поводу блютуза - работал с почти всем стэком, адвертайзинг, комуникации по бле и по обычному бт в основном через сериал. Как отметил гость, для того чтобы сделать контракт нужно наворачивать свой RPC + протобаф. Вообще это довольно не сложно, просто специфика. Адвертайзинг позволяет делать довольно интересные вещи, мы на нем соц сеть строили

  • @kychkin_nikolay
    @kychkin_nikolay Před rokem

    Кстати как универсальный регулировщик для умного дома удобно. А то не хочется ставить "левые" приложения, а тут опенсорс одно приложение и все работает.

  • @burivuh26
    @burivuh26 Před rokem +2

    С 47:59 я порвался. Отличное интервью

  • @ihorkolodyuk6441
    @ihorkolodyuk6441 Před 6 měsíci

    отличный девайс, спасибо вам 👍

  • @volodymyr.od.ua.
    @volodymyr.od.ua. Před rokem

    Очень интересно, спасибо!!

  • @user-by1id2ix4h
    @user-by1id2ix4h Před rokem

    Кирилл, спасибо за интервью
    Контент 🔥

  • @borisveriga5252
    @borisveriga5252 Před rokem +1

    Спасибо за интервью парни!

  • @handleftman
    @handleftman Před rokem +1

    В новостях пишут, что PayPal заблокировал их счёт с деньгами .... и это те люди, которые оплачивали Flipper (

  • @MrPwnzrus
    @MrPwnzrus Před rokem

    Это же парень, который у АйТи бороды был , приятно видеть его и тут

    • @AndroidBroadcast
      @AndroidBroadcast  Před rokem

      О да, только сейчас вспомнил. Выпуск про Kotlin, но говорили про Android. В тот момент от компетентности интервьювера меня бомбануло

    • @LionZXY
      @LionZXY Před rokem +1

      @@AndroidBroadcast а что не так говорил))) Вроде сейчас смотрю и не сказал бы что не так. А сам айтиборода специально притворялся что ничего не знает, чтобы я разжевывал очевидные вещи и ребятам не из айти было интересно слушать

  • @mex5341
    @mex5341 Před rokem +1

    Почему на Андроиде всё ещё нет аналога airDrop?

  • @dpoleev
    @dpoleev Před 17 dny

    У всех есть NFC - тоже эмулятор всего

  • @dmitryskripka7445
    @dmitryskripka7445 Před 6 měsíci

    Так и не удалось купить этот девайс. Сайт отправляет в Joom, а там только чехол для этого устройства, защитные плёнки, и еще что-то, но самого устройства нет...

    • @AndroidBroadcast
      @AndroidBroadcast  Před 6 měsíci

      Посмотри на Авито

    • @dmitryskripka7445
      @dmitryskripka7445 Před 6 měsíci

      @@AndroidBroadcast В Беларуси нет Авито, я даже телефон продавца не могу посмотреть, не имея SIM карты, с номером, начинающимся на +7....
      Даже, если попрошу кого, то квест с конвертацией денег в RUR, сделает это, и без того не особо дешевое устройство, стоящим как чугунный мост.

  • @ra9ftm
    @ra9ftm Před rokem

    Никита, что можете сказать про библиотеку blessed-android и blessed-android-coroutines?

    • @LionZXY
      @LionZXY Před rokem

      Выглядит хорошо, я бы попробовал. Удивительно что пропустил когда ресерчил ещё год назад

    • @gigaprose
      @gigaprose Před rokem

      Извините, что вклиниваюсь, но эта blessed-android чем-то концептуально лучше, чем rxBLE?

    • @ra9ftm
      @ra9ftm Před rokem

      Пока думаю выбрать от Nordic или blessed

  • @quverr
    @quverr Před rokem

    Так а как купить то его ? :) на сайте "We're busy updating the Flipper Shop for you and will be back soon."

    • @AndroidBroadcast
      @AndroidBroadcast  Před rokem

      Надо. ждать. обещают скоро открыть продажи

    • @LionZXY
      @LionZXY Před rokem

      На сайте амперки можно оформить предзаказ

  • @AJl698
    @AJl698 Před měsícem

    У меня смарм спокойно вместо пульта работает. Смарт флагманский если что

  • @dakarkaret3144
    @dakarkaret3144 Před rokem +3

    Что там у флиппера с пейпалом кстати? Зарплаты платят или уже стоки дают? А с сертификацией в Украине?

    • @LionZXY
      @LionZXY Před rokem

      Это деньги на будущие партии, не говоря уж о том что это далеко не все деньги. Просто неприятно, но для бизнеса не фатально. Флипперы в Украину уже поедут 12 сентября, вы вроде должны были email получить об этом

  • @ViktorYakunin
    @ViktorYakunin Před rokem

    по ходу я параноик, ибо сливать ключи доступа на какую-то штуку, которая потом может их слить с привязкой по жпс... можем получить еще один "кто звонит" или базу паролей вифи вашего города, только последствия куда плачевнее

    • @LionZXY
      @LionZXY Před rokem

      Все опенсорс же

    • @ViktorYakunin
      @ViktorYakunin Před rokem

      @@LionZXY есть вариант проверить прошивку и приложение? Есть вариант залить свою прошивку? Передает ли девайс инфу по ключам на телефон?

    • @LionZXY
      @LionZXY Před rokem

      @@ViktorYakunin Конечно, есть вариант - и прошивка и приложение reproducable, собирается из исходников одной командой на любом компьютере

    • @ViktorYakunin
      @ViktorYakunin Před rokem

      @@LionZXY окей, как вытащить прошивку с устройства, чтобы проверить чексум с той версией, которую собрал из исходников?

    • @LionZXY
      @LionZXY Před rokem +3

      @@ViktorYakunin как-то можно через dfu

  • @xbotdroid2211
    @xbotdroid2211 Před rokem +2

    Настоящая боль!
    когда iOS разработчик сделал работу с BLE по подключению к другому девайсу на изи с первого раза и это заняло в три раза меньше времени без доп фиксов🤣
    А ты днями штудируешь доку, юзаешь рефлексию, чтобы дотянутся до закрытых методов, накидываешь кучу кастылей, занимаешься работой с потоками и все равно ничего🤷‍♂️

    • @AndroidBroadcast
      @AndroidBroadcast  Před rokem +1

      В такие моменты вежливых слов не подбирается

    • @LionZXY
      @LionZXY Před rokem

      Я: комментарии к ютубу не могут заставить меня плакать
      Комментарии к ютубу:

  • @Strimer767
    @Strimer767 Před 5 měsíci

    Почему он не на русском

  • @livewithoutregrets4056
    @livewithoutregrets4056 Před 3 měsíci

    Обычный органайзер сигналов