Статья

Восстанавливаем справедливость. Открытие портов Xiaomi Gateway

Суть проблемы

Однако, вдруг, появилась новая ревизия (см картинку ниже) новая версия прошивки в которой независимо от включения режима разработчика порты 9898 и 4321 остаются закрыты. Положение переключателя меняется, но порты не открываются. Как следствие наш хаб невозможно присоединить к сторонним системам управления.

Новая ревизия. Надписи по кругу. Проблемы и геморрой.
Старая ревизия. Надписи в центре столбиком. Мир радость и счастье.

Что делать. 1 Способ. Не инвазивные манипуляции. 

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

  1. Включаем режим разработчика, ОТКАЗЫВАЯСЬ от всяческих обновлений. Этот шаг хорошо описан в этой статье у коллеги Zver на нашем портале.
  2. Пробрасываем гейт в альтернативной системе управления (Homey, Home Assistant, Domoticz, и т.п.).
  3. Обновляемся до самой свежей прошивки.
  4. Готово! Вы молодец!

Вероятно, этот способ сработает у людей у которых шлюз старой ревизии (надписи в центре, а не по кругу) и прошивка ДО 1.4.0 

ВНИМАНИЕ!!! Дальнейшие действия описанные в статье, могут привести к физическому повреждению устройства!!! Это  ОДНОЗНАЧНО ЛИШАЕТ ГАРАНТИИ! Все действия выполнять максимально аккуратно, на свой страх и риск.

Что делать. 2 Способ. Большая хирургия. 

Если первый способ вам не помог, придется воспользоваться более агрессивным методом. Для начала нам понадобится:

USB-UART адаптер. Любой. Как правило продается в любом ближайшем магазине радиодеталей. Цена около 150 руб. У меня, как на фото, на базе CP2102 
Отвертка с вот такой битой U2.6, просто, с прямой, тонкой битой. У меня они из набора  Wiha Xiaomi 24 в 1
Паяльник, любой, с небольшим жалом. У меня самый дешевый из ближайшего радиомагазина
набор "мама-папа" коннекторов по 5 руб штука, в том же радиомагазине, нужно минимум 3 шт. Но, лучше с запасом штук 6
Олово. Я брал с флюсом по 1 метру 
Куда же без них

Приступаем к вскрытию 

Подготовка к основному этапу. "Железная" 

Для наглядности: картинка с буржуйского форума, тут видно где 3.3V брать
Благодаря этой картинке с 4pda (пользователь dunlion), я понял что еще не все потерянно когда оторвал пятаки в стандартном месте. 

Подготовка к основному этапу. "Софт" 

Качаем и устанавливаем PUTTY (если у вас его еще нет) вот отсюда.Включаем наш USB-UART адаптер в USB 2.0 (это важно) гнездо, желательно, что бы в соседнее ничего не было воткнуто, постарайтесь не использовать USB удлинители и хабы, при их низком качестве это вызовет помехи.Качаем драйвера под наш USB-UART стик. У меня Windows 10, но там и под другие системы есть. Если ваш стик на базе CP210х (у меня  CP2102), то вам подойдет моя ссылка.Перезагружаем комп (я этого не делал, но так правильнее).Щелкаем правой кнопкой мыши по значку пуск, выбираем "Диспетчер устройств" там нас интересует вкладка "Порты (Com и LTP)" Там появится наше устройство "Silicon Labs CP210x USB to UART Bridge" и в скобочках будет написан порт который ему присвоила система (В моем случае это COM4).Дважды щелкаем по названию устройства левой кнопкой мышки, открываем вкладку "Параметры порта" и ставим там скорость "Бит в секунду" 115200. нажимаем ОК. На всякий случай см скриншот, параметры должны быть как на нем.

Основной этап. Подключение

Вот мы все и припаяли, прилепили и подсоединили. Настроили софт. Поздравляю 60% работы готово. Собираем ж*пу в кулак, вытираем пот со лба, выпиваем кружку чая. Нас ждет самый важный этап. Выполняем все действия строго по очереди, так как написано

  1. Вытаскиваем наш стик из из USB порта (мы его вставляли на "софтовой" подготовке).
  2. Подключаем Tx гейтвея на Rx нашего стика, Gnd на Gnd. Rx гейтвея в этот момент никуда не соединяем. ЭТО ВАЖНО!
  3. Контролируем то что написано в пункте 2!
  4. Включаем гейтвей в розетку. Если всё правильно, он несколько раз моргнет синим. Если не мигает, то что-то пошло не так.
  5. Теперь, вставляем наш USB стик в тот же порт где он был при настройке софта. Запускаем ярлык Putty. (именно PUTTY) от имени администратора. 
  6. В открывшемся главном окне, в разделе "Session" выбираем "Connection type" вот такой "Serial". пишем наш com порт, который мы узнали раньше. В моем случае 4.
  7. Слева в списке выбираем меню "Serial" там меняем параметр "Speed(baud)" на 115200 если не изменили его на предыдущей вкладке. и параметр "Flow control" ставим "None". Смотрите скрины ниже.
  8. Нажимаем "Open".
Параметры вкладки "Session" 
Параметры вкладки "Serial"

Основной этап. Кодирование

 Продолжаем. Если мы все сделали правильно, у нас откроется окно терминала и через 5-10 сек мы получим ЧИТАЕМУЮ информацию. Например такую как на скрине справа. Если у вас пишется всякая билеберда, не читаемые символы и прочее - проверяйте подключение, мне помогла смена USB порта.Если все хорошо, двигаемся дальше. Помните, у нас остался один не подключенный провод - Rx гейтвея. Подключаем его к Tx USB стика. Если на этом этапе в консоли начинает происходить адЪ и Израиль, сыпятся ошибки и не читаемые символы, то поменяйте USB порт. У меня он конфликтовал с клавиатурой.Вводим вот такую команду psm-set network.open_pf 3 нажимаем на клавиатуре Enter.Проверяем что порты открыты, вводим команду psm-get network.open_pf нажимаем на клавиатуре EnterЕсли все хорошо, мы должны получить ответ psm-get network.open_pf = 3 (1 bytes). Если вы это видите, то все получилось.Отсоединяем провода, отключаем шлюз из розетки.

Заключение

Вот и все. Теперь собираем хаб, вставляем его в розетку и можно попробовать подсоединить его к внешней системе управления. Спасибо за внимание, буду рад ответить на вопросы.


Отличная статья. Несколько человек задавали мне этот вопрос.

Мега спасибо за статью!!! С моими кривыми руками на удивление не убил хаб и всё получилось)

Оригинальный способ включения режима разработчика :) Однако, у меня вторая ревизия (надписи кругом) и все прекрасно прокидывается и в Domoticz и в HomeAssistant и управляется, прошивка 1.4.1. Не надо панику наводить )))))

К сожалению проблема имеет место быть. Для тех у кого все ок, в начале статьи рекомендуется попробовать 1 способ :)

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

Круто. На форуме с циферкой 4 в названии много кто сталкивался с этой проблемой.

Спасибо, замечательная статья. А нет ли такого-же способа прокинуть акаровский хаб в homebridge и ежи сним ?

К сожалению мне об этом неизвестно. :(

а можно ли подобное повторить на aqara?

Спасибо за труд! У меня все получилось до консоли и отображения в ней читаемой информации. Но ввести в консоль я ничего не могу, как не пытаюсь. На клавиатуру, мышь - не реагирует. Сменил комп, тоже самое. Может, кто знает, где поискать ответ... Спасибо!

Надо правильно настроить терминал. lr/cr и всякие флоу контрол выключить или включить. Ну и есть плохие терминалы. Я на macOS испробывал 3 разных. На 3 только завелось норм

Провозился пол ночи. Добавьте что надо выключить и включить с розетки хаб после этого. И не забывайте что надо проверять udp порты!

Отличная инструкция, даже без навыков все вышло просто и быстро. Запнулся только на том, что не написано то, что порты открываются только после перезагрузки - начал сразу проверять, а ответа на портах нет.

Не работает TX - сообщения в терминале вижу, а вот отправить  - не могу :( пробовал под Win10 и MacOS. Если вижу сообщения - значит RX/TX не перепутан (логично?) Куда копать?

Все работает! Перепаял провод TX и все заработало! Автору - респект! 

При этом диод TX на UART-стике моргает :( 

Вчера открывал порты данным способом. После отправки команды psm-set network.open_pf 3, ответа от шлюза что порты открыты не получил. Попробовав поменять usb - ответа не получил. После перезагрузки шлюза и проверив доступность портов с удивлением обнаружил, что порты открыты. Так что не забываем просто смотреть доступность портов.  

Статья отличная. Спасибо за подробное объяснение! Одно но, у меня после ввода 

psm-set network.open_pf 3 выводится psm_set_variable() failed with: -1. 

Уже голову сломал как это обойти. Переменная при этом через get выдается 2. 

Есть идеи что это? 

Решил проблему. Надо было просто сначала удалить параметр - psm-delete network.open_pf, а потом его создать - psm-set network.open_pf 3.

Столкнулся с такой же ситуацией. На трех хабах одно и тоже. Порты закрыты. Только один udp 54321 открыт.

Просто очень не хочу паяться, разбирать и т.д.

Может уже кто-то что-то придумал получше? Типа программным способом открыть порты?

Спасибо за информацию.

Только что с аналогичным хабом у моего друга проверили - порты открыли. То есть все таки что-то их как-то открывает программно. не понятно только что. И даже у вас в другой статье здесь тоже самое описывалось. Что мол что-то сделано и порты открылись. Только не ясно что именно.

Что же их все таки программно открывает? Кто знает?

Спасибо за статью!
Хочу добавить, что usb-uart подходит не любой(по крйней мере у меня). Пробовал подключаться простым HL-340 и PL2303 чипами - вывод в консоль есть а вот со вводом проблема. Затем купил usb-uart на базе чипа CP2102 и все завелось.

Выполнил все по инструкции, текст идет, но ввод не работает ((
не реагирует вообще на ввод с клавы! куда копать?
Использовал в качестве UART - arduino NANO
у меня правда обновленный 1.4.1_175

Столкнулся с данной проблемой, но с иными особенностями. Версия прошивки на шлюзе - 1.4.1_175.0220. Node-Red не цепляется через node-red-contrib-xiaomi-smart-devices, через ноду udp in тишина. Порта 9898 - нет на шлюзе. Потыкавшись, почитав в разных местах обнаружил следуюшую ососбенность - шлюз что то периодически бросает в сеть по udp с порта 5353 на группу 224.0.0.251:5353. Повесив udp in на эти параметры получил следующее:

17.01.2020, 2:06:35http://192.168.236.10:1880/#" class="red-ui-debug-msg-name">node: 60068255.046eccmsg.payload : string[34]
"_miio_udplocal"
17.01.2020, 2:06:35http://192.168.236.10:1880/#" class="red-ui-debug-msg-name">node: 60068255.046ecc
msg.payload : string[323]
"�lumi-gateway-v3_miio259432295local�����lumi-gateway-v3_miio259432295_miio_udplocal!��+�1lumi-gateway-v3_miio259432295local_miio_udplocal�0lumi-gateway-v3_miio259432295_miio_udplocallumi-gateway-v3_miio259432295_miio_udplocal��epoch=1mac=04cf8cf69f08"

Это можно как то использовать или это просто служебный мусор?

Использовал красную схему и скотчевый метод, так как паяю я хуже некуда. Всё сработало. Благодарю! :)

Использовал UART — 

CP2102

Может кому пригодится


у меня "psm-set network.open_pf 3" команда не работала в таком виде (выдавалась ошибка недостаточно аргументов) - заработало так "psm-set network open_pf 3" - вместо точки пробел

Спасибо! Получилось. Единственное что хочу добавить при подключению по COM шлюз постоянно что то транслирует и я банально не успевал набрать команду. Получилось скопировать в буфер, вставить и быстро нажать enter

делаю все по инструкции

#psm-get network.open_pf 

network.open_pf = 1 (1 bytes) 


#psm-set network.open_pf 3 


# psm-get network.open_pf 

network.open_pf = 3 (1 bytes)

однако после перезагрузки 

#psm-get network.open_pf 


network.open_pf = 1 (1 bytes) 

Если сначала удалить

#psm-delete network.open_pf 


psm-get network.open_pf 

[psmu] Warn: <invalid length of data: -1>

после перезагрузки 

psm-get network.open_pf 


[psmu] Warn: <invalid length of data: -1>

#psm-set network.open_pf 3 


# psm-get network.open_pf 


network.open_pf = 3 (1 bytes)

однако после перазагрузки вновь

#psm-get network.open_pf 


network.open_pf = 1 (1 bytes) 

Ктони-будь может что то посоветовать ?

Очень интересно ....



#psm-set network.testaaa 3 

сохраняет в

network.testaaa

3 и после перезагрузки

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

если на линуксе то тебе может быть интересна эта тема 

https://sprut.ai/client/article/2667">https://sprut.ai/client/article/2667

Добрый день, не подскажите: я получил доступ к шлюзу, вижу всю информацию, но ввести ничего не могу. Спасибо

Хаб Xiaomi Mi Air Conditioning Companion (lumi.acpartner.v2 и вероятно v3) имеет аналогичную распайку разъема с RX/TX (земля между ними).
ВНИМАНИЕ! Этот хаб НЕ имеет гальванической развязки. При подключении через UART TTL в USB к компьютеру и в резетку одновременно ВЫГОРИТ всё что можно.
Подключать только к ноутбуку, который больше никуда не подключен, в том числе и в розетку.


У меня все получилось, порты открыл и в HA шлюз работает как надо но он перестал добавляться в Mi Home. Это как то связано с операцией по открытию портов?

приложение юзал отсюда https://www.kapiba.ru/2017/11/mi-home.html">https://www.kapiba.ru/2017/11/mi-home.html

Сделал всё по инструкции. Подключился, пишу:

#psm-set network.open_pf 3 


# psm-get network.open_pf 


Получаю ответ:

network.open_pf = 3 (1 bytes)

Перезагружаю шлюз, проверяю порты - закрыты. Переподключаюсь, пишу:



# psm-get network.open_pf

Получаю:



network.open_pf = 1 (1 bytes)

Есть какие-то идеи?



Коллеги, подскажите, пожалуйста, где находятся точки Tx/Rx на плате шлюза 1й (ПЕРВОЙ) версии? В статье описана вторая версия шлюза, а у первой плата отличается - в частности, вот этого явно выраженного блока с двумя рядами пятаков, нету.


Коллеги, подскажите, пожалуйста, где находятся точки Tx/Rx на плате шлюза 1й (ПЕРВОЙ) версии? В статье описана вторая версия шлюза, а у первой плата отличается - в частности, вот этого явно выраженного блока с двумя рядами пятаков, нету.


Коллеги, подскажите, пожалуйста, где находятся точки Tx/Rx на плате шлюза 1й (ПЕРВОЙ) версии? В статье описана вторая версия шлюза, а у первой плата отличается - в частности, вот этого явно выраженного блока с двумя рядами пятаков, нету.

Вернуться назад

Устройства


Xiaomi

Xiaomi Mijia Gateway 2

(11 отзывов)

Вернуться назад