Daten|teiler
Kopieren als Kulturtechnik

Linpus Linux 9.6 installieren und einrichten

11. September 2008 von Christian Imhorst

Linpus Linux gibt es nicht nur als Lite-, sondern auch Vollversion. Die LiveCD 9.6 kann man außerdem auch als Torrent herunterladen, was den Download ziemlich beschleunigt.

Der Desktop tagsüber.

Der Desktop tagsüber.

Den restlichen Eintrag lesen »

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Linpus Linux 9.6 installieren und einrichten

Wenn die Webcam nicht mit dem DVB-T-Stick will

27. August 2008 von Christian Imhorst


Dieser Artikel ist erstmals erschienen im
freiesMagazin 08/2008 August. Ausgabe 08/2008 als PDF herunterladen.

Manchmal ist es ganz schön ärgerlich: Gerade wenn man denkt, dass beim Notebook alles funktioniert, braucht man nur eine Kleinigkeit wie einen DVB-T-Stick installieren, und schon liefert die Webcam keine Bilder mehr. Obwohl der Stick mit EM28xx-, AF901x- oder einem anderen Chipsatz prima läuft, wird die Kamera nicht mehr erkannt. Durch das Kompilieren und Installieren der DVB-T-Treiber ist die Version von Video4Linux (v4l), durch die viele Webcams, TV-Karten und auch DVB-T-Sticks unterstützt werden, geändert worden und der Video-Treiber für die Webcam beharkt sich nun mit dem neuen Modul. Betroffen sind nicht nur Besitzer von externen USB-Kameras (USB Video Class, UVC), sondern auch Notebookbesitzer mit integrierten Webcams, die an einem USB-Port hängen.

Versucht man zum Beispiel das Modul für uvcvideo nachzuladen, damit die Kamera erkannt wird, erhält man folgende Fehlermeldung:

$ sudo modprobe uvcvideo
FATAL: Error inserting uvcvideo 
(/lib/modules/2.6.24-19-generic/ubuntu/media/usbvideo/uvcvideo.ko): 
Unknown symbol in module, or unknown parameter (see dmesg) 

Das Verzeichnis /lib/modules/2.6.24-19-generic/ubuntu/media/usbvideo/uvcvideo.ko sollte man sich merken, da man später das neu erstellte uvcvideo-Modul dahin kopieren muss. Man sieht hier, wo sich die Datei bei Ubuntu 8.04 „Hardy Heron“ befindet, bei anderen Distributionen kann das Verzeichnis abweichen. Schaut man dann mit dmesg nach, wo der Hase begraben liegen soll, bekommt man unter anderem folgende Antwort:

[  938.937194] uvcvideo: Unknown symbol video_unregister_device
[  938.937400] uvcvideo: disagrees about version of symbol video_device_alloc
[  938.937404] uvcvideo: Unknown symbol video_device_alloc
[  938.937543] uvcvideo: disagrees about version of symbol video_register_device
[  938.937547] uvcvideo: Unknown symbol video_register_device
[  938.937955] uvcvideo: disagrees about version of symbol video_device_release
[  938.937958] uvcvideo: Unknown symbol video_device_release

Demnach gibt es also Unstimmigkeiten über eine Symbolversion zwischen den Video-Modulen. Dagegen kann man etwas machen, nämlich die Quellen des UVC-Treibers neu kompilieren und installieren. Dafür muss man das Quellarchiv von der Projekt-Website [1] herunterladen, oder, falls Subversion installiert ist, im Terminal folgendes eingeben:

svn checkout svn://svn.berlios.de/linux-uvc/linux-uvc/trunk

Nachdem man mit cd trunk in das Quellcode-Verzeichnis gewechselt ist, kann man zum erstenmal make aufrufen. Dieser erste Aufruf wird aber voraussichtlich mit Warnungen und Fehlern abbrechen, wie im Beispiel zu sehen ist:


$ ~/trunk$ make
Building USB Video Class driver...
make[1]: Betrete Verzeichnis ‘/usr/src/linux-headers-2.6.24-19-generic’
  CC [M]  /home/christian/trunk/uvc_driver.o
In Datei, eingefügt von /home/christian/trunk/uvcvideo.h:7,
                 von /home/christian/trunk/uvc_driver.c:40:
/home/christian/trunk/uvc_compat.h:137:1: Warnung: »V4L2_CTRL_CLASS_CAMERA«
redefiniert
In Datei, eingefügt von include/linux/videodev.h:16,
                 von /home/christian/trunk/uvc_driver.c:31:
include/linux/videodev2.h:798:1: Warnung: dies ist die Stelle der vorherigen Definition
In file included from /home/christian/trunk/uvcvideo.h:7,
                 from /home/christian/trunk/uvc_driver.c:40:
/home/christian/trunk/uvc_compat.h:140:
Fehler: Verschachtelte Redefinition von »enum v4l2_power_line_frequency«
/home/christian/trunk/uvc_compat.h:140:
Fehler: Redeklaration von »enum v4l2_power_line_frequency«
/home/christian/trunk/uvc_compat.h:141:
Fehler: Redeklaration von Aufzählung »V4L2_CID_POWER_LINE_FREQUENCY_DISABLED«
include/linux/videodev2.h:874:
Fehler: Vorherige Definition von »V4L2_CID_POWER_LINE_FREQUENCY_DISABLED«
war hier /home/christian/trunk/uvc_compat.h:142:
Fehler: Redeklaration von Aufzählung »V4L2_CID_POWER_LINE_FREQUENCY_50HZ«
include/linux/videodev2.h:875:
Fehler: Vorherige Definition von »V4L2_CID_POWER_LINE_FREQUENCY_50HZ« war hier
/home/christian/trunk/uvc_compat.h:143:
Fehler: Redeklaration von Aufzählung »V4L2_CID_POWER_LINE_FREQUENCY_60HZ«
include/linux/videodev2.h:876:
Fehler: Vorherige Definition von »V4L2_CID_POWER_LINE_FREQUENCY_60HZ« war hier
/home/christian/trunk/uvc_compat.h:155:
Fehler: Verschachtelte Redefinition von »enum v4l2_exposure_auto_type«
/home/christian/trunk/uvc_compat.h:155:
Fehler: Redeklaration von »enum v4l2_exposure_auto_type«
/home/christian/trunk/uvc_compat.h:156:
Fehler: Redeklaration von Aufzählung »V4L2_EXPOSURE_MANUAL«
include/linux/videodev2.h:1077:
Fehler: Vorherige Definition von »V4L2_EXPOSURE_MANUAL« war hier
/home/christian/trunk/uvc_compat.h:157:
Fehler: Redeklaration von Aufzählung »V4L2_EXPOSURE_AUTO«
include/linux/videodev2.h:1076:
Fehler: Vorherige Definition von »V4L2_EXPOSURE_AUTO« war hier
/home/christian/trunk/uvc_compat.h:158:
Fehler: Redeklaration von Aufzählung »V4L2_EXPOSURE_SHUTTER_PRIORITY«
include/linux/videodev2.h:1078:
Fehler: Vorherige Definition von »V4L2_EXPOSURE_SHUTTER_PRIORITY« war hier
/home/christian/trunk/uvc_compat.h:160:
Fehler: Redeklaration von Aufzählung »V4L2_EXPOSURE_APERTURE_PRIORITY«
include/linux/videodev2.h:1080:
Fehler: Vorherige Definition von »V4L2_EXPOSURE_APERTURE_PRIORITY« war hier
make[2]: *** [/home/christian/trunk/uvc_driver.o] Fehler 1
make[1]: *** [_module_/home/christian/trunk] Fehler 2
make[1]: Verlasse Verzeichnis ‘/usr/src/linux-headers-2.6.24-19-generic’
make: *** [uvcvideo] Fehler 2

Welche Fehler- und Warnmeldungen erscheinen hängt vom verwendeten Kernel ab. Man braucht diese Meldungen als Hinweis, um die Datei „uvc_compat.h“ bearbeiten zu können. Die öffnet man dafür in seinem Lieblingseditor und sucht nach dem ersten Eintrag, z.B. „v4l2_power_line_frequency“, um den dann komplett mit Kommetarzeichen (/* … */) zu versehen oder man löscht ihn am besten gleich ganz:

/* #define V4L2_CID_POWER_LINE_FREQUENCY		(V4L2_CID_BASE+24)
enum v4l2_power_line_frequency {
	V4L2_CID_POWER_LINE_FREQUENCY_DISABLED	= 0,
	V4L2_CID_POWER_LINE_FREQUENCY_50HZ	= 1,
	V4L2_CID_POWER_LINE_FREQUENCY_60HZ	= 2,
}; */

Mit den anderen Fehlern und Warnungen wird genauso verfahren und anschließend die Datei gespeichert. Damit beim erneuten Aufruf von make die korrekten Symbolversionen der Module beim Kompilieren erzeugt werden, benötigt man die Datei „Module.symvers“ aus dem Quellcode-Archiv des DVB-T-Sticks. Wenn man zum Beispiel einen Stick mit AF901x-Chipsatz hat, findet man die Datei im Verzeichnis „af9015*/v4l/Module.symvers“ und kopiert sie in das UVC-Verzeichnis. Erst danach kann man make ausführen. Dabei sollte es sauber durchkompilieren und das Modul „uvcvideo.ko“ erzeugen.

Danach muss noch das alte Modul durch das neue ersetzt werden. Mit dem Befehl install wird die Datei kopiert und dabei mit -m644 die passenden Attribute gesetzt. Anschließend sucht man mit Depmod nach Abhängigkeiten zwischen den Kernelmodulen.

sudo install -v -m644 uvcvideo.ko \
/lib/modules/$(uname -r)/kernel/ubuntu/media/usbvideo/uvcvideo.ko
sudo depmod -ae

Bei anderen Distributionen als Ubuntu muss man sich nochmal das Verzeichnis in Erinnerung rufen, das bei der Fehlermeldung weiter oben angezeigt wurde und den Befehl entsprechend ändern. Danach sollte man das Modul fehlerfrei mit

sudo modprobe uvcvideo 

laden können.

Falls der eben beschriebene Weg fehlschlägt, kann man noch folgendes probieren: Anstatt ins Quellcodeverzeichnis des UVC-Treibers kann man die Datei „Module.symvers“ direkt nach „/lib/modules/$(uname -r)/build/Module.symvers“ kopieren (nachdem man natürlich von der Orginaldatei dort eine Sicherungskopie angelegt hat), um dann mit make zu kompilieren. Das sollte dann funktionieren.

Link:
[1] http://linux-uvc.berlios.de

Geschrieben in freiesMagazin | Kommentare deaktiviert für Wenn die Webcam nicht mit dem DVB-T-Stick will

Das stille Erwachen — Nach dem Ruhezustand ist bei Hardy plötzlich der Ton weg.

27. August 2008 von Christian Imhorst


Dieser Artikel ist erstmals erschienen im
freiesMagazin 06/2008 Juni. Ausgabe 06/2008 als PDF herunterladen.

„High Definition Audio“ (HDA) ist eine Spezifikation für Audio-Chips, die 2004 von Intel eingeführt wurde. Sie sagt noch nichts weiter über den Chip selbst aus, außer, dass er gewisse Mindestanforderungen erfüllen muss. [1] Bei Gnu/Linux wird der Chip vom ALSA-Kernel-Modul „snd-hda-intel“ angesteuert. Da es sich aber bei HDA-Intel um eine ganze Reihe von Soundchips handelt, die alle nur einen gewissen Standard erfüllen müssen, und die teilweise gar nicht oder nur lückenhaft dokumentiert sind, kann es zu Problemen mit den freien Treibern kommen. Aktuell stellen viele Notebookbesitzer fest, dass sie nach dem Upgrade auf Ubuntu Hardy Heron keinen Sound mehr haben, wenn der Rechner aus dem Ruhezustand erwacht. Der Chip selbst funktioniert eigentlich problemlos, aber nur bis zu einem Power-on-Standby, Suspend-to-Ram oder Suspend-to-Disk. Danach bleibt er stumm, wird aber vom System als aktiv erkannt.

Normalerweise hört man beim Aufwachen ein leises kurzes Knacken, so wie man das auch beim Hochfahren des Rechners hören kann, was zeigt, dass der Chip am Start ist. Das fällt beim Kernel 2.6.24-16 leider weg. Mit Gutsy Gibbon lief der Sound daher noch wunderbar, seit Hardy werden die Module zwar alle geladen und „lspci“ zeigt den Soundchip auch als aktiv an, doch die Boxen bleiben stumm. Ein kleines Workaround schafft hier Abhilfe. [2]
Wenn man wissen möchte, ob im eigenen Notebook überhaupt ein HDA-Chip verbaut worden ist, dann kann man sich das mit „cat /proc/asound/cards“ anschauen:

$ cat /proc/asound/cards 
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xfc200000 irq 23

Um genau zu erfahren, um welchen Chip es sich handelt, braucht man jedoch den Befehl „aplay -l“:

$ aplay -l 
**** Liste von PLAYBACK Geräten ****
Karte 0: Intel [HDA Intel], Gerät 0: ALC268 Analog [ALC268 Analog]
  Untergeordnete Geräte: 1/1
  Untergeordnetes Gerät '0: subdevice #0

In meinem Acer Aspire 2920 befindet sich also der ALC268-Chip. Jetzt braucht man den Modelltyp für den „sound-hda-intel“-Treiber, den man mit

$ zless /usr/share/doc/alsa-base/driver/ALSA-Configuration.txt.gz

herausfinden kann. In der Datei scrollt man solange herunter, bis man auf den Namen des Chips stößt. In meinem Fall ist das hier der relevante Eintrag:

        ALC268
          3stack        3-stack model
          toshiba       Toshiba A205
          acer          Acer laptops
          dell          Dell OEM laptops (Vostro 1200)
          zepto         Zepto laptops
          test          for testing/debugging purpose, almost all controls can
                        adjusted.  Appearing only when compiled with
                        $CONFIG_SND_DEBUG=y
          auto          auto-config reading BIOS (default)

Der Chip wurde demnach unter anderem in Laptops von Toshiba, Dell und Acer verbaut. Für mich ist „acer“ die wichtige Information. Der Modelltyp soll helfen, dass das Modul in Zukunft korrekt geladen wird. Folgende Zeile muss dazu in die Datei „/etc/modprobe.d/snd-hda-intel.modprobe“, die man extra zu diesem Zweck neu erstellt, und am Ende der Datei „/etc/modprobe.d/alsa-base“ eingetragen werden:

options snd-hda-intel model=acer

Wenn man die Dateien ändert, braucht man Root-Rechte. In Hardy Heron muss man seinen Lieblingseditor als Superuser mit „sudo“ starten, damit man die entsprechenden Rechte hat. Als Superuser muss man auch noch die Datei „/etc/default/acpi-support“ bearbeiten und „alsa“ an der richtigen Stelle eintragen:

# Add services to this list to stop them before suspend and restart them in
# the resume process.
STOP_SERVICES="alsa"

Dann den Computer neu starten und schon sollte der Sound auch nach dem Standby oder dem Ruhezustand normal funktionieren.

Links:
[1] http://de.wikipedia.org/wiki/High_Definition_Audio_Interface
[2] http://forum.ubuntuusers.de/topic/168596/?p=1413426

Geschrieben in freiesMagazin | Kommentare deaktiviert für Das stille Erwachen — Nach dem Ruhezustand ist bei Hardy plötzlich der Ton weg.

Gnu/Linux in Öffentlichen Bibliotheken

25. August 2008 von Christian Imhorst

Warum sollte man Gnu/Linux in Öffentlichen Bibliotheken einsetzen? Dazu gibt es ein sehr gutes Thesenpapier von Roger Evans von der Deichmanske Bibliotek in Oslo; ein Vortrag, den er bereits 2005 auf der World Library and Information Congress: 71st IFLA General Conference and Council gehalten hat: Bereitstellung peppiger Dienste und solider Unterstützung mit Open-Source-Software. Sein These ist klar, einfach und stimmt:

Die Verwaltung immer knapper werdender Mittel verlange, dass Bibliothekarinnen und Bibliothekare die Kosten für ihre IT, also für Web- und Internetdienste, Anschaffung neuer Computer, Datenbanken etc. überdenken müssen. Man könne zwar ein Jahr lang sein begrenztes und ständig schrumpfendes Bücherbudget dafür plündern, müsse aber auch sehen, dass im nächsten Jahr häufig wieder Lizenz- und andere Folgekosten für die proprietäre Software anfallen.

Den restlichen Eintrag lesen »

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Gnu/Linux in Öffentlichen Bibliotheken

Mein Beitrag zur HCL von OpenSolaris

24. August 2008 von Christian Imhorst

Sun betreibt ein Portal mit einer HCL (Hardware Compatibility List) für OpenSolaris. Hier melden Admins und User ihre Hardware an, wenn sie erfolgreich OpenSolaris 2008.5 darauf installiert haben. Das ist Teil von Suns Bemühungen, um ihr quelloffenes Unix-Betriebssystem herum eine Entwickler-Gemeinde aufzubauen. Mein Beitrag zur Kompatibilität von OpenSolaris mit dem Acer Aspire 2920 ist jetzt auch Teil dieser Datenbank. Wenn man so wie ich, gerne mit Software und Betriebssystem auf aktueller oder älterer Hardware experimentiert, sollte man sich unbedingt die LiveCD von OpenSolaris herunterladen und am besten auf einem Rechner ausprobieren, der noch nicht in der HCL-Datenbank erfasst ist.
Das sorgt nämlich für den meisten Spaß. ;-)

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Mein Beitrag zur HCL von OpenSolaris

Linpus Linux Lite einrichten

13. August 2008 von Christian Imhorst

Nach der Installation von Linpus Linux Lite geht es nun darum, es einzurichten. Leider sträubt sich Linpus vehement dagegen, eine funktionierende Paketverwaltung zu installieren, mit der man dann das System bequem auf einen aktuellen Stand bringen könnte. Mittlerweile habe ich den Verdacht, dass Linpus gar nicht möchte, dass ihr Linux geupdatet wird. Besonders nicht die Version auf dem Aspire One, wie man an den Kommentaren weiter unten sieht. Hier besteht die Gefahr, dass man sich dabei das System zerschießt. (Anmerkung: Wobei ich im Linux-Forum gelesen habe, dass man auf dem Aspire One mit der Tastenkombination Alt + F2 „Befehle ausführen…“ kann, um dann durch Eingabe von pirut einen Paketmanager zu starten, mit dem man dann weitere Software nachinstallieren können soll.) APT ist zwar vorhanden, aber die Dateien mit den Repositories, man kann sie an der Endung .list erkennen, liegen direkt im Ordner /etc/apt anstatt unter /etc/apt/sources.list.d.

Den restlichen Eintrag lesen »

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Linpus Linux Lite einrichten

Linpus Linux Lite installieren

27. Juli 2008 von Christian Imhorst

Die LiveCD Linpus Linux Lite wurde bereits im freiesMagazin 07/2008 und in der LinuxUser 03/2008 vorgestellt. Die leichtgewichtige Linux-Distribution aus Taiwan besticht auf der einen Seite laut eigener Aussage mit ihren Mindestanforderungen von einer 366 Mhz CPU, 128 MB RAM und Festplattenplatz von ca. 512 MB (auf einem frisch installiertem Linpus zeigt df -h bei mir allerdings 775 MB an) und auf der anderen mit zwei Oberflächenmodi: einen einfachen und einen erweiterten Modus.

Linpus Linux Desktop

Linpus Linux Desktop im einfachen Modus.

Um Linpus auf seinem eigenen Mini-PC, älterer Hardware oder in einer virtuellen Maschine zu testen, kann man zuerst die LiveCD booten und, wenn einem das System zusagt, Linpus installieren. Allerdings ist die Funktion ziemlich versteckt, doch durch pilotennetz.de: Linpus Linux Lite auf Festplatte installieren bin ich drauf gekommen, wie es geht.

Den restlichen Eintrag lesen »

Geschrieben in freiesMagazin, Gnu/Linux | Kommentare deaktiviert für Linpus Linux Lite installieren

OpenSolaris auf dem Acer Aspire 2920

21. Juli 2008 von Christian Imhorst

OpenSolaris ist ganz schön schnell. Wenn man das Aspire 2920 mit der LiveCD 2008.05 startet, fällt einem als erstes auf, wie flott das Notebook sein kann; und dabei läuft OpenSolaris nur von CD. Kurz darauf fallen aber schon die ersten Probleme auf.

Schön ist erstmal, dass WLAN auf Anhieb geht, was man auch an der orange leuchtenden LED bei der Multimediataste erkennen kann. Unter Gnu/Linux leuchtet die LED übrigens erst nach ein wenig Nacharbeit. Nach einigen Sekunden erscheint ein Fenster auf dem Gnome-Desktop, in dem man sein Netzwerk auswählen kann.

Den restlichen Eintrag lesen »

Geschrieben in Gnu/Linux | Kommentare deaktiviert für OpenSolaris auf dem Acer Aspire 2920

Meine IP-Adresse mit Python herausfinden

13. Juli 2008 von Christian Imhorst

Wie man seine IP-Adresse im Internet in der Shell und/oder mit Perl herausbekommt, habe ich ja bereits gezeigt. Was aber, wenn man diese Adresse auch in der Python-Shell braucht? Dafür habe ich die Funktion myIP geschrieben:

import httplib
 
def myIP():
    verb = httplib.HTTPConnection('www.whatismyip.com')
    verb.request('GET', '/automation/n09230945.asp')
    antw = verb.getresponse()
    html = antw.read()
 
    return html

Zunächst wird das Modul httplib importiert. Dann wird mit HTTPConnection zu der Seite von whatismyip.com eine Verbindung hergestellt, der Quelltext der Unterseite /automation/n09230945.asp ausgelesen und in der Variablen html gespeichert. Der Quelltext besteht bereits einzig und allein aus der einzelnen IP-Adresse, so dass man hier nicht mit regulären Ausdrücken arbeiten muss, um sie auszuschneiden. Zum Schluss wird der Inhalt der Variablen html auf dem Python-Prompt ausgegeben. Wenn man die Funktion interaktiv in der Python IDLE testet, sieht das etwa so aus:

>>> myIP()
'209.85.238.20'

Wahrscheinlich gibt es das schon, vielleicht geht das auch noch einfacher, und ich hätte nur danach suchen müssen, aber selber programmieren macht einfach am meisten Spaß und man lernt immer etwas dabei.

Um Python zu lernen, ist übrigens das Buch Python von Peter Walerowskis ein wirklich guter Einstieg. Auf verständliche Erklärungen folgen Codebeispiele und man bekommt nach und nach ein tieferes Verständnis für die Sprache. Einziger Nachteil ist, dass es sich um die erste Auflage handelt und sich der ein oder andere Fehler eingeschlichen hat. Im Text kann man darüber ja noch hinwegsehen, in den Beispielen sind sie aber ärgerlich. In Listing 4.1 auf Seite 105 muss es z.B. class Train(object): heißen und nicht class Train(objekt):. Wenn man das Beispiel so abtippt, wie es da steht, bekommt man eine Fehlermeldung und ist als Anfänger eventuell damit überfordert, sie zu beheben. Aber auf der anderen Seite, wenn man den Fehler findet, kann es auch ein schönes Gefühl sein, als Schüler den Meister zu korrigieren.

Geschrieben in Programmieren, Python | Kommentare deaktiviert für Meine IP-Adresse mit Python herausfinden

Radio hören mit MPlayer

13. Juli 2008 von Christian Imhorst

Gibt es was schöneres, als beim Arbeiten mit dem Compi Radio zu hören? Damit meine ich jetzt nicht analoges UKW- oder MW-Radio, weil das einen zu sehr auf die eigene Stadt, das Bundesland oder die Region beschränkt. Wenn schon Radio, dann natürlich Radio-Streams aus dem Internet. Es gibt genug grafische Programme wie Rhythmbox oder Amarok, mit denen man ganz komfortabel diese Streams abspielen kann. Aber am besten gefällt mir immer noch die Lösung mit MPlayer im Terminal. Die funktioniert nämlich überall da, wo der MPlayer installiert ist, aber kein Desktop oder X Window oder ähnliches:

mplayer http://www.motorfm.de/stream-berlin

Den restlichen Eintrag lesen »

Geschrieben in Gnu/Linux | Kommentare deaktiviert für Radio hören mit MPlayer

« Previous Entries Next Entries »