wiki/vi/installation.md

20 KiB
Raw Blame History

Wiki OpenIPC

Bảng nội dung

Phương pháp cài đặt hiện có

Rất tiếc, các nhà sản xuất camera IP chưa giao hàng với OpenIPC được cài đặt sẵn, vì vậy để cài đặt OpenIPC lên một chiếc camera vẫn đang sử dụng hình ảnh firmware gốc, một trong những phương pháp sau đây phải được sử dụng:

  • Dự án Coupler cung cấp hình ảnh firmware có thể được cài đặt bằng cách sử dụng cơ chế nâng cấp firmware được tích hợp sẵn vào firmware gốc của nhiều camera.

  • Ghi firmware OpenIPC sử dụng bootloader U Boot được bao gồm trong firmware của nhà cung cấp. Phương pháp này ngắt quá trình khởi động bình thường của firmware của nhà cung cấp, và thay vào đó hướng dẫn U-Boot tải firmware OpenIPC qua mạng, và ghi nó vào bộ nhớ flash (thay thế phần chính của firmware của nhà cung cấp). Phương pháp này yêu cầu vỏ camera phải được mở để kết nối một bộ chuyển đổi UART với cổng "console" nội bộ /cổng debug của camera.

Cài đặt firmware OpenIPC sử dụng Coupler.

Hướng dẫn sử dụng Coupler có thể được tìm thấy trong tài liệu của dự án.

Cài đặt firmware OpenIPC qua TFTP và UART, từng bước một.

Bước 1. Xác định Hệ thống trên Chip.

Hệ thống trên Chip (SoC) bao gồm lõi CPU của camera, cũng như tất cả các phụ kiện cần thiết như giao diện camera và mạng. Vì nhiều lý do (bao gồm không gian lưu trữ onboard hạn chế trên hầu hết các Camera IP), dự án OpenIPC hiện tại xây dựng các tệp nhị phân firmware riêng biệt cho mỗi mô hình SoC. Bạn phải xác định SoC mà camera của bạn sử dụng, để bạn có thể sử dụng đúng tệp nhị phân firmware. Điều này có thể được thực hiện bằng cách đọc các dấu hiệu trên gói IC SoC trên PCB chính của camera (xem hình ảnh mẫu dưới đây), hoặc bằng cách sử dụng phần mềm như ipctool để xác định mô hình SoC từ firmware của nhà cung cấp.

Dấu hiệu SoC Dấu hiệu SoC Dấu hiệu SoC Dấu hiệu SoC

Dấu hiệu SoC Hisilicon Hi3518EV100, Ingenic T20, T31 và T40. Các biểu tượng liên quan được đánh dấu bằng màu vàng.

Bước 2. Cài đặt và thiết lập một máy chủ TFTP.

TFTP là viết tắt của Trivial File Transfer Protocol. Như tên gọi, đây là một giao thức rất đơn giản dành cho việc chuyển tệp qua mạng máy tính cục bộ. TFTP không hỗ trợ xác thực. Mã của nó rất nhỏ gọn và đơn giản đến nỗi các khách hàng TFTP được sử dụng rộng rãi trong các thin-client và hệ thống nhúng để lấy các hình ảnh khởi động từ một máy chủ khởi động được chỉ định trên mạng cục bộ.

Nếu bạn đang sử dụng Linux...

...thì việc này rất dễ dàng. Có thể đã có gói nhị phân đã được biên dịch và sẵn sàng sử dụng cho hệ điều hành của bạn trong kho lưu trữ của hệ điều hành, và bạn chỉ cần cài đặt nó và thiết lập.

sudo apt install tftpd-hpa
sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa
sudo systemctl restart tftpd-hpa.service

Lưu ý: Một số người dùng đã báo cáo vấn đề (thời gian chờ kết nối) khi sử dụng tftpd-hpa với các phiên bản gần đây của Ubuntu. Trong trường hợp đó, bạn có thể thử với một máy chủ TFTP thay thế.

Bước 3. Kết nối với cổng UART của camera của bạn.

Để kết nối với cổng UART, bạn sẽ cần một bộ chuyển đổi cổng nối tiếp cho máy tính của bạn.

Mô-đun UART

Trước khi bạn kết nối bộ chuyển đổi này với camera của bạn, hãy đảm bảo rằng điện áp hoạt động của nó được đặt ở 3.3 volt! Đôi khi, bạn chỉ cần lật một jumper để đạt được điều đó. Nhưng trong một số trường hợp, bạn có thể cần hàn một dây, một điện trở không Ohm, hoặc tạo một kết nối giữa hai tiếp xúc với một khối hàn. Một số bộ chuyển đổi chỉ hỗ trợ 5 volt. Trong trường hợp đó, bạn sẽ cần thêm một bộ chuyển đổi mức logic kết nối giữa bộ chuyển đổi và cổng UART trên camera của bạn.

Một trong những tiếp xúc mà bạn cần kết nối bộ chuyển đổi của mình là GND (mặt đất). Nó dễ dàng khám phá bằng cách sử dụng đồng hồ đo điện tử ở chế độ liên tục. Đặt một trong các dẫn vào các tiếp xúc mặt đất đã biết. Thông thường, đây là các khu vực tiếp xúc đồng lớn mở xung quanh lỗ ốc vít gắn kết, vỏ cổng USB, tường kim loại của khe cắm thẻ SD. Sử dụng dẫn khác để chạm nhẹ vào các tiếp xúc kiểm soát cho đến khi bạn thấy hoặc nghe một thông báo từ đồng hồ đo điện tử của bạn rằng mạch đã đóng. Điều đó có nghĩa là, bạn đã tìm thấy mặt đất. Bây giờ, bạn cần tìm thêm hai: RXTX, cả hai đều được sử dụng để nhận và truyền dữ liệu, tương ứng. Bắt đầu với TX. Nó truyền chuỗi các ký tự và rất dễ nhận biết.

Hãy nhận biết rằng bạn đang tìm kiếm một tiếp xúc với tiềm năng 3.3v giữa nó và mặt đất. Kiểm tra các điểm kết nối có thể với đồng hồ đo điện tử và đánh dấu những hiển thị 3.3 volt. Bằng cách này, bạn sẽ không phải kiểm tra tất cả mọi thứ, và bạn tiết kiệm bản thân khỏi việc đánh vào ví dụ một kết nối 12 volt dành cho mảng LED hồng ngoại hoặc gì đó. Kết nối chân GND trên camera của bạn với pad GND của bộ chuyển đổi, kết nối cổng USB của bộ chuyển đổi với cổng USB trên máy tính của bạn, khởi động một ứng dụng giả lập terminal và kết nối với bộ chuyển đổi của bạn. Đặt cài đặt terminal của bạn thành 115200 bps baudrate, 8 bit, không chẵn lẻ, 1 stopbit, không kiểm soát luồng.

Dưới đây là một số dòng lệnh cho các chương trình terminal khác nhau với ghi nhận phiên. Chọn phương pháp bạn thích.

screen

Bắt đầu một phiên với

screen -L -Logfile ipcam-$(date +%s).log /dev/ttyUSB0 115200

Sử dụng Ctrl-a theo sau là \ để thoát khỏi phiên

minicom

Bắt đầu một phiên với

minicom -b 115200 -8 --capturefile=ipcam-$(date +%s).log --color=on -D /dev/ttyUSB0

Sử dụng Ctrl-a theo sau là x để kết thúc phiên.

picocom

Bắt đầu một phiên với

picocom -b 115200 --databits 8 --parity n --stopbits 1 --flow n --logfile=ipcam-$(date +%s).log /dev/ttyUSB0

Sử dụng Ctrl-a theo sau là x để kết thúc phiên.

PuTTY

Nếu bạn chọn một terminal GUI, cụ thể là PuTTY, đây là cách nó nên trông như thế nào:

Màn hình cài đặt PuTTY Màn hình kết nối PuTTY

Sau đó, kết nối chân RX trên bộ chuyển đổi với một liên hệ TX có thể có của cổng UART trên camera của bạn. Cung cấp điện cho camera bằng bộ chuyển đổi nguồn tiêu chuẩn của nó. Nếu bạn đoán may mắn thì bạn sẽ bắt đầu thấy nhật ký khởi động trong cửa sổ terminal của bạn. Trong một số trường hợp, nếu bạn thấy văn bản bị xáo trộn trên màn hình của bạn thay vì kernel đang khởi động, bạn có thể cần thay đổi tốc độ kết nối thành 57600 bps và thử lại.

Nếu màn hình của bạn vẫn trống, hãy thử một liên hệ UART khác, và sau đó là một liên hệ khác, cho đến khi bạn tìm thấy cái phù hợp.

Sau khi bạn tìm thấy pad TX, kết nối nó với chân RX trên bộ chuyển đổi của bạn. Đúng vậy, đó là một kết nối chéo. Bất cứ thứ gì truyền đi sẽ vào một bộ thu và ngược lại. Bây giờ, đặt một vật nặng - một đai ốc đường sắt, một hàn thiếc cổ điển, một ly vodka (đầy) - trên bất kỳ phím chữ nào của bàn phím máy tính của bạn và bắt đầu kết nối chân TX còn lại của bộ chuyển đổi của bạn với các pad khác nhau trên camera cho đến khi bạn thấy nó phản hồi lại terminal. Khi điều đó xảy ra, bạn đã hoàn thành thành công một kết nối UART với camera của bạn. Bây giờ bạn có thể uống vodka.

Lưu ý! Thông thường, có một liên hệ thứ tư trên một kết nối UART được đánh dấu là VCC. Nó được sử dụng để cung cấp điện cho camera trong quá trình lập trình ban đầu của nhà sản xuất. Chúng tôi khuyên bạn không nên cung cấp điện cho camera của bạn qua chân này, nhưng sử dụng cổng nguồn OEM cho mục đích này.

Bước 4. Truy cập vào bootloader.

Khởi động lại camera và cố gắng ngắt chuỗi khởi động của nó để truy cập vào console bootloader bằng cách nhấn một tổ hợp phím trên bàn phím máy tính của bạn, từ thời điểm bootloader bắt đầu và trước khi Linux kernel hoạt động. Tổ hợp phím khác nhau từ nhà cung cấp này sang nhà cung cấp khác nhưng, trong hầu hết các trường hợp, đó là Ctrl-C, ít phổ biến hơn -- Enter, Esc, * hoặc chỉ là bất kỳ phím nào. Đọc kỹ văn bản xuất hiện trên màn hình trong khi khởi động, bạn có thể thấy một gợi ý ở đó. Một số camera yêu cầu các tổ hợp phím khác biệt hơn không được tiết lộ trong nhật ký khởi động. Bạn có thể thử tìm chúng trên internet, hoặc hỏi trên kênh Telegram của chúng tôi. Có khả năng, chúng tôi đã từng đối phó với loại camera như vậy và biết tổ hợp phím.

Nếu bạn thành công và nhận được dấu nhắc lệnh thì chúc mừng, bạn đã truy cập được vào bootloader của camera.

Từ thời điểm này trở đi, chúng tôi khuyên bạn nên ghi lại mọi thứ bạn làm. Kích hoạt ghi nhật ký phiên trong terminal của bạn. Thậm chí tốt hơn, tạo một tệp văn bản trên máy tính của bạn và ghi lại tất cả các lệnh bạn chạy và cách hệ thống phản hồi với chúng.

Bước 5. Xác định kích thước bộ nhớ flash.

Hầu hết các camera IP ngày nay được trang bị bộ nhớ flash NOR hoặc NAND 8 hoặc 16 MB. Bạn có thể kiểm tra loại và kích thước của chip được cài đặt trên camera của bạn trong đầu ra nhật ký bootloader. Bạn sẽ thấy một cái gì đó như thế này:

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

Ví dụ khác:

U-Boot 2013.07 (Feb 27 2019 - 02:05:08)

DRAM:  64 MiB
MMC:   msc: 0
SF: Detected EN25QH64

Điều này cho thấy mô hình bộ nhớ flash (EN25QH64) mà bạn có thể tra cứu trực tuyến để tìm bảng dữ liệu. Ngoài ra, 64 trong số mô hình gợi ý cho một bộ nhớ 64 Megabit, tương đương với 8MB. Tương tự, 128 sẽ tương đương với 16MB.

Bạn cũng nên có thể xác định mô hình của bộ nhớ flash bằng cách nhìn lên tại bo mạch, nhưng đây thường là một nhiệm vụ khó khăn vì các chip rất nhỏ và có thể không đi kèm với các dấu hiệu rõ ràng.

Bước 6. Lưu firmware gốc.

Sau khi bạn truy cập vào console bootloader, chạy help để nhận danh sách các lệnh có sẵn. Kiểm tra xem bạn có tftp trong số đó không. Nếu có, thì việc lưu firmware gốc sẽ rất dễ dàng. Bạn chỉ cần thiết lập quyền truy cập vào máy chủ TFTP của bạn từ bước 2.

Lưu ý! Nếu bootloader của bạn không có tftp, bạn vẫn có thể tạo một bản sao của firmware gốc. Đọc thêm tại đây.

Kiểm tra môi trường hệ thống bằng lệnh printenv. Tìm kiếm các tham số ipaddr, netmask, gatewayipserverip. Ba tham số đầu tiên thiết lập địa chỉ IP, netmask của camera của bạn, và địa chỉ IP của cổng mạng để truy cập mạng cục bộ. Tham số thứ tư là địa chỉ IP của máy chủ TFTP của bạn. Gán các giá trị bằng lệnh setenv (sử dụng địa chỉ IP và netmask tương ứng với mạng cục bộ của bạn), sau đó lưu các giá trị mới vào môi trường với lệnh saveenv.

setenv ipaddr 192.168.1.253
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
setenv serverip 192.168.1.254
saveenv

Để sao lưu firmware gốc, bạn cần lưu nội dung của bộ nhớ flash của camera vào một tệp. Để làm điều đó, bạn phải đầu tiên tải nội dung vào RAM. Dưới đây là cách bạn thực hiện. Khởi tạo bộ nhớ Flash. Dọn dẹp một vùng RAM đủ lớn để chứa toàn bộ nội dung của chip bộ nhớ flash. Đọc nội dung của flash từ vùng đó, sau đó xuất nó ra một tệp trên máy chủ TFTP.

Xin lưu ý, loại flash, kích thước và địa chỉ bắt đầu khác nhau cho các loại camera khác nhau! Để biết các lệnh chính xác, vui lòng sử dụng hướng dẫn tự động tạo cho phần cứng của bạn, tham khảo bảng dữ liệu, hoặc tìm kiếm sự giúp đỡ trên kênh Telegram của chúng tôi.

Bước 7. Cài đặt firmware OpenIPC.

Lời mở đầu.

Không có hai mô hình camera nào giống nhau. Các mô hình camera khác nhau bao gồm các bộ phận khác nhau. Hai trong số quan trọng nhất, bộ xử lý trung tâm và cảm biến hình ảnh, ảnh hưởng trực tiếp đến chất lượng hình ảnh và phạm vi chức năng đặc trưng cho một camera cụ thể. Khác với CPU máy tính để bàn, bộ xử lý của camera xử lý nhiều chức năng đến mức nó có một tên cụ thể -- Hệ thống-trên-Chip hoặc SoC, viết tắt.

Nhưng ngay cả những thành phần ít quan trọng hơn cũng có thể đặt giới hạn cho camera và khả năng firmware của nó. Ví dụ, các camera khác nhau có thể có các chip bộ nhớ flash khác nhau được cài đặt. Một số camera có thể có 8MB bộ nhớ flash, trong khi những cái khác có thể có 16MB hoặc nhiều hơn. Nhiều bộ nhớ flash hơn có thể chứa nhiều mã phần mềm hơn và cho phép camera chạy các dịch vụ bổ sung không có sẵn trên các camera với ít bộ nhớ flash hơn. Vì vậy, chúng tôi quyết định xây dựng hai phiên bản firmware của chúng tôi: phiên bản cơ bản (Lite) cho các camera có 8 MB bộ nhớ flash và phiên bản nâng cao (Ultimate) với các tính năng bổ sung cho các camera có 16 MB bộ nhớ flash.

Như đã nói trước, quy trình cài đặt firmware khác nhau cho các camera khác nhau. Có các địa chỉ bộ nhớ khác nhau và các tham số môi trường khác nhau, vì vậy trước khi tiếp tục, xác định loại SoC nào trong camera của bạn, cảm biến nào, chip bộ nhớ flash nào và bao nhiêu bộ nhớ nó có.

Dưới đây, chúng tôi mô tả quy trình cài đặt firmware OpenIPC Lite trên một camera có 8 MB bộ nhớ flash, như một ví dụ. Ngay cả khi camera của bạn có bộ nhớ flash lớn hơn, đừng bỏ qua văn bản này. Đọc nó cẩn thận để hiểu nguyên tắc và trình tự các hoạt động. Chúng tôi sẽ cung cấp các lệnh cụ thể cho các camera khác nhau trong phần thứ hai của phần này.

Chuẩn bị firmware và máy chủ TFTP.

Hãy truy cập https://openipc.org/supported-hardware, tìm SoC của bạn trong bảng phần cứng được hỗ trợ. Đảm bảo rằng có một tệp nhị phân có thể tải xuống cho SoC đó. Hy vọng rằng có một tệp firmware đã được biên dịch sẵn cho bộ xử lý của bạn -- hãy tải nó về máy tính của bạn.

Nếu bạn đã thực hiện bước 2, bạn đã có máy chủ TFTP của riêng bạn phục vụ các tệp từ thư mục /srv/tftp. Giải nén các tệp từ gói bạn vừa tải xuống vào thư mục đó.

sudo tar -C /srv/tftp/ -xvf openipc.*.tgz

Chuẩn bị camera để flash.

Vậy, chúng ta có một con chuột bạch, một camera với SoC hi3518ev100, được trang bị cảm biến OV9712, 64 MB RAM và bộ nhớ flash NOR 8MB.

Kết nối với camera qua cổng UART và truy cập vào console bootloader. Đặt các tham số thành phần cho các biến môi trường phù hợp. Đặt biến môi trường để tải hệ điều hành Linux và hệ thống tệp gốc của firmware mới. Đặt các biến môi trường để camera truy cập mạng cục bộ, nơi ethaddr là địa chỉ MAC gốc của camera, ipaddr là địa chỉ IP của camera trên mạng, gatewayip là địa chỉ IP của router để truy cập mạng, netmask là mặt nạ mạng con, và serverip là địa chỉ IP của máy chủ TFTP từ bước 3. Lưu các giá trị đã cập nhật vào bộ nhớ flash.

Để biết các lệnh chính xác, vui lòng sử dụng hướng dẫn tự động tạo cho phần cứng của bạn, tham khảo bảng dữ liệu, hoặc tìm kiếm sự giúp đỡ trên kênh Telegram của chúng tôi.

Cài đặt.

Để biết các lệnh chính xác, vui lòng sử dụng hướng dẫn tự động tạo cho phần cứng của bạn, tham khảo bảng dữ liệu, hoặc tìm kiếm sự giúp đỡ trên kênh Telegram của chúng tôi.

NB! Hãy chú ý đến các thông báo trên màn hình terminal! Nếu bất kỳ lệnh nào gây ra lỗi, tìm hiểu xem đã xảy ra lỗi gì. Có thể bạn đã gõ sai? Trong mọi trường hợp, đừng tiếp tục thủ tục cho đến khi tất cả các lệnh trước đó thành công. Nếu không, bạn có thể kết thúc với một camera bị hỏng!

Bước 8. Khởi động lần đầu.

Nếu tất cả các bước trước đây được thực hiện đúng, camera của bạn nên khởi động với firmware mới. Chào mừng đến với OpenIPC!

Sau lần khởi động đầu tiên với firmware mới, bạn cần dọn dẹp phân vùng overlay. Chạy điều này trong cửa sổ terminal của bạn:

firstboot