mirror of https://github.com/OpenIPC/wiki.git
				
				
				
			
		
			
				
	
	
		
			108 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
| ![OpenIPC logo][logo]
 | ||
| 
 | ||
| Установка OpenIPC. Шаг за шагом.
 | ||
| ================================
 | ||
| 
 | ||
| ### Шаг 1. Определите тип процессора.
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
| _Пример маркировки процессора Hisilicon Hi3518EV100. Значимые символы обведены жёлтым._
 | ||
| 
 | ||
| ### Шаг 2. Скачайте прошивку.
 | ||
| 
 | ||
| Найдите свой тип процессора на странице <https://github.com/OpenIPC/firmware>
 | ||
| и убедитесь, что для него есть готовая прошивка. Если вам повезло, и такая прошивка
 | ||
| существует -- скачайте её на свой компьютер.
 | ||
| 
 | ||
| ### Шаг 3. Установите и настройте сервер TFTP.
 | ||
| 
 | ||
| TFTP расшифровывается как Trivial File Transer Protocol. Как следует уже из
 | ||
| названия, это очень простой протокол, предназначенный для передачи файлов по
 | ||
| компьютерной сети. TFTP не поддерживает аутентификацию. Его код настолько прост
 | ||
| и компактен, что TFTP клиенты используются в сетевых и встроенных системах для
 | ||
| получения загрузочных образов с сетевых серверов.
 | ||
| 
 | ||
| #### Если на вашем компьютере Linux
 | ||
| 
 | ||
| Если на вашем компьютере установлен Linux, то здесь всё просто. Скомилированный
 | ||
| и готовый к использованию пакет сервера TFTP уже лежит в репозитарии, и вам
 | ||
| только надо установить его и настроить:
 | ||
| 
 | ||
| ```
 | ||
| sudo apt install tftpd-hpa
 | ||
| sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa
 | ||
| sudo systemctl restart tftpd-hpa.service
 | ||
| ```
 | ||
| 
 | ||
| Теперь у вас есть свой TFTP сервер, который работает с файлами в директории
 | ||
| `/srv/tftp`. Разверните архив с прошивкой, скачаный в п.2 в эту директорию.
 | ||
| 
 | ||
| ```
 | ||
| sudo tar -C /srv/tftp/ -xvf openipc.*.tgz
 | ||
| ```
 | ||
| 
 | ||
| ### Шаг 4. Подключение к порту UART.
 | ||
| 
 | ||
| Для подключения к камере через порт UART вам понадобится [адаптер](https://www.google.com/search?q=ftdi+usb+ttl) для создания подключения с серийного порта вашего компьютера.
 | ||
| 
 | ||
| __Прежде чем подключать адартер к камере, убедитесь, что переключатель уровня рабочего напряжения на адартере установлен в 3.3 вольта!__ Иногда для этого достаточно выставить соответствующее положение джампера, иногда надо перепаять ключ на контактной площадке. Некоторые адартеры работают только с напряжением 5 вольт. В этом случае вам понадобится дополнительный [конвертер](https://google.com/search?q=logic+level+converter+3.3v+5v) уровня сигналов TTL, включенный между адартером и портом UART камеры.
 | ||
| 
 | ||
| Один из нужных вам контактов порта UART -- `GND`. Его легко определить, проверив мультиметром неразрывность цепи на любой другой известный контакт `GND`. Нашли? Тогда остаётся найти ещё два контакта -- `RX` и `TX`, они используются для получения и передачи данных, соответственно. Соедините `GND` камеры с контактом `GND` адаптера, подключите USB разъём адаптера к порту USB вашего компьютера, запустите на компьютере программу подключения к серийному порту и установите соединение с адаптером. Используйте скорость подключения 115200 bps. После этого соедините контакт `RX` адаптера с предполагаемым контактом `TX` порта UART. Подайте питание на камеру. Если вы угадали правильно, на экране появится лог загрузки. Если же экран остался чистым -- повторите процедуру с другим свободным контактом UART. После того, как вы определили порт `RX`, подключите порт `TX` адаптера к оставшемуся свободному контакту порта UART. Попробуйте прервать загрузку камеры нажатием комбинации клавиш на клавиатуре компьютера. Если все получилось -- поздравляем, вы получили доступ к камере.
 | ||
| 
 | ||
| Четвертым контактом порта UART может быть `VCC`. Он используется для подачи напряжения во время прошивки камеры на заводе. Мы настоятельно советуем не подключать питание камеры через `VCC` порт UART, а использовать для этого штатный разъем питания.
 | ||
| 
 | ||
| ### Шаг 5. Загрузчик.
 | ||
| 
 | ||
| Перегрузите камеру и постарайтесь получить доступ к консоли загрузчика нажав требуемую комбинацию клавиш между моментом начала загрузки и до старта ядра Линукс. В большинстве случаев это комбинация `Ctrl-C`. Реже -- `Esc` или просто любая клавиша. Но некоторые камеры требуют более экзотические комбинации. Читайте надписи на экране во время загрузки. Если это не помогло -- попросите помощи на нашем канале Телеграм. Скорее всего, мы уже имели дело с подобной камерой.
 | ||
| 
 | ||
| Начиная с этого момента мы настоятельно советуем вам вести записи всего, что вы делаете. Включите сохранение логов сессии в вашем консольном клиенте. Но для еще большей надежности создайте текстовый файл на вашем компьютере и заносите в него все выполняемые команды и ответы системы.
 | ||
| 
 | ||
| После того, как вы получили доступ в консоль загрузчика, наберите `help` и проверьте список доступных вам команд. Убедитесь, что в списке команд присутствует `tftp`.
 | ||
| 
 | ||
| Проверьте настройки системного окружения командой `printenv`. Вас интересуют настройки сетевого подключения: `ipaddr`, `netmask` и  `serverip`. Первые два параметра задают IP адрес и сетевую маску вашей камеры для подключния в локальную сеть. Третий параметр -- IP адрес сервера TFTP, с которого и на который будут передаваться файлы командой tftp. Установите нужные значения командой `setenv` (используйте IP адреса и сетевую маску соответствующие вашей сети). Сохраните установленные значения командой `saveenv`.
 | ||
| 
 | ||
| ```
 | ||
| setenv ipaddr 192.168.1.253
 | ||
| setenv netmask 255.255.255.0
 | ||
| setenv serverip 192.168.1.254
 | ||
| saveenv
 | ||
| ```
 | ||
| 
 | ||
| ### Шаг 6. Сохранение заводской прошивки.
 | ||
| 
 | ||
| Большинство IP камер сегодня комплектуются чипами Nor или Nand флэш-памяти объемом 8 или 16 мегабайтов. Вы можете увидеть тип и размер установленной на вашей камере микросхемы в выводе лога загрузчика. Там будет что-то вроде этого:
 | ||
| 
 | ||
| ```
 | ||
| U-Boot 2010.06-svn (Oct 21 2016 - 11:21:29)
 | ||
| 
 | ||
| Check Flash Memory Controller v100 ... Found
 | ||
| SPI Nor(cs 0) ID: 0xс2 0x20 0x18
 | ||
| spi_general_qe_enable(294): Error: Disable Quad failed! reg: 0x2
 | ||
| Block:64KB Chip:16MB Name:"MX25L128XX"
 | ||
| SPI Nor total size: 16MB
 | ||
| ```
 | ||
| 
 | ||
| Чтобы сохранить содержимое флэш-памяти в файл, необходимо сначала загрузить это содержимое в оперативную память.
 | ||
| 
 | ||
| ```
 | ||
| sf probe 0
 | ||
| mw.b 0x82000000 ff 0x1000000
 | ||
| sf read 0x82000000 0x0 0x1000000
 | ||
| ```
 | ||
| 
 | ||
| Первая из приведенных выше команд инициализирует флэш-память, вторая очищает содержимое региона опертивной памяти с адреса 0x82000000 длиной 0x1000000 байт, подготавливая его для загрузки содержимого флэш-памяти, а затем третья считывает содержимое флэш-памяти начиная с адреса 0x0 и помещает его в подготовленный участок оперативной памяти. Остается только выгрузить данные из оперативной памяти в виде файла на сервер TFTP.
 | ||
| 
 | ||
| ```
 | ||
| tftp 0x82000000 firmware-full.bin 0x1000000
 | ||
| ```
 | ||
| 
 | ||
| 
 | ||
| _...to be continued._
 | ||
| 
 | ||
| 
 | ||
| ** ПРОВЕРИТЬ ВСЕ КОМАНДЫ НА ЖИВОЙ СИСТЕМЕ!***
 | ||
| 
 | ||
| 
 | ||
| [logo]: https://cdn.themactep.com/images/logo_openipc.png
 |