User Tools

Site Tools


doc:appunti:hardware:sjcam-8pro-custom-firmware

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-custom-firmware [2022/08/09 10:48] – [Gamma curves] niccolodoc:appunti:hardware:sjcam-8pro-custom-firmware [2023/06/09 05:38] (current) – [My Custom firmware] niccolo
Line 3: Line 3:
 The **SCAM SJ8 Pro** is a mid-range priced action camera, equipped with chips well known for their quality: the **Ambarella H22 S85** and the **Sony IMX377** sensor. Still in 2022 it was well placed between the expensives GoPros and the plethora low-end budget cameras. Unfortunately the support from SJCAM was ended in 2020 with the **firwmare 1.3.2** still affected by various bugs, image quality and video codec settings **definitely to be improved**. Also the Adnroid app is disappointing. The **SCAM SJ8 Pro** is a mid-range priced action camera, equipped with chips well known for their quality: the **Ambarella H22 S85** and the **Sony IMX377** sensor. Still in 2022 it was well placed between the expensives GoPros and the plethora low-end budget cameras. Unfortunately the support from SJCAM was ended in 2020 with the **firwmare 1.3.2** still affected by various bugs, image quality and video codec settings **definitely to be improved**. Also the Adnroid app is disappointing.
  
-Fortunately enough, being equipped with the Ambarella chip, it was possible to **reverse engineer** some of its firmware and API. Creating a custom firmware you can imporove the overall experience. It is important to remember that this took a lot of hard work.+Fortunately enough, being equipped with the Ambarella chip, it was possible to **reverse engineer** some of its firmware and API. Creating a custom firmware you can improve the overall experience. It is important to remember that this took a lot of hard work.
  
 The main honorable mention goes to the hacker **VMax**, which created the software **[[https://github.com/vmax1145/BitrateEditor|BitrateEditor]]**. The main honorable mention goes to the hacker **VMax**, which created the software **[[https://github.com/vmax1145/BitrateEditor|BitrateEditor]]**.
  
-See my other page about the SJCAM SJ8 Pro action camera: **[[sjcam-8pro]]****[[sjcam-8pro-ambarella-firmware-modding]]** and **[[sjcam-8pro-ambarella-wifi-api]]**.+**WARNING**: The custom firmware presented in this page is based on the original **SJCAM SJ8 Pro firmware 1.3.2** and it was tested only on cameras shipped with that firmware. **Newer SJ8 Pros** are shipped with **a new firmware 1.4.x**, unfortunately SJCAM does not longer offer a firmware download service, so it was not possible to reverse engineer and eventually modify the new firmware. Also the old 1.3.2 disappeared from their download site and the procedure to upgrade firmware is not longer described in the support site. It is also suspected that the new models shipped with firmware 1.4.x are based on a different hardware that the 1.3.x ones, so using this firmware on newer cameras can be dangerous (**it can bricks the cam!**). 
 + 
 +See my other page about the SJCAM SJ8 Pro action camera: 
 + 
 +  * **[[sjcam-8pro]]** 
 +  * **[[sjcam-8pro-ambarella-firmware-modding]]** 
 +  * **[[sjcam-8pro-ambarella-wifi-api]]**
  
 ===== My Custom firmware ===== ===== My Custom firmware =====
  
-Download the custom firmware here: **{{.:sjcam:sj8pro_mod-rigacci.org_v1.8_20220618.zip|sj8pro_mod-rigacci.org_v1.8_20220618.zip}}**.+Download the custom firmware here: 
 + 
 +  * **{{.:sjcam:sj8pro_mod-rigacci.org_v1.8_20220618.zip|sj8pro_mod-rigacci.org_v1.8_20220618.zip}}**
  
 This is a breif list of customizations, see the README.txt contained into the archive for more details: This is a breif list of customizations, see the README.txt contained into the archive for more details:
Line 17: Line 25:
   * Increased **bitrates**, as per other 4K action cameras. Particular attention to default settings and 1920x1080 mode.   * Increased **bitrates**, as per other 4K action cameras. Particular attention to default settings and 1920x1080 mode.
   * Increased **keyframes** rates (reducing GOP-N): one keyframe every 1/4 second instead of 1 per second.   * Increased **keyframes** rates (reducing GOP-N): one keyframe every 1/4 second instead of 1 per second.
-  * **YUV color profiles**: all the three profiles **Default**, **SJCAM - Vivid** and **Flat** are made equals and neutral; multiplier is 1 and offset is zero for all the three Y, U and V components (shoul be actually Y, Cb and Cr when treating digital signals). +  * **YUV color profiles**: all the three profiles **Default**, **SJCAM - Vivid** and **Flat** are made equals and neutral; multiplier is 1 and offset is zero for all the three Y, U and V components (shoul be actually Y, Cb and Cr when treating digital signals). This is because in my opinion the original Vivid is **too much saturated** and the FLAT is **too much washed out**, plus the management of the color profiles has some bugs and it is best to avoid fidding with them
-  * Fixed **exposition** profiles: **Center**, **Spot** and **Average**.+  * Fixed **exposition** profiles: **Center**, **Spot** and **Average** (Spot and Average are swapped into the original firmware!).
   * Changed **gamma curves**: added some brightness to shadows with an overall gamma coefficient of 1.10 and removed a slight red casting when using Auto White Balance in early hours of sunny days. All the gamma tables for video modes are the same, for photo modes we leaved a linear gamma (1.0) for R, G and B.   * Changed **gamma curves**: added some brightness to shadows with an overall gamma coefficient of 1.10 and removed a slight red casting when using Auto White Balance in early hours of sunny days. All the gamma tables for video modes are the same, for photo modes we leaved a linear gamma (1.0) for R, G and B.
   * Change **chroma curves** to reduce banding in blue sky and to attenuate over-saturated colors.   * Change **chroma curves** to reduce banding in blue sky and to attenuate over-saturated colors.
-  * Changed power-on, power-off and photo shutter **sounds** with louder ones.+  * Changed power-on, power-off and photo shutter **sounds** with **louder** ones.
   * Disabled **LRV** (low resolution videos) recording.   * Disabled **LRV** (low resolution videos) recording.
  
Line 60: Line 68:
 ^ My Custom SJ8Pro  |    6 |    8 |    8 |   16 |    32 |    64 | ^ My Custom SJ8Pro  |    6 |    8 |    8 |   16 |    32 |    64 |
  
 +**WARNING**: The **240 FPS mode is actually a fake**! If you check such a video you can see that every 4 frames only the first is unique, the other three are duplicated: **240 FPS is actually 60 FPS**.
 ==== YUV Profiles ==== ==== YUV Profiles ====
  
Line 84: Line 93:
  
   * Group **%%*/0%%** is not used at all.   * Group **%%*/0%%** is not used at all.
-  * Groups **%%*/255%%** and **%%*/128%%** are mixed togheter, but with some sort of brightness threshold, so it is very likely that you can obtain color banding if graphs curves are not accurately tuned.+  * When using **dynamic ISO modes**, groups **%%*/255%%** and **%%*/128%%** are mixed together: the table **%%*/255%%** is used for **highlights** and the table **%%*/128%%** is used for **shadows**. It is very likely that you will obtain color banding if gamma curves are not accurately tuned
 +  * When using **fixed ISO modes** it seems instead that groups **%%*/255%%** are the only ones used.
   * It seems that in some **particular circumstances** (some color component of */255 is **very dark**) the gamma curve is replaced automatically with something different, may be a **negative** (descending) curve.   * It seems that in some **particular circumstances** (some color component of */255 is **very dark**) the gamma curve is replaced automatically with something different, may be a **negative** (descending) curve.
  
Line 100: Line 110:
 The curves so calculated were loaded for all the video modes tables: */255, */128 and */0 (despite the latter seems not used at all). For photo modes I leaved a linear gamma (no transformation at all), because I prefer to do color balancing in post-processing. The curves so calculated were loaded for all the video modes tables: */255, */128 and */0 (despite the latter seems not used at all). For photo modes I leaved a linear gamma (no transformation at all), because I prefer to do color balancing in post-processing.
  
-The **%%*/255%%** gamma table is the only one used in **fixed ISO modes**. In **dynamic ISO modes** the table **%%*/255%%** is used for **highlights** and the table **%%*/128%%** is used for **shadows**. The table **%%*/0%%** seems not be used at all. As you can see from the following graphs, my custom gamma curves have just a little deviation from the **neutral 1.0 gamma**.+As you can see from the following graphs, my custom gamma curves have just a little deviation from the **neutral 1.0 gamma**:
  
 {{.:sjcam:gamma-255-r.org-1.8.png?200|Custom gamma curve */255 (used in fixed ISO modes or for highlights in dynamic ISO modes)}} {{.:sjcam:gamma-255-r.org-1.8.png?200|Custom gamma curve */255 (used in fixed ISO modes or for highlights in dynamic ISO modes)}}
Line 106: Line 116:
 {{.:sjcam:gamma-000-r.org-1.8.png?200|Custom gamma curve */0 (it seems unused)}} {{.:sjcam:gamma-000-r.org-1.8.png?200|Custom gamma curve */0 (it seems unused)}}
  
-The gamma curves of the **original 1.3.2** firmware **boost the image contrast** by darkening the shadows and brightening the highlights:+The gamma curves of the **original 1.3.2 firmware** do instead **boost the image contrast** by darkening the shadows and brightening the highlights:
  
 {{.:sjcam:gamma-stock-firmware-255.png?200|Original gamma curve */255}} {{.:sjcam:gamma-stock-firmware-255.png?200|Original gamma curve */255}}
doc/appunti/hardware/sjcam-8pro-custom-firmware.1660042118.txt.gz · Last modified: 2022/08/09 10:48 by niccolo