❌

Normal view

Внутри диаграммы Ганта: холст 480 на 360, палитра на 30 цветов и число без последнего бита

Я собираю файл конфигурации из XML так, чтобы он совпал с платформенным с точностью до бита. Диаграммы Ганта в типовых конфигурациях пустые, и на них ушло шесть дней. Внутри нашлись обычная диаграмма, воображаемый холст 480 на 360, число, у которого платформа теряет последний бит, и палитра, где серия номер -1 получает 15-й цвет. Рассказываю, как это устроено и как добывалось: дизассемблер, Frida и серия загрузок платформой.

Читать далее

Как я превратил клавиатуру от ноутбука MSI в самостоятельную USB‑клавиатуру

Есть люди, которые спокойно меняют клавиатуры и через пару дней привыкают к новым. А есть моя жена. У неё есть ноутбук MSI GS75, и его клавиатура ей очень нравится. Настолько, что ни одна из других клавиатур, которые мы пробовали, не смогла её заменить.

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

Так начался небольшой домашний проект, который постепенно превратился в исследование клавиатурной матрицы, разработку двух ревизий печатной платы на STM32, написание собственной USB HID-прошивки и борьбу с фантомными нажатиями. Сейчас у меня уже есть работающий прототип: 102 клавиши, USB Type-C, поддержка Fn и мультимедийных сочетаний, режим NKRO и собственная система диагностики.

В этой статье расскажу, как всё это разрабатывалось, какие проблемы возникали и почему самым сложным оказалось не изготовить плату, а заставить клавиатуру правильно обрабатывать нажатия.

Читать далее

Давай отлаживать по TCP

Когда в моей Среде разработки К дошла очередь до отладчика, выбор был такой: по HTTP - проще, но с глюками, знакомыми по мобильной разработке; по TCP - быстрее, но протокол закрытый: им штатная среда говорит с тонким клиентом. Я выбрал TCP: снял обмен с провода и повторил его. RSA-1024 с PKCS#1 v1.5, 192 байта на тройном DES, NTLM, контрольная сумма по полям GUID и идентификатор, который нельзя делать случайным. Рассказываю, где спотыкался и что получилось: точки с условием, шаги, стек, локальные, вычисление и остановка по ошибке - на живом клиенте.

Читать далее

[Перевод] Купил морскую спутниковую антенну примерно за €200 и убедил её, что она на яхте

Морская спутниковая антенна Intellian i4 новой стоит около 4000 евро, а на нидерландской барахолке Marktplaats её продавали примерно за 200. Чтобы она навелась на спутник, стоя на крыше, а не на палубе, автор подключил RP2040 с модулем RS-422 и стал слать антенне NMEA-строку с курсом «яхты». Потом снифал обмен фирменной программы с блоком управления, декомпилировал её код на C# и разобрал текстовый протокол с необычной контрольной суммой и целочисленными углами. В итоге тарелка наводится одной командой, работает как поворотный механизм для Gpredict и ловит телевидение с Astra 19.2°E.

Читать далее
❌