home   artikelen   forum   colofon  
Gepubliceerd op 12.10.2001
Auteur: Andy Ziegler
Vertaald door: Guus Snijders
Languages: en de
Help Ons!
 

gphoto: digitale cameras met Linux

Digitale camera Waarom vroegen we geen digitale camera voor de verjaardag of Sinterklaas?
Oh ja, omdat we die alleen met MsWin kunnen gebruiken en niet met Linux.
Met gphoto kun je dat wel!


Een digitale foto camera kan zo leuk zijn, maar als moet overstappen naar MsWin om de plaatjes te zien, kun je het net zo goed vergeten. Een vergelijkbaar probleem als met parallelle-poort scanners die ook niet geweldig ondersteund worden onder Linux. Natuurlijk zou je een programma als VMware kunnen kopen en MsWin onder Linux gebruiken, maar een kosten-vrije en Linux-eign oplossing zou veel mooier zijn, toch?

Er bestaat een oplossing voor digitale foto camera's: gphoto. Met dit programma kunnen digitale camera's van verschillende bedrijven via de seriële poort en sommige via USB worden uitgelezen. De lijst van alle ondersteunde modellen is te vinden op http://www.gphoto.org/cameras.html. Veel van de genoemde cameras zijn te oud om nog voor te komen op de markt. Het protocol dat is gebruikt om de camera uit te lezen is vaak vergelijkbaar of identiek bij de nieuwere modellen. De belangrijkste ontwikkelingen van de bedrijven zijn gefocussed op de hardware van de cameras (resolutie, afmetingen, ...) en niet de software. Voordat je geld besteed aan een digitale camera, zou je eerst moeten testen of de camera goed werkt met gphoto.

Hoe kunnen we gphoto testen als we geen digitale camera hebben? We vroegen een aantal bedrijven om een test camera, maar alleen CANON en OLYMPUS wilden meewerken. CANON stuurde ons een PowerShot20. OLYMPUS leende ons een C-3030ZOOM en C-2100UZ voor intensieve testen. De beide OLYMPUS camera's kwamen niet voor de op de lijst van gphoto (20 Nov. 2000), maar ze leken met hetzelfde protocol te werken als oudere cameras die wel op de lijst voorkwamen.

Installatie

Eerst haal je de nieuwste versie van gphoto op. De broncode en voor-gecompileerde pakketten voor verschillende systemen (Mac, MsWin en Linux) en distributies kun je downloaden van http://www.gphoto.org/download.htm l. Pak de broncode uit naar de /tmp directory:

  >> tar zxvf gphoto-0.4.3.tar.gz -C /tmp
  

Dan ga je naar de resulterende directory en start je "make":

  >> cd /tmp/gphoto-0.4.3/
  >> ./configure
  >> ./make
  

Nu kun je gphoto starten. Hiervoor ga je naar de src/ subdirectory en type je

  >> ./gphoto
  

Nu kun je de digitale-fotocamera aansluiten op de seriële poort van de computer. (meestal heeft de kabel in het camera pakket een 9 pins seriële connector. Als jouw enige 9 pins aansluiting door de muis wordt bezet en alleen de 25 pins aansluiting over is, moet je een adapter gebruiken.) In gphoto ga je naar het menu Configure -> Select Port-Camera Model en kies je je camera of een ouder model.

gphoto camera kiezer

Als je het adres van de seriële poort weet (COM1 tot COM4 komen overeen met ttyS0 tot ttyS3 onder Linux) waar de camera op is aangesloten, geef je die hier aan en ben je klaar met de configuratie.
Anders kun je onderstaande stappen herhalen voor alle seriële poorten totdat de camera reageerd.
Standaard kunnen seriële poorten niet door gebruikers worden benaderd, maar alleen door root. Je kunt gphoto echter beter met je normale account gebruiken en dus moeten de lees- en schrijfpermissies veranderd worden door de bestands-permissies te veranderen.
Voor COM1 (ttyS0 onder Linux), gebruik je (als root):

  >> chmod a+rw /dev/ttyS0
  

Nu klik je op de "Save-knop".
Als gphoto een fout geeft (links-onderin in het hoofdvenster), kun je de procedure herhalen met een andere seriële poort.

Afbeeldingen downloaden

Het belangrijkste is het downloaden van de gemaakte foto's, als biedt gphoto meer functies (later meer daarover).
Eerst download je de thumbnail (voorbeeld) van de camera. Dat kan op 2 manieren: of je downloadt gewoon een aantal van de foto's die worden weergegeven als lege plaatjes, of je downloadt de echte thumbnails die je op de camera ziet. De eerste optie werkt sneller en is aan te raden als je precies weet welke foto's je wilt downloaden.
Om de foto's van de CANON camera te downloaden, moet je het wiel op de camera op een speciale stand zetten waardoor je niet tegelijkertijd naar de index kunt kijken, dus moet je altijd de thumbnail downloaden.
De OLYMPUS camera kun je in iedere stand zetten (behalve uit), de communicatie tussen camera en computer werkt altijd.

Als je weet welke foto's het waard zijn om te downloaden, vink je deze aan en gebruik je Camera -> Download Selected -> Images -> Save to Disk. Nadat je de prefix (begin) van de bestandsnaam en de doel-directory hebt opgegeven, start de download. De prefix geeft aan waarmee de bestandsnamen beginnen en het nummer van de thumnail komt hier achter. Afhankelijk van de grootte en het aantal afbeeldingen dat je wilt downloaden kan dit even duren.

De voortgang is te volgen in het terminal venster waarin je ghpoto startte.
De download van de CANON camera was problematisch in enkele gevallen. Er verschenen een hoop debug berichten in de terminal. Verder was het niet mogelijk om de grootste afbeelding die de camera kon maken te downloaden. Gphoto stopte iedere keer tijdens de procedure en kon niet langer gebruikt worden. Het moest gekilled en weer worden gestart. Een paar keer konden de thumbnails niet worden gedownload. Een herstart van Gphoto loste dit probleem op. Deze fout kan onafhankelijk van de gebruikte PC optreden.
Misschien zou CANON de ontwikkelaars van gphoto moeten helpen of betrokken raken bij het programmeren van de camera module. Zover ik weet, biedt geen enkel bedrijf een native Linux driver voor hun digitale cameras. Als een bedrijf besluit om Linux te ondersteunen zou dit hun reputatie in de Linux gemeenschap zeker ten goede komen. Alleen al een link naar gphoto op de website zou een goed teken zijn.

Afbeeldingen bewerken met gphoto

Gphoto biedt de mogelijkheid om de foto's te downloaden zonder ze op te slaan de schijf en de foto's kunnen binnen gphoto zelf bewerkt worden. Dit is vooral nuttig als je nog niet bekend bent met andere grafische programma's.
Iets wat niet moet ontbreken in ieder plaatjes-programma is de optie om de afbeeldingen in stappen van 90 graden te draaien. Verder kunnen een aantal manipulaties als contrast, helderheid en kleuren worden toegepast. Helaas ontbreekt een automatisch rode ogen onderdrukking.
Gphoto biedt alle basisfuncties van een grafisch programma.
Het volstaat voor kleine aanpassingen, maar voor professionele aanpassingen is Gimp (Homepage: www.gimp.org) meer geschikt.

Meer dan alleen afbeeldingen opslaan

De functionaliteit van gphoto houdt niet op met het manipuleren van afbeeldingen. Een andere feature is het gebruik van een digitale camera als webcam. De actuele foto kan met een klik van muis worden genomen of continu. De trage verbinding via de seriële poort laat ongeveer twee afbeeldingen pers seconde toe. Het is zelfs mogelijk om foto's te maken met een muisklik. Verder kunnen de camera instellingen (resolutie, helderheid) vanaf de PC worden ingesteld via ghoto.

Het gebruik van deze features is, natuurlijk, afhankelijk van de camera. De CANON camera moet op een speciale stand staan waarin geen foto's kunnen worden gemaakt met een muisklik. De OLYMPUS camera werkte (bijna) zonder problemen. Er trad wel vreemd gedrag op als we Camera->Live Preview! kozen, dan verscheen er kort een nieuw venster, om vervolgens weer te verdwijnen (of knipperde alleen even), gevolgd door een crash van gphoto. Na een herstart van gphoto werkte dit wel correct en konden we het probleem reproduceren.

gphoto en USB

De OLYMPUS camera hebben we getest met de (toen) nieuwe 2.4.0 kernel. De OLYMPUS C-3030Z werd niet specifiek ondersteund door deze kernel, maar de USB poort herkende de camera. Een lijst van camera's die via USB ondersteund worden is te vinden op http://www.gphoto.org/cam eras.html.
In de volgende stappen wordt uitgelegd hoe je ondersteunde USB-cameras kunt gebruiken:

  • Eerst moet je een nieuwe kernel (2.2.19 of 2.4.x) met USB ondersteuning bouwen en installeren. Verder moet het bijbehorende /proc bestand worden geactiveerd. Dit is niet noodzakelijk voor de functionaliteit, maar het is de enige manier om te zien of je camera is aangesloten en ondersteund wordt.
  • Als het bestand /dev/tys.. of /dev/usb/ty.. niet bestaat, moeten we die genereren:
      >> mknod -m 0660 /dev/usb/dc2xx0 c 180 80
      >> mknod -m 0660 /dev/usb/dc2xx1 c 180 81
      
  • Na het starten van de nieuwe kernel en aansluiten van de camera op de USB poort, kun je zien of de camera goed werd herkend. Hiervoor type je:
      >> cat /proc/bus/usb/devices
      

    Er zou nu iets moeten verschijnen als:

              T:  Lev=01 Prnt=00 Port=00 Cnt=01 Dev#=  1 Spd=12  MxCh= 0
              D:  Ver= 1.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
              P:  Vendor=040a ProdID=0120 Rev= 1.08
              S:  Manufacturer=Eastman Kodak Company
              S:  Product=KODAK DC240 Zoom Digital Camera
              C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=100mA
              I:  If#= 0 Alt= 0 #EPs= 2 Cls=00(>ifc ) Sub=00 Prot=00 Driver=dc2xx
              E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
              E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=  0ms
      

    Achter driver staat de naam van de driver die gphoto zal gebruiken. Als hier (none) staat, dan is je camera niet ondersteund via USB. Voor alle andere gelukkige gebruikers gaat de procedure verder.

  • USB wordt alleen in de nieuwere versies van gphoto ondersteund, je kunt dus het beste de nieuwste code van de CVS server halen. Er is een vrije beta versie gphoto-2.0beta1.tar.gz die de libusb library gebruikt. In het volgende deel beschrijven we kort de installatie van de CVS code.
    Hiervoor type je in een terminal het volgende (Documentatie is te vinden op http://www.gphoto.org/download.html):
      
      >> export CVSROOT=:pserver:anonymous@cvs.gphoto.sourceforge.net:/cvsroot/g
      photo 
      

    En log je in als anonieme gebruiker:

      >> cvs login 
      

    De gebruikersnaam is anonymous, wachtwoord is niet nodig (druk op Enter). De meest recente code krijg je met

      >> cvs -z3 checkout gphoto 
      
  • gphoto can be compiled now, just type:
      >> cd gphoto-x.x.x
      >> ./configure
      >> ./make
      >> ./make install
      
  • Nu kun je gphoto starten en zou het de camera automatisch moeten herkennen. Zoniet, dan kun je de juiste poort kiezen in het menu Configure -> Select Port-Camera Model, de knop "other" indrukken en het juiste pad naar het apparaat intypen, bijvoorbeeld /dev/usb/dc2xx0. Nu zou de camara net zo moeten werken als wanneer hij was aangesloten op de seriële poort.

Links:
Homepage gphoto http://www.gphoto.org
Homepage Gimp http://www.gimp.org
CANON en OLYMPUS zijn geregistreerde handelsmerken.


We bedanken CANON en OLYMPUS voor het ondersteunen van LinuxNetMag met digital foto cameras. Dit was een fantastische hulp voor ons en - hopen we - ook voor de Linux gemeenschap.