Posted on 1 Comment

Tech deep dive

Many people have asked, what’s special about our Unleashed. It’s said that the devil’s in the detail, so we wanted to share some of the technical details that really set the Unleashed apart. It’s gonna get real nerdy, so buckle up 🤓

Where to start?

We’ve been working on the Unleashed with up to 8 developers at once, over the course of about 5 years! The firmware alone is comprised of around a quarter of a million lines of code! For all those unsure what this means: That’s A LOT!

The Unleashed has two main components – a Bluetooth module based on a Nordic chipset and a microprocessor from STM. The STM is in charge of communicating with the camera. It implements a USB Host instance, two serial protocols and GPIOs. The Nordic handles communication with the app as well as accessories paired directly with the Unleashed.

Here’s what’s special and what makes those ~250000 lines of code even more incredible: The STM only has 128 Kilobytes of RAM, and 256 Kilobytes of storage, and the Nordic just 64KB RAM, but a little more storage.

That means we can’t use any readily available image handling libraries or SDKs to control the cameras, and we have had to program everything ourselves from scratch. We’re programming bare-metal – i.e. we’re not even using any operating system! We’ve had to be extremely careful with our very, very limited resources, which has resulted in clean and efficient code – by necessity. And that translates to a great user experience for you! The sad thing is, that no-one will ever notice most of the things that we have taken so much care to get right. Because it just works as you’d expect it to! We usually only notice the things that don’t work as they should.

Since we’re so proud of our accomplishments, I wanted to use this update to highlight some of those things that you’d probably never notice.

USB protocol madness

Except for Nikon, who provide excellent documentation on the USB protocol they use, we have had to reverse engineer this protocol for all the other camera brands. This protocol is called PTP/MTP, for which there is actually a well defined standard. What we found really odd is that, for reasons we cannot figure out, every manufacturer has their own weird extension of this protocol, instead of utilizing it in a way that’s already defined by the standard. Again, Nikon is an exception here, and maybe that’s a reason they’re happy to publish all the details of their API. You have no idea how often, when we finally figured out how something works for a certain manufacturer, we developers collectively just shook our heads and asked “Why???”. That’s the reason why it’s not so easy to add new manufacturers to our compatibility list. The protocol was designed to cover most camera capabilities, and provide easy ways to extend it, but instead, every single one of the manufacturers (except Nikon) does their own thing with it.

But that’s just the basics. Once we figured out everything we could, there were still so many cases where we were left wondering why they couldn’t have just done this other little bit, too, and made everyone’s life easy. Instead, we’ve had to implement complicated workarounds for things that should have just worked in the first place.

Nikon video

After all the praise, here’s a Nikon oddity. For some reason, when starting liveview (e.g. for video recording) via USB, Nikon did not allow for the liveview image to be displayed on the camera’s LCD. I suppose they assumed most use-cases for remote control via USB were to add a bigger screen like a laptop, and therefore expect the liveview image to be transmitted via USB. That’s fine, but why disable it on the camera screen? Anyway, we found a really cool workaround for that: When the user starts a video recording from the app, we quickly change a setting deep in the camera menu, that allows us to start liveview by halfpressing the shutterbutton, and start a video recording by fully pressing the shutterbutton. We then proceed to turn off the USB protocol, and turn on a secondary protocol (more on that later), half press, then full press the shutterbutton, and within a very, very short time, can start video recording with the live-view image showing on the camera’s screen (and HDMI for those with external recorders). Upon stopping the video, we quickly change back the setting to what it was before. Pretty cool, eh?

Nikon’s 10 pin protocol & GPS

That secondary protocol I mentioned is one that no-one knows of, which we completely figured out on our own – and it allows almost all the functions over just the 10 pin port that the Unleashed N1 and N2 plug into. This means that the Unleashed N1 and N2 actually work really well without the USB cable, retaining almost the entire featureset, except anything that has to do with image data. So image review, gallery and the LRT autoramping algorithms don’t work, but everything else will.

This also allows us to still give you control over all the settings while we turn off USB to allow you to shoot video.

One downside to this protocol is that is uses the same pins that we need for the GPS protocol on Nikon cameras. So when it’s used with geotagging turned on, we have to quickly turn off that protocol, turn on GPS, and then take a photo. This adds a slight delay to your triggering, but that’s what the “GPS Priority” setting is for – if you prefer no delays, you can set to trigger immediately, at the risk of having some photos without GPS data.

The other great thing about Nikon’s 10 pin port is that we get lots of information about the camera’s state directly through these pins. Like whether the camera is turned on, the meter is currently on, etc. This helps us manage power-saving features really well!

Tap-to-trigger

But one very cool bit of information is exactly when the shutter opens and closes. This allows for several cool features. The simplest is “tap to trigger”. At first we translated pressing the shutterbutton in the app 100% to pressing the shutterbutton on the camera. As photographers we’re used to pressing the shutterbutton until we hear the clicking of the shutter, then we release. But in the first user tests we did, we noticed that 100% of all testers, whether they were die-hard photographers or not, did a single short tap on the shutterbutton in the app, and were wondering why the camera wasn’t taking a photo! Because that’s what everyone is used to from apps! And so we implemented a solution for this in our firmware: if we receive a tap, the Unleashed will press and hold the camera’s shutterbutton for exactly as long as required, until it senses the shutter opening – i.e. when the camera starts the shot! We then release the trigger so fast, that even with the camera set to continuous high, it will only take a single shot! Of course, if you continue to hold the shutterbutton in the app, the Unleashed will also keep pressing the camera’s shutterbutton until you let go, for burst shots or in-camera HDR bracketing.

Minimal darktime

This also allows us to promise the absolute shortest dark-time during timelapses! Most intervalometers default to fully pressing the shutterbutton for one or two seconds, some even to the interval you set minus 1 second. This results in darktimes of at least that amount of time, no matter how fast the shutterspeed is. With the Unleashed, it’s guaranteed to be shorter than the darktime of the camera itself (while it’s taking the photo). On top of that, most intervalometers half-press for a second or so before fully pressing the trigger, just in case your camera needs to autofocus. This adds yet another second to the dark time, and in most cases, as your exposures get longer, will result in you not being able to review the images at all on the camera screen. Since the Unleashed has the information whether the camera is set to autofocus or not, we can skip the half-press time entirely. And because you really shouldn’t be using autofocus on timelapses, the Unleashed app will even warn you about this while setting up the timelapse. There are a handful of cases where we do half-press in advance, for example geotagging is on, and we do everything possible to make sure GPS data is in each and every photo.

We have similar mechanisms on several other camera brands, and because we’re triggering via USB on those, we can often also just tell the camera to take a single picture, rather than telling it to half-press/full press the shutterbutton. In other words, no intervalometer out there can have a shorter dark-time than what the Unleashed can offer!

LED in the dark

While we’re on the topic of triggering: We have a nice RGB LED in the Unleashed to quickly tell you at one glance what’s happening in the Unleashed. Since one of the many strengths of the Unleashed is in night photography, even a really dim LED can completely alter an exposure, and illuminate an entire room! That’s why the Unleashed turns off the LED automatically for the entire duration of each exposure. Even when you trigger on the camera (on most supported cameras), we will turn off that LED. These are the kind of details, you’ll simply never see implemented in products that weren’t designed by or at least with photographers. And talking about the LED: While it’s idle, the Unleashed’s LED slowly pulses the LED in different colors, depending on the connection state. We tested various pulsing patterns, and all the most obvious ones simply looked wrong. By far the most natural looking one was a sine-curve. Remember we said we had limited hardware resources? Yeah. Trigonometric functions are always floating-point based, and require a lot of resources. Both in memory, to hold the complex functions, but also in execution time, as working with floating points alone is “expensive” and trigonometry even more so. Instead we scoured academic papers on the topic and found a very, very close approximation – the Bhaskara I’s sine. We then implemented that with integer logic, making it extremely efficient and just as beautiful as an actual sine curve. Pretty cool, eh?

There are so many of these kinds of details all throughout our firmware and apps, it would take days to write them all down!

Image decoding on the fly

There’s one pretty amazing part of our firmware that I can’t not talk about. Our image decoder. I don’t know if any of you have any idea about the resources required to work with images. It’s a lot. Usually the entire image gets loaded into RAM, then gets fully decoded into RAM, then calculations are done, and everything is discarded again. With JPEG images easily getting to 20Megabytes and the decoded version of that often being over 100MB, You’d think it’s an impossible task for our little Unleashed with its 128KB of RAM. And yes, with conventional methods it would be.

That’s why we wrote an image decoder from scratch, which can decode JPEG images, requires a mere 500 bytes of RAM, and can handle image data coming in in packets as small as 1 Byte at a time. All that while being performant enough to run at relatively slow processing speeds! That means we don’t have to save any of the image data, but can handle a packet of data, do our calculations and throw it away, We calculate and save the histogram data, and then use that to run the image-based algorithms for autoramping timelapses. And that happens once every interval. While we were at it, we also wrote a parser for EXIF data, so that we could get some valuable information about each image within the first few bytes of an image, skip to the really interesting parts, and only have to decode those parts, as opposed to decoding everything, and keeping only what interests us. That’s also how we can transfer the high-resolution previews without having to transfer the originals!

Previews with metadata

In fact, on most cameras, when we transfer a high resolution preview, we actually merge the EXIF data of the original with the image data of the preview, of course replacing things like X and Y resolution on the fly. This makes those previews even more valuable, as they still contain all your metadata, such as geotags, so if you save the previews to your iPhone’s camera roll, you’ll get to see your camera’s photos in the really cool Places album, where you can browse and find all your photos on a map interface.

We worked so much on our image decoder, and even implemented really, really efficient transcoding of jpeg images to reduce their size on the fly. Something we had hoped to be able to use for reducing the size of liveview frames, to be able to offer decent liveview over the low bandwidth of Bluetooth Low Energy. But sadly, after implementing all that, we hit other bottlenecks that prohibited us from being able to release this feature.

Our Baby

You probably read on our campaign page, that the Unleashed is not just another product out there, but it’s our Baby! Maybe now you have a little bit more of an idea of what we meant with that. We love the Unleashed and we’re pouring everything into it that we’ve got – to make it the coolest camera accessory that we personally always dreamt of!

Greetings from Berlin.

BACK TO INDIEGOGO

Posted on 2 Comments

Huge App Update 2.0.0

Great news for our Unleashed users: We reworked every part of our firmware and much of our apps in preparation for a new version of the Unleashed that we’ll be announcing next week: the Unleashed ’22. And we’re making all these improvements available to our Unleashed ’18 users as a free update!

Most of the time we spent developing the new Unleashed was on reworking every part of our firmware and much of our apps. We’ve been beta testing this for quite some time with about 200 users (thank you so much for your support!), have since fixed many bugs and even added a small feature or two along the way. We fixed many edge cases after getting customer feedback, or that we found during the rework. So if you’ve ever had an issue or been unhappy with your Unleashed, you should really give it another try. And for most of you who are already happy with it, this update will make you even happier 😉

The most noticeable improvements in the 2.0.0 update for your Unleasheds are in speed and stability,  Bluetooth connectivity on Android, as well as autoramping reliability in all cases! For a complete list of changes, please see our changelogs. After months of beta testing and internal testing, we’re confident we’ve ironed out virtually all bugs and issues. But amongst thousands of you using the Unleashed in creative ways, of course there’s a chance you’ll find something we missed. If you do, please don’t worry, and simply report it to support@foolography.com or on our community forum, and we’ll  get right on fixing it.

Posted on Leave a comment

How to Make a Timelapse With The Unleashed

Niagara Falls Sunset

One of the Unleashed’s greatest features is timelapse. In this article we want to introduce the concept of timelapses and how to create a timelapse with the Unleashed. Let us try to define the word timelapse in a few sentences:

“A timelapse is a sequence of photos taken over time. The photos are mostly taken at a certain frequency with a set interval time in between each photo. In the final result, the photo sequence is shown at a normal video frame rate (24-30 fps: frames per second), so time seems to move faster than usual, thus the word time lapse.”


Of course, you can also film something and then speed up the scene in post to have a similar effect. However, when creating a timelapse by taking interval shots, you have the freedom to choose the final frames per second rate. Additionally, you have every frame as a high quality photo so you can even create 8k time-lapse videos. And probably one of the biggest advantages – you don’t have to shoot an actual multi-hour long video with your camera.

To shoot a timelapse you can either take a photo every couple of seconds by hand (which we don’t recommend ;) ) or use an intervalometer. An intervalometer is basically a programmable camera trigger that takes the photos for you. There are different solutions out there serving this purpose, starting at under 100 EUR up to a couple of hundred Euros/Dollars. In the end, it depends on what you want to achieve.

With the intervalometer you can set the interval (after how many seconds the next photo should be taken) and how long you want to be shooting. As an example:

You want to take a timelapse of clouds passing by a mountain top. So you set up your camera with the intervalometer on a tripod and take a photo every 10 seconds for the next 3 hours. At the end you will have around 1080 photos. Combined in a video with a frame rate of 30 frames per seconds, you will have a video clip length of 36 seconds (1080/30 = 36). As you can see, there’s a little bit of math involved if you have a certain idea of how long the clip should be at the end.

Creating time lapses with the Unleashed

We think timelapses are fantastic things to capture and can add great value to your b-roll and videos. So we’re especially proud of the well-designed timelapse feature in the Unleashed. Apart from automatically showing you the expected clip length and amount of photos you will take (especially useful to see if your SD card still has enough space), the Unleashed app also gives you the option to do auto-ramped timelapses to capture day-to-night or night-to-day transitions where the camera settings change over time. This means you don’t have to manually adjust the exposure to match the changing light conditions. Check out our support video on the Holy Grail timelapse feature.

If you want to start with a simple timelapse, you can also check our FAQ and video on that feature. Nevertheless, we’d like to give a brief overview here, as well.

How-to

  1. When you open the app it is set to Photo mode. Click the 3 yellow lines in the bottom left corner to get to the menu and select Timelapse.
  2. The top area of the screen shows a summary of the camera’s current settings. You can change those settings by tapping on that area to see the detailed camera settings.
  3. In the center area you can set the interval i.e. in what frequency a photo should be taken, and the duration i.e. for how long the camera should take photos.
  4. Below that, the app calculates how many photos will be taken and what the expected clip length will be at 30 frames per second.
  5. In the top right corner of the screen, the app shows tips, warnings and errors. While you’ll be able to start a timelapse with tips and warnings, errors will grey out the start button. For example, the app will warn you when your SD card doesn’t have enough space for all the photos to be taken during the timelapse.
  6. To start, just tap the button at the bottom center. Once it’s started, the smartphone does not need to remain connected or in range for the Unleashed to finish the timelapse.

Once all photos are captured, you can either directly import them into a video editing software to create the video, give them a quick brush in lightroom, or get the most out of the timelapse by using a software like LRTimelapse to smooth the pictures transitions perfectly.

Feel free to share this blog post or comment below if you’ve found it helpful. Stay tuned as we’re going to give you more professional insights on timelapses with the help of one of our brand ambassadors and expert timelapse photographer.

Posted on Leave a comment

How to Take a Long Exposure With The Unleashed

Upon popular demand, we introduced the Long Exposure feature last summer. The Unleashed offers many technical possibilities, so it was a logical step to implement this. Thus the Unleashed replaces another essential part of a classic intervalometer – in addition to interval photography, it also enables bulb photography without touching the camera. In addition, the Unleashed also offers the possibility to define the length of the photo as desired – just press the shutter once and the rest happens automatically. More on this below. This replaced the Unleashed’s flash compensation feature, which we noticed most users weren’t using much, and made room for the Long Exposure feature. Here’s an overview of how to take stellar long exposures with your Unleashed!

Definition of long exposure photography

In case you’re new to the topic, here is a quick definition: a long exposure is any photo taken with a shutter speed much longer than usual, about 1 second and longer. This allows you to photograph very dark subjects like night skies and capture intentional motion blur in photos. The long exposure time smooths out the movement of water, clouds, cars, etc. creating very smooth, flowing effects.


Using the Unleashed App for long exposures

The first thing you need to know about long exposures are the three ways you can create one. For the first one you simply need to set your exposure time to bulb, making sure you are in manual (M) mode, and hold down the shutter button for as long as you want the exposure to be. This works well up until a certain point, but imagine holding it down for minutes, let alone hours.

Here is where the Long Exposure Duration setting comes in: it allows you to select a precise time in 1/3rd stop increments for up to 4.6 hours. Or choose time mode where you press once to open and once more to close the shutter. In both modes the Unleashed will keep the trigger pressed, so you no longer have to hold it manually. Of course you can also cancel at an earlier time. As usual, the Unleashed keeps shooting even when you close the app, or go out of range with your phone – no need to stay connected or keep the app on!


The long exposure feature is perfect for night photography, star trails, light painting and working with ND filters. For more inspiration and in-depth information on long exposures, check out our blog article about it here.

We hope this helps you better understand and use the Long Exposure function of your Unleashed. Make sure to tag us if you use it – we look forward to your shots!

Posted on 4 Comments

New app and firmware update available!

App-Icon with Badge

A couple of weeks ago we published a new app update for iOS and Android. Not only does it fix many bugs and improves overall performance and stability, it also includes a first firmware update for your Unleashed. This firmware update will fix all known bugs and issues that were caused by, or had something to do with the firmware on the Unleashed. Check out our forum entry “What are UNLEASHED’s 1.0 known issues?” to get detailed infos on what’s exactly been fixed.

In case you haven’t done the update yet, here’s a quick explanation. To get the firmware update you need to update the app first. Once you did this, the update will be available in your Unleashed profile in the app. To install the firmware update, make sure the Unleashed is plugged in, the camera is turned on and the app is connected. Tap “Install Update” and the magic happens. Updating will take about two minutes and once it’s done, a big checkmark will appear. For all Canon users: Please keep your camera “awake” by half-pressing the shutter button of the camera every ten seconds. This is necessary so the Unleashed gets power.

Unleashed App Screens

We are continuously working on the Unleashed and are planning to provide app and firmware updates on a regularly basis. The next update will probably include new features that we will announce at some point in the future.

If you have any feedback, please let us know. You can either have a look at our forum or write us an email to our info@ address. Thanks for your on-going support. Let’s continue to make a great product even greater! :-)