ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

FireWire

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./firewire_logo.png FireWire, auch als i.Link bekannt, ist eine nach IEEE 1394 spezifizierte Hardwareschnittstelle zur Einbindung von Festplatten, digitalen Videokameras, Netzwerk-Adapter etc. Entsprechende Treiber sind bereits im Kernel enthalten. Wird das ein oder andere Audiogerät nicht unterstützt, wird man vielleicht im FFADO-Projekt fündig. Diese Wiki-Seite hier ist primär für Problemlösungen bezüglich FireWire bestimmt.

Die FireWire-Unterstützung im Kernel ist vor einiger Zeit vollständig neu geschrieben worden. Sie ist ab Kernel 2.6.22 als neues Modul firewire eingeflossen und wurde seitdem verbessert und stabilisiert, bis im Kernel 2.6.37 die alten Treiber um raw1394 aus dem Kernel entfernt wurden.

FireWire-Geräte nutzen

FireWire-Schnittstelle vorhanden?

Ob in dem Rechner eine FireWire Schnittstelle vorhanden ist, kann mit dem folgenden Kommando im Terminal [1] nachgesehen werden:

lspci | grep FireWire 

Beispiel:

03:01.3 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev 46)

Wird keine solche oder ähnliche Zeile ausgegeben, ist FireWire entweder nicht vorhanden oder wird nicht erkannt.

Ubuntu 11.04 und später

Modul überprüfen

Ob neben der vorhandenen FireWire-Schnittstelle auch die Treibermodule geladen werden konnten, erkennt man im Terminal mit dem Kommando (nebst Ausgabe):

lsmod | grep firewire 

Ausgabe:

firewire_ohci          40370  0 
firewire_core          62646  1 firewire_ohci
crc_itu_t              12707  1 firewire_core

Kommt keine der Zeilen oben, ist das Modul nicht geladen worden. Dann muss es mit Modprobe manuell geladen werden, in diesem Fall also mit

sudo modprobe firewire_ohci 

Das Modul firewire_ohci lädt gleichzeitig firewire_core, von dem es abhängt.

Wenn das Modul geladen ist, muss auch eine Geräte-Datei existieren. Diese lautet /dev/fw0, bei mehreren genutzten Schnittstellen werden weitere mit fortlaufender Zahl angelegt:

ls -l /dev/fw* 
crw------- 1 root root 251, 0 2012-07-14 17:20 /dev/fw0

bzw. nach Anschließen einer Kamera:

ls -l /dev/fw* 
crw-------  1 root root  251, 0 2012-07-14 17:20 /dev/fw0
crw-rw----+ 1 root video 251, 1 2012-07-14 18:05 /dev/fw1

Rechtevergabe

in Ubuntu ist FireWire bereits in Udev eingepflegt, so dass FireWire-Gerätedateien sofort angelegt werden. Dennoch kann man die hinterlegten Regeln für Modifikation der Rechte etc. nachgesehen werden unter:

grep -i firewire /lib/udev/rules.d/* 

und wird dort bereits in der Datei 50-udev-defaults.rules fündig, in denen dem ausführenden Benutzer die neue Gerätedatei der Gruppe video zuweist (Siehe auch Benutzer und Gruppen)

Nutzung einer Videokamera

Mit dvgrab {en} sollte man nun die Videokamera im Terminal steuern können:

dvgrab -i 
rom1394_0 warning: read failed: 0x0000fffff0000414
error reading config rom directory for node 0
Found AV/C device with GUID 0x0800460104bd68a3
Going interactive. Press '?' for help.

beginnt die Kommunikation im interaktiven Modus. Weitere Information im Artikel dvgrab.

Nutzung einer externe Festplatte

Will man unter Ubuntu 11.04 eine externe Festplatte per Firewire betreiben, findet man zunächst in der Protokolldatei /var/log/syslog Fehlermeldungen wie die folgenden:

Oct  5 19:31:49 rechner kernel: [  937.083121] firewire_ohci: node ID not valid, new bus reset in progress
Oct  5 19:31:59 rechner kernel: [  946.586761] firewire_core: skipped bus generations, destroying all nodes
Oct  5 19:31:59 rechner kernel: [  946.586786] firewire_core: Parent port inconsistency for node 0: parent_count=1
Oct  5 19:31:59 rechner kernel: [  946.586791] firewire_core: topology build failed

und die Platte wird nicht automatisch erkannt und eingebunden.

Startet man nun Ubuntu 10.04 von einer Live-CD, dann wird die Firewire-Festplatte sofort erkannt und kann eingebunden werden. Macht man dann einen Neustart des Rechners (Reboot, nicht aus- und einschalten) und bootet wieder Ubuntu 11.04, dann wird die Platte auch hier sofort erkannt und kann benutzt werden. Sieht so aus, als würde bei (K)ubuntu 11.04 die Firewire-Schnittstelle beim Booten nicht korrekt initialisiert. Ein zwischenzeitliches Booten von 10.04 erledigt das, so dass anschließend die Firewire-Hardware auch unter 11.04 funktioniert.

Ubuntu 10.10 und früher

Modul überprüfen

Zunächst muss man überprüfen, ob das benötigte Modul geladen ist. Dazu gibt man Folgendes im Terminal [3] ein:

lsmod | grep 1394 

Die Ausgabe könnte dann etwa so aussehen:

dv1394                23312  0 
raw1394               32048  0 
ohci1394              38088  1 dv1394
ieee1394             369784  4 dv1394,raw1394,sbp2,ohci1394

Ist kein Modul geladen, erfolgt auch keine Ausgabe. Sollte das benötigte Modul nicht angezeigt werden, so muss es mit folgendem Befehl geladen werden:

sudo modprobe raw1394 

FireWire-Geräte für normale Benutzer

Sollte das oben Genannte vollführt worden sein, ist das Gerät dem normalen Benutzer und den von diesem gestarteten Programmen nicht zugänglich. Um dies zu beheben, geht man wie folgt vor:

  • Im Terminal in das Verzeichnis /etc/udev/rules.d/ wechseln

  • Auflisten des Verzeichnisinhalt mit dem Befehl "ls"

  • Eine neue Datei 50-raw1394.rules im gleichen Verzeichnis erstellen.

  • In der 40-permissions.rules (wenn vorhanden) nach dem Abschnitt "IEEE1394" suchen. Dort die Zeile

    KERNEL=="raw1394", GROUP=="disk"

    in

    KERNEL=="raw1394", GROUP=="video", MODE=="0664"

    umändern.

  • In die 50-raw1394.rules (sofern 40-permission.rules nicht vorhanden und diese Datei neu erstellt wurde) kommt nur die Zeile

    KERNEL=="raw1394", GROUP=="video", MODE=="0664"

Anschließend trägt man die Nutzer, die auf diese Geräte Zugriff haben sollen, noch in die Gruppen "video" ein [2].

Achtung!

Es ist zu beachten, dass raw1394-Geräte uneingeschränkten Zugriff auf das System bieten (sie können z.B. den Hauptspeicher auslesen und teilweise auch hineinschreiben). Man sollte also nur vertrauenswürdige Personen in die Gruppe aufnehmen, die darauf achten, dass keine nicht vertrauenswürdigen Geräte angesteckt werden / worden sind!

udev neustarten

Damit die Änderungen in den Dateien auch wirksam werden, muss man abschließend folgenden Befehl im Terminal eingeben:

sudo /etc/init.d/udev restart 

Unter Ubuntu 10.04 fasst folgender Befehl diese Schritte zusammen:

echo 'KERNEL=="raw1394", GROUP=="video", MODE=="0664"' | sudo tee /etc/udev/rules.d/50-raw1394.rules && sudo restart udev 

FireWire-Netzwerk

Zwei Computer über FireWire zu verbinden ist ähnlich einfach wie mit normalen Netzwerkkarten, jedoch ist es schneller, wenn man keine Gigabit-Netzwerkkarten besitzt. Beide Computer benötigen einen FireWire-Anschluss. Zum Verbinden werden die Computer über ein normales FireWire-Kabel zusammengeschlossen.

Nachdem beide Computer verbunden sind, sollte der Befehl

dmesg | grep 1394 

etwas Ähnliches wie hier ausgeben:

...
[   15.431906] ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[18]  MMIO=[f9aff800-f9afffff]  Max Packet=[2048]  IR/IT contexts=[4/4]
[   15.841250] ieee1394: Host added: ID:BUS[0-00:1023]  GUID[474fc000f482e50a]
...
[ 2321.103535] ieee1394: Node added: ID:BUS[0-00:1023]  GUID[001484f50025af2e]
[ 2321.105028] ieee1394: Node changed: 0-00:1023 -> 0-01:1023

Wichtig ist die Zeile ...Node added... (oder auch Node resumed, wenn man das Kabel abzieht und wieder anschließt), das bedeutet, dass die beiden Computer korrekt verbunden sind.

Die Ethernet-Treiber für FireWire sind in Ubuntu standardmäßig deaktiviert. Deshalb müssen sie noch geladen werden:

sudo modprobe eth1394 

Damit die Treiber beim Start von Ubuntu automatisch geladen werden, muss der blacklist-Eintrag in der Datei /etc/modprobe.d/blacklist.conf entfernt werden. Dazu öffnet man die Datei in einem Editor [3] mit Root-Rechten und sucht nach:

blacklist eth1394

und kommentiert die Zeile einfach aus:

#blacklist eth1394

Jetzt sollte eine neue "Netzwerkkarte" verfügbar sein. Man kann diese nun genauso wie eine herkömmliche Netzwerkkarte einrichten.

Man kann natürlich nicht nur Verbindungen zwischen Linux-Computern aufbauen, sondern auch zu Windows oder Mac OS X. Unter Windows existiert dafür in den Netzwerkverbindungen eine Verbindung, die standardmäßig "1394-Verbindung" heißt.

ubuntuusers.local › WikiFireWire