Danke Conny...

Ein besonderer Dank geht an meine Frau, die mich in der Ausübung meines Hobbys auf so vielfältige Art unterstützt. Bis hin zu den Broten die mir durch die mitunter langen Nächte helfen.

Article Index

Da möglicherweise auch andere User mit vergleichbaren Problemen zu kämpfen haben könnten, möchte ich hier mein Vorgehen zusammenfassen (Befehle und Bildschirmausgaben werden fett hervorgehoben). Die Änderungen werden alle in der Befehlszeile verarbeitet. Das kann ein Terminal-Fenster, ein Raspberry Pi oder eben eine Remotesitzung zu einem anderen Rechner sein.

Als erstes ermitteln wir die genaue Bezeichnung der Kamera mit
lsusb
Hier erhalten wir Informationen über alle an den USB-Ports angeschlossenen Geräten. Hier der für mich relevante Auszug:
Bus 002 Device 002: ID 199e:8101 The Imaging Source Europe GmbH DFx 21BU04 Camera
Und hier erhalten wir gleich zwei wichtige Informationen.
Einmal die Hersteller-ID 199e und die Geräte-ID.

Alle folgenden Befehle erfordern Superuser-Rechte. Also muss entweder vor den Befehl 'sudo' geschrieben werden, oder wir wechseln mit
sudo su
in den Superuser-Modus.

Eine Recherche ergab, dass die Kameras von The Imaging Source durch den uvcvideo-Treiber unterstützt werden. Dieser ist mittlerweile standardmäßig in den Kernel von Linux eingebunden. Er wird nur nicht geladen, weil die Kamera im Grunde nicht korrekt erkannt wird. Aber dem helfen wir hier nun ab. ;-)
Da ja nun bei jedem Anstecken, bzw. erkennen der Kamera dem Computer mitgeteilt werden muss was dieser nun genau machen soll, versuchen wir das nun zu automatisieren. Hierzu schreiben wir ein kleines Skript, mit dem WAS er genau tun soll. Das Skript heißt bei mir dmk21au04as.sh und liegt im Ordner /etc/. Diese Datei erstellen wir mit dem Editor 'nano'. Sollte dieser wider erwarten nicht Installiert sein, kann dieses mit dem Befehl:
apt-get install nano
erfolgen.
Das Skript selbst wird mit dem Befehl:
nano /etc/dmk21au04as.sh
erstellt.
In diese noch leere Datei fügen wir den folgenden Text ein:
#!/bin/bash
# Kernelmodule nachladen
modprobe uvcvideo
# Hersteller- und Geräte-ID an den Treiber senden
echo 199e 8101 > /sys/bus/usb/drivers/uvcvideo/new_id
# End of skript
Nun müssen wir die Datei noch mit strg+O speichern und mit strg+C verlassen.
Als nächstes müssen wir dem Computer noch sagen dass er die Datei ausführen soll, wenn die Kamera angesteckt wird.
Hierzu erstellen wir eine neue Regel für das Kernelmodul udev. Dieses Programm durchsucht nach dem anstecken von Geräten seine Regeln und führt, falls vorhanden die entsprechenden Befehle aus. Hierzu muss in dem Ordner /etc/udev/rules.d/ eine neue Regeldatei erstellt werden. Meine heißt 71-dmk21au04as.rules. Diese erstellen wir wie oben mit:
nano /etc/udev/rules.d/71-dmk21au04as.rules
Dort fügen wir die folgende Anweisung ein:
SUBSYSTEM=="usb", ATTR{idVendor}=="199e", ATTR{idProduct}=="8101", RUN="/etc/dmk21au04as.sh"
Nun müssen wir wieder die Datei noch mit strg+O speichern und mit strg+C verlassen.
Damit dem udev-Modul die neue Regel auch bekannt wird, muss dieses mit dem Befehl
/etc/init.d/udev restart
neu gestartet werden.
Das Problem ist jetzt, dass die Datei die falschen Rechte hat.
Linux arbeitet bei Dateien mit drei Benutzerebenen:

  1. Besitzer
  2. Gruppe
  3. Jeder

Und jeder dieser Ebene können im separat Rechte für

  1. Lesen
  2. Schreiben und
  3. Ausführen

vergeben werden. Unsere beiden selbst erstellten Dateien haben die folgenden Rechte:

  1. Besitzer: Lesen, Schreiben
  2. Gruppe: Lesen
  3. Jeder: Lesen

Bei der Regeldatei ist es kein Problem. Diese muss nur gelesen werden. Aber unsere /etc/dmk21au04as.sh ist ja ein Shell-Skript, dass auch ausgeführt werden muss. Und das kann so nicht funktionieren, da niemand das Recht hat die Datei auszuführen.
Hierzu sagen wir dem Computer, dass die Datei von jedem zusätzlich gelesen und ausgeführt werden darf:
chmod 755 /etc/dmk21au04as.sh
Nun hat die Datei im Grunde folgende Berechtigung:

  1. Besitzer: Lesen, Schreiben, Ausführen
  2. Gruppe: Lesen, Ausführen
  3. Jeder: Lesen, Ausführen

Nun kann die Datei auch ausgeführt werden.
Mit exit kann sowohl der Superuser-Modus als auch die Terminal-Sitzung selbst beendet werden. Ebenso verlassen wir damit ssh-Sitzungen auf entfernten Rechnern.
Nach einem erneuten anstecken der Kamera sollte diese nun Funktionieren. Zumindest war es bei mir beim Notebook unter Kubuntu und auch dem Raspberry-Pi so.

Jetzt muss nur noch das Wetter mitspielen, dann kann ich auch bald schon erste Erfahrungen sammeln. Dann geht es mit einem neuen Update weiter.