├── README.md └── v4l2-ctl /README.md: -------------------------------------------------------------------------------- 1 | # Link Pi ENC1 / TBS 2603SE encoders 2 | Both devices are based on a F3520D mainboard (https://linkpi.cn/archives/870). The TBS however lacks the F3520D_EX2 addon board (so no connectors for HDMI out, analog audio input/output, USB socket, buttons and serial port header - software supports all of those features). 3 | 4 | ![F3520D with EX2 extension board](https://linkpi.cn/wp-content/uploads/2020/06/ef0b8c93641ae54-1.png) 5 | 6 | The base software is shared among whole line of Link Pi encoders, so ENC-Tiny (TinyENC1), ENC1, ENC1V2, ENC2, ENC5, ENC9 and ENCSH (and TBS) have the same ups and downs. 7 | 8 | **UPDATE 8.04.2022**: by the looks of it TinyENC1 seems to actually have a bit different firmware with no telnet/ssh access enabled by default. If anyone's interested in getting inside those boxes consider donating one or sending me the recovery firmware. 9 | 10 | **UPDATE 9.11.2023**: The most recent boxes use a new more powerful CPU, the SS5248V100 (from what I read this is a drop-in replacement for Hi35xx chips, namely the Hi3520), more RAM and even larger flash storage. 11 | 12 | ## Personal disclaimer 13 | 14 | I have no connections to the LinkPi company or their developent process. My personal opinion is that they are great devices, more capable than some of 10x as expensive known-brand encoders. It has a well planned and responsive UI. The picture and audio quality is good and everything "just works". I'm kind of used not to expect much from a $100-ish video devices, so getting my hands on and testing ENC1 was an Eureka moment ;) 15 | 16 | I tried contacting Link Pi (both dev and sales) about the security issues but unfortunately got no response, that's why I decided to write about all potential and real problems here. 17 | 18 | If LinkPi guys/gals are reading this please check your emails and at least tell me to bugger off ;) 19 | 20 | It's a real pity that the Linux system underneath didn't get as much love as the UI, but a cautious linux beginner can make the device more secure in just a few steps. 21 | 22 | ## Known bugs 23 | * USBCam streaming output freezes if the encoder is left running for longer periods of time, e.g. more than 48h. The snapshot pipeline does not seem affected at the same time. 24 | * Mix pipeline inputs freeze if left running for longer periods of time (e.g. more than 48h). The snapshot and streaming pipelines does not seem affected. 25 | 26 | ## Undocumented features 27 | ### Software 28 | * USBCam allows audio only streaming with a UAC device (e.g. USB microphone) 29 | * internal RTMP server accepts connections from outside using rtmp://enc1_ip/live playpath and any stream key (avoid stream* and sub* keys - they are used internally) 30 | * since _**update_20210927**_ there's a local SRT server (SLS) in listener mode accepting connections with proper streamID. If the encoding party pushes it's stream to srt://enc1_ip:8080?streamid=push/live/XYZ and the player/decoder can connect to the stream here: srt://enc1_ip:8080?streamid=pull/live/XYZ (multiple client connections are supported. Note: SLS built in parser overwrites MPEGTS video headers with H.264 metadata, so you will have hard time playing back HEVC streams sent to SLS. Also, encyption is not supported. 31 | * audio sampling rate up to 96 kHz is supported (but not enabled - it can be added manually by editing the right PHP script) 32 | * OPUS audio codec is supported (software only and disabled by default) 33 | * As of [20231031](https://github.com/matiaspl/LinkPi-ENCx/edit/main/README.md#build-20231031) the encoder has support for adding timestamp information to SEI video stream in-band metadata. UI mentions sinsam ([specs](https://dw.sinsam.com/sinsam/software/%E8%8A%AF%E8%B1%A1SEI%20%E5%B8%A7%E5%90%8C%E6%AD%A5%E6%8A%80%E6%9C%AF%E8%A7%84%E8%8C%83V1.0%20202309.pdf)) and normal (~~I expect this to be "regular" SEI SMPTE-12M timecodes~~ same as sinsam alas not per packet but per GOP - tough luck...) 34 | 35 | ### Hardware 36 | * the encoders can be powered with 5V using a powerbank or a USB power and a USB-A to DC 5.5x2.5mm barrel connector cable, provided they can deliver ~2 amps. (Carl Mills@EnDeCo) 37 | * there's no power regulator between USB-C and regular USB on ENC1V2, so if you provide 9/12V over USB-C tthe device will boot up, but the same voltage will most likely fry whatever's connected to the other USB ports (Carl Mills@EnDeCo) 38 | 39 | ## 3rd party apps 40 | 41 | Statically compiled armhf applications seem to work fine. I tried ffmpeg and v4l2-ctl and they both worked. 42 | * LinkPi-oled-logo-converter: https://github.com/YveIce/LinkPi-oled-logo-converter - tool for converting your graphics to OLED boot logo format 43 | * ffmpeg: https://johnvansickle.com/ffmpeg/ 44 | * v4l2-ctl: https://github.com/9crk/v4l2-ctl - there's a v4l2-ctl.exe file in this repo which is a static armhf binary 45 | * v4l2ctl-ctl-with-php: https://github.com/wilwad/v4l2-ctl-with-php - allows remote control of USB webcams params (brightness/contrast/backlight, etc.) 46 | 47 | ## Interesting internal pages (not linked/unused/model-specific) 48 | 49 | * http://enc1/test.html - possibly a QA leftover, allows unauthorised slideshow view of all inputs 50 | * http://enc1/fac.php - _low level factory settings_ (also uses oled.php, themes.php and remote.php) 51 | * http://enc1/ndireg.php - for entering the NDI license string (sold separately) 52 | * http://enc1/remote.php and http://enc1/remotelp.php - IR remote configuration (supported on ENC1V2) 53 | * http://enc1/monitor.php - motion detection 54 | * http://enc1/face.php - face recognition 55 | 56 | Engineering leftovers: 57 | 58 | * http://enc1/demo/audio.php - audio mixer, frontend for [AB33EP expansion board](https://gitee.com/LinkPi/Audio/wikis/pages/preview?sort_id=1475161&doc_id=324053) 59 | * http://enc1/demo/audio2.php - backend for audio.php? 60 | * http://enc1/demo/config.html - looks like a "set defaults" script 61 | * http://enc1/demo/rtmp.html 62 | * http://enc1/demo/netex.php 63 | * http://enc1/demo/netex%20-%20拷贝.php (removed in update_20210123) 64 | * http://enc1/demo/timer.html - javascript timer, helpful for latency measurement 65 | * http://enc1/demo/demo.html - face recognition, not working 66 | * http://enc1/wxfunc.php - possibly a part of an old backend, allows non authorised changes 67 | 68 | ## Intercom & tally 69 | 70 | The intercom system (since version 20211201) is using an unknown UDP-based protocol on port 7000 for communication through a central server (source not public - installer and binaries located here: https://gitee.com/LinkPi/Service/). Judging by the symbols, the server is a QT app built on LinkLib. The client side runs inside the _/link/bin/Encoder_ process and utulizes LinkLib LinkIntercom interfaces 71 | 72 | The tally system is able to utilize vMix and Sinsam (Chinese visual clone of vMix) APIs and the builtin UART (_/dev/ttyAMA1_) as the source of PGM/PVW signals sent downstream. The documentation states, that (as of 8.04.2022) only the vMix integration is complete. 73 | 74 | Firmware analysis shows that the system relies on a specific "ttyTally" interface for the tally lights, that presents itself to the LinkPi box as _/dev/ttyUSB0_. Should work with basically any linux supported USB-UART chip (specifically with ESP/ESP32 and Arduino devices). As of 20220712, the udev rules select 10c4:ea60 (Silicon Labs CP210x UART Bridge) as the ttyTally device. 75 | 76 | A generic USB UAC soundcard over ALSA seems to be the source and destination as the intercom communication device (may cause trouble if both webcam and intercom were to be used). 77 | 78 | As of version 20220705/20220712 there are udev hotplug rules present for USB audio devices 08dc:0014 (C-Media - Unitek Y-247A) and 12d1:0010 (unknown device with Huawei vendor id - leads me to think it's either a LTE dongle with a headphone jack or a USB-C mobile headphone). Both create a symlink to /dev/headphone which very likely is used as audio IO for the intercom system. 79 | 80 | ## Default passwords/backdoors 81 | ### SSH/telnet 82 | 83 | ``` 84 | root / linkpi.com (Link Pi) 85 | root / turbosig (TBS) 86 | root / linkpi.cn (newer Link Pi boxes) 87 | ``` 88 | 89 | /etc/passwd: 90 | ``` 91 | (...) 92 | sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 93 | messagebus:tptRhoI1eT1Ak:1000:1000:Linux User,,,:/home/messagebus:/bin/sh 94 | avahi:uTgaD2s17tOZ.:1002:1002:Linux User,,,:/home/avahi:/bin/sh 95 | netdev:IY9bkphWuof06:1003:1003:Linux User,,,:/home/netdev:/bin/sh 96 | ``` 97 | 98 | **IMPORTANT!** messagebus,avahi and netdev accounts have empty passwords (their hashes can be found here: https://www.seancassidy.me/etc/passwords.txt). This along with enabled _telnetd_ is a _**grave security threat**_! Only sshd account is somewhat protected, because the /etc/shadow that the `:x:` points to doesn't exist and the authentication fails altogether. 99 | 100 | Refer to **Fixes -> Disable telnetd** 101 | 102 | ### Web 103 | Passwords are stored in `/link/config/passwd.json` as MD5 unsalted chechsums. The defaults are: 104 | ``` 105 | admin / admin 106 | superadmin / linkpi.com 107 | ``` 108 | The superadmin account is undocumented, so it's important to either delete it by hand or at least change the password. 109 | 110 | ### Remote help 111 | There's a built in remote help/E.T. call home feature, that establishes a tunnel connection to Link Pi server using NGROK. If you don't need it, delete the IP address from the ``$remote=`` line in `/link/web/config.php` and reboot. 112 | 113 | **UPDATE 05.2021**: the remote management has been made publicly available. If you are a WeChat user you can acquire the bindng code at [[wx.linkpi.cn]] and pair your encoder with the provided web remote access system (open the "Options" -> "Reverse proxy" page of the encoder, paste the correct binding code, turn on the remote access function, and save). 114 | 115 | The system is said to be in early stage of development and occasional downtime may occur. 116 | 117 | ### ONVIF 118 | A non-protected ONVIF service is running by default with no real way to disable it through the UI 119 | 120 | ## Fixes & hacks 121 | 122 | ### Recovering from a bad firmware update 123 | 124 | Full flash packages differ from the upgrade packages. Upgrades are basically .tar files that - generally speaking - include the files that changed since the last firmware version, and full flash are partition images. You need to grab the one for your device from the following link: 125 | https://gitee.com/LinkPi/Encoder/wikis/%E5%8D%87%E7%BA%A7&%E5%88%B7%E6%9C%BA/%E5%88%B7%E6%9C%BA%E5%8C%85 126 | and follow the instructions below: 127 | 128 | 1. Prepare a USB pendrive, format it as FAT32, single partition (with no hidden partitions) 129 | 2. Unzip all the flashing packages of the corresponding model to the root directory of the USB disk 130 | 3. When the encoder is powered off, insert the USB disk into the USB port of the encoder 131 | 4. Press and hold the 'DEF' button of the encoder (with a toothpick) and turn on the encoder power 132 | 5. Release the DEF button after you see 'UPDATING' on the OLED screen or 'System Updating' on the HDMI screen 133 | 6. Wait for the firmware flashing to complete (the logo appears on the OLED screen or the logo appears on the HDMI screen) 134 | 7. After the system is flashed, the default IP will be restored (192.168.1.217) which corresponds to the flashing package of multiple models. You need to manually visit http://192.168.1.217/fac.php - after logging in select and confirm appropriate model. Restart after you're done. 135 | 136 | If you have problems navigating LinkPi gitee repositories Chrome's built-in translation engine does a very good job. 137 | 138 | ### Add support for other HiLink/Huawei 4G dongles 139 | 140 | Check the VID and PID of your modem using `lsusb`, and alter accordingly: 141 | 142 | /etc/udev/rules.d/11-usb-hotplug.rules 143 | ``` 144 | (...) 145 | ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f01", RUN+="/etc/udev/usb4g.sh" 146 | SUBSYSTEM=="net", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14db", KERNEL=="eth*", RUN+="/etc/udev/usbUp.sh %k" 147 | (...) 148 | ``` 149 | /etc/udev/usb4g.sh 150 | ``` 151 | #!/bin/sh 152 | /usr/bin/usb_modeswitch -v 0x12d1 -p 0x1f01 -J 153 | ``` 154 | (the usbUp.sh script just runs udhcpc on the right interface, no need to change anything there) 155 | 156 | ### Create & replace the default NO SIGNAL slate image 157 | 158 | By default LinkLib uses `/link/config/nosignal.yuv` image as the placeholder image in case a video source is unavailable while the box is streaming. This file is a 1920x1080 raw semi planar 4:2:0 subsampled YUV bitmap. To create a customized slate, convert your 1920x1080 image with ffmpeg like so: 159 | ``` 160 | ffmpeg yourfile.png -c:v rawvideo -pix_fmt nv21 nosignal.yuv 161 | ``` 162 | and overwrite the original. 163 | 164 | ### Secure empty password system accounts 165 | 166 | To disable the possibility of logging in without a password over telnet, change hashes for users other than root to `:x:` (for example using _vi_). You should end up with the following: 167 | 168 | ``` 169 | (...) 170 | messagebus:x:1000:1000:Linux User,,,:/home/messagebus:/bin/sh 171 | avahi:x:1002:1002:Linux User,,,:/home/avahi:/bin/sh 172 | netdev:x:1003:1003:Linux User,,,:/home/netdev:/bin/sh 173 | ``` 174 | 175 | ### Disable telnet daemon (OUTDATED, for recent versions look below) 176 | 177 | Comment the _telnetd_ line from `/etc/init.d/rcS`. 178 | 179 | ### Disable non-secure network services (e.g. telnet, onvif) 180 | 181 | Edit /link/config/service.json (thanks to [@Gradinko](https://github.com/Gradinko)) : 182 | 183 | /link/config # more service.json 184 | { "telnet":false, "ssh":true, "php":true, "nginx":true, "crond":true, "onvif":true, "ndi":true, "sls":true, "frp":false, "trans":false } 185 | 186 | ### Set reasonable timezone - OUTDATED 187 | The device uses busybox/libc timezone management, which means you can use `/etc/TZ` for setting the correct time and date. 188 | 189 | Refer to https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html for creating a line that fits your time zone. 190 | 191 | For CET/CEST (Europe/Warsaw): 192 | ``` 193 | echo "CET-1CEST,M3.5.0,M10.5.0/3" > /etc/TZ 194 | ``` 195 | 196 | UPDATE: Not needed since 20230322 - time zone can now be configured using the UI. 197 | 198 | ### Enable key-based SSH login 199 | Most files and folders have UID and GID 1000, some have 0, some have UID 1027 GID 100. I think it's most likely due to an incomplete build script. Due to bad ownership of most of the folders including `/root` subfolders, SSH key based login doesn't work. 200 | 201 | To fix it do: 202 | ``` 203 | chown root:root ~/ 204 | ``` 205 | This will allow _ssh-keygen_ to copy the keys to ~/.ssh. 206 | 207 | ## Other findings and comments 208 | 1. The whole UI is written in PHP 209 | 2. The software is common for devices with and without OLED display - specific functions are enabled through http://enc1/fac.php - this way you can enable USB recording, UVC webcam input (and USB UAC audio devices in that matter), NDI support, video player, UART support and the assignment of GPIO buttons to specific functions. 210 | If enabling doesn't work, you may need to look into `/link/web/config.php` and add the parameters to the appropriate files manually (e.g. $NDI=true and $OPUS=true). Use `/link/fac/DEF/web/config.php` for reference. 211 | 3. The device does hardly any internal logging - there are only nginx-rtmp fork (supporting rtmp and rtmp/flv over http) and php-fpm logs. To enable system logging (until next restart) do: 212 | ``` 213 | mkdir /var/log 214 | syslogd 215 | ``` 216 | or enable it in the startup scripts. 217 | 218 | 4. The device has 256 MB of internal memory. Quite unusual for this type of device, the whole filesystem is mounted in writable mode: 219 | ``` 220 | ~ # df -h 221 | Filesystem Size Used Available Use% Mounted on 222 | ubi0:ubifs 214.7M 62.3M 152.4M 29% / 223 | tmpfs 95.7M 0 95.7M 0% /dev 224 | tmpfs 95.7M 248.0K 95.4M 0% /tmp 225 | ``` 226 | ``` 227 | ~ # mount 228 | rootfs on / type rootfs (rw) 229 | ubi0:ubifs on / type ubifs (rw,sync,relatime) 230 | proc on /proc type proc (rw,nosuid,nodev,relatime) 231 | sysfs on /sys type sysfs (rw,nosuid,nodev,relatime) 232 | tmpfs on /dev type tmpfs (rw,relatime) 233 | tmpfs on /tmp type tmpfs (rw,relatime) 234 | devpts on /dev/pts type devpts (rw,relatime,mode=600) 235 | ``` 236 | 237 | 6. The following drivers are included in the kernel: 238 | - cdc_ncm (4G modems) 239 | - uvcvideo (UVC devices) 240 | - ALSA (audio including UAC devices) 241 | ...and not much more. 242 | 243 | There are however vendor provided additional modules: 244 | - wifi - 88x2cu i 8821cu 245 | - Gennum SDI deserializer - gs2971a 246 | - six channel Texas Instruments ADC audio codec - tlv320aic31 247 | - hardware SHA256 accelerator - atsha204a 248 | - unknown GPIO multiplexer(s) 249 | 250 | ## Getting information from HiSilicon HW accelerated AV backend 251 | (https://www.programmersought.com/article/52274083303 252 | 253 | * VPSS (Video Processing Subsystem) `cat /proc/umap/vpss` 254 | * VI (Video Input) `cat /proc/umap/vi` 255 | * VO (Video Output) `cat /proc/umap/vo` 256 | * VEnc (Video Encoder) `cat /proc/umap/venc` 257 | * VDec (Video Decoder) `cat /proc/umap/vdec` 258 | * AI (Audio Input) `cat /proc/umap/ai` 259 | * SYS (System) `cat /proc/umap/sys` 260 | 261 | ### Sink/source-specific parameters 262 | ``` 263 | cat /proc/umap/hdmi0 264 | cat /proc/umap/hdmi0_sink 265 | cat /proc/umap/hdmi0_vo 266 | ``` 267 | 268 | ### Setting MPP log level and getting the contents 269 | ``` 270 | cat /dev/logmpp 271 | echo venc=7 > /proc/umap/logmpp 272 | cat /dev/logmpp 273 | echo venc=3 > /proc/umap/logmpp 274 | ``` 275 | 276 | Getting information about memory used by the backend: 277 | ``` 278 | cat /proc/media-mem 279 | ``` 280 | 281 | ## F3520D pinout 282 | 283 | * J1 - USB 0, J4 - USB 1 284 | 285 | | 1 | 2 | 3 | 4 | 286 | |---|---|---|---| 287 | | +5V | USB- | USB+ | GND | 288 | 289 | * P5 - VGA 290 | 291 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 292 | |---|---|---|---|---|---|---|---|---|----| 293 | | +5V | NC | NC | VSync | HSync | GND | Red | Green | Blue | GND | 294 | 295 | * J16 - UART 0 296 | 297 | | 1 | 2 | 3 | 298 | |----|----|-----| 299 | | TX | GND | RX | 300 | 301 | ## Software/firmware update changlelog 302 | After the updates up to 20210123 some functions take effect after restarting twice. Newer versions of the firmware seem to perform the restarts automatically. 303 | 304 | The devices come from factory having versions of firmware not available for download (e.g. 20201111) 305 | 306 | ### 4.0.0 build 20250228 307 | This update only supports versions 20240131 and later. Do not directly use the upgrade package lower than version 20230426 to downgrade. 308 | * Remove the classic version webpage and related configurations for all models 309 | * Optimize the log feature memory usage 310 | * Optimize the decoding logic of video-only network streams 311 | * Remove the insta360 link from the Laboratory page 312 | * Add a USB camera page to the laboratory, compatible with insta360 control 313 | * Correct the problem of inaccurate acquisition of reserved space for some USB disks when using loop recording 314 | * Correct the problem of discontinuous file names displayed on the [File Management-Loop Recording] tab on the file recording page 315 | * Remove the AUD and BR status display from the OLED display, and add the recording (REC) and push streaming (PUSH) status display 316 | 317 | ### 3.6.0 build 20241231 318 | This update only supports versions 20240131 and later. Do not directly use the upgrade package lower than version 20230426 to downgrade. 319 | * System log viewing/downloading added to Laboratory page. 320 | * Line Output control has been added to the interface output page. 321 | * AAC-HE encoding has been added to the encoding settings page for audio encoding. 322 | * Loop recording, segmented recording, power-on recording and other functions have been added to the file recording page. 323 | * Corrected the problem that audio mp3 encoding does not work. 324 | * Optimized the scaling and performance issues of watermark effects. 325 | * Modified some page text descriptions 326 | 327 | ### 3.5.0 build 20241031 328 | This update only supports versions 20240131 and later. Do not directly use the upgrade package lower than version 20230426 to downgrade 329 | * New OLED screen button interaction 330 | * Fixed the problem that the menu button does not display on small scrrens 331 | * On the live streaming page, fix the problem that there is a probability that the streaming preview cannot be viewed after clicking the save button during streaming 332 | * On the H5 player page, add the function of creating a full-screen playback shortcut for the specified channel 333 | * Optimize the decoding of network streams containing B frames 334 | * Low-level system optimizations 335 | 336 | ### 3.4.0 build 20240831 337 | * Decoding settings page supports multiple NDI stream decoding output 338 | * Adjust the interactive logic of live streaming page, add WebRTC streaming function 339 | * Video special effects page supports video stream preview (reqires enabling RTMP or WebRTC streams) 340 | * Fixed a rare problem of not being able to scan the onvif stream output by the device 341 | * Optimize the theme function, add the function of setting the main color tone 342 | 343 | ### 3.3.0 build 20240731 344 | * SRT tab added to the Decoding page 345 | * Added the output of ultra low latency WebRTC preview (when enabled it's available in the H5 player) 346 | * Added one-click stream URL copying in the Streaming output page 347 | * DHCP optimizations 348 | 349 | ### 3.2.0 build 20240531 350 | * Standard version: decoding settings page adds the function of receiving rtmp streaming, supports authentication streaming 351 | * Fix for ENCSHV2 model for an issue with WIFI being turned on by default when it is first started after flashing 352 | * Optimize frame synchronization function 353 | 354 | ### 3.1.0 build 20240430 355 | * Standard Edition: Modify the interactive logic of the title search box, and no longer pop up the search box 356 | * Standard Edition: Title search function, add search result keyword highlighting 357 | * Standard Edition: Remove the network input option on the encoding page, and set the network input on the decoding page 358 | * Standard Edition: Correct the problem that there is still a probability of automatically obtaining IP after turning off DHCP in the network settings 359 | * Standard Edition: Fully compatible with preview effects of various resolutions such as vertical screen 360 | * Standard Edition: New remote control interaction logic, the remote control is only supported on some models 361 | * Standard Edition: Correct the problem that some models do not have a 4K option on the encoding setting page 362 | * Standard Edition: Optimize some Http interface logic 363 | * Classic Edition: Correct the problem that there is a probability that the video channel cannot be cut in when switching the layout on the video mixing page 364 | * Custom layout manager, support vertical screen and various custom resolution display 365 | 366 | ### 3.0.0 build 20240131 367 | * Standard Edition: Fixed some page translation issues 368 | * Standard Edition: Fixed the problem of unsuccessful NDI registration 369 | * Standard Edition: Added title keyword search function 370 | * Added video channel to audio source binding in the layout manager (*I don't see this option in the layout manager, but the Encoder settings Audio tab has a wider set of audio sources available than it had some time ago...*) 371 | * Fixed the problem that NTFS formatted hard disk cannot be automatically mounted 372 | * Optimize some HTTP interface logic 373 | * Optimize file recording function 374 | * Kernel optimization for better UDP stability (ENC1V3, ENCSHV2, ENC4S models only) 375 | 376 | ### 2.9.0 build 20231229 377 | * Classic version: Fixed the problem that when switching the layout of the specified input source, there is a probability that the input source switch is invalid. 378 | * Standard Edition: Fixed the abnormal page loading problem caused by the integrated communication page not being bound to the broadcasting software. 379 | * Standard Edition: Fixed the problem that after setting LPH, the setting becomes invalid after switching versions. 380 | * Standard version: Added single-click HDMI output function to the decoding setting page 381 | * Remove redundant return values ​​from LPH setting watermark interface 382 | * Network management optimizations 383 | 384 | ### 2.8.0 build 20231130 385 | * Optimize segment recording function 386 | * NTP synchronization increases timing synchronization interval 387 | * Fixed abnormal recording and streaming issues caused by NTP synchronization 388 | * Corrected the UDP packet reordering problem of ENC1V3, ENCSHV2 and other models 389 | * Fixed the problem that the number of channels with special effects cannot exceed 8 390 | * Following a change to ENCSH models, a new management UI has been added. "Classic" (original) and "standard" (new) versions are available 391 | 392 | ### 2.7.0 build 20231031 393 | * Added frame synchronization settings ("sinsam/normal/close") to the encoding settings page 394 | * Multi-platform live broadcast page - new push compatibility settings adding the possibility to send H265 streams to YouTube 395 | * Optimize NTP synchronization 396 | * Optimize audio-only network stream encoding logic 397 | * System optimizations 398 | 399 | ### 2.6.0 build 20230928 400 | * Optimize audio-less network stream encoding logic 401 | * Optimize audioless USB camera encoding logic 402 | * Optimize device NDI encoding frame rate 403 | * Fixed the problem where ENC2V2 would not recognize the connected USB network card 404 | * Fixed the watermark scaling problem caused by switching between low-resolution streams and NOSIGNAL screens. 405 | 406 | ### 2.5.0 build 20230831 407 | * Fixed the abnormal problem of getting/setting watermarks in the http interface 408 | * Fixed the problem in SRT output where the latency could not be greater than 1000 ms 409 | * Optimize the 4K output quality of ENC1V3 and ENCSHV2 models 410 | * HDMI output adds horizontal mirroring function for ENC1V3, ENCSHV2 and ENC5V2 models 411 | * New Rtty access device method is added in the remote access page under advanced settings 412 | * System optimizations 413 | 414 | ### 2.4.0 build 20230731 415 | * Fixed the inaccurate display of disk space when mounting a mass storage device 416 | * Fix a small probability of abnormality when restoring the factory settings on ENC5V2 model 417 | * Added Level B standard support to SDI input 418 | * Added remote control support for ENC1V3, ENC4SS, ENCSHV2 models 419 | * Added storage mount settings under extended functions, supports nfs mount, windows shared directory mount, and disk specified partition mount 420 | 421 | BUGS: 422 | * LCD layout config applet no longer works (*tested*) 423 | * chromakey ("green screen") function locks up from time to time (*not tested*) 424 | 425 | 426 | ### 2.3.0 build 20230630 427 | * Fixed the problem of increased memory usage caused by invalid streaming addresses 428 | * Corrected the problem of displaying the playback address on the output settings page 429 | * Added the function of restoring user settings after upgrading through the upgrade package 430 | 431 | BUGS: 432 | * LCD layout config applet no longer works (*tested*) 433 | * chromakey ("green screen") function locks up from time to time (*not tested*) 434 | 435 | ### 2.2.0 build 20230531 436 | This update only supports version 20230426 and later. For other versions, please download the full flash firmware upgrade to this version. If you need to downgrade, please use the corresponding version flash package. Do not directly use the upgrade package lower than 20230426 to downgrade. **Note that this upgrade will Overwrite device configuration information, please back up as needed** 437 | 438 | * Added timed enable/disable push function for live streaming on all platforms 439 | * Optimize the Onvif PTZ function of some models 440 | * Optimize integrated communication functions 441 | * Optimize device memory usage 442 | * Adjust the port status display logic on the home page 443 | * Fix roi setting function 444 | * Fixed the problem of inaccurate display of the streaming duration caused by changing the system time after the streaming is enabled 445 | * Corrected the problem that the buttons of the ENC1 model have a small probability of not being triggered 446 | * Support the new Internet-based WeChat applet, no longer rely on the LAN, and truly view it anytime, anywhere 447 | 448 | BUGS: 449 | * LCD layout config applet no longer works 450 | * chromakey ("green screen") function locks up from time to time 451 | 452 | ### 2.1.0 build 20230426 453 | This update only supports version 20221116 and later. For other versions, please download the full flash firmware upgrade 454 | to this version. If you need to downgrade, please use the corresponding version of the flash package. Do not directly use the upgrade package lower than this version to downgrade. **Note this upgrade Device configuration information will be overwritten, please back it up as needed** 455 | 456 | Notice - updating the software from 20230322 to this version softbricked my unit, I had to do a full flash upgrade to get it back. 457 | 458 | * Fixed buffer control for B frame decoding 459 | * Reduced CPU usage of MP3 encoding 460 | * Support the latest firmware of insta360Link 461 | * Fixed the abnormality of superimposing special effects of network streams in some cases 462 | * Fixed the abnormal display of decoded illustrations under zooming, rotation, etc. 463 | * Fixed some network stream rotation exceptions in some models 464 | * Solve the issue of ipv6 domain name resolution in case of SRT 465 | * Replace the upgrade package/resource upload component 466 | * Video carousel supports decoding and re-encoding (i.e. U disk playback, streaming) 467 | * Added keying function in the laboratory, that is, green screen keying 468 | 469 | ### 2.0.0 build 20230322 470 | **This update reportedly changes the way firmware upgrades can be made. The vendor states, that you can only go one version up at a time 471 | ** 472 | * Status page - fix for displaying network uplink and downlink status 473 | * Encoding settings - (video parameters) added cropping and rotating the video network stream, added NTSC compatible frame rates for HDMI/SDI channel 474 | * Encoding settings - (audio parameters) the audio source selection supports selecting audio from other video channels 475 | * Output settings - (Play URL settings) added the ability to change the default main stream/sub stream naming scheme 476 | * System settings - added batch configuration export and import, added time zone selection function 477 | * Multiple Push settings - added option to select main stream/sub 478 | * By default the no signal slate is displayed when there is no signal in the network stream - this function can be turned on/off through the fac.php page 479 | * Fixed incorrect translation of some pages and optimized other functions 480 | * A new experimental module is added to the menu bar, including GB28181 support, ROI coding area of interest, Insta360 camera control, Onvif PTZ control, audio and video synchronization adjustment functions (experimental function, use with caution) 481 | 482 | ### 1.0.0 build 20221116 483 | * Added online firmware search & upgrade function 484 | * rtsp output stream, add account password authentication function 485 | * Add USB disk assistant under extended function 486 | * Add B-frame video stream decoding compatibility 487 | * Fix the problem of obtaining abnormal network status when using a wifi network card 488 | * Optimize the intercom function 489 | * Add support for h265 encoding playback on the h5 player page (playing h265 encoded video streams requires high computer performance, in case of lagging problems, please change to a computer with better performance to play) 490 | * ENC1, ENC1V2, ENCSH models support wifi6 network card version 2.0 491 | 492 | ### update_20220712 493 | * Fixed a small probability of abnormal audio capture after restarting the device when using a usb camera 494 | * Fixed the problem that the audio of the USB camera could not be captured after the USB camera was plugged and unplugged 495 | * Fixed the problem of the increasing number of opened file handles by the Encoder program caused by an invalid srt stream 496 | * Fix the problem that the custom layout manager is loaded abnormally after the device is bound to wx.linkpi.cn 497 | * All models add HTTP API interface, optimize the URL matching rules of HTTP API 498 | * The login box is centered horizontally and vertically, and the fill color when the password is automatically filled in the input box is removed 499 | * Fix the problem with multi-NIC devices getting abnormal network status 500 | * The intercom function of ENC1, ENC1V2, and ENCSH models is changed to PTT 501 | * Fix the problem of group setting auxiliary stream 502 | 503 | ### update_20220518 504 | * Fixed the problem that NDI5 cannot decode the H265 stream of NDI4 (NDI|HX2) 505 | * Fixed the problem that the YouTube live broadcast was stuck 506 | 507 | *Applicable to any version after 20211201 508 | 509 | ### update_20220424 510 | * Upgrade to NDI5 (NDI4 users who have purchased authorization need to contact customer service to replace the authorization code) 511 | * Add HTTP-API interface 512 | 513 | *Applicable to any version after 20211201 514 | 515 | ### update_20211201 516 | * Added support for integrated call system and Tally lights [Link to official wiki](https://gitee.com/LinkPi/Encoder/wikis/%E8%BF%9B%E9%98%B6%E6%95%99%E7%A8%8B/%E9%9B%86%E6%88%90%E9%80%9A%E4%BF%A1%E7%B3%BB%E7%BB%9F/%E9%9B%86%E6%88%90%E9%80%9A%E4%BF%A1%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%BF%B0) 517 | * New configuration file import and export function 518 | * New background media service configuration file modification function 519 | * Format verification of parameters such as ip on the network settings page 520 | * Recording support file segmentation 521 | * Support special USB disk or tf card without partition 522 | * Fixed the problem of invalid audio from usb camera 523 | * Fix the abnormal display of OLED recording status 524 | * Fix the problem that the network input will restart when saving parameters 525 | 526 | ### update_20210927 527 | * Added frp support (https://github.com/fatedier/frp) 528 | * Built-in sls service (https://github.com/Edward-Wu/srt-live-server) 529 | * The streamID attribute is added to the SRT output of the output setting page 530 | * Improve ntp time synchronization 531 | * Optimize audio and video synchronization 532 | * Solve the problem of possible conflict between remote access and srt 533 | * Solve the problem of abnormal increase in cpu occupancy rate under certain circumstances 534 | * Revise the display effect of web theme 535 | * _Low bitrate NDI support (vendor forgot to mention it in the changelog). Low bitate NDI stream follows the sub stream settings._ 536 | 537 | ### update_20210607 538 | * Fix the language switching problem caused by the previous version 539 | * Fix the MP4 recording problem caused by the previous version 540 | 541 | *Applicable to any version after 20210123 542 | 543 | ### update_20210527 544 | * Add remote access function (how to use ) 545 | * Add custom layout design interface 546 | * Optimize decoding compatibility 547 | * Optimize decoding fluency (synchronous mode) 548 | * Solve the problem that the network input source cannot be re-encoded after restarting 549 | * Enhanced HDMI input stability 550 | 551 | *Applicable to any version after 20210123 552 | 553 | ### update_20210123 554 | * ENC1V2 adds remote control operation support 555 | * ENCTiny improves stability 556 | * Optimize the file recording operation interface 557 | * Fix css settings conflicting with OEM package in web 558 | * Language selection will be stored on the device, no longer relying solely on cookies 559 | * [3520D] Solve the problem of abnormal HDMI input resolution or abnormal audio in some cases of version 1029 560 | * [3531D] Solve the problem that OLED program will cause high CPU usage 561 | * Solve the problem that the HDMI output resolution may become smaller when the device is repeatedly restarted in version 1029 562 | 563 | ### update_20201029 564 | * Add ENC1V2 model 565 | * Enhanced HDMI compatibility 566 | * Button function can be turned off 567 | * Fix ENCSH reset problem 568 | * Fix the problem that there is no preview image on the webpage in some cases 569 | * Fixed the problem that there is a certain probability of packet loss when the rtsp large bit rate is 570 | 571 | ### update_20200823 572 | * The synchronization mode of network input can manually set the buffer time 573 | * Audio gain can be applied to HDMI, SDI, Line and Mix at the same time 574 | * Serial port transparent transmission supports setting of IP, which can realize the application of group pair transparent transmission 575 | * Add video mixing up and down split screen layout, suitable for vertical screen live streaming 576 | * Support turning off video encoding to achieve separate audio output 577 | * Optimize the recording management interface 578 | * Add SRT encryption option 579 | * Support rotation of interlaced video 580 | * Add commonly used USB serial port driver 581 | * Added H5 player page 582 | * Newly added by the immediate DHCP function 583 | * Added network test function 584 | * Optimize the compatibility of sending and receiving with large bit rate 585 | * Optimize the time stamp interval 586 | * Fix youtube audio compatibility 587 | * Fix the problem of converting rtmp to rtmp 588 | * Fix rtmp to carry frame rate information 589 | 590 | ### update_20200504 591 | * Fixed the issue that NDI authorization will be cleared after the upgrade 592 | 593 | ### update_20200504 594 | * Added remote assistance function (bottom of system settings) 595 | 596 | ### update_20200502 597 | * Correct the latency time unit of SRT 598 | * Open 3520D watchdog 599 | 600 | ### update_20200430 601 | * Added 4G module support 602 | * Fixed the problem of abnormal reconnection when opening multiple SRT channels 603 | 604 | ### update_20200427 605 | * Fix the wifi management page 606 | 607 | ### update_20200426 608 | * Modify the SRT user interface 609 | * Added wifi module support 610 | * Fix the exception of Overlay addition, deletion and modification 611 | 612 | ### update_20200420 613 | * Newly added platform live video preview 614 | * Improve the applet interface 615 | 616 | ## Links 617 | - https://www.yuque.com/linkpi/encoder/ - Official English documentation 618 | - https://linkpi.gitbook.io/encoder/ - old official English documentation 619 | - https://www.yuque.com/linkpi/encoder/pkfir2g98gwpzymt - upgrade firmware repository 620 | - https://www.yuque.com/linkpi/encoder/kpvg3mbg5ussrx69 - boot ("full flash") firmware repository 621 | - https://gitee.com/LinkPi/ - official Link Pi code repository 622 | - https://gitee.com/LinkPi/Encoder/wikis - official docs, good source of knowledge about the internals and firmware 623 | - https://linkpi.cn/archives/1388 - HTTP API ([Google translate](https://linkpi-cn.translate.goog/archives/1388?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=pl&_x_tr_pto=wapp)) 624 | - https://gitee.com/LinkPi/Encoder/issues - bug list (I'm not sure any developer ever looked at those) 625 | - https://blog.csdn.net/weixin_41486034 - Chinese blog with a lot of fun ENCx use cases and ideas (most likely ran by a Link Pi developer or a tech-savvy salesperson) 626 | - https://linkpi.cn/archives/444 - a repost of a CSDN article on extensive ENC5 testing 627 | - http://wiki.endeco.xyz/ - english manual for rebranded and secured LinkPi encoders (no longer operational ;( ) 628 | 629 | -------------------------------------------------------------------------------- /v4l2-ctl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/matiaspl/LinkPi-ENCx/228cd0192c3b9c028041a64625e705e131a1313e/v4l2-ctl --------------------------------------------------------------------------------