diff --git a/en/device-wyze-integration.md b/en/device-wyze-integration.md index 6f2b287..d235cc5 100644 --- a/en/device-wyze-integration.md +++ b/en/device-wyze-integration.md @@ -8,6 +8,259 @@ This is where we'll be writing down our guide to flashing new devices and report ### Current issues -* Exposure does not work well -* SD card does not work in the U-Boot (power is available) +* Exposure does not work well https://github.com/OpenIPC/majestic/issues/102 +* ~~SD card does not work in the U-Boot (power is available)~~ fixed +* ~~Problem with loading u-boot from an microSD card. It doesn't reach the promt. Not only on wyze v3 (https://t.me/openipc_modding/179369), but also on another board T31L (https://t.me/openipc/47739). Most likely it will be IMPOSSIBLE, because in the camera there is a microSD power management MOSFET, which must be turned on BEFORE booting from the card (the experiment with not fully loaded u-boot was possible due to direct power supply to the microSD card, bypassing the transistor). Please confirm my version if it is not possible otherwise.~~ impossible without modification (direct 3.3V power supply to the microSD card reader) +### Known camera modifications +* WYZE Cam v3 + +| MODEL | IC | FCC ID | PCB VER | SoC | WIFI | NOTES | +| --- | --- | --- | --- | --- | --- | --- | +| WYZEC3 | 25466-WYZEC3A | 2AUIUWYZEC3A | WYZEV3_T31GC2053 V1.2_20200715 | T31X | SDIO: Realtek 8189FTV | MAC: 7C:78:B2:99:6E:BA https://youtu.be/jm4wze_HY78 | +| WYZEC3 | 25466-WYZEC3 | 2AUIUWYZEC3 | WYZEV3_T31GC2053 V1.4_20201010 | T31ZX | SDIO: Realtek 8189FTV | https://t.me/openipc/49957 MAC: 7C:78:B2:69:95:C9 https://youtu.be/t7Nzo-KXTH0 | +| WYZEC3 | 25466-WYZEC3B | 2AUIUWYZEC3B | WYZEV3_T31GC2053 V2.02_20210523 | T31ZX | SDIO: Realtek 8189FTV | MAC: D0:3F:27:46:A7:7B https://t.me/openipc/38728 https://t.me/openipc/38753 | +| WYZEC3 | 25466-WYZEC3A | 2AUIUWYZEC3A | WYZEV3_T31GC2053 V2.02_20210523 | T31ZX | SDIO: AltoBeam 6031 | https://t.me/openipc/49049 https://t.me/openipc/49050 | +| WYZEC3 | 25466-WYZEC3A | 2AUIUWYZEC3A | WYZEV3_T31GC2053 V2.03_20211206 | T31X | SDIO: AltoBeam 6031 | https://t.me/openipc/45444 https://t.me/openipc/48942| +| WYZEC3 | 25466-WYZEC3F | 2AUIUWYZEC3F | WYZEV3_T31AGC2053 V3.2_20210714 | T31A BGA | SDIO: AltoBeam 6031 | https://t.me/openipc/43299 https://t.me/openipc/38755 https://t.me/openipc/38757 | +| WYZEC3 | 25466-WYZEC3F | 2AUIUWYZEC3F | WYZEV3_T31AGC2053 V3.2_20210714 | T31A BGA | SDIO: AltoBeam 6031 | MAC:D0:3F:27:4F:23:19 https://youtu.be/VkqX9yg0odU | + +### OpenIPC installation +* Disassemble camera and connect UART adapter + or your camera should be already connected to network. + +* Backup + +Downgrade original firmware version to (Jun 2021 w-o internet)demo_wcv3_4.36.2.5.bin +[(WYom20200 Jun 2021 w-o internet)demo_wcv3_4.36.2.5.bin.zip](https://github.com/OpenIPC/wiki/files/10755387/WYom20200.Jun.2021.w-o.internet.demo_wcv3_4.36.2.5.bin.zip) + +Login with user `root` password `WYom20200` via telnet or UART console. +Insert microSD card to camera and issue command: + +`for mtd in $(ls /dev/mtdblock*); do dd if=${mtd} of=/media/mmc/${mtd##/*/}.bin; done` + +Output sample: +``` +[root@WCV3:~]# for mtd in $(ls /dev/mtdblock*); do dd if=${mtd} of=/media/mmc/${mtd##/*/}.bin; done +512+0 records in +512+0 records out +262144 bytes (256.0KB) copied, 0.122976 seconds, 2.0MB/s +3968+0 records in +3968+0 records out +2031616 bytes (1.9MB) copied, 0.975797 seconds, 2.0MB/s +7808+0 records in +7808+0 records out +3997696 bytes (3.8MB) copied, 1.955184 seconds, 1.9MB/s +7808+0 records in +7808+0 records out +3997696 bytes (3.8MB) copied, 2.808704 seconds, 1.4MB/s +3968+0 records in +3968+0 records out +2031616 bytes (1.9MB) copied, 0.972091 seconds, 2.0MB/s +7808+0 records in +7808+0 records out +3997696 bytes (3.8MB) copied, 2.299745 seconds, 1.7MB/s +768+0 records in +768+0 records out +393216 bytes (384.0KB) copied, 0.186963 seconds, 2.0MB/s +128+0 records in +128+0 records out +65536 bytes (64.0KB) copied, 0.027560 seconds, 2.3MB/s +``` +If there wasn't errors, then you backed up such partitions: +``` +[root@WCV3:~]# cat /proc/mtd +dev: size erasesize name +mtd0: 00040000 00008000 "boot" +mtd1: 001f0000 00008000 "kernel" +mtd2: 003d0000 00008000 "rootfs" +mtd3: 003d0000 00008000 "app" +mtd4: 001f0000 00008000 "kback" +mtd5: 003d0000 00008000 "aback" +mtd6: 00060000 00008000 "cfg" +mtd7: 00010000 00008000 "para" +``` +Check if files on microSD card with command `ls -la /media/mmc/` + +``` +[root@WCV3:~]# ls -la /media/mmc/ +drwxr-xr-x 7 root root 8192 May 14 01:52 . +drwxrwxrwt 3 root root 60 May 14 01:50 .. +-rwxr-xr-x 1 root root 262144 May 14 01:52 mtdblock0.bin +-rwxr-xr-x 1 root root 2031616 May 14 01:52 mtdblock1.bin +-rwxr-xr-x 1 root root 3997696 May 14 01:52 mtdblock2.bin +-rwxr-xr-x 1 root root 3997696 May 14 01:52 mtdblock3.bin +-rwxr-xr-x 1 root root 2031616 May 14 01:52 mtdblock4.bin +-rwxr-xr-x 1 root root 3997696 May 14 01:52 mtdblock5.bin +-rwxr-xr-x 1 root root 393216 May 14 01:52 mtdblock6.bin +-rwxr-xr-x 1 root root 65536 May 14 01:52 mtdblock7.bin +``` +Save and keep this files in safe place. +In case of any errors you should perform this operation once again, probably with microSD card replacement. + +* Determine SoC model + +Download `ipctool-mips32` to microSD card (https://github.com/OpenIPC/ipctool/releases/download/latest/ipctool-mips32) and insert microSD card in camera. +Login to camera and issue command `/media/mmc/ipctool-mips32` +There should be something like `model: T31ZX` in console output. Important part is `ZX` + +Output sample: +``` +[root@WCV3:~]# /media/mmc/ipctool-mips32 +--- +chip: + vendor: Ingenic + model: T31ZX +rom: + - type: nor + block: 32K + partitions: + - name: boot + size: 0x40000 + sha1: 20776e92 + - name: kernel + size: 0x1f0000 + sha1: 6887b828 + - name: rootfs + size: 0x3d0000 + sha1: d368892a + - name: app + size: 0x3d0000 + path: /system,squashfs + sha1: 04b813a8 + - name: kback + size: 0x1f0000 + sha1: 83ccf23a + - name: aback + size: 0x3d0000 + sha1: 48bbe705 + - name: cfg + size: 0x60000 + path: /configs,jffs2,rw + - name: para + size: 0x10000 + sha1: 472a55b0 + size: 16M +ram: + total: 128M + media: 32M +firmware: + kernel: "3.10.14__isvp_swan_1.0__ (PREEMPT Wed Apr 14 17:44:51 CST 2021)" + toolchain: gcc version 4.7.2 (Ingenic r2.3.3 2016.12) + libc: uClibc 0.9.33.2 + main-app: /system/bin/iCamera + +``` +* Flash OpenIPC U-boot + +Open https://openipc.org/cameras/vendors/ingenic and choose appropriate SoC model from list. + +In this case our choice Ingenic T31X. + +In Downloads section find `OpenIPC Bootloader for Ingenic T31X` and download it. + +https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-t31x-universal.bin + +Copy `u-boot-t31x-universal.bin` to microSD card and insert microSD card in camera. + +`telnet` would be unavailable after the command below (`flashcp`) ! + +Login to camera and issue command: +`flashcp -v /media/mmc/u-boot-t31x-universal.bin /dev/mtd0` + +Output sample: +``` +[root@WCV3:~]# flashcp -v /media/mmc/u-boot-t31x-universal.bin /dev/mtd0 +Erasing block: 8/8 (100%) +Writing kb: 242/242 (100%) +Verifying kb: 242/242 (100%) +``` +Now your camera flashed with OpenIPC U-boot, but whole system is still stock. +So, next re/boot will load OpenIPC U-boot only (in cycling mode, until stop with `Ctrl+C` in UART console). + +* Flash kernel and rootfs + +Since we identified our chip as Ingenic T31X open https://openipc.org/cameras/vendors/ingenic and choose T31X. + +In Downloads section find `OpenIPC Linux (Lite) for Ingenic T31X` and download it. + +https://github.com/OpenIPC/firmware/releases/download/latest/openipc.t31-nor-lite.tgz + +Power off the camera. + +Extract and copy `rootfs.squashfs.t31` `uImage.t31` to microSD card. Insert microSD card in camera. + +Power on the camera. + +During power on the camera press `Ctrl+C` several times until it shows OpenIPC promt like this `OpenIPC # ` + +Then issue command `run setnor16m` + +After you press the Enter key the camera will almost immediately restart and you will have to catch the prompt again. + +Then issue command + +`mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} uImage.${soc} ; sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}` + +and next + +`mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc} ; sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}` + +Output sample: + +``` +OpenIPC # mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} uImage.${soc} ; sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize} +reading uImage.t31 +1855437 bytes read in 89 ms (19.9 MiB/s) +the manufacturer 5e +SF: Detected ZB25VQ128 + +--->probe spend 5 ms +SF: 3145728 bytes @ 0x50000 Erased: OK +--->erase spend 9871 ms +SF: 1855437 bytes @ 0x50000 Written: OK +--->write spend 3286 ms + +OpenIPC # mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc} ; sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize} +reading rootfs.squashfs.t31 +5079040 bytes read in 236 ms (20.5 MiB/s) +the manufacturer 5e +SF: Detected ZB25VQ128 + +--->probe spend 4 ms +SF: 10485760 bytes @ 0x350000 Erased: OK +--->erase spend 31730 ms +SF: 5079040 bytes @ 0x350000 Written: OK +--->write spend 8949 ms + +``` +If everything went well, issue the command `reset` and camera should start boot OpenIPC. + +``` +Welcome to OpenIPC +openipc-t31 login: root + + /###### /###### /####### /###### + /##__ ## |_ ##_/ | ##__ ## /##__ ## + | ## \ ## /###### /###### /####### | ## | ## \ ## | ## \__/ + | ## | ## /##__ ## /##__ ## | ##__ ## | ## | #######/ | ## + | ## | ## | ## \ ## | ######## | ## \ ## | ## | ##____/ | ## + | ## | ## | ## | ## | ##_____/ | ## | ## | ## | ## | ## ## + | ######/ | #######/ | ####### | ## | ## /###### | ## | ######/ + \______/ | ##____/ \_______/ |__/ |__/ |______/ |__/ \______/ + | ## + | ## build + |__/ master+98e3bca7, 2023-02-11 + + Please help the OpenIPC Project to cover the cost of development and + long-term maintenance of what we believe is going to become a stable, + flexible Open IP Network Camera Framework for users worldwide. + + Your contributions could help us to advance the development and keep + you updated on improvements and new features more regularly. + + Please visit https://openipc.org/sponsor/ to learn more. Thank you. + +root@openipc-t31:~# + +``` diff --git a/en/faq.md b/en/faq.md index 0f02dd4..5610c91 100644 --- a/en/faq.md +++ b/en/faq.md @@ -6,19 +6,7 @@ Frequesntly Asked Questions ### How to get into bootloader shell? -If you can't interrupt the boot sequence with a key combination, or if your -camera requires a bootloader password that you don't know, you can still make -it stop the Linux kernel booting and throw you into the shell. - -Short-circuit pins 5 and 6 of the flash chip with a small metal object, -a screwdriver or tweezers, right after the bootloader starts but before it -calls up the Linux kernel. - -Pins 5 and 6 of the SOIC8 chip are on the opposite corner of pin 1, indicated -by the embossed or drawn dot next to it. - - - +[There is a handful of ways to get access to a locked bootloader shell](help-uboot.md#bypassing-password-protected-bootloader) ### How to reset camera settings from U-Boot diff --git a/en/hardware-programmer-ch341a-voltage-fix.md b/en/hardware-programmer-ch341a-voltage-fix.md index 7ab73f3..87516a7 100644 --- a/en/hardware-programmer-ch341a-voltage-fix.md +++ b/en/hardware-programmer-ch341a-voltage-fix.md @@ -34,3 +34,12 @@ Restore power to the chip re-routing 3.3V voltage from 3v3 pin to pin 28 of CH341A IC through 5V pin connector on the header.  + + +### Software + +- [SNANDer](https://github.com/McMCCRU/SNANDer) [or this fork](https://github.com/Droid-MAX/SNANDer) +- [ch341prog](https://github.com/setarcos/ch341prog/) +- [flashrom](https://www.flashrom.org/Flashrom) + + diff --git a/en/help-uboot.md b/en/help-uboot.md index 550a97a..6accd7f 100644 --- a/en/help-uboot.md +++ b/en/help-uboot.md @@ -262,6 +262,29 @@ flash a new bootloader you have to weigh up all the risks and benefits. In most cases the original bootloader plus new kernel and new operating system should work just fine. But there are exceptions. +#### Shorting pins on flash chip + +If you can't interrupt the boot sequence with a key combination, or if your +camera requires a bootloader password that you don't know, you can still make +it stop the Linux kernel booting and throw you into the shell. + +The first thing to do is locate the flash memory chip on the camera circuit +board. Typically this is a square chip with 8 pins labeled 25Q64 or 25Q128, +rarely 25L64 or 25L128. If you have trouble locating the chip, try taking +some pictures of your board from both sides. Then ask for help +[in our Telegram channel](https://t.me/openipc). +__Do not try to short-circuit any random chip! It will most likely burn your camera circuit.__ + +Short-circuit pins 5 and 6 of the flash chip with a small metal object, +a screwdriver or tweezers, right after the bootloader starts but before it +calls up the Linux kernel. + +Pins 5 and 6 of the SOIC8 chip are on the opposite corner of pin 1, indicated +by the embossed or drawn dot next to it. + + + + #### Downgrading stock firmware. Today, we see more and more cameras where access to bootloader console is diff --git a/index.md b/index.md index 9faa4e7..ecc94c2 100644 --- a/index.md +++ b/index.md @@ -97,7 +97,8 @@ OpenIPC Wiki ### Reference Book - [Company names](en/company-names.md) -- [Hikvision IP Camera Model naming convention](https://www.vueville.com/home-security/cctv/ip-cameras/hikvision-network-camera-guide/#model-naming-convention) +- [Dahua Naming Rule](https://dahuawiki.com/Name_Rule) +- [Hikvision IP Camera Model Naming Convention](https://www.vueville.com/home-security/cctv/ip-cameras/hikvision-network-camera-guide/#model-naming-convention) ### Resources for recycling and integration - <https://github.com/OpenIPC/camerasrnd> @@ -124,6 +125,7 @@ In Russian - [Полезные ссылки](ru/resources.md) - [Обзоры камер разных производителей](ru/reviews.md) - [Hikvision DS-2CD2345F-IS](ru/hikvision-ds-2cd2345f-is.md) +- [Ростелеком IPC-HFW1230SP/IPC-HDW1230SP](ru/rostelecom-ipc-hfw1230sp.md) ## Что можно прочитать про прошивку OpenIPC? - [Часто задаваемые вопросы и ответы на них][faq1] diff --git a/ru/rostelecom-ipc-hfw1230sp.md b/ru/rostelecom-ipc-hfw1230sp.md new file mode 100644 index 0000000..5df3c9d --- /dev/null +++ b/ru/rostelecom-ipc-hfw1230sp.md @@ -0,0 +1,95 @@ +# OpenIPC Wiki +[Оглавление](../index.md) + +Ростелеком IPC-HFW1230SP/IPC-HDW1230SP +-------------- + +**Внимание, на данный момент это просто рабочие заметки, а НЕ полная инструкция к действию !** + +Не пишу, что камера Dahua DH-IPC1230SP, потому что это не совсем так. Производит её, конечно, Dahua, но модель явно какая-то другая. Подтверждением этому является то, что прошивки от оригинальных соответствующих моделей Dahua не подходят для этого кадавра. +К счастью, аппаратная платформа поддерживается проектом **OpenIPC**. + +## Текущая ситуация +- Загрузчик OpenIPC. +- Переключение режима день/ночь по датчику освещённости. +- Изображение есть, но картинка оставляет желать лучшего и решения пока нет. + +## Платформа +- Процессор hi3516cv300 +- Память nand +- Сенсор ov2735 + +## Прошивка +Качаем с GitHub архивы с загрузчиком и образами ядра и файловой системы для имеющегося процессора. +- [u-boot-hi3516cv300-universal.bin](https://github.com/OpenIPC/firmware/releases/download/latest/u-boot-hi3516cv300-universal.bin) +- [openipc.hi3516cv300-nand-ultimate.tgz](https://github.com/OpenIPC/firmware/releases/download/latest/openipc.hi3516cv300-nand-ultimate.tgz) + +Загрузчик кладём в папку tftp-сервера как есть, а образы ядра и файловой системы нужно предварительно распаковать. +Для прошивки понадобится подключиться через UART, что соответственно, потребует адаптер USB-TTL, коннектор к нему и программу-терминал. + +### Подключение + +- Подключаем коннектор к камере и адаптеру. +- Подключаем адаптер к компьютеру - появится виртуальный COM-порт. Исхожу из того, что драйверы уже установлены. +- Запускаем терминал. +- Подаём питание на камеру и, как только побежит лог загрузки, нажимаем любую клавишу для остановки запуска и попадания в загрузчик. + +### Загрузчик +Для имеющейся платформы есть универсальный загрузчик OpenIPC, что нанмого упрощает процесс прошивки. +``` +mw.b 0x82000000 0xff 0x100000 +tftp 0x82000000 u-boot-hi3516cv300-universal.bin +nand erase 0x0 0x100000 +nand write.i 0x82000000 0x0 0x100000 + +reset +``` +Если всё прошло успешно, после перезапуска системы нужно будет снова нажимать любую клавишу для остановки и попадания уже в загрузчик OpenIPC. +В загрузчике присутствуют необходимые макросы, поэтому всё стало намного проще. Сначала переключим загрузчик на тип памяти NAND командой setnand: +``` +run setnand +``` +После перезагрузки, переменные окружения и разметка будут соответствовать памяти NAND. +``` +setargs=setenv bootargs mem=${osmem} console=ttyAMA0,115200 panic=20 init=/init root=ubi0:rootfs rootfstype=ubifs ubi.mtd=3,2048 mtdparts=${mtdparts} +bootargs=mem=32M console=ttyAMA0,115200 panic=20 init=/init root=ubi0:rootfs rootfstype=ubifs ubi.mtd=3,2048 mtdparts=hinand:256k(boot),768k(wtf),3072k(kernel),-(ubi) +``` +Меняем serverip на адрес своего компьютера, задаём свой сенсор, MAC-адрес и сохраняем: +``` +setenv serverip 192.168.1.128 +setenv sensor ov2735_i2c +setenv ethaddr 00:12:34:56:78:90 //MAC-адрес с наклейки камеры + +saveenv +``` +### Образы ядра и файловой системы +Благодаря расово верному загрузчику прошивка делается не просто, а очень просто: +``` +run uknand +run urnand + +reset +``` +### Первый запуск +Не прерываем загрузку бута и наблюдаем лог запуска системы. Если всё прошло штатно и в использованной сборке ничего не отломано, то через несколько секунд увидим приглашение входа. Логинимся под пользователем root без пароля и вводим команду ifconfig eth0, чтобы увидеть полученный IP-адрес. +Веб-интерфейс по умолчанию доступен по порту 85. Логин: admin, пароль: 12345. При первом входе будет предложено задать новый сложный пароль, который станет также и паролем root при входе в консоль через UART или SSH. +Трансляция первого потока работает сразу без дополнительных настроек. + +В Preview только слайд-шоу, а если хочется видеопотока, то проще всего увидеть его в VLC, выбрав в меню пункт Открыть URL и введя одну из строк: + +- rtsp://admin:password@ip-address:554/stream=0 — первый поток +- rtsp://admin:password@ip-address:554/stream=1 — второй поток + +где: password — ваш пароль, ip-address — адрес камеры. + +## Ночной режим +При наступлении тёмного времени суток или выключении источников света, как правило, видеокамеры переходят в ночной режим. Происходит перевод изображения в чёрно-белый режим, отключается ИК-фильтр и включается ИК-подсветка. В обратной ситуации производятся обратные действия. +Датчик освещённости присутствует, поэтому достаточно просто прописать правильные GPIO в соответствующих полях раздела Majestic -> Night Mode: + +- Включить Enable night mode +- Задать GPIO pin of signal from IR sensor: 64 +- Задать GPIO pin1 of signal for IRcut filter: 59 +- Задать GPIO pin2 of signal for IRcut filter: 58 +- Задать GPIO pin to turn on night mode illumination: 53 + +