Восстановление IP камеры PD21-M2
2019-3-15 10:00
Попались в руки 2 IP камеры Polyvision PD21-M2-B2.8-IP не рабочие. Просто не включались. Попробовал восстановить, ведь full HD IP камеры на дороге не валяются.
Плата небольшая, всё как у китайцев - дешево и сердито.
Бегло пробежался по плате после подачи напряжения в поисках этого самого напряжения и оказалось, что один из диодов (маркировка s4) был в обрыве, замени на другой, со старой материнской платы, чуть большего размера.
Теперь после подачи напряжения блок питания стал уходить в защиту, очевидно, что где-то короткое замыкание, в цепи питания после заменённого диода. Мысли были разные, возможно что сгорел проц или память... В поисках истины подключил другой бп, который в защиту уходил не хотя, и тактильным способом обнаружил нагревающийся керамический конденсатор. Он был в коротком замыкании. Его ёмкость уже не определить, впаял просто похожий по размером, с той же донорской материнской платы. В результате на LAN порту, появилась активность и камера ожила... Но адреса её не знаю, никакие ip сканеры не могут её увидеть, софт для поиска камер так же не видел её...
Попытаюсь подключиться к UART на камере...
Подключался по UART с помощью USB-UART свистка на микросхеме ch340. На али стоит в районе 50р.
И удача снова на моей стороне, камера грузится, и пытается работать, но пока к ней не подключиться никак, кроме UART...
U-Boot 2010.06-svn (Mar 27 2014 - 10:49:35) DRAM: 256 MiB Check spi flash controller v350... Found Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00 Spi(cs1): Block:64KB Chip:16MB Name:"W25Q128B" envcrc 0x317b012d ENV_SIZE = 0x3fffc In: serial Out: serial Err: serial Press Ctrl+C to stop autoboot CFG_BOOT_ADDR:0x58080000 16384 KiB hi_sfc at 0:0 is now current device ### boot load complete: 1973968 bytes loaded to 0x82000000 ### SAVE TO 80008000 ! ## Booting kernel from Legacy Image at 82000000 ... Image Name: linux Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1973904 Bytes = 1.9 MiB Load Address: 80008000 Entry Point: 80008000 load=0x80008000,_bss_end=808293d8,image_end=801e9e90,boot_sp=807971d8 Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel.
Но на этом вывод в терминал заканчивался... дальше была абсолютная тишина. Но если во время загрузки успеть нажать на CTRL+C, то можно попасть в U-Boot и прошить девайс с помощью TFTP. Этим я и занялся...
U-Boot 2010.06-svn (Mar 27 2014 - 10:49:35) DRAM: 256 MiB Check spi flash controller v350... Found Spi(cs1) ID: 0xEF 0x40 0x18 0x00 0x00 0x00 Spi(cs1): Block:64KB Chip:16MB Name:"W25Q128B" envcrc 0x317b012d ENV_SIZE = 0x3fffc In: serial Out: serial Err: serial Press Ctrl+C to stop autoboot hisilicon #
По команде printenv можно увидеть переменные окружения, в которых есть команды прошивки девайса...
bootcmd=fload;bootm 0x82000000 bootdelay=1 baudrate=115200 bootfile="uImage" da=mw.b 0x82000000 ff 1000000;tftp 0x82000000 u-boot.bin.img;sf probe 0;flwrite du=mw.b 0x82000000 ff 1000000;tftp 0x82000000 user-x.cramfs.img;sf probe 0;flwrite dr=mw.b 0x82000000 ff 1000000;tftp 0x82000000 romfs-x.cramfs.img;sf probe 0;flwrite dw=mw.b 0x82000000 ff 1000000;tftp 0x82000000 web-x.cramfs.img;sf probe 0;flwrite dl=mw.b 0x82000000 ff 1000000;tftp 0x82000000 logo-x.cramfs.img;sf probe 0;flwrite dc=mw.b 0x82000000 ff 1000000;tftp 0x82000000 custom-x.cramfs.img;sf probe 0;flwrite up=mw.b 0x82000000 ff 1000000;tftp 0x82000000 update.img;sf probe 0;flwrite ua=mw.b 0x82000000 ff 1000000;tftp 0x82000000 upall_verify.img;sf probe 0;flwrite tk=mw.b 0x82000000 ff 1000000;tftp 0x82000000 uImage; bootm 0x82000000 dd=mw.b 0x82000000 ff 1000000;tftp 0x82000000 mtd-x.jffs2.img;sf probe 0;flwrite ipaddr=192.168.1.10 serverip=192.168.1.107 netmask=255.255.255.0 bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock1 rootfstype=cramfs mtdparts=hi_sfc:512K(boot),5M(romfs),7424K(user),1536K(web),256K(custom),256K(logo),1280K(mtd) ethaddr=00:12:12:61:6d:85 HWID=8043420003610426 appVideoStandard=PAL appSystemLanguage=Russian stdin=serial stdout=serial stderr=serial verify=n ver=U-Boot 2010.06-svn (Mar 27 2014 - 10:49:35)
Но для прошивки нужно запустить на ПК сервер TFTP, я запустил первый попавшийся TFTPd64 by Ph. Jounin. В нём нужно выбрать сетевой интерфейс, на котором будет висеть протокол TFTP и папку, из которой будут отдаваться файлы прошивки. Прошивку я нашел на сайте Polyvision, но просто так её не прошить. Сначала нужно её распаковать, хоть расширение у неё .bin, на самом деле это обычный .zip архив. После распаковки будут доступны файлы прошивки разделов памяти. Я просто положил их в папку с TFTPd64, т.к. по умолчанию сервер будет отдавать файлы именно от туда.
Официальная прошивка камеры
TFTP сервер
Начнём прошивать... Для начала нужно настроить U-Boot на приём информации по TFTP, для этого нужно установить ip адрес сервера и камеры. Команда sip 192.168.0.5 - устанавливает адрес сервера (т.е. адрес моего ПК), команда lip 192.168.0.10 - устанавливает адрес камеры, хорошо, чтобы они были в одной сети с ПК. (по умолчанию адрес камеры 192.168.1.10, и адрес сервера 192.168.1.107). Теперь мы готовы шить камеру.
Сначала выберем SPI память, которую будем шить
hisilicon # sf probe 0
Теперь загрузим в ОЗУ файл прошивки user-x.cramfs.img
hisilicon # tftp 0x82000000 user-x.cramfs.img
И, наконец, прошьем её в SPI память
hisilicon # flwrite
Теперь нужно повторить 2 последних пункта для других cramfs образов (romfs-x.cramfs.img, web-x.cramfs.img, logo-x.cramfs.img, custom-x.cramfs.img) и выполнить сброс камеры.
Команда tftp загружает файл заданный в её параметре по адресу 0x82000000 в оперативную память для последующей прошивки в последовательную память (из ОЗУ в ПЗУ). Адрес не нужно менять, только название файла. Flwrite будет записывать файл из ОЗУ с адреса 0x82000000 в пзу (spi память) в те адреса, которые указаны внутри образов cramfs.img, поэтому таким образом нельзя шить не cramfs.img файлы, иначе есть риск убить загрузчик, и тогда придется прошивать SPI память с помощью программатора.
После прошивки имеет смысл сбросить настройки камеры следующим образом. Это очистка раздела mtd, который находится в конце флешки.
hisilicon # sf probe 0 hisilicon # sf erase 0xec0000 0x140000 hisilicon # reset
Важно не промахнуться с адресами, как их вычислить можно почитать в следующем документе
После перезагрузки можно будет зайти на вэб интерфейс камеры по адресу 192.162.1.10 и производить настройки камеры.
Таким образом я восстановил 2 камеры, неисправности были абсолютно одинаковые.
Теги: Ремонт Восстановление камера ip поливижн polyvision camera rebirth firmware прошивка uart