New release of YAACA and pyasicam

An update to this article is available!

A new version of yaaca is available. Source code is now on github.

Yaaca depends only on libusb-1.0 and GTK2, so it runs without problems on older distributions like Debian Squeeze.

A python interface is also available on github. Just copy the that comes together with the Linux SDK released by ZWO Optical.

New features

  • ¬†All the cameras from ZWO should work, maximum resolution is dynamical set.
  • Focusing aids have been added. They are activated in zoom mode and are under the zoom window. You can see the position of the centroid of pixels with a value (mean of RGB in color mode) greater than 64, theirs standard deviation and maximum value for pixel in the zoom area and on a 3×3 area centered o nthe centroid coordinates. The next checkboxes are “save” for saving the centroid position to a file yaaca.log (useful for evaluating tracking precision) and “prof” that show the profile of pixel value. If main screen crosshair is activated the profile is referred to it (useful if you have precise tracking) otherwise it’s referred to the centroid. The position of the centroid is showed as a red cross in the zoom window. So many strategies for focusing are available. You can center just one star with value > 64 in the zoom window (use crosshair positioning and zoom) and look to minimize standard deviation and have a sharp profile. Otherwise you can regulate gain and exposition to have a star with a value a bit under 64 in value. Focus till centroid cross tracks the star and is not jumping erraticaly around the center of the zoom screen. When this is achieved reduce gain or exposure and try again until satisfied.
  • Optimized USB bandwidth control for ARM machines
  • Added blind control when capturing: on-screen display is turned off when capture is activated. This is useful for very low performance machines.
  • FPS is always shown
  • File names are compatible with FAT file systems (for SDs)
  • Camera parameters are saved on exit and recalled on start-up. The same parameter are loaded by pyasicam on start-up. This is useful if we use yaaca to do focusing and gain/exposure adjust and the use pyasicam for all-night capture.
  • The value of pixel under main screen crosshair is shown near it’s position (to check of not having over-exposed areas)

Have fun!


This entry was posted in Astronomy and tagged . Bookmark the permalink.

7 Responses to New release of YAACA and pyasicam

  1. eul'dulle says:


    I am having a hard time linking yaaca out from git. I get a bunch of undefined
    references, and I cant seem to figure out what is going wrong. I suspect
    something like a c/c++ mismatch somewhere, or an issue with libASICamera.

    Any clue will be helpful.
    Thank you in advance and thank you for the good work of bringing tools like
    this for the linux users.

    Here is the output of :

    make clean; make >err 2>&1; head -20 err

    gcc -pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -ISDK/include -g -O2 -Wall -D_LIN -c -o zwo.o zwo.c
    gcc -pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -ISDK/include -g -O2 -Wall -D_LIN -c -o yaaca.o yaaca.c
    gcc -pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -ISDK/include -g -O2 -Wall -D_LIN -o yaaca zwo.o yaaca.o -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lglib-2.0 -lusb-1.0 -lgthread-2.0 -lstdc++ -lm -g SDK/lib/x86/libASICamera.a
    SDK/lib/x86/libASICamera.a(ASICamera.o): In function `closeCamera':
    ASICamera.cpp:(.text+0xf50): undefined reference to `operator delete(void*)'
    SDK/lib/x86/libASICamera.a(ASICamera.o): In function `getNumberOfConnectedCameras':
    ASICamera.cpp:(.text+0xf8e): undefined reference to `libusb_init'
    ASICamera.cpp:(.text+0xfa9): undefined reference to `libusb_get_device_list'
    ASICamera.cpp:(.text+0xfd6): undefined reference to `libusb_get_device_descriptor'
    ASICamera.cpp:(.text+0xfe8): undefined reference to `libusb_get_device_address'
    ASICamera.cpp:(.text+0xff6): undefined reference to `libusb_get_bus_number'
    ASICamera.cpp:(.text+0x1032): undefined reference to `libusb_free_device_list'
    ASICamera.cpp:(.text+0x103e): undefined reference to `libusb_exit'
    SDK/lib/x86/libASICamera.a(ASICamera.o): In function `openCamera':
    ASICamera.cpp:(.text+0x10e5): undefined reference to `operator delete(void*)'
    ASICamera.cpp:(.text+0x117a): undefined reference to `operator new(unsigned int)'
    ASICamera.cpp:(.text+0x119a): undefined reference to `operator new(unsigned int)'
    ASICamera.cpp:(.text+0x122d): undefined reference to `operator new(unsigned int)'
    ASICamera.cpp:(.text+0x125b): undefined reference to `operator new(unsigned int)'
    ASICamera.cpp:(.text+0x1289): undefined reference to `operator new(unsigned int)

  2. The errors clearly show that -lstdc++ libraries for libusb are missing. Have a look at the Makefile for yaaca: for the right parameter to pass to gcc:
    $(shell pkg-config --libs gtk+-2.0 libusb-1.0) -lstdc++ -lm

    • eul'dulle says:

      Thank you for your quick answer.
      It seems to me the flags are correctly set, in the link command I gave above (the last gcc command before errors appear). Or did I miss your point ?

    • eul'dulle says:

      In fact the problem lies with the LDFLAGS in the Makefile :
      I had to link against and not with libASICamera.a as it is done in the git Makefile.

      I also had to add -lgthread-2.0 on the same line.

      So, practically, after having copied from the sdk to a
      place it would be found by the linker (I used /usr/local/lib) I replaced that line :

      LDFLAGS=$(shell pkg-config --libs gtk+-2.0 libusb-1.0) SDK/libASICamera.a -lstdc++ -lm -g

      by this one :

      LDFLAGS=$(shell pkg-config --libs gtk+-2.0 libusb-1.0) -lgthread-2.0 -lASICamera -lstdc++ -lm -g

      and compilation then ran smooth and clean, tested on 2 different ubuntu precise (12.04) boxes.

  3. Sorry, my answer was *too* quick. I guess there is a problem in the order of libraries in the command line, you should put the .a after the .o but before the rest. Have a look at this link: Unfortunately this problem looks gcc version specific, so I haven’t noticed it.

  4. Ronan says:

    I have compiled yaaca with those parameters :
    CFLAGS=$(shell pkg-config –cflags gtk+-2.0 ) -I. -g -O2 -Wall -D_LIN
    LDFLAGS=SDK/libASICamera.a $(shell pkg-config –libs gtk+-2.0 libusb-1.0) -lgthr
    ead-2.0 -lrt -lpng -lstdc++ -lusb -lm -g
    If it can help others who are trying to compile it… (and I put the cam lib int the SDK subdirectory).

    Christian, do you are thinking in adding dark substraction ? It would be nice.



    • Hi, thanks! I will update in the git. I tend to see dark subtraction belonging to the stacking phase but it can be useful if you have a high gain. Anyway I’m planning to add also real-time Shift and Add Analysis. Right now I’m trying to figure out if it’s better to use C or go to Python (with GTK and NumPy).

Leave a Reply

Your email address will not be published. Required fields are marked *