mirror of https://github.com/OpenIPC/wiki.git
Merge pull request #100 from laurent-martin/master
a few typos in english wiki + markdown fixespull/101/head
commit
64f12c3b59
|
@ -0,0 +1,18 @@
|
||||||
|
RTSP
|
||||||
|
RTMP
|
||||||
|
sysklogd
|
||||||
|
bootloader
|
||||||
|
UART
|
||||||
|
bootable
|
||||||
|
distro
|
||||||
|
stopbit
|
||||||
|
baudrate
|
||||||
|
backfeeding
|
||||||
|
Buildroot
|
||||||
|
GPIO
|
||||||
|
makefile
|
||||||
|
makefiles
|
||||||
|
defconfig
|
||||||
|
rootfs
|
||||||
|
ipctool
|
||||||
|
ffplay
|
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"markdownlint.config": {
|
||||||
|
"default": true,
|
||||||
|
"MD003": false,
|
||||||
|
"MD009": false,
|
||||||
|
"MD007": { "indent": 2 },
|
||||||
|
"MD012": { "maximum": 2},
|
||||||
|
"MD022": false,
|
||||||
|
"MD026": { "punctuation": ",;" },
|
||||||
|
"MD031": false,
|
||||||
|
"MD032": false,
|
||||||
|
"MD034": false,
|
||||||
|
"MD040": false,
|
||||||
|
"MD045": false,
|
||||||
|
"MD050": false,
|
||||||
|
"MD053": false,
|
||||||
|
"no-hard-tabs": false
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
version: "0.2"
|
||||||
|
ignorePaths: []
|
||||||
|
dictionaryDefinitions:
|
||||||
|
- name: technical
|
||||||
|
path: .technical.dict
|
||||||
|
addWords: true
|
||||||
|
dictionaries:
|
||||||
|
- technical
|
||||||
|
words: []
|
||||||
|
import: []
|
||||||
|
enableFiletypes:
|
||||||
|
- shellscript
|
||||||
|
patterns:
|
||||||
|
- name: markdown_code_block
|
||||||
|
pattern: "/^\\s*```(.|\\n)+?^\\s*```/gm"
|
||||||
|
- name: markdown_code_inline
|
||||||
|
pattern: "/`[^`]*`/g"
|
||||||
|
languageSettings:
|
||||||
|
- languageId: markdown
|
||||||
|
ignoreRegExpList:
|
||||||
|
- markdown_code_block
|
||||||
|
- markdown_code_inline
|
||||||
|
- "/[A-Z]*/g"
|
||||||
|
ignoreWords: []
|
|
@ -11,8 +11,9 @@ for that.
|
||||||
### Create an ACME account:
|
### Create an ACME account:
|
||||||
|
|
||||||
__on camera:__
|
__on camera:__
|
||||||
```console
|
|
||||||
$ uacme -y -v new
|
```bash
|
||||||
|
uacme -y -v new
|
||||||
```
|
```
|
||||||
|
|
||||||
### Give your camera a FQDN
|
### Give your camera a FQDN
|
||||||
|
@ -24,20 +25,22 @@ be accessed over HTTPS.
|
||||||
Create an account with any Domain Name Register and register a domain name, e.g. _mysuperduperdomain.com_.
|
Create an account with any Domain Name Register and register a domain name, e.g. _mysuperduperdomain.com_.
|
||||||
|
|
||||||
Set up a DNS zone for that domain name and create a record for your camera in that domain zone.
|
Set up a DNS zone for that domain name and create a record for your camera in that domain zone.
|
||||||
```
|
|
||||||
|
```console
|
||||||
DNS Records
|
DNS Records
|
||||||
mysuperduperdomain.com
|
mysuperduperdomain.com
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
Type Host IP Address TTL
|
Type Host IP Address TTL
|
||||||
A ipc-001 75.123.45.555 600
|
A ipc-001 75.123.45.555 600
|
||||||
```
|
```
|
||||||
|
|
||||||
where `75.123.45.555` is your public IP address.
|
where `75.123.45.555` is your public IP address.
|
||||||
|
|
||||||
### Set up port forwarding if your camera is behind NAT.
|
### Set up port forwarding if your camera is behind NAT.
|
||||||
|
|
||||||
Add port forwarding from port 80 of WAN interface to port 80 of your camera's local IP address.
|
Add port forwarding from port 80 of WAN interface to port 80 of your camera's local IP address.
|
||||||
|
|
||||||
```
|
```console
|
||||||
75.123.45.555:80 => 192.168.1.10:80
|
75.123.45.555:80 => 192.168.1.10:80
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -47,19 +50,22 @@ camera domain name to HTTP proxy.
|
||||||
### Issue a certificate for your domain:
|
### Issue a certificate for your domain:
|
||||||
|
|
||||||
__on camera__:
|
__on camera__:
|
||||||
```console
|
|
||||||
$ uacme -y -v -h /usr/share/uacme/uacme.sh -t EC issue ipc-001.mysuperduperdomain.com
|
```bash
|
||||||
|
uacme -y -v -h /usr/share/uacme/uacme.sh -t EC issue ipc-001.mysuperduperdomain.com
|
||||||
```
|
```
|
||||||
|
|
||||||
### Set up a local DNS record override
|
### Set up a local DNS record override
|
||||||
|
|
||||||
You can add an override record to `/etc/hosts` file on your machine
|
You can add an override record to `/etc/hosts` file on your machine
|
||||||
```
|
|
||||||
|
```bash
|
||||||
echo "192.168.1.10 ipc-001.mysuperduperdomain.com" >> /etc/hosts
|
echo "192.168.1.10 ipc-001.mysuperduperdomain.com" >> /etc/hosts
|
||||||
```
|
```
|
||||||
|
|
||||||
or you could create a record on your local DNS server like [pi.hole](https://pi-hole.net/)
|
or you could create a record on your local DNS server like [pi.hole](https://pi-hole.net/)
|
||||||
so that anyone using that DNS server could have secure access to the camera, too.
|
so that anyone using that DNS server could have secure access to the camera, too.
|
||||||
|
|
||||||
### Restart majestic and test access
|
### Restart majestic and test access
|
||||||
|
|
||||||
Open your favorite web browser and go to https://ipc-001.mysuperduperdomain.com/
|
Open your favorite web browser and go to <https://ipc-001.mysuperduperdomain.com/>
|
||||||
|
|
|
@ -3,6 +3,9 @@ Building from sources
|
||||||
|
|
||||||
Before you start building your own firmware, make a few changes to your system.
|
Before you start building your own firmware, make a few changes to your system.
|
||||||
|
|
||||||
|
General
|
||||||
|
---
|
||||||
|
|
||||||
### Clone OpenIPC Firmware Git repository.
|
### Clone OpenIPC Firmware Git repository.
|
||||||
```
|
```
|
||||||
cd
|
cd
|
||||||
|
@ -13,7 +16,8 @@ cd openipc-firmware
|
||||||
```
|
```
|
||||||
|
|
||||||
### Install required packages.
|
### Install required packages.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sudo make install-deps
|
sudo make install-deps
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -23,12 +27,13 @@ By default, Buildroot stores all downloaded files in `dl/` directory inside
|
||||||
buildroot file tree.
|
buildroot file tree.
|
||||||
|
|
||||||
OpenIPC building script creates a fresh buildroot file tree before every
|
OpenIPC building script creates a fresh buildroot file tree before every
|
||||||
compilation, meaning either deletes all dosnloaded packages or copies them back
|
compilation, meaning either deletes all downloaded packages or copies them back
|
||||||
and forth prior and after creating a fresh setup.
|
and forth prior and after creating a fresh setup.
|
||||||
|
|
||||||
You can set your own storage directory outside of the buildroot tree. Add the
|
You can set your own storage directory outside of the buildroot tree. Add the
|
||||||
following piece of code to `.profile` file in your home directory:
|
following piece of code to `.profile` file in your home directory:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
BR2_DL_DIR="${HOME}/buildroot_dl"
|
BR2_DL_DIR="${HOME}/buildroot_dl"
|
||||||
[ ! -d "$BR2_DL_DIR" ] && mkdir -p $BR2_DL_DIR
|
[ ! -d "$BR2_DL_DIR" ] && mkdir -p $BR2_DL_DIR
|
||||||
export BR2_DL_DIR
|
export BR2_DL_DIR
|
||||||
|
@ -36,7 +41,7 @@ export BR2_DL_DIR
|
||||||
|
|
||||||
Then, source the changes.
|
Then, source the changes.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
source ~/.profile
|
source ~/.profile
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -44,7 +49,8 @@ source ~/.profile
|
||||||
|
|
||||||
Building of a binary firmware for your IP camera is fairly easy. Just clone
|
Building of a binary firmware for your IP camera is fairly easy. Just clone
|
||||||
source code from the repository and run a provided script.
|
source code from the repository and run a provided script.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
./building.sh
|
./building.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -67,14 +73,14 @@ depending on your computer performance and selected target. If you want to
|
||||||
speed up the process, make sure you use a computer with SSD rather than HDD as
|
speed up the process, make sure you use a computer with SSD rather than HDD as
|
||||||
the process of compiling involves a lot of reading and writing. Faster CPU is
|
the process of compiling involves a lot of reading and writing. Faster CPU is
|
||||||
also beneficial, and one cannot have too much RAM, either. You could even rent
|
also beneficial, and one cannot have too much RAM, either. You could even rent
|
||||||
an online virtual server for a handfull of cents to compile your firmware with
|
an online virtual server for a handful of cents to compile your firmware with
|
||||||
the power of cloud computing.
|
the power of cloud computing.
|
||||||
|
|
||||||
The very first run is the longest as the script will download every source
|
The very first run is the longest as the script will download every source
|
||||||
bundle required for successful compilation. Consequent runs will take a little
|
bundle required for successful compilation. Consequent runs will take a little
|
||||||
less time.
|
less time.
|
||||||
|
|
||||||
After the compilation is done, you'll find the final binary kernel and rootfs
|
After the compilation is done, you'll find the final binary kernel and `rootfs`
|
||||||
image in `output/images/` directory.
|
image in `output/images/` directory.
|
||||||
|
|
||||||
```
|
```
|
||||||
|
@ -140,7 +146,7 @@ Making changes and rebuilding a package
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
Once you start tinkering with the packages you'll realize you need a way to
|
Once you start tinkering with the packages you'll realize you need a way to
|
||||||
rebuld only one particular package, without rebuilding the whole project.
|
rebuild only one particular package, without rebuilding the whole project.
|
||||||
Is it even possible? Fortunately, yes. All you have to do after making changes
|
Is it even possible? Fortunately, yes. All you have to do after making changes
|
||||||
to the package configs is to run a couple of commands:
|
to the package configs is to run a couple of commands:
|
||||||
```
|
```
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
> "Improving the world, one patch at a time."
|
> "Improving the world, one patch at a time."
|
||||||
|
|
||||||
|
Guidelines
|
||||||
|
---
|
||||||
|
|
||||||
### This is an open project, so you can help, too.
|
### This is an open project, so you can help, too.
|
||||||
|
|
||||||
We try to collect, organize and share as much information regarding different
|
We try to collect, organize and share as much information regarding different
|
||||||
|
@ -10,7 +13,7 @@ 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
|
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
|
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
|
wiki and let anyone having a GitHub account to make additions and improvements
|
||||||
to the knowledgebase.
|
to the knowledge base.
|
||||||
|
|
||||||
### How to contribute.
|
### How to contribute.
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
FFMPEG, RTSP and SRT examples
|
FFMPEG, RTSP and SRT examples
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
```
|
```bash
|
||||||
# Copy from file to file
|
# Copy from file to file
|
||||||
./ffmpeg -re -i z_input.mp4 -c copy z_output.mp4
|
./ffmpeg -re -i z_input.mp4 -c copy z_output.mp4
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,8 @@ Interesting tricks
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
### Sharing output of a command via web
|
### Sharing output of a command via web
|
||||||
```
|
|
||||||
|
```bash
|
||||||
<command> | nc seashells.io 1337
|
<command> | nc seashells.io 1337
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -108,4 +109,5 @@ index d64ff27..159336e 100644
|
||||||
G.logFileSize = xatou_range(opt_s, 0, INT_MAX/1024) * 1024;
|
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)_
|
_from [sysklogd: add -Z option to adjust message timezones](http://lists.busybox.net/pipermail/busybox/2017-May/085437.html)_
|
||||||
|
|
|
@ -16,7 +16,7 @@ I'm sure there are other cameras out there that are using the same hardware (or
|
||||||
| Flash | 16Mb (XM25QH128A) or 8Mb (XM25QH64A) |
|
| Flash | 16Mb (XM25QH128A) or 8Mb (XM25QH64A) |
|
||||||
| WiFi | RTL8188FU |
|
| WiFi | RTL8188FU |
|
||||||
|
|
||||||
#### OpenIPC status
|
### OpenIPC status
|
||||||
|
|
||||||
| Component | Status |
|
| Component | Status |
|
||||||
|---------------|----------------------------------------------------------|
|
|---------------|----------------------------------------------------------|
|
||||||
|
@ -27,7 +27,7 @@ I'm sure there are other cameras out there that are using the same hardware (or
|
||||||
| IR Cut | Working |
|
| IR Cut | Working |
|
||||||
|
|
||||||
|
|
||||||
#### Hardware details
|
### Hardware details
|
||||||
|
|
||||||
The camera mainboard is identified by "SPEED5S-H1MB_F23".
|
The camera mainboard is identified by "SPEED5S-H1MB_F23".
|
||||||
|
|
||||||
|
@ -80,7 +80,6 @@ At the bottom of the mainboard:
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### GPIOs
|
### GPIOs
|
||||||
|
|
||||||
| nr | Description |
|
| nr | Description |
|
||||||
|
@ -517,7 +516,7 @@ sensors:
|
||||||
## Flashing OpenIPC
|
## Flashing OpenIPC
|
||||||
(soon...)
|
(soon...)
|
||||||
|
|
||||||
#### Boot dump
|
### Boot dump
|
||||||
```
|
```
|
||||||
Uncompress Ok!
|
Uncompress Ok!
|
||||||
|
|
||||||
|
|
|
@ -192,23 +192,27 @@ Extract and copy `rootfs.squashfs.t31` `uImage.t31` to microSD card. Insert micr
|
||||||
|
|
||||||
Power on the camera.
|
Power on the camera.
|
||||||
|
|
||||||
During power on the camera press `Ctrl+C` several times until it shows OpenIPC promt like this `OpenIPC # `
|
During power on the camera press `Ctrl+C` several times until it shows OpenIPC prompt like this `OpenIPC #`
|
||||||
|
|
||||||
Then issue command `run setnor16m`
|
Then issue command `run setnor16m`
|
||||||
|
|
||||||
After you press the Enter key the camera will almost immediately restart and you will have to catch the prompt again.
|
After you press the Enter key the camera will almost immediately restart and you will have to catch the prompt again.
|
||||||
|
|
||||||
Then issue command
|
Then issue command:
|
||||||
|
|
||||||
`mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} uImage.${soc} ; sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}`
|
```bash
|
||||||
|
mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} uImage.${soc} ; sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
|
```
|
||||||
|
|
||||||
and next
|
and next:
|
||||||
|
|
||||||
`mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc} ; sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}`
|
```bash
|
||||||
|
mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc} ; sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}
|
||||||
|
```
|
||||||
|
|
||||||
Output sample:
|
Output sample:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
OpenIPC # mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} uImage.${soc} ; sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
OpenIPC # mw.b ${baseaddr} ff 1000000; fatload mmc 0:1 ${baseaddr} uImage.${soc} ; sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
reading uImage.t31
|
reading uImage.t31
|
||||||
1855437 bytes read in 89 ms (19.9 MiB/s)
|
1855437 bytes read in 89 ms (19.9 MiB/s)
|
||||||
|
@ -236,7 +240,7 @@ SF: 5079040 bytes @ 0x350000 Written: OK
|
||||||
```
|
```
|
||||||
If everything went well, issue the command `reset` and camera should start boot OpenIPC.
|
If everything went well, issue the command `reset` and camera should start boot OpenIPC.
|
||||||
|
|
||||||
```
|
```console
|
||||||
Welcome to OpenIPC
|
Welcome to OpenIPC
|
||||||
openipc-t31 login: root
|
openipc-t31 login: root
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ or less.
|
||||||

|

|
||||||
|
|
||||||
Throw in a silicone mat, a tube of no-clean flux, a can of solder paste,
|
Throw in a silicone mat, a tube of no-clean flux, a can of solder paste,
|
||||||
desoldering copper wick, ceramic tweezers, nonwoven swabs and a bottle
|
de-soldering copper wick, ceramic tweezers, nonwoven swabs and a bottle
|
||||||
of isopropyl alcohol. Many of these things can be already included as
|
of isopropyl alcohol. Many of these things can be already included as
|
||||||
perks with the soldering station.
|
perks with the soldering station.
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,11 @@
|
||||||
Run ipctool
|
Run ipctool
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
```
|
```bash
|
||||||
root@ipcam:/# ipctool
|
root@ipcam:/# ipctool
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
---
|
---
|
||||||
board:
|
board:
|
||||||
vendor: OpenIPC
|
vendor: OpenIPC
|
||||||
|
@ -53,5 +56,4 @@ sensors:
|
||||||
bus: 0
|
bus: 0
|
||||||
type: i2c
|
type: i2c
|
||||||
addr: 0x30
|
addr: 0x30
|
||||||
root@ipcam:/#
|
|
||||||
```
|
```
|
||||||
|
|
57
en/faq.md
57
en/faq.md
|
@ -1,7 +1,7 @@
|
||||||
# OpenIPC Wiki
|
# OpenIPC Wiki
|
||||||
[Table of Content](../README.md)
|
[Table of Content](../README.md)
|
||||||
|
|
||||||
Frequesntly Asked Questions
|
Frequently Asked Questions
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
### How to strip U-Boot Image wrapper header from a binary image
|
### How to strip U-Boot Image wrapper header from a binary image
|
||||||
|
@ -12,11 +12,14 @@ for use with U-Boot image loader and prepended with headers in
|
||||||
The header should be stripped off before you can use such an image
|
The header should be stripped off before you can use such an image
|
||||||
as a raw binary file. Here's how you can strip the first 64 bytes
|
as a raw binary file. Here's how you can strip the first 64 bytes
|
||||||
from a file:
|
from a file:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
dd if=inputfile.img of=outputfile.bin bs=64 skip=1
|
dd if=inputfile.img of=outputfile.bin bs=64 skip=1
|
||||||
```
|
```
|
||||||
|
|
||||||
alternatively
|
alternatively
|
||||||
```
|
|
||||||
|
```bash
|
||||||
tail -c +65 inputfile.img > outputfile.bin
|
tail -c +65 inputfile.img > outputfile.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -31,11 +34,14 @@ impossible to log in or not enough time before rebooting to fix the settings.
|
||||||
Here's how to completely erase the overlay partition in the OpenIPC firmware,
|
Here's how to completely erase the overlay partition in the OpenIPC firmware,
|
||||||
right from the bootloader shell, to bring the camera back to its pristine state:
|
right from the bootloader shell, to bring the camera back to its pristine state:
|
||||||
|
|
||||||
__only for 8MB flash partitioning__
|
> __only for 8MB flash partitioning__
|
||||||
|
|
||||||
```
|
```
|
||||||
sf probe 0; sf erase 0x750000 0xb0000; reset
|
sf probe 0; sf erase 0x750000 0xb0000; reset
|
||||||
```
|
```
|
||||||
__only for 16MB flash partitioning__
|
|
||||||
|
> __only for 16MB flash partitioning__
|
||||||
|
|
||||||
```
|
```
|
||||||
sf probe 0; sf erase 0xd50000 0x2b0000; reset
|
sf probe 0; sf erase 0xd50000 0x2b0000; reset
|
||||||
```
|
```
|
||||||
|
@ -61,11 +67,14 @@ program. After turning on the camera, press Ctrl-C to interrupt the boot
|
||||||
sequence and enter the bootloader shell.
|
sequence and enter the bootloader shell.
|
||||||
|
|
||||||
For a camera with 8MB flash chip, run
|
For a camera with 8MB flash chip, run
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sf probe; sf erase 0x750000 0xb0000; reset
|
sf probe; sf erase 0x750000 0xb0000; reset
|
||||||
```
|
```
|
||||||
|
|
||||||
For a camera with 16MB flash chip, run
|
For a camera with 16MB flash chip, run
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sf probe; sf erase 0xd50000 0x2b0000; reset
|
sf probe; sf erase 0xd50000 0x2b0000; reset
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -93,7 +102,8 @@ If you need to know what is in the command, search for `ipctool` in the
|
||||||
|
|
||||||
This could work if you are lucky, you gained access into Linux shell on stock
|
This could work if you are lucky, you gained access into Linux shell on stock
|
||||||
firmware, and it does support NFS mounting:
|
firmware, and it does support NFS mounting:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
fw=$(mktemp -t)
|
fw=$(mktemp -t)
|
||||||
nfs=$(dirname $fw)/nfs
|
nfs=$(dirname $fw)/nfs
|
||||||
mkdir -p $nfs
|
mkdir -p $nfs
|
||||||
|
@ -101,46 +111,50 @@ mount -t nfs -o tcp,nolock 192.168.1.123:/path/to/nfs/share $nfs
|
||||||
cat /dev/mtdblock? > $fw
|
cat /dev/mtdblock? > $fw
|
||||||
mv $fw ${nfs}/firmware_full.bin
|
mv $fw ${nfs}/firmware_full.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure to use your own IP address and path to the NFS share!
|
Make sure to use your own IP address and path to the NFS share!
|
||||||
|
|
||||||
### How to find original MAC address in a firmware dump
|
### How to find original MAC address in a firmware dump
|
||||||
|
|
||||||
```
|
```bash
|
||||||
strings dumpfile.bin | grep ^ethaddr
|
strings dumpfile.bin | grep ^ethaddr
|
||||||
```
|
```
|
||||||
|
|
||||||
### How to configure ssh session authorization by key
|
### How to configure ssh session authorization by key
|
||||||
|
|
||||||
__On the camera__: Sign in into web UI on port 85 of your camera.
|
__On the camera__: Sign in into web UI on port 85 of your camera.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
passwd
|
passwd
|
||||||
```
|
```
|
||||||
|
|
||||||
__On the desktop__: Copy the public key to the camera by logging in with the
|
__On the desktop__: Copy the public key to the camera by logging in with the
|
||||||
password created above.
|
password created above.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
ssh-copy-id root@192.168.1.66
|
ssh-copy-id root@192.168.1.66
|
||||||
```
|
```
|
||||||
|
|
||||||
__On the camera__: Create a `.ssh` folder in the root user's home directory
|
__On the camera__: Create a `.ssh` folder in the root user's home directory
|
||||||
and copy the file with the authorized keystore into it.
|
and copy the file with the authorized keystore into it.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mkdir ~/.ssh
|
mkdir ~/.ssh
|
||||||
cp /etc/dropbear/authorized_keys ~/.ssh/
|
cp /etc/dropbear/authorized_keys ~/.ssh/
|
||||||
```
|
```
|
||||||
|
|
||||||
__On the desktop__: Open a new session to verify that the authorization is
|
__On the desktop__: Open a new session to verify that the authorization is
|
||||||
passed using the public key not requesting a password.
|
passed using the public key not requesting a password.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
ssh root@192.168.1.66
|
ssh root@192.168.1.66
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Majestic
|
### Majestic
|
||||||
|
|
||||||
#### How to get a memory dump for debugging?
|
#### How to get a memory dump for debugging?
|
||||||
|
|
||||||
Enable and configure Core Dump in the menu Majestic > Majestic Debugging.
|
Enable and configure Core Dump in the menu **Majestic** > **Majestic Debugging**.
|
||||||
|
|
||||||
#### Camera image has a pink tint
|
#### Camera image has a pink tint
|
||||||
|
|
||||||
|
@ -156,16 +170,17 @@ using any tools available in the system: wget, curl, tftp etc.
|
||||||
|
|
||||||
For example, download the ipctool utility to TFTP server on the local network,
|
For example, download the ipctool utility to TFTP server on the local network,
|
||||||
then download it to the camera:
|
then download it to the camera:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
tftp -g -r ipctool -l /tmp/ipctool 192.168.1.1
|
tftp -g -r ipctool -l /tmp/ipctool 192.168.1.1
|
||||||
chmod +x /tmp/ipctool
|
chmod +x /tmp/ipctool
|
||||||
/tmp/ipctool
|
/tmp/ipctool
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If the camera has access to the internet, you can try to mount a public NFS
|
If the camera has access to the internet, you can try to mount a public NFS
|
||||||
sharing and run the utility from it, without downloading to the camera:
|
sharing and run the utility from it, without downloading to the camera:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mkdir -p /tmp/utils
|
mkdir -p /tmp/utils
|
||||||
mount -o nolock 95.217.179.189:/srv/ro /tmp/utils/
|
mount -o nolock 95.217.179.189:/srv/ro /tmp/utils/
|
||||||
/tmp/utils/ipctool
|
/tmp/utils/ipctool
|
||||||
|
@ -193,19 +208,19 @@ No, this is a difficult algorithm, it does not have a sense to run it this way.
|
||||||
Sometimes you need to transfer files to the camera. In addition to the above
|
Sometimes you need to transfer files to the camera. In addition to the above
|
||||||
method using NFS (Network File System) you can use the standard Linux `scp`
|
method using NFS (Network File System) you can use the standard Linux `scp`
|
||||||
command to copy files over an SSH connection:
|
command to copy files over an SSH connection:
|
||||||
```
|
```bash
|
||||||
scp ~/myfile root@192.168.1.65:/tmp/
|
scp ~/myfile root@192.168.1.65:/tmp/
|
||||||
```
|
```
|
||||||
This command will copy `myfile` from the home directory to the `/tmp/`
|
This command will copy `myfile` from the home directory to the `/tmp/`
|
||||||
directory on the camera.
|
directory on the camera.
|
||||||
|
|
||||||
On recent Linux systems the following error may occur:
|
On recent Linux systems the following error may occur:
|
||||||
```
|
```console
|
||||||
sh: /usr/libexec/sftp-server: not found
|
sh: /usr/libexec/sftp-server: not found
|
||||||
scp: Connection closed
|
scp: Connection closed
|
||||||
```
|
```
|
||||||
In this case, add `-O` option to the command:
|
In this case, add `-O` option to the command:
|
||||||
```
|
```bash
|
||||||
scp -O ~/myfile root@192.168.1.65:/tmp/
|
scp -O ~/myfile root@192.168.1.65:/tmp/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ IPC Glossary
|
||||||
- USB - Universal Serial Bus
|
- USB - Universal Serial Bus
|
||||||
- WDR - Wide Dynamic Range
|
- WDR - Wide Dynamic Range
|
||||||
|
|
||||||
#### ffmpeg/ffplay
|
### ffmpeg/ffplay
|
||||||
|
|
||||||
- PTS - Presentation Time Stamp
|
- PTS - Presentation Time Stamp
|
||||||
- fps - Average frame rate in frames per second (`AVStream.avg_frame_rate`)
|
- fps - Average frame rate in frames per second (`AVStream.avg_frame_rate`)
|
||||||
|
|
|
@ -30,7 +30,7 @@ Board specific GPIO settings list
|
||||||
| | | | | | |
|
| | | | | | |
|
||||||
| T31 | 58 | 57 | | 49 | 61i | 53 | 55 | 56 | | 11 | 50 | 62 |
|
| T31 | 58 | 57 | | 49 | 61i | 53 | 55 | 56 | | 11 | 50 | 62 |
|
||||||
|
|
||||||
_i - inverted value_
|
> _i - inverted value_
|
||||||
|
|
||||||
```
|
```
|
||||||
Tested on Gk7205v200:
|
Tested on Gk7205v200:
|
||||||
|
@ -45,7 +45,6 @@ Tested on GK7205V200 for /dev/ttyАМА1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### GSA boards
|
### GSA boards
|
||||||
|
|
||||||
| Processor | IRCUT1 | IRCUT2 | IRSTATUS | IRCTL | USB_ENA |
|
| Processor | IRCUT1 | IRCUT2 | IRSTATUS | IRCTL | USB_ENA |
|
||||||
|
|
|
@ -53,8 +53,6 @@ _If you have another supported device to add, please do it [here][2]._
|
||||||
| Zenotech | HI3516D_MB_V13_RA | HI3516DV100 | OV9689 | GD25Q128CSIG | Yes | No | | No |
|
| Zenotech | HI3516D_MB_V13_RA | HI3516DV100 | OV9689 | GD25Q128CSIG | Yes | No | | No |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Processor | Sensor | Vendor | SKU | Board identification |
|
| Processor | Sensor | Vendor | SKU | Board identification |
|
||||||
|-------------|------------------|------------|--------------|---------------------------------|
|
|-------------|------------------|------------|--------------|---------------------------------|
|
||||||
| Hi3516Cv100 | IMX222_spi_dc | XM | | [BLK18C-0222-38X38_S-V1.03][1] |
|
| Hi3516Cv100 | IMX222_spi_dc | XM | | [BLK18C-0222-38X38_S-V1.03][1] |
|
||||||
|
@ -99,7 +97,6 @@ _If you have another supported device to add, please do it [here][2]._
|
||||||
| SSC338Q | IMX415 | CamHi/Xin | | SSC338Q_38M_1.1 |
|
| SSC338Q | IMX415 | CamHi/Xin | | SSC338Q_38M_1.1 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[1]: https://openipc.org/supported-hardware
|
[1]: https://openipc.org/supported-hardware
|
||||||
[2]: https://github.com/OpenIPC/wiki/blob/master/en/guide-supported-devices.md
|
[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
|
[3]: https://github.com/OpenIPC/wiki/blob/master/en/device-chacon-ipcam-ri01.md
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
# OpenIPC Wiki
|
# OpenIPC Wiki
|
||||||
|
|
||||||
[Table of Content](../README.md)
|
[Table of Content](../README.md)
|
||||||
|
|
||||||
Hardware: IPC Board Manufacturers
|
Hardware: IPC Board Manufacturers
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
* [ACTi](https://www.acti.com/)
|
* [ACTi](https://www.acti.com/)
|
||||||
* [Anjvision](http://www.anjvision.com/), <http://icamra.cn/>
|
* [Anjvision](http://www.anjvision.com/), <http://icamra.cn/>
|
||||||
* [Ansjer](https://www.ansjer.com/)
|
* [Ansjer](https://www.ansjer.com/)
|
||||||
|
@ -52,4 +54,4 @@ Hardware: IPC Board Manufacturers
|
||||||
* [Zenotech](http://www.videopark.com.cn)
|
* [Zenotech](http://www.videopark.com.cn)
|
||||||
* [ZOSI](https://www.zositech.com/)
|
* [ZOSI](https://www.zositech.com/)
|
||||||
|
|
||||||
_th? -- possibly a trading house_
|
> _th? -- possibly a trading house_
|
||||||
|
|
|
@ -26,7 +26,7 @@ With a sharp utility knife, cut the trace on the back of the programmer board.
|
||||||

|

|
||||||
|
|
||||||
Connect 3.3v output leg of the voltage regulator to pin 9 of CH341A IC bridging
|
Connect 3.3v output leg of the voltage regulator to pin 9 of CH341A IC bridging
|
||||||
it to a corresponding trace at a nerby capacitor.
|
it to a corresponding trace at a nearby capacitor.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@ -37,28 +37,35 @@ of CH341A IC through 5V pin connector on the header.
|
||||||
|
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
```
|
```console
|
||||||
libusb: error [get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/001/003, errno=13
|
libusb: error [get_usbfs_fd] libusb couldn't open USB device /dev/bus/usb/001/003, errno=13
|
||||||
libusb: error [get_usbfs_fd] libusb requires write access to USB device nodes
|
libusb: error [get_usbfs_fd] libusb requires write access to USB device nodes
|
||||||
```
|
```
|
||||||
|
|
||||||
If you get an error message like this running a programming software, you need to adjust
|
If you get an error message like this running a programming software, you need to adjust
|
||||||
permissions on the USB port for that device.
|
permissions on the USB port for that device.
|
||||||
|
|
||||||
Create a udev rule file
|
Create a udev rule file
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sudo vi /etc/udev/rules.d/99-ch341a-prog.rules
|
sudo vi /etc/udev/rules.d/99-ch341a-prog.rules
|
||||||
```
|
```
|
||||||
|
|
||||||
add the following content in the file:
|
add the following content in the file:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
# udev rule that sets permissions for CH341A programmer in Linux.
|
# udev rule that sets permissions for CH341A programmer in Linux.
|
||||||
# Put this file in /etc/udev/rules.d and reload udev rules or reboot to install
|
# Put this file in /etc/udev/rules.d and reload udev rules or reboot to install
|
||||||
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5512", MODE="0666"
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5512", MODE="0666"
|
||||||
```
|
```
|
||||||
|
|
||||||
save the file, reload udev
|
save the file, reload udev
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sudo udevadm control --reload-rules
|
sudo udevadm control --reload-rules
|
||||||
sudo udevadm trigger
|
sudo udevadm trigger
|
||||||
```
|
```
|
||||||
|
|
||||||
then unplug the programmer and plug it back in a USB port.
|
then unplug the programmer and plug it back in a USB port.
|
||||||
|
|
||||||
### Software
|
### Software
|
||||||
|
|
112
en/help-uboot.md
112
en/help-uboot.md
|
@ -4,43 +4,51 @@
|
||||||
Help: U-Boot
|
Help: U-Boot
|
||||||
------------
|
------------
|
||||||
|
|
||||||
### Prepare the enviroment
|
### Prepare the environment
|
||||||
In booloader shell, check if `baseaddr` variable is already defined.
|
In booloader shell, check if `baseaddr` variable is already defined.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
printenv baseaddr
|
printenv baseaddr
|
||||||
```
|
```
|
||||||
|
|
||||||
If it is not there, set it yourself.
|
If it is not there, set it yourself.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
# Look up address for your SoC at https://openipc.org/supported-hardware/
|
# Look up address for your SoC at https://openipc.org/supported-hardware/
|
||||||
setenv baseaddr 0x80600000
|
setenv baseaddr 0x80600000
|
||||||
```
|
```
|
||||||
|
|
||||||
Assign the hex size of your flash chip to a variable called `flashsize`.
|
Assign the hex size of your flash chip to a variable called `flashsize`.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
# Use 0x800000 for an 8MB flash chip, 0x1000000 for 16MB.
|
# Use 0x800000 for an 8MB flash chip, 0x1000000 for 16MB.
|
||||||
setenv flashsize 0x800000
|
setenv flashsize 0x800000
|
||||||
```
|
```
|
||||||
|
|
||||||
Save these values into the environment afterwards.
|
Save these values into the environment afterwards.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
saveenv
|
saveenv
|
||||||
```
|
```
|
||||||
|
|
||||||
### Saving original firmware without using TFTP.
|
### Saving original firmware without using TFTP.
|
||||||
|
|
||||||
Before you start, [prepare the enviroment](#prepare-the-enviroment).
|
Before you start, [prepare the environment](#prepare-the-environment).
|
||||||
|
|
||||||
In the terminal program that you use to connect to the UART port, enable saving
|
In the terminal program that you use to connect to the UART port, enable saving
|
||||||
log file of the session. I like to use `screen` for this and my command for
|
log file of the session. I like to use `screen` for this and my command for
|
||||||
connect to the UART adapter with logging the active session to a file would look
|
connect to the UART adapter with logging the active session to a file would look
|
||||||
like this:
|
like this:
|
||||||
```
|
|
||||||
$ screen -L -Logfile fulldump.log /dev/ttyUSB0 115200
|
```bash
|
||||||
|
screen -L -Logfile fulldump.log /dev/ttyUSB0 115200
|
||||||
```
|
```
|
||||||
|
|
||||||
After connecting to the bootloader console, run a set of commands for reading
|
After connecting to the bootloader console, run a set of commands for reading
|
||||||
whole amount of data from flash memory chip into RAM, and then dumping it as
|
whole amount of data from flash memory chip into RAM, and then dumping it as
|
||||||
hexadecimal values into terminal window.
|
hexadecimal values into terminal window.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
mw.b ${baseaddr} 0xff ${flashsize}
|
mw.b ${baseaddr} 0xff ${flashsize}
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf read ${baseaddr} 0x0 ${flashsize}
|
sf read ${baseaddr} 0x0 ${flashsize}
|
||||||
|
@ -58,7 +66,7 @@ Reading of an 8 MB flash memory should result in a ~40 MB log file, and for a
|
||||||
Convert the hex dump into a binary firmware file and use it for further research
|
Convert the hex dump into a binary firmware file and use it for further research
|
||||||
or restoring camera to its pristine state.
|
or restoring camera to its pristine state.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
cat fulldump.log | sed -E "s/^[0-9a-f]{8}\b: //i" | sed -E "s/ {4}.{16}\r?$//" > fulldump.hex
|
cat fulldump.log | sed -E "s/^[0-9a-f]{8}\b: //i" | sed -E "s/ {4}.{16}\r?$//" > fulldump.hex
|
||||||
xxd -revert -plain fulldump.hex fulldump.bin
|
xxd -revert -plain fulldump.hex fulldump.bin
|
||||||
```
|
```
|
||||||
|
@ -67,7 +75,7 @@ Use [binwalk](https://github.com/ReFirmLabs/binwalk) to unpack the binary file.
|
||||||
|
|
||||||
### Saving firmware via SD card.
|
### Saving firmware via SD card.
|
||||||
|
|
||||||
Before you start, [prepare the enviroment](#prepare-the-enviroment).
|
Before you start, [prepare the environment](#prepare-the-environment).
|
||||||
|
|
||||||
Sometimes your camera only has a wireless connection, which does not work
|
Sometimes your camera only has a wireless connection, which does not work
|
||||||
directly from the bootloader. Very often such cameras have a microSD card slot.
|
directly from the bootloader. Very often such cameras have a microSD card slot.
|
||||||
|
@ -94,14 +102,14 @@ blocks of 512 bytes, or 0x10 blocks in hexadecimal representation).
|
||||||
|
|
||||||
Example for 8MB:
|
Example for 8MB:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
mmc dev 0
|
mmc dev 0
|
||||||
mmc erase 0x10 0x4000
|
mmc erase 0x10 0x4000
|
||||||
```
|
```
|
||||||
|
|
||||||
Example for a 16MB:
|
Example for a 16MB:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
mmc dev 0
|
mmc dev 0
|
||||||
mmc erase 0x10 0x8000
|
mmc erase 0x10 0x8000
|
||||||
```
|
```
|
||||||
|
@ -113,7 +121,8 @@ the entire contents to the prepared space in RAM. Then export the copied data
|
||||||
from RAM to the card.
|
from RAM to the card.
|
||||||
|
|
||||||
Example for 8MB:
|
Example for 8MB:
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} ff ${flashsize}
|
mw.b ${baseaddr} ff ${flashsize}
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf read ${baseaddr} 0x0 ${flashsize}
|
sf read ${baseaddr} 0x0 ${flashsize}
|
||||||
|
@ -122,7 +131,8 @@ mmc write ${baseaddr} 0x10 0x4000
|
||||||
```
|
```
|
||||||
|
|
||||||
Another example, for 16MB:
|
Another example, for 16MB:
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} ff ${flashsize}
|
mw.b ${baseaddr} ff ${flashsize}
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf read ${baseaddr} 0x0 ${flashsize}
|
sf read ${baseaddr} 0x0 ${flashsize}
|
||||||
|
@ -134,12 +144,14 @@ Remove the card from the camera and insert it into a computer running Linux.
|
||||||
Use `dd` command to copy data from the card to a binary file on the computer.
|
Use `dd` command to copy data from the card to a binary file on the computer.
|
||||||
|
|
||||||
Example for 8MB:
|
Example for 8MB:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sudo dd bs=512 skip=16 count=16384 if=/dev/sdc of=./fulldump.bin
|
sudo dd bs=512 skip=16 count=16384 if=/dev/sdc of=./fulldump.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
Example for 16MB:
|
Example for 16MB:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sudo dd bs=512 skip=16 count=32768 if=/dev/sdc of=./fulldump.bin
|
sudo dd bs=512 skip=16 count=32768 if=/dev/sdc of=./fulldump.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -154,9 +166,11 @@ into the flash memory. Here's how.
|
||||||
First of all, you'll need to install `lrzsz` package on your desktop computer.
|
First of all, you'll need to install `lrzsz` package on your desktop computer.
|
||||||
I presume it runs Linux and preferrably of a Debian family, that'll be easier
|
I presume it runs Linux and preferrably of a Debian family, that'll be easier
|
||||||
on examples. So, run this command to satisfy prerequisites:
|
on examples. So, run this command to satisfy prerequisites:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
apt install lrzsz
|
apt install lrzsz
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you are ready.
|
Now you are ready.
|
||||||
|
|
||||||
Place the binary file you are going to upload into the same directory where you
|
Place the binary file you are going to upload into the same directory where you
|
||||||
|
@ -177,7 +191,7 @@ memory image right away using `bootm`, or write it into the flash memory.
|
||||||
|
|
||||||
### Flashing full image via serial connection
|
### Flashing full image via serial connection
|
||||||
|
|
||||||
Before you start, [prepare the enviroment](#prepare-the-enviroment).
|
Before you start, [prepare the environment](#prepare-the-environment).
|
||||||
|
|
||||||
Download the full firmware binary for your SoC and flash chip from
|
Download the full firmware binary for your SoC and flash chip from
|
||||||
[OpenIPC web site](https://openipc.org/supported-hardware/) after submitting the
|
[OpenIPC web site](https://openipc.org/supported-hardware/) after submitting the
|
||||||
|
@ -186,20 +200,27 @@ settings form and clicking the link hidden under "Alternative method" button.
|
||||||

|

|
||||||
|
|
||||||
Open `screen` and connect to UART port.
|
Open `screen` and connect to UART port.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
screen /dev/ttyUSB0 115200
|
screen /dev/ttyUSB0 115200
|
||||||
```
|
```
|
||||||
|
|
||||||
Sign in into bootloader shell and run:
|
Sign in into bootloader shell and run:
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} 0xff ${flashsize}
|
mw.b ${baseaddr} 0xff ${flashsize}
|
||||||
loady ${baseaddr}
|
loady ${baseaddr}
|
||||||
```
|
```
|
||||||
|
|
||||||
press "Ctrl-a" followed by ":", then type
|
press "Ctrl-a" followed by ":", then type
|
||||||
```
|
|
||||||
|
```bash
|
||||||
exec !! sz --ymodem fullimage.bin
|
exec !! sz --ymodem fullimage.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
after the image is loaded, continue
|
after the image is loaded, continue
|
||||||
```
|
|
||||||
|
```shell
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf erase 0x0 ${flashsize}
|
sf erase 0x0 ${flashsize}
|
||||||
sf write ${baseaddr} 0x0 ${filesize}
|
sf write ${baseaddr} 0x0 ${filesize}
|
||||||
|
@ -207,26 +228,27 @@ sf write ${baseaddr} 0x0 ${filesize}
|
||||||
|
|
||||||
### Flashing full image from TFTP
|
### Flashing full image from TFTP
|
||||||
|
|
||||||
Before you start, [prepare the enviroment](#prepare-the-enviroment).
|
Before you start, [prepare the environment](#prepare-the-environment).
|
||||||
|
|
||||||
Download [full image binary for your SoC](https://openipc.org/supported-hardware/)
|
Download [full image binary for your SoC](https://openipc.org/supported-hardware/)
|
||||||
and place it in the root directory of your local FTFP server.
|
and place it in the root directory of your local TFTP server.
|
||||||
|
|
||||||
Start the session and boot into the bootloader console interrupting booting
|
Start the session and boot into the bootloader console interrupting booting
|
||||||
routine with a key combo. When in the console, set up parameters of your local
|
routine with a key combo. When in the console, set up parameters of your local
|
||||||
network, if needed.
|
network, if needed.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
setenv ipaddr 192.168.1.10
|
setenv ipaddr 192.168.1.10
|
||||||
setenv netmask 255.255.255.0
|
setenv netmask 255.255.255.0
|
||||||
setenv gatewayip 192.168.1.1
|
setenv gatewayip 192.168.1.1
|
||||||
setenv serverip 192.168.1.254
|
setenv serverip 192.168.1.254
|
||||||
```
|
```
|
||||||
|
|
||||||
Use the following commands to reflash your camera with the full image:
|
Use the following commands to re-flash your camera with the full image:
|
||||||
|
|
||||||
Example for 8MB:
|
Example for 8MB:
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} 0xff ${flashsize}
|
mw.b ${baseaddr} 0xff ${flashsize}
|
||||||
tftpboot ${baseaddr} openipc-${soc}-lite-8mb.bin
|
tftpboot ${baseaddr} openipc-${soc}-lite-8mb.bin
|
||||||
sf probe 0; sf erase 0x0 ${flashsize}; sf write ${baseaddr} 0x0 ${filesize}
|
sf probe 0; sf erase 0x0 ${flashsize}; sf write ${baseaddr} 0x0 ${filesize}
|
||||||
|
@ -234,31 +256,34 @@ reset
|
||||||
```
|
```
|
||||||
|
|
||||||
Example for 16MB:
|
Example for 16MB:
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} 0xff ${flashsize}
|
mw.b ${baseaddr} 0xff ${flashsize}
|
||||||
tftpboot ${baseaddr} openipc-${soc}-ultimate-16mb.bin
|
tftpboot ${baseaddr} openipc-${soc}-ultimate-16mb.bin
|
||||||
sf probe 0; sf erase 0x0 ${flashsize}; sf write ${baseaddr} 0x0 ${filesize}
|
sf probe 0; sf erase 0x0 ${flashsize}; sf write ${baseaddr} 0x0 ${filesize}
|
||||||
reset
|
reset
|
||||||
```
|
```
|
||||||
|
|
||||||
At the first boot, sign in into the bootloader shell once again and remap
|
At the first boot, sign in into the bootloader shell once again and remap
|
||||||
partitioning running `run setnor16m` command.
|
partitioning running `run setnor16m` command.
|
||||||
|
|
||||||
|
|
||||||
### Reading binary image from SD card.
|
### Reading binary image from SD card.
|
||||||
|
|
||||||
Before you start, [prepare the enviroment](#prepare-the-enviroment).
|
Before you start, [prepare the environment](#prepare-the-environment).
|
||||||
|
|
||||||
If your camera supports SD card and you have `fatload` command in bootloader,
|
If your camera supports SD card and you have `fatload` command in bootloader,
|
||||||
then you can read firmware binary files from an SD card.
|
then you can read firmware binary files from an SD card.
|
||||||
|
|
||||||
First, prepage the card: format it into FAT filesystem and place bootloader,
|
First, prepare the card: format it into FAT filesystem and place bootloader,
|
||||||
kernel, and rootsf binary files there. Insert the card into camera and boot
|
kernel, and rootfs binary files there. Insert the card into camera and boot
|
||||||
into bootloader console.
|
into bootloader console.
|
||||||
|
|
||||||
Check that you have access to the card.
|
Check that you have access to the card.
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mmc rescan
|
mmc rescan
|
||||||
```
|
```
|
||||||
|
|
||||||
Then unlock access to flash memory and start writing content of the files from
|
Then unlock access to flash memory and start writing content of the files from
|
||||||
the card into the flash memory.
|
the card into the flash memory.
|
||||||
|
|
||||||
|
@ -267,7 +292,8 @@ necessarily match those for your particular camera. Consult documentation, or
|
||||||
seek help on [our Telegram channel][telegram].
|
seek help on [our Telegram channel][telegram].
|
||||||
|
|
||||||
Flash bootloader.
|
Flash bootloader.
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} 0xff 0x50000
|
mw.b ${baseaddr} 0xff 0x50000
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf erase 0x0 0x50000
|
sf erase 0x0 0x50000
|
||||||
|
@ -276,7 +302,8 @@ sf write ${baseaddr} 0x0 ${filesize}
|
||||||
```
|
```
|
||||||
|
|
||||||
Flash kernel.
|
Flash kernel.
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} 0xff 0x200000
|
mw.b ${baseaddr} 0xff 0x200000
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf erase 0x50000 0x200000
|
sf erase 0x50000 0x200000
|
||||||
|
@ -285,7 +312,8 @@ sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
```
|
```
|
||||||
|
|
||||||
Flash root filesystem.
|
Flash root filesystem.
|
||||||
```
|
|
||||||
|
```shell
|
||||||
mw.b ${baseaddr} 0xff 0x500000
|
mw.b ${baseaddr} 0xff 0x500000
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf erase 0x250000 0x500000
|
sf erase 0x250000 0x500000
|
||||||
|
@ -352,23 +380,23 @@ __DO NOT FORGET TO MAKE A BACKUP OF YOUR ORIGINAL FIRMWARE!__
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
Before you start, [prepare the enviroment](#prepare-the-enviroment).
|
Before you start, [prepare the environment](#prepare-the-environment).
|
||||||
|
|
||||||
If you get `Too many args` error while trying to set an environment variable,
|
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.
|
try to do that from within Linux using `fw_setenv` instead of `setenv` in U-boot.
|
||||||
|
|
||||||
__U-boot console:__
|
__U-boot console:__
|
||||||
```
|
|
||||||
|
```shell
|
||||||
hisilicon # setenv uk 'mw.b ${baseaddr} 0xff ${flashsize}; tftp ${baseaddr} uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}'
|
hisilicon # setenv uk 'mw.b ${baseaddr} 0xff ${flashsize}; tftp ${baseaddr} uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}'
|
||||||
** Too many args (max. 16) **
|
** Too many args (max. 16) **
|
||||||
```
|
```
|
||||||
|
|
||||||
__OpenIPC Linux:__
|
__OpenIPC Linux:__
|
||||||
```
|
|
||||||
|
```shell
|
||||||
root@openipc-hi3518ev100:~# fw_setenv uk 'mw.b ${baseaddr} 0xff ${flashsize}; tftp ${baseaddr} uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}'
|
root@openipc-hi3518ev100:~# fw_setenv uk 'mw.b ${baseaddr} 0xff ${flashsize}; tftp ${baseaddr} uImage.${soc}; sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[burn]: https://github.com/OpenIPC/burn
|
[burn]: https://github.com/OpenIPC/burn
|
||||||
[telegram]: https://t.me/OpenIPC
|
[telegram]: https://t.me/OpenIPC
|
||||||
|
|
|
@ -7,35 +7,35 @@ Help: Web UI
|
||||||
### Updating Web UI from Web UI.
|
### Updating Web UI from Web UI.
|
||||||
|
|
||||||
In some cases, especially if you think that something does not work as it should,
|
In some cases, especially if you think that something does not work as it should,
|
||||||
try to update Web UI once more, overriding version checking for the second update.
|
try to update Web UI once more, overriding version checking for the second update.
|
||||||
This may be required because of some changes we have possibly made to the updating
|
This may be required because of some changes we have possibly made to the updating
|
||||||
routine, thus you shall retrieve the updating routine code with the first update,
|
routine, thus you shall retrieve the updating routine code with the first update,
|
||||||
and then use it for the consecutive update.
|
and then use it for the consecutive update.
|
||||||
|
|
||||||
### Web UI Development.
|
### Web UI Development.
|
||||||
|
|
||||||
If you want to help us with developing of the web interface for our
|
If you want to help us with developing of the web interface for our
|
||||||
firmware, here is what you need to know beforehands. Cameras are very
|
firmware, here is what you need to know beforehands. Cameras are very
|
||||||
limited in terms of space and performance. The only available option
|
limited in terms of space and performance. The only available option
|
||||||
we have now in the firmware which is more or less suitable for dynamic
|
we have now in the firmware which is more or less suitable for dynamic
|
||||||
generating of HTML pages is `haserl`, a fancy cousin of `ash` bent for
|
generating of HTML pages is `haserl`, a fancy cousin of `ash` bent for
|
||||||
serving as a CGI wrapper. Did I say `ash`? Right, because we don't have
|
serving as a CGI wrapper. Did I say `ash`? Right, because we don't have
|
||||||
`bash`, `tcsh`, `zsh` in our Linux. Ash it is. As in A shell, full name
|
`bash`, `tcsh`, `zsh` in our Linux. Ash it is. As in A shell, full name
|
||||||
Almquist shell. Tiny, lightweight, and kinda limited. System is limited,
|
Almquist shell. Tiny, lightweight, and kinda limited. System is limited,
|
||||||
too -- in most parts it is `busybox`. So, if you still feel comfortable
|
too -- in most parts it is `busybox`. So, if you still feel comfortable
|
||||||
to make your hands dirty with a very 80s style of web development then
|
to make your hands dirty with a very 80s style of web development then
|
||||||
welcome aboard.
|
welcome aboard.
|
||||||
|
|
||||||
Recent interface is built around [Bootstrap](https://getbootstrap.com/)
|
Recent interface is built around [Bootstrap](https://getbootstrap.com/)
|
||||||
CSS framework which is a little overkill for the purpouse but allowed us
|
CSS framework which is a little overkill for the purpose but allowed us
|
||||||
to fasttrack from the original microbe web to what we have now. We would
|
to fast-track from the original microbe web to what we have now. We would
|
||||||
like to slim down the original Bootstrap bundle and create a custom pack
|
like to slim down the original Bootstrap bundle and create a custom pack
|
||||||
with only the features we use. If you posses such a skill, come and work
|
with only the features we use. If you posses such a skill, come and work
|
||||||
with us.
|
with us.
|
||||||
|
|
||||||
Also, we're considering the possibility of switching to a client-side
|
Also, we're considering the possibility of switching to a client-side
|
||||||
web interface builder, leaving only data-tossing to the server. Vue.js
|
web interface builder, leaving only data-tossing to the server. Vue.js
|
||||||
or similar. Have something to add here? Spill it out.
|
or similar. Have something to add here? Spill it out.
|
||||||
|
|
||||||
Any other ideas? We would like to listen them, too.
|
Any other ideas? We would like to listen them, too.
|
||||||
|
|
||||||
|
@ -44,25 +44,26 @@ Any other ideas? We would like to listen them, too.
|
||||||
To start improving the web interface, clone its GitHub repo locally and
|
To start improving the web interface, clone its GitHub repo locally and
|
||||||
set up an NFS mount on your camera to the root directory of the local copy:
|
set up an NFS mount on your camera to the root directory of the local copy:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
mkdir -p /tmp/dev
|
mkdir -p /tmp/dev
|
||||||
mount -t nfs -o nolock,tcp 192.168.1.123:/full/path/to/web/files /tmp/dev
|
mount -t nfs -o nolock,tcp 192.168.1.123:/full/path/to/web/files /tmp/dev
|
||||||
```
|
```
|
||||||
_(replace 192.168.1.123 and /full/path/to/web/files with your own IP and path)_
|
|
||||||
|
> _(replace 192.168.1.123 and /full/path/to/web/files with your own IP and path)_
|
||||||
|
|
||||||
Then start another instance of httpd daemon to serve your version of Web UI
|
Then start another instance of httpd daemon to serve your version of Web UI
|
||||||
on another port of the camera, say port 86:
|
on another port of the camera, say port 86:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
httpd -p 86 -h "/tmp/dev/var/www" -c /dev/null
|
httpd -p 86 -h "/tmp/dev/var/www" -c /dev/null
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can work on Web UI source code in your favorite IDE or a text editor
|
Now you can work on Web UI source code in your favorite IDE or a text editor
|
||||||
on your workstation, and immediately test the changes with a web browser
|
on your workstation, and immediately test the changes with a web browser
|
||||||
pointed to port 86 on the camera. _(E.g. http://192.168.1.10:86/)_
|
pointed to port 86 on the camera. _(E.g. http://192.168.1.10:86/)_
|
||||||
|
|
||||||
Remember that you substitute only web server contents, but there are also
|
Remember that you substitute only web server contents, but there are also
|
||||||
supporting scripts residing outside web directory. These scripts might require
|
supporting scripts residing outside web directory. These scripts might require
|
||||||
updating on camera in case you make changes to them, as well. To update a
|
updating on camera in case you make changes to them, as well. To update a
|
||||||
script on camera, open ssh session to the camera and copy updated version of
|
script on camera, open ssh session to the camera and copy updated version of
|
||||||
the script from `/tmp/dev/usr/sbin/` to `/usr/sbin/`.
|
the script from `/tmp/dev/usr/sbin/` to `/usr/sbin/`.
|
||||||
|
|
|
@ -13,7 +13,7 @@ Copy Server URL and Stream key from Settings.
|
||||||
|
|
||||||
Open `/etc/majestic.yaml` on camera and add the URL and the key into `outgoing` section of the config.
|
Open `/etc/majestic.yaml` on camera and add the URL and the key into `outgoing` section of the config.
|
||||||
|
|
||||||
**Note:** Dont forget add `-` sign before paramethers!
|
**Note:** Dont forget add `-` sign before parameters!
|
||||||
|
|
||||||
**Note:** `outgoing` section may affect another section addition. Remember it!
|
**Note:** `outgoing` section may affect another section addition. Remember it!
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ For XM vendor boards with NT98562 and NT98566 SoC ONLY!!!
|
||||||
|
|
||||||
### Initial device firmware update
|
### Initial device firmware update
|
||||||
|
|
||||||
**This section will be completed at the end of the research**
|
> **This section will be completed at the end of the research**
|
||||||
|
|
||||||
```
|
```
|
||||||
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
run uk; run ur; reset # Flash kernel, rootfs and reboot device
|
||||||
|
@ -21,7 +21,7 @@ run uk; run ur; reset
|
||||||
### Notes
|
### Notes
|
||||||
|
|
||||||
After you have finished flashing new firmware, please run `firstboot` command
|
After you have finished flashing new firmware, please run `firstboot` command
|
||||||
to format jffs2 partition used to store settings.
|
to format `jffs2` partition used to store settings.
|
||||||
|
|
||||||
### Known issues
|
### Known issues
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ run uk; run ur; reset
|
||||||
### Notes
|
### Notes
|
||||||
|
|
||||||
After you have finished flashing new firmware, please run `firstboot` command
|
After you have finished flashing new firmware, please run `firstboot` command
|
||||||
to format jffs2 partition used to store settings.
|
to format `jffs2` partition used to store settings.
|
||||||
|
|
||||||
|
|
||||||
### Other info
|
### Other info
|
||||||
|
|
|
@ -13,7 +13,7 @@ Follow the [Docker installation instructions][1].
|
||||||
|
|
||||||
### Create Docker image files
|
### Create Docker image files
|
||||||
Create a file named `Dockerfile` with the following content:
|
Create a file named `Dockerfile` with the following content:
|
||||||
```
|
```dockerfile
|
||||||
FROM debian:latest
|
FROM debian:latest
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
@ -28,7 +28,7 @@ in.tftpd --foreground --create --secure --ipv4 --verbose --user tftp \
|
||||||
|
|
||||||
In the same directory, create a file named `docker-compose.yml` with the
|
In the same directory, create a file named `docker-compose.yml` with the
|
||||||
following content:
|
following content:
|
||||||
``` yaml
|
```yaml
|
||||||
version: '3.9'
|
version: '3.9'
|
||||||
services:
|
services:
|
||||||
tftpd-hpa:
|
tftpd-hpa:
|
||||||
|
@ -41,7 +41,7 @@ services:
|
||||||
```
|
```
|
||||||
|
|
||||||
### Start the container
|
### Start the container
|
||||||
```
|
```bash
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
Docker will build an image if necessary and launch it in the background. During
|
Docker will build an image if necessary and launch it in the background. During
|
||||||
|
@ -49,11 +49,11 @@ building the container, Docker will also create `tftp/` subdirectory from which
|
||||||
your files will be served. Docker acts as user `systemd-network` from group
|
your files will be served. Docker acts as user `systemd-network` from group
|
||||||
`input` to access that directory. If you want to allow saving files sent via
|
`input` to access that directory. If you want to allow saving files sent via
|
||||||
TFTP to your machine you'll need to change ownership on that directory:
|
TFTP to your machine you'll need to change ownership on that directory:
|
||||||
```
|
```bash
|
||||||
sudo chown systemd-network:input ./tftp
|
sudo chown systemd-network:input ./tftp
|
||||||
```
|
```
|
||||||
Alternatively, you may loosen permissions on that directory:
|
Alternatively, you may loosen permissions on that directory:
|
||||||
```
|
```bash
|
||||||
sudo chmod 777 ./tftp
|
sudo chmod 777 ./tftp
|
||||||
```
|
```
|
||||||
Use your computer's IP address to access the TFTP server from other machines on
|
Use your computer's IP address to access the TFTP server from other machines on
|
||||||
|
@ -61,7 +61,7 @@ your local network.
|
||||||
|
|
||||||
### Stop the container
|
### Stop the container
|
||||||
To stop the container and free up memory just run
|
To stop the container and free up memory just run
|
||||||
```
|
```bash
|
||||||
docker-compose stop
|
docker-compose stop
|
||||||
```
|
```
|
||||||
The container will be saved on your computer until the next time you need to
|
The container will be saved on your computer until the next time you need to
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
# OpenIPC Wiki
|
# OpenIPC Wiki
|
||||||
|
|
||||||
[Table of Content](../README.md)
|
[Table of Content](../README.md)
|
||||||
|
|
||||||
Available Installation Methods
|
Available Installation Methods
|
||||||
|
@ -26,7 +27,7 @@ OpenIPC firmware installation using Coupler.
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
|
|
||||||
Instructions for using [Coupler](https://github.com/openipc/coupler/) can be
|
Instructions for using [Coupler](https://github.com/openipc/coupler/) can be
|
||||||
found in [the project's documenation](https://github.com/openipc/coupler/).
|
found in [the project's documentation](https://github.com/openipc/coupler/).
|
||||||
|
|
||||||
OpenIPC firmware installation via TFTP and UART, step by step.
|
OpenIPC firmware installation via TFTP and UART, step by step.
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
@ -34,7 +35,7 @@ OpenIPC firmware installation via TFTP and UART, step by step.
|
||||||
### Step 1. Determine the System on Chip.
|
### Step 1. Determine the System on Chip.
|
||||||
|
|
||||||
The SoC includes the CPU core of the camera, as well as all the necessary
|
The SoC includes the CPU core of the camera, as well as all the necessary
|
||||||
periperhals such as the camera and network interfaces. For various reasons
|
peripherals such as the camera and network interfaces. For various reasons
|
||||||
(including the limited onboard storage space on most IP Cameras), the OpenIPC
|
(including the limited onboard storage space on most IP Cameras), the OpenIPC
|
||||||
project currently builds separate firmware binaries for each SoC model. **You
|
project currently builds separate firmware binaries for each SoC model. **You
|
||||||
must identify the SoC which your camera uses**, so that you can use the correct
|
must identify the SoC which your camera uses**, so that you can use the correct
|
||||||
|
@ -65,7 +66,7 @@ retrieving bootable images from a designated boot server on the local network.
|
||||||
most likely already exists in distro's repo, and you only need to install it and
|
most likely already exists in distro's repo, and you only need to install it and
|
||||||
set it up.
|
set it up.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
sudo apt install tftpd-hpa
|
sudo apt install tftpd-hpa
|
||||||
sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa
|
sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa
|
||||||
sudo systemctl restart tftpd-hpa.service
|
sudo systemctl restart tftpd-hpa.service
|
||||||
|
@ -114,27 +115,37 @@ application and connect to your adapter. Set your terminal settings to
|
||||||
Here's a few command lines for various terminal programs with session logging. Pick your poison.
|
Here's a few command lines for various terminal programs with session logging. Pick your poison.
|
||||||
|
|
||||||
#### screen
|
#### screen
|
||||||
|
|
||||||
Start a sessions with
|
Start a sessions with
|
||||||
```
|
|
||||||
|
```bash
|
||||||
screen -L -Logfile ipcam-$(date +%s).log /dev/ttyUSB0 115200
|
screen -L -Logfile ipcam-$(date +%s).log /dev/ttyUSB0 115200
|
||||||
```
|
```
|
||||||
|
|
||||||
Use `Ctrl-a` followed by `\` to exit the session.
|
Use `Ctrl-a` followed by `\` to exit the session.
|
||||||
|
|
||||||
#### minicom
|
#### `minicom`
|
||||||
|
|
||||||
Start a sessions with
|
Start a sessions with
|
||||||
```
|
|
||||||
|
```bash
|
||||||
minicom -b 115200 -8 --capturefile=ipcam-$(date +%s).log --color=on -D /dev/ttyUSB0
|
minicom -b 115200 -8 --capturefile=ipcam-$(date +%s).log --color=on -D /dev/ttyUSB0
|
||||||
```
|
```
|
||||||
|
|
||||||
Use `Ctrl-a` followed by `x` to exit the session.
|
Use `Ctrl-a` followed by `x` to exit the session.
|
||||||
|
|
||||||
#### picocom
|
#### `picocom`
|
||||||
|
|
||||||
Start a sessions with
|
Start a sessions with
|
||||||
```
|
|
||||||
|
```bash
|
||||||
picocom -b 115200 --databits 8 --parity n --stopbits 1 --flow n --logfile=ipcam-$(date +%s).log /dev/ttyUSB0
|
picocom -b 115200 --databits 8 --parity n --stopbits 1 --flow n --logfile=ipcam-$(date +%s).log /dev/ttyUSB0
|
||||||
```
|
```
|
||||||
|
|
||||||
Use `Ctrl-a` followed by `Ctrl-x` to exit the session.
|
Use `Ctrl-a` followed by `Ctrl-x` to exit the session.
|
||||||
|
|
||||||
#### PuTTY
|
#### PuTTY
|
||||||
|
|
||||||
If you opt for a GUI terminal, namely [PuTTY](https://www.putty.org/), this is how it should look like:
|
If you opt for a GUI terminal, namely [PuTTY](https://www.putty.org/), this is how it should look like:
|
||||||
|
|
||||||

|

|
||||||
|
@ -187,7 +198,7 @@ Most IP cameras nowadays are equipped with 8 or 16 MB NOR or NAND flash memory.
|
||||||
You can check the type and size of the chip installed on of your camera in the
|
You can check the type and size of the chip installed on of your camera in the
|
||||||
bootloader log output. You'll see something like this:
|
bootloader log output. You'll see something like this:
|
||||||
|
|
||||||
```
|
```console
|
||||||
U-Boot 2010.06-svn (Oct 21 2016 - 11:21:29)
|
U-Boot 2010.06-svn (Oct 21 2016 - 11:21:29)
|
||||||
|
|
||||||
Check Flash Memory Controller v100 ... Found
|
Check Flash Memory Controller v100 ... Found
|
||||||
|
@ -199,7 +210,7 @@ SPI Nor total size: 16MB
|
||||||
|
|
||||||
Another example:
|
Another example:
|
||||||
|
|
||||||
```
|
```console
|
||||||
U-Boot 2013.07 (Feb 27 2019 - 02:05:08)
|
U-Boot 2013.07 (Feb 27 2019 - 02:05:08)
|
||||||
|
|
||||||
DRAM: 64 MiB
|
DRAM: 64 MiB
|
||||||
|
@ -233,7 +244,7 @@ the values by `setenv` command (use IP addresses and netmask corresponding to
|
||||||
your local network), then save the new values into environment with `saveenv`
|
your local network), then save the new values into environment with `saveenv`
|
||||||
command.
|
command.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
setenv ipaddr 192.168.1.253
|
setenv ipaddr 192.168.1.253
|
||||||
setenv netmask 255.255.255.0
|
setenv netmask 255.255.255.0
|
||||||
setenv gatewayip 192.168.1.1
|
setenv gatewayip 192.168.1.1
|
||||||
|
@ -294,7 +305,7 @@ If you followed step 2, you've got your own TFTP server serving files from
|
||||||
`/srv/tftp` directory. Extract files from the bundle you just downloaded into
|
`/srv/tftp` directory. Extract files from the bundle you just downloaded into
|
||||||
that directory.
|
that directory.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
sudo tar -C /srv/tftp/ -xvf openipc.*.tgz
|
sudo tar -C /srv/tftp/ -xvf openipc.*.tgz
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -333,7 +344,7 @@ firmware. Welcome to OpenIPC!
|
||||||
After the first boot with the new firmware you need to clean the overlay
|
After the first boot with the new firmware you need to clean the overlay
|
||||||
partition. Run this in your terminal window:
|
partition. Run this in your terminal window:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
firstboot
|
firstboot
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -85,18 +85,18 @@ RJ-45 connectors and wires.
|
||||||
|
|
||||||
* __YouTube Streaming__
|
* __YouTube Streaming__
|
||||||
|
|
||||||
#### MiniHttp is the main streamer of the OpenIPC based system
|
### MiniHttp is the main streamer of the OpenIPC based system
|
||||||
|
|
||||||
It is important to tune configuration of MiniHttp by turning off unneeded
|
It is important to tune configuration of MiniHttp by turning off unneeded
|
||||||
protocols and features for better security and performance.
|
protocols and features for better security and performance.
|
||||||
|
|
||||||
Config file is located in `/etc/minihttp.ini`
|
Config file is located in `/etc/minihttp.ini`
|
||||||
|
|
||||||
#### Debug mode:
|
### Debug mode:
|
||||||
|
|
||||||
```killall -sigint minihttp; sleep 1; export SENSOR=`ipctool --sensor_id`; minihttp```
|
```killall -sigint minihttp; sleep 1; export SENSOR=`ipctool --sensor_id`; minihttp```
|
||||||
|
|
||||||
#### Production mode:
|
### Production mode:
|
||||||
|
|
||||||
```killall -sigint minihttp; sleep 1; export SENSOR=`ipctool --sensor_id`; minihttp 2>&1 | logger -p daemon.info -t minihttp &```
|
```killall -sigint minihttp; sleep 1; export SENSOR=`ipctool --sensor_id`; minihttp 2>&1 | logger -p daemon.info -t minihttp &```
|
||||||
|
|
||||||
|
@ -190,7 +190,6 @@ if(pinfo->mem->start = 0x20250000 /* address i2c-2 */) {
|
||||||
### Groups in Telegram related to development:
|
### Groups in Telegram related to development:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Tools used in Research and Development
|
## Tools used in Research and Development
|
||||||
|
|
||||||
[hisi-trace](https://github.com/OpenIPC/hisi-trace) --> tool to run Sofia inside
|
[hisi-trace](https://github.com/OpenIPC/hisi-trace) --> tool to run Sofia inside
|
||||||
|
@ -209,7 +208,7 @@ Different hack & mod related to IP Cameras forums:
|
||||||
|
|
||||||
Below are some examples how to record video streams with various utilities.
|
Below are some examples how to record video streams with various utilities.
|
||||||
|
|
||||||
#### gstreamer
|
### gstreamer
|
||||||
|
|
||||||
* rtsp h264 stream:
|
* rtsp h264 stream:
|
||||||
|
|
||||||
|
@ -219,9 +218,9 @@ Below are some examples how to record video streams with various utilities.
|
||||||
|
|
||||||
`gst-launch-1.0 rtspsrc location=rtsp://192.168.1.10:554/stream=0 ! rtpjitterbuffer ! rtph265depay ! h265parse ! mp4mux ! filesink location=stream0_h265.mp4 -e`
|
`gst-launch-1.0 rtspsrc location=rtsp://192.168.1.10:554/stream=0 ! rtpjitterbuffer ! rtph265depay ! h265parse ! mp4mux ! filesink location=stream0_h265.mp4 -e`
|
||||||
|
|
||||||
#### ffmpeg
|
### ffmpeg
|
||||||
|
|
||||||
#### vlc
|
### vlc
|
||||||
|
|
||||||
## How to login inside original firmware
|
## How to login inside original firmware
|
||||||
|
|
||||||
|
@ -311,7 +310,7 @@ himm 0x0120E0110 0x60320000 > /dev/null; himm 0x120E0118 | awk '{print $4}' | dd
|
||||||
himm 0x0120E0110 0x60320000 > /dev/null; himm 0x120E0118 | awk '{print $4}' | dd skip=1 bs=7 2>/dev/null | awk '{print "0x"$1}' | awk '{print "CPU temperature: " (($1-125)/806)*165-40}'
|
himm 0x0120E0110 0x60320000 > /dev/null; himm 0x120E0118 | awk '{print $4}' | dd skip=1 bs=7 2>/dev/null | awk '{print "0x"$1}' | awk '{print "CPU temperature: " (($1-125)/806)*165-40}'
|
||||||
```
|
```
|
||||||
|
|
||||||
`HI3520DV200 `
|
`HI3520DV200`
|
||||||
```sh
|
```sh
|
||||||
devmem 20060020 32
|
devmem 20060020 32
|
||||||
```
|
```
|
||||||
|
|
|
@ -6,7 +6,6 @@ Introduction
|
||||||
|
|
||||||
This page describes OpenWRT-based firmware variant.
|
This page describes OpenWRT-based firmware variant.
|
||||||
|
|
||||||
|
|
||||||
### Firmware features
|
### Firmware features
|
||||||
|
|
||||||
* RTSP, ONVIF, NETIP
|
* RTSP, ONVIF, NETIP
|
||||||
|
@ -51,13 +50,13 @@ Unneeded options can be turned off for better security and performance.
|
||||||
|
|
||||||
To run `majestic` in debug mode:
|
To run `majestic` in debug mode:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
killall -sigint majestic; export SENSOR=$(ipctool --sensor_id); majestic
|
killall -sigint majestic; export SENSOR=$(ipctool --sensor_id); majestic
|
||||||
```
|
```
|
||||||
|
|
||||||
To run `majestic` in production mode restart the camera or run command:
|
To run `majestic` in production mode restart the camera or run command:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
killall -sigint majestic; export SENSOR=$(ipctool --sensor_id); majestic 2>&1 | logger -p daemon.info -t majestic &
|
killall -sigint majestic; export SENSOR=$(ipctool --sensor_id); majestic 2>&1 | logger -p daemon.info -t majestic &
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -124,7 +123,7 @@ cd OpenIPC
|
||||||
|
|
||||||
### Use Docker for building
|
### Use Docker for building
|
||||||
|
|
||||||
**Default Dockerfile.openipc**
|
> **Default Dockerfile.openipc**
|
||||||
|
|
||||||
```docker
|
```docker
|
||||||
FROM debian:stretch
|
FROM debian:stretch
|
||||||
|
@ -147,7 +146,7 @@ RUN ./Project_OpenIPC.sh update
|
||||||
RUN ./Project_OpenIPC.sh 18ev200_DEFAULT # <= Change this ID to you profile
|
RUN ./Project_OpenIPC.sh 18ev200_DEFAULT # <= Change this ID to you profile
|
||||||
```
|
```
|
||||||
|
|
||||||
**Start building**
|
> **Start building**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
@ -503,7 +502,7 @@ flash partitions from shell command line:
|
||||||
flashcp -v openwrt-hi35xx-XXXXX-u-boot.bin boot
|
flashcp -v openwrt-hi35xx-XXXXX-u-boot.bin boot
|
||||||
```
|
```
|
||||||
|
|
||||||
**or**
|
> **or**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
flashcp -v openwrt-hi35xx-XXXXX-u-boot.bin /dev/mtd0
|
flashcp -v openwrt-hi35xx-XXXXX-u-boot.bin /dev/mtd0
|
||||||
|
@ -539,7 +538,7 @@ reboot
|
||||||
|
|
||||||
### Installing the original MAC
|
### Installing the original MAC
|
||||||
|
|
||||||
**U-boot ENV and Linux UCI**
|
> **U-boot ENV and Linux UCI**
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
fw_setenv ethaddr 00:01:02:03:04:05
|
fw_setenv ethaddr 00:01:02:03:04:05
|
||||||
|
@ -550,7 +549,7 @@ uci commit
|
||||||
|
|
||||||
### Installing the correct sensor
|
### Installing the correct sensor
|
||||||
|
|
||||||
**Specify your correct sensor, control type, and data bus**
|
> **Specify your correct sensor, control type, and data bus**
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
fw_setenv sensor imx291_i2c_lvds
|
fw_setenv sensor imx291_i2c_lvds
|
||||||
|
@ -565,7 +564,7 @@ If something went wrong, you can reset configuration to defaults.
|
||||||
|
|
||||||
### Clean overlayfs (reset)
|
### Clean overlayfs (reset)
|
||||||
|
|
||||||
**Restore to default Linux settings**
|
> **Restore to default Linux settings**
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
firstboot
|
firstboot
|
||||||
|
@ -575,7 +574,7 @@ reboot
|
||||||
|
|
||||||
### Clean u-boot env
|
### Clean u-boot env
|
||||||
|
|
||||||
**Restore to default u-boot env**
|
> **Restore to default u-boot env**
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
flash_eraseall -j /dev/$(awk -F ':' '/env/ {print $1}' /proc/mtd)
|
flash_eraseall -j /dev/$(awk -F ':' '/env/ {print $1}' /proc/mtd)
|
||||||
|
@ -587,7 +586,7 @@ reboot
|
||||||
|
|
||||||
If something goes horribly wrong, and you want your backed up firmware back
|
If something goes horribly wrong, and you want your backed up firmware back
|
||||||
|
|
||||||
**Restore backup up firmware via serial**
|
> **Restore backup up firmware via serial**
|
||||||
|
|
||||||
Install kermit using [this instruction](https://glasstty.com/?p=662) or similar.
|
Install kermit using [this instruction](https://glasstty.com/?p=662) or similar.
|
||||||
Here are the sample commands for 8MB Flash.
|
Here are the sample commands for 8MB Flash.
|
||||||
|
@ -625,11 +624,11 @@ OpenIPC # sf write 0x82000000 0x0 ${filesize}
|
||||||
Writing at 0x800000 -- 100% complete.
|
Writing at 0x800000 -- 100% complete.
|
||||||
OpenIPC #
|
OpenIPC #
|
||||||
```
|
```
|
||||||
**Restore backup up firmware via TFTP**
|
> **Restore backup up firmware via TFTP**
|
||||||
|
|
||||||
Here are the commands for 8MB Flash.
|
Here are the commands for 8MB Flash.
|
||||||
|
|
||||||
```
|
```shell
|
||||||
setenv ipaddr 192.168.1.10
|
setenv ipaddr 192.168.1.10
|
||||||
setenv serverip 192.168.1.254
|
setenv serverip 192.168.1.254
|
||||||
sf probe 0; sf lock 0
|
sf probe 0; sf lock 0
|
||||||
|
|
|
@ -10,9 +10,10 @@ hash of that password while extracting a copy of the firmware image.
|
||||||
|
|
||||||
### Password hash
|
### Password hash
|
||||||
|
|
||||||
```
|
```console
|
||||||
$1$bh2njiGH$4duacOMcXDh6myANzbZTf.
|
$1$bh2njiGH$4duacOMcXDh6myANzbZTf.
|
||||||
```
|
```
|
||||||
|
|
||||||
The hashed salt password string consists of three parts: hashing algorithm
|
The hashed salt password string consists of three parts: hashing algorithm
|
||||||
identifier, salt and password hash, each of which is preceded by a dollar sign.
|
identifier, salt and password hash, each of which is preceded by a dollar sign.
|
||||||
The first part, `$1`, is the hashing algorithm encoded with one (rarely two)
|
The first part, `$1`, is the hashing algorithm encoded with one (rarely two)
|
||||||
|
@ -45,7 +46,8 @@ hours, especially using high-quality dictionaries.
|
||||||
|
|
||||||
In the example above we used password "openipc". You can check the validity of
|
In the example above we used password "openipc". You can check the validity of
|
||||||
the password using either `mkpasswd` or `openssl`:
|
the password using either `mkpasswd` or `openssl`:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
$ mkpasswd -m md5crypt -S bh2njiGH openipc
|
$ mkpasswd -m md5crypt -S bh2njiGH openipc
|
||||||
$1$bh2njiGH$4duacOMcXDh6myANzbZTf.
|
$1$bh2njiGH$4duacOMcXDh6myANzbZTf.
|
||||||
$ openssl passwd -1 -salt bh2njiGH openipc
|
$ openssl passwd -1 -salt bh2njiGH openipc
|
||||||
|
@ -57,6 +59,7 @@ researchers in the field could dedicate their cryptographic resources to
|
||||||
discover even more yet unknown passwords. Sharing is caring, boys!
|
discover even more yet unknown passwords. Sharing is caring, boys!
|
||||||
|
|
||||||
### Some passwords that we found in different firmware
|
### Some passwords that we found in different firmware
|
||||||
|
|
||||||
```
|
```
|
||||||
| Hash | Plain text |
|
| Hash | Plain text |
|
||||||
|---------------------------------------|------------|
|
|---------------------------------------|------------|
|
||||||
|
@ -100,7 +103,7 @@ discover even more yet unknown passwords. Sharing is caring, boys!
|
||||||
```
|
```
|
||||||
|
|
||||||
### Hijacking the default password
|
### Hijacking the default password
|
||||||
_tested on Goke_
|
> _tested on Goke_
|
||||||
|
|
||||||
Over the UART interface, it is possible to temporarily interrupt the normal
|
Over the UART interface, it is possible to temporarily interrupt the normal
|
||||||
booting sequence and drop into a limited Linux shell at early stage of
|
booting sequence and drop into a limited Linux shell at early stage of
|
||||||
|
@ -142,7 +145,8 @@ file where password is written on every restart. Search for `/etc/passwd` and
|
||||||
change a letter in its name to something different, like `/etc/passwT`.
|
change a letter in its name to something different, like `/etc/passwT`.
|
||||||
|
|
||||||
Pack the squash file system using `mksquashfs`:
|
Pack the squash file system using `mksquashfs`:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mksquashfs ./squashfs-root ./file -comp xz -no-xattrs -noappend -no-exports -all-root -quiet -b 131072
|
mksquashfs ./squashfs-root ./file -comp xz -no-xattrs -noappend -no-exports -all-root -quiet -b 131072
|
||||||
```
|
```
|
||||||
and copy it from the SD card back to `/rom` directory on the camera.
|
and copy it from the SD card back to `/rom` directory on the camera.
|
||||||
|
@ -161,6 +165,4 @@ you restart the device, you will have full working system with your own password
|
||||||
[2]: https://en.wikipedia.org/wiki/Brute-force_attack
|
[2]: https://en.wikipedia.org/wiki/Brute-force_attack
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
10
en/syslog.md
10
en/syslog.md
|
@ -10,9 +10,11 @@ There is no difficulty in this, you need to configure the server by enabling the
|
||||||
|
|
||||||
Will start with the camera. Add the option -R server-ip:514 with the address as shown in the example and reboot the device.
|
Will start with the camera. Add the option -R server-ip:514 with the address as shown in the example and reboot the device.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
root@openipc-hi3516ev300:~# differ /etc/init.d/S01syslogd
|
||||||
```
|
```
|
||||||
root@openipc-hi3516ev300:~# differ /etc/init.d/S01syslogd.
|
|
||||||
|
```diff
|
||||||
--- /rom/etc/init.d/S01syslogd
|
--- /rom/etc/init.d/S01syslogd
|
||||||
+++ /etc/init.d/S01syslogd
|
+++ /etc/init.d/S01syslogd
|
||||||
@@ -3,7 +3,7 @@
|
@@ -3,7 +3,7 @@
|
||||||
|
@ -28,8 +30,7 @@ root@openipc-hi3516ev300:~# differ /etc/init.d/S01syslogd.
|
||||||
|
|
||||||
In the server configuration file, write down the options of which port numbers and protocols to listen to it and make a restart of the service.
|
In the server configuration file, write down the options of which port numbers and protocols to listen to it and make a restart of the service.
|
||||||
|
|
||||||
|
```diff
|
||||||
```
|
|
||||||
--- rsyslog.conf.orig 2022-09-30 16:41:52.081353630 +0300
|
--- rsyslog.conf.orig 2022-09-30 16:41:52.081353630 +0300
|
||||||
+++ rsyslog.conf 2023-05-01 12:44:06.098032982 +0300
|
+++ rsyslog.conf 2023-05-01 12:44:06.098032982 +0300
|
||||||
@@ -14,12 +14,12 @@
|
@@ -14,12 +14,12 @@
|
||||||
|
@ -52,4 +53,3 @@ In the server configuration file, write down the options of which port numbers a
|
||||||
```
|
```
|
||||||
|
|
||||||
Comments and additions welcome. Bye !
|
Comments and additions welcome. Bye !
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ Upgrading firmware
|
||||||
### Upgrading from GitHub
|
### Upgrading from GitHub
|
||||||
For old firmware running `sysupgrade` without parameters is enough. For newer firmware, run `sysupgrade -k -r` to update both kernel and rootfs.
|
For old firmware running `sysupgrade` without parameters is enough. For newer firmware, run `sysupgrade -k -r` to update both kernel and rootfs.
|
||||||
|
|
||||||
__ATTENTION! Upgrading firmware can lead to "bricking" your camera. Make sure you are prepared both morally and skillwise. Have your rescue SD card and/or UART adapter ready. Be prepared to desolder and reprogram flash chip as the last resort. Do not upgrade production cameras unless you really have to!__
|
__ATTENTION! Upgrading firmware can lead to "bricking" your camera. Make sure you are prepared both morally and skillwise. Have your rescue SD card and/or UART adapter ready. Be prepared to de-solder and reprogram flash chip as the last resort. Do not upgrade production cameras unless you really have to!__
|
||||||
|
|
||||||
### Upgrading from a TFTP server
|
### Upgrading from a TFTP server
|
||||||
|
|
||||||
|
@ -18,17 +18,20 @@ Extract content of the bundle into the root directory of your TFTP server.
|
||||||
|
|
||||||
On the camera run:
|
On the camera run:
|
||||||
|
|
||||||
#### From Linux
|
#### Github: From Linux
|
||||||
```
|
|
||||||
|
```bash
|
||||||
soc=$(fw_printenv -n soc)
|
soc=$(fw_printenv -n soc)
|
||||||
serverip=$(fw_printenv -n serverip)
|
serverip=$(fw_printenv -n serverip)
|
||||||
busybox tftp -r rootfs.squashfs.${soc} -g ${serverip}
|
busybox tftp -r rootfs.squashfs.${soc} -g ${serverip}
|
||||||
busybox tftp -r uImage.${soc} -g ${serverip}
|
busybox tftp -r uImage.${soc} -g ${serverip}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Alternatively, from U-Boot
|
#### Github: Alternatively, from U-Boot
|
||||||
|
|
||||||
for 8MB image
|
for 8MB image
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mw.b ${baseaddr} 0xff 0x200000
|
mw.b ${baseaddr} 0xff 0x200000
|
||||||
tftp ${baseaddr} uImage.${soc}
|
tftp ${baseaddr} uImage.${soc}
|
||||||
sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}
|
sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
|
@ -37,8 +40,10 @@ mw.b ${baseaddr} 0xff 0x500000
|
||||||
tftp ${baseaddr} rootfs.squashfs.${soc}
|
tftp ${baseaddr} rootfs.squashfs.${soc}
|
||||||
sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}
|
sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}
|
||||||
```
|
```
|
||||||
|
|
||||||
for 16MB image
|
for 16MB image
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mw.b ${baseaddr} 0xff 0x300000
|
mw.b ${baseaddr} 0xff 0x300000
|
||||||
tftp ${baseaddr} uImage.${soc}
|
tftp ${baseaddr} uImage.${soc}
|
||||||
sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
|
@ -48,39 +53,48 @@ tftp ${baseaddr} rootfs.squashfs.${soc}
|
||||||
sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}
|
sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Upgrading from local files
|
### Upgrading from local files
|
||||||
|
|
||||||
Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
|
Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
|
||||||
Unpack the bundle and upload its content on camera using `scp`:
|
Unpack the bundle and upload its content on camera using `scp`:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
tar xvf <firmware.tgz>
|
tar xvf <firmware.tgz>
|
||||||
scp uImage* rootfs* root@<yourcameraip>:/tmp/
|
scp uImage* rootfs* root@<yourcameraip>:/tmp/
|
||||||
```
|
```
|
||||||
|
|
||||||
On the camera run:
|
On the camera run:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
soc=$(fw_printenv -n soc)
|
soc=$(fw_printenv -n soc)
|
||||||
sysupgrade --kernel=/tmp/uImage.${soc} --rootfs=/tmp/rootfs.squashfs.${soc} -z
|
sysupgrade --kernel=/tmp/uImage.${soc} --rootfs=/tmp/rootfs.squashfs.${soc} -z
|
||||||
```
|
```
|
||||||
|
|
||||||
### Upgrading from SD card
|
### Upgrading from SD card
|
||||||
|
|
||||||
#### From Linux
|
#### SD Card: From Linux
|
||||||
|
|
||||||
Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
|
Go to <https://github.com/OpenIPC/firmware/releases/tag/latest> and download the latest firmware bundle for your SoC.
|
||||||
Insert an SD card into your desktop PC. Unpack the bundle and copy its content to the card:
|
Insert an SD card into your desktop PC. Unpack the bundle and copy its content to the card:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
tar xvf <firmware.tgz>
|
tar xvf <firmware.tgz>
|
||||||
cp uImage* rootfs* /media/<username>/<card-id>/
|
cp uImage* rootfs* /media/<username>/<card-id>/
|
||||||
```
|
```
|
||||||
|
|
||||||
Insert the SD card into your camera.
|
Insert the SD card into your camera.
|
||||||
On the camera run:
|
On the camera run:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
soc=$(fw_printenv -n soc)
|
soc=$(fw_printenv -n soc)
|
||||||
sysupgrade --kernel=/mnt/mmcblk0p1/uImage.${soc} --rootfs=/mnt/mmcblk0p1/rootfs.squashfs.${soc} --force_ver -z
|
sysupgrade --kernel=/mnt/mmcblk0p1/uImage.${soc} --rootfs=/mnt/mmcblk0p1/rootfs.squashfs.${soc} --force_ver -z
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Alternatively, from U-Boot
|
#### SD Card: Alternatively, from U-Boot
|
||||||
|
|
||||||
for 8MB image
|
for 8MB image
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mw.b ${baseaddr} 0xff 0x200000
|
mw.b ${baseaddr} 0xff 0x200000
|
||||||
fatload mmc 0:1 ${baseaddr} uImage.${soc}
|
fatload mmc 0:1 ${baseaddr} uImage.${soc}
|
||||||
sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}
|
sf probe 0; sf erase 0x50000 0x200000; sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
|
@ -89,8 +103,10 @@ mw.b ${baseaddr} 0xff 0x500000
|
||||||
fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc}
|
fatload mmc 0:1 ${baseaddr} rootfs.squashfs.${soc}
|
||||||
sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}
|
sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize}
|
||||||
```
|
```
|
||||||
|
|
||||||
for 16MB image
|
for 16MB image
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mw.b ${baseaddr} 0xff 0x300000
|
mw.b ${baseaddr} 0xff 0x300000
|
||||||
fatload mmc 0:1 ${baseaddr} uImage.${soc}
|
fatload mmc 0:1 ${baseaddr} uImage.${soc}
|
||||||
sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
sf probe 0; sf erase 0x50000 0x300000; sf write ${baseaddr} 0x50000 ${filesize}
|
||||||
|
@ -101,17 +117,23 @@ sf probe 0; sf erase 0x350000 0xa00000; sf write ${baseaddr} 0x350000 ${filesize
|
||||||
```
|
```
|
||||||
|
|
||||||
### Flashing U-Boot via ymodem
|
### Flashing U-Boot via ymodem
|
||||||
|
|
||||||
Clean 320K of RAM amd load bootloader file into it:
|
Clean 320K of RAM amd load bootloader file into it:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
mw.b ${baseaddr} 0xff 0x50000
|
mw.b ${baseaddr} 0xff 0x50000
|
||||||
loady
|
loady
|
||||||
```
|
```
|
||||||
_(press "Ctrl-a" followed by ":", then type)_
|
|
||||||
```
|
> _(press "Ctrl-a" followed by ":", then type)_
|
||||||
|
|
||||||
|
```bash
|
||||||
exec !! sz --ymodem u-boot.bin
|
exec !! sz --ymodem u-boot.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
After the file if uploaded, write it into ROM:
|
After the file if uploaded, write it into ROM:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
sf probe 0
|
sf probe 0
|
||||||
sf erase 0x0 0x50000
|
sf erase 0x0 0x50000
|
||||||
sf write ${baseaddr} 0x0 ${filesize}
|
sf write ${baseaddr} 0x0 ${filesize}
|
||||||
|
@ -120,10 +142,12 @@ sf write ${baseaddr} 0x0 ${filesize}
|
||||||
### Troubleshooting
|
### Troubleshooting
|
||||||
|
|
||||||
If you got this error:
|
If you got this error:
|
||||||
```
|
|
||||||
|
```console
|
||||||
losetup: /tmp/rootfs.squashfs.${soc}: No such file or directory
|
losetup: /tmp/rootfs.squashfs.${soc}: No such file or directory
|
||||||
Rootfs: Unable to get hostname, execution was interrupted...
|
Rootfs: Unable to get hostname, execution was interrupted...
|
||||||
```
|
```
|
||||||
|
|
||||||
then try to update only kernel first:
|
then try to update only kernel first:
|
||||||
`sysupgrade -k`
|
`sysupgrade -k`
|
||||||
|
|
||||||
|
@ -131,6 +155,7 @@ If it doesn't help, use `--force` option:
|
||||||
`sysupgrade -r --force`
|
`sysupgrade -r --force`
|
||||||
|
|
||||||
If you caught a glitch, retrieve the most recent version of the utility:
|
If you caught a glitch, retrieve the most recent version of the utility:
|
||||||
```
|
|
||||||
|
```bash
|
||||||
curl -k -L -o /usr/sbin/sysupgrade "https://raw.githubusercontent.com/OpenIPC/firmware/master/general/overlay/usr/sbin/sysupgrade"
|
curl -k -L -o /usr/sbin/sysupgrade "https://raw.githubusercontent.com/OpenIPC/firmware/master/general/overlay/usr/sbin/sysupgrade"
|
||||||
```
|
```
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
Some IP-cameras require additional parameters set to make the network interface work.
|
Some IP-cameras require additional parameters set to make the network interface work.
|
||||||
|
|
||||||
#### For recent firmware
|
### For recent firmware
|
||||||
|
|
||||||
Use `extras` boot variable. In Linux console run this
|
Use `extras` boot variable. In Linux console run this
|
||||||
```
|
```
|
||||||
|
@ -26,7 +26,7 @@ fw_setenv extras 'hieth.mdioifu=1 hieth.mdioifd=1' && reboot
|
||||||
If nothing of the above worked for you, seek help on [our Telegram channel](https://t.me/openipc).
|
If nothing of the above worked for you, seek help on [our Telegram channel](https://t.me/openipc).
|
||||||
|
|
||||||
|
|
||||||
#### For older firmware
|
### For older firmware
|
||||||
|
|
||||||
Set `phyaddru` and `phyaddrd` variables from U-Boot console:
|
Set `phyaddru` and `phyaddrd` variables from U-Boot console:
|
||||||
```
|
```
|
||||||
|
|
|
@ -6,7 +6,7 @@ Wi-Fi for XM530 based devices
|
||||||
|
|
||||||
Save this script as `/usr/sbin/wifi`
|
Save this script as `/usr/sbin/wifi`
|
||||||
|
|
||||||
```
|
```bash
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
WIFI=$1
|
WIFI=$1
|
||||||
|
@ -24,7 +24,7 @@ fi
|
||||||
|
|
||||||
Save these settings to `/etc/network/interfaces`
|
Save these settings to `/etc/network/interfaces`
|
||||||
|
|
||||||
```
|
```bash
|
||||||
auto eth2
|
auto eth2
|
||||||
iface eth2 inet dhcp
|
iface eth2 inet dhcp
|
||||||
pre-up wifi xm711
|
pre-up wifi xm711
|
||||||
|
|
|
@ -9,7 +9,7 @@ Wireless settings
|
||||||
- Following packages are needed for the HI3516EV300 CamHi module.
|
- Following packages are needed for the HI3516EV300 CamHi module.
|
||||||
- The example build configuration is: `hi3516ev300_lite_defconfig`
|
- The example build configuration is: `hi3516ev300_lite_defconfig`
|
||||||
|
|
||||||
```
|
```shell
|
||||||
BR2_PACKAGE_WIRELESS_CONFIGURATION=y
|
BR2_PACKAGE_WIRELESS_CONFIGURATION=y
|
||||||
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
|
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
|
||||||
BR2_PACKAGE_MT7601U_AP_OPENIPC=y
|
BR2_PACKAGE_MT7601U_AP_OPENIPC=y
|
||||||
|
@ -72,13 +72,13 @@ fi
|
||||||
- For the initial setup, the device will create an access point with the name OpenIPC and password 12345678.
|
- For the initial setup, the device will create an access point with the name OpenIPC and password 12345678.
|
||||||
- After connecting to the device, credentials can be changed with the wireless script:
|
- After connecting to the device, credentials can be changed with the wireless script:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
wireless setup [SSID] [PASS]
|
wireless setup [SSID] [PASS]
|
||||||
```
|
```
|
||||||
|
|
||||||
- Additional settings are:
|
- Additional settings are:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
wireless connect
|
wireless connect
|
||||||
wireless reset
|
wireless reset
|
||||||
wireless show
|
wireless show
|
||||||
|
|
|
@ -24,7 +24,7 @@ for more information.
|
||||||
- switch "resolution" from "1080p" to "variable";
|
- switch "resolution" from "1080p" to "variable";
|
||||||
- switch "ingestionType" from "rtmp" to "hls":
|
- switch "ingestionType" from "rtmp" to "hls":
|
||||||
|
|
||||||
```
|
```json
|
||||||
"cdn": {
|
"cdn": {
|
||||||
"ingestionType": "hls",
|
"ingestionType": "hls",
|
||||||
"frameRate": "variable",
|
"frameRate": "variable",
|
||||||
|
@ -53,7 +53,7 @@ for more information.
|
||||||
- 'scheduledEndTime' like '2020-04-21T01:00:00.000Z' (scheduled end time should be after the scheduled start time)
|
- '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
|
- also press blue plus button inside "snippet" block and add "channelId" with given from stream step value
|
||||||
|
|
||||||
```
|
```json
|
||||||
"snippet": {`
|
"snippet": {`
|
||||||
`"title": "My Hometown Camera",`
|
`"title": "My Hometown Camera",`
|
||||||
`"scheduledStartTime": "2021-04-12T00:00:00.000Z",`
|
`"scheduledStartTime": "2021-04-12T00:00:00.000Z",`
|
||||||
|
|
Loading…
Reference in New Issue