mirror of https://github.com/OpenIPC/wiki.git
				
				
				
			remove transfer- prefix.
							parent
							
								
									b49408dab1
								
							
						
					
					
						commit
						60408e3ece
					
				
								
									
									
										
											38
										
									
									README.md
									
									
									
									
								
								
							
							
										
											38
										
									
									README.md
									
									
									
									
								|  | @ -1 +1,37 @@ | |||
| # The OpenIPC Wiki | ||||
| OpenIPC Wiki | ||||
| ============ | ||||
| 
 | ||||
| [English](en/index.md) | [Русский](ru/about.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. | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
| [gh-signup]: https://github.com/signup | ||||
|  |  | |||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| How to install HTTPS certificates on your camera | ||||
| ------------------------------------------------ | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| FFMPEG, RTSP and SRT examples | ||||
| ----------------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Boot device with NFS | ||||
| -------------------- | ||||
| 
 | ||||
|  | @ -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)_ | ||||
|  | @ -1,5 +1,8 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| OpenIPC Developers | ||||
| ================== | ||||
| ------------------ | ||||
| 
 | ||||
| [](https://github.com/widgetii) | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Run ipctool | ||||
| ----------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| GPIO Settings | ||||
| ------------- | ||||
| 
 | ||||
|  | @ -1,7 +1,8 @@ | |||
|  | ||||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| 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 | ||||
|  |  | |||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Overview | ||||
| -------- | ||||
| 
 | ||||
								
									
									
										
											92
										
									
									en/index.md
									
									
									
									
								
								
							
							
										
											92
										
									
									en/index.md
									
									
									
									
								|  | @ -1,63 +1,67 @@ | |||
| ![OpenIPC logo][logo] | ||||
| 
 | ||||
| Wiki | ||||
| ==== | ||||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| ## Introduction | ||||
| * [About project](transfer-menu-index.md) | ||||
| * [Supported devices](https://openipc.org/wiki/en/guide-supported-devices) | ||||
| * [Show changelog](transfer-show-changelog.md) | ||||
| - [About project](menu-index.md) | ||||
| - [Supported devices](https://openipc.org/wiki/en/guide-supported-devices) | ||||
| - [Show 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](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.md) | ||||
| * [HiSilicon based boards](transfer-install-hisi.md) | ||||
| * [Novatek based boards](transfer-install-novatek.md) | ||||
| * [SigmaStar based boards](transfer-install-ssc335.md) | ||||
| * [XM510 based boards](transfer-install-xm510.md) | ||||
| * [XM530 based boards](transfer-install-xm530.md) | ||||
| * [Veryld full manual](transfer-old-manual.md) | ||||
| - [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) | ||||
| - [Veryld full manual](old-manual.md) | ||||
| 
 | ||||
| ## Usage | ||||
| * [System features](transfer-system-features.md) | ||||
| * [Majestic streamer](transfer-majestic-streamer.md) | ||||
| * [Microbe WEB interface](transfer-microbe-web.md) | ||||
| * [Upgrade firmware](transfer-sysupgrade.md) | ||||
| * [Image quality tuning](transfer-image-quality-tuning.md) | ||||
| * [Memory tuning](transfer-memory-tuning.md) | ||||
| * [Using ipctool](transfer-example-ipctool.md) | ||||
| * [GPIO settings](transfer-gpio-settings.md) | ||||
| * [ACMEv2](transfer-acmev2.md) | ||||
| * [YouTube streaming](transfer-youtube-streaming.md) | ||||
| * [WiFi XM530](transfer-wifi-xm530.md) | ||||
| - [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.md) | ||||
| - [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.md) | ||||
| * [Boot device with NFS](transfer-dev-nfs-boot.md) | ||||
| * [FFMPEG usage](transfer-dev-ffmpeg-usage.md) | ||||
| * [Kernel configuration for adding new platforms](transfer-integration-kernel.md) | ||||
| - [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) | ||||
| 
 | ||||
| ## 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.md) | ||||
| * [Developers](transfer-developers.md) | ||||
| * [Notes from old sources](transfer-notes-for-resorting.md) | ||||
| - [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://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,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| For XM boards with SoC GK7202V300, GK7205V200, GK7205V300 ONLY!!! | ||||
| ----------------------------------------------------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| For XM boards with Hi35{16Ev200,16Ev300,18Ev300} SoC ONLY!!! | ||||
| ------------------------------------------------------------ | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| For XM vendor boards with NT98562 and NT98566 SoC ONLY!!! | ||||
| --------------------------------------------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| For Anjoy/Brovotech/Gospell/Uniview boards with SSC335 Soc ONLY!!! | ||||
| ------------------------------------------------------------------ | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| For XM vendor boards with XM510 SoC ONLY!!! | ||||
| ------------------------------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| For XM vendor boards with XM530/XM550 SoC ONLY !!! | ||||
| -------------------------------------------------- | ||||
| 
 | ||||
|  | @ -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 | ||||
| ``` | ||||
|  | @ -1,4 +1,7 @@ | |||
| Majestic streamer | ||||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Majestic Streamer | ||||
| ----------------- | ||||
| 
 | ||||
| ### Preamble | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| HiSilicon boards | ||||
| ---------------- | ||||
| 
 | ||||
|  | @ -0,0 +1,2 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| ## Basic information | ||||
| 
 | ||||
| The OpenIPC is an alternative [firmware](https://github.com/OpenIPC) for | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Microbe web interface | ||||
| --------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Installation: how to make OpenIPC running on certain hardware | ||||
| ------------------------------------------------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Introduction | ||||
| ------------ | ||||
| 
 | ||||
|  | @ -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/firmware/wiki/_history) | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Source code | ||||
| ----------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| System features | ||||
| --------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Upgrading firmware | ||||
| ------------------ | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| ToDo | ||||
| ---- | ||||
| 
 | ||||
|  | @ -1,7 +0,0 @@ | |||
| Interesting tricks | ||||
| ------------------ | ||||
| 
 | ||||
| ### Sharing output of a command via web | ||||
| ``` | ||||
| <command> | nc seashells.io 1337 | ||||
| ``` | ||||
|  | @ -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 +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 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| WiFi for XM530 based devices | ||||
| ---------------------------- | ||||
| 
 | ||||
|  | @ -1,3 +1,6 @@ | |||
| # OpenIPC Wiki | ||||
| [Table of Content](index.md) | ||||
| 
 | ||||
| Configuration requirements | ||||
| -------------------------- | ||||
| 
 | ||||
|  | @ -8,16 +11,14 @@ 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. | ||||
| 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"; | ||||
|  | @ -34,24 +35,18 @@ Follow up [Delivering Content via HLS](https://developers.google.com/youtube/v3/ | |||
| - 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), | ||||
|  | @ -70,9 +65,7 @@ Follow up [Delivering Content via HLS](https://developers.google.com/youtube/v3/ | |||
| - 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. | ||||
| 
 | ||||
| 
 | ||||
								
									
									
										
											39
										
									
									index.md
									
									
									
									
								
								
							
							
										
											39
										
									
									index.md
									
									
									
									
								|  | @ -1,39 +0,0 @@ | |||
|  | ||||
| 
 | ||||
| OpenIPC Wiki | ||||
| ============ | ||||
| 
 | ||||
| [English](en/index) | [Русский](ru/index) | ||||
| 
 | ||||
| 
 | ||||
| > "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. | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| 
 | ||||
| [gh-signup]: https://github.com/signup | ||||
|  | @ -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 на своей камере, | ||||
| вам поможет [пошаговая инструкция](/wiki/ru/installation). | ||||
| 
 | ||||
| [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]: ../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 | ||||
| ``` | ||||
								
									
									
										
											132
										
									
									ru/index.md
									
									
									
									
								
								
							
							
										
											132
										
									
									ru/index.md
									
									
									
									
								|  | @ -1,133 +1,23 @@ | |||
| ![OpenIPC logo][logo] | ||||
| # OpenIPC Wiki | ||||
| 
 | ||||
| ## Прошивка OpenIPC -- что это? | ||||
| Оглавление | ||||
| ---------- | ||||
| 
 | ||||
| Прошивка OpenIPC (OpenIPC firmware) -- это коллективный труд многих | ||||
| программистов с целью создания отрытого стека для работы на IP камерах. | ||||
| - [О проекте](about.md) | ||||
| - [Установка. Шаг за шагом.](installation.md) | ||||
| - [Темы для дискуссий разработчиков](discussion.md) | ||||
| - [Программный переход с openipc-1.0 (OpenWrt) на openipc-2.x (Buildroot)](upgrade-from-1.md) | ||||
| - [Вопросы и ответы](faq.md) | ||||
| 
 | ||||
| ### Камеры | ||||
| 
 | ||||
| ## Хочу попробовать. Что для этого требуется? | ||||
| 
 | ||||
| ### 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]: ../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,7 +1,8 @@ | |||
| ![OpenIPC logo][logo] | ||||
| # OpenIPC Wiki | ||||
| [Оглавление](index.md) | ||||
| 
 | ||||
| Установка OpenIPC. Шаг за шагом. | ||||
| ================================ | ||||
| -------------------------------- | ||||
| 
 | ||||
| ### Шаг 1. Определите тип процессора. | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,26 +0,0 @@ | |||
| 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` | ||||
|  | @ -1,43 +0,0 @@ | |||
| ## Темы для дискуссий | ||||
| 
 | ||||
| ### План | ||||
| 
 | ||||
| * Процессор и имя профиля указываются автоматически при сборке в файле | ||||
| * `/etc/hostname` и доступны постоянно через `/rom/..` | ||||
|   * У плат `..._${platform}_unknown_defconfig` hostname не прописан. | ||||
|   * `..._gk7205v200_fpv_defconfig` имеет отличный hostname (@p0isk) | ||||
| * Добавить ключи в `sysupgrade` для обновления web-ui и majestic. | ||||
| 
 | ||||
| ### Безопасность | ||||
| 
 | ||||
| * При первых входах в 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). | ||||
|  | @ -1,34 +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,7 +1,10 @@ | |||
| # OpenIPC Wiki | ||||
| [Оглавление](index.md) | ||||
| 
 | ||||
| Прошивка gk7205v300 + IMX335 + XM_XT25F128B | ||||
| ------------------------------------------- | ||||
| 
 | ||||
| Бутлодер на пароле, flash залочена. | ||||
| Бутлоадер на пароле, flash залочена. | ||||
| 
 | ||||
| 1. Скачайте и установите у себя [tftpd сервер](https://github.com/peacepenguin/tftpd64/releases). | ||||
| 2. Скачайте и распакуйте в отдельную папку [прошивку](https://github.com/OpenIPC/firmware/releases/download/latest/openipc.gk7205v300-br.tgz), в настройках tftpd укажите путь к папке с прошивкой. | ||||
|  | @ -10,7 +13,7 @@ | |||
| 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 порту. Убедится, что провода подключены правильно, видно лог камеры и вводятся символы с клавиатуры. | ||||
| 8. Скачайте и установите Putty. Выставить режим COM порта на скорость 115200. Зайти на камеру через Putty, по COM порту. Убедится, что провода подключены правильно, видно лог камеры и вводятся символы с клавиатуры. | ||||
| 
 | ||||
| __ОБЯЗАТЕЛЬНО СОХРАНИТЕ МАС адрес камеры! В процессе прошивки он сотрётся!__ | ||||
| 
 | ||||
|  | @ -48,11 +51,11 @@ setenv osmem 32M | |||
| setenv totalmem 128M | ||||
| saveenv | ||||
| 
 | ||||
| setenv gatewayip 192.168.1.1      // вводите ip адрес вашего шлюза/роутера | ||||
| setenv ipaddr 192.168.1.14        // ip адрес камеры | ||||
| 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 камеры обязательно | ||||
| 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)' | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue