Итак, небольшая предыстория, если Вы читаете это, то скорее всего у Вас примерно те-же самые симптомы
Решил обновить прошивку и случайно залил не ту версию, камера пингуется, telnet проходит, но видео нет, пришлось восстанавливать.
Основная проблема в том, что прошивка содержится в формате UBI, это формат специальной файловой системы для Флэш-карт UBIFS. Стандартными средствами из этих файлов нельзя вытащить информацию, но имея небольшой опыт работы с Linux это не составит большого труда. Дальше все будет описано по порядку
Что нам понадобится
Код: Выделить всё
1. Любой клиент telnet, я предпочитаю использовать например http://putty.org
2. Любой NFS сервер например http://freenfs.sourceforge.net/
3. Любой TFTP-сервер (для особо запущенных случаев) http://tftpd32.jounin.net/
4. Любой Linux, например http://ubuntu.ru/
5. Вначале надо все прочитать, а только потом делать. При неумелом использовании ничего не заработает и станет только хуже. Если не прочитаете до конца, то точно ничего не заработает. При восстановлении камеры вводятся ОЧЕНЬ ОПАСНЫЕ КОМАНДЫ, КОТОРЫЕ МОГУТ УНИЧТОЖИТЬ ВСЕ, ЧТО НАХОДИСТЯ В ПРОШИВКЕ КАМЕРЫ, ТОГДА ВАМ ПРИДЕТСЯ ИСПОЛЬЗОВАТЬ ОЧЕНЬ СЛОЖНЫЕ МЕТОДЫ С ИСПОЛЬЗОВАНИЕМ U-BOOT
Код: Выделить всё
1. Запускаем клиент telnet и вводим ip-адрес камеры
2. Для Putty указываем тип соединения telnet, и порт 23
3. Вводим имя пользователя: root
4. Вводим пароль, если у вас запущенный случай, то пароль камера не попросит
4.1. hs201407
4.2. h2014071
4.3. root
4.4. admin
5. Перед нами появится командная консоль
6. Вводим команду b_df
6.1. В результате получим что-то похожее
Filesystem Size Used Available Use% Mounted on
ubi0:rootfs 42.0M 20.1M 21.9M 48% /
devtmpfs 51.9M 0 51.9M 0% /dev
tmpfs 52.0M 120.0K 51.9M 0% /tmp
tmpfs 52.0M 72.0K 51.9M 0% /dev/shm
tmpfs 52.0M 88.0K 51.9M 0% /run
ubi1:upgrade 20.3M 10.0M 10.2M 49% /hs/upgrade
ubi1:param 5.7M 56.0K 5.7M 1% /hs/param
ubi2:user 18.8M 9.9M 8.9M 53% /hs/user
7. Если в списке есть раздел ubi2:user , то все не так плохо
8. Также, нам надо проверить какая версия busybox установлена на камере, вводим команду b_ubiformat
8.1. Если в ответ будет надпись b_ubiformat: not found, значит все стало еще сложнее, но поправимо)))
8.2. Вводим команду b_cat /proc/mtd
8.2.1. В результате получим что-то похожее
dev: size erasesize name
mtd0: 00020000 00020000 "bst"
mtd1: 00140000 00020000 "bld"
mtd2: 00140000 00020000 "ptb"
mtd3: 00800000 00020000 "pri"
mtd4: 03400000 00020000 "lnx"
mtd5: 01a00000 00020000 "add"
mtd6: 02400000 00020000 "adc"
8.3. Если у вас есть раздел c именем add, то скорее всего все получится легко, если нет, то придется внимательно изучать то, что здесь будет написано
Код: Выделить всё
1. Раздел с пользовательской программой присутствует, но на нем неверные данные
2. Раздел с пользовательской информацией уничтожен и у нас стоит нормальная версия busybox
3. Раздел с пользовательской информацией уничтожен и у нас стоит обрезанный busybox
3.1. Busybox обрезается, если в камеру заливали bridge прошивку для перехода с 5 версии на 6, по какой-то причине они удалили из него половину функционала
3.2. Bridge – это обновление корневой файловой системы камеры, фактически полная замена встроенного Linux Busybox. Видимо китайцы перешли на новую версию ядра Linux и новые прошивки не могут работать со старым ядром
Код: Выделить всё
Скачиваем прошивку для Вашей камеры с сайта, для Longse и Cantonk это http://www.herospeed.net/en/
Если у Вас проблема из списка №3, то скачиваем 6 версию (на других камерах версии могут быть иные, но в любом случае есть прошивки до Bridge и после Bridge) прошивки для своей камеры. Расширение файла прошивки должно быть FLS, не bridge, а именно FLS.
Для проблемы №2 скачиваем версию прошивки 5 (на других камерах версии могут быть иные, но в любом случае есть прошивки до Bridge и после Bridge)
Для проблемы №1 – скачиваем необходимую версию прошивки, которая была на камере до обновления, прошивки так-же могут быть до bridge и после bridge
Код: Выделить всё
1. Копируем файл прошивки на наш Linux, который мы указан в само начале статьи
2. Вводим следующие команды
2.1. b_modprobe nandsim first_id_byte=0x2c second_id_byte=0xda third_id_byte=0x90 fourth_id_byte=0x95
2.2. b_flash_erase /dev/mtd0 0 0
2.3. b_ubiformat /dev/mtd0 -s 2048 -O 2048 -f ИМЯ ФАЙЛА ПРОШИВКИ
2.4. b_modprobe ubi
2.5. b_ubiattach -m 0 -d 0 -O 2048
2.6. b_mount /dev/ubi0_0 /mnt/camera_restore
2.7. b_ls –la /mnt/camera_restore
2.7.1. Вы должны увидеть каталоги bin, etc и www
3. Если все получилось, то Вам крупно повезло, если нет, то надо искать способ распаковать прошивку, я сам долго с этим мучился. Прошивка в формате UBIFS, ищем в интернете статьи по запросу mount ubifs
4. Далее запускаем NFS-сервер, не забываем в настройках указать разрешение на доступ к серверу с IP-адреса нашей камеры
5. Копируем все, что мы находится в прошивке в директорию NFS-сервера, к которой предоставлен доступ
6. Заходим на камеру и вводим следующие команду
6.1. b_mkdir /mnt/nfs
6.2. b_mount -t nfs -o nolock IP-NFS-СЕРВЕРА:/ /mnt/nfs
7. Если все получилось то продолжаем
7.1. b_cd /hs/user
7.2. ДАЛЕЕ ОЧЕНЬ ОПАСНАЯ КОМАНДА, ПРОВЕРЯЕМ ЧТО МЫ НАХОДИМСЯ ИМЕННО В КАТАЛОГЕ /hs/user, ЕСЛИ НЕТ, ТО ВЫ СДЕЛАЛИ ЧТО_ТО НЕ ТАК
7.2.1. ЭТАК КОМАНДА УДАЛИТ ВСЕ В КАТАЛОГЕ В КОТОРОМ ВЫ НАХОДИТЕСЬ
7.2.1.1. b_rm –rf *
8. Копируем все из каталога /mnt/nfs в каталог /hs/user
8.1. Вначале создаем в каталоге /hs/user необходимые директории
8.2. Создавать папки при помощи команды
8.2.1. b_mkdir ИМЯ ДИРЕКТОРИИ
8.3. Копируем все при помощи команды cp
8.3.1. b_cp /mnt/nfs/ИМЯ ДИРЕКТОРИИ/* /hs/user/ИМЯ ДИРЕКТОРИИ/
8.3.1.1. Директории не копируются, если есть вложенные директории, то надо скопировать и все их содержимое, предварительно создав их
8.3.1.1.1. b_mkdir /hs/user/ИМЯ ДИРЕКТОРИИ/ИМЯ ПОДДИРЕКТОРИИ
8.3.2. Копируем все рекурсивно b_cp /mnt/nfs/ИМЯ ДИРЕКТОРИИ/ИМЯ ПОДДИРЕКТОРИИ/* /hs/user/ИМЯ ДИРЕКТОРИИ/ИМЯ ПОДДИРЕКТОРИИ/
8.3.3. ВНИМАНИЕ В ПРОШИВКЕ МОГУТ БЫТЬ ФАЙЛЫ СИМВОЛИЧЕСКИХ ССЫЛОК, НАПРИМЕР ФАЙЛ www/snap.jpg
8.3.3.1. Создаем симлинк вручную b_ln –s /tmp/snap.jpg /hs/user/www/snap.jpg
8.3.3.1.1. Таким образом файл /hs/user/www/snap.jpg будет ссылаться на файл /tmp/snap.jpg
9. Далее даем права и перезагружаем камеру
9.1. b_chmod 755 /hs/user/* -R
9.2. b_cd /
9.3. b_umount /mnt/nfs
9.4. b_reboot
10. По идее все должно работать после перезагрузки
Код: Выделить всё
1. Решение аналогично 1, за исключением того, что у нас не размечена NAND память с пользовательским разделом
1.1. Вначале делам все по "Решению 1", начиная с "Решение 1" – п. 1, до "Решение 1" – п. 5 (включительно)
2. На камере вводим команды
2.1. ОПАСНАЯ КОМАНДА, ПРОВЕРЯМ, ЧТО НАШ РАЗДЕЛ ИМЕННО 5
2.1.1. cat /proc/mdstat
2.1.2. Ищем раздел с надписью add, в моем случае это mtd5
2.1.3. И ВЫПОЛНЯЕМ ОПАСНУЮ КОМАНДУ
2.1.3.1. b_flash_eraseall /dev/mtd5
2.1.4. Перезагружаем камеру
2.1.4.1. b_reboot
3. И опять заходим на нее
3.1. Вводим команду
3.1.1. b_ubinfo
3.1.1.1. В результате получаем
UBI version: 1
Count of UBI devices: 3
UBI control device major/minor: 10:60
Present UBI devices: ubi0, ubi1, ubi2
4. Вводим команду
4.1. b_df
4.1.1. проверяем, что у нас в списке нет надписи ubi2: (на вашей камере может быть другой раздел, но он будет отсутствовать в списке b_df и присутствовать в b_ubinfo)
4.2. Вводим команду
4.2.1. b_ls –la /dev/ | grep ubi
4.2.2. ubiN – номер NAND-флэш памяти
crw------- 1 root root 251, 0 Jun 10 12:44 ubi0
crw------- 1 root root 251, 1 Jun 10 12:44 ubi0_0
crw------- 1 root root 250, 0 Jun 10 12:44 ubi1
crw------- 1 root root 250, 1 Jun 10 12:44 ubi1_0
crw------- 1 root root 250, 2 Jun 10 12:44 ubi1_1
crw------- 1 root root 249, 0 Jun 10 12:44 ubi2
crw------- 1 root root 249, 1 Jun 10 12:44 ubi2_0
crw------- 1 root root 10, 60 Jun 10 12:44 ubi_ctrl
4.3. ubiN_n – это номер раздела
4.3.1. У всех карт кроме ubi_ctrl должен быть раздел, как минимум 1, скорее всего у Вас будет отсутствовать раздел ubi2_0
4.4. ОПАСНАЯ КОМАНДА
4.4.1. КОМАНДА ПО НОВОЙ ДЕЛАЕТ РАЗМЕТКУ ФЛЭШ-ПАМЯТИ
4.4.1.1. b_ubimkvol /dev/ubi2 –N user –m
5. Перезагружаем камеру
5.1. b_reboot
6. Заходим на камеру
7. Вводим команду
7.1. b_df
7.1.1. Должен появиться раздел ubi2:user с точкой монтирования /hs/user
7.2. Если не появился, значит что-то пошло не так и можно попробовать решение №3
8. Далее делаем все по "Решению 1", начиная с "Решение 1" – п.6
Код: Выделить всё
1. Если вы находитесь здесь, значит у вас какие-то проблемы с NAND-флэш, эти проблемы может решить только нормальная прошивка средствами камеры
2. Заходим на камеру
2.1. Выполняем ВСЕ пункты "Решения 1"
2.1.1. Копирование будет происходить на флэш-карту корневой системы, так как по пути /hs/user сейчас нет флэшки и эта директория принадлежит корневому каталогу
2.1.2. Если не будет хватать места, то можно не копировать файлы из www/install
3. Камера уже должна работать, но это не все
4. Так как мы не скопировали файл из www/install
4.1. Запускаем этот exe-файл на своем ПК, он установит ActiveX-компонент для работы через WEB-интерфейс
5. Заходим на WEB-интерфейс и обновляем прошивку, средствами камеры
6. Заходим на камеру
6.1. Выполняем команду
6.1.1. b_df
6.1.2. У нас должна появиться точка монтирования /hs/user
7. Если все есть, то вводим команду
7.1. b_ps ax | grep /hs/user
7.2. Команда отобразит список работающих процессов
7.3. Нам надо убить все процессы, которые запущены с точки монтирования /hs/user
7.4. Вначале убиваем WatchDog
7.4.1. b_kill ИД ПРОЦЕССА
7.5. Потом убиваем все остальные
8. Вводим команду
8.1. b_umount /hs/user
8.2. Далее выполняем пункт из Решения 1,
8.2.1. ОПАСНО
8.2.1.1. "Решение 1" – п.7
8.3. Таким образом мы удалим файлы, которые были записаны в корневую файловую систему, так как они у нас продублированы
8.3.1. Кто не понял зачем, то читаем Linux, команда mount
8.3.1.1. Хотя вряд-ли, кто не понял зачем мы это делаем дочитал до этого места
9. Перезагружаем камеру
10. Все должно работать