doc:appunti:hardware:sjcam-8pro
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:hardware:sjcam-8pro [2022/04/29 10:51] – [Using the cam without the touchscreen] niccolo | doc:appunti:hardware:sjcam-8pro [2022/06/14 10:59] – [Color profiles] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== SJCAM SJ8 Pro ====== | + | ====== SJCAM SJ8 Pro Review |
- | + | ||
- | See also my other page about **[[ambarella_custom_firmware]]**. | + | |
The **SJCAM SJ8 Pro** action camera was introduced in **2018**, it features **4k video** at **60 fps** and **gyroscope image stabilization**. I purchaesd it in 2021 to work alongside my old [[xiaomi_yi|Xiaomi Yi]], mainly because I was interested in image stabilization. | The **SJCAM SJ8 Pro** action camera was introduced in **2018**, it features **4k video** at **60 fps** and **gyroscope image stabilization**. I purchaesd it in 2021 to work alongside my old [[xiaomi_yi|Xiaomi Yi]], mainly because I was interested in image stabilization. | ||
+ | |||
+ | {{.: | ||
Unfortunately SJCAM does not support this camera very much: the latest **firmware upgrade** is from September 2020, despite there are some evident bugs and several aspects of the user interface which should be improved. Thirdy part support is poor: there is no **waterproof case** except the original one, which unfortunately has a plastic window. There is not much documentation about **customizing the firmware** or scripting using the **Ambarella Scripting**. | Unfortunately SJCAM does not support this camera very much: the latest **firmware upgrade** is from September 2020, despite there are some evident bugs and several aspects of the user interface which should be improved. Thirdy part support is poor: there is no **waterproof case** except the original one, which unfortunately has a plastic window. There is not much documentation about **customizing the firmware** or scripting using the **Ambarella Scripting**. | ||
+ | |||
+ | See also my other page about this camera: **[[sjcam-8pro-ambarella-firmware-modding]]**, | ||
+ | |||
+ | ===== Specs, Pros and Cons ===== | ||
**Pros** | **Pros** | ||
Line 123: | Line 127: | ||
{{.: | {{.: | ||
- | You can edit the color profiles using the BitrateEditor software. | + | You can edit the color profiles using the BitrateEditor software. |
==== Flat vs SJCAM - Vivid ==== | ==== Flat vs SJCAM - Vivid ==== | ||
Line 212: | Line 216: | ||
* If you accidentally press the **Power OFF button** you cannot turn ON the camera again. A big problem if you mounted the camera in a position where you cannot reach it with your finger! | * If you accidentally press the **Power OFF button** you cannot turn ON the camera again. A big problem if you mounted the camera in a position where you cannot reach it with your finger! | ||
- | ===== Using the cam without the touchscreen ===== | + | ===== Using the camera |
When the camera is into the **waterproof case** you can operate it only with the buttons, the touch screen does not work. My camera was shipped with a spare case back, which is thin enough to let operate the touchscreen; | When the camera is into the **waterproof case** you can operate it only with the buttons, the touch screen does not work. My camera was shipped with a spare case back, which is thin enough to let operate the touchscreen; | ||
Line 261: | Line 265: | ||
There are many hackers who produce modified versions of the original firmware. In general they distribute the original firmware patched in several places, mainly to customize framerates, exposure parameters, etc. | There are many hackers who produce modified versions of the original firmware. In general they distribute the original firmware patched in several places, mainly to customize framerates, exposure parameters, etc. | ||
+ | |||
+ | I created a custom firmware to improve some video codec settings and to improve image quality (mainly color balance and saturation). You can find it here: **[[sjcam-8pro-custom-firmware]]**. | ||
Generally there is **no access to the source code**, so **patching the firmware binary** is a rather delicate task, requiring to know the exact offset of the data into that **specific version of the firmware**, the structure and the lenght of the data and eventually how to **update the embedded checksums**. SJCAM does not facilitate the task, because it distribute different versions of the firmares marked with the same version number. | Generally there is **no access to the source code**, so **patching the firmware binary** is a rather delicate task, requiring to know the exact offset of the data into that **specific version of the firmware**, the structure and the lenght of the data and eventually how to **update the embedded checksums**. SJCAM does not facilitate the task, because it distribute different versions of the firmares marked with the same version number. | ||
Line 266: | Line 272: | ||
The best approach is to use the **[[https:// | The best approach is to use the **[[https:// | ||
- | You can refer to the page **[[ambarella_custom_firmware]]** with my notes about customizing the SJ8 Pro firmware using BitrateEditor. You can also refer to the program I wrote which can extract files and partitions from the firmware files: **[[https:// | + | You can refer to the page **[[sjcam-8pro-ambarella-firmware-modding]]** with my notes about customizing the SJ8 Pro firmware using BitrateEditor. You can also refer to the program I wrote which can extract files and partitions from the firmware files: **[[https:// |
===== SD Card partitioning and formatting with GNU/Linux ===== | ===== SD Card partitioning and formatting with GNU/Linux ===== | ||
Line 637: | Line 643: | ||
- | ===== TCP API ===== | + | ===== The TCP API ===== |
- | The camera offers an **API** over the **TCP protocol** | + | See the page **[[sjcam-8pro-ambarella-wifi-api]]** about the programming interface (API) offered by the SJCAM SJ8 Pro over the WiFi connection or even in localhost. The interface is offered |
- | The protocol was at least partially | + | The interface is based on **JSON messages**: you can exchange them over the WiFi connection as the official app **[[https:// |
- | Executing that script at camera | + | You can also send messages from the camera |
- | + | ||
- | * At bootstrap, the RTOS executes | + | |
- | * Using the command | + | |
- | * The GNU/Linux environment has the **busybox** software, so it is possible to use the **telnet** command to establish a TCP connection with the API server at **localhost:7878**. | + | |
- | * The required **JSON commands** are sent to the API server to disable Gyro Stabilizer, select the Color Profile | + | |
- | + | ||
- | **WARNING**: | + | |
- | + | ||
- | Here there are the three files that must be created on the root directory of the SD card: | + | |
- | + | ||
- | **autoexec.ash** | + | |
- | + | ||
- | < | + | |
- | sleep 5000 | + | |
- | t ipc rpc clnt exec2 '/ | + | |
- | </ | + | |
- | + | ||
- | **autoexec.rc** | + | |
- | + | ||
- | < | + | |
- | #!/bin/sh | + | |
- | / | + | |
- | </ | + | |
- | + | ||
- | **api-set-options** | + | |
- | + | ||
- | < | + | |
- | #!/bin/sh | + | |
- | # | + | |
- | # Send some commands to the TCP: | + | |
- | # Set the color profile to "SJCAM - Vivid" and enable Gyro Stabilizer. | + | |
- | + | ||
- | # We should get the token number from msg_id 257, but this script | + | |
- | # is executed at boot, so the token should be always " | + | |
- | T=1 | + | |
- | + | ||
- | # A pause of 0.5 is required for each command to be completed. | + | |
- | # By trial we discovered that a pause of 0.4 is not sufficient. | + | |
- | S=0.52 | + | |
- | + | ||
- | { | + | |
- | echo ' | + | |
- | echo '{" | + | |
- | echo ' | + | |
- | echo ' | + | |
- | echo ' | + | |
- | echo ' | + | |
- | echo ' | + | |
- | #echo ' | + | |
- | sleep 1.0; | + | |
- | } | telnet localhost 7878 | + | |
- | echo | + | |
- | </ | + | |
===== Tips ===== | ===== Tips ===== | ||
Line 725: | Line 678: | ||
* **[[https:// | * **[[https:// | ||
* **[[https:// | * **[[https:// | ||
- | * **HTTP API** | ||
- | * **[[https:// | ||
- | * **[[https:// | ||
* **[[https:// | * **[[https:// | ||
* **{{.: | * **{{.: | ||
* **{{https:// | * **{{https:// | ||
doc/appunti/hardware/sjcam-8pro.txt · Last modified: 2023/06/09 12:21 by niccolo