gphoto2 and bracketed exposure short intro  

Everything you need to motorize your head
no avatar
jeongyun
Member
 
Posts: 33
Likes: 0 post
Liked in: 0 post
Joined: Mon Dec 14, 2009 5:54 pm
Info

by jeongyun » Thu Mar 04, 2010 8:30 am

Okay, here comes the plugin.

Select the code then copy & paste it into your text editor.
Save it as gphotoBracketPlugins.py
Put it at .config/papywizard2/plugins
(Re)start papywizard and check if 'gphoto Bracket' plugin is listed (Hardware menu / choose Plugins / Shutter)

Code: Select all
# -*- coding: utf-8 -*-

""" Panohead remote control.

License
=======

 - B{Papywizard} (U{http://www.papywizard.org}) is Copyright:
  - (C) 2007-2010 Frédéric Mantegazza

This software is governed by the B{CeCILL} license under French law and
abiding by the rules of distribution of free software.  You can  use,
modify and/or redistribute the software under the terms of the CeCILL
license as circulated by CEA, CNRS and INRIA at the following URL
U{http://www.cecill.info}.

As a counterpart to the access to the source code and  rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty  and the software's author,  the holder of the
economic rights,  and the successive licensors  have only  limited
liability.

In this respect, the user's attention is drawn to the risks associated
with loading,  using,  modifying and/or developing or reproducing the
software by the user in light of its specific status of free software,
that may mean  that it is complicated to manipulate,  and  that  also
therefore means  that it is reserved for developers  and  experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
requirements in conditions enabling the security of their systems and/or
data to be ensured and,  more generally, to use and operate it in the
same conditions as regards security.

The fact that you are presently reading this means that you have had
knowledge of the CeCILL license and that you accept its terms.

Module purpose
==============

Plugins

Implements
==========

- GphotoBracketShutter
- GphotoBracketShutterController

@author: Jeongyun Lee
@author: Frédéric Mantegazza
@copyright: (C) 2010 Jeongyun Lee
@copyright: (C) 2007-2010 Frédéric Mantegazza
@license: CeCILL
"""

__revision__ = ""

import time
import subprocess

from PyQt4 import QtCore, QtGui

from papywizard.common.loggingServices import Logger
from papywizard.plugins.pluginsManager  import PluginsManager
from papywizard.plugins.abstractShutterPlugin import AbstractShutterPlugin
from papywizard.plugins.shutterPluginController import ShutterPluginController
from papywizard.view.pluginFields import ComboBoxField, LineEditField, SpinBoxField, DoubleSpinBoxField, \
                                         CheckBoxField, SliderField, FileSelectorField

NAME = "Gphoto Bracket"

DEFAULT_MIRROR_LOCKUP = False
DEFAULT_MIRROR_LOCKUP_COMMAND = "gphoto2 --capture-image"
DEFAULT_SHOOT_COMMAND = "gphoto2 --capture-image"
DEFAULT_BRACKETING_NBPICTS = 1
DEFAULT_BRACKETING_STEP = 1.

LABEL_SHOOT_COMMAND = QtGui.QApplication.translate("gphotoBracketPlugins", "Shoot command")
LABEL_NB_PICTS = QtGui.QApplication.translate("gphotoBracketPlugins", "Bracketing # picts")
LABEL_EV_STEP = QtGui.QApplication.translate("gphotoBracketPlugins", "EV step")
LABEL_EV_LIST = QtGui.QApplication.translate("gphotoBracketPlugins", "Bracketing sequence")
LABEL_ADVANCED = QtGui.QApplication.translate("gphotoBracketPlugins", "Advanced")
LABEL_ADVANCED_TAB = QtGui.QApplication.translate("gphotoBracketPlugins", 'Advanced')
LABEL_PLUS_NB_PICTS = QtGui.QApplication.translate("gphotoBracketPlugins", "Plus(+) bracketing # picts")
LABEL_PLUS_STEP = QtGui.QApplication.translate("gphotoBracketPlugins", "+ step")
LABEL_MINUS_NB_PICTS = QtGui.QApplication.translate("gphotoBracketPlugins", "Minus(-) bracketing # picts")
LABEL_MINUS_STEP = QtGui.QApplication.translate("gphotoBracketPlugins", "- step")

class GphotoBracketShutter(AbstractShutterPlugin):
    """
    """
    def _init(self):
        pass

    def _getTimeValue(self):
        return -1

    def _getMirrorLockup(self):
        return self._config['MIRROR_LOCKUP']

    def _getBracketingNbPicts(self):
        return self._config['BRACKETING_NB_PICTS']

    def _defineConfig(self):
        Logger().trace("GphotoBracketShutter._defineConfig()")
        #AbstractShutterPlugin._defineConfig(self)
        self._addConfigKey('_mirrorLockup', 'MIRROR_LOCKUP', default=DEFAULT_MIRROR_LOCKUP)
        self._addConfigKey('_mirrorLockupCommand', 'MIRROR_LOCKUP_COMMAND', default=DEFAULT_MIRROR_LOCKUP_COMMAND)
        self._addConfigKey('_shootCommand', 'SHOOT_COMMAND', default=DEFAULT_SHOOT_COMMAND)
        self._addConfigKey('_bracketingNbPicts', 'BRACKETING_NB_PICTS', default=DEFAULT_BRACKETING_NBPICTS)
        self._addConfigKey('_bracketingEvStep', 'BRACKETING_EV_STEP', default=DEFAULT_BRACKETING_STEP)
        self._addConfigKey('_bracketingPlusNbPicts', 'BRACKETING_PLUS_NB_PICTS', default=int(DEFAULT_BRACKETING_NBPICTS/2))
        self._addConfigKey('_bracketingMinusNbPicts', 'BRACKETING_MINUS_NB_PICTS', default=int(DEFAULT_BRACKETING_NBPICTS/2))
        self._addConfigKey('_bracketingPlusStep', 'BRACKETING_PLUS_STEP', default=DEFAULT_BRACKETING_STEP)
        self._addConfigKey('_bracketingMinusStep', 'BRACKETING_MINUS_STEP', default=DEFAULT_BRACKETING_STEP)
        self._addConfigKey('_bracketingEvList', 'BRACKETING_EV_LIST', default='')
        self._addConfigKey('_bracketingAdvanced', 'BRACKETING_ADVANCED', default=False)

    def lockupMirror(self):
        # @todo: implement mirror lockup command
        Logger().debug("GphotoBracketShutter.lockupMirror(): execute command '%s'..." % self._config['MIRROR_LOCKUP_COMMAND'])
        time.sleep(1)
        Logger().debug("GphotoBracketShutter.lockupMirror(): command over")
        return 0

    def init(self):
        # gphoto2 --list-config
        # Launch external command
        args = [ self._config['SHOOT_COMMAND'].split()[0] ]
        args.insert(1, "--list-config")
        Logger().debug("GphotoBracketShutter.init(): execute command '%s'..." % ' '.join(args))

        p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        # Wait end of execution
        stdout, stderr = p.communicate()
        if p.returncode != 0 and stderr:
            Logger().error("GphotoBracketShutter.init(): stderr:\n%s" % stderr.strip())
        Logger().debug("GphotoBracketShutter.init(): stdout:\n%s" % stdout.strip())

        for line in stdout.splitlines():
            if line.endswith('/shutterspeed'):
                self._speed_config = line
            elif line.endswith('/exptime'):
                self._speed_config = line

        # gphoto2 --get-config
        # Launch external command
        args = [ self._config['SHOOT_COMMAND'].split()[0] ]
        args.insert(1, "--get-config")
        args.insert(2, self._speed_config)
        Logger().debug("GphotoBracketShutter.init(): execute command '%s'..." % ' '.join(args))

        p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        # Wait end of execution
        stdout, stderr = p.communicate()
        if p.returncode != 0 and stderr:
            Logger().error("GphotoBracketShutter.init(): stderr:\n%s" % stderr.strip())
        Logger().debug("GphotoBracketShutter.init(): stdout:\n%s" % stdout.strip())

        # Load all available speeds and the current speed
        self._avail_speeds = []
        for line in stdout.splitlines():
            tokens = line.split()
            if tokens[0] == 'Current:':
                self._basespeed = tokens[1]
            elif tokens[0] == 'Choice:':
                self._avail_speeds.insert(int(tokens[1]), tokens[2])
                if self._basespeed == tokens[2]:
                    self._basespeed_index = int(tokens[1])

        if float(self._avail_speeds[1]) > float(self._avail_speeds[2]):
            self._speed_order = 1.0 # slower speed first
        else:
            self._speed_order = -1.0 # faster speed first

        # Guess EV step (1/2, or 1/3)
        if float(self._avail_speeds[1])/float(self._avail_speeds[3]) < 1.9:
            self._evsteps = 3
        else:
            self._evsteps = 2

        Logger().info("GphotoBracketShutter.init(): basespeed: %s, config: %s, order: %+g, steps: 1/%d" % (self._basespeed, self._speed_config, self._speed_order, self._evsteps))


    def _getEvOffset(self, bracketNumber):
        # bracketNumber out of self._config['BRACKETING_NB_PICTS']
        plusNbPicts = int(self._config['BRACKETING_PLUS_NB_PICTS'])
        minusNbPicts = int(self._config['BRACKETING_MINUS_NB_PICTS'])
        plusStep = self._config['BRACKETING_PLUS_STEP']
        minusStep = self._config['BRACKETING_MINUS_STEP']

        if bracketNumber <= minusNbPicts: # 1,2...minusNbPicts
            return (bracketNumber - minusNbPicts - 1) * minusStep
        elif bracketNumber >= (minusNbPicts+2): # minusNbPicts+2, +3...(minusNbPicts+plusNbPicts+1)
            return (bracketNumber - minusNbPicts - 1) * plusStep
        else:
            return 0

    def shoot(self, bracketNumber):
        Logger().debug("GphotoBracketShutter.shoot(): bracketNumber=%d" % bracketNumber)

        ev_offset = self._getEvOffset(bracketNumber)

        speed_index = self._basespeed_index - int(ev_offset * self._evsteps * self._speed_order)

        # see if shutter speed is out of range
        if self._speed_order > 0: # slow speed first
            if speed_index < 1:
                speed_index = 1
            elif speed_index >= len(self._avail_speeds):
                speed_index = len(self._avail_speeds)-1
        elif self._speed_order < 0: # fast speed first
            if speed_index < 0:
                speed_index = 0
            elif speed_index >= (len(self._avail_speeds)-1):
                speed_index = len(self._avail_speeds)-2
        Logger().info("GphotoBracketShutter.shoot(): EV %+d, shutter speed: %s (1/%d steps)" % (int(ev_offset), self._avail_speeds[speed_index], self._evsteps))

        # Launch external command
        args = self._config['SHOOT_COMMAND'].split()
        args.insert(1, "--set-config")
        args.insert(2, "%s=%s" % (self._speed_config, self._avail_speeds[speed_index]))
        args.append("--set-config")
        args.append("%s=%s" % (self._speed_config, self._basespeed))

        Logger().debug("GphotoBracketShutter.shoot(): execute command '%s'..." % ' '.join(args))

        if True:
            p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

            # Wait end of execution
            stdout, stderr = p.communicate()
            if p.returncode != 0 and stderr:
                Logger().error("GphotoBracketShutter.shoot(): stderr:\n%s" % stderr.strip())
            Logger().debug("GphotoBracketShutter.shoot(): stdout:\n%s" % stdout.strip())

            return p.returncode
        else:
            return 0

class GphotoBracketShutterController(ShutterPluginController):
    def _getWidget(self, tab, label):
        return self._fields[tab][label]['widget']

    def _updateAdvanced(self):
        advanced = self._getWidget('Main', LABEL_ADVANCED).value()
        self._getWidget('Main', LABEL_NB_PICTS).setDisabled(advanced)
        self._getWidget('Main', LABEL_EV_STEP).setDisabled(advanced)
        self._getWidget('Advanced', LABEL_PLUS_NB_PICTS).setDisabled(not advanced)
        self._getWidget('Advanced', LABEL_MINUS_NB_PICTS).setDisabled(not advanced)
        self._getWidget('Advanced', LABEL_PLUS_STEP).setDisabled(not advanced)
        self._getWidget('Advanced', LABEL_MINUS_STEP).setDisabled(not advanced)

    def _updateBracketingInfo(self,param):
        self._updateAdvanced()

        advanced = self._getWidget('Main', LABEL_ADVANCED).value()
        if not advanced:
            halfNbPicts = (self._getWidget('Main', LABEL_NB_PICTS).value()-1)/2
            evStep = self._getWidget('Main', LABEL_EV_STEP).value()
            self._getWidget('Advanced', LABEL_PLUS_NB_PICTS).setValue(halfNbPicts)
            self._getWidget('Advanced', LABEL_MINUS_NB_PICTS).setValue(halfNbPicts)
            self._getWidget('Advanced', LABEL_PLUS_STEP).setValue(evStep)
            self._getWidget('Advanced', LABEL_MINUS_STEP).setValue(evStep)

        plusNbPicts = int(self._getWidget('Advanced', LABEL_PLUS_NB_PICTS).value())
        minusNbPicts = int(self._getWidget('Advanced', LABEL_MINUS_NB_PICTS).value())
        plusStep = int(self._getWidget('Advanced', LABEL_PLUS_STEP).value())
        minusStep = int(self._getWidget('Advanced', LABEL_MINUS_STEP).value())
        self._getWidget('Main', LABEL_NB_PICTS).setValue(1 + plusNbPicts + minusNbPicts)

        ev_list = [ ]
        if minusNbPicts > 0:
            for i in range(-minusNbPicts, 0):
                ev_list.append("%+g" % (i * minusStep))
        ev_list.append("0")
        if plusNbPicts > 0:
            for i in range(1, plusNbPicts+1):
                ev_list.append("%+g" % (i * plusStep))

        self._getWidget('Main', LABEL_EV_LIST).setValue(", ".join(ev_list))
        self._getWidget('Advanced', LABEL_EV_LIST).setValue(", ".join(ev_list))

    def _defineGui(self):
        Logger().trace("GphotoBracketShutterController._defineGui()")
        ShutterPluginController._defineGui(self)

        #self._addWidget('Main', QtGui.QApplication.translate("gphotoBracketPlugins", "Mirror lockup"),
                        #CheckBoxField, (), 'MIRROR_LOCKUP')
        #self._addWidget('Main', QtGui.QApplication.translate("gphotoBracketPlugins", "Mirror lockup command"),
                        #LineEditField, (), 'MIRROR_LOCKUP_COMMAND')

        # Main tab
        self._addWidget('Main', LABEL_SHOOT_COMMAND, LineEditField, (), 'SHOOT_COMMAND')
        self._addWidget('Main', LABEL_NB_PICTS, SpinBoxField, (1, 11), 'BRACKETING_NB_PICTS')
        self._getWidget('Main', LABEL_NB_PICTS).setSingleStep(2)
        self._addWidget('Main', LABEL_EV_STEP, DoubleSpinBoxField, (1.0, 5.0, 1, 1.0, "", " ev"), 'BRACKETING_EV_STEP')
        self._addWidget('Main', LABEL_EV_LIST, LineEditField, (), 'BRACKETING_EV_LIST')
        self._getWidget('Main', LABEL_EV_LIST).setDisabled(True)
        self._addWidget('Main', LABEL_ADVANCED, CheckBoxField, (), 'BRACKETING_ADVANCED')

        # Advanced tab
        self._addTab('Advanced', LABEL_ADVANCED_TAB)

        self._addWidget('Advanced', LABEL_PLUS_NB_PICTS, SpinBoxField, (0, 11), 'BRACKETING_PLUS_NB_PICTS')
        self._addWidget('Advanced', LABEL_PLUS_STEP, DoubleSpinBoxField, (1.0, 5.0, 1, 1.0, "", " ev"), 'BRACKETING_PLUS_STEP')
        self._addWidget('Advanced', LABEL_MINUS_NB_PICTS, SpinBoxField, (0, 11), 'BRACKETING_MINUS_NB_PICTS')
        self._addWidget('Advanced', LABEL_MINUS_STEP, DoubleSpinBoxField, (1.0, 5.0, 1, 1.0, "", " ev"), 'BRACKETING_MINUS_STEP')
        self._addWidget('Advanced', LABEL_EV_LIST, LineEditField, (), 'BRACKETING_EV_LIST')
        self._getWidget('Advanced', LABEL_EV_LIST).setDisabled(True)

        self.connect(self._getWidget('Main', LABEL_NB_PICTS), QtCore.SIGNAL("valueChanged(int)"), self._updateBracketingInfo)
        self.connect(self._getWidget('Main', LABEL_EV_STEP), QtCore.SIGNAL("valueChanged(double)"), self._updateBracketingInfo)
        self.connect(self._getWidget('Main', LABEL_ADVANCED), QtCore.SIGNAL("stateChanged(int)"), self._updateBracketingInfo)
        self.connect(self._getWidget('Advanced', LABEL_PLUS_NB_PICTS), QtCore.SIGNAL("valueChanged(int)"), self._updateBracketingInfo)
        self.connect(self._getWidget('Advanced', LABEL_MINUS_NB_PICTS), QtCore.SIGNAL("valueChanged(int)"), self._updateBracketingInfo)
        self.connect(self._getWidget('Advanced', LABEL_PLUS_STEP), QtCore.SIGNAL("valueChanged(double)"), self._updateBracketingInfo)
        self.connect(self._getWidget('Advanced', LABEL_MINUS_STEP), QtCore.SIGNAL("valueChanged(double)"), self._updateBracketingInfo)

        self._updateAdvanced()

def register():
    """ Register plugins.
    """
    PluginsManager().register(GphotoBracketShutter, GphotoBracketShutterController, capacity='shutter', name=NAME)
Last edited by jeongyun on Thu Mar 04, 2010 8:30 am, edited 1 time in total.

no avatar
jeongyun
Member
 
Posts: 33
Likes: 0 post
Liked in: 0 post
Joined: Mon Dec 14, 2009 5:54 pm
Info

by jeongyun » Thu Mar 04, 2010 9:08 am

Here's how you use this bracketing plugin

1. Select Hardware menu / Plugins / Shutter / choose 'Gphoto Bracket'
(You don't need to repeat this for use next time)

2. Set up the camera
2.1 Make sure your DSLR is hooked up with your computer with a USB cable
2.2 Turn on the camera
2.3 Set the camera to M (Manual) mode. (This plugin assumes it, and will only work with M mode)
2.4 Adjust shutter speed, aperture, and ISO. This shutter speed will be used as a base by the plugin.

3. Hardware / Connect
3.1 Select Hardware menu / select 'Connect'
3.2 The plugin will read the camera's current shutter speed, and all available shutter speeds

4. Set up bracketing
4.1 Click Configure... on main window / click Plugins tab / click Shutter Configure...
4.2 You'll see a window like the first screenshot in this post http://www.autopano.net/forum/viewtopic.php?pid=59698#p59698

Main tab:
- Shoot command: the location of gphoto2 command and capture parameter
- Bracketing # picts: The total number of pictures you'll take at each position.
- EV step: The exposure differential between subsequent bracketing shots.
- Bracketing Sequence: Exposure of each bracketing shot in shooting order. It starts with under exposure shots, then normal exposure shot, ends with over exposure shots. Each number represents how many stops the shot will be over or underexposed relative to the base exposure. For example +2 means the shot will be two stops overexposed.

Advanced tab:
- If you check 'Advanced' check box in Main tab, you can adjust the number of overexposed shots and underexposed shots independently. Otherwise, the plugin will take the same number of underexposed and overexposed shots.
- See the third screenshot http://www.autopano.net/forum/viewtopic.php?pid=59698#p59698


I hope my writing is understandable. I'd love to hear your feedback.

no avatar
lordtangent
Member
 
Posts: 29
Likes: 0 post
Liked in: 0 post
Joined: Thu Jan 21, 2010 5:23 am
Info

by lordtangent » Thu Mar 04, 2010 9:08 am

I notice you are using the command line version of gphoto2. Is there a compile of gphoto2 out there anywhere for the Nokia N810? Is it even possible to use the N810 to control a camera via USB?

(I have a Netbook I could use for this also. But I want to try and get everything as compact as possible and use my N810 if I can.)
Last edited by lordtangent on Thu Mar 04, 2010 9:09 am, edited 1 time in total.

no avatar
Photosbykev
Member
 
Posts: 149
Likes: 9 posts
Liked in: 4 posts
Joined: Mon Feb 15, 2010 10:13 pm
Location: Gloucester, UK
Info

by Photosbykev » Thu Mar 04, 2010 9:15 am

lordtangent wrote:I notice you are using the command line version of gphoto2. Is there a compile of gphoto2 out there anywhere for the Nokia N810? Is it even possible to use the N810 to control a camera via USB?

(I have a Netbook I could use for this also. But I want to try and get everything as compact as possible and use my N810 if I can.)

It would be very neat to have this running on the N8x0, as LordTangent comments it would remove the need for a tethered netbook
Last edited by Photosbykev on Thu Mar 04, 2010 9:16 am, edited 1 time in total.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Mar 04, 2010 9:42 am

jeongyun, thanks for the doc.

About gphoto2 on N8x0, even if it has been ported, the big issue will be the USB port! I read it is possible to turn the N810 USB port to host-type (rather than slave), but it needs to be externally powered up... Not that simple!
Frédéric

no avatar
Photosbykev
Member
 
Posts: 149
Likes: 9 posts
Liked in: 4 posts
Joined: Mon Feb 15, 2010 10:13 pm
Location: Gloucester, UK
Info

by Photosbykev » Thu Mar 04, 2010 9:54 am

fma38 wrote:jeongyun, thanks for the doc.

About gphoto2 on N8x0, even if it has been ported, the big issue will be the USB port! I read it is possible to turn the N810 USB port to host-type (rather than slave), but it needs to be externally powered up... Not that simple!

Life is never easy, there wouldn't be any challenge if it was :)

no avatar
lordtangent
Member
 
Posts: 29
Likes: 0 post
Liked in: 0 post
Joined: Thu Jan 21, 2010 5:23 am
Info

by lordtangent » Thu Mar 04, 2010 10:23 am

I did some Googling into it and it is totally possible. There are even off-the-shelf cable kits:

http://wiki.maemo.org/USB_host_mode

It seems that many devices DON'T require external power. However, if power is required, there are battery powered hubs!
(CyberPower CP-H420MP 4-Port USB Hub)
http://www.amazon.com/gp/product/B0002UQALQ

The N8X0 would be really handy as stand-alone controller for bracketing and time-lapse. Once I get the basic Bluetooth / Merlin stuff going I might delve into getting this going to gain more advanced bracketing right from the N810.

no avatar
mediavets
Moderator
 
Posts: 16415
Likes: 2 posts
Liked in: 130 posts
Joined: Wed Nov 14, 2007 2:12 pm
Location: Isleham, Cambridgeshire, UK.
Info

by mediavets » Thu Mar 04, 2010 10:35 am

lordtangent wrote:I did some Googling into it and it is totally possible. There are even off-the-shelf cable kits:

http://wiki.maemo.org/USB_host_mode

It seems that many devices DON'T require external power. However, if power is required, there are battery powered hubs!
(CyberPower CP-H420MP 4-Port USB Hub)
http://www.amazon.com/gp/product/B0002UQALQ

The N8X0 would be really handy as stand-alone controller for bracketing and time-lapse. Once I get the basic Bluetooth / Merlin stuff going I might delve into getting this going to gain more advanced bracketing right from the N810.

FWIW I played with this capability and got a regular USB PC keyboard working on my N800 some time back.
Andrew Stephens
Many different Nodal Ninja and Agnos pano heads. Merlin/Panogear mount with Papywizard on Nokia Internet tablets.
Nikon D5100 and D40, Sigma 8mm f3.5 FE, Nikon 10.5mm FE, 35mm, 50mm, 18-55mm, 70-210mm. Promote control.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Mar 04, 2010 10:58 am

Thanks for the links! I will order a usb adapter and make some tests.

gphoto2 port for maemo is here:

https://garage.maemo.org/frs/?group_id=837&release_id=2456

Also have a look at this thread:

http://talk.maemo.org/showthread.php?t=13868

If someone can make some tests...
Frédéric

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Mar 04, 2010 4:15 pm

As I said, I plan to order a Nokia N800 USB 360 OTG Adapter. Is there anybody near Grenoble interested? Shipping cost from Canada is only $11, so ordering several items is only interesting if I can give them in hands...
Frédéric

no avatar
mediavets
Moderator
 
Posts: 16415
Likes: 2 posts
Liked in: 130 posts
Joined: Wed Nov 14, 2007 2:12 pm
Location: Isleham, Cambridgeshire, UK.
Info

by mediavets » Thu Mar 04, 2010 11:34 pm

fma38 wrote:As I said, I plan to order a Nokia N800 USB 360 OTG Adapter. Is there anybody near Grenoble interested? Shipping cost from Canada is only $11, so ordering several items is only interesting if I can give them in hands...

Do you need that device?:
http://konttoristhoughts.blogspot.com/2008/01/usb-otg-easy-way.html
Andrew Stephens
Many different Nodal Ninja and Agnos pano heads. Merlin/Panogear mount with Papywizard on Nokia Internet tablets.
Nikon D5100 and D40, Sigma 8mm f3.5 FE, Nikon 10.5mm FE, 35mm, 50mm, 18-55mm, 70-210mm. Promote control.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Mar 04, 2010 11:43 pm

Frédéric

no avatar
lordtangent
Member
 
Posts: 29
Likes: 0 post
Liked in: 0 post
Joined: Thu Jan 21, 2010 5:23 am
Info

by lordtangent » Fri Mar 05, 2010 4:31 am

fma38 wrote:Thanks for the links! I will order a usb adapter and make some tests.

gphoto2 port for maemo is here:

https://garage.maemo.org/frs/?group_id=837&release_id=2456

Also have a look at this thread:

http://talk.maemo.org/showthread.php?t=13868

If someone can make some tests...

Looks very promising! I'm going to go ahead and order the adapters also. I only just received my N810, so I'm still getting familiar with it. (I'm pretty familiar with Linux but not the Maemo distro) Once I'm familiar enough with it I'll install the gphoto2 port and do some tests.

I found a cable that's more appropriate for the N810. It is supposed to automatically switch the tablet into Host Mode like the swivel adapter for the N800 from Electronic Product Online. However, this one has free shipping!

http://cgi.ebay.com/Micro-USB-Host-Cable-for-Nokia-N810-OTG-on-the-go-N-810_W0QQitemZ250589706476QQcmdZViewItemQQptZPDA_Accessories

The same seller also has an in-expensive OTG cable for the N800 (Also with free shipping):

http://cgi.ebay.com/USB-Host-Cable-for-Nokia-N800-OTG-on-the-go-800-data-N_W0QQitemZ260561835937QQcmdZViewItemQQptZPDA_Accessories
Last edited by lordtangent on Fri Mar 05, 2010 5:16 am, edited 1 time in total.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Fri Mar 05, 2010 7:39 am

I'm wondering if these cables automatically switch the N8x0 to USB host mode, as the other one does?
Frédéric

no avatar
lordtangent
Member
 
Posts: 29
Likes: 0 post
Liked in: 0 post
Joined: Thu Jan 21, 2010 5:23 am
Info

by lordtangent » Fri Mar 05, 2010 9:34 am

The description of the cable for the N810 states:

"It works fine on Nokia N810. You don't need USB Control any more. Automatically Host mode, easily connect with card reader, flash disk, digital camera...."

Which I take to mean, yes... it does switch to Host Mode automatically. (USB Control is the tool used to manually switch on Host Mode)

I'm not as sure about the cable for the N800 though, as the description is less detailed. You could always use the "Ask a question" link on the eBay web page.

There are others on ebay selling similar OTG cables for even less. This guy seems to be the only one selling a MICRO connector that's compatible with the N810 however.

I like these cables more than the 360 swivel cable anyway, since I'd rather have a pig-tail than the swivel, which sort of forces you to use the cable in a pretty specific way. Plus for the N810 I only need to get one cable compared to the setup from Electronic Product Online, which requires TWO adapters + exorbitant shipping rates.

I've ordered the N810 OTG cable on eBay from "business2828" and if you can wait a couple of weeks (the shipping time for Hong Kong) I can test it and share the results.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Fri Mar 05, 2010 9:56 am

Ok, thanks!
Frédéric

no avatar
Photosbykev
Member
 
Posts: 149
Likes: 9 posts
Liked in: 4 posts
Joined: Mon Feb 15, 2010 10:13 pm
Location: Gloucester, UK
Info

by Photosbykev » Fri Mar 05, 2010 12:10 pm

I've just ordered the N800 OTG cable on eBay from "business2828" so it will be interesting to see if there is any difference with the N810 cable Lordtangent has ordered
Last edited by Photosbykev on Fri Mar 05, 2010 12:10 pm, edited 1 time in total.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Fri Mar 05, 2010 12:14 pm

I just received the answer: the N800 also switches to USB host when the cable is pluged-in. In fact, the cables are all the same, except for the connectors. I ordered several USB-mini for the N800 (pour les grenoblois intéressés), or for other devices which are able to switch to USB host.
Frédéric

no avatar
lordtangent
Member
 
Posts: 29
Likes: 0 post
Liked in: 0 post
Joined: Thu Jan 21, 2010 5:23 am
Info

by lordtangent » Thu Mar 18, 2010 4:25 am

To update my progress on getting gphoto2 running on the N810:

I received the cable today and installed the build of gphoto2 at https://garage.maemo.org/frs/?group_id=837&release_id=2456

First of all, I want to report the OTG cable for the N810 from "business2828" works like a charm. I was able to power and mount a USB thumb drive. This alone seems worth the price of this cable. However, that's not why I purchased it... so on to the rest...

I ran into problems with gphoto2. Simply installing it from the .deb isn't good enough. It can't auto-detect the camera. I'm pretty sure this is a configuration problem as the gphoto2 documentation warns about the potential problem:

http://www.gphoto.org/doc/manual/permissions-usb.html

I haven't had time to work my way though the guide. I'll post my results once I have.

On a side note, gphoto2 works GREAT with my older Canon 20D on my netbook (Running Ubuntu 9.10). I've been searching for a decent GUI front end for doing bracketing and there is really nothing out there. Papywizard would make a good front end, even for people who just wanted to shoot brackets for making a single HDR. I mentioned this to a co-worker and he expressed interest in hacking on papywizard to enable the "Timelapse" tab. (He's pretty good with Python and trying to learn more) The Timelapse tab would be a logical place to put a simple button like "shoot now" that could trigger off any bracketing that's setup.

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Mar 18, 2010 7:42 am

FYI, I removed the 'Timelapse' tab in the latest builds... As said in the dedicated thread, timelapse should be a different application.

To do what you want to do, you don't really need a special tab: just use the Simulation plugin for both yaw/pitch axis, and gphoto bracket as shutter plugin, and it is fine; I also plan to drive my Canon 20D this way to make bracketing, as soon as I recceive my cable from business2828. I will also to implement the automatic bracketing I started to describe there).
Frédéric

no avatar
mediavets
Moderator
 
Posts: 16415
Likes: 2 posts
Liked in: 130 posts
Joined: Wed Nov 14, 2007 2:12 pm
Location: Isleham, Cambridgeshire, UK.
Info

by mediavets » Thu Mar 18, 2010 11:42 am

lordtangent wrote:First of all, I want to report the OTG cable for the N810 from "business2828" works like a charm.

This one?:
http://cgi.ebay.co.uk/USB-OTG-Cable-mini-male-to-A-female-adaptor-converter_W0QQitemZ250590333688QQcmdZViewItemQQptZLH_DefaultDomain_0?hash=item3a58590af8I

Does it automatically switch the N800 USB port into host mode?
Andrew Stephens
Many different Nodal Ninja and Agnos pano heads. Merlin/Panogear mount with Papywizard on Nokia Internet tablets.
Nikon D5100 and D40, Sigma 8mm f3.5 FE, Nikon 10.5mm FE, 35mm, 50mm, 18-55mm, 70-210mm. Promote control.

User avatar
claudevh
Moderator
 
Posts: 1349
Likes: 0 post
Liked in: 0 post
Joined: Sun Nov 25, 2007 11:12 pm
Location: Mont-Saint-André (Belgium)
Info

by claudevh » Thu Mar 18, 2010 12:17 pm

Andrews,

Frederic have some of those cables on order, you can ask him to get one .... ;)
:cool: Claude :cool:
Merlin + Papywizard on Windows 7 & Nokia 770 § N810 & Acer (Netbook) + PanoramaApp Androïd + Deltawave PapyMerlin BT + Autopano
Spherical Pano (180 x 360) with Canon 40D + Canon EF-S 10-22mm f/3.5-4.5 Zoom & Pôle Pano with Canon 5D MK2 and shaved Tokina 10-17 3.5-4.5 AF DX Fisheye
Gigapixel photography with Nikon D200 + Sigma 70-200 F 2.8 EX DG APO HSM

User avatar
fma38
Moderator
 
Posts: 5850
Likes: 2 posts
Liked in: 2 posts
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Mar 18, 2010 12:45 pm

Yes, Andrew, this is the one I ordered (all mini-USB to USB-A female OTG capable are the same on this site; the seller made an entry for each model to simplify buyers life).

And yes, the N800 should automatically switch to USB-host.
Frédéric

User avatar
Paul
Member
 
Posts: 778
Likes: 0 post
Liked in: 0 post
Joined: Sat Aug 30, 2008 4:46 pm
Location: Bonn, Germany
Info

by Paul » Thu Mar 18, 2010 8:53 pm

mediavets wrote:Does it automatically switch the N800 USB port into host mode?

got mine today for N800

plugged a usb-memorystick to the N800: worked instantly perfect
Paul

close, but no cigar ... ... ...

no avatar
jeongyun
Member
 
Posts: 33
Likes: 0 post
Liked in: 0 post
Joined: Mon Dec 14, 2009 5:54 pm
Info

by jeongyun » Fri Mar 26, 2010 11:14 pm

has any one succesfully run gphoto2 on nokia platform yet?

PreviousNext

Who is online

Users browsing this forum: No registered users and 2 guests