User Tools

Site Tools


doc:appunti:hardware:sjcam-8pro

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:hardware:sjcam-8pro [2022/04/29 10:01] – [TCP API] niccolodoc:appunti:hardware:sjcam-8pro [2023/06/09 10:21] (current) – [SJCAM SJ8 Pro Review] niccolo
Line 1: Line 1:
-====== SJCAM SJ8 Pro ====== +====== SJCAM SJ8 Pro Review ======
- +
-See also my other page about this camera: +
- +
-  * **[[ambarella_custom_firmware]]**. +
-  * **[[sjcam-8pro-api]]**+
  
 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.
 +
 +{{.:sjcam:sjcam-sj8pro-backpack-mount.jpg?direct&600|The SJCAM SJ8 Pro mounted on the shoulder strap of a backpack}}
  
 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]]**
 +  * **[[sjcam-8pro-ambarella-wifi-api]]**
 +  * **[[sjcam-8pro-custom-firmware]]**
 +
 +===== Specs, Pros and Cons =====
  
 **Pros** **Pros**
Line 121: Line 126:
 ===== Color profiles ===== ===== Color profiles =====
  
-The SJCAM SJ8 Pro has two **color profiles** selectable from the **Current Mode Settings** menu: **SJCAM - Vivid** and **Flat**. There is a firmware bug that prevent you changing the color profile if the Gyro Stabilizer is enabled, and the color profile choiche is not remebered after power off. In my opinion the vivid profile is too much saturated, specially it **enhances too much** the contrast from the **blue sky** and the **white clouds**, even when the sky is mainly gray and cloudy (as in the frames below). On the contrary the flat profile is **too much washed out** that you will hardly want to use it.+The SJCAM SJ8 Pro has two **color profiles** selectable from the **Current Mode Settings** menu: **SJCAM - Vivid** and **Flat**. At bootstrap the camera select another profile, let's call it **Default**, which is identical to SJCAM -Vivid, but it is stored in a different place into the firmware, so it can be customized separately. 
 + 
 +There is a firmware bug that prevent you changing the color profile if the Gyro Stabilizer is enabled, and the color profile choiche is not remebered after power off. In my opinion the vivid profile is too much saturated, specially it **enhances too much** the contrast from the **blue sky** and the **white clouds**, even when the sky is mainly gray and cloudy (as in the frames below). On the contrary the flat profile is **too much washed out** that you will hardly want to use it.
  
 {{.:sjcam:color-profile-sjcam-vivid.jpg?direct&400|Color Profile SJCAM - Vivid}} {{.:sjcam:color-profile-sjcam-vivid.jpg?direct&400|Color Profile SJCAM - Vivid}}
 {{.:sjcam:color-profile-flat.jpg?direct&400|Color Profile Flat}} {{.:sjcam:color-profile-flat.jpg?direct&400|Color Profile Flat}}
  
-You can edit the color profiles using the BitrateEditor software. But be careful that the profile selected at bootstrap is neither //SJCAM - Vivid// nor //Flat//, but another one stored in some other part of the firmware that I was unable to locate.+You can edit the three color profiles //SJCAM - Vivid////Flat// and //Default// using BitrateEditor (required version 10.7 - Nov 32021).
  
 ==== Flat vs SJCAM - Vivid ==== ==== Flat vs SJCAM - Vivid ====
Line 264: Line 271:
  
 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 269: Line 278:
 The best approach is to use the **[[https://github.com/vmax1145/BitrateEditor|BitrateEditor]]**, a graphical Java program which facilitates the task of editing various parameters in form of **easy readable tables**. The program contains several configuration files, so it can check that you are actually editing the proper version of the firmware (it can do check of particular strings at particular offset, calculate regions checksums, etc.). The program has the capability to re-pack the firmware image after the edits, **updating the checksums** so that the file will be **flashable** into the camera. The best approach is to use the **[[https://github.com/vmax1145/BitrateEditor|BitrateEditor]]**, a graphical Java program which facilitates the task of editing various parameters in form of **easy readable tables**. The program contains several configuration files, so it can check that you are actually editing the proper version of the firmware (it can do check of particular strings at particular offset, calculate regions checksums, etc.). The program has the capability to re-pack the firmware image after the edits, **updating the checksums** so that the file will be **flashable** into the camera.
  
-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://github.com/RigacciOrg/ambarella-h22-firmware-tools|ambarella-h22-firmware-tools]]**.+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://github.com/RigacciOrg/ambarella-h22-firmware-tools|ambarella-h22-firmware-tools]]**.
  
 ===== SD Card partitioning and formatting with GNU/Linux ===== ===== SD Card partitioning and formatting with GNU/Linux =====
Line 642: Line 651:
 ===== The TCP API ===== ===== The TCP API =====
  
-See the page **[[sjcam-8pro-api]]** about the programming interface (API) offered by the SJCAM SJ8 Pro over the WiFi connection or even in localhost. The interface is offered on port **TCP/7878**.+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 on port **TCP/7878**.
  
 The interface is based on **JSON messages**: you can exchange them over the WiFi connection as the official app **[[https://play.google.com/store/apps/details?id=org.jght.sjcam.zone|SJCAM Zone]]** does between the Android device and the camera. You can also **connect a PC** to the camera via WiFi and use any programming language supporting TCP sockets. The interface is based on **JSON messages**: you can exchange them over the WiFi connection as the official app **[[https://play.google.com/store/apps/details?id=org.jght.sjcam.zone|SJCAM Zone]]** does between the Android device and the camera. You can also **connect a PC** to the camera via WiFi and use any programming language supporting TCP sockets.
  
-You can also send messages from the camera itself: the **RTOS** operating system provides the **telnet** command which can ben used to talk to the **GNULinux** operating system running on the same camera, which handle the API requests (the camera actually runs two operating system simultaneusly). In this scenario I was able to talk to the API but with no interactionI used **telnet** to only send messagesbut I did not find way to read the answers.+You can also send messages from the camera itself: the **RTOS** operating system provides the **telnet** command which can ben used to talk to the **GNU/Linux** operating system running on the same camera, which handles the API requests (the camera actually runs two operating system simultaneusly: RTOS and Linux). In this scenario I was able to talk to the API but with no interactionI used ''telnet'' to only send messages but I did not find any way to read the answers. 
 + 
 +===== Connecting to GNU/Linux via USB ===== 
 + 
 +If you connect the SJ8 Pro camera to a GNU/Linux computer using an USB cable, the Linux kernel will detect it, this is the **lsusb** output: 
 + 
 +<code> 
 +Bus 001 Device 006: ID 070a:4026 Oki Electric Industry Co., Ltd A9 Platform  
 +</code> 
 + 
 +The kernel inform also that the device is available as **USB Mass Storage**: 
 + 
 +<code> 
 +usb 1-1.1: new high-speed USB device number 6 using ehci-pci 
 +usb 1-1.1: New USB device found, idVendor=070a, idProduct=4026, bcdDevice= 0.01 
 +usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 
 +usb 1-1.1: Product: A9 Platform  
 +usb 1-1.1: Manufacturer: AmbarellaInc 
 +usb 1-1.1: SerialNumber: 0001 
 +usb-storage 1-1.1:1.0: USB Mass Storage device detected 
 +scsi host6: usb-storage 1-1.1:1.0 
 +scsi 6:0:0:0: Direct-Access     SJCAM    SJ8PRO           1000 PQ: 0 ANSI: 0 
 +sd 6:0:0:0: Attached scsi generic sg3 type 0 
 +</code>
  
 ===== Tips ===== ===== Tips =====
doc/appunti/hardware/sjcam-8pro.1651226488.txt.gz · Last modified: 2022/04/29 10:01 by niccolo