MKS WiFi для Скруджа

VyacheslavSS
Идет загрузка
Загрузка
14.07.2020
8091
44
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8

В продолжении темы о моих изысканиях: Sapphire PRO

После изучения прошивки материнской платы MKS Robin Nano, стал понятен протокол ее обмена с модулем WiFi. Наверно эта техническая сторона мало кому интересна, скажу лишь, что сам протокол может быть расширен, а значит и расширен функционал связки MKS Robin Nano + MKS WiFi. Об этом позже.

Если на флеш карту записать файл MksWiFi.bin, то после старта принтер запустит алгоритм прошивки модуля WiFi. Используется стандартный протокол Espressif для esp8266. Значит, мы можем просто подсунуть чистый самодельный модуль, что я и сделал.

MKS WiFi для СкруджаДействительно, принтер не возмущаясь залил прошивку в клон, в списке сетей отобразились сети, выбрал сеть, указал пароль. На роутере в перечне устройств стало видно новое подключение. Но!!! принтер упорно отвечал, что соединение выполнено с ошибкой.

Хорошо, можно пойти путем длиннее. Дело в том, что модуль esp8266 на основе которого сделан MKS WiFi (к слову просто адаптер в DIP), был спроектирован для OpenSource проектов, а значит не имеет никакой защиты памяти, и все что в ней есть можно считать. Делаем считыватель, дампим память оригинального модуля, прошиваем свой.

MKS WiFi для СкруджаMKS WiFi для Скруджа

Результат - полная копия модуля, которую можно подарить нуждающемуся другу.

Другой вопрос - зачем все это делать? Ну во-первых лучший подарок - это подарок сделанный своими руками, а во-вторых - любопытство не порок. Ну и в-третьх цена вопроса 600р или <100.

Пытливый ум повел дальше. Стало интересно, а что же такое китайцы прописали в модуле, чтобы определять оригинальность прошивки? Подробности изучения опущу. Оказалось, что по адресу 0x3fb0c0 они записывают серийный номер модуля - строка из 20 символов, и если ее нет (или она не верна), после подключения модуля к WiFi сети, он отдает на материнскую плату код ошибки, вместо подтверждения подключения. Мой серийный номер выглядит так: HJNLM0002CF********* под звездочками цифры. Найти его можно в оригинальной прошивке где-то в настройках облака. Он в QR код преобразуется.

Судя по тому, что новый модуль с серийным номером со старого начал рабоать нормально в этом серийном номере не содержится ничего, что было бы привязывало прошивку к модулю (например его mac адрес). Я не стал экспериментировать с вариантами изменения серийного модуля ибо цель достигнута, клон создан, минимальные достаточные условия определены. Уже позже я попробовал поменять номер. Все  оказалось в порядке, контрольных сумм тоже нет.

Результатом всего стала доработка в прошивке материнской платы. Теперь она принимает файл MksWifi_Key.bin с серийным номером. То есть, можно вставить в плату совершенно чистый модуль WiFi и он будет прошит как оригинальный с установленным серийным номером.

На этом развлекательная часть была закончена. Копировать чужую интеллектуальную собственность с получением собственной прибыли не хорошо. Прошивка модуля закрытая. Не зря он стоит 600р вместо 100.

Но теперь мы знаем протокол обмена, имеем клон модуля и можем восстановить его в случае ошибок собственного проектирования. Можем притвориться принтером, подключив модуль к компьютерную. Можем притвориться модулем WiFi подключив Cura к собственному прокси. Полноценный стенд для разработки своей WiFI прошивки создан.

Внутри WiFi модуля 3 службы:

  1. Мост WIFI-UART на порту 8080
  2. HTTP сервер на порту 80 для настройки подключения и связи с Cura (методом POST она передает файы)
  3. Обеспечение связи с китайским облаком

Если 1 и 2 понятно, то 3 - "нафига козе баян" и что туда сливается китайцам лишь известно.

В моей прошивке я реализовал 1 и 2. Плюс расширил протокол обмена, добавил туда службу точного времени (NTP). Почему ее? Была заготовка кода, встроить легко, на чем-то надо испытать. Планирую сделать WebDAV, если хватит запала. Но уже сейчас на принтере стоит мой модуль WiFi и на главном меню отображается точное время.

Без подводных камней, конечно же не обошлось. Весть протокол обмена WiFi модуля с материнской платой идет по UART на скорости 115200, но при аплоаде файла материнская плата переключает алгоритм в режим DMA а скорость обмена увеличивает до 1958400. Если раньше, я обращал внимание, что Cura подвислала при передаче, или по факту передачи ничего не происходило, то теперь, так как ошибочные ситуации я обработал, выдаются сообщения о нарушении протокола обмена или долгой задержке при передаче. Последнее регулируется алгоритмом MKS.

Если оригинальный модуль стартует в режиме точки доступа, сканирование сетей WiFi может происходить очень долго. Вернее они вообще не сканируются, так как esp8266 делает это только в режиме станции. Почему китайцы не делают это переключение, когда идет запрос списка WiFi, и когда они это делают, я даже предположить не могу, но когда-то это происходит.

Моя прошивка для модуля WiFi состоит из 2х файлов: ShWifi_0x00000.bin и ShWifi_0x10000.bin. Собственно и оригинальная из 2х секций объединенных в один файл. Области конфигураций у прошивок не пересекаются, поэтому после установки моей прошивки ключ оригинального модуля WiFi не будет утерян.

Ссылка на прошивки:

https://github.com/vyacheslav-shubin/mks-robin-nano35-binary/tree/master/2020-07-13-snapshot-with-wifi

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Комментарии к статье