Code improvements

Earlier in 2021 we finally solved some major software stability issues. The C++ code that runs on the Nanopi Neo Air inside the cartridge was crashing relatively often during shooting. Causing loss of captured images.

After long research we found out that this was caused by an imagefile write (the captured image) and an image file read (an image file to monitor the captured result in real time).

By changing the setup of the system, making the Nanopi run its code from fixed eMMC memory (on board the Nanopi) and writing the RAW files to its separate microSD card we achieve that the monitor files are read off of the eMMC memory while the RAW files are written to the MicroSD. Thus avoiding memory acces issues and subsequent code crashes due to a segmentation fault.

we now feel confident to continue developing the Digital Super8 Cartridge with software that is reliable enough for the user.

Note: the Digital S8 Cartridge runs on C++ code, while it also has its own WiFi accesspoint and webserver on board. This allows users to run our HTML5 app on their iPhone or smartphone to have full cartridge control and monitoring functionality.

Smartphone App for Digital Super8

So we’re working hard on the Digital Super8 app for smartphones. To fully control the Digital Super8 cartridge and all settings. To provide monitoring while filming as well as when doing trial shots without actual recording. And to allow viewing the footage you shot.

The Digital Super8 cartridge sets up its own WiFi access point for your smartphone to connect to and then through the app you fully take control, while you’ve got the cartridge slid into your Super8 camera.

At this time we’re ironing out some minor challenges to increase the performance of the monitoring and viewing of captured shots. Using multi-threading to ensure that the RAW images get displayed in full color and smoothly.

Stay tuned.

NanoPi Neo Air in Digital Super 8 Cartridge

We managed to port our Digital Super 8 code to the NanoPi Neo Air. Using Qt and Qt Creator for platform independent development this wasn’t such a big task, fortunately. Also we managed to get the NanoPi Neo Air to boot up, set up a Wifi access point (SSID: DigitalSuper8 :-)), and to start VNCserver which allows a user to view the desktop of the NanoPi in a smartphone or IPhone. Also the Digital Super 8 control and monitor application is started and can then be viewed via WiFi on the smartphone.
That’s actually quite cool!
Having the NanoPi Neo Air act as a WiFi accesspoint, while running the Armbian OS on it was the most complex task and we had to re-write some scripts to nail it.
Now we are waiting for the new 3D printed cartridge to arrive. It is designed and printed by Dutch 3D print company http://www.partsondemand.eu. The new cart will allow build in of NanoPi, sensor and trigger synch circuit board, LiPo battery (1200 mAh), and charger/booster circuit. The device will have status LED, microUSB charger port, USB port for copying captured images to USB stick, microSD port for option to exchange microSD with updated image.
The device boots from and runs on 32GB eMMC, which enables the fastest RAW image writing and performance.

Parts list of the digital super-8 cartridge

To provide more information about our Digital Super-8 Cartridge solution we publish the ‘bill of materials’. This is for the version with external module. Development is underway for a new prototype with no external module, it will have all electronics inside the cartridge.

Bill of materials:

The Cartridge: 3D printed Super8 cartridge, Ximea MU9-MBRD subminiature camera (with Aptina MT9P031 sensor), our own designed shutter sync circuit PCB with photodetector for film claw detection, microUSB breakout board with image capture indication LED, IR Filter, connector cable from PCB to microUSB board, high quality USB cable to connect cart to external module.

External module: Raspberry Pi3, 32GB SanDisk microSD card, Raspberry Pi touch screen with plastic casing, 6600 mAh power bank with microUSB cable to power the module.

Code: C++ application designed built on Qt Creator to control the capturing, settings, and to develop raw images into video, colorgrading.

New footage – birds and bunnies

We shot some new footage to test the quality of the Digital Super8 Cartridge. Our software app takes the RAW Bayer images of the cartridge and performs S-Log encoding before we do any further processing. Using the Digital Super8 application we added contrast with S-curve and then applied individual S-Curves on the RGB channels to add warmth. Because Digital Super8 consists of individually captured 12 bit RAW images (global shutter) there’s a lot of flexibility in how to process afterwards. One could do B&W, natural color, warm, cool or whatever else. Also the software provided allows for export of TIFF image format.

The Nizo 801 Macro we used has some motor instability, leading to a bit of flicker.

All electronics inside the Digital Super 8 Cartridge

We’ve got a working prototype of the Digital Super 8 Cartridge that runs with the Raspberry Pi 3 in an external module with touch screen. Benefits of that solution is the high level of control of operating the Digital Super 8 Cartridge and its settings through the touch screen. Plus the additional real-time monitoring of what is being filmed (in B&W) is a plus.

However the drawback is that the ‘filmtype viewing pane’ of the super 8 camera has to be knocked out of your camera in order to enable the USB connection from the cartridge to the external module.

Some people have suggested to us to try and fit all electronics into the cartridge. Clearly we had to find a smaller Single Board Computer than the Raspberry Pi. Ports and test with the NextThing Co. C.H.I.P. SBC failed as this single core ARM SBC is simply not powerful enough. Now our hopes are on the Orange Pi Zero, which sports a quad-core ARMv7 SOC in a tiny form factor. We have ported the software and the OPI Zero performs reasonably well. Great results for VGA and QHD resolutions. But we need to find optimisations in the code and push for the 720p to runs without dropping frames as well. Whether this will be at all possible we don’t know yet.

Orange Pi Zero inside the Digital Super 8 Cartridge

Benefits of this solution is that the Digital Super 8 Cartridge can simply be dropped into your camera and you don’t have to work with external module or screen. However the cartridge will have to provide a few buttons and LEDs for powering on/off and controlling settings. Alternatively we are looking at using VNC to provide connection via WiFi to your smartphone where you can then see the desktop of the Digital Super 8 cartridge and control its settings.

We are now waiting for the appropriate Lithium Polymer battery and boost/charge circuit and first need to get all the electronics really to fit within the cartridge. More to follow.

New Digital Super 8 footage


We managed to encode the RAW Digital Super 8 images with S-Log (following Sony’s algorithm). Then processing those with simple S-curve and tweaking colors, saturation and brightness/contrast a bit leads to great results, as show below:

Earlier (before we did S-Log encoding, only gamma encoding) we shot a few new samples with fully portable Digital Super 8.  Below a summer sky time lapse (1280 x 720)

and autumn colours in QHD:

and the the same capture rendered as Black & White. To demonstrate the power of Digital Super 8 cartridge shooting individual RAW images in 12 bit (!) bit depth. The Digital Super 8 software tools allow rendering and controlling RGB channels, color cast, saturation, contrast, brightness, HDR and fps.

 

Nizo lightmeter 2.7V voltage regulator

Loads of Braun Nizo super 8 camera owners, especially of the 400, 500 and 800 series have the problem of not being able to get their hands on 2 button cell batteries of 1.35V each. Together feeding the light meter circuitry with 2.7V. The original PX625 Mercury button cell batteries aren’t produced anymore, I guess for environmental reasons. They provided a 1.35V voltage. Nowadays the 625 batteries provide 1.5V.

The problem is that we have had quite some reports of owners using 2 cells of 1.5V each, thus providing 3Volts to the circuitry. This would give different light meter results so ideally one finds a way to provide 2.7V to the circuit without having to worry about button cell batteries in the Nizo.

There are quite a few solutions to the problem, such as using more environment friendly Weincell batteries (Zinc-Oxide), that do provide 1.35V but are quite expensive and tend to die rather quickly if not properly stored. Other solutions involve using Zener diodes and creating adapters from PX625 batteries that hold the zener diode and can house a smaller cell battery.

The solution proposed here is building a simple voltage regulator circuit existing of the LM317 voltage regulator IC, a 500 Ohm trimmer, a 220 Ohm resister, a 1mF electrolyte capacitor and a 100nF capacitor.  The circuit is shown below:

voltage-regulator

Soldered together the circuit looks like this:

nizo-lightmeter-voltage-regulator

Do connect this circuit to some power source like a 9V battery and adjust the trimmer such that you can measure 2.7V at the yellow output lead (use a multimeter).

One way of adding the circuit to your Nizo camera is to first hot-glue all leads and solder to isolate them, open up the side of the camera (4 screws), solder GND and Vin and the 2.7V output to the correct contacts on the Nizo circuit board and place the circuit as shown below (Nizo 801 case but other cameras should be similar):

nizo-inside

When done correctly the side cover will just be able to still fit and you can screw it back on with the 4 screws. Do not forget to remove any remaining 625 button cell batteries from the camera or you can get failures.

Then, switch on the power of the Nizo and test the light meter by pressing the appropriate button and you will see a perfect indication of the meter on the number ‘8’  of the light meter.

Currently we are exploring a different way to add this circuit to the Nizo camera and that is to solder it together just tight enough that it will actually fit within the original button cell housing. One would have to take out the metal strip at the bottom of that housing, then 2 little holes are available. Through one of these holes one can put GND and Vin leads (have to be soldered to the right contact points within the camera, and the 2.7V output lead can be guided into the camera using the other hole. This method will be tested and instructions and pictures will be provided in a next post.

Code update 4 – improving buffering

Over the last couple of weeks a lot of spare time went into improving the code that controls the image capturing. The main bug to address was that the image capturing would ‘hang’ after a certain amount of time when capturing say round 10 seconds or more of 720p 12 bit images.

We revisited the code and the multi-threaded buffering algorithm. Putting the buffer and the code that empties the buffer on a separate thread, away from the main user interfacing window thread dramatically improved the performance. The ‘hanging’ capturing was solved except for the fact that at some times the output of Ximea API messages can still interfere with the code, which is at the capturing stage pushing all boundaries of the raspberry pi 3. When run with an open terminal window the problem is solved but we will ‘silence’ the API output further in order to completely solve the issue.

The only other point to note is that when capturing 720p resolution (the highest option) and at 12 bit, the image capture buffer fills up quite rapidly as the large RAW images take time to be written to microSD card. When ~300 images are in the buffer the raspberry pi sort of gives up and starts ‘sputtering’. Waiting long enough for the buffer to empty solves the situation but you will lose images.

Best options in this ‘best mode’ are to capture shorter shots. Also scaling back to 8 bit RAW dramatically slows down filling up of the buffer. Another option is to move to 540p at 12 bit.

A final ‘disturbing’ issue is that the Ximea camera every now and then ‘disconnects’ and throws an error. The ConnectCam button needs to be pressed to reset the connection and filming can resume. Whether this is a bad USB cable issue or something else will be investigated.