DSLR Controller AFMA is an app made to assist Auto-Focus Micro-Adjustment calibration of your lenses on your Canon EOS bodies, based on the moiré method.

It is based on the code for DSLR Controller and as such runs on the same devices and has the same connection capabilities. It can be download from Google Play. Of course, your camera must support Auto-Focus Micro-Adjustment for this to be useful at all.

It is currently in alpha stage. I'm releasing it in the currect state because I will be out of the country for a while, and I won't be able to finish it up further before I go. This document is very rushed and bare as well, for the same reason - I have run out of time. If any of you can come up with a decent name for the app, let me know as well. This document seems long and daunting, but once you've used it once or twice, it really only takes a minute or so to set up.

You can play with it now for free. Fair warning, it wil probably transition to a (cheapish) paid product if it ends up being useful.

The official website for this app is on DSLRController.com. Discussion, bug reports, etc can go in the thread on XDA-Developers.com.

The moiré method

This method uses a computer display and a per-pixel accurate target, which when in focus will in combination with your camera's filter and sensor produce a moiré pattern on the liveview display. The bigger that pattern, the better the focus.

One of the advantages over other methods is that it can be done in relative darkness, due to the display providing its own light source. At the same time the drawback is that you need a display of some sort.

You can read more about this method here [komar.org].

Cheap and off-brand lenses

Currently no photographs are taken during the tests, and we rely on the images and adjustments made possible by liveview, but this may change in the future. Because we are using liveview adjustments, and not actually setting the AFMA value in camera, the quality of the results is also dependent on the lens.

Cheaper and off-brand lenses often do not have remote-controlled focus-steps the same size in both directions, which may skew the results. Additionally, those focus steps may not correspond to actual AFMA values. So if you get a suggested adjustment of +10, then run it again and get a suggested adjustment of -10, you should probably try +5.

This all works pretty well with most Canon L glass tested during development, though!

The app

This app can display a per-pixel accurate target on your Android device's screen. Usually a bigger target is better however, so you should usually display the target on your largest tablet or laptop. Not all tablets or laptops run Android, so the app provides a built-in webserver you can navigate any browser on the same Wi-Fi network to to display the target in that browser.

You can run the moiré tests manually at this point, or if you connect your Android device to your Canon EOS camera, the app can run the tests for you and show the results. It does this by repeatedly focussing and observing liveview while slightly adjusting the current focus. It can use another device as an external target, or if your USB cable is long enough or you are connected over Wi-Fi, it can use the current device as target.

Target placement

As a rule of thumb, the target should be placed approximately 25x the focal length from the camera. So if you have a 100mm lens, that would be 25x100=2500mm (250cm, 2.5m, 100", 8ft). You may wish to deviate from this rule if for example you always use a certain lens for macro, to make sure it is optimized for shooting subjects at close distance, or farther away for your landscape lens. Use your best judgment.

Some people advise 50x the focal length for Auto-Focus Micro-Adjustment. There doesn't seem to be a clear consensus about which is better. With this method however 25x the focal length is usually a better fit as the target may become too small otherwise.

There are four different targeting modes:

Each of these shows a combination of the following displays, which can be switched between using the switch camera button at the top-right of the screen, except when using the browser as that only provides the single target mode.

When the target is displayed on-screen in any of the modes, there's a zoom button available at the top-right of the screen. This button does not actually zoom, it changes the thickness of the target's pattern so the smallest component is 1, 2, or 4 pixels wide. Due to varying distances of the target, varying resolving power of the lenses used, and the varying pixels-per-inch of modern displays, you may need to change this setting.

So which setting do you use? When you are aiming the camera at the target, enable liveview on the camera, and use the on-camera zoom button to reach 5x or 10x zoom. Make sure you are focussed, and switch between the (target) zoom settings, to see which one generates a moiré pattern on your liveview. The best outcome is that the eye of the target shows a moiré pattern, but if that cannot be achieved, the middle ring is a good second. If no moiré pattern can be achieved, that doesn't mean the automated calibration will not work, but it may need some trying to see which setting gets you the best result - start with 1x.

The Android front-camera image is displayed to help you align the Android device with the camera's focal plane. Of course, the display should be as perpendicular to the DSLR's view vector as possible. From the Android's front-camera's point-of-view, this means that the lens should be somewhere near the middle of the screen. It's not as easy as picking the exact middle as you would when using a mirror for alignment, as the Android's camera is positioned somewhere in the bezel, not at the middle of the screen as would be the ideal case for alignment. Aside from showing the front-camera's image, this screen also shows you a grid that may help you judge if the display is set correctly - they should appear to run parallel to eachother, not converging in the infinite.

The last mode shows you the liveview image from the DSLR. This mode has the most buttons. This is used to tell the app exactly where the target is. Ideally, the center of the target should be exactly at the center of this screen. You can drag the target around with your finger, and make it bigger or smaller by pinching. There is also an A button to find the target automatically, which sometimes actually works.

There are buttons to switch zoom betwen 1x and 5x in this mode, as well as a button to auto-focus. If you are using the same device to control the camera as well as display the target, the image in this mode is not live. It is recorded when the target is visible. As such, if you press the zoom or focus buttons, it will show the target for a few seconds again and acquire a new image. Make sure you are not in the path between the camera and the tablet when you press those buttons.

You can save the current target setup by pressing the OK (checkmark) button.

Display setup

The target being shown on a display has its advantages, such as it being its own light source. A caveat worth nothing is that displays usually automatically dim or turn themselves off after a while, as well as automatically varying brightness, depending on the device.

Androids, iPads, Windows PCs, Macs, Linux boxes, they all do this. It is advised to turn off the feature to automatically turn off the screen (and/or device), setting the display to the maximum brightness (usually), and disabling automatic brightness (if this feature is present). TODO: Add a list of methods how to do this on various devices.

If you are displaying the target on an Android device through the app (not through a browser), then the app will automatically keep the screen no for you. You still need to manually set the screen to full brightness, though.

Camera setup

If you let the app run its tests, you need to put your camera in aperture priority (Av) mode. It is also recommended to turn off image stabilisation. The lens must not be set to manual focus. Lastly, you need to make sure your camera is set to focus using only the center point.

Higher end cameras may have multiple single-point focus modes. The 5D mark III for example has a spot-AF mode next to the normal single-point mode. You are encouraged to play around with it, but in our own tests the spot-AF mode did not generally focus as consistently as the normal single-point mode. Cheap filters may also interfere with AF consistenty (as well as your pictures).

Your camera should be mounted on a quality (heavy, sturdy) tripod. Especially with long focal lengths and heavy lenses this matters a lot. If you have wooden floors, even walking in vicinity of the tripod can reduce the quality of the calibration.

Note that the app may change the following settings on your camera:

Running the test

After everything is set up - the camera, the target, the display, and the target area is configured in the app - running the test is just a matter of pressing the button inside the app and waiting a few minutes for the results.

If your device is both controlling the camera and serving as the target, all you will see during testing is the target. If the target is external, this screen will show you a little bit of what is going on.


After the test is run, you will be presented with the test results. You are left to do the interpretation of the results yourself. Unless you change it under Settings, the base test is run four times. The base test itself consists of testing focus both in the near and far direction, after defocusing in both the near and far direction - which are also four tests. So you will by default see a table with sixteen results. Each of the results consists of a positive or negative AFMA number, an improvement ratio, and a relative sharpness score.

The AFMA score is not absolute - it is relative to the current setting. So if you have AFMA set to +6 and you get a result of -2, that would be +6 + -2 = +4. If you see a value of 0.00, that may mean the focus is spot on, or it may mean the ideal focus is in the other direction.

For example, if your ideal focus is +4, the left AFMA column will ideally all be -0.00. This is because each of the tests starts with auto-focus, and then moves in one direction or the other. If the ideal focus can't be found in that direction, the best focus in that test was the auto-focus result itself - an adjustment of 0.00.

The improvement column notes the improvement of sharpness over the auto-focus result for that test. The higher this percentage, the worse the auto-focus result was. Even if your AFMA is currently configured correctly, it is not strange to see a lot of non-zero AFMA results with a very low improvement percentage like 3%.

The relative sharpness column is the highest achieved sharpness in this test compared to all the other tests. Often most results will be in the 90% and up range. If you find a small number of results below that, then chances are high that the test's auto-focus failed. Similarly, if you find a single high-percentage score and are all very closely grouped around a different percentage, that high-percentage score should likely also be discarded.

Varying between cameras and lenses, the results of each test may be fully consistent, or vary a little to a lot. If you take all of the above into account, there is usually an average number that appears to be center of focus.

Note that the results are also saved on your internal storage in the Android/eu.chainfire.dslrcontroller.afma/files folder.


We've calibrated a bunch of lenses using this method, with better results than before calibration. That being said, nothing is perfect. Some lenses work great with this method, others do not. Your mileage may vary, but be sure to let me know your experiences in the thread on XDA-Developers.com