diff --git a/en/howto-streaming-telegram.md b/en/howto-streaming-telegram.md index 155f89e..0837532 100644 --- a/en/howto-streaming-telegram.md +++ b/en/howto-streaming-telegram.md @@ -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. -**Note:** Dont forget add `-` sign before paramethers! +**Note:** Dont forget add `-` sign before parameters! **Note:** `outgoing` section may affect another section addition. Remember it! diff --git a/en/install-novatek.md b/en/install-novatek.md index d49d2d3..b5e1434 100644 --- a/en/install-novatek.md +++ b/en/install-novatek.md @@ -6,7 +6,7 @@ For XM vendor boards with NT98562 and NT98566 SoC ONLY!!! ### Initial device firmware update -**This section will be completed at the end of the research** +> **This section will be completed at the end of the research** ``` run uk; run ur; reset # Flash kernel, rootfs and reboot device @@ -21,7 +21,7 @@ run uk; run ur; reset ### Notes After you have finished flashing new firmware, please run `firstboot` command -to format jffs2 partition used to store settings. +to format `jffs2` partition used to store settings. ### Known issues diff --git a/en/install-sigmastar.md b/en/install-sigmastar.md index 0c0223a..1848fc5 100644 --- a/en/install-sigmastar.md +++ b/en/install-sigmastar.md @@ -33,7 +33,7 @@ run uk; run ur; reset ### Notes After you have finished flashing new firmware, please run `firstboot` command -to format jffs2 partition used to store settings. +to format `jffs2` partition used to store settings. ### Other info diff --git a/en/installation-tftpd.md b/en/installation-tftpd.md index 615484d..099bd49 100644 --- a/en/installation-tftpd.md +++ b/en/installation-tftpd.md @@ -11,9 +11,9 @@ these steps: ### Install Docker Composer Follow the [Docker installation instructions][1]. -### Create Docker image files +### Create Docker image files Create a file named `Dockerfile` with the following content: -``` +```dockerfile FROM debian:latest 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 following content: -``` yaml +```yaml version: '3.9' services: tftpd-hpa: @@ -41,7 +41,7 @@ services: ``` ### Start the container -``` +```bash docker-compose up -d ``` 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 `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: -``` +```bash sudo chown systemd-network:input ./tftp ``` Alternatively, you may loosen permissions on that directory: -``` +```bash sudo chmod 777 ./tftp ``` 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 To stop the container and free up memory just run -``` +```bash docker-compose stop ``` The container will be saved on your computer until the next time you need to diff --git a/en/installation.md b/en/installation.md index bba47e8..1154c86 100644 --- a/en/installation.md +++ b/en/installation.md @@ -1,4 +1,5 @@ # OpenIPC Wiki + [Table of Content](../README.md) Available Installation Methods @@ -26,7 +27,7 @@ OpenIPC firmware installation using Coupler. -------------------------------------------- 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. -------------------------------------------------------------- @@ -34,7 +35,7 @@ OpenIPC firmware installation via TFTP and UART, step by step. ### Step 1. Determine the System on Chip. 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 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 @@ -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 set it up. -``` +```bash sudo apt install tftpd-hpa sudo sed -i '/^TFTP_OPTIONS/s/"$/ --create"/' /etc/default/tftpd-hpa sudo systemctl restart tftpd-hpa.service @@ -108,33 +109,43 @@ or whatnot. Connect `GND` pin on your camera to `GND` pad of the adapter, connect USB connector of the adapter to a USB port on your PC, start a terminal emulator -application and connect to your adapter. Set your terminal settings to -115200 bps baudrate, 8 bits, no parity, 1 stopbit, no flow control. +application and connect to your adapter. Set your terminal settings to +115200 bps baudrate, 8 bits, no parity, 1 stopbit, no flow control. Here's a few command lines for various terminal programs with session logging. Pick your poison. #### screen + Start a sessions with -``` + +```bash screen -L -Logfile ipcam-$(date +%s).log /dev/ttyUSB0 115200 ``` + Use `Ctrl-a` followed by `\` to exit the session. -#### minicom +#### `minicom` + Start a sessions with -``` + +```bash minicom -b 115200 -8 --capturefile=ipcam-$(date +%s).log --color=on -D /dev/ttyUSB0 ``` + Use `Ctrl-a` followed by `x` to exit the session. -#### picocom +#### `picocom` + Start a sessions with -``` + +```bash 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. #### PuTTY + 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 bootloader log output. You'll see something like this: -``` +```console U-Boot 2010.06-svn (Oct 21 2016 - 11:21:29) Check Flash Memory Controller v100 ... Found @@ -199,7 +210,7 @@ SPI Nor total size: 16MB Another example: -``` +```console U-Boot 2013.07 (Feb 27 2019 - 02:05:08) 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` command. -``` +```bash setenv ipaddr 192.168.1.253 setenv netmask 255.255.255.0 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 that directory. -``` +```bash sudo tar -C /srv/tftp/ -xvf openipc.*.tgz ``` @@ -304,7 +315,7 @@ So, we have a guinea pig, a camera with hi3518ev100 SoC, equipped with a OV9712 sensor, 64 MB of RAM and a 8MB NOR flash memory. Connect to the camera via the UART port and access the bootloader console. -Set the component parameters to the appropriate environment variables. Set +Set the component parameters to the appropriate environment variables. Set environment variables for loading the Linux kernel and the root file system of the new firmware. Set environment variables for the camera to access local network, where `ethaddr` is the original camera MAC address, `ipaddr` is camera's IP address @@ -333,7 +344,7 @@ firmware. Welcome to OpenIPC! After the first boot with the new firmware you need to clean the overlay partition. Run this in your terminal window: -``` +```bash firstboot ``` diff --git a/en/notes-for-resorting.md b/en/notes-for-resorting.md index f691d02..b72d982 100644 --- a/en/notes-for-resorting.md +++ b/en/notes-for-resorting.md @@ -85,18 +85,18 @@ RJ-45 connectors and wires. * __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 protocols and features for better security and performance. Config file is located in `/etc/minihttp.ini` -#### Debug mode: +### Debug mode: ```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 &``` @@ -190,7 +190,6 @@ if(pinfo->mem->start = 0x20250000 /* address i2c-2 */) { ### Groups in Telegram related to development: - ## Tools used in Research and Development [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. -#### gstreamer +### gstreamer * 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` -#### ffmpeg +### ffmpeg -#### vlc +### vlc ## 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}' ``` -`HI3520DV200 ` +`HI3520DV200` ```sh devmem 20060020 32 ``` diff --git a/en/old-manual.md b/en/old-manual.md index 296a88d..2a14359 100644 --- a/en/old-manual.md +++ b/en/old-manual.md @@ -6,7 +6,6 @@ Introduction This page describes OpenWRT-based firmware variant. - ### Firmware features * RTSP, ONVIF, NETIP @@ -51,13 +50,13 @@ Unneeded options can be turned off for better security and performance. To run `majestic` in debug mode: -``` +```bash killall -sigint majestic; export SENSOR=$(ipctool --sensor_id); majestic ``` 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 & ``` @@ -124,7 +123,7 @@ cd OpenIPC ### Use Docker for building -**Default Dockerfile.openipc** +> **Default Dockerfile.openipc** ```docker FROM debian:stretch @@ -147,7 +146,7 @@ RUN ./Project_OpenIPC.sh update RUN ./Project_OpenIPC.sh 18ev200_DEFAULT # <= Change this ID to you profile ``` -**Start building** +> **Start building** ```bash #!/bin/bash @@ -503,7 +502,7 @@ flash partitions from shell command line: flashcp -v openwrt-hi35xx-XXXXX-u-boot.bin boot ``` -**or** +> **or** ```bash flashcp -v openwrt-hi35xx-XXXXX-u-boot.bin /dev/mtd0 @@ -539,7 +538,7 @@ reboot ### Installing the original MAC -**U-boot ENV and Linux UCI** +> **U-boot ENV and Linux UCI** ```txt fw_setenv ethaddr 00:01:02:03:04:05 @@ -550,7 +549,7 @@ uci commit ### Installing the correct sensor -**Specify your correct sensor, control type, and data bus** +> **Specify your correct sensor, control type, and data bus** ```txt fw_setenv sensor imx291_i2c_lvds @@ -565,7 +564,7 @@ If something went wrong, you can reset configuration to defaults. ### Clean overlayfs (reset) -**Restore to default Linux settings** +> **Restore to default Linux settings** ```txt firstboot @@ -575,7 +574,7 @@ reboot ### Clean u-boot env -**Restore to default u-boot env** +> **Restore to default u-boot env** ```txt 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 -**Restore backup up firmware via serial** +> **Restore backup up firmware via serial** Install kermit using [this instruction](https://glasstty.com/?p=662) or similar. Here are the sample commands for 8MB Flash. @@ -625,11 +624,11 @@ OpenIPC # sf write 0x82000000 0x0 ${filesize} Writing at 0x800000 -- 100% complete. OpenIPC # ``` -**Restore backup up firmware via TFTP** +> **Restore backup up firmware via TFTP** Here are the commands for 8MB Flash. -``` +```shell setenv ipaddr 192.168.1.10 setenv serverip 192.168.1.254 sf probe 0; sf lock 0 diff --git a/en/research-security.md b/en/research-security.md index dee0269..4ec7b1b 100644 --- a/en/research-security.md +++ b/en/research-security.md @@ -10,9 +10,10 @@ hash of that password while extracting a copy of the firmware image. ### Password hash -``` +```console $1$bh2njiGH$4duacOMcXDh6myANzbZTf. ``` + 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. 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 the password using either `mkpasswd` or `openssl`: -``` + +```bash $ mkpasswd -m md5crypt -S bh2njiGH openipc $1$bh2njiGH$4duacOMcXDh6myANzbZTf. $ 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! ### Some passwords that we found in different firmware + ``` | Hash | Plain text | |---------------------------------------|------------| @@ -100,7 +103,7 @@ discover even more yet unknown passwords. Sharing is caring, boys! ``` ### Hijacking the default password -_tested on Goke_ +> _tested on Goke_ 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 @@ -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`. Pack the squash file system using `mksquashfs`: -``` + +```bash 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. @@ -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 - - --------------------------------------------------- diff --git a/en/syslog.md b/en/syslog.md index 4f08b1b..5384853 100644 --- a/en/syslog.md +++ b/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. - +```bash +root@openipc-hi3516ev300:~# differ /etc/init.d/S01syslogd ``` -root@openipc-hi3516ev300:~# differ /etc/init.d/S01syslogd. + +```diff --- /rom/etc/init.d/S01syslogd +++ /etc/init.d/S01syslogd @@ -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. - -``` +```diff --- rsyslog.conf.orig 2022-09-30 16:41:52.081353630 +0300 +++ rsyslog.conf 2023-05-01 12:44:06.098032982 +0300 @@ -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 ! - diff --git a/en/sysupgrade.md b/en/sysupgrade.md index 8555c93..6503713 100644 --- a/en/sysupgrade.md +++ b/en/sysupgrade.md @@ -7,7 +7,7 @@ Upgrading firmware ### 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. -__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 @@ -18,17 +18,20 @@ Extract content of the bundle into the root directory of your TFTP server. On the camera run: -#### From Linux -``` +#### Github: From Linux + +```bash soc=$(fw_printenv -n soc) serverip=$(fw_printenv -n serverip) busybox tftp -r rootfs.squashfs.${soc} -g ${serverip} busybox tftp -r uImage.${soc} -g ${serverip} ``` -#### Alternatively, from U-Boot +#### Github: Alternatively, from U-Boot + for 8MB image -``` + +```bash mw.b ${baseaddr} 0xff 0x200000 tftp ${baseaddr} uImage.${soc} 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} sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize} ``` + for 16MB image -``` + +```bash mw.b ${baseaddr} 0xff 0x300000 tftp ${baseaddr} uImage.${soc} 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} ``` - ### Upgrading from local files + 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`: -``` + +```bash tar xvf <firmware.tgz> scp uImage* rootfs* root@<yourcameraip>:/tmp/ ``` + On the camera run: -``` + +```bash soc=$(fw_printenv -n soc) sysupgrade --kernel=/tmp/uImage.${soc} --rootfs=/tmp/rootfs.squashfs.${soc} -z ``` ### 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. Insert an SD card into your desktop PC. Unpack the bundle and copy its content to the card: -``` + +```bash tar xvf <firmware.tgz> cp uImage* rootfs* /media/<username>/<card-id>/ ``` + Insert the SD card into your camera. On the camera run: -``` + +```bash soc=$(fw_printenv -n soc) 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 -``` + +```bash mw.b ${baseaddr} 0xff 0x200000 fatload mmc 0:1 ${baseaddr} uImage.${soc} 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} sf probe 0; sf erase 0x250000 0x500000; sf write ${baseaddr} 0x250000 ${filesize} ``` + for 16MB image -``` + +```bash mw.b ${baseaddr} 0xff 0x300000 fatload mmc 0:1 ${baseaddr} uImage.${soc} 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 + Clean 320K of RAM amd load bootloader file into it: -``` + +```bash mw.b ${baseaddr} 0xff 0x50000 loady ``` -_(press "Ctrl-a" followed by ":", then type)_ -``` + +> _(press "Ctrl-a" followed by ":", then type)_ + +```bash exec !! sz --ymodem u-boot.bin ``` + After the file if uploaded, write it into ROM: -``` + +```bash sf probe 0 sf erase 0x0 0x50000 sf write ${baseaddr} 0x0 ${filesize} @@ -120,10 +142,12 @@ sf write ${baseaddr} 0x0 ${filesize} ### Troubleshooting If you got this error: -``` + +```console losetup: /tmp/rootfs.squashfs.${soc}: No such file or directory Rootfs: Unable to get hostname, execution was interrupted... ``` + then try to update only kernel first: `sysupgrade -k` @@ -131,6 +155,7 @@ If it doesn't help, use `--force` option: `sysupgrade -r --force` 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" ``` diff --git a/en/trouble-network.md b/en/trouble-network.md index 0c1e393..df66edf 100644 --- a/en/trouble-network.md +++ b/en/trouble-network.md @@ -5,7 +5,7 @@ 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 ``` @@ -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). -#### For older firmware +### For older firmware Set `phyaddru` and `phyaddrd` variables from U-Boot console: ``` diff --git a/en/wifi-xm530.md b/en/wifi-xm530.md index 22ca266..a8607be 100644 --- a/en/wifi-xm530.md +++ b/en/wifi-xm530.md @@ -6,7 +6,7 @@ Wi-Fi for XM530 based devices Save this script as `/usr/sbin/wifi` -``` +```bash #!/bin/sh WIFI=$1 @@ -24,7 +24,7 @@ fi Save these settings to `/etc/network/interfaces` -``` +```bash auto eth2 iface eth2 inet dhcp pre-up wifi xm711 diff --git a/en/wireless-settings.md b/en/wireless-settings.md index c4ff982..3c78ef8 100644 --- a/en/wireless-settings.md +++ b/en/wireless-settings.md @@ -9,7 +9,7 @@ Wireless settings - Following packages are needed for the HI3516EV300 CamHi module. - The example build configuration is: `hi3516ev300_lite_defconfig` -``` +```shell BR2_PACKAGE_WIRELESS_CONFIGURATION=y BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=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. - After connecting to the device, credentials can be changed with the wireless script: -``` +```shell wireless setup [SSID] [PASS] ``` - Additional settings are: -``` +```shell wireless connect wireless reset wireless show diff --git a/en/youtube-streaming.md b/en/youtube-streaming.md index 2f37cb7..ac684f8 100644 --- a/en/youtube-streaming.md +++ b/en/youtube-streaming.md @@ -24,7 +24,7 @@ for more information. - switch "resolution" from "1080p" to "variable"; - switch "ingestionType" from "rtmp" to "hls": -``` +```json "cdn": { "ingestionType": "hls", "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) - also press blue plus button inside "snippet" block and add "channelId" with given from stream step value -``` +```json "snippet": {` `"title": "My Hometown Camera",` `"scheduledStartTime": "2021-04-12T00:00:00.000Z",`