Sorry, that's actually what I meant: my 350D does not have either manufacturer or model widgets.
My solution is the following patch in gphoto_driver.cpp:
@@ -1024,6 +1050,15 @@ gphoto_driver *gphoto_open(const char *shutter_release_port)
gphoto->model = widget->value.text;
}
+ // If neither works
+ if ( (widget = find_widget(gphoto,"model")) != NULL )
+ {
+ DEBUGFDEVICE(device, INDI::Logger::DBG_DEBUG,"Model: %s", widget->value.text);
+ gphoto->model = widget->value.text;
+ if (gphoto->manufacturer == NULL)
+ gphoto->manufacturer = widget->value.text;
+ }
+
// Check for user
if(shutter_release_port)
{
In this manner no changes in gphoto_ccd.cpp are required. I still need to apply my previous patch
to use the external shutter release. With these two modifications, bulb exposure > 1 second work.
I have found a new problem which explains why changing shutter speed and any other setting on
the camera doesn't work. It appears that calls to gp_widget_get_choice from the gphoto2 library are
returning messed up results. I have added some extra debugging print statements:
@@ -319,8 +319,9 @@ int gphoto_set_widget_num(gphoto_driver *gphoto, gphoto_widget *widget, float va
case GP_WIDGET_RADIO:
case GP_WIDGET_MENU:
ret = gp_widget_get_choice (widget->widget, ival, &ptr);
+ DEBUGFDEVICE(device, INDI::Logger::DBG_DEBUG, "Get choice %s: %d (%s), ptr=%s ret=%d (%s)", widget->name, ival, ptr, ret, gp_result_as_string(ret));
ret = gp_widget_set_value (widget->widget, ptr);
- DEBUGFDEVICE(device, INDI::Logger::DBG_DEBUG, "Setting radio/menu widget %s: %d (%s)", widget->name, ival, widget->choices[ival]);
+ DEBUGFDEVICE(device, INDI::Logger::DBG_DEBUG, "Setting radio/menu widget %s: %d (%s), ret=%d (%s)", widget->name, ival, widget->choices[ival], ret, gp_result_as_string(ret));
break;
case GP_WIDGET_RANGE:
ret = gp_widget_set_value (widget->widget, &value);
This is what I see in my log files:
INFO 11.954409 sec : Please update the camera pixel size in the Image Info section. The camera resolution will be updated after the first exposure is complete.
DEBUG 12.083854 sec : Configuration successfully loaded.
DEBUG 14.451276 sec : Starting exposure (exptime: 1 secs, mirror lock: 3)
DEBUG 14.451326 sec : Mutex locked
DEBUG 14.451360 sec : Get choice iso: 7 (400), ptr=(null) ret=47283892 (H<89><C7>H<8D>E<B0>H<83><EC>^HAV<8B>U<A4>RAUATSA<B9><D8><D8>A)
DEBUG 14.451387 sec : Setting radio/menu widget iso: 7 (400), ret=0 (No error)
DEBUG 14.451431 sec : Setting new configuration OK.
DEBUG 14.451455 sec : Get choice imageformat: 0 (RAW), ptr=(null) ret=47283892 (H<89><C7>H<8D>E<B0>H<83><EC>^HAV<8B>U<A4>RAUATSA<B9><D8><D8>A)
DEBUG 14.451478 sec : Setting radio/menu widget imageformat: 0 (RAW), ret=0 (No error)
DEBUG 14.451513 sec : Setting new configuration OK.
DEBUG 14.451533 sec : Using camera predefined exposure ranges.
DEBUG 14.451554 sec : Finding optimal exposure setting for 1 seconds...
DEBUG 14.451577 sec : Best match: 1 seconds Index: 16
DEBUG 14.451596 sec : Setting exposure widget bulb index: 16
DEBUG 14.451618 sec : Get choice shutterspeed: 16 (1), ptr=(null) ret=47283892 (H<89><C7>H<8D>E<B0>H<83><EC>^HAV<8B>U<A4>RAUATSA<B9><D8><D8>A)
DEBUG 14.451640 sec : Setting radio/menu widget shutterspeed: 16 (1), ret=0 (No error)
DEBUG 14.451676 sec : Setting new configuration OK.
DEBUG 14.451697 sec : Using predefined exposure time: 1 seconds
DEBUG 14.451718 sec : Locking mirror by opening remote serial shutter port: /dev/ttyUSB0 ...
DEBUG 17.725801 sec : Exposure started
My first thought was that there could be an alignment issue between the gphoto_driver.cpp code and the library.
But I get this both with the standard libgphoto2 from Kubuntu and the one I compile from source.
Do you have this problem too?