mirror of https://github.com/OpenIPC/wiki.git
commit
e26e65ebed
en
45
README.md
45
README.md
|
@ -1 +1,44 @@
|
|||
# The OpenIPC Wiki
|
||||
OpenIPC Wiki
|
||||
============
|
||||
|
||||
[English](en/index.md) | [Русский](ru/index.md)
|
||||
|
||||
|
||||
> "Improving the world, one patch at a time."
|
||||
|
||||
|
||||
### This is an open project, so you can help, too.
|
||||
|
||||
We try to collect, organize and share as much information regarding different
|
||||
aspects of the project as we can. But sometimes we overlook things that seem
|
||||
obvious to us, developers, but are not so obvious to end-users, people who are
|
||||
less familiar with nuts and bolts behind the scene. That is why we set up this
|
||||
wiki and let anyone having a GitHub account to make additions and improvements
|
||||
to the knowledgebase.
|
||||
|
||||
### How to contribute.
|
||||
|
||||
Sign in into your GitHub account, or [get yourself one][gh-signup] if you don't
|
||||
have it yet. It's free.
|
||||
|
||||
Go to [the wiki repository](https://github.com/openIPC/wiki/) and fork it.
|
||||
|
||||

|
||||
|
||||
Make changes (correct a typo, add another record into a table, or write a new
|
||||
article) and commit them to your own fork of the repository.
|
||||
|
||||
From your repository, create a pull request, so we could review and incorporate
|
||||
your changes into our version of the wiki.
|
||||
|
||||

|
||||
|
||||
### Small corrections, typos.
|
||||
|
||||
It is even easier to deal with small corrections while using GitHub. Spotted a
|
||||
typo? Have an idea of a better wording? Noticed a broken link? Just hit this
|
||||
pencil-looking button and make corrections.
|
||||
|
||||

|
||||
|
||||
[gh-signup]: https://github.com/signup
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
How to install HTTPS certificates on your camera
|
||||
------------------------------------------------
|
||||
|
||||
Make sure your camera is accessible from the Internet on both port 80 (HTTP)
|
||||
and port 443 (HTTPS). You might need to set up port forwarding on your router
|
||||
for that.
|
||||
|
||||
Create an ACME account:
|
||||
|
||||
```console
|
||||
$ uacme -y -v new
|
||||
```
|
||||
|
||||
Issue a certificate for your domain:
|
||||
|
||||
```console
|
||||
$ uacme -y -v -h /usr/share/uacme/uacme.sh -t EC issue www.your.domain.com
|
||||
```
|
||||
|
||||
If everything goes well, uacme will ask you to set up a challenge, e.g.:
|
||||
|
||||
```
|
||||
uacme: challenge=http-01 ident=www.your.domain.com token=kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4
|
||||
key_auth=kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4.2evcXalKLhAybRuxxE-HkSUihdzQ7ZDAKA9EZYrTXwU
|
||||
```
|
||||
|
||||
Restart majestic and test access to https://www.your.domain.com/
|
|
@ -1,4 +1,8 @@
|
|||
## FFMPEG, RTSP and SRT examples
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
FFMPEG, RTSP and SRT examples
|
||||
-----------------------------
|
||||
|
||||
```
|
||||
# Copy from file to file
|
||||
|
@ -35,4 +39,4 @@
|
|||
|
||||
# Receiver, untested
|
||||
ffplay 'srt://172.17.32.18:12345'
|
||||
```
|
||||
```
|
|
@ -1,4 +1,8 @@
|
|||
## Boot device with NFS
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Boot device with NFS
|
||||
--------------------
|
||||
|
||||
Example for HI3516EV200 device
|
||||
|
||||
|
@ -8,4 +12,4 @@ bootargsnfs=mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/nfs root
|
|||
nfsboot=tftp 0x42000000 uImage;setenv setargs setenv bootargs ${bootargsnfs};run setargs;bootm 0x42000000
|
||||
|
||||
run nfsboot
|
||||
```
|
||||
```
|
|
@ -0,0 +1,111 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Interesting tricks
|
||||
------------------
|
||||
|
||||
### Sharing output of a command via web
|
||||
```
|
||||
<command> | nc seashells.io 1337
|
||||
```
|
||||
|
||||
### Adapting syslogd to work with time zones other than GMT
|
||||
|
||||
Some `syslog()` implementations like musl's always send timestamps in UTC.
|
||||
The following code adds a new option to `syslogd`, `-Z`, to assume incoming
|
||||
timestamps are always UTC, and to adjust them to the local timezone
|
||||
(of the syslogd) before logging.
|
||||
|
||||
```diff
|
||||
Signed-off-by: Shiz <hi at shiz.me>
|
||||
---
|
||||
sysklogd/syslogd.c | 23 +++++++++++++++++++----
|
||||
1 file changed, 19 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c
|
||||
index d64ff27..159336e 100644
|
||||
--- a/sysklogd/syslogd.c
|
||||
+++ b/sysklogd/syslogd.c
|
||||
@@ -122,6 +122,7 @@
|
||||
//usage: "(this version of syslogd ignores /etc/syslog.conf)\n"
|
||||
//usage: )
|
||||
//usage: "\n -n Run in foreground"
|
||||
+//usage: "\n -Z Adjust incoming UTC times to local time"
|
||||
//usage: IF_FEATURE_REMOTE_LOG(
|
||||
//usage: "\n -R HOST[:PORT] Log to HOST:PORT (default PORT:514)"
|
||||
//usage: "\n -L Log locally and via network (default is network only if -R)"
|
||||
@@ -233,6 +234,8 @@ typedef struct logRule_t {
|
||||
/*int markInterval;*/ \
|
||||
/* level of messages to be logged */ \
|
||||
int logLevel; \
|
||||
+ /* whether to adjust message timezone */\
|
||||
+ int adjustTimezone; \
|
||||
IF_FEATURE_ROTATE_LOGFILE( \
|
||||
/* max size of file before rotation */ \
|
||||
unsigned logFileSize; \
|
||||
@@ -316,6 +319,7 @@ enum {
|
||||
OPTBIT_outfile, // -O
|
||||
OPTBIT_loglevel, // -l
|
||||
OPTBIT_small, // -S
|
||||
+ OPTBIT_adjusttz, // -Z
|
||||
IF_FEATURE_ROTATE_LOGFILE(OPTBIT_filesize ,) // -s
|
||||
IF_FEATURE_ROTATE_LOGFILE(OPTBIT_rotatecnt ,) // -b
|
||||
IF_FEATURE_REMOTE_LOG( OPTBIT_remotelog ,) // -R
|
||||
@@ -330,6 +334,7 @@ enum {
|
||||
OPT_outfile = 1 << OPTBIT_outfile ,
|
||||
OPT_loglevel = 1 << OPTBIT_loglevel,
|
||||
OPT_small = 1 << OPTBIT_small ,
|
||||
+ OPT_adjusttz = 1 << OPTBIT_adjusttz,
|
||||
OPT_filesize = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_filesize )) + 0,
|
||||
OPT_rotatecnt = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_rotatecnt )) + 0,
|
||||
OPT_remotelog = IF_FEATURE_REMOTE_LOG( (1 << OPTBIT_remotelog )) + 0,
|
||||
@@ -339,7 +344,7 @@ enum {
|
||||
OPT_cfg = IF_FEATURE_SYSLOGD_CFG( (1 << OPTBIT_cfg )) + 0,
|
||||
OPT_kmsg = IF_FEATURE_KMSG_SYSLOG( (1 << OPTBIT_kmsg )) + 0,
|
||||
};
|
||||
-#define OPTION_STR "m:nO:l:S" \
|
||||
+#define OPTION_STR "m:nO:l:SZ" \
|
||||
IF_FEATURE_ROTATE_LOGFILE("s:" ) \
|
||||
IF_FEATURE_ROTATE_LOGFILE("b:" ) \
|
||||
IF_FEATURE_REMOTE_LOG( "R:*") \
|
||||
@@ -815,17 +820,23 @@ static void timestamp_and_log(int pri, char *msg, int len)
|
||||
{
|
||||
char *timestamp;
|
||||
time_t now;
|
||||
+ struct tm nowtm = { .tm_isdst = 0 };
|
||||
|
||||
/* Jan 18 00:11:22 msg... */
|
||||
/* 01234567890123456 */
|
||||
if (len < 16 || msg[3] != ' ' || msg[6] != ' '
|
||||
|| msg[9] != ':' || msg[12] != ':' || msg[15] != ' '
|
||||
) {
|
||||
- time(&now);
|
||||
+ now = time(NULL);
|
||||
timestamp = ctime(&now) + 4; /* skip day of week */
|
||||
} else {
|
||||
- now = 0;
|
||||
- timestamp = msg;
|
||||
+ if (G.adjustTimezone && strptime(msg, "%b %e %T", &nowtm)) {
|
||||
+ now = mktime(&nowtm) - timezone;
|
||||
+ timestamp = ctime(&now) + 4; /* skip day of week */
|
||||
+ } else {
|
||||
+ now = 0;
|
||||
+ timestamp = msg;
|
||||
+ }
|
||||
msg += 16;
|
||||
}
|
||||
timestamp[15] = '\0';
|
||||
@@ -1130,6 +1141,10 @@ int syslogd_main(int argc UNUSED_PARAM, char **argv)
|
||||
if (opts & OPT_loglevel) // -l
|
||||
G.logLevel = xatou_range(opt_l, 1, 8);
|
||||
//if (opts & OPT_small) // -S
|
||||
+ if (opts & OPT_adjusttz) { // -Z
|
||||
+ G.adjustTimezone = 1;
|
||||
+ tzset();
|
||||
+ }
|
||||
#if ENABLE_FEATURE_ROTATE_LOGFILE
|
||||
if (opts & OPT_filesize) // -s
|
||||
G.logFileSize = xatou_range(opt_s, 0, INT_MAX/1024) * 1024;
|
||||
--
|
||||
```
|
||||
_from [sysklogd: add -Z option to adjust message timezones](http://lists.busybox.net/pipermail/busybox/2017-May/085437.html)_
|
|
@ -0,0 +1,13 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
OpenIPC Developers
|
||||
------------------
|
||||
|
||||
[](https://github.com/widgetii)
|
||||
|
||||
[](https://github.com/dimerr)
|
||||
|
||||
[](https://github.com/zigfisher)
|
||||
|
||||
[](https://github.com/themactep)
|
|
@ -1,8 +1,11 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
## Run ipctool
|
||||
Run ipctool
|
||||
-----------
|
||||
|
||||
```
|
||||
root@ipcam:/# ipctool
|
||||
root@ipcam:/# ipctool
|
||||
---
|
||||
board:
|
||||
vendor: OpenIPC
|
||||
|
@ -41,7 +44,7 @@ ram:
|
|||
media: 32M
|
||||
firmware:
|
||||
kernel: "3.10.103+ (SMP Fri Apr 23 21:29:40 UTC 2021)"
|
||||
toolchain: gcc version 7.5.0 (Buildroot 2020.02-gb5b7c71)
|
||||
toolchain: gcc version 7.5.0 (Buildroot 2020.02-gb5b7c71)
|
||||
god-app: ipctool
|
||||
sensors:
|
||||
- vendor: SmartSens
|
||||
|
@ -50,5 +53,5 @@ sensors:
|
|||
bus: 0
|
||||
type: i2c
|
||||
addr: 0x30
|
||||
root@ipcam:/#
|
||||
```
|
||||
root@ipcam:/#
|
||||
```
|
|
@ -1,4 +1,8 @@
|
|||
## GPIO Settings
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
GPIO Settings
|
||||
-------------
|
||||
|
||||
### Anjoy boards
|
||||
|
||||
|
@ -8,24 +12,22 @@
|
|||
| SSC337 | 78 | 79 | 61 | MC-F40, YM-J10D |
|
||||
| SSC337DE | 78 | 79 | 61 | MC500L8 |
|
||||
|
||||
-----
|
||||
|
||||
### CamHi/Xin boards
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | LIGHT | USB_ENA |
|
||||
|-------------|--------|--------|-------|---------|
|
||||
| Gk7205v200 | | | | 9 (invert value) |
|
||||
| Gk7205v300 | 10 | 11 | | 7 (invert value) |
|
||||
| Gk7205v200 | | | | 9i |
|
||||
| Gk7205v300 | 10 | 11 | | 7i |
|
||||
| | | | | |
|
||||
| Hi3516Cv100 |
|
||||
| Hi3516Cv200 |
|
||||
| Hi3516Cv300 |
|
||||
| Hi3516Ev200 | | | | 9 (invert value) |
|
||||
| Hi3516Ev300 | 10 | 11 | | 7 (invert value) |
|
||||
| Hi3518Ev200 | 1 | 2 | 48 |
|
||||
| Hi3518Ev300 | | | |
|
||||
| Hi3516Cv100 | | | | |
|
||||
| Hi3516Cv200 | | | | |
|
||||
| Hi3516Cv300 | | | | |
|
||||
| Hi3516Ev200 | | | | 9i |
|
||||
| Hi3516Ev300 | 10 | 11 | | 7i |
|
||||
| Hi3518Ev200 | 1 | 2 | 48 | |
|
||||
| Hi3518Ev300 | | | | |
|
||||
|
||||
-----
|
||||
_i - inverted value_
|
||||
|
||||
### Herospeed/Longse/Cantonk boards
|
||||
|
||||
|
@ -40,16 +42,12 @@
|
|||
| Hi3516Ev200 |
|
||||
| Hi3516Av300 | 5 | 6 |
|
||||
|
||||
-----
|
||||
|
||||
### Jabsco boards
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | IRSTATUS |
|
||||
|-------------|--------|--------|----------|
|
||||
| Hi3516Ev200 | 52 | 53 | 9 |
|
||||
|
||||
-----
|
||||
|
||||
### JVT boards
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | LIGHT |
|
||||
|
@ -60,51 +58,41 @@
|
|||
| Hi3516Ev200 |
|
||||
| Hi3518Ev200 | 64 | 65 | 47 |
|
||||
|
||||
-----
|
||||
|
||||
### JUAN boards (Sannce)
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | IRSTATUS | TESTED BOARDS | DEVICE ID |
|
||||
|-------------|--------|--------|---------------|---------------|-----------|
|
||||
| Hi3518Ev200 | 65 | 64 | 62 (inverted) | 18EV200_V205P | N18EV2W |
|
||||
|
||||
------
|
||||
|
||||
### Tiandy boards
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | IRSTATUS | IRCTL | RESET |
|
||||
|-------------|--------|--------|----------|-------|-------|
|
||||
| SSC335 | 78 | 79 | --- | 37 | |
|
||||
|
||||
-----
|
||||
|
||||
### Uniview boards
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | RESET | DEVICE ID |
|
||||
|-------------|--------|--------|-------|--------------------------|
|
||||
| Hi3516Ev300 | 63 | 67 | 64 | Rostelecom IPC8232SWC-WE |
|
||||
|
||||
-----
|
||||
|
||||
### XM boards
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | IRSTATUS | IRCTL | ALM_IN | ALM_OUT | ETH_ACT | ETH_STA | RESET | USB_ENA |
|
||||
|-------------|--------|--------|----------|-------|--------|---------|---------|---------|-------|---------|
|
||||
| GK7205V200 | 8 | 9 | 15 | 16 | 4 и 53 | 55 | 14 | 12 | 0 |
|
||||
| GK7205V300 | 10 | 11 | 66 | 52 | 4 | | 30 | 31 | | |
|
||||
| | | | | | | | | | | |
|
||||
| Hi3516Cv100 |
|
||||
| Hi3516Dv100* | 14 | 15
|
||||
| Hi3516Cv200 |
|
||||
| Hi3516Cv300 | 53 | 54 | 64 | 66 | 55 | 1 | | | 2 | 63 |
|
||||
| Hi3516Ev200 | 8 | 9 | 15 | 16 | 4 и 53 | 55 | 14 | 12 | 0 |
|
||||
| Hi3516Ev300 | 10 | 11 | 66 | 52 | 4 и 67 | 65 | 30 | 31 | 0 |
|
||||
| Hi3518Ev200 | 33 | 34 | | | 61 | 35 |
|
||||
| Processor | IRCUT1 | IRCUT2 | IRSTATUS | IRCTL | ALM_IN | ALM_OUT | ETH_ACT | ETH_STA | RESET | USB_ENA |
|
||||
|--------------|--------|--------|----------|-------|--------|---------|---------|---------|-------|---------|
|
||||
| GK7205V200 | 8 | 9 | 15 | 16 | 4, 53 | 55 | 14 | 12 | 0 | |
|
||||
| GK7205V300 | 10 | 11 | 66 | 52 | 4 | | 30 | 31 | | |
|
||||
| | | | | | | | | | | |
|
||||
| Hi3516Cv100 | | | | | | | | | | |
|
||||
| Hi3516Dv100* | 14 | 15 | | | | | | | | |
|
||||
| Hi3516Cv200 | | | | | | | | | | |
|
||||
| Hi3516Cv300 | 53 | 54 | 64 | 66 | 55 | 1 | | | 2 | 63 |
|
||||
| Hi3516Ev200 | 8 | 9 | 15 | 16 | 4, 53 | 55 | 14 | 12 | 0 | |
|
||||
| Hi3516Ev300 | 10 | 11 | 66 | 52 | 4, 67 | 65 | 30 | 31 | 0 | |
|
||||
| Hi3518Ev200 | 33 | 34 | | | 61 | 35 | | | | |
|
||||
|
||||
* HI3516D_N81820, 00014914 firmware
|
||||
|
||||
-----
|
||||
|
||||
### Zenotech/Videopark
|
||||
|
||||
| Processor | IRCUT1 | IRCUT2 | IRLED | DEVICE ID |
|
|
@ -1,14 +1,16 @@
|
|||

|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
## Supported devices
|
||||
Supported devices
|
||||
-----------------
|
||||
|
||||
Unfortunately, we cannot provide you a long list of devices that are undoubtedly
|
||||
compatible with our firmware. Camera manufacturers tend to change hardware
|
||||
design and swap components even within the same model line, without any notice.
|
||||
|
||||
Below, we listed some of the cameras we had in our possession, but again, there
|
||||
is no guarantee that if you buy one of those cameras today you won't end up with
|
||||
unsupported hardware on your hands.
|
||||
is no guarantee that if you'll buy one of those cameras today you won't end up
|
||||
with an unsupported hardware on your hands.
|
||||
|
||||
Somewhat working method to determine if your camera is supported by the recent
|
||||
version of our firmware is to open[^1] the camera case and take a look at the
|
||||
|
@ -26,23 +28,24 @@ may not be right for you.
|
|||
|
||||
_If you have another supported device to add, please do it [here][2]._
|
||||
|
||||
| Brand | Model | Processor | Sensor | Flash Memory | LAN | WLAN | USB | Card |
|
||||
|----------|--------------------|-------------|--------|--------------|-----|-----------|------|------|
|
||||
| | | | | | | | | |
|
||||
| Anjoy | MS-J10 | SSC335 | IMX307 | | Yes | No | Yes | No |
|
||||
| Anjoy | YM-J10D | SSC337 | IMX307 | | Yes | No | Yes | No |
|
||||
| | | | | | | | | |
|
||||
| Chacon | [IPCAM-RI01](https://github.com/OpenIPC/wiki/blob/master/en/device-chacon-ipcam-ri01.md) | HI3518EV300 | JXF23 | XM25QH128A | No | RTL8188FTV | WiFi | Yes |
|
||||
| | | | | | | | | |
|
||||
| LTV | CNE-724 48 | HI3516EV200 | | | Yes | No | No | Yes |
|
||||
| | | | | | | | | |
|
||||
| Rotek | Switcam HS303 (v1) | HI3518EV200 | | | No | RTL8188FU | WiFi | Yes |
|
||||
| Rotek | Switcam HS303 (v2) | HI3518EV200 | OV9732 | GD25Q128CSIG | No | RTL8188EU | WiFi | Yes |
|
||||
| Rotek | Switcam HS303 (v3) | HI3518EV200 | | | No | RTL8188EU | WiFi | Yes |
|
||||
| | | | | | | | | |
|
||||
| Xiaomi | MJSXJ02HL | HI3518EV300 | | | No | | | Yes |
|
||||
| | | | | | | | | |
|
||||
| Zenotech | HI3516D_MB_V13_RA | HI3516DV100 | OV9689 | GD25Q128CSIG | Yes | No | | No |
|
||||
| Brand | Model | Processor | Sensor | Flash Memory | LAN | WLAN | USB | Card |
|
||||
|----------|--------------------|-------------|--------|--------------|-----|------------|------|------|
|
||||
| | | | | | | | | |
|
||||
| Anjoy | MS-J10 | SSC335 | IMX307 | | Yes | No | Yes | No |
|
||||
| Anjoy | YM-J10D | SSC337 | IMX307 | | Yes | No | Yes | No |
|
||||
| | | | | | | | | |
|
||||
| Chacon | [IPCAM-RI01][3] | HI3518EV300 | JXF23 | XM25QH128A | No | RTL8188FTV | WiFi | Yes |
|
||||
| | | | | | | | | |
|
||||
| LTV | CNE-724 48 | HI3516EV200 | | | Yes | No | No | Yes |
|
||||
| | | | | | | | | |
|
||||
| Rotek | Switcam HS303 (v1) | HI3518EV200 | | | No | RTL8188FU | WiFi | Yes |
|
||||
| Rotek | Switcam HS303 (v2) | HI3518EV200 | OV9732 | GD25Q128CSIG | No | RTL8188EU | WiFi | Yes |
|
||||
| Rotek | Switcam HS303 (v3) | HI3518EV200 | | | No | RTL8188EU | WiFi | Yes |
|
||||
| | | | | | | | | |
|
||||
| Xiaomi | MJSXJ02HL | HI3518EV300 | | | No | | | Yes |
|
||||
| | | | | | | | | |
|
||||
| Zenotech | HI3516D_MB_V13_RA | HI3516DV100 | OV9689 | GD25Q128CSIG | Yes | No | | No |
|
||||
|
||||
[1]: https://github.com/OpenIPC/firmware#current-development-status-
|
||||
[2]: https://github.com/OpenIPC/wiki/blob/master/en/guide-supported-devices.md
|
||||
[3]: https://github.com/OpenIPC/wiki/blob/master/en/device-chacon-ipcam-ri01.md
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
Help: U-boot
|
||||
------------
|
||||
|
||||
### Environment
|
||||
|
||||
If you get `Too many args` error while trying to set an environment variable,
|
||||
try to do that from within Linux using `fw_setenv` instead of `setenv` in U-boot.
|
||||
|
||||
__U-boot console:__
|
||||
```
|
||||
hisilicon # setenv uk 'mw.b 0x82000000 ff 1000000; tftp 0x82000000 uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write 0x82000000 0x50000 ${filesize}'
|
||||
** Too many args (max. 16) **
|
||||
```
|
||||
|
||||
__OpenIPC Linux:__
|
||||
```
|
||||
root@openipc-hi3518ev100:~# fw_setenv uk 'mw.b 0x82000000 ff 1000000; tftp 0x82000000 uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write 0x82000000 0x50000 ${filesize}'
|
||||
root@openipc-hi3518ev100:~#
|
||||
```
|
|
@ -1,4 +1,8 @@
|
|||
## Overview
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Each SoC manufacturer has its own software to adjust picture quality:
|
||||
|
||||
|
@ -44,8 +48,15 @@ pqtools:Waiting for connection from client!
|
|||
|
||||
#### Run client software on Windows
|
||||
|
||||
* [Download](https://ssd.mathworks.com/supportfiles/MCR_Runtime/R2012a/MCR_R2012a_win32_installer.exe) and install MATLAB Compiler Runtime.
|
||||
Download and install [MATLAB Compiler Runtime][mcr].
|
||||
|
||||
* [Download PQTools](https://drive.google.com/file/d/1c4XZRbJKXjMBwfMJaLl5jUPcVqMbO936/view?usp=sharing) and extract a zip archive somewhere on your desktop. Launch `HiPQTools.exe`, select `Hi3516EV200_V1.0.1.2`, type IP address of your camera and click `OK`
|
||||
Download [PQTools][pqt] and extract a zip archive somewhere on your PC.
|
||||
|
||||
Use [the manual](https://drive.google.com/file/d/1mY1lXMZVNz2Ia5CPvTF-K-907eIioSYU/view?usp=sharing) as a reference.
|
||||
Launch `HiPQTools.exe`, select `Hi3516EV200_V1.0.1.2`, type IP address of your
|
||||
camera and click `OK`.
|
||||
|
||||
Use [this manual][man] as a reference.
|
||||
|
||||
[mcr]: https://ssd.mathworks.com/supportfiles/MCR_Runtime/R2012a/MCR_R2012a_win32_installer.exe
|
||||
[pqt]: https://drive.google.com/file/d/1c4XZRbJKXjMBwfMJaLl5jUPcVqMbO936/view?usp=sharing
|
||||
[man]: https://drive.google.com/file/d/1mY1lXMZVNz2Ia5CPvTF-K-907eIioSYU/view?usp=sharing
|
96
en/index.md
96
en/index.md
|
@ -1,60 +1,70 @@
|
|||

|
||||
|
||||
# English version
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
## Introduction
|
||||
* [About project](transfer-menu-index)
|
||||
* [Supported devices](https://openipc.org/wiki/en/guide-supported-devices)
|
||||
* [Show changelog](transfer-show-changelog)
|
||||
- [About the project](menu-index.md)
|
||||
- [Supported devices](https://openipc.org/wiki/en/guide-supported-devices)
|
||||
- [Changelog](show-changelog.md)
|
||||
|
||||
## Available subprojects
|
||||
* [coupler](https://openipc.org/coupler)
|
||||
* [firmware](https://openipc.org/firmware)
|
||||
* [ipctool](https://openipc.org/ipctool)
|
||||
* [telemetry](https://openipc.org/telemetry)
|
||||
* [Firmware Partitions Calculation by themactep](https://themactep.com/tools/firmware-partitions-calculation)
|
||||
## Subprojects
|
||||
- [coupler](https://openipc.org/coupler)
|
||||
- [firmware](https://openipc.org/firmware)
|
||||
- [ipctool](https://openipc.org/ipctool)
|
||||
- [telemetry](https://openipc.org/telemetry)
|
||||
- [Firmware Partitions Calculation](https://themactep.com/tools/firmware-partitions-calculation)
|
||||
|
||||
## Installation
|
||||
* [Goke based boards](transfer-install-goke)
|
||||
* [HiSilicon based boards](transfer-install-hisi)
|
||||
* [Novatek based boards](transfer-install-novatek)
|
||||
* [SigmaStar based boards](transfer-install-ssc335)
|
||||
* [XM510 based boards](transfer-install-xm510)
|
||||
* [XM530 based boards](transfer-install-xm530)
|
||||
* [Veryld full manual](transfer-old-manual)
|
||||
- [Installation on Goke based boards](install-goke.md)
|
||||
- [Installation on HiSilicon based boards](install-hisi.md)
|
||||
- [Installation on Novatek based boards](install-novatek.md)
|
||||
- [Installation on SigmaStar based boards](install-ssc335.md)
|
||||
- [Installation on XM510 based boards](install-xm510.md)
|
||||
- [Installation on XM530 based boards](install-xm530.md)
|
||||
- [Very old full manual](old-manual.md)
|
||||
|
||||
## Usage
|
||||
* [System features](transfer-system-features)
|
||||
* [Majestic streamer](transfer-majestic-streamer)
|
||||
* [Microbe WEB interface](transfer-microbe-web)
|
||||
* [Upgrade firmware](transfer-sysupgrade)
|
||||
* [Image quality tuning](transfer-image-quality-tuning)
|
||||
* [Memory tuning](transfer-memory-tuning)
|
||||
* [Using ipctool](transfer-example-ipctool)
|
||||
* [GPIO settings](transfer-gpio-settings)
|
||||
* [ACMEv2](transfer-acmev2)
|
||||
* [YouTube streaming](transfer-youtube-streaming)
|
||||
* [WiFi XM530](transfer-wifi-xm530)
|
||||
- [System features](system-features.md)
|
||||
- [Majestic streamer](majestic-streamer.md)
|
||||
- [Microbe web interface](microbe-web.md)
|
||||
- [Upgrade firmware](sysupgrade.md)
|
||||
- [Image quality tuning](image-quality-tuning.md)
|
||||
- [Memory tuning](memory-tuning.md)
|
||||
- [Using ipctool](transfer-example-ipctool.md)
|
||||
- [GPIO settings](gpio-settings.md)
|
||||
- [ACMEv2](acme-v2.md)
|
||||
- [YouTube streaming](youtube-streaming.md)
|
||||
- [WiFi XM530](wifi-xm530.md)
|
||||
|
||||
## Firmware
|
||||
* [Releases in GitHub](https://github.com/OpenIPC/firmware/releases/tag/latest)
|
||||
* [Releases in Telegram](https://t.me/s/openipc_dev)
|
||||
* [Source code](transfer-source-code)
|
||||
- [Releases in GitHub](https://github.com/OpenIPC/firmware/releases/tag/latest)
|
||||
- [Releases in Telegram](https://t.me/s/openipc_dev)
|
||||
- [Source code](source-code.md)
|
||||
|
||||
## Development
|
||||
* [Interesting tricks](transfer-dev-tricks)
|
||||
* [Boot device with NFS](transfer-dev-nfs-boot)
|
||||
* [FFMPEG usage](transfer-dev-ffmpeg-usage)
|
||||
* [Kernel configuration for adding new platforms](transfer-integration-kernel)
|
||||
- [Interesting tricks](dev-tricks.md)
|
||||
- [Boot device with NFS](dev-nfs-boot.md)
|
||||
- [FFMPEG usage](dev-ffmpeg-usage.md)
|
||||
- [Kernel configuration for adding new platforms](integration-kernel.md)
|
||||
|
||||
## Help, Tips, and Tricks
|
||||
- [U-boot](help-uboot.md)
|
||||
|
||||
## Contacts
|
||||
* [Bug reports](https://github.com/OpenIPC/firmware/issues)
|
||||
- [Bug reports](https://github.com/OpenIPC/firmware/issues)
|
||||
|
||||
## Our resources
|
||||
- [OpenIPC](https://openipc.org/)
|
||||
- [OpenCollective](https://opencollective.com/openipc)
|
||||
- [Twitter](https://twitter.com/OpenIPC)
|
||||
- [Telegram](https://t.me/openipc)
|
||||
|
||||
## Roadmap
|
||||
* [ToDo](transfer-todo-all)
|
||||
* [Developers](transfer-developers)
|
||||
* [Notes from old sources](transfer-notes-for-resorting)
|
||||
- [ToDo](todo-all.md)
|
||||
- [Developers](developers.md)
|
||||
- [Notes from old sources](notes-for-resorting.md)
|
||||
|
||||
## Resources for recycling and integration
|
||||
* [https://github.com/OpenIPC/camerasrnd](https://github.com/OpenIPC/camerasrnd)
|
||||
* [https://openwrt.org/docs/techref/hardware/soc/soc.hisilicon.hi35xx](https://openwrt.org/docs/techref/hardware/soc/soc.hisilicon.hi35xx)
|
||||
- <https://github.com/OpenIPC/camerasrnd>
|
||||
- <https://openwrt.org/docs/techref/hardware/soc/soc.hisilicon.hi35xx>
|
||||
|
||||
[logo]: ../images/logo_openipc.png
|
||||
|
|
|
@ -1,30 +1,30 @@
|
|||
## For XM boards ONLY with SoC GK7202V300, GK7205V200, GK7205V300 !!!
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
For XM boards with SoC GK7202V300, GK7205V200, GK7205V300 ONLY!!!
|
||||
-----------------------------------------------------------------
|
||||
|
||||
### Supported sensors
|
||||
|
||||
Please read this [info](https://github.com/OpenIPC/openipc-2.1/wiki/supported_devices).
|
||||
|
||||
-----
|
||||
Please look up your sensor in [the list of supported devices][1].
|
||||
|
||||
### Initial device firmware updates
|
||||
|
||||
```
|
||||
#
|
||||
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000'
|
||||
setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}'
|
||||
saveenv
|
||||
|
||||
setenv soc gk7xxxxxxx <= Set you SoC as gk7202v300 or gk7205v200 or gk7205v300
|
||||
setenv soc gk7xxxxxxx # Set your SoC. gk7202v300, gk7205v200, or gk7205v300.
|
||||
setenv osmem 32M
|
||||
setenv totalmem 64M <= 64M for gk7202v300 or gk7205v200 and 128M for gk7205v300
|
||||
setenv totalmem 64M # 64M for gk7202v300, gk7205v200, 128M for gk7205v300.
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.254 <= Set you TFTP server IP
|
||||
setenv serverip 192.168.1.254 # Your TFTP server IP address.
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset <= Flash kernel, rootfs and reboot device
|
||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
@ -36,20 +36,27 @@ run uk; run ur; reset
|
|||
### A trick for GK7205V300+IMX335 users
|
||||
|
||||
```
|
||||
echo -e "!/bin/sh\n\ndevmem 0x120100f0 32 0x19\n" >/etc/init.d/S96trick; chmod +x /etc/init.d/S96trick
|
||||
echo -e "!/bin/sh\n\ndevmem 0x120100f0 32 0x19\n" >/etc/init.d/S96trick
|
||||
chmod +x /etc/init.d/S96trick
|
||||
```
|
||||
Alternative way [here](https://github.com/OpenIPC/firmware/pull/117/files)
|
||||
|
||||
-----
|
||||
Alternative way [here](https://github.com/OpenIPC/firmware/pull/117/files)
|
||||
|
||||
### Danger zone
|
||||
|
||||
You have the option to always update the bootloader.
|
||||
You always have an option to update the bootloader. However, you need to
|
||||
understand what you do.
|
||||
|
||||
However, you should have the knowledge and replace the bootloader [file](https://github.com/OpenIPC/firmware/releases/tag/latest) name.
|
||||
NB! Replace bootloader filename with the one matching your SoC.
|
||||
Full list is [here](https://github.com/OpenIPC/firmware/releases/tag/latest).
|
||||
|
||||
```
|
||||
mw.b 0x42000000 ff 1000000; tftp 0x42000000 u-boot-gk7xxxxxxxx-beta.bin; sf probe 0
|
||||
sf erase 0x0 0x50000; sf write 0x42000000 0x0 ${filesize}
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 u-boot-gk7xxxxxxxx-beta.bin
|
||||
sf probe 0
|
||||
sf erase 0x0 0x50000
|
||||
sf write 0x42000000 0x0 ${filesize}
|
||||
reset
|
||||
```
|
||||
|
||||
[1]: guide-supported_devices.md
|
|
@ -0,0 +1,67 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
For XM boards with Hi35{16Ev200,16Ev300,18Ev300} SoC ONLY!!!
|
||||
------------------------------------------------------------
|
||||
|
||||
### Supported sensors
|
||||
|
||||
Please look up your sensor in [the list of supported devices][1].
|
||||
|
||||
### Initial device firmware updates
|
||||
|
||||
```
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000'
|
||||
setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}'
|
||||
saveenv
|
||||
|
||||
setenv soc hi351xxxxxxx # Set your SoC. hi3516ev200, hi3516ev300, or hi3518ev300.
|
||||
setenv osmem 32M
|
||||
setenv totalmem 64M # 64M for hi3516ev200, hi3518ev300, 128M for hi3516ev300.
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.254 # Your TFTP server IP address.
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
### Executing a command after the first run
|
||||
|
||||
For a Hi3516Ev300 board:
|
||||
```
|
||||
set_allocator cma
|
||||
firstboot
|
||||
```
|
||||
|
||||
For a Hi3516Ev200 or Hi3518Ev300 board:
|
||||
```
|
||||
set_allocator hisi
|
||||
firstboot
|
||||
```
|
||||
|
||||
### Danger zone
|
||||
|
||||
You always have an option to update the bootloader. However, you need to
|
||||
understand what you do.
|
||||
|
||||
NB! Replace bootloader filename with the one matching your SoC.
|
||||
Full list is [here](https://github.com/OpenIPC/firmware/releases/tag/latest).
|
||||
|
||||
```
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 u-boot-hi3516xxxxx-beta.bin
|
||||
sf probe 0
|
||||
sf erase 0x0 0x50000
|
||||
sf write 0x42000000 0x0 ${filesize}
|
||||
reset
|
||||
```
|
||||
|
||||
[1]: guide-supported_devices.md
|
|
@ -0,0 +1,33 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
For XM vendor boards with NT98562 and NT98566 SoC ONLY!!!
|
||||
---------------------------------------------------------
|
||||
|
||||
### Initial device firmware update
|
||||
|
||||
**This section will be completed at the end of the research**
|
||||
|
||||
```
|
||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
After you have finished flashing new firmware, please run `firstboot` command
|
||||
to format jffs2 partition used to store settings.
|
||||
|
||||
### Known issues
|
||||
|
||||
Change memory address for some tests.
|
||||
|
||||
```
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs};run setargs;sf probe 0;sf read 0x03100000 0x50000 0x200000;nvt_boot'
|
||||
saveenv
|
||||
```
|
|
@ -0,0 +1,50 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
For Anjoy/Brovotech/Gospell/Uniview boards with SSC335 Soc ONLY!!!
|
||||
------------------------------------------------------------------
|
||||
|
||||
### Initial device firmware update
|
||||
|
||||
```
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyS0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init LX_MEM=0x3fe0000 mma_heap=mma_heap_name0,miu=0,sz=0x1C00000 mma_memblock_remove=1 mtdparts=NOR_FLASH:256k(boot),64k(tech),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x21000000 0x50000 0x200000; bootm 0x21000000'
|
||||
setenv uk 'mw.b 0x21000000 ff 1000000; tftpboot 0x21000000 uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write 0x21000000 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x21000000 ff 1000000; tftpboot 0x21000000 rootfs.squashfs.${soc}; sf probe 0; sf erase 0x250000 0x500000; sf write 0x21000000 0x250000 ${filesize}'
|
||||
saveenv
|
||||
|
||||
setenv soc ssc335 # Your SoC. ssc325, ssc335, or ssc337.
|
||||
setenv sensor none # Your sensor. gc2053, imx307, or sc3335.
|
||||
setenv osmem 32M
|
||||
setenv totalmem 64M # 64M for ssc335.
|
||||
setenv ipaddr 192.168.1.10 # Your camera IP address.
|
||||
setenv serverip 192.168.1.254 # Your TFTP server IP address.
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
After you have finished flashing new firmware, please run `firstboot` command
|
||||
to format jffs2 partition used to store settings.
|
||||
|
||||
|
||||
### Other info
|
||||
|
||||
#### Human-readable processor names for SigmaStar devices.
|
||||
The data is obtained from the original firmware.
|
||||
|
||||
| Engraving | /sys/class/mstar/msys/CHIP_ID | /sys/devices/soc0/soc_id | /sys/devices/soc0/machine |
|
||||
|-----------|-------------------------------|--------------------------|----------------------------------|
|
||||
| SSC325DE | not found | 239 | INFINITY6 SSC009B-S01A QFN128 |
|
||||
| | | | |
|
||||
| SSC335 | 0xF2 | 242 | INFINITY6B0 SSC009A-S01A QFN88 |
|
||||
| SSC337 | 0xF2 | 242 | INFINITY6B0 SSC009A-S01A QFN88 |
|
||||
| SSC337DE | 0xF2 | 242 | INFINITY6B0 SSC009B-S01A QFN128 |
|
|
@ -1,10 +1,12 @@
|
|||
## For XM vendor boards ONLY with SoC XM510 !!!
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
For XM vendor boards with XM510 SoC ONLY!!!
|
||||
-------------------------------------------
|
||||
|
||||
### Initial device firmware update
|
||||
|
||||
```
|
||||
#
|
||||
|
||||
setenv bootargs 'mem=18M console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=xm_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'sf probe 0; sf read 0x80007fc0 0x50000 0x200000; bootm 0x80007fc0'
|
||||
setenv uk1 'mw.b 0x80007fc0 ff 1000000; tftp 0x80007fc0 uImage.${soc}'
|
||||
|
@ -15,14 +17,14 @@ setenv ur2 'sf probe 0; sf erase 0x250000 0x500000; sf write 0x80007fc 0x250000
|
|||
setenv ur 'run ur1 ; run ur2'
|
||||
saveenv
|
||||
|
||||
setenv soc xm510 <= Set you SoC as xm510
|
||||
setenv osmem 18M <= xm510 has 32M ram only
|
||||
setenv totalmem 32M <= xm510 has 32M ram only
|
||||
setenv ipaddr 192.168.1.10 <= Set your camera IP address
|
||||
setenv serverip 192.168.1.254 <= Set your TFTP server IP
|
||||
setenv soc xm510 # Your SoC. xm510.
|
||||
setenv osmem 18M # 18M for xm510.
|
||||
setenv totalmem 32M # 32M for xm510.
|
||||
setenv ipaddr 192.168.1.10 # Your camera IP address.
|
||||
setenv serverip 192.168.1.254 # Your TFTP server IP address.
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset <= Flash kernel, rootfs and reboot device
|
||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
@ -33,9 +35,8 @@ run uk; run ur; reset
|
|||
|
||||
### Notes
|
||||
|
||||
After the first flash firmware of the device, please run the **firstboot** command to format the jffs2 partition of the settings.
|
||||
|
||||
-----
|
||||
After you have finished flashing new firmware, please run `firstboot` command
|
||||
to format jffs2 partition used to store settings.
|
||||
|
||||
### Load kernel modules
|
||||
|
||||
|
@ -46,5 +47,7 @@ cd /lib/modules/3.0.101\+/xiongmai/
|
|||
|
||||
### Known issues
|
||||
|
||||
For Linux kernel built with original toolchain (gcc 4.9.2) everything works as expected, but with the same config with OpenIPC toolchain (gcc 7.5.0) pty (and only pty) doesn’t work, weird and also ran out of ideas how to fix it
|
||||
https://t.me/openipc/20225
|
||||
For Linux kernel built with the original toolchain (gcc 4.9.2) everything works
|
||||
as expected, but for the same .config built with OpenIPC toolchain (gcc 7.5.0)
|
||||
pty (and only pty) doesn't work. That is weird, and we also ran out of ideas how
|
||||
to fix that. https://t.me/openipc/20225
|
|
@ -1,24 +1,26 @@
|
|||
## For XM vendor boards ONLY with SoC XM530/XM550 !!!
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
For XM vendor boards with XM530/XM550 SoC ONLY !!!
|
||||
--------------------------------------------------
|
||||
|
||||
### Initial device firmware update
|
||||
|
||||
```
|
||||
#
|
||||
|
||||
setenv bootargs 'mem=35M console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=xm_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'sf probe 0; sf read 0x80007fc0 0x50000 0x200000; bootm 0x80007fc0'
|
||||
setenv uk 'mw.b 0x80007fc0 ff 1000000; tftp 0x80007fc0 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x80007fc0 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x80007fc0 ff 1000000; tftp 0x80007fc0 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x80007fc0 0x250000 ${filesize}'
|
||||
saveenv
|
||||
|
||||
setenv soc xm530 <= Set you SoC as xm530 for xm530 and xm550
|
||||
setenv osmem 35M <= 35M for xm530 and 64M for xm550
|
||||
setenv totalmem 64M <= 64M for xm530 and 128M for xm550
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.254 <= Set you TFTP server IP
|
||||
setenv soc xm530 # Your SoC. xm530 for both xm530 and xm550.
|
||||
setenv osmem 35M # 35M for xm530, 64M for xm550.
|
||||
setenv totalmem 64M # 64M for xm530, 128M for xm550.
|
||||
setenv ipaddr 192.168.1.10 # Your camera IP address.
|
||||
setenv serverip 192.168.1.254 # Your TFTP server IP address.
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset <= Flash kernel, rootfs and reboot device
|
||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
@ -29,9 +31,8 @@ run uk; run ur; reset
|
|||
|
||||
### Notes
|
||||
|
||||
After the first flash firmware of the device, please run the **firstboot** command to format the jffs2 partition of the settings.
|
||||
|
||||
-----
|
||||
After you have finished flashing new firmware, please run `firstboot` command
|
||||
to format jffs2 partition used to store settings.
|
||||
|
||||
### Load kernel modules
|
||||
|
||||
|
@ -40,4 +41,4 @@ cd /lib/modules/3.10.103\+/xiongmai/
|
|||
/usr/bin/load_xiongmai
|
||||
```
|
||||
|
||||
P.S. At the moment, video support is in development
|
||||
NB! As of today, video support is still in development.
|
|
@ -0,0 +1,21 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Additional requirements for kernel configuration
|
||||
------------------------------------------------
|
||||
|
||||
```
|
||||
CONFIG_BLK_DEV=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
```
|
||||
|
||||
```
|
||||
CONFIG_IP_MULTICAST=y
|
||||
```
|
||||
|
||||
```
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
|
||||
CONFIG_ROOT_NFS=y
|
||||
```
|
|
@ -0,0 +1,119 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Majestic Streamer
|
||||
-----------------
|
||||
|
||||
### Preamble
|
||||
|
||||
Majestic is a video streaming application, the heart of our firmware (in
|
||||
relation to camera/video surveillance functionality). Majestic is configurable
|
||||
via /etc/majestic.yaml file, and has many features/services enabled by default.
|
||||
Unneeded options can be switched off for better security and performance.
|
||||
|
||||
### Camera related URLs in firmware
|
||||
|
||||
With firmware running, you can access the camera using URLs below
|
||||
(192.168.1.10 is an example of camera IP address):
|
||||
|
||||
#### Live video
|
||||
|
||||
* http://192.168.1.10/ - [HLS][hls] live streaming is web browser.
|
||||
* http://192.168.1.10/mjpeg.html - [MJPEG][mjpeg] & [MP3][mp3] streaming in web browser.
|
||||
* http://192.168.1.10/video.mp4 - [MP4][mp4] video (Fragmented MP4).
|
||||
* rtsp://192.168.1.10 - Main channel of [RTSP][rtsp] streamer (video0 in config).
|
||||
* rtsp://192.168.1.10/stream=1 - Second channel of RTSP streamer (video1 in config)
|
||||
|
||||
#### Still image
|
||||
|
||||
* http://192.168.1.10/image.jpg - image snapshot in [JPEG][jpeg] format.
|
||||
Supports specific image parameters in URL, e.g. `/image.jpg?width=640&height=360&qfactor=73&color2gray=1`:
|
||||
-`width` and `height` - size of picture to scale original image.
|
||||
- `qfactor` - JPEG quality factor between 1 and 99.
|
||||
- `color2gray` - force to grayscale conversion.
|
||||
- `crop` - crop image in format `16x16x320x320`,
|
||||
where first numbers are left and top image coordinates
|
||||
and others are image width and height.
|
||||
* http://192.168.1.10/image.heif - image snapshot in [HEIF][heif] format,
|
||||
use `stream` parameter to specify channel (the same approach as for RTSP channels)
|
||||
* http://192.168.1.10/image.yuv - image snapshot in [YUV420][yuv] format.
|
||||
* http://192.168.1.10/image.dng - [raw image][raw] snapshot from the sensor in
|
||||
[Adobe DNG][dng] format (only for v>=2 HiSilicon processors).
|
||||
|
||||
##### Tips:
|
||||
|
||||
To convert YUV image to a more common image format, use `convert` command from
|
||||
ImageMagick software. Run it like this:
|
||||
```
|
||||
convert -verbose -sampling-factor 4:2:0 -size 1920x1080 -depth 8 image.yuv image.png
|
||||
```
|
||||
where `1920x1080` is the picture resolution of video0, and `.png` is the target
|
||||
image format.
|
||||
|
||||
### Audio input
|
||||
|
||||
* http://192.168.1.10/audio.opus - [Opus][opus] audio stream.
|
||||
* http://192.168.1.10/audio.m4a - [AAC][aac] audio stream.
|
||||
* http://192.168.1.10/audio.mp3 - [MP3][mp3] audio stream.
|
||||
* http://192.168.1.10/audio.pcm - Raw [PCM][pcm] audio stream.
|
||||
* http://192.168.1.10/audio.alaw - [A-law][alaw] compressed audio stream.
|
||||
* http://192.168.1.10/audio.ulaw - [μ-law][ulaw] compressed audio stream.
|
||||
* http://192.168.1.10/audio.g711a - [G.711][g711] A-law audio stream.
|
||||
|
||||
##### Tips:
|
||||
|
||||
To play audio stream use [ffplay][ffplay] utility from [ffmpeg][ffmpeg] package.
|
||||
|
||||
```
|
||||
ffplay -ar 48000 -ac 1 -f s16le http://192.168.1.10/audio.pcm
|
||||
ffplay -ar 48000 -ac 1 -f alaw http://192.168.1.10/audio.alaw
|
||||
ffplay -ar 48000 -ac 1 -f mulaw http://192.168.1.10/audio.ulaw
|
||||
ffplay -ar 8000 -ac 1 -f alaw http://192.168.1.10/audio.g711a
|
||||
```
|
||||
|
||||
To play audio on camera speaker over network (Hisilicon/Goke only):
|
||||
|
||||
```
|
||||
curl -T test.pcm http://10.216.128.66:8888/play_audio
|
||||
```
|
||||
|
||||
[PCM][pcm] file can be prepared using [sox][sox] program:
|
||||
|
||||
```
|
||||
sox speech.mp3 -t raw -r 8000 -e signed -b 16 -c 1 test.pcm
|
||||
```
|
||||
|
||||
### API
|
||||
|
||||
Night API endpoint (make sure `nightMode` is enabled in Majestic config,
|
||||
or use it from the camera without restrictions):
|
||||
|
||||
* http://192.168.1.10/night/on - Turn on night mode.
|
||||
* http://192.168.1.10/night/off - Turn off night mode (set to day).
|
||||
* http://192.168.1.10/night/toggle - Toggle current mode.
|
||||
|
||||
### Monitoring
|
||||
|
||||
* http://192.168.1.10/metrics - Standard Node exporter compatible
|
||||
and application-specific metrics for [Prometheus](https://prometheus.io/).
|
||||
|
||||
|
||||
[aac]: https://en.wikipedia.org/wiki/Advanced_Audio_Coding
|
||||
[alaw]: https://en.wikipedia.org/wiki/A-law_algorithm
|
||||
[dng]: https://en.wikipedia.org/wiki/Digital_Negative
|
||||
[g711]: https://en.wikipedia.org/wiki/G.711
|
||||
[heif]: https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format
|
||||
[hls]: https://en.wikipedia.org/wiki/HTTP_Live_Streaming
|
||||
[jpeg]: https://en.wikipedia.org/wiki/JPEG
|
||||
[mjpeg]: https://en.wikipedia.org/wiki/Motion_JPEG
|
||||
[mp3]: https://en.wikipedia.org/wiki/MP3
|
||||
[mp4]: https://en.wikipedia.org/wiki/MPEG-4_Part_14
|
||||
[opus]: https://en.wikipedia.org/wiki/Opus_(audio_format)
|
||||
[pcm]: https://en.wikipedia.org/wiki/Pulse-code_modulation
|
||||
[raw]: https://en.wikipedia.org/wiki/Raw_image_format
|
||||
[rtsp]: https://en.wikipedia.org/wiki/RTSP
|
||||
[ulaw]: https://en.wikipedia.org/wiki/%CE%9C-law_algorithm
|
||||
[yuv]: https://en.wikipedia.org/wiki/YUV
|
||||
[ffplay]: https://ffmpeg.org/ffplay.html
|
||||
[ffmpeg]: https://ffmpeg.org/
|
||||
[sox]: https://en.wikipedia.org/wiki/SoX
|
|
@ -1,19 +1,25 @@
|
|||
## HiSilicon boards
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
HiSilicon boards
|
||||
----------------
|
||||
|
||||
### Disable subsystems you don't use
|
||||
|
||||
Vendor kernel memory modules take around 5 megabytes of RAM (code with dynamic memory for buffers) and some of them are useless if you don't need specific functions like (OSD, motion detection, audio, H264/265/JPEG codecs)
|
||||
Vendor kernel modules take about 5 megabytes of RAM (code with dynamic memory
|
||||
for buffers) and some of them are pretty useless you need specific functionality
|
||||
like OSD, motion detection, support of audio, or H264/265/JPEG codecs.
|
||||
|
||||
| Feature | Modules | Size |
|
||||
|---------------------------------------|----------------------------------------------------------------------------------------------------|------|
|
||||
| Audio output | hi3516ev200_ao hi3516ev200_adec | |
|
||||
| Audio input | hi3516ev200_ai hi3516ev200_aenc | |
|
||||
| Audio support (both input and output) | hi3516ev200_acodec hi3516ev200_adec hi3516ev200_aenc hi3516ev200_ao hi3516ev200_ai hi3516ev200_aio | |
|
||||
| I2C sensor support | hi_sensor_i2c | |
|
||||
| SPI sensor support | hi_sensor_spi | |
|
||||
| PWM support | hi_pwm | |
|
||||
| Motion detection | hi3516ev200_ive | |
|
||||
| JPEG snapshots | hi3516ev200_jpege | |
|
||||
| H.264 codec support | hi3516ev200_h264e | |
|
||||
| H.265 codec support | hi3516ev200_h265e | |
|
||||
| OSD support | hi3516ev200_rgn
|
||||
| Feature | Modules | Size |
|
||||
|---------------------------------------|---------------------------------------------------------------------------------------------------------|------|
|
||||
| Audio output | hi3516ev200_ao, hi3516ev200_adec | |
|
||||
| Audio input | hi3516ev200_ai, hi3516ev200_aenc | |
|
||||
| Audio support (both input and output) | hi3516ev200_acodec, hi3516ev200_adec, hi3516ev200_aenc, hi3516ev200_ao, hi3516ev200_ai, hi3516ev200_aio | |
|
||||
| I2C sensor support | hi_sensor_i2c | |
|
||||
| SPI sensor support | hi_sensor_spi | |
|
||||
| PWM support | hi_pwm | |
|
||||
| Motion detection | hi3516ev200_ive | |
|
||||
| JPEG snapshots | hi3516ev200_jpege | |
|
||||
| H.264 codec support | hi3516ev200_h264e | |
|
||||
| H.265 codec support | hi3516ev200_h265e | |
|
||||
| OSD support | hi3516ev200_rgn | |
|
|
@ -0,0 +1,2 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
|
@ -1,21 +1,28 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
## Basic information
|
||||
|
||||
The OpenIPC is an alternative [firmware](https://github.com/OpenIPC) for IP cameras and a kind of umbrella for other projects that are components of our system.
|
||||
The OpenIPC is an alternative [firmware](https://github.com/OpenIPC) for
|
||||
IP cameras and a kind of umbrella for other projects that are components of
|
||||
our system.
|
||||
|
||||
The OpenIPC is a Linux operating system based on Buildroot/OpenWrt projects and targeting IP cameras with chipsets from different vendors, starting with Goke GK72xx, HiSilicon Hi35xx, SigmaStar SSC33x, and XiongmaiTech XM5xx.
|
||||
The OpenIPC is a Linux operating system based on Buildroot/OpenWrt projects and
|
||||
targeting IP cameras with chipsets from different vendors, starting
|
||||
with Goke GK72xx, HiSilicon Hi35xx, SigmaStar SSC33x, and XiongmaiTech XM5xx.
|
||||
|
||||
Everyone is welcome and can use/contribute to the project in any way they find useful!
|
||||
Everyone is welcome to use/contribute to the project in any way they find useful!
|
||||
|
||||
We would be grateful for the feedback and suggestions.
|
||||
We would be grateful for any feedback and suggestions.
|
||||
|
||||
|
||||
## Official links
|
||||
|
||||
* [OpenIPC on Wiki](https://openipc.github.io/wiki) - Collection of various documentation and instructions
|
||||
* [OpenIPC on GitHub](https://github.com/OpenIPC/) - GitHub organization, most projects are hosted here
|
||||
* [OpenIPC on OpenCollective](https://opencollective.com/openipc) - OpenCollective community
|
||||
* [OpenIPC on Twitter](https://twitter.com/openipc) - Our main news
|
||||
* [OpenIPC on YouTube](https://www.youtube.com/channel/UCaXlbR2uGTRFh8jQ2lCFd2g) - Our instructions and streams (in the plans)
|
||||
* [OpenIPC on Wiki](https://openipc.github.io/wiki) - Collection of various documentation and instructions.
|
||||
* [OpenIPC on GitHub](https://github.com/OpenIPC/) - GitHub organization, most projects are hosted here.
|
||||
* [OpenIPC on OpenCollective](https://opencollective.com/openipc) - OpenCollective community.
|
||||
* [OpenIPC on Twitter](https://twitter.com/openipc) - Our main news.
|
||||
* [OpenIPC on YouTube](https://www.youtube.com/channel/UCaXlbR2uGTRFh8jQ2lCFd2g) - Our instructions and streams (in the plans).
|
||||
|
||||
|
||||
## Telegram chat groups
|
||||
|
@ -36,44 +43,43 @@ We would be grateful for the feedback and suggestions.
|
|||
|
||||
### Firmware
|
||||
|
||||
* [openipc-2.1](https://openipc.github.io/firmware) - Firmware development and creation system based on Buildroot
|
||||
* [openipc-1.0](https://github.com/OpenIPC/chaos_calmer) - Firmware development and creation system based on OpenWrt 15.05
|
||||
* [coupler](https://github.com/OpenIPC/coupler) - Seamless transition between video cameras firmware
|
||||
* [openipc-2.x](https://openipc.github.io/firmware) - Firmware development and creation system based on Buildroot.
|
||||
* [openipc-1.0][chaos_calmer] - Firmware development and creation system based on OpenWrt 15.05.
|
||||
* [coupler][coupler] - Seamless transition between video cameras firmware.
|
||||
|
||||
### Streamers
|
||||
|
||||
* [majestic](https://github.com/OpenIPC/firmware/wiki/majestic_streamer) - Universal IPCam streamer
|
||||
* [mini](https://github.com/OpenIPC/mini) - OpenSource Mini IP camera streamer
|
||||
* [majestic](https://github.com/OpenIPC/firmware/wiki/majestic_streamer) - Universal IPCam streamer.
|
||||
* [mini][mini] - OpenSource Mini IP camera streamer.
|
||||
|
||||
### Tools
|
||||
|
||||
* [ipctool](https://openipc.github.io/ipctool) - Tool (and library) for checking IP camera hardware
|
||||
* [yaml-cli](https://github.com/OpenIPC/yaml-cli) - Tool for change setting in CLI
|
||||
* [glutinium](https://github.com/ZigFisher/Glutinium) - Additional OpenWRT packages
|
||||
* [ipctool](https://openipc.github.io/ipctool) - Tool (and library) for checking IP camera hardware.
|
||||
* [yaml-cli][yaml-cli] - Tool for change setting in CLI.
|
||||
* [glutinium](https://github.com/ZigFisher/Glutinium) - Additional OpenWRT packages.
|
||||
|
||||
### Windows software
|
||||
|
||||
* [exipcam](http://team.openipc.org/exipcam) - Cool utility for repairing IPCam (For Windows, works in Linux via Wine)
|
||||
* [ipcam_dms](http://team.openipc.org/ipcam_dms) - IPCam Device Management System (For Windows, works in Linux via Wine)
|
||||
* [exipcam](http://team.openipc.org/exipcam) - Cool utility for repairing IPCam (For Windows, works in Linux via Wine).
|
||||
* [ipcam_dms](http://team.openipc.org/ipcam_dms) - IPCam Device Management System (For Windows, works in Linux via Wine).
|
||||
|
||||
|
||||
## Developers
|
||||
|
||||
| Name | Role | Participation |
|
||||
|------|------|---------------|
|
||||
| [Dmitry Ilyin](https://web.telegram.org/#/im?p=@widgetii) | co-founder and main participant of the OpenIPC project | [ipctool](https://github.com/OpenIPC/ipctool), [majestic](https://github.com/OpenIPC/majestic_issues), [mini](https://github.com/OpenIPC/mini), [motors](https://github.com/OpenIPC/motors) |
|
||||
| [Dmitry Ermakov](https://web.telegram.org/#/im?p=@dimerrr) | main participant | [coupler](https://github.com/OpenIPC/coupler), [firmware](https://github.com/OpenIPC/firmware), [ipctool](https://github.com/OpenIPC/ipctool) |
|
||||
| [Igor Zalatov](https://web.telegram.org/#/im?p=@FlyRouter) | **project founder and development coordinator** | [chaos_calmer](https://github.com/OpenIPC/chaos_calmer), [firmware](https://github.com/OpenIPC/firmware), [wiki](https://github.com/OpenIPC/firmware/wiki) |
|
||||
| [Ivan Pozdeev](https://web.telegram.org/#/im?p=@John) | developer | [microbe-web](https://github.com/OpenIPC/microbe-web), [yaml-cli](https://github.com/OpenIPC/yaml-cli) |
|
||||
| [Konstantin](#) | developer | [hisi-trace](https://github.com/OpenIPC/hisi-trace), [yaml-cli](https://github.com/OpenIPC/yaml-cli) |
|
||||
| [Maksim Patrushev](https://web.telegram.org/#/im?p=@maxi380) | developer | [motors](https://github.com/OpenIPC/motors) |
|
||||
| [Maxim Chertov](https://web.telegram.org/#/im?p=@mAX3773) | co-founder of the OpenIPC project | [chaos_calmer](https://github.com/OpenIPC/chaos_calmer), [ipctool](https://github.com/OpenIPC/ipctool), [mini](https://github.com/OpenIPC/mini) |
|
||||
| [Paul Philippov](https://web.telegram.org/#/im?p=@themactep) | main participant | [microbe-web](https://github.com/OpenIPC/microbe-web) |
|
||||
| [Sergey Sharshunov](https://web.telegram.org/#/im?p=@USSSSSH) | co-founder of the OpenIPC project | [chaos_calmer](https://github.com/OpenIPC/chaos_calmer), [burn](https://github.com/OpenIPC/burn) |
|
||||
| [Temirkhan Myrzamadi](https://web.telegram.org/#/im?p=@hirrolot) | main participant | [smolrtsp](https://github.com/OpenIPC/smolrtsp)
|
||||
| [Vasiliy Yakovlev](https://web.telegram.org/#/im?p=@#) | general facilitator | |
|
||||
| Name | Role | Participation |
|
||||
|------------------------------------------------------------------|--------------------------------------------------------|--------------------------------------------------------------------------|
|
||||
| [Dmitry Ilyin](https://web.telegram.org/#/im?p=@widgetii) | co-founder and main participant of the OpenIPC project | [ipctool][ipctool], [majestic][majestic], [mini][mini], [motors][motors] |
|
||||
| [Dmitry Ermakov](https://web.telegram.org/#/im?p=@dimerrr) | main participant | [coupler][coupler], [firmware][firmware], [ipctool][ipctool] |
|
||||
| [Igor Zalatov](https://web.telegram.org/#/im?p=@FlyRouter) | **project founder and development coordinator** | [chaos_calmer][chaos_calmer], [firmware][firmware], [wiki][wiki] |
|
||||
| [Ivan Pozdeev](https://web.telegram.org/#/im?p=@John) | developer | [microbe-web][webui], [yaml-cli][yaml-cli] |
|
||||
| [Konstantin](#) | developer | [hisi-trace][hisi-trace], [yaml-cli][yaml-cli] |
|
||||
| [Maksim Patrushev](https://web.telegram.org/#/im?p=@maxi380) | developer | [motors][motors] |
|
||||
| [Maxim Chertov](https://web.telegram.org/#/im?p=@mAX3773) | co-founder of the OpenIPC project | [chaos_calmer][chaos_calmer], [ipctool][ipctool], [mini][mini] |
|
||||
| [Paul Philippov](https://web.telegram.org/#/im?p=@themactep) | main participant | [microbe-web][webui] |
|
||||
| [Sergey Sharshunov](https://web.telegram.org/#/im?p=@USSSSSH) | co-founder of the OpenIPC project | [chaos_calmer][chaos_calmer], [burn][burn] |
|
||||
| [Temirkhan Myrzamadi](https://web.telegram.org/#/im?p=@hirrolot) | main participant | [smolrtsp][smolrtsp] |
|
||||
| [Vasiliy Yakovlev](https://web.telegram.org/#/im?p=@#) | general facilitator | |
|
||||
|
||||
-----
|
||||
|
||||
### Support
|
||||
|
||||
|
@ -111,3 +117,18 @@ Thank you.
|
|||
<a href="https://opencollective.com/openipc/contribute/backer-14335/checkout" target="_blank"><img src="https://opencollective.com/webpack/donate/button@2x.png?color=blue" width="375" alt="Open Collective donate button"></a>
|
||||
<a href="https://www.paypal.com/donate/?hosted_button_id=C6F7UJLA58MBS"><img src="https://www.paypalobjects.com/en_US/IT/i/btn/btn_donateCC_LG.gif" alt="PayPal donate button"></a>
|
||||
<a href="https://openipc.org/donation/yoomoney.html"><img src="https://yoomoney.ru/transfer/balance-informer/balance?id=596194605&key=291C29A811B500D7" width="140" alt="YooMoney donate button"></a>
|
||||
|
||||
|
||||
[burn]: https://github.com/OpenIPC/burn
|
||||
[chaos_calmer]: https://github.com/OpenIPC/chaos_calmer
|
||||
[coupler]: https://github.com/OpenIPC/coupler
|
||||
[firmware]: https://github.com/OpenIPC/firmware
|
||||
[hisi-trace]: https://github.com/OpenIPC/hisi-trace
|
||||
[ipctool]: https://github.com/OpenIPC/ipctool
|
||||
[majestic]: https://github.com/OpenIPC/majestic_issues
|
||||
[mini]: https://github.com/OpenIPC/mini
|
||||
[motors]: https://github.com/OpenIPC/motors
|
||||
[smolrtsp]: https://github.com/OpenIPC/smolrtsp
|
||||
[webui]: https://github.com/OpenIPC/microbe-web
|
||||
[wiki]: https://github.com/wiki
|
||||
[yaml-cli]: https://github.com/OpenIPC/yaml-cli
|
|
@ -0,0 +1,7 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Microbe web interface
|
||||
---------------------
|
||||
|
||||
Default login/password: admin/12345
|
|
@ -1,6 +1,10 @@
|
|||
## Installation: how to make OpenIPC running on certain HW
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Supported HW and installation procedures are given on [openipc.org](https://openipc.org/firmware/) site.
|
||||
Installation: how to make OpenIPC running on certain hardware
|
||||
-------------------------------------------------------------
|
||||
|
||||
Supported hardware and installation procedures are given on [openipc.org](https://openipc.org/firmware/) site.
|
||||
|
||||
Please follow on site instructions for your CPU and video chip!
|
||||
|
|
@ -1,3 +1,6 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
|
@ -727,7 +730,7 @@ _th? -- possibly a trading house_
|
|||
[6]: https://aliexpress.com/item/4000054902736.html
|
||||
[7]: https://aliexpress.com/item/1005001933429701.html
|
||||
[8]: https://translate.google.com/translate?sl=ru&tl=en&u=https://www.cctvsp.ru/articles/obzor-i-sravnenie-matrits-dlya-kamer-videonablyudeniya
|
||||
[9]: https://github.com/OpenIPC/firmware/wiki/majestic_streamer
|
||||
[9]: majestic-streamer.md
|
||||
|
||||
[b1]: https://github.com/openipc/chaos_calmer/actions/workflows/hi3516cv100_images.yml/badge.svg?branch=master
|
||||
[b2]: https://github.com/openipc/chaos_calmer/actions/workflows/hi3516cv200_images.yml/badge.svg?branch=master
|
|
@ -1,7 +1,11 @@
|
|||
## Show changelog
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Changelog
|
||||
---------
|
||||
|
||||
* [firmware](https://github.com/OpenIPC/firmware/commits/master)
|
||||
* [ipctool](https://github.com/OpenIPC/ipctool/commits/master)
|
||||
* [coupler](https://github.com/OpenIPC/coupler/commits/main)
|
||||
* [microbe-web](https://github.com/OpenIPC/microbe-web/commits/master)
|
||||
* [wiki](https://github.com/OpenIPC/firmware/wiki/_history)
|
||||
* [wiki](https://github.com/OpenIPC/wiki/commits/master)
|
|
@ -1,19 +1,22 @@
|
|||
## Source code
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Source code
|
||||
-----------
|
||||
|
||||
**At the moment, we are working on creating a high-quality repository with source code.**
|
||||
|
||||
**Please be patient because we want to provide a completely beautiful and ready-made project.**
|
||||
|
||||
-----
|
||||
|
||||
### Quick build from sources
|
||||
|
||||
Install some packages to system and clone OpenIPC repo
|
||||
|
||||
```
|
||||
sudo apt-get update -y ; sudo apt-get install -y bc build-essential git unzip
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y bc build-essential git unzip
|
||||
git clone --depth=1 https://github.com/OpenIPC/firmware.git
|
||||
cd openipc-2.1
|
||||
cd firmware
|
||||
```
|
||||
Run the commands below for your board and your files will end up in the "output/images" directory
|
||||
|
||||
|
@ -101,5 +104,3 @@ PLATFORM=sigmastar make br-sigmastar-osdrv-ssc335-{dirclean,rebuild}
|
|||
#
|
||||
PLATFORM=xiongmai make br-xiongmai-osdrv-xm530-{dirclean,rebuild}
|
||||
```
|
||||
|
||||
|
|
@ -1,22 +1,20 @@
|
|||
## System features
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
System features
|
||||
---------------
|
||||
|
||||
* Supports for most TrueType (.ttf) and certain OpenType (.otf) fonts.
|
||||
|
||||
-----
|
||||
|
||||
### Random Number Generator
|
||||
|
||||
It WORKs now on Hi3516Ev200/Hi3516Ev300 devices
|
||||
|
||||
-----
|
||||
Works on Hi3516Ev200/Hi3516Ev300 devices.
|
||||
|
||||
### Watchdog
|
||||
|
||||
It WORKs now on Hi3516Ev200/Hi3516Ev300 devices
|
||||
|
||||
-----
|
||||
Works on Hi3516Ev200/Hi3516Ev300 devices.
|
||||
|
||||
### WiFi
|
||||
|
||||
* Realtek Semiconductor RTL8188ETV Wireless LAN 802.11n Network Adapter
|
||||
* [https://linux-hardware.org/index.php?id=usb:0bda-0179](https://linux-hardware.org/index.php?id=usb:0bda-0179)
|
||||
* [https://linux-hardware.org/index.php?id=usb:0bda-0179](https://linux-hardware.org/index.php?id=usb:0bda-0179)
|
|
@ -0,0 +1,25 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Upgrading firmware
|
||||
------------------
|
||||
|
||||
For old firmware `sysupgrade` without parameters is enough.
|
||||
|
||||
For newer firmware, use it as `sysupgrade -k -r` to update both kernel and rootfs.
|
||||
|
||||
If you got this error:
|
||||
```
|
||||
losetup: /tmp/rootfs.squashfs.${soc}: No such file or directory
|
||||
Rootfs: Unable to get hostname, execution was interrupted...
|
||||
```
|
||||
then try to update only kernel first:
|
||||
`sysupgrade -k`
|
||||
|
||||
If it doesn't help, use `--force` option:
|
||||
`sysupgrade -r --force`
|
||||
|
||||
If you caught a glitch, retrieve the most recent version of the utility:
|
||||
```
|
||||
curl -k -L -o /usr/sbin/sysupgrade "https://raw.githubusercontent.com/OpenIPC/firmware/master/general/overlay/usr/sbin/sysupgrade"
|
||||
```
|
|
@ -1,4 +1,8 @@
|
|||
# ToDo
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
ToDo
|
||||
----
|
||||
|
||||
## Bugfix
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
# How to setup HTTPS certificates on your camera
|
||||
|
||||
Make sure your camera is accessible from the Internet and both 80 (HTTP) and 443 (HTTPS) ports are redirected on your router to the camera.
|
||||
|
||||
Create an ACME account:
|
||||
|
||||
```console
|
||||
$ uacme -y -v new
|
||||
```
|
||||
|
||||
then issue a certificate for your domain by doing
|
||||
|
||||
```console
|
||||
$ uacme -y -v -h /usr/share/uacme/uacme.sh -t EC issue www.your.domain.com
|
||||
```
|
||||
|
||||
If everything goes well uacme asks you to set up a challenge, for example
|
||||
|
||||
```
|
||||
uacme: challenge=http-01 ident=www.your.domain.com token=kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4
|
||||
key_auth=kZjqYgAss_sl4XXDfFq-jeQV1_lqsE76v2BoCGegFk4.2evcXalKLhAybRuxxE-HkSUihdzQ7ZDAKA9EZYrTXwU
|
||||
```
|
||||
|
||||
Then restart majestic and test access to https://www.your.domain.com
|
|
@ -1,5 +0,0 @@
|
|||
## Interesting tricks
|
||||
|
||||
### Sharing output of a command via web
|
||||
|
||||
`<command> | nc seashells.io 1337`
|
|
@ -1,5 +0,0 @@
|
|||
## Developers
|
||||
|
||||
[](https://github.com/widgetii) [](https://github.com/dimerr)
|
||||
|
||||
[](https://github.com/zigfisher) [](https://github.com/themactep)
|
|
@ -1,66 +0,0 @@
|
|||
## For XM boards ONLY with SoC Hi35{16Ev200,16Ev300,18Ev300} !!!
|
||||
|
||||
### Supported sensors
|
||||
|
||||
Please read this [info](https://github.com/OpenIPC/openipc-2.1/wiki/supported_devices).
|
||||
|
||||
-----
|
||||
|
||||
### Initial device firmware updates
|
||||
|
||||
```
|
||||
#
|
||||
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000'
|
||||
setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}'
|
||||
saveenv
|
||||
|
||||
setenv soc hi351xxxxxxx <= Set you SoC as hi3516ev200 or hi3516ev300 or hi3518ev300
|
||||
setenv osmem 32M
|
||||
setenv totalmem 64M <= 64M for hi3516ev200 or hi3518ev300 and 128M for hi3516ev300
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.254 <= Set you TFTP server IP
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset <= Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
### Executing a command after the first run
|
||||
|
||||
If you have Hi3516Ev300 based board run this command:
|
||||
|
||||
```
|
||||
set_allocator cma
|
||||
firstboot
|
||||
```
|
||||
|
||||
If you have Hi3516Ev200 or Hi3518Ev300 based board run this command:
|
||||
|
||||
```
|
||||
set_allocator hisi
|
||||
firstboot
|
||||
```
|
||||
|
||||
-----
|
||||
|
||||
### Danger zone
|
||||
|
||||
You have the option to always update the bootloader.
|
||||
|
||||
However, you should have the knowledge and replace the bootloader [file](https://github.com/OpenIPC/firmware/releases/tag/latest) name.
|
||||
|
||||
```
|
||||
mw.b 0x42000000 ff 1000000; tftp 0x42000000 u-boot-hi3516xxxxx-beta.bin; sf probe 0
|
||||
sf erase 0x0 0x50000; sf write 0x42000000 0x0 ${filesize}
|
||||
reset
|
||||
```
|
|
@ -1,29 +0,0 @@
|
|||
## For XM vendor boards ONLY with SoC NT98562 and NT98566 !!!
|
||||
|
||||
### Initial device firmware update
|
||||
|
||||
**This section will be completed at the end of the research**
|
||||
|
||||
```
|
||||
run uk; run ur; reset <= Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
After the first flash firmware of the device, please run the **firstboot** command to format the jffs2 partition of the settings.
|
||||
|
||||
-----
|
||||
|
||||
### Known issues
|
||||
|
||||
Change memory address for some tests
|
||||
|
||||
```
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x03100000 0x50000 0x200000; nvt_boot'; saveenv
|
||||
```
|
|
@ -1,49 +0,0 @@
|
|||
## For Anjoy/Brovotech/Gospell/Uniview boards ONLY with SoC SSC335 !!!
|
||||
|
||||
### Initial device firmware update
|
||||
|
||||
```
|
||||
#
|
||||
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyS0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init LX_MEM=0x3fe0000 mma_heap=mma_heap_name0,miu=0,sz=0x1C00000 mma_memblock_remove=1 mtdparts=NOR_FLASH:256k(boot),64k(tech),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x21000000 0x50000 0x200000; bootm 0x21000000'
|
||||
setenv uk 'mw.b 0x21000000 ff 1000000; tftpboot 0x21000000 uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write 0x21000000 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x21000000 ff 1000000; tftpboot 0x21000000 rootfs.squashfs.${soc}; sf probe 0; sf erase 0x250000 0x500000; sf write 0x21000000 0x250000 ${filesize}'
|
||||
saveenv
|
||||
|
||||
setenv soc ssc335 <= Set you SoC - ssc325, ssc335, ssc337
|
||||
setenv sensor none <= Set you sensor - gc2053, imx307, sc3335
|
||||
setenv osmem 32M
|
||||
setenv totalmem 64M <= 64M for ssc335
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.254 <= Set you TFTP server IP
|
||||
saveenv
|
||||
|
||||
run uk; run ur; reset <= Flash kernel, rootfs and reboot device
|
||||
```
|
||||
|
||||
### Follow-up quick updates
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
After the first flash firmware of the device, please run the **firstboot** command to format the jffs2 partition of the settings.
|
||||
|
||||
|
||||
### Other info
|
||||
|
||||
**Human-readable processor names for SigmaStar devices, the data is obtained on the original firmware**
|
||||
|
||||
| Engraving |/sys/class/mstar/msys/CHIP_ID|/sys/devices/soc0/soc_id |/sys/devices/soc0/machine |
|
||||
|--- |--- |--- |--- |
|
||||
| SSC325DE | not found | 239 | INFINITY6 SSC009B-S01A QFN128 |
|
||||
| | | | |
|
||||
| SSC335 | 0xF2 | 242 | INFINITY6B0 SSC009A-S01A QFN88 |
|
||||
| SSC337 | 0xF2 | 242 | INFINITY6B0 SSC009A-S01A QFN88 |
|
||||
| SSC337DE | 0xF2 | 242 | INFINITY6B0 SSC009B-S01A QFN128 |
|
||||
|
||||
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
## Additional requirements for kernel configuration
|
||||
|
||||
```
|
||||
CONFIG_BLK_DEV=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
```
|
||||
|
||||
```
|
||||
CONFIG_IP_MULTICAST=y
|
||||
```
|
||||
|
||||
```
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
|
||||
CONFIG_ROOT_NFS=y
|
||||
```
|
|
@ -1,73 +0,0 @@
|
|||
## Preamble
|
||||
|
||||
Majestic is a video streaming application, the heart of our firmware (in relation to camera/video surveillance functionality). It's configurable via file /etc/majestic.yaml and by default has many features/services enabled. Unneeded options can be turned off for better security and performance.
|
||||
|
||||
## Camera related URLs in firmware
|
||||
|
||||
With firmware running, you can access the camera using URLs below (192.168.1.10 is an example of camera IP address):
|
||||
|
||||
### Live video
|
||||
|
||||
* http://192.168.1.10/ - [HLS](https://en.wikipedia.org/wiki/HTTP_Live_Streaming) live streaming is web browser
|
||||
* http://192.168.1.10/mjpeg.html - [MJPEG](https://en.wikipedia.org/wiki/Motion_JPEG) & [MP3](https://en.wikipedia.org/wiki/MP3) streaming in web browser
|
||||
* http://192.168.1.10/video.mp4 - [MP4](https://en.wikipedia.org/wiki/MPEG-4_Part_14) video (Fragmented MP4)
|
||||
* rtsp://192.168.1.10 - Main channel of [RTSP](https://en.wikipedia.org/wiki/RTSP) stream (section "video0:" in config )
|
||||
* rtsp://192.168.1.10/stream=1 - Second channel RTSP streamer (section "video1:" in config )
|
||||
|
||||
### Still image
|
||||
|
||||
* http://192.168.1.10/image.jpg - image snapshot in [JPEG](https://en.wikipedia.org/wiki/JPEG) format
|
||||
|
||||
Supports specific image parameters in URL like `/image.jpg?width=640&height=360&qfactor=73&color2gray=1`:
|
||||
1) `width` and `height` - size of picture to scale original image
|
||||
2) `qfactor` - JPEG quality factor between 1 and 99
|
||||
3) `color2gray` - force to grayscale convertion
|
||||
4) `crop` - crop image in format `16x16x320x320`, where first numbers are left and top image coordinates and others are image width and height
|
||||
|
||||
* http://192.168.1.10/image.heif - image snapshot in [HEIF](https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format) format, use `stream` parameter to specify channel (the same approach as for RTSP channels)
|
||||
* http://192.168.1.10/image.yuv - image snapshot in [YUV420](https://en.wikipedia.org/wiki/YUV) format
|
||||
|
||||
Use `convert -verbose -sampling-factor 4:2:0 -size 1920x1080 -depth 8 image.yuv image.png` to convert to usable format, where `1920x1080` is picture resolution from video0 and `.png` is a target format.
|
||||
|
||||
* http://192.168.1.10/image.dng - [raw image](https://en.wikipedia.org/wiki/Raw_image_format) snapshot from sensor in [Adobe DNG](https://en.wikipedia.org/wiki/Digital_Negative) format (only for v>=2 HiSilicon processors)
|
||||
|
||||
### Audio input
|
||||
|
||||
* http://192.168.1.10/audio.opus - [Opus](https://en.wikipedia.org/wiki/Opus_(audio_format)) audio stream
|
||||
* http://192.168.1.10/audio.m4a - [AAC](https://en.wikipedia.org/wiki/Advanced_Audio_Coding) audio stream
|
||||
* http://192.168.1.10/audio.mp3 - [MP3](https://en.wikipedia.org/wiki/MP3) audio stream
|
||||
* http://192.168.1.10/audio.pcm - Raw [PCM](https://en.wikipedia.org/wiki/Pulse-code_modulation) audio stream
|
||||
|
||||
Use `ffplay -f s16le -ac 1 -ar 48k http://192.168.1.10/audio.pcm`, where `48k` is sample rate
|
||||
|
||||
* http://192.168.1.10/audio.alaw - [A-law](https://en.wikipedia.org/wiki/A-law_algorithm) compressed audio stream
|
||||
|
||||
Use `ffplay -ar 48000 -ac 1 -f alaw http://192.168.1.10/audio.alaw`, where `48000` is sample rate
|
||||
|
||||
* http://192.168.1.10/audio.ulaw - [μ-law](https://en.wikipedia.org/wiki/%CE%9C-law_algorithm) compressed audio stream
|
||||
|
||||
Use `ffplay -ar 48000 -ac 1 -f mulaw http://192.168.1.10/audio.ulaw`, where `48000` is sample rate
|
||||
|
||||
* http://192.168.1.10/audio.g711a - [G.711](https://en.wikipedia.org/wiki/G.711) A-law audio stream
|
||||
|
||||
Use `ffplay -ar 8000 -ac 1 -f alaw http://192.168.1.10/audio.g711a`
|
||||
|
||||
### Playing audio on camera via network (Hisilicon/Goke only)
|
||||
|
||||
`curl -T test.pcm http://10.216.128.66:8888/play_audio`
|
||||
|
||||
[pcm](https://en.wikipedia.org/wiki/Pulse-code_modulation) file format can be prepared using [sox] program(https://en.wikipedia.org/wiki/SoX):
|
||||
|
||||
`sox speech.mp3 -t raw -r 8000 -e signed -b 16 -c 1 test.pcm`
|
||||
|
||||
### API
|
||||
|
||||
Night API endpoint (make sure `nightAPI` in `nightMode` is enabled or use it from a camera without restrictions):
|
||||
|
||||
* http://192.168.1.10/night/on - Turn on night mode
|
||||
* http://192.168.1.10/night/off - Turn off night mode (set to day)
|
||||
* http://192.168.1.10/night/toggle - Toggle current mode
|
||||
|
||||
### Monitoring
|
||||
|
||||
* http://192.168.1.10/metrics - Standard Node exporter compatible and application-specific metrics for [Prometheus](https://prometheus.io/)
|
|
@ -1 +0,0 @@
|
|||
Our resources: [OpenIPC](https://openipc.org) | [OpenCollective](https://opencollective.com/openipc) | [Twitter](https://twitter.com/OpenIPC) | [Telegram](https://t.me/openipc)
|
|
@ -1,3 +0,0 @@
|
|||
## Microbe WEB interface
|
||||
|
||||
Default login/password - admin/12345
|
|
@ -1,22 +0,0 @@
|
|||
## Upgrade firmware
|
||||
|
||||
`sysupgrade` for old firmware
|
||||
|
||||
`sysupgrade -k -r` for new firmware
|
||||
|
||||
If you got this error:
|
||||
```
|
||||
losetup: /tmp/rootfs.squashfs.${soc}: No such file or directory
|
||||
Rootfs: Unable to get hostname, execution was interrupted...
|
||||
```
|
||||
Try first update kernel:
|
||||
`sysupgrade -k`
|
||||
|
||||
If it doesn't help use option --force:
|
||||
`sysupgrade -r --force`
|
||||
|
||||
|
||||
If you caught a glitch:
|
||||
```
|
||||
curl -k -L -o /usr/sbin/sysupgrade "https://raw.githubusercontent.com/OpenIPC/firmware/master/general/overlay/usr/sbin/sysupgrade"
|
||||
```
|
|
@ -1,99 +0,0 @@
|
|||
## Configuration requirements
|
||||
|
||||
To prevent accidental stream termination on temporary connection drops schedule live streaming with a start date in the far future (e.g. 31 December of the current year). It will work smoothly when you go live, disconnect the camera and then continue streaming.
|
||||
|
||||
### HLS + H.265
|
||||
|
||||
Follow up [Delivering Content via HLS](https://developers.google.com/youtube/v3/live/guides/hls-ingestion) for more information.
|
||||
|
||||
### Create new stream
|
||||
|
||||
- Navigate https://developers.google.com/youtube/v3/live/code_samples page
|
||||
|
||||
- Select Resource 'liveStreams' and Method 'insert'
|
||||
|
||||
- In table below click on 'insert' use case
|
||||
|
||||
- Fill on right side on the page:
|
||||
- in 'cdn' object change "frameRate" from "60fps" to "variable",
|
||||
- "resolution" from "1080p" to "variable"
|
||||
- and "ingestionType" from "rtmp" to "hls":
|
||||
|
||||
```
|
||||
"cdn": {
|
||||
"ingestionType": "hls",
|
||||
"frameRate": "variable",
|
||||
"resolution": "variable"
|
||||
}
|
||||
```
|
||||
|
||||
- in Credentials section make sure you've selected 'Google OAuth 2.0' and 'https://www.googleapis.com/auth/youtube' scope (use 'Show scopes') and deselect 'API Key' option, then press 'Execute' button below
|
||||
|
||||
- Authorize yourself using your YouТube connected account
|
||||
|
||||
- Make sure that you got 200 response otherwise check errors and repeat. Trivial error is when [live streaming](https://support.google.com/youtube/answer/2474026?hl=en was not priviosly enabled in your account.
|
||||
|
||||
- Save "channelId" from the response (it looks like this "UCPJRjbxYlq6h2cCqy8RCRjg")
|
||||
|
||||
### Create new broadcast:
|
||||
|
||||
- Navigate https://developers.google.com/youtube/v3/live/code_samples page
|
||||
|
||||
- Select Resource 'liveBroadcast' and Method 'insert'
|
||||
|
||||
- In table below click on 'insert' use case
|
||||
|
||||
- Fill on right side on the page:
|
||||
|
||||
- 'title' field for your broadcast like 'My Hometown Camera'
|
||||
|
||||
- 'scheduledStartTime' like '2020-04-21T00:00:00.000Z' (ensure that this time in the future),
|
||||
|
||||
- 'scheduledEndTime' like '2020-04-21T01:00:00.000Z' (scheduled end time should be after the scheduled start time)
|
||||
|
||||
- also press blue plus button inside "snippet" block and add "channelId" with given from stream step value
|
||||
|
||||
```
|
||||
"snippet": {`
|
||||
`"title": "My Hometown Camera",`
|
||||
`"scheduledStartTime": "2021-04-12T00:00:00.000Z",`
|
||||
`"scheduledEndTime": "2021-04-13T00:00:00.000Z",`
|
||||
`"channelId": "MCpZqkqqEZw806aGGHUdepIl"`
|
||||
`},
|
||||
```
|
||||
|
||||
- in Credentials section make sure you've selected 'Google OAuth 2.0' and 'https://www.googleapis.com/auth/youtube' scope (use 'Show scopes') and deselect 'API Key' option, then press 'Execute' button below
|
||||
|
||||
- Authorize yourself using your YouTube connected account
|
||||
|
||||
- Make sure that you got 200 response otherwise check errors and repeat
|
||||
|
||||
### Bind the broadcast to the stream:
|
||||
|
||||
- Navigate https://developers.google.com/youtube/v3/live/code_samples page
|
||||
|
||||
- Select Resource 'liveBroadcast' and Method 'bind'
|
||||
|
||||
- In table below click on 'Bind a broadcast to a stream' use case
|
||||
|
||||
- Fill on right side on the page:
|
||||
|
||||
- 'id' - ID of the broadcast (can be found in server response in step 'Create new broadcast', field 'id')
|
||||
|
||||
- 'streamId' - ID of the stream (can be found in server response in step 'Create new stream', field 'id')
|
||||
|
||||
- in Credentials section make sure you've selected 'Google OAuth 2.0' and 'https://www.googleapis.com/auth/youtube' scope (use 'Show scopes') and deselect 'API Key' option, then press 'Execute' button below
|
||||
|
||||
- Authorize yourself using your YouTube connected account
|
||||
|
||||
- Make sure that you got 200 response otherwise check errors and repeat
|
||||
|
||||
### Go live!
|
||||
|
||||
Navigate https://studio.youtube.com/
|
||||
|
||||
On right side click on 'CREATE' button and then 'Go live'
|
||||
|
||||
credits (c) Victor
|
||||
Origin
|
||||
https://github.com/OpenIPC/camerasrnd/blob/master/streaming/youtube.md
|
|
@ -1,6 +1,10 @@
|
|||
## WiFi for XM530 based devices
|
||||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Script /usr/sbin/wifi
|
||||
WiFi for XM530 based devices
|
||||
----------------------------
|
||||
|
||||
Save this script as `/usr/sbin/wifi`
|
||||
|
||||
```
|
||||
#!/bin/sh
|
||||
|
@ -18,7 +22,7 @@ if [ "$WIFI" = "xm711" ]; then
|
|||
fi
|
||||
```
|
||||
|
||||
Settings on /etc/network/interfaces
|
||||
Save these settings to `/etc/network/interfaces`
|
||||
|
||||
```
|
||||
auto eth2
|
||||
|
@ -28,4 +32,4 @@ iface eth2 inet dhcp
|
|||
pre-up sed -i '2i \\tscan_ssid=1' /tmp/wpa_supplicant.conf
|
||||
pre-up (sleep 3; wpa_supplicant -B -Dnl80211 -ieth2 -c/tmp/wpa_supplicant.conf)
|
||||
post-down killall -q wpa_supplicant
|
||||
```
|
||||
```
|
|
@ -0,0 +1,92 @@
|
|||
# OpenIPC Wiki
|
||||
[Table of Content](index.md)
|
||||
|
||||
Configuration requirements
|
||||
--------------------------
|
||||
|
||||
To prevent accidental stream termination on temporary connection drops
|
||||
schedule live streaming with a start date in the far future (e.g. December 31st
|
||||
of the current year). It will work smoothly when you go live, disconnect the
|
||||
camera and then continue streaming.
|
||||
|
||||
### HLS + H.265
|
||||
|
||||
Follow [Delivering Content via HLS](https://developers.google.com/youtube/v3/live/guides/hls-ingestion)
|
||||
for more information.
|
||||
|
||||
### Create new stream
|
||||
|
||||
- Navigate to <https://developers.google.com/youtube/v3/live/code_samples> page.
|
||||
- Select 'liveStreams' as Resource and 'insert' as Method.
|
||||
- In table below, click on 'insert' use case.
|
||||
- On the right side of the page:
|
||||
- in 'cdn' object, change "frameRate" from "60fps" to "variable";
|
||||
- switch "resolution" from "1080p" to "variable";
|
||||
- switch "ingestionType" from "rtmp" to "hls":
|
||||
|
||||
```
|
||||
"cdn": {
|
||||
"ingestionType": "hls",
|
||||
"frameRate": "variable",
|
||||
"resolution": "variable"
|
||||
}
|
||||
```
|
||||
|
||||
- in Credentials section, make sure you've selected 'Google OAuth 2.0' and
|
||||
'https://www.googleapis.com/auth/youtube' scope (use 'Show scopes') and
|
||||
deselect 'API Key' option, then press 'Execute' button below.
|
||||
- Authorize yourself using your YouTube connected account.
|
||||
- Make sure that you got 200 response otherwise check errors and repeat.
|
||||
Trivial error is when [live streaming](https://support.google.com/youtube/answer/2474026?hl=en)
|
||||
was not previously enabled in your account.
|
||||
- Save "channelId" from the response (it looks like "UCPJRjbxYlq6h2cCqy8RCRjg").
|
||||
|
||||
|
||||
### Create new broadcast:
|
||||
|
||||
- Navigate to <https://developers.google.com/youtube/v3/live/code_samples> page.
|
||||
- Select 'liveBroadcast' as Resource and 'insert' as Method.
|
||||
- In table below, click on 'insert' use case.
|
||||
- On the right side of the page:
|
||||
- 'title' field for your broadcast like 'My Hometown Camera'
|
||||
- 'scheduledStartTime' like '2020-04-21T00:00:00.000Z' (ensure that this time in the future),
|
||||
- 'scheduledEndTime' like '2020-04-21T01:00:00.000Z' (scheduled end time should be after the scheduled start time)
|
||||
- also press blue plus button inside "snippet" block and add "channelId" with given from stream step value
|
||||
|
||||
```
|
||||
"snippet": {`
|
||||
`"title": "My Hometown Camera",`
|
||||
`"scheduledStartTime": "2021-04-12T00:00:00.000Z",`
|
||||
`"scheduledEndTime": "2021-04-13T00:00:00.000Z",`
|
||||
`"channelId": "MCpZqkqqEZw806aGGHUdepIl"`
|
||||
`},
|
||||
```
|
||||
|
||||
- in Credentials section, make sure you've selected 'Google OAuth 2.0' and
|
||||
'https://www.googleapis.com/auth/youtube' scope (use 'Show scopes') and
|
||||
deselect 'API Key' option, then press 'Execute' button below.
|
||||
- Authorize yourself using your YouTube connected account.
|
||||
- Make sure that you got 200 response otherwise check errors and repeat.
|
||||
|
||||
|
||||
### Bind the broadcast to the stream:
|
||||
|
||||
- Navigate to <https://developers.google.com/youtube/v3/live/code_samples> page.
|
||||
- Select 'liveBroadcast' as Resource and 'bind' as Method.
|
||||
- In the table below, click on 'Bind a broadcast to a stream' use case.
|
||||
- On the right side of the page:
|
||||
- 'id' - ID of the broadcast (can be found in server response in step 'Create new broadcast', field 'id')
|
||||
- 'streamId' - ID of the stream (can be found in server response in step 'Create new stream', field 'id')
|
||||
- in Credentials section make sure you've selected 'Google OAuth 2.0' and 'https://www.googleapis.com/auth/youtube' scope (use 'Show scopes') and deselect 'API Key' option, then press 'Execute' button below
|
||||
- Authorize yourself using your YouTube connected account.
|
||||
- Make sure that you got 200 response otherwise check errors and repeat.
|
||||
|
||||
|
||||
### Go live!
|
||||
|
||||
Navigate to <https://studio.youtube.com/>.
|
||||
|
||||
On the right side, click on 'CREATE' button and then 'Go live'.
|
||||
|
||||
|
||||
(c) Victor, Origin: https://github.com/OpenIPC/camerasrnd/blob/master/streaming/youtube.md
|
Binary file not shown.
After Width: | Height: | Size: 112 KiB |
Binary file not shown.
After Width: | Height: | Size: 138 KiB |
Binary file not shown.
After Width: | Height: | Size: 109 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.9 KiB |
5
index.md
5
index.md
|
@ -1,5 +0,0 @@
|
|||

|
||||
|
||||
## [EN](en/index) - English
|
||||
|
||||
## [RU](ru/index) - Русский
|
|
@ -0,0 +1,120 @@
|
|||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Прошивка OpenIPC -- что это?
|
||||
----------------------------
|
||||
|
||||

|
||||
|
||||
Прошивка OpenIPC (OpenIPC firmware) -- это коллективный труд многих
|
||||
программистов с целью создания отрытого стека для работы на IP камерах.
|
||||
|
||||
|
||||
## Хочу попробовать. Что для этого требуется?
|
||||
|
||||
### IP камера.
|
||||
|
||||
Естественно, вам понадобится IP камера. Если вы еще не приобрели камеру,
|
||||
изучите, на какие именно параметры необходимо обратить внимание перед
|
||||
покупкой. Если у вас есть сомнения в правильности выбора, попросите помощи у
|
||||
разработчиков в Telegram-канале.
|
||||
|
||||
Убедитесь, что ваша IP камера снабжена процессором, поддерживаемым прошивкой
|
||||
OpenIPC. [Список таких процессоров][socs] пока ограничен, но быстро расширяется.
|
||||
|
||||
Самым надежным способом определения типа процессора является частичный разброр
|
||||
корпуса. Для большинства камер это довольно простая и безболезненная операция:
|
||||
пара винтов здесь, пара защелок там, и вы получаете доступ к электронике.
|
||||
|
||||
Процессор IP камеры (System on a chip, или SoC) -- это, как правило, крупный чип
|
||||
на обратной стороне от объектива. Лазерная гравировка на поверхности чипа
|
||||
подскажет вам, с каким именно процессором вы имеете дело.
|
||||
|
||||
Сделайте фотографии всех плат, компонентов, маркировок и наклеек. Они еще не
|
||||
раз понадобятся вам для идентификации устройств без последующего разбора камеры.
|
||||
|
||||
Аккуратно снимите объектив (он держится на двух винтах) и сделайте фото матрицы.
|
||||
Одни и те же процессоры могут комплектоваться разными типами матриц, каждая из
|
||||
них требует собственного кофигурационного файла.
|
||||
|
||||
Сделайте фотографии разъемов, чтобы не перепутать подключения, если вам
|
||||
понадобится их разъединить, например для удобного доступа к матрице. _Маленькая
|
||||
хитрость: сделайте маркировку на обеих частях разъема цветным фломастером для
|
||||
пластика, так вы точно будете знать, какой штекер от какого разъема._
|
||||
|
||||

|
||||
|
||||
### Знание Linux.
|
||||
|
||||
Необходимым условием для установки на вашу IP камеру прошивки OpenIPC является
|
||||
ваше умение работать в среде Linux. Прошивка OpenIPC построена на базе Linux.
|
||||
И хотя мы стремимся сделать нашу прошивку максимально простой и понятной обычному
|
||||
пользователю, проект находится в ранней стадии разработки. А это значит, что
|
||||
каждый день мы вносим изменения в код, и некоторые из них требуют ручного
|
||||
вмешательства на уровне системы.
|
||||
|
||||
### Паяльник и умение с ним работать.
|
||||
|
||||
Самый простой способ получения доступа к загрузчику и операционной системе
|
||||
камеры -- подключение к её порту UART. Это довольно простая процедура,
|
||||
требующая недорогого [адаптера][g-usbttl] для серийного подключения с порта USB
|
||||
вашего компьютера.
|
||||
|
||||
Большинство камер идут с нераспаянным, а зачастую и немаркированным портом
|
||||
UART. Как правило, это группа из трех, реже четырех контактных площадок,
|
||||
расположенных на самом краю платы.
|
||||
|
||||

|
||||
|
||||
Вам нужно будет самостоятельно определить порт на плате, выяснить его
|
||||
распиновку, и либо распаять на него коннектор, либо припаять провода напрямую
|
||||
к контактам порта. Так же можно использовать прищепку с пружинными щупами для
|
||||
подключения адаптера к камере. В любом случае, соединение должно быть надежным,
|
||||
иначе пропадание контакта во время записи/чтения может обернуться искажением
|
||||
передаваемых данных, что в свою очередь может обернуться порчей содержимого
|
||||
флэш-памяти и вывести камеру из строя. И тогда вам потребуется программатор
|
||||
микросхем и паяльная станция. Паяльная станция также может пригодиться вам для
|
||||
замены некоторых компонентов с целью достижения лучшей совместимостью камеры
|
||||
с нашей прошивкой: например для замены модуля WiFi или микросхемы флэш-памяти.
|
||||
|
||||
### TFTP сервер.
|
||||
|
||||
Мы советуем вам настроить в своей сети сервер TFTP. Его удобно использовать для
|
||||
загрузки в камеру файлов новой прошивки, для сохранения дампа оригинальной,
|
||||
поставляемой вместе с камерой, прошивки, а так же для хранения самописанных
|
||||
часто используемых скриптов -- таким образом вы сможете быстро восстановить
|
||||
привычную рабочую среду после очередной перепрошивки с очисткой системы.
|
||||
|
||||
**Обязательно сохраните оригинальную прошивку!** Она позволит вам вернуть
|
||||
камеру в исходное состояние, если вас что-то не устроит в прошивке OpenIPC.
|
||||
Вы так же сможете использовать её для сравнительных тестов, если решите принять
|
||||
участие в разработке нашей прошивки.
|
||||
|
||||
### Любопытство, кураж и терпение.
|
||||
|
||||
Следует понимать, что на нынешней стадии разработки прошивка OpenIPC -- это ещё
|
||||
не готовый продукт, а R&D, НИОКР. Как правило, производители камер не раскрывают
|
||||
свои секреты, не дают пароли для доступа к штатным прошивкам, даже не делятся
|
||||
документацией со сторонними разработчиками. Поэтому мы экспериментируем, пробуем
|
||||
разные подходы, изучаем и анализируем накопленные знания. Это даёт свои плоды,
|
||||
но так же иногда приводит к сбоям. Если что-то хорошо и стабильно работает
|
||||
сегодня вечером, то оно может быть сломано завтра утром, и снова починено к
|
||||
следующему вечеру.
|
||||
|
||||
Устанавливая прошивку OpenIPC сегодня, вы должны отдавать себе отчет, что это
|
||||
путь к прекрасному открытому будущему, но мы не обещаем, что именно сейчас
|
||||
дорога будет легкой.
|
||||
|
||||
OpenIPC -- это увлекательный эксперимент, в котором вы можете принять участие.
|
||||
Помогайте нам, и однажды OpenIPC станет самой стабильной, гибкой и открытой
|
||||
прошивкой для всех IP камер.
|
||||
|
||||
|
||||
## Установка прошивки OpenIPC.
|
||||
|
||||
Итак, если вы всё ещё хотите попробовать прошивку OpenIPC на своей камере,
|
||||
вам поможет [пошаговая инструкция](installation.md).
|
||||
|
||||
[socs]: https://github.com/OpenIPC/firmware/wiki/supported_devices
|
||||
[g-usbttl]: https://google.com/search?q=ftdi+usb+ttl
|
||||
[g-3.3ttl]: https://google.com/search?q=logic+level+converter+3.3v+5v
|
123
ru/discussion.md
123
ru/discussion.md
|
@ -1,17 +1,47 @@
|
|||
![OpenIPC logo][logo]
|
||||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Заметки от Игоря Залатова
|
||||
=========================
|
||||
Темы для дискуссий
|
||||
------------------
|
||||
|
||||
Вопросы и ответы, коротко о главном
|
||||
-----------------------------------
|
||||
### План
|
||||
|
||||
### Majestic
|
||||
* Процессор и имя профиля указываются автоматически при сборке в файле
|
||||
* `/etc/hostname` и доступны постоянно через `/rom/..`
|
||||
* У плат `..._${platform}_unknown_defconfig` hostname не прописан.
|
||||
* `..._gk7205v200_fpv_defconfig` имеет отличный hostname (@p0isk)
|
||||
* Добавить ключи в `sysupgrade` для обновления web-ui и majestic.
|
||||
|
||||
* Можно-ли вывести данные для настройки автофокуса линз вместо текущего
|
||||
sample_af в стандартный /metrics ?
|
||||
* Нет, это отдельный тяжелый алгоритм, его нет смысла запускать просто так.
|
||||
### Безопасность
|
||||
|
||||
* При первых входах в Web UI предлагать (настойчиво) пользователю сменить пароль, дабы не нарваться на CVE.
|
||||
* готово (@p0isk, @themactep).
|
||||
* При первых входах по SSH предлагать (настойчиво) пользователю сменить пароль, дабы не нарваться на CVE.
|
||||
* Реализовать интеграцию авторизации httpd на использование стандартных passwd/shadow из /etc.
|
||||
|
||||
### Унификация ядра
|
||||
|
||||
* Включить опции ROOT_NFS и PNP_DHCP во всех ядрах.
|
||||
|
||||
### Обновление системы
|
||||
|
||||
#### Ядро:
|
||||
|
||||
* Добавить через mkimage имя процессора, например `Linux-4.9.37-hi3516ev200`
|
||||
* Готово (@p0isk).
|
||||
* По нему проверять и дате проверять пригодность для обновления.
|
||||
* Готово (@p0isk).
|
||||
|
||||
### Обновление majestic
|
||||
|
||||
* Обновляются и проверяются только бинарник и укороченный конфиг.
|
||||
* Есть кнопка "Восстановить настройки", нужна ли "Восстановить стример"?
|
||||
* Помимо ETag можно использовать Last-Modified.
|
||||
|
||||
#### Ветка разработки
|
||||
|
||||
* Отображать поле для номера коммита. Если пусто, то берём последний.
|
||||
* Неактуально? (@p0isk).
|
||||
|
||||
Сбор предложений по оформлению репозиториев проекта
|
||||
---------------------------------------------------
|
||||
|
@ -59,78 +89,3 @@
|
|||
[tasmocompiler](https://github.com/benzino77/tasmocompiler).
|
||||
* Создание публичных FTP/TFTP/NFS серверов для тестовых сборок компонентов
|
||||
прошивки.
|
||||
|
||||
|
||||
Программный переход с openipc-1.0 (OpenWrt) на openipc-2.x (Buildroot) 👻
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Заходим на устройство со старым openipc-1.0 и останавливаем любыми способами
|
||||
максимум сервисов кроме dropbear. Те сервисы которые "оживают" повторно
|
||||
останавливаем по примеру snmp.
|
||||
|
||||
`/etc/init.d/snmpd stop; /etc/init.d/snmpd disable`
|
||||
|
||||
Меняем при помощи команды `fw_setenv` переменную `bootargs`, добавляя туда в
|
||||
свою очередь переменную `init=/init`. Для моей платы строка выглядит вот так,
|
||||
но у вас она может быть другой:
|
||||
|
||||
`fw_setenv bootargs 'console=ttyAMA 0,115200 root=/dev/mtdblock3 init=/init rootfstype=squashfs,jffs2 panic=20 mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'`
|
||||
|
||||
Добавляем новую переменную soc при помощи команды `fw_setenv` указав свой
|
||||
процессор:
|
||||
|
||||
`fw_setenv soc hi3516ev100`
|
||||
|
||||
Прошиваем командой `flashcp` файловую систему, которую предварительно скачали
|
||||
с GitHub аккаунта OpenIPC. В моём случае это раздел `/dev/mtd3`, но могут быть
|
||||
отличия на каких-то старых железках:
|
||||
|
||||
`flashcp -v rootfs.squashfs.hi3516ev100 /dev/mtd3`
|
||||
|
||||
Делаем жесткий ребут плате:
|
||||
|
||||
`reboot -f`
|
||||
|
||||
Загружается **недо**-openipc-2.x с получением адреса по DHCP. После этого
|
||||
выполняем команду для глобального и красивого обновления:
|
||||
|
||||
`sysupgrade -k -r -n`
|
||||
|
||||
Профит!
|
||||
|
||||
|
||||
Ростелекомовская камера с NAND
|
||||
------------------------------
|
||||
|
||||
```
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hinand:512k(boot),512k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; nand read 0x42000000 0x100000 0x300000; bootm 0x42000000'
|
||||
|
||||
setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && nand erase 0x100000 0x200000; nand write 0x42000000 0x100000 ${filesize}'
|
||||
setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && nand erase 0x300000 0x500000; nand write 0x42000000 0x300000 ${filesize}'
|
||||
|
||||
setenv soc hi3516ev300
|
||||
setenv osmem 32M
|
||||
setenv totalmem 128M
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.107
|
||||
saveenv
|
||||
|
||||
nand erase 0x800000 0x7800000
|
||||
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
Adapting syslogd to work with time zones other than GMT
|
||||
-------------------------------------------------------
|
||||
|
||||
Some `syslog()` implementations like musl's[1] always send timestamps in UTC.
|
||||
This change adds a new option to `syslogd`, `-Z`, to assume incoming timestamps
|
||||
are always UTC and adjust them to the local timezone (of the syslogd) before
|
||||
logging.
|
||||
|
||||
[sysklogd: add -Z option to adjust message timezones](http://lists.busybox.net/pipermail/busybox/2017-May/085437.html)
|
||||
|
||||
|
||||
[logo]: https://cdn.themactep.com/images/logo_openipc.png
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Вопросы и ответы
|
||||
----------------
|
||||
|
||||
### Majestic
|
||||
|
||||
##### Можно-ли вывести данные для настройки автоматической фокусировки линз вместо текущего sample_af в стандартный /metrics?
|
||||
|
||||
Нет, это отдельный тяжелый алгоритм, его нет смысла запускать просто так.
|
|
@ -0,0 +1,62 @@
|
|||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Switcam HS-303
|
||||
--------------
|
||||
|
||||
Публичные заметки по прошивке устройств Switcam HS303 (всех версий) в
|
||||
[OpenIPC](https://openipc.org) v1.0 (на базе OpenWrt).
|
||||
|
||||
Обсуждение проекта и возможностей прошивок (на русском языке) в группе
|
||||
[Telegram](https://t.me/openipc_modding).
|
||||
|
||||
### Наиболее актуальные вопросы и ответы
|
||||
|
||||
#### Какие типы устройств поддерживаются в проекте OpenIPC v1.0?
|
||||
|
||||
На данный момент полноценно поддерживается Switcam HS-303 (v1).
|
||||
В будущем планируется поддержка устройств v2 и v3.
|
||||
|
||||
#### Где можно взять прошивку для устройства Ростелеком Switcam HS303 (v1)?
|
||||
|
||||
Обсуждение работы этих камер доступно по специальной подписке на
|
||||
[OpenIPC paywall](https://paywall.pw/openipc).
|
||||
|
||||
#### Какой путь до SD карты необходимо указывать в `majestic.yaml` для прошивки
|
||||
openipc-1.0?
|
||||
|
||||
`/mnt/mmc/%Y/%m/%d/%H.mp4`
|
||||
|
||||
### Специализированные настройки для Switcam HS303(v2)
|
||||
|
||||
Обсуждение работы этих камер доступно по специальной подписке на
|
||||
[OpenIPC paywall](https://paywall.pw/openipc).
|
||||
|
||||
#### Модифицированный блок из файла /etc/network/interface
|
||||
|
||||
```
|
||||
auto wlan0
|
||||
iface wlan0 inet dhcp
|
||||
pre-up echo 54 > /sys/class/gpio/export
|
||||
pre-up echo out > /sys/class/gpio/gpio54/direction
|
||||
pre-up echo 1 > /sys/class/gpio/gpio54/value
|
||||
pre-up modprobe r8188eu
|
||||
pre-up wpa_passphrase "OpenIPC" "openipc2021" >/tmp/wpa_supplicant.conf
|
||||
pre-up sed -i '2i \\tscan_ssid=1' /tmp/wpa_supplicant.conf
|
||||
pre-up ifconfig wlan0 up
|
||||
pre-up wpa_supplicant -B -Dwext -iwlan0 -c/tmp/wpa_supplicant.conf
|
||||
post-down killall -q wpa_supplicant
|
||||
```
|
||||
|
||||
#### Модифицированный блок из файла /etc/majestic.yaml
|
||||
|
||||
```
|
||||
nightMode:
|
||||
enabled: true
|
||||
irSensorPin: 62
|
||||
irSensorPinInvert: true
|
||||
irCutPin1: 2
|
||||
pinSwitchDelayUs: 150
|
||||
backlightPin: 56
|
||||
nightAPI: true
|
||||
```
|
|
@ -0,0 +1,26 @@
|
|||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Ростелекомовская камера с NAND
|
||||
------------------------------
|
||||
|
||||
```
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hinand:512k(boot),512k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; nand read 0x42000000 0x100000 0x300000; bootm 0x42000000'
|
||||
|
||||
setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && nand erase 0x100000 0x200000; nand write 0x42000000 0x100000 ${filesize}'
|
||||
setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && nand erase 0x300000 0x500000; nand write 0x42000000 0x300000 ${filesize}'
|
||||
|
||||
setenv soc hi3516ev300
|
||||
setenv osmem 32M
|
||||
setenv totalmem 128M
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv serverip 192.168.1.107
|
||||
saveenv
|
||||
|
||||
nand erase 0x800000 0x7800000
|
||||
|
||||
run uk
|
||||
run ur
|
||||
reset
|
||||
```
|
|
@ -0,0 +1,68 @@
|
|||
Помощь: U-boot
|
||||
------------
|
||||
|
||||
### Переменные окружения
|
||||
|
||||
Если при попытке сохранения переменной вы получаете ошибку `Too many args`,
|
||||
попробуйте повторить операцию из среды линукс, заменив `setenv` на `fw_setenv`.
|
||||
|
||||
__U-boot console:__
|
||||
```
|
||||
hisilicon # setenv uk 'mw.b 0x82000000 ff 1000000; tftp 0x82000000 uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write 0x82000000 0x50000 ${filesize}'
|
||||
** Too many args (max. 16) **
|
||||
```
|
||||
|
||||
__OpenIPC Linux:__
|
||||
```
|
||||
root@openipc-hi3518ev100:~# fw_setenv uk 'mw.b 0x82000000 ff 1000000; tftp 0x82000000 uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write 0x82000000 0x50000 ${filesize}'
|
||||
root@openipc-hi3518ev100:~#
|
||||
```
|
||||
|
||||
### Сохранение заводской прошивки без tftp.
|
||||
|
||||
В программе-терминале, используемой для подключения к порту UART, установите
|
||||
сохранение лога сессии. После чего в консоли загрузчика запустите команду чтения
|
||||
данных из памяти длиной в объем флэш-памяти начиная с нулевого адреса.
|
||||
|
||||
Используйте шестнадцатеричное представление для адресов памяти. Так 0 в
|
||||
шестнадцатеричной записи выглядит как 0x0, 8 мегабайтов (8 * 1024 * 1024 =
|
||||
8,388,608 байтов) выглядят как 0x800000, 16 мегабайтов (16 * 1024 * 1024 =
|
||||
или 16,777,216 байтов) - как 0x1000000.
|
||||
|
||||
Чтение 8МБ флэш-памяти:
|
||||
|
||||
```
|
||||
md.b 0x0 0x800000
|
||||
```
|
||||
|
||||
Чтение 16МБ флэш-памяти:
|
||||
|
||||
```
|
||||
md.b 0x0 0x1000000
|
||||
```
|
||||
|
||||
Будьте готовы к тому, что процесс передачи данных через серийное подключение
|
||||
займет несколько часов. Зато в результате у вас будет полная копия оригинальной
|
||||
прошивки, которую можно конвертировать в бинарный файл с помощью программы
|
||||
[binwalk](https://github.com/ReFirmLabs/binwalk) и использовать для дальнейшего
|
||||
изучения или для восстановления камеры в её оригинальный вид.
|
||||
|
||||
|
||||
### Обход запароленного загрузчика.
|
||||
|
||||
Смена загрузчика -- рискованная операция. Уж слишком высоки шансы превратить
|
||||
камеру в пресс-папье, если что-то пойдёт не так. Поэтому прежде чем прошивать
|
||||
новый загрузчик надо взвесить все риски и бенефиты.
|
||||
|
||||
В большинстве случаев оригинальный загрузчик плюс новое ядро и новая
|
||||
операционная система -- вполне рабочий вариант. Но бывают исключения.
|
||||
Последнее время всё чаще встречаются камеры, на которых доступ в консоль
|
||||
загрузчика закрыт паролем. То есть даже если вы подключитесь к камере через
|
||||
порт UART, всё, что вам будет доступно после прерывания стандартного цикла
|
||||
загрузки -- это приглашение ввести пароль. В таком случае относительно
|
||||
безопасным решением будет даунгрейд родной прошивки до версии, где ещё не
|
||||
требовался пароль. Например, у камер Xiongmai пароль в загрузчике появился
|
||||
где-то в районе июля 2021 года, следовательно вам понадобится файл с фирменной
|
||||
прошивкой от вашей камеры с более ранней датой. После успешного даунгрейда на
|
||||
беспарольный загрузчик вы сможете установить прошивку OpenIPC уже стандартными
|
||||
средствами.
|
134
ru/index.md
134
ru/index.md
|
@ -1,135 +1,23 @@
|
|||
![OpenIPC logo][logo]
|
||||
# OpenIPC Wiki
|
||||
|
||||
# Русская версия
|
||||
Оглавление
|
||||
----------
|
||||
|
||||
## Прошивка OpenIPC -- что это?
|
||||
- [О проекте](about.md)
|
||||
- [Установка. Шаг за шагом.](installation.md)
|
||||
- [Темы для дискуссий разработчиков](discussion.md)
|
||||
- [Программный переход с openipc-1.0 (OpenWrt) на openipc-2.x (Buildroot)](upgrade-from-1.md)
|
||||
- [Вопросы и ответы](faq.md)
|
||||
|
||||
Прошивка OpenIPC (OpenIPC firmware) -- это коллективный труд многих
|
||||
программистов с целью создания отрытого стека для работы на IP камерах.
|
||||
|
||||
|
||||
## Хочу попробовать. Что для этого требуется?
|
||||
|
||||
### IP камера.
|
||||
|
||||
Естественно, вам понадобится IP камера. Если вы еще не приобрели камеру,
|
||||
изучите, на какие именно параметры необходимо обратить внимание перед
|
||||
покупкой. Если у вас есть сомнения в правильности выбора, попросите помощи у
|
||||
разработчиков в Telegram-канале.
|
||||
|
||||
Убедитесь, что ваша IP камера снабжена процессором, поддерживаемым прошивкой
|
||||
OpenIPC. [Список таких процессоров][socs] пока ограничен, но быстро расширяется.
|
||||
|
||||
Самым надежным способом определения типа процессора является частичный разброр
|
||||
корпуса. Для большинства камер это довольно простая и безболезненная операция:
|
||||
пара винтов здесь, пара защелок там, и вы получаете доступ к электронике.
|
||||
|
||||
Процессор IP камеры (System on a chip, или SoC) -- это, как правило, крупный чип
|
||||
на обратной стороне от объектива. Лазерная гравировка на поверхности чипа
|
||||
подскажет вам, с каким именно процессором вы имеете дело.
|
||||
|
||||
Сделайте фотографии всех плат, компонентов, маркировок и наклеек. Они еще не
|
||||
раз понадобятся вам для идентификации устройств без последующего разбора камеры.
|
||||
|
||||
Аккуратно снимите объектив (он держится на двух винтах) и сделайте фото матрицы.
|
||||
Одни и те же процессоры могут комплектоваться разными типами матриц, каждая из
|
||||
них требует собственного кофигурационного файла.
|
||||
|
||||
Сделайте фотографии разъемов, чтобы не перепутать подключения, если вам
|
||||
понадобится их разъединить, например для удобного доступа к матрице. _Маленькая
|
||||
хитрость: сделайте маркировку на обеих частях разъема цветным фломастером для
|
||||
пластика, так вы точно будете знать, какой штекер от какого разъема._
|
||||
|
||||

|
||||
|
||||
### Знание Linux.
|
||||
|
||||
Необходимым условием для установки на вашу IP камеру прошивки OpenIPC является
|
||||
ваше умение работать в среде Linux. Прошивка OpenIPC построена на базе Linux.
|
||||
И хотя мы стремимся сделать нашу прошивку максимально простой и понятной обычному
|
||||
пользователю, проект находится в ранней стадии разработки. А это значит, что
|
||||
каждый день мы вносим изменения в код, и некоторые из них требуют ручного
|
||||
вмешательства на уровне системы.
|
||||
|
||||
### Паяльник и умение с ним работать.
|
||||
|
||||
Самый простой способ получения доступа к загрузчику и операционной системе
|
||||
камеры -- подключение к её порту UART. Это довольно простая процедура,
|
||||
требующая недорогого [адаптера][g-usbttl] для серийного подключения с порта USB вашего
|
||||
компьютера.
|
||||
|
||||
Большинство камер идут с нераспаянным, а зачастую и немаркированным портом
|
||||
UART. Как правило, это группа из трех, реже четырех контактных площадок,
|
||||
расположенных на самом краю платы.
|
||||
|
||||

|
||||
|
||||
Вам нужно будет самостоятельно определить порт на плате, выяснить его
|
||||
распиновку, и либо распаять на него коннектор, либо припаять провода напрямую
|
||||
к контактам порта. Так же можно использовать прищепку с пружинными щупами для
|
||||
подключения адаптера к камере. В любом случае, соединение должно быть надежным,
|
||||
иначе пропадание контакта во время записи/чтения может обернуться искажением
|
||||
передаваемых данных, что в свою очередь может обернуться порчей содержимого
|
||||
флэш-памяти и вывести камеру из строя. И тогда вам потребуется программатор
|
||||
микросхем и паяльная станция. Паяльная станция также может пригодиться вам для
|
||||
замены некоторых компонентов с целью достижения лучшей совместимостью камеры
|
||||
с нашей прошивкой: например для замены модуля WiFi или микросхемы флэш-памяти.
|
||||
|
||||
### TFTP сервер.
|
||||
|
||||
Мы советуем вам настроить в своей сети сервер TFTP. Его удобно использовать для
|
||||
загрузки в камеру файлов новой прошивки, для сохранения дампа оригинальной,
|
||||
поставляемой вместе с камерой, прошивки, а так же для хранения самописанных
|
||||
часто используемых скриптов -- таким образом вы сможете быстро восстановить
|
||||
привычную рабочую среду после очередной перепрошивки с очисткой системы.
|
||||
|
||||
**Обязательно сохраните оригинальную прошивку!** Она позволит вам вернуть
|
||||
камеру в исходное состояние, если вас что-то не устроит в прошивке OpenIPC.
|
||||
Вы так же сможете использовать её для сравнительных тестов, если решите принять
|
||||
участие в разработке нашей прошивки.
|
||||
|
||||
### Любопытство, кураж и терпение.
|
||||
|
||||
Следует понимать, что на нынешней стадии разработки прошивка OpenIPC -- это ещё
|
||||
не готовый продукт, а R&D, НИОКР. Как правило, производители камер не раскрывают
|
||||
свои секреты, не дают пароли для доступа к штатным прошивкам, даже не делятся
|
||||
документацией со сторонними разработчиками. Поэтому мы экспериментируем, пробуем
|
||||
разные подходы, изучаем и анализируем накопленные знания. Это даёт свои плоды,
|
||||
но так же иногда приводит к сбоям. Если что-то хорошо и стабильно работает
|
||||
сегодня вечером, то оно может быть сломано завтра утром, и снова починено к
|
||||
следующему вечеру.
|
||||
|
||||
Устанавливая прошивку OpenIPC сегодня, вы должны отдавать себе отчет, что это
|
||||
путь к прекрасному открытому будущему, но мы не обещаем, что именно сейчас
|
||||
дорога будет легкой.
|
||||
|
||||
OpenIPC -- это увлекательный эксперимент, в котором вы можете принять участие.
|
||||
Помогайте нам, и однажды OpenIPC станет самой стабильной, гибкой и открытой
|
||||
прошивкой для всех IP камер.
|
||||
### Камеры
|
||||
|
||||
- [Switcam HS-303](hardware-hs303.md)
|
||||
- [Ростелекомовская камера с NAND](hardware-rtk-nand.md)
|
||||
|
||||
## Что можно прочитать про прошивку OpenIPC?
|
||||
|
||||
* [Часто задаваемые вопросы и ответы на них][faq1]
|
||||
* [Заметки от Игоря Залатова][faq2]
|
||||
* [Заметки от Олега Левшина][faq3]
|
||||
|
||||
## Перенос блоков из старой Вики
|
||||
|
||||
* [Темы для дискуссий разработчиков](transfer-discussion-ru)
|
||||
* [Специализированные настройки для устройств Switcam HS303(v2) на OpenIPC v2.2](transfer-special-hs303v2)
|
||||
* [Заметки по OpenIPC v1.0 (переписать и расформировать)](transfer-device-hs303)
|
||||
|
||||
## Установка прошивки OpenIPC.
|
||||
|
||||
Итак, если вы всё ещё хотите попробовать прошивку OpenIPC на своей камере,
|
||||
вам поможет [пошаговая инструкция](/wiki/ru/installation).
|
||||
|
||||
|
||||
[logo]: https://cdn.themactep.com/images/logo_openipc.png
|
||||
[socs]: https://github.com/OpenIPC/firmware/wiki/supported_devices
|
||||
[faq1]: https://github.com/OpenIPC/camerasrnd/blob/master/docs/FAQ-ru.md
|
||||
[faq2]: https://github.com/OpenIPC/wiki/blob/master/ru/discussion.md
|
||||
[faq3]: https://alarmsystem-cctv.ru/openipc-%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9-%D0%BA%D0%BE%D0%BB%D0%BB%D0%B5%D0%BA%D1%82%D0%B8%D0%B2/
|
||||
[g-usbttl]: https://google.com/search?q=ftdi+usb+ttl
|
||||
[g-3.3ttl]: https://google.com/search?q=logic+level+converter+3.3v+5v
|
||||
|
|
|
@ -1,32 +1,34 @@
|
|||
![OpenIPC logo][logo]
|
||||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Установка OpenIPC. Шаг за шагом.
|
||||
================================
|
||||
--------------------------------
|
||||
|
||||
### Шаг 1. Определите тип процессора.
|
||||
|
||||

|
||||
|
||||
_Пример маркировки процессора Hisilicon Hi3518EV100. Значимые символы обведены жёлтым._
|
||||
_Пример маркировки процессора Hisilicon Hi3518EV100.
|
||||
Значимые символы обведены жёлтым._
|
||||
|
||||
### Шаг 2. Скачайте прошивку.
|
||||
|
||||
Найдите свой тип процессора на странице <https://github.com/OpenIPC/firmware>
|
||||
и убедитесь, что для него есть готовая прошивка. Если вам повезло, и такая прошивка
|
||||
существует -- скачайте её на свой компьютер.
|
||||
и убедитесь, что для него есть готовая прошивка. Если вам повезло, и такая
|
||||
прошивка существует -- скачайте её на свой компьютер.
|
||||
|
||||
### Шаг 3. Установите и настройте сервер TFTP.
|
||||
|
||||
TFTP расшифровывается как Trivial File Transer Protocol. Как следует уже из
|
||||
TFTP расшифровывается как Trivial File Transfer Protocol. Как следует уже из
|
||||
названия, это очень простой протокол, предназначенный для передачи файлов по
|
||||
компьютерной сети. TFTP не поддерживает аутентификацию. Его код настолько прост
|
||||
и компактен, что TFTP клиенты используются в сетевых и встроенных системах для
|
||||
получения загрузочных образов с сетевых серверов.
|
||||
|
||||
#### Если на вашем компьютере Linux
|
||||
#### Если на вашем компьютере Linux.
|
||||
|
||||
Если на вашем компьютере установлен Linux, то здесь всё просто. Скомилированный
|
||||
и готовый к использованию пакет сервера TFTP уже лежит в репозитарии, и вам
|
||||
Если на вашем компьютере установлен Linux, то здесь всё просто. Скомпилированный
|
||||
и готовый к использованию пакет сервера TFTP уже лежит в репозитории, и вам
|
||||
только надо установить его и настроить:
|
||||
|
||||
```
|
||||
|
@ -36,42 +38,90 @@ sudo systemctl restart tftpd-hpa.service
|
|||
```
|
||||
|
||||
Теперь у вас есть свой TFTP сервер, который работает с файлами в директории
|
||||
`/srv/tftp`. Разверните архив с прошивкой, скачаный в п.2 в эту директорию.
|
||||
`/srv/tftp`. Разверните архив с прошивкой, скачанный в п.2 в эту директорию.
|
||||
|
||||
```
|
||||
sudo tar -C /srv/tftp/ -xvf openipc.*.tgz
|
||||
```
|
||||
|
||||
### Шаг 4. Подключение к порту UART.
|
||||
### Шаг 4. Подключитесь к порту UART камеры.
|
||||
|
||||
Для подключения к камере через порт UART вам понадобится [адаптер](https://www.google.com/search?q=ftdi+usb+ttl) для создания подключения с серийного порта вашего компьютера.
|
||||
Для подключения к камере через порт UART вам понадобится [адаптер][ftdi] для
|
||||
создания подключения с серийного порта вашего компьютера.
|
||||
|
||||
__Прежде чем подключать адартер к камере, убедитесь, что переключатель уровня рабочего напряжения на адартере установлен в 3.3 вольта!__ Иногда для этого достаточно выставить соответствующее положение джампера, иногда надо перепаять ключ на контактной площадке. Некоторые адартеры работают только с напряжением 5 вольт. В этом случае вам понадобится дополнительный [конвертер](https://google.com/search?q=logic+level+converter+3.3v+5v) уровня сигналов TTL, включенный между адартером и портом UART камеры.
|
||||
__Прежде чем подключать адаптер к камере, убедитесь, что переключатель уровня
|
||||
рабочего напряжения на адаптере установлен в 3.3 вольта!__ Иногда для этого
|
||||
достаточно выставить соответствующее положение джампера, иногда надо перепаять
|
||||
ключ на контактной площадке. Некоторые адаптеры работают только с напряжением 5
|
||||
вольт. В этом случае вам понадобится дополнительный [конвертер][tllc] уровня
|
||||
сигналов TTL, включенный между адаптером и портом UART камеры.
|
||||
|
||||
Один из нужных вам контактов порта UART -- `GND`. Его легко определить, проверив мультиметром неразрывность цепи на любой другой известный контакт `GND`. Нашли? Тогда остаётся найти ещё два контакта -- `RX` и `TX`, они используются для получения и передачи данных, соответственно. Соедините `GND` камеры с контактом `GND` адаптера, подключите USB разъём адаптера к порту USB вашего компьютера, запустите на компьютере программу подключения к серийному порту и установите соединение с адаптером. Используйте скорость подключения 115200 bps. После этого соедините контакт `RX` адаптера с предполагаемым контактом `TX` порта UART. Подайте питание на камеру. Если вы угадали правильно, на экране появится лог загрузки. Если же экран остался чистым -- повторите процедуру с другим свободным контактом UART. После того, как вы определили порт `RX`, подключите порт `TX` адаптера к оставшемуся свободному контакту порта UART. Попробуйте прервать загрузку камеры нажатием комбинации клавиш на клавиатуре компьютера. Если все получилось -- поздравляем, вы получили доступ к камере.
|
||||
Один из нужных вам контактов порта UART -- `GND`. Его легко определить, проверив
|
||||
мультиметром неразрывность цепи на любой другой известный контакт `GND`. Нашли?
|
||||
Тогда остаётся найти ещё два контакта -- `RX` и `TX`, они используются для
|
||||
получения и передачи данных, соответственно. Соедините `GND` камеры с контактом
|
||||
`GND` адаптера, подключите USB разъём адаптера к порту USB вашего компьютера,
|
||||
запустите на компьютере программу подключения к серийному порту и установите
|
||||
соединение с адаптером. Используйте скорость подключения 115200 bps. После этого
|
||||
соедините контакт `RX` адаптера с предполагаемым контактом `TX` порта UART.
|
||||
Подайте питание на камеру. Если вы угадали правильно, на экране появится ло
|
||||
загрузки. Если же экран остался чистым -- повторите процедуру с другим свободным
|
||||
контактом UART. После того как вы определили порт `RX`, подключите порт `TX`
|
||||
адаптера к оставшемуся свободному контакту порта UART. Попробуйте прервать
|
||||
загрузку камеры нажатием комбинации клавиш на клавиатуре компьютера. Если всё
|
||||
получилось -- поздравляем, вы получили доступ к камере.
|
||||
|
||||
Четвертым контактом порта UART может быть `VCC`. Он используется для подачи напряжения во время прошивки камеры на заводе. Мы настоятельно советуем не подключать питание камеры через `VCC` порт UART, а использовать для этого штатный разъем питания.
|
||||
Четвертым контактом порта UART может быть `VCC`. Он используется для подачи
|
||||
напряжения во время прошивки камеры на заводе. Мы настоятельно советуем не
|
||||
подключать питание камеры через `VCC` порт UART, а использовать для этого
|
||||
штатный разъем питания.
|
||||
|
||||
### Шаг 5. Загрузчик.
|
||||
### Шаг 5. Получите доступ к консоли загрузчика.
|
||||
|
||||
Перегрузите камеру и постарайтесь получить доступ к консоли загрузчика нажав требуемую комбинацию клавиш между моментом начала загрузки и до старта ядра Линукс. В большинстве случаев это комбинация `Ctrl-C`. Реже -- `Esc` или просто любая клавиша. Но некоторые камеры требуют более экзотические комбинации. Читайте надписи на экране во время загрузки. Если это не помогло -- попросите помощи на нашем канале Телеграм. Скорее всего, мы уже имели дело с подобной камерой.
|
||||
Перегрузите камеру и постарайтесь получить доступ к консоли загрузчика нажав
|
||||
требуемую комбинацию клавиш между моментом начала загрузки и до старта ядра
|
||||
Линукс. В большинстве случаев это комбинация `Ctrl-C`. Реже -- `Enter`, Esc`
|
||||
или просто любая клавиша. Но некоторые камеры требуют более экзотические
|
||||
комбинации. Читайте надписи на экране во время загрузки. Если внимательное
|
||||
чтение лога не помогло -- попросите помощи на нашем канале Телеграм. Скорее
|
||||
всего, мы уже имели дело с подобной камерой.
|
||||
|
||||
Начиная с этого момента мы настоятельно советуем вам вести записи всего, что вы делаете. Включите сохранение логов сессии в вашем консольном клиенте. Но для еще большей надежности создайте текстовый файл на вашем компьютере и заносите в него все выполняемые команды и ответы системы.
|
||||
Начиная с этого момента мы настоятельно советуем вам вести записи всего, что
|
||||
вы делаете. Включите сохранение логов сессии в вашем консольном клиенте. Но для
|
||||
еще большей надежности создайте текстовый файл на вашем компьютере и заносите в
|
||||
него все выполняемые команды и ответы системы.
|
||||
|
||||
После того, как вы получили доступ в консоль загрузчика, наберите `help` и проверьте список доступных вам команд. Убедитесь, что в списке команд присутствует `tftp`.
|
||||
### Шаг 6. Сохраните заводскую прошивку.
|
||||
|
||||
Проверьте настройки системного окружения командой `printenv`. Вас интересуют настройки сетевого подключения: `ipaddr`, `netmask` и `serverip`. Первые два параметра задают IP адрес и сетевую маску вашей камеры для подключния в локальную сеть. Третий параметр -- IP адрес сервера TFTP, с которого и на который будут передаваться файлы командой tftp. Установите нужные значения командой `setenv` (используйте IP адреса и сетевую маску соответствующие вашей сети). Сохраните установленные значения командой `saveenv`.
|
||||
После того как вы получили доступ в консоль загрузчика, наберите `help`, чтобы
|
||||
вывести список доступных вам команд. Убедитесь, что в списке команд присутствует
|
||||
`tftp`. Если такая команда есть, то сохранение оригинальной прошивки не должно
|
||||
доставить проблем. Надо только настроить сетевой доступ камеры к вашему серверу
|
||||
TFTP.
|
||||
|
||||
NB! Если в вашем загрузчике нет tftp, вы всё ещё можете сделать копию
|
||||
оригинальной прошивки. [Подробности здесь](help-uboot.md).
|
||||
|
||||
Проверьте настройки системного окружения командой `printenv`. Вас интересуют
|
||||
настройки сетевого подключения: `ipaddr`, `netmask`, `gatewayip` и `serverip`.
|
||||
Первые три параметра задают IP адрес и сетевую маску вашей камеры, IP адрес
|
||||
сетевого шлюза для подключения в локальную сеть. Четвёртый параметр -- IP адрес
|
||||
сервера TFTP, с которого и на который будут передаваться файлы командой `tftp`.
|
||||
Установите нужные значения командой `setenv` (используйте IP адреса и сетевую
|
||||
маску соответствующие вашей сети). Сохраните установленные значения командой
|
||||
`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
|
||||
```
|
||||
|
||||
### Шаг 6. Сохранение заводской прошивки.
|
||||
|
||||
Большинство IP камер сегодня комплектуются чипами Nor или Nand флэш-памяти объемом 8 или 16 мегабайтов. Вы можете увидеть тип и размер установленной на вашей камере микросхемы в выводе лога загрузчика. Там будет что-то вроде этого:
|
||||
Большинство IP камер сегодня комплектуются чипами Nor или Nand флэш-памяти
|
||||
объемом 8 или 16 мегабайтов. Вы можете увидеть тип и размер установленной на
|
||||
вашей камере микросхемы в выводе лога загрузчика. Там будет что-то вроде этого:
|
||||
|
||||
```
|
||||
U-Boot 2010.06-svn (Oct 21 2016 - 11:21:29)
|
||||
|
@ -83,7 +133,8 @@ Block:64KB Chip:16MB Name:"MX25L128XX"
|
|||
SPI Nor total size: 16MB
|
||||
```
|
||||
|
||||
Чтобы сохранить содержимое флэш-памяти в файл, необходимо сначала загрузить это содержимое в оперативную память.
|
||||
Чтобы сохранить содержимое флэш-памяти в файл, необходимо сначала загрузить это
|
||||
содержимое в оперативную память.
|
||||
|
||||
```
|
||||
sf probe 0
|
||||
|
@ -91,12 +142,386 @@ mw.b 0x82000000 ff 0x1000000
|
|||
sf read 0x82000000 0x0 0x1000000
|
||||
```
|
||||
|
||||
Первая из приведенных выше команд инициализирует флэш-память, вторая очищает содержимое региона опертивной памяти с адреса 0x82000000 длиной 0x1000000 байт, подготавливая его для загрузки содержимого флэш-памяти, а затем третья считывает содержимое флэш-памяти начиная с адреса 0x0 и помещает его в подготовленный участок оперативной памяти. Остается только выгрузить данные из оперативной памяти в виде файла на сервер TFTP.
|
||||
Первая из приведенных выше команд инициализирует флэш-память, вторая очищает
|
||||
содержимое региона оперативной памяти с адреса 0x82000000 длиной 0x1000000
|
||||
байтов, подготавливая его для загрузки содержимого флэш-памяти, а затем третья
|
||||
считывает содержимое флэш-памяти начиная с адреса 0x0 и помещает его в
|
||||
подготовленный участок оперативной памяти. Остается только выгрузить данные из
|
||||
оперативной памяти в виде файла на сервер TFTP.
|
||||
|
||||
```
|
||||
tftp 0x82000000 firmware-full.bin 0x1000000
|
||||
```
|
||||
|
||||
### Шаг 7. Установите прошивку OpenIPC.
|
||||
|
||||
Разные модели камер имеют разные наборы компонентов. Самые значимые из них --
|
||||
процессор и сенсор, -- напрямую влияют на качество изображения и набор функций,
|
||||
присущих той или иной камере. Но и казалось бы менее значимые детали могут
|
||||
устанавливать ограничения на возможности камеры и её прошивки. Например, у
|
||||
разных камер могут отличаться установленные микросхемы флэш-памяти. Одни камеры
|
||||
могут иметь флэш-память объемом 16 МБ, в то время как другие - 16 МБ, то и
|
||||
больше. В больший объем флэш-памяти можно поместить большее количество
|
||||
программного кода, позволить камере запускать дополнительные сервисы, которые
|
||||
недоступны на камерах с меньшим объёмом флэш-памяти. Поэтому мы решили
|
||||
собирать два варианта нашей прошивки: базовую версию (_Lite_) для камер с
|
||||
объемом флэш-памяти 8 МБ и расширенную версию (_Ultimate_) с дополнительными
|
||||
возможностями для камер с увеличенным объемом флэш-памяти.
|
||||
|
||||
Процедура установка прошивки на разные модели камер отличается используемыми
|
||||
адресами памяти и разными параметрами, устанавливаемыми в переменные окружения,
|
||||
поэтому прежде чем продолжить, определите, какой именно тип процессора, какая
|
||||
модель сенсора, какой объем памяти установлены на вашей камере.
|
||||
|
||||
Дальше мы описываем процедуру установки прошивки OpenIPC Lite на примере камеры
|
||||
c 8 МБ флэш-памяти. Даже если ваша камера имеет больший объем флэш-памяти, не
|
||||
перелистывайте это текст. Прочитайте его внимательно, чтобы понять принцип и
|
||||
последовательность действий. Конкретные команды, подходящие для вашей камеры,
|
||||
мы дадим во второй части этого раздела.
|
||||
|
||||
##### Часть первая. Пример.
|
||||
|
||||
Для примера мы взяли камеру на процессоре hi3518ev100 с матрицей ov9712 и
|
||||
64 мегабайтами памяти. Подключитесь к камере через порт UART и получите
|
||||
доступ к консоли загрузчика. Установите параметры компонентов в соответствующие
|
||||
переменные окружения:
|
||||
|
||||
```
|
||||
setenv soc hi3518ev100
|
||||
setenv sensor ov9712
|
||||
setenv totalmem 64M
|
||||
```
|
||||
|
||||
Установите переменные окружения для загрузки ядра и корневой файловой системы
|
||||
новой прошивки:
|
||||
|
||||
```
|
||||
setenv osmem 32M
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x82000000 0x50000 0x200000; bootm 0x82000000'
|
||||
```
|
||||
|
||||
Установите переменные окружения для доступа камеры в сеть, где `ethaddr` --
|
||||
оригинальный MAC адрес вашей камеры, `ipaddr` -- IP адрес камеры в локальной
|
||||
сети, `netmask` -- сетевая маска локальной сети, `gatewayip` -- IP адрес
|
||||
маршрутизатора для доступа в сеть, `serverip` -- IP адрес сервера TFTP в
|
||||
локальной сети.
|
||||
|
||||
```
|
||||
setenv ethaddr 00:12:16:00:00:00
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv netmask 255.255.255.0
|
||||
setenv gatewayip 192.168.1.1
|
||||
setenv serverip 192.168.1.254
|
||||
```
|
||||
|
||||
Сохраните сделанные изменения во флэш-память.
|
||||
|
||||
```
|
||||
saveenv
|
||||
```
|
||||
|
||||
Дальше идет собственно сама процедура установки прошивки.
|
||||
|
||||
Сначала очистите регион памяти с адреса 0x82000000 длиной 0x1000000 байтов,
|
||||
записав в него шестнадцатеричное значение 0xff.
|
||||
|
||||
```
|
||||
mw.b 0x82000000 ff 1000000
|
||||
```
|
||||
|
||||
Затем получите с сервера TFTP файл с ядром для камеры и поместите его в память
|
||||
начиная с адреса 0x82000000.
|
||||
|
||||
```
|
||||
tftp 0x82000000 uImage.${soc}
|
||||
```
|
||||
|
||||
Значение `$soc` в имени запрашиваемого файла подставляется из переменных
|
||||
окружения, созданных выше по тексту. В нашем примере с сервера должен скачаться
|
||||
файл с именем `uImage.hi3518ev100`.
|
||||
|
||||
Внимательно читайте сообщения на экране терминала! Если какая-то из команд
|
||||
завершилась ошибкой, выясните, что именно пошло не так. Может вы допустили
|
||||
опечатку? В любом случае не продолжайте процедуру, пока все предыдущие команды
|
||||
не отработают безошибочно. В противном случае вы можете остаться с неработающей
|
||||
камерой!
|
||||
|
||||
Итак, вы убедились, что файл скачан и размещен в оперативной памяти камеры.
|
||||
Теперь вам необходимо записать его во флэш-память. Для этого надо открыть доступ
|
||||
к флэш-памяти:
|
||||
|
||||
```
|
||||
sf probe 0
|
||||
```
|
||||
|
||||
...затем стереть содержимое раздела с адреса 0x50000 длиной 0x200000 байтов:
|
||||
|
||||
```
|
||||
sf erase 0x50000 0x200000
|
||||
```
|
||||
|
||||
...и записать в раздел флэш-памяти, начинающийся с адреса 0x50000, содержимое
|
||||
оперативной памяти с адреса 0x82000000 длиною в размер файла ядра:
|
||||
|
||||
```
|
||||
sf write 0x82000000 0x50000 ${filesize}
|
||||
```
|
||||
|
||||
Далее, надо проделать такую же манипуляцию с образом корневой файловой системы,
|
||||
записав его в следующий раздел флэш-памяти, начинающийся с адреса 0x250000 и
|
||||
имеющий длину 0x500000 байтов (5242880 байтов в десятеричной системе, что
|
||||
соответствует 5120 килобайтов, именно столько мы отвели под раздел rootfs в
|
||||
параметрах bootargs). Порядок действий прост, и его довольно легко запомнить,
|
||||
если понимать, какие именно действия вы производите и зачем: очистить память,
|
||||
скачать файл, открыть доступ к флэш-памяти, стереть содержимое раздела,
|
||||
записать скачанный файл.
|
||||
|
||||
```
|
||||
mw.b 0x82000000 ff 1000000
|
||||
tftp 0x82000000 rootfs.squashfs.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x250000 0x500000
|
||||
sf write 0x82000000 0x250000 ${filesize}
|
||||
```
|
||||
|
||||
После того как оба раздела успешно записаны во флэш-память и сделана необходимые
|
||||
изменения в загрузчике для старта новой прошивки, наступило время перезагрузить
|
||||
камеру. Для этого наберите в консоли следующую команду:
|
||||
|
||||
```
|
||||
reset
|
||||
```
|
||||
|
||||
##### Часть вторая.
|
||||
|
||||
Если вы прочитали первую часть этого раздела (если нет -- идите и прочитайте),
|
||||
то вы уже знаете, какие манипуляции и почему вам необходимо сделать, чтобы
|
||||
установить прошивку OpenIPC. И всё, что вам нужно -- это команды, подходящие
|
||||
для вашей конкретной камеры.
|
||||
|
||||
Вот примеры команд для камер на процессорах [Goke](#goke),
|
||||
[HiSilicon](#hisilicon), [SigmaStar/MStar](#sigmastarmstar), [XM](#xm).
|
||||
|
||||
###### Goke
|
||||
|
||||
Процессоры gk7202v300, gk7205v200, gk7205v300.
|
||||
|
||||
```
|
||||
setenv soc <processor> # gk7202v300, gk7205v200, or gk7205v300.
|
||||
setenv sensor <sensor> #
|
||||
setenv totalmem <memory> # 64M for gk7202v300, gk7205v200, 128M for gk7205v300.
|
||||
|
||||
setenv osmem 32M
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000'
|
||||
|
||||
setenv ethaddr 00:00:00:00:00:00
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv netmask 255.255.255.0
|
||||
setenv gatewayip 192.168.1.1
|
||||
setenv serverip 192.168.1.254
|
||||
|
||||
saveenv
|
||||
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 uImage.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x50000 0x200000
|
||||
sf write 0x42000000 0x50000 ${filesize}
|
||||
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 rootfs.squashfs.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x250000 0x500000
|
||||
sf write 0x42000000 0x250000 ${filesize}
|
||||
|
||||
reset
|
||||
```
|
||||
|
||||
###### HiSilicon
|
||||
|
||||
Процессоры hi3516ev200, hi3516ev300, hi3518ev300.
|
||||
|
||||
```
|
||||
setenv soc <processor> # hi3516ev200, hi3516ev300, or hi3518ev300.
|
||||
setenv sensor <sensor> #
|
||||
setenv totalmem <memory> # 64M for hi3516ev200, hi3518ev300, 128M for hi3516ev300.
|
||||
|
||||
setenv osmem 32M
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000'
|
||||
|
||||
setenv ethaddr 00:00:00:00:00:00
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv netmask 255.255.255.0
|
||||
setenv gatewayip 192.168.1.1
|
||||
setenv serverip 192.168.1.254
|
||||
|
||||
saveenv
|
||||
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 uImage.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x50000 0x200000
|
||||
sf write 0x42000000 0x50000 ${filesize}
|
||||
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 rootfs.squashfs.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x250000 0x500000
|
||||
sf write 0x42000000 0x250000 ${filesize}
|
||||
|
||||
reset
|
||||
```
|
||||
|
||||
##### SigmaStar/MStar
|
||||
|
||||
Процессоры ssc325, ssc335, ssc337.
|
||||
|
||||
```
|
||||
setenv soc <processor> # ssc325, ssc335, or ssc337.
|
||||
setenv sensor <sensor> # gc2053, imx307, or sc3335.
|
||||
setenv totalmem 64M
|
||||
|
||||
setenv osmem 32M
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyS0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init LX_MEM=0x3fe0000 mma_heap=mma_heap_name0,miu=0,sz=0x1C00000 mma_memblock_remove=1 mtdparts=NOR_FLASH:256k(boot),64k(tech),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x21000000 0x50000 0x200000; bootm 0x21000000'
|
||||
|
||||
setenv ethaddr 00:00:00:00:00:00
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv netmask 255.255.255.0
|
||||
setenv gatewayip 192.168.1.1
|
||||
setenv serverip 192.168.1.254
|
||||
|
||||
saveenv
|
||||
|
||||
mw.b 0x21000000 ff 1000000
|
||||
tftpboot 0x21000000 uImage.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x50000 0x200000
|
||||
sf write 0x21000000 0x50000 ${filesize}
|
||||
|
||||
mw.b 0x21000000 ff 1000000
|
||||
tftpboot 0x21000000 rootfs.squashfs.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x250000 0x500000
|
||||
sf write 0x21000000 0x250000 ${filesize}
|
||||
|
||||
reset
|
||||
```
|
||||
|
||||
##### XM
|
||||
|
||||
Процессоры xm510, xm530, xm550.
|
||||
|
||||
```
|
||||
setenv soc <processor> # xm510 for xm510, xm530 for both xm530 and xm550.
|
||||
setenv sensor <sensor> #
|
||||
setenv totalmem <memory> # 32M for xm510, 64M for xm530, 128M for xm550.
|
||||
|
||||
setenv osmem <osmemory> # 18M for xm510, 35M for xm530, 64M for xm550.
|
||||
setenv bootargs 'mem=$(osmem) console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=xm_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'sf probe 0; sf read 0x80007fc0 0x50000 0x200000; bootm 0x80007fc0'
|
||||
|
||||
setenv ethaddr 00:00:00:00:00:00
|
||||
setenv ipaddr 192.168.1.10
|
||||
setenv netmask 255.255.255.0
|
||||
setenv gatewayip 192.168.1.1
|
||||
setenv serverip 192.168.1.254
|
||||
|
||||
saveenv
|
||||
|
||||
mw.b 0x80007fc0 ff 1000000
|
||||
tftp 0x80007fc0 uImage.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x50000 0x200000
|
||||
sf write 0x80007fc0 0x50000 ${filesize}
|
||||
|
||||
mw.b 0x80007fc0 ff 1000000
|
||||
tftp 0x80007fc0 rootfs.squashfs.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x250000 0x500000
|
||||
sf write 0x80007fc 0x250000 ${filesize}
|
||||
|
||||
reset
|
||||
```
|
||||
|
||||
### Шаг 8. Первая загрузка.
|
||||
|
||||
Если все предыдущие шаги выполнены правильно, ваша камера должна стартовать уже
|
||||
с новой прошивкой. Добро пожаловать в OpenIPC!
|
||||
|
||||
После первой загрузки с новой прошивкой вам нужно очистить перекрывающий раздел,
|
||||
запустив для этого программу
|
||||
|
||||
```
|
||||
firstboot
|
||||
```
|
||||
|
||||
### Шаг в сторону.
|
||||
|
||||
Для облегчения последующих процедур обновления прошивки из консоли загрузчика,
|
||||
создайте два макро, записав в них последовательности команд, необходимых для
|
||||
загрузки с сервера TFTP и записи во флэш-память ядра и корневой файловой системы
|
||||
для вашей модели камеры.
|
||||
|
||||
Мы будем использовать `uk` и `ur` для имен макро, что можно расшифровать как
|
||||
`update kernel` и `update rootfs`. Легко запомнить.
|
||||
|
||||
Вы помните, что в примере с установкой прошивки на камеру с hi3518ev100 мы
|
||||
использовали следующие команды для установки ядра:
|
||||
|
||||
```
|
||||
mw.b 0x42000000 ff 1000000
|
||||
tftp 0x42000000 uImage.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x50000 0x200000
|
||||
sf write 0x42000000 0x50000 ${filesize}
|
||||
```
|
||||
|
||||
Чтобы создать макро `uk`, соберите все команды в одну строку, чередуя их
|
||||
точками-с-запятой. Для дополнительной защиты от записи неверных данных во
|
||||
флэш-память в том случае, когда не удалось скачать файл с сервера TFTP,
|
||||
замените точку-с-запятой перед командой `sf probe 0` на оператор логической И
|
||||
(`&&`). В таком случае выполнение макро прервется, если скачивании файла
|
||||
завершилось с ошибкой.
|
||||
|
||||
```
|
||||
fw_setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}'
|
||||
```
|
||||
|
||||
Проделайте то же с командами установки корневой файловой системы
|
||||
|
||||
```
|
||||
mw.b 0x82000000 ff 1000000
|
||||
tftp 0x82000000 rootfs.squashfs.${soc}
|
||||
sf probe 0
|
||||
sf erase 0x250000 0x500000
|
||||
sf write 0x82000000 0x250000 ${filesize}
|
||||
```
|
||||
|
||||
..., записав результат в макро `ur`:
|
||||
|
||||
```
|
||||
fw_setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}'
|
||||
```
|
||||
|
||||
Естественно, для создания своих собственных макро, вы должны использовать
|
||||
команды для вашей конкретной камеры, не бездумно копируя вышеприведенные строки,
|
||||
но используя их как пример и понимая суть совершаемых действий.
|
||||
|
||||
Обратите внимание, что хоть эти команды и создают макро для запуска в консоли
|
||||
загрузчика, выполнить их надо в среде линукса. Таким образом мы избегаем
|
||||
ограничений на количество аргументов в команде `setenv` в некоторых старых
|
||||
версиях загрузчиков.
|
||||
|
||||
Теперь вы сможете запускать прошивку ядра и корневой файловой системы из
|
||||
консоли загрузчика с последующей перезагрузкой камеры командой
|
||||
|
||||
```
|
||||
run uk; run ur; reset
|
||||
```
|
||||
|
||||
_...to be continued._
|
||||
|
||||
|
@ -104,4 +529,6 @@ _...to be continued._
|
|||
** ПРОВЕРИТЬ ВСЕ КОМАНДЫ НА ЖИВОЙ СИСТЕМЕ!***
|
||||
|
||||
|
||||
[logo]: https://cdn.themactep.com/images/logo_openipc.png
|
||||
[logo]: ../images/logo_openipc.png
|
||||
[ftdi]: https://www.google.com/search?q=ftdi+usb+ttl
|
||||
[ttlc]: https://google.com/search?q=logic+level+converter+3.3v+5v
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
## Switcam HS-303
|
||||
|
||||
Общественные заметки по перепрошивке устройств Switcam HS303 (всех версий) в [OpenIPC](https://openipc.org) v1.0 (на базе OpenWrt)..
|
||||
|
||||
Обсуждение проекта и возможностей прошивок (на русском языке) в группе [Telegram](https://t.me/openipc_modding)
|
||||
|
||||
### Сборник наиболее актуальных вопросов и ответов в формате Q&A
|
||||
|
||||
---
|
||||
|
||||
**Q. Какие типы устройств поддерживаются в проекте OpenIPC v1.0 ?**
|
||||
|
||||
**A.** На данный момент полноценно поддерживается Switcam HS-303 (v1). В будущем планируется поддержка устройств v2 и v3.
|
||||
|
||||
-----
|
||||
|
||||
**Q. Где можно взять прошивку для устройства Ростелеком Switcam HS303 (v1) ?**
|
||||
|
||||
**A.** Обсуждение работы этих камер доступно по специальной подписке на [OpenIPC paywall](https://paywall.pw/openipc)
|
||||
|
||||
-----
|
||||
|
||||
**Q. Какой путь до SD карты необходимо указывать в majestic.yaml для прошивки openipc-1.0 ?**
|
||||
|
||||
**A.** /mnt/mmc/%Y/%m/%d/%H.mp4
|
|
@ -1,34 +0,0 @@
|
|||
## Темы для дискуссий
|
||||
|
||||
### План
|
||||
|
||||
* Процессор и имя профиля указываются автоматически при сборке в файле /etc/hostname и доступны постоянно через /rom/..
|
||||
* У плат ..._${platform}_unknown_defconfig hostname не прописан. ..._gk7205v200_fpv_defconfig имеет отличный hostname @p0isk
|
||||
* Добавить ключи в sysupgrade для обновления web-ui и majestic
|
||||
|
||||
### Безопасность
|
||||
|
||||
* При первых входах по SSH и WEB предлагать (настойчиво) пользователю сменить пароль, дабы не нарваться на CVE.
|
||||
* По вебу сделано themactep @p0isk
|
||||
* Реализовать интеграцию авторизации httpd на использование стандартных passwd/shadow из /etc
|
||||
|
||||
### Унификация ядра
|
||||
|
||||
* Включить опции ROOT_NFS и PNP_DHCP во всех ядрах
|
||||
|
||||
### Обновление системы
|
||||
|
||||
#### Ядро:
|
||||
* Добавить через mkimage имя процессора, например Linux-4.9.37-hi3516ev200
|
||||
* Готово @p0isk
|
||||
* По нему проверять и дате проверять пригодность для обновления.
|
||||
* Готово @p0isk
|
||||
|
||||
### Обновление majestic
|
||||
* Обновляются и проверяются только бинарник и укороченный конфиг.
|
||||
* Есть кнопка Восстановить настройки, нужна ли Восстановить стример?
|
||||
* Помимо ETag можно использовать Last-Modified
|
||||
|
||||
#### Ветка разработки
|
||||
* Отображать поле для номера коммита. Если пусто, то берём последний.
|
||||
* Неактуально? @p0isk
|
|
@ -1,32 +0,0 @@
|
|||
## Специализированные настройки для устройств Switcam HS303(v2)
|
||||
|
||||
Обсуждение работы этих камер доступно по специальной подписке на [OpenIPC paywall](https://paywall.pw/openipc)
|
||||
|
||||
### Модифицированный блок из файла /etc/network/interface
|
||||
|
||||
```
|
||||
auto wlan0
|
||||
iface wlan0 inet dhcp
|
||||
pre-up echo 54 > /sys/class/gpio/export
|
||||
pre-up echo out > /sys/class/gpio/gpio54/direction
|
||||
pre-up echo 1 > /sys/class/gpio/gpio54/value
|
||||
pre-up modprobe r8188eu
|
||||
pre-up wpa_passphrase "OpenIPC" "openipc2021" >/tmp/wpa_supplicant.conf
|
||||
pre-up sed -i '2i \\tscan_ssid=1' /tmp/wpa_supplicant.conf
|
||||
pre-up ifconfig wlan0 up
|
||||
pre-up wpa_supplicant -B -Dwext -iwlan0 -c/tmp/wpa_supplicant.conf
|
||||
post-down killall -q wpa_supplicant
|
||||
```
|
||||
|
||||
### Модифицированный блок из файла /etc/majestic.yaml
|
||||
|
||||
```
|
||||
nightMode:
|
||||
enabled: true
|
||||
irSensorPin: 62
|
||||
irSensorPinInvert: true
|
||||
irCutPin1: 2
|
||||
pinSwitchDelayUs: 150
|
||||
backlightPin: 56
|
||||
nightAPI: true
|
||||
```
|
|
@ -0,0 +1,51 @@
|
|||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Программный переход с openipc-1.0 (OpenWrt) на openipc-2.x (Buildroot) 👻
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
Заходим на устройство со старым openipc-1.0 и останавливаем любыми способами
|
||||
максимум сервисов кроме dropbear. Те сервисы которые "оживают" повторно
|
||||
останавливаем по примеру snmp.
|
||||
|
||||
```
|
||||
/etc/init.d/snmpd stop; /etc/init.d/snmpd disable
|
||||
```
|
||||
|
||||
Меняем при помощи команды `fw_setenv` переменную `bootargs`, добавляя туда в
|
||||
свою очередь переменную `init=/init`. Для моей платы строка выглядит вот так,
|
||||
но у вас она может быть другой:
|
||||
|
||||
```
|
||||
fw_setenv bootargs 'console=ttyAMA 0,115200 root=/dev/mtdblock3 init=/init rootfstype=squashfs,jffs2 panic=20 mtdparts=hi_sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
```
|
||||
|
||||
Добавляем новую переменную soc при помощи команды `fw_setenv` указав свой
|
||||
процессор:
|
||||
|
||||
```
|
||||
fw_setenv soc hi3516ev100
|
||||
```
|
||||
|
||||
Прошиваем командой `flashcp` файловую систему, которую предварительно скачали
|
||||
с GitHub аккаунта OpenIPC. В моём случае это раздел `/dev/mtd3`, но могут быть
|
||||
отличия на каких-то старых железках:
|
||||
|
||||
```
|
||||
flashcp -v rootfs.squashfs.hi3516ev100 /dev/mtd3
|
||||
```
|
||||
|
||||
Делаем жесткий ребут плате:
|
||||
|
||||
```
|
||||
reboot -f
|
||||
```
|
||||
|
||||
Загружается **недо**-openipc-2.x с получением адреса по DHCP. После этого
|
||||
выполняем команду для глобального и красивого обновления:
|
||||
|
||||
```
|
||||
sysupgrade -k -r -n
|
||||
```
|
||||
|
||||
Профит!
|
|
@ -1,19 +1,27 @@
|
|||
# OpenIPC Wiki
|
||||
[Оглавление](index.md)
|
||||
|
||||
Прошивка gk7205v300 + IMX335 + XM_XT25F128B
|
||||
-------------------------------------------
|
||||
|
||||
Бутлоадер на пароле, flash залочена.
|
||||
|
||||
1. Скачайте и установите у себя [tftpd сервер](https://github.com/peacepenguin/tftpd64/releases).
|
||||
2. Скачайте и распакуйте в отдельную папку [прошивку](https://github.com/OpenIPC/firmware/releases/download/latest/openipc.gk7205v300-br.tgz), в настройках tftpd укажите путь к папке с прошивкой.
|
||||
3. Найдите в Telegram канале [OpenIPC Users (Ru)][t1] сообщение с тэгом #GkTool, установите на компьютер ToolPlatform-1.0.0-win32-x86_64.zip
|
||||
4. Скачайте u-boot.bin.img_cut из Telegram канала [OpenIPC Users (Ru)][t1].
|
||||
5. Подключите камеру и компьютер через Ethernet к одному роутеру, чтобы компьютер и камера были в одной подсети.
|
||||
6. Подключите к компьютеру USB-TTL 3.3V адаптер, рекомендуется FTDI232. Он встанет на какой-то COM-порт, посмотреть номер COM порта в Диспетчере задач.
|
||||
7. Подключите RX/TX/GND на камере к TX/RX/GND на USB-TTL 3.3V адаптере.
|
||||
8. Скачайте и установите Putty. Выставить режим COM порта на скорость 115200. Зайти на камеру через Putty, по COM порту. Убедится, что провода подключены правильно, видно лог камеры и вводятся символы с клавиатуры.
|
||||
|
||||
__ОБЯЗАТЕЛЬНО СОХРАНИТЕ МАС адрес камеры! В процессе прошивки он сотрётся!__
|
||||
|
||||
### В Putty
|
||||
|
||||
Создать бэкап копированием на свой NFS сервер из ос, перешитой купером:
|
||||
|
||||
```
|
||||
Квест по перепрошивке gk7205v300 + IMX335 + XM_XT25F128B
|
||||
Бутлодер на пароле, flash залочена.
|
||||
|
||||
Скачайте и установите у себя Tftpd сервер: https://github.com/peacepenguin/tftpd64/releases
|
||||
Скачайте и распакуйте в отдельную папку прошивку: https://github.com/OpenIPC/firmware/releases/download/latest/openipc.gk7205v300-br.tgz, в настройках Tftpd укажите путь к папке с прошивкой.
|
||||
Найдите в чате OpenIPC Users (Ru) сообщение с тэгом #GkTool , установите на компьютер ToolPlatform-1.0.0-win32-x86_64.zip
|
||||
Скачайте u-boot.bin.img_cut из чата OpenIPC Users (Ru)
|
||||
Подключите камеру и компьютер через Ethernet к одному роутеру, чтобы компьютер и камера были в одной подсети.
|
||||
Подключите к компьютеру USB-TTL 3.3V адаптер, рекомендуется FTDI232. Он встанет на какой-то COM-порт, посмотреть номер COM порта в Диспетчере задач
|
||||
Подулючите RX/TX/GND на камере к TX/RX/GND на USB-TTL 3.3V адаптере
|
||||
Скачайте и установите Putty. Выставить режим COM порта на скорость 115200. Зайти на камеру через Putty, по COM порту. Убедится,что провода подключены правильно, видно лог камеры и вводятся символы с клавиатуры.
|
||||
ОБЯЗАТЕЛЬНО СОХРАНИТЕ МАС адрес камеры, в процессе прошивки он сотрётся.
|
||||
|
||||
|
||||
1)В Putty: бэкап копированием на свой hls сервер из ос, перешитой купером:
|
||||
mkdir /mnt/Public
|
||||
mount -o nolock 192.168.1.15(тут указывается IP компьютера):/home/pi/nfs_share /mnt/Public
|
||||
cat /dev/mtdblock0 > /mnt/Public/mtd0
|
||||
|
@ -21,48 +29,49 @@ cat /dev/mtdblock1 > /mnt/Public/mtd1
|
|||
cat /dev/mtdblock2 > /mnt/Public/mtd2
|
||||
cat /dev/mtdblock3 > /mnt/Public/mtd3
|
||||
cat /dev/mtdblock4 > /mnt/Public/mtd4
|
||||
выйти из программы Putty и закрыть её.
|
||||
```
|
||||
|
||||
2) прошить xm бут u-boot.bin.img_cut через #gktool (ToolPlatform):
|
||||
В ToolPlatform выбрать COM-порт, на котором висит адаптер, Transfer mode - Serial.
|
||||
Во вкладке Burn Fastboot выбрать Flash type: spi nor, File: файл u-boot.bin.img_cut.
|
||||
Отключить камеру, нажать кнопку Burn, выждать 5 секунд, включить камеру. Начнется прошивка.
|
||||
Перезагрузить камеру по питанию
|
||||
Выйти из программы Putty и закрыть её.
|
||||
|
||||
3) зайти в U-boot через PUTTY, нажимая несколько раз CTRL-C в момент включения камеры (очень быстро нажимать).
|
||||
Ввести команды
|
||||
sf probe 0; sf lock 0;
|
||||
### Прошить xm бут u-boot.bin.img_cut через #gktool (ToolPlatform)
|
||||
|
||||
1. В ToolPlatform выбрать COM-порт, на котором висит адаптер, Transfer mode - Serial.
|
||||
2. Во вкладке Burn Fastboot выбрать Flash type: spi nor, File: файл u-boot.bin.img_cut.
|
||||
3. Отключить камеру, нажать кнопку Burn, выждать 5 секунд, включить камеру. Начнется прошивка.
|
||||
4. Перезагрузить камеру по питанию.
|
||||
5. Зайти в U-boot через PUTTY, нажимая несколько раз CTRL-C в момент включения камеры (очень быстро нажимать).
|
||||
Ввести команды
|
||||
```
|
||||
sf probe 0
|
||||
sf lock 0
|
||||
sf erase 0 1000000
|
||||
|
||||
-----нажать Enter----
|
||||
|
||||
setenv soc gk7205v300
|
||||
setenv osmem 32M
|
||||
setenv totalmem 128M
|
||||
saveenv
|
||||
-----нажать Enter----
|
||||
|
||||
|
||||
setenv gatewayip 192.168.1.1 //вводите ip адрес вашего шлюза/роутера
|
||||
setenv ipaddr 192.168.1.14 //ip адрес камеры
|
||||
setenv netmask 255.255.255.0 //Маска подсети
|
||||
setenv serverip 192.168.1.15 //ip адрес компьютера на котором вы работаете и запущен TFTPD сервер
|
||||
setenv ethaddr 05:68:31:be:da:38 //MAC вашей ip камеры обязательно
|
||||
saveenv
|
||||
|
||||
-----нажать Enter----
|
||||
setenv gatewayip 192.168.1.1 // IP адрес вашего шлюза/роутера
|
||||
setenv ipaddr 192.168.1.14 // IP адрес камеры
|
||||
setenv netmask 255.255.255.0 // маска подсети
|
||||
setenv serverip 192.168.1.15 // IP адрес компьютера на котором запущен TFTP сервер
|
||||
setenv ethaddr 05:68:31:be:da:38 // MAC адрес IP камеры (обязательно!)
|
||||
saveenv
|
||||
|
||||
setenv bootargs 'mem=${osmem:-32M} console=ttyAMA0,115200 panic=20 root=/dev/mtdblock3 rootfstype=squashfs init=/init mtdparts=sfc:256k(boot),64k(env),2048k(kernel),5120k(rootfs),-(rootfs_data)'
|
||||
setenv bootcmd 'setenv setargs setenv bootargs ${bootargs}; run setargs; sf probe 0; sf read 0x42000000 0x50000 0x200000; bootm 0x42000000'
|
||||
setenv uk 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 uImage.${soc} && sf probe 0; sf erase 0x50000 0x200000; sf write 0x42000000 0x50000 ${filesize}'
|
||||
setenv ur 'mw.b 0x42000000 ff 1000000; tftp 0x42000000 rootfs.squashfs.${soc} && sf probe 0; sf erase 0x250000 0x500000; sf write 0x42000000 0x250000 ${filesize}'
|
||||
saveenv
|
||||
-----нажать Enter----
|
||||
|
||||
run uk; run ur; reset
|
||||
-----нажать Enter----
|
||||
|
||||
если перезагрузка не помогла, и в консоли проходят пробелы то повторите 2 шаг, после него камера работает.
|
||||
|
||||
после загрузки, выполнить firstboot в консоли Putty
|
||||
run uk
|
||||
run ur
|
||||
reset
|
||||
```
|
||||
|
||||
Если перезагрузка не помогла, и в консоли проходят пробелы, то повторите 2 шаг.
|
||||
После него камера работает.
|
||||
|
||||
После загрузки, выполнить `firstboot` в консоли Putty.
|
||||
|
||||
[t1]: https://t.me/openipc_modding
|
||||
|
|
Loading…
Reference in New Issue