Недавно до меня доехала пачка модулей на nRF24L01P взятых задешево (~55 цент за шт.). Если кому-то интересно, как надо изуродовать оптимизировать их для такого… В общем, нет ничего невозможного в этом мире. Работать, правда, будет не совсем, но кого это волнует? А детали «оптимизаций» я привожу ниже.
Итак, вместо чипа у нас блоб из эпоксидки скрывающий кристалл. Что-то мне подсказывает сам кристалл это тот самый левак, а значит жрать будет больше, чувствительность — меньше.
После того, как матерные выражения у меня иссякли при виде ‘оптимизаций’, я открыл референсную схематику и оценил масштабы бедствия. Они впечатляют. См. рисунок ниже, я там вычеркнул то, чего нам недопаяли.
Круто? Начнем с того, что эти эффективные менеджеры сократили расходы на IREF резисторе. Либо он теперь в блобе, либо нихрена работать не должно.
Далее, как видно ANT1 нога теперь болтается… в воздухе. Ога! А так как ANT1 и ANT2 — выход дифференциального усилка, то 30-40% выходной мощности мы теряем, так как работает только одно плечо. Молчу про исчезнувшую развязку по питанию и резистор 1M промеж ног кристалла. Это все уже фигня.
А они вообще работают?
На удивление — что-то среднее. Первое что я сделал — воткнул такой модуль в платку где был rf24boot. И нифига не заработало. Пришлось сварить дебаг сборку и посмотреть в лог.
Модуль принимал пакеты. Но внутри был мусор, а не данные. Но не отправлял ack что данные принял. После вкрячивания дебага в самые неожиданные места, и начиная потихоньку ненавидеть все человечество я догадлся воткнуть такой модуль в свой usb2nrf донгл и… Оно заработало (Хотя сигнал был все равно хреновый).
Итак, эпоксидный блоб работает только с эпоксидным блобом. Точка. Почему? А леший его знает! Остался теперь квест выбить рефанд из продавана, ибо нефиг.
Если я узнаю что-то любопытное о внутренностях этих модулей — сделаю пост с продолжением. А пока если в Москве есть кто-то, с оборудованием для анализа 2.4Ghz, и желанием потыкать сие чудо враждебной техники — емейл есть в контактах.
Добавка: Ответ лежал в конце ленты комментариев на Hack-A-Day. И сделали его крутые ребята из Nordic Semi. Отряд Элитных Китайских Петросянов Специального Назначения умудрился передрать косяк из документации в сам чип и поле NO_ACK в фейковых чипах перевернуто. Погоняв еще немного — не важно с динамическим пейлоадом или со статическим — фейки нормально не смогли ack’нуть пакет от нормального нордика, а так же от nrf24lu1, nrf24le1.
Это нельзя считать хорошими новостями (наконец-то есть способ проверить фейк или не фейк быстро). Погуглив интернеты, я откопал что существует минимум два ‘совместимых’ чипа: SI24R01 и SE8R01. По тредам на форумах нашлись и различия в дефолтных адресах пайпов после ресета, причем по количеству различий фейков явно больше (или ревизий фейков). Может даже те модули, которые я считаю ‘хорошими, годными’ просто клоны нормального качества?
Что-то можно сделать?
Единственный способ подружить фейк и оригинал — вырубить полностью auto-ack на обоих модулях. Не вкусно и грустно. Другого способа инвертировать NO_ACK поле не вырубая auto-retransmit машинерию на TX стороне я не нашел.