Kamera via PTP einbinden
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Digital-Kameras können entweder direkt als Massenspeichermedium in das Dateisystem eingebunden werden, oder sie sind wie viele Spiegelreflexkameras (DSLR) ausschließlich über das Picture Transfer Protocol (PTP) ansprechbar. PTP ist ein von der International Imaging Industry Association entwickeltes Protokoll zum Austausch von Bildern zwischen Digitalkameras und anderen Geräten wie Computern oder Druckern.
Die einfachste Möglichkeit ist, das Speichermedium (z.B. eine SD-Karte) zu entnehmen und einen externen USB-Kartenleser zu verwenden. Möchte man jedoch PTP nutzen, gibt es dafür das Werkzeugpaket gPhoto2, auf welches auch viele andere Programme wie beispielsweise digiKam oder gThumb zugreifen.
gPhoto2 besteht aus:
der Bibliothek libgphoto (Basis für alles weitere)
dem Kommandozeilenprogramm gphoto2
der graphischen Oberfläche gtkam mit der Erweiterung gtkam-gimp für GIMP
und gphotofs zum Einbinden als normaler Datenträger (siehe unten)
Welche Kameras konkret unterstützt werden, ist einer Liste 🇬🇧 zu entnehmen, die in gewissen Zeitabständen aktualisiert wird und daher eine recht verlässliche Grundlage darstellt. Allerdings muss beachtet werden, dass diese Liste nicht unbedingt dem Paket gphoto entspricht, welches je nach Ubuntu-Version auch älter sein kann, und dann faktisch bereits als unterstützt gelistete Modelle unter Ubuntu nicht funktionieren.
gPhoto2¶
Mit gPhoto2 🇬🇧 können Bilder von der Kamera geholt und auf die Kamera geschickt werden. Außerdem kann die Kamera vom Rechner aus (fern)gesteuert werden (Tethered Shooting), wenn das jeweilige Kameramodell entsprechend unterstützt 🇬🇧 wird.
Es muss das folgende Paket installiert [1] werden:
gphoto2 (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install gphoto2
Oder mit apturl installieren, Link: apt://gphoto2
Mit gtkam gibt es eine einfache grafische Oberfläche für gphoto2. Mehr Komfort bietet das Programm Entangle , das seit Ubuntu 14.04 Bestandteil der offiziellen Paketquellen ist.
Konfiguration¶
Falls die Kamera auch den USB-Massenspeichermodus erlaubt, muss an der Kamera der USB-Modus auf PTP gesetzt werden. Um herauszufinden, ob die installierte Version von gPhoto2 die Kamera unterstützt, gibt man folgenden Befehl in ein Terminalfenster ein [2]:
gphoto2 --auto-detect
Nun sollte der angeschlossene Kameratyp angezeigt werden. Eine Liste der Bilder auf der Kamera zeigt:
gphoto2 --auto-detect -L
Um die Bilder auf den PC zu übertragen, ruft man aus dem Verzeichnis, in das die Bilder kopiert werden sollen, nachstehenden Befehl auf:
gphoto2 --auto-detect -P
Hinweis:
Falls mehr als ein Speicherkartenschacht in der Kamera zur Verfügung steht, darf nur eine Speicherkarte ansprechbar sein.
Eventuell automatisch eingebundene Kamera, z.B.durch gthumb-Importtool, muss ausgehängt werden.
Kamera wird nicht am Fokussieren gehindert oder steht auf “manuell”.
Beispiele¶
zeigt die installierte Version von gphoto:
gphoto2 -v
gibt die Eigenschaften der angeschlossenen Kamera aus:
gphoto2 -summary
Unterstützt die Kamera eine Fernsteuerung über den Rechner:
gphoto2 --port usb: --abilities
nimmt ein Bild auf:
gphoto2 --capture-image
zeigt die Einstellungsparameter auf der Kamera:
gphoto2 --list-config
zeigt Einstellmöglichkeit für den Parameter
iso
:gphoto2 --get-config iso
setzt den Parameter
iso
auf den Wert3
entsprechend den Einstellmöglichkeiten:gphoto2 --set-config iso=3
erlaubt, Einstellungen auf der Kamera zu ändern:
gphoto2 --set-config capture=on
gibt eine Liste der Bilder auf der Kamera aus:
gphoto2 --list-files
zum Herunterladen aller Bilder von der Kamera:
gphoto2 --get-all-files
zum Aufnehmen eines Bildes alle 10 Sekunden:
gphoto2 --capture-image --interval 10
nimmt ein Bild auf und speichert es auf dem Rechner. Das Initialisieren dauert etwa 2 Min.:
gphoto2 --port usb: -capture-image-and-download
Serienbilder erstellen, insgesamt zehn Bilder im Abstand von zwei Sekunden
gphoto2 --capture-image --interval 2 --frames 10
gphotofs¶
Das Werkzeug gphotofs 🇬🇧 erlaubt es, unterstützte Kameras desktop-unabhängig als Dateisysteme darzustellen. Zuerst muss das folgende Paket installiert [1] werden:
gphotofs (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install gphotofs
Oder mit apturl installieren, Link: apt://gphotofs
Konfiguration¶
Die Konfiguration erfolgt in drei Schritten:
Anlegen eines Ordners, in den die Kamera eingebunden wird
Erstellen einer udev-Regel, um die Kamera erkennen zu können
Ein kleines Shell-Skript als Hilfsprogramm für udev generieren
Verzeichnis anlegen¶
Nun wird ein entsprechendes Verzeichnis angelegt, über das die Kamera später erreichbar ist [2], beispielsweise:
sudo mkdir /media/mydigicam
udev-Regel erstellen¶
Anschließend wird eine eigene udev-Regel zum automatischen Einbinden (mount) und Aushängen (umount) angelegt. Dazu erstellt man mit einem Editor [3] und Root-Rechten [4] die Datei /etc/udev/rules.d/70-mydigicam.rules und fügt folgenden Inhalt ein:
ACTION=="add", ATTRS{idVendor}=="HERSTELLER-ID", ATTRS{idProduct}=="PRODUKT-ID", RUN+="/usr/local/bin/mountcamera.sh add" ACTION=="remove", ATTRS{idVendor}=="HERSTELLER-ID", ATTRS{idProduct}=="PRODUKT-ID", RUN+="/usr/local/bin/mountcamera.sh remove"
"HERSTELLER-ID
" und "PRODUKT-ID
" müssen noch an die eigene Kamera angepasst werden. Diese Daten können über die Ausgabe des Befehls
lsusb
ermittelt werden. Ein Beispiel für eine Canon Ixus 100 IS:
1 2 | ACTION=="add", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c2", RUN+="/usr/local/bin/mountcamera.sh add" ACTION=="remove", ATTRS{idVendor}=="04a9", ATTRS{idProduct}=="31c2", RUN+="/usr/local/bin/mountcamera.sh remove" |
Mount/Umount-Skript anlegen¶
Für den eigentlichen Vorgang des Einbindens und Auswerfens der Kamera ist ein zusätzliches Skript notwendig. Dazu legt man mit einem Editor und Root-Rechten die Datei /usr/local/bin/mountcamera.sh an und fügt folgenden Inhalt ein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #! /bin/bash ## Bitte anpassen! MOUNTPOINT="/media/mydigicam" Mount() { # You need to add the allow_other option, otherwise only root can access the camera. gphotofs ${MOUNTPOINT} -o allow_other } Unmount() { fusermount -u ${MOUNTPOINT} } Usage() { echo "Usage: $0 [add|remove]" echo } case "$1" in add) Mount ;; remove) Unmount ;; *) Usage ;; esac |
Mit folgenden Befehl muss das Skript noch ausführbar gemacht werden:
sudo chmod a+x /usr/local/bin/mountcamera.sh
Verwendung¶
Im Idealfall die Kamera über ihr USB-Kabel anschließen und einschalten. Bilder stehen nun über den unter Verzeichnis anlegen eingerichteten Ordner zur Verfügung. Zum Entfernen ausschalten und dann Kabel abziehen.
Problembehebung¶
Falls die Kamera nicht erkannt wird, kann es daran liegen, dass sie nicht direkt an einem USB-Port angeschlossen ist. Die Benutzung eines USB-Hubs ist dann anscheinend nicht möglich.
Links¶
Offizielle Homepage von gphoto 🇬🇧
Steuerung der Kamera vom Rechner aus 🇬🇧 (Remote control, Tethering Shooting)
Canon Powershot S100 in Thunar einbinden 🇩🇪 - Blogbeitrag 12/2013
Nikon D90 – Bilder unter Linux laden 🇩🇪 - Blogbeitrag, 04/2011
Importer et classer automatiquement ses photos numériques 🇫🇷 - Skript zum automatischen Herunterladen und Benennen von Bildern, Blogbeitrag, 03/2011