2 мин на чтение

Как я и писал в посте про PicoYubiPin, я давно хотел себе какой-нить USB Sniffer. А еще хотел USB Isolator, чтобы не бояться вставлять всякие говноподелки в ноут. Ну и раз уж они отлично дополняют друг друга, родился Mr.Duppl - простенький USB Sniffer && Isolator.

cover

На всякий: это моя первая попытка самостоятельно спроектировать, развести и запаять печатную плату, потому относитесь к увиденному скептически

Hardware: Intro

Mr.Duppl, будучи простеньким и дешевеньким сниффером, получил такое же простенькое и дешевенькое железо:

ADuM3160 можно было бы заменить на что-то в духе ADuM3166 или TI ISOUSB211, дабы получить USB High Speed, но в паре с RP2040 смысла в этом никакого нет - он и полноценный Full Speed навряд ли прожует. Вот если бы собрать на FPGA…но об этом как-нить в другой раз ;)

Hardware: Schematic && PCB

Если вы когда-либо видели схему USB изоляторов на базе ADuM3160, которыми завален AliExpress, то считайте, что видели их все. Мой не исключение, если не считать GND, D+ и D-, подключенные к RP2040 (full version): cover

Осталось развести печатную плату для заказа на JLCPCB: cover

И коль этот пост о создании, то для любителей позалипать, у меня есть царский подгон:

  • создаем принципиальную схему печатной платы:
  • саму печатную плату:
  • заказываем на JLCPCB и любуемся получившейся красотой:

Hardware: Assembling

Т.к. паяю я одинаково плохо примерно чем угодно, в этот раз решил заиспользовать Pre-heating plate MECHANIC IX5, вот такой: cover и низкотемпературную паяльную пасту. Да, preheating plate не такой точный как фен (и не должен быть), зато проще, быстрее, не портит пластик и не сдувает рассыпуху :) Кстати, именно IX5 от Mechanic не советую, как-то уж очень неравномерно греется поверхность даже в сравнении с более дешевыми аналогами (или это у меня совсем паль) :(

C пайкой всегда лучше один раз увидеть, потому залипушники наслаждайтесь:

Firmware

firmware для rp2040 написана на C++ поверх Pico SDK 2.0, пока (?) поддерживает только USB Full speed (LS можно дописать, благо поддержка железом заложена) и требует улучшения перфоманса. С практической точки зрения выполняет простую задачу - перекладывает байтики из D+/D- в USB ACM, используя SLIP для кодирования данных. А уже из USB ACM должен вычитывать софт на ПК, о чем чуть ниже.

Software

Софтовая же часть написана на Go и представляет из себя плагин к Wireshark, используя extcap интерфейс. В коем-то веке нормальный интерфейс плагинов без so’шек, ура! Ну а с практической точки зрения - перекладывает байтки из USB ACM сниффера в пайп Wireshark, попутно перекодируя из SLIP в PcapNG. Вот так просто, да :)

Result

Раз все запчасти разобрали, можно и финальный результат оценить:

На видео я подключил&&прошил Mr.Duppl, проверил, что система его подхватила, поставил нужный пакетик и увидел USB трафик от YubiKey и Xbox Controller. Все в пределах ожиданий, как то и должно быть ;)

Closure

Это был интересный опыт со всех сторон:

  • впервые разводил плату
  • впервые заказывал на JLCPCB
  • впервые паял не тренировочные платки с SMD компонентами
  • впервые снимал и монтировал видосы всего процесса

Не могу сказать, что все вышло идеально (по всем пунктам, хах), но оно работает! Повторять текущую версию Mr.Duppl я, конечно же, не рекомендую - стоит подождать третьего сервис-пака минимум. В первую очередь, меня очень огорчил RP2040 SuperMini, который нужно или менять на что-то другое, или разводить RP2040 сразу на плате (благо документация есть: Hardware design with RP2040).

А пока у меня все, всем кота (づ˶•༝•˶)づ♡

Разделы:

Дата изменения: