В руки попали две камеры Xiaomi Mi Home Security Camera 360° 1080p (модель MJSXJ02CM) с пометкой «китайская ревизия, в России не работают». Проверка подтвердила: камеры не подключаются к Mi Home в российском регионе и не отдают видеопоток. Было принято решение перепрошить их на альтернативную прошивку с поддержкой ONVIF и RTSP, чтобы использовать в локальной сети и интегрировать в Home Assistant или аналогичные системы.

Проект с хаком для этой модели существовал на GitHub, но был удалён. Однако благодаря форкам и сохранившимся материалам удалось восстановить и доработать прошивку. В этой статье описан полный процесс: от разборки камеры и считывания дампа флеш-памяти до настройки Wi-Fi и получения доступа к видеопотоку.

 

Аппаратная платформа

Камера MJSXJ02CM построена на SoC **SigmaStar SSC323** (32-битный ARM Cortex-A7) с 16 МБ SPI-флеш-памятью (в нашем случае — KHIC MX25L12833F). Именно SigmaStar определяет архитектуру загрузчика: в U-Boot приглашение выглядит как `SigmaStar #`. Память содержит несколько разделов: загрузчик, ядро, rootfs и пользовательские данные. Наша задача — заменить rootfs на модифицированный, содержащий серверы ONVIF, RTSP и SSH.

 

Разборка камеры

Разборка не вызывает сложностей: необходимо открутить все винты со всех частей корпуса. После этого открывается плата с расположенными на ней микросхемой флеш-памяти и контактными площадками UART.

 

Считывание дампа флеш-памяти

Перед любыми экспериментами необходимо сохранить оригинальный дамп. Для этого используется программатор CH341 (или совместимый). Подключаемся к микросхеме флеш-памяти прищепкой. Важный момент: для надёжности считывание производилось двумя разными программами (например, NeoProgrammer и SiberiaProg-CH341A). Дампы должны совпасть — это гарантирует корректность считывания (на одной камере пришлось отпаивать микросхему).

Полученный дамп содержит оригинальный загрузчик, ядро и rootfs китайской прошивки. Его стоит сохранить на случай отката.

 

Подключение UART

Контактные площадки UART на плате MJSXJ02CM подписаны TX, RX, GND. Питание на камеру подаётся отдельно, поэтому от программатора нужны только три провода.

Подключаем USB-UART адаптер к компьютеру. Параметры порта: **115200 бод, 8N1**. Открываем терминал (например, PuTTY) и подаём питание на камеру. В консоли появляется вывод загрузчика.

 

Поиск и подготовка прошивки

Оригинальный проект telmomarques/xiaomi-360-1080p-hacks был удалён, но его форки (например, javikobcn/xiaomi-360-1080p-hacks, 2hol/xiaomi-360-1080p-hacks) сохранили структуру файлов. Хак эксплуатирует уязвимость в прошивке версии 3.4.2_0062, позволяющую загрузить модифицированный rootfs через SD-карту.

Однако просто залить готовый образ не получилось: версия прошивки на моих камерах оказалась выше, и стандартный метод не срабатывал. Именно поэтому потребовался доступ через UART для прямой записи во флеш-память.

Файл tf_recovery.img я нашёл в сохранившихся зеркалах. А вот папку install пришлось собирать самому: готового хака под MJSXJ02CM в доступных источниках не было. Я взял за основу три разных проекта, изначально не предназначенных для этой камеры, и свёл их в единый набор скриптов и бинарников, адаптировав под MJSXJ02CM. Это был самый сложный этап — готового оригинала я не нашёл, поэтому пришлось перерабатывать и стыковать разрозненные куски в одно рабочее целое.

 

Процесс прошивки через U-Boot

Флеш-карта форматируется в FAT32, на неё копируются `tf_recovery.img` и содержимое папки `install`. Карта вставляется в камеру.

При включении камеры удерживаем клавишу **Enter** в терминале — автозагрузка прерывается, и мы попадаем в консоль U-Boot (`SigmaStar #`). Выполняем последовательность команд:

fatload mmc 0:1 0x21000000 tf_recovery.img
sf probe 0
sf erase 0x50000 0xFB0000
sf write 0x21000000 0x50000 0xF90050
reset

**Пояснения:**
- `fatload` — загружает образ с SD-карты в оперативную память по адресу `0x21000000`.
- `sf probe` — инициализирует SPI-флеш.
- `sf erase 0x50000 0xFB0000` — стирает область, начиная с адреса `0x50000`, длиной `0xFB0000` байт. Это область rootfs (ядро и загрузчик не затрагиваются).
- `sf write` — записывает образ из памяти во флеш. Длина записи `0xF90050` чуть меньше длины стирания, что нормально: остаток остаётся пустым.
- `reset` — перезагрузка камеры.

После перезагрузки камера загружается с модифицированным rootfs. Индикатор может мигать — это нормально, идёт инициализация.

 

Первая загрузка и настройка Wi-Fi

После загрузки камера доступна по UART, но для полноценной работы нужно настроить сеть. Входим в систему под пользователем root (пароль отсутствует).

Создаём конфигурационный файл `wpa_supplicant`:

cat << 'EOF' > /mnt/data/wpa.conf
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
    ssid="ИМЯ_СЕТИ"
    psk="ПАРОЛЬ"
    key_mgmt=WPA-PSK
}
EOF

Проверяем содержимое:

cat /mnt/data/wpa.conf

Создаём скрипт автоматического подключения:

cat << 'EOF' > /mnt/data/bin/wifi_start.sh
#!/bin/sh
sleep 5
killall wpa_supplicant udhcpc hostapd udhcpd
ifconfig wlan0 up
iwconfig wlan0 mode Managed
wpa_supplicant -Dnl80211 -iwlan0 -c /mnt/data/wpa.conf -B
sleep 5
udhcpc -i wlan0 -t 10 -T 2 -n -S -x hostname:mijia_camera_v4
EOF

chmod +x /mnt/data/bin/wifi_start.sh

Проверяем:

cat /mnt/data/bin/wifi_start.sh

После его выполнения камера подключится к Wi-Fi и получит IP-адрес по DHCP.

 

Доступные сервисы

После подключения к Wi-Fi камера предоставляет несколько сетевых сервисов:

- **Порт 80** — веб-интерфейс для базовой настройки.
- **Порт 8081** — управление RTSP (настройка потока), SSH-доступ и управление моторами PTZ. Фактически это расширенный веб-интерфейс.
- **Порт 5000** — сервер ONVIF с поддержкой PTZ. Именно этот порт используется системами видеонаблюдения (Home Assistant, Synology Surveillance Station, iSpy и др.) для обнаружения камеры и управления поворотным механизмом.

RTSP-поток обычно доступен по адресу вида `rtsp://<IP-камеры>:554/mainstream`.

 

Заключение

Перепрошивка Xiaomi MJSXJ02CM через UART и U-Boot позволила обойти ограничения китайской ревизии и получить полноценную IP-камеру с открытыми протоколами. Несмотря на удаление оригинального репозитория, сообщество сохранило форки и образы, что сделало восстановление возможным. Собранный хак работает стабильно и предоставляет ONVIF, RTSP, SSH и веб-интерфейс.

Теперь камеры полностью работают в локальной сети, отдают видеопоток по RTSP и управляются через ONVIF, что открывает возможность их интеграции в любые системы умного дома.

Вложения:
 Dump[Дамп прошивки из NeoProgrammer]11648 КБ
 Установочный комплект[Распаковать все что в папке install на SD карту]29609 КБ

Комментарии