Tag Archives: Linux

Bessere Kamera für die Unterkirnacher Webcam

Wappen UnterkirnachJetzt über die Feiertage habe ich mir mal Zeit genommen und die Kamera der Webcam Unterkirnach ausgetauscht. Die Bildqualität ist jetzt sichtbar besser. 🙂

Statt einer USB Webcam, die durch den festen Fokus für Landschaftsaufnahmen denkbar ungeeignet war, kommt jetzt das offizielle Kameraboard für das RaspberryPi zum Einsatz.

Da die neue Kamera deutlich weniger Strom benötigt, konnte ich zudem auf den zusätzlichen USB-Hub verzichten und den Kabelsalat reduzieren:Raspberry Pi Cameraboard USB Webcam

Unter Archlinux ARM müssen folgende Zeilen an die /boot/config.txt angehängt werden, damit die Kamera verwendet werden kann:

start_file=start_x.elf
fixup_file=fixup_x.dat
disable_camera_led=1

Die notwendigen Programm, um Bilder oder Videos mit der Kamera aufzunehmen liegen beim ArchLinux Image unter /opt/vc/bin/. Um Bilder aufzunehmen kann beispielsweise raspistill verwendet werden. Um das Bild samt Datumsangabe zu generieren verwende ich raspistill in Verbindung mit ImageMagick:

#!/bin/sh
 IMAGE=/tmp/image.jpg
 THEDATE=$(date +"%Y-%m-%d %H:%M (%Z)")
 /opt/vc/bin/raspistill --width 920 --height 720 --quality 70 -o $IMAGE
 convert $IMAGE -pointsize 15 -font DejaVu-Sans -undercolor '#3371a3' \
 -fill '#FFFFFF' -draw "rectangle 0,699 920,720" \
 -fill '#3371a3' -draw "rectangle 0,700 920,720" \
 -draw "gravity SouthWest fill white text 10,2 'Wildpflanzenpark Unterkirnach'" \
 -draw "gravity SouthEast fill white text 0,2 '$THEDATE'" $IMAGE

Die Webcam ist wie gehabt über www.unterkirna.ch erreichbar!

Using mplayer with ATI UVD hardware acceleration to play h264 videos and the open source mesa driver under Linux

Since version 9.2.0-1 the open source Mesa driver supports ATIs UVD hardware video acceleration for h264 videos.

If it was enabled correctly your boot log should contain something like this:

Aug 31 18:55:22 main kernel: [drm] UVD initialized successfully.

You can easily check this with:

# journalctl -b | grep UVD

Now if you want to play a video with mplayer and make use of the new feature, you should append following parameter:

-vc ffh264vdpau

If everything went well you should see something like:

Starting playback...
[VD_FFMPEG] Trying pixfmt=0.
[VD_FFMPEG] XVMC-accelerated MPEG-2.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vdpau] 1280x720 => 1280x720 H.264 VDPAU acceleration

after mplayer has started.

And it’s really worth it! Without hardware acceleration the average CPU usage of mplayer was around 20% and it dropped to 1.7%!
This is how I watch dvb-c with mplayer:

mplayer dvb://Das\ Erste\ HD -vc ffh264vdpau -demuxer lavf -ao alsa:device=hw=1.0 -cache 8192

See a earlier post of mine about this subject: klick

Used source: klick

channels.conf für Kabel BW mit neuen Sendefrequenzen für mplayer DVB-C

Seit dem 4.6.2013 hat Kabel BW die Sendefrequenzen geändert, weshalb man die Sender neu suchen muss.

Erstellt habe ich die channels.conf folgendermaßen:

$ scan de-Kabel_BW > .mplayer/channels.conf

Wobei de-Kabel_BW aus /usr/share/dvb/dvb-c/de-Kabel_BW des Pakets linuxtv-dvb-apps stammt.
Diese Datei ist leider noch für die alten Sendefrequenzen gedachte, weshalb sie etwas erweitert werden muss, damit der Tuner eine Einstiegsfrequenz findet (glaube ich zumindest):

# freq sr fec mod
C 122000000 6900000 NONE QAM64
C 362000000 6900000 NONE QAM64
C 362000000 6900000 NONE QAM256

Hat man den Sendersuchlauf durchgeführt, kann man mit dem mplayer die HD-Sender folgendermaßen abspielen:

$ mplayer dvb://ZDF\ HD -demuxer lavf -ao alsa:device=hw=1.0 -cache 8192

Die Angabe des ALSA-Devices kann man natürlich weglassen.
Falls man das -demuxer lavf weglässt bleibt der mplayer einfach bei folgender Ausgabe stehen und es erscheint kein Bild:
TS file format detected.
VIDEO MPEG2(pid=6110) AUDIO MPA(pid=6120) NO SUBS (yet)! PROGRAM N. 0

Falls man den großen Cachewert weglässt, ist – zumindest bei mir – das Bild und der Ton nicht synchron und es entstehen Aussetzer.
Kleine Vorwarnung: Die HD-Wiedergabe erzeugt bei mir 25% Prozessorlast!

Hier jetzt meine channels.conf die man mit mplayer verwenden kann, aus den Sendernamen sollten man teilweise noch die * entfernen, falls sich jemand die Mühe macht einfach mir zukommen lassen, ich aktualisiere das hier dann:
Solltet ihr in eurer channels.conf in den Namen der Sender viele *-Zeichen haben, kann man das mit sed herausfiltern:

$ sed s/*//g .mplayer/channels.conf >> /tmp/channels.conf
$ mv /tmp/channels.conf .mplayer/channels.conf

Die Liste gib’s nach dem “More”
Continue reading channels.conf für Kabel BW mit neuen Sendefrequenzen für mplayer DVB-C

Webcam für Unterkirnach im Schwarzwald

Für meinen Raspberry Pi habe ich jetzt endlich eine sinnvolle Aufgabe als Webcam-Server gefunden.

Unter http://www.unterkirna.ch ist ab jetzt immer ein aktuelles Bild des Wildpflanzenparks samt Talsee zu sehen. 🙂

Systemaufbau ist wie folgt:

  • Auf dem Pi läuft Arch Linux ARM
  • Die Bilder werden mit dem kleinen c-Programm fswebcam in einer leicht angepassten Version gemacht
  • Webcam ist eine Logitech C270
  • Ein Cronjob schießt alle fünf Minuten ein Bild und schiebt es per scp auf den Server
  • Die Webcam wird über ein aktiven USB-Hub mit Strom versorgt, da der Pi maximal 150mA über die USB-Ports liefert
  • Zwischen 23.00Uhr und 4.00Uhr werden keine Bilder geschossen

Die Webcam könnte maximal Bilder mit einer Auflösung von 1280×960 Pixeln schießen, da hier der Traffic des Webservers etwas stark leiden würde, habe ich die Auflösung auf 960×720 verringert.

Adding a dotted zero to X11 core fonts (misc-fixed)

In this post I will show how one can edit bitmap fonts in pcf or bdf
format under GNU/Linux. The reason for writing this article was a wish
on mine part to edit the X11 core fonts in order to add a dotted or
slashed zero.

Motivation

I use urxvt with stock settings (except color) as terminal emulator.
If not defined to otherwise in the configfile urxvt uses the default fonts of
the X windowing system. The X default fonts are in fact a complete
collection of fonts which are called misc-fixed. They are available
in different sizes whereas urxvt uses 6×13 as a default.

The misc-fixed fonts are bitmap fonts.
This means that every character is defined pixel for pixel.
This leads to a few advantages over truetype or freetype fonts which are
constructed out of splines:

  • Faster to display: There is no need to convert the character to
    actual pixels before displaying it.
  • Pixel-perfect: As bitmap fonts are already stored in pixels they can
    be displayed exactly as defined beforehand. There is no need of
    anti-aliasing, the font is sharp as hell. This is the main reason why I
    use bitmap fonts.

The pixel perfection is the biggest downside of bitmap fonts at the same
time. As soon as a bitmap font should be scaled in any way, they start to
look blurry.

Dotted / slashed zero

A dotted or slashed zero is a typographic term and means, that the
number zero is crossed or has a small dot inside. This makes the zero
far more distinguishable from the capital letter O. There’s a nice
article on Wikipedia on that topic.
Unfortunately the misc-fixed fonts don’t have a dotted zero. 🙁

urxvt-misc-fixed-without-dotted-zero

But this is going to change…

Needed tools

Three tools are needed. It’s very likely that you must install the
first two.

  • pcf2bdf: This tool is used to convert the bitmap font from the
    binary pcf format into the ASCII-based bdf format (bitmap distribution
    format). On a modern Linux the bitmap fonts are stored in pcf
    format and additionally compressed with gzip. On archlinux this is only
    available in AUR: pcf2bdf.
  • gbdfed: The graphical bdf editor is used to edit bitmap fonts. On
    archlinux gbdfed is available only an AUR as well: gbdfed.
    The official site: gbdfed official site.
  • bdftopcf: This tool is used to convert the edited bdf file back
    into pcf format. It’s shipped with X, so theres a high possibility
    that you don’t have to install it. 😉

Editing the pcf font files

On most systems the font files will lay under

/usr/share/fonts/misc/

You can list all installed fonts with it corresponding name and path with the
fc-list utility:

$ fc-list

The next step is to copy the font file you want to edit and unzip it:

$ cp /usr/share/fonts/misc/6x13-ISO8859-1.pcf.gz /tmp/
$ cd /tmp/
$ gunzip 6x13-ISO8859-1.pcf.gz

After that we can convert the pcf file into bdf format:

$ pcf2bdf -o 6x13-ISO8859-1.bdf 6x13-ISO8859-1.pcf

Now we can edit the font with gbdfed:

$ gbdfed 6x13-ISO8859-1.bdf

gbdfed gbdfed

After that we convert the bdf file back into pcf format:

$ bdftopcf -o 6x13-ISO8859-1.pcf 6x13-ISO8859-1.bdf

Compress it and copy it back. Make sure to have a backup of your
original font…

$ gzip 6x13-ISO8859-1.pcf
# cp 6x13-ISO8859-1.pcf.gz /usr/share/fonts/misc/

Afterwards we force a rebuild of the fontcache:

$ fc-cache -f

You might have to restart the X server as well.

And we’re finished:

urxvt with misc-fixed in 6x13 and dotted zero

If you don’t want to overwrite your original font file you have to
rename the font inside of gbdfed, copy the modified font to
~/.fonts and run fc-cache -f ~/.fonts. After that you have to
specify the font inside of urxvts configfile / .Xresources:

URxvt.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1

Show default include directories of gcc and show default library search path of ld

To show the default include directories used when calling gcc you can manually invoke the preprocessor with -v option:
$ cpp -v
The output will contain something like:
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/include
/usr/local/include
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.2/include-fixed
/usr/include

To find out the used library search paths of ld (linker) just use:
$ ldconfig -v 2>/dev/null | grep -v ^$'\t'
If invoked as $ ldconfig -v the libraries in the used paths are printed out as well.

I found this quite helpfull as I had problems with unresolved includes.

sources: [1] and [2]

Raspberry Pi angekommen

Raspberry Pi LogoHeute ist mein Raspberry Pi endlich angekommen 😀 Ich verfolge das Projekt schon relativ lange und freue mich schon darauf damit herumzuspielen. Als primärer Einsatzzweck ist der Raspberry Pi bei mir für Dinge geplant, für die ich – wegen dem Energieverbrauch und dem entstehenden Lärmpegel – bisher keine Lust hatte, einen normalen Rechner 24/7 angeschaltet zu lassen.

Geplant ist:

  • Eine Kamera anschließen, in kurzen Zeitabständen ein Bild auf den Server schieben und hier im Blog anzeigen
  • als kleiner privater Mailserver (weg von Gmail!)
  • CarPC

Raspberry Pi Top View Von Oben Close Up Raspberry Pi von Unten Bottom View Closeup Raspberry Pi Closeup

Java Runtime Plugin unter Firefox 11 Ubuntu/Debian wieder aktivieren installieren

UPDATE: Ich muss hier mal vor meinem eigenen Beitrag warnen. Die Deaktivierung des Java-Plugins ist nicht grundlos geschehen (siehe hier) . Eine Reaktivierung geschieht auf eigene Gefahr. Im Grunde ist es wieder mal ein Lizenzstreit. Oracle hat die “Operating System Distributor License for Java” (DLJ) gekündigt und das Oracle Java SDK darf jetzt nicht mehr von den Distributionen verteilt werden. Die letzte Version die noch unter der DLJ steht – also noch verteilt werden darf – enthält eine Sicherheitslücke, die sich über das Browser-Plugin ausnutzen lässt. Wegen der fehlenden Lizenz kann kein Sicherheitsupdate verteilt werden. 🙁 Deshalb wurde es von Canonical aus Ubuntu und vom Debian-Projekt aus Debian entfernt. Christoph hat allerdings einen tollen Artikel, wie man sich ein aus den aktuellen Java-Downloads von der Oracle Homepage ein installierbares Paket generieren kann.

firefox-java-logoBei einem der letzten Updates von Firefox Version 3.6 auf Version 11.0 aus den offiziellen Repositories ging bei mir irgendwie das Java Plugin verloren. 🙁 Dies hat zur Folge, dass Websites mit Java-Anteil (Post Portodruck, oder der online Foto-Dienst von DM) nicht mehr funktionieren.

Installation überprüfen

Ob das JRE-Plugin installiert ist, kann man folgendermaßen herausfinden:

about:plugins

in die Adresszeile des Browsers eingeben. Es erscheint eine Liste mit allen installierten Plugins. Falls hier kein Eintrag auftaucht, der “Java(TM) Plug-in 1.6.****” oder ähnlich heißt, ist das Java-Plugin nicht mehr richtig installiert.

Java Plugin für Firefox 11 wieder richtig installieren

Als erstes suchen wir uns die Plugin Datei:

$ locate libnpjp

Lustigerweise heißt das Browserplugin libpjp2.so und nicht sunjavaplugin.so oder libjavaplugin_jni.so was ich zuerst vermutete.
Als Ergebnis sollte euch der Pfad angezeigt werden, in welchem die Plugin-Datei zu finden ist. Bei mir ist das beispielsweise:

$ locate libnpjp
/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/libnpjp2.so

Falls ihr locate nicht installiert habt, erfüllt das gute alte find die Aufgabe natürlich ebenso (so zu suchen könnte etwas länger dauern :mrgreen:):

$ find / -iname "*libnpjp*" -type f 2> /dev/null

Wenn die Plugin-Datei gefunden wurde, muss eine symbolischer Link zur Plugin-Datei im Plugins-Verzeichnis von Firefox angelegt werden. Bei mir wäre das beispielsweise /usr/lib/mozilla/plugins. Hierzu werden root-Rechte benötigt, bei Ubuntu also ein sudo vorne anhängen:

# ln -s /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/

Dann noch Firefox neu starten und mit obiger Methode prüfen, ob das Plugin wieder in der Liste auftaucht.

Quellen: [1] und [2]

Unter Linux EXIF-Daten aus jpg-Dateien entfernen (verlustfrei / lossless)

Möchte man unter Linux aus einem jpg-Bild die EXIF-Daten entfernen, so kann man das mit Hilfe von mogrify aus dem ImageMagick-Paket tun:

mogrify -strip $BILD

Der Nachteil: mogrify überschreibt das Basisbild, was meistens nicht gewünscht ist. Abhilfe schafft hier – ebenfalls aus dem ImageMagick-Paket – das convert-Tool:
$ convert $BILD -strip $AUSGABE
Das wars! Ganz praktisch, wenn man sich die Bilder per Script für den Upload ins Web aufbereiten lässt.

Das Entfernen der EXIF-Daten mittels ImageMagick hat allerdings einen Nachteil: ImageMagick komprimiert das Bild neu. Die Entfernung der EXIF-Daten ist also nicht verlustfrei. Das hat laut einem Thread im ImageMagick-Forum folgenden Grund: ImageMagick versucht zu berechnen, welche Einstellungen für das jpg-Format bei der Erstellung des Bilder verwendet wurde. Da, zumindest in meinem Fall, die zu komprimierenden Bilder meistens von einer Digitalkamera erstellt wurden, ist das Ergebnis der Berechnung nicht exakt, sondern nur eine Annäherung an die proprietären Quantisierungstabellen der Kamerahersteller.

Abhilfe schafft hier das Tool jpegtran, das speziell für die verlustfreie Konvertierung von jpg-Dateien gedacht ist:

jpegtran -copy none $BILD.jpg > $AUSGABE.jpg
jpegtran -copy none -outfile $AUSGABE.jpg $BILD.jpg

Quelle: Stackoverflow
Mit ImageMagick kann man übrigens noch viele weitere tolle Dinge machen –> Man-page!

GIT-Server für kleine Entwicklergruppen aufsetzen einrichten (Debian basiert)

Git-logoIn diesem Beitrag möchte ich erklären, wie man einen GIT-Server auf einem Debian basierten Server für kleinere Entwicklergruppen einrichtet.
Irgendwelche feingranularen Rechteverwaltungen sind damit nicht möglich, jeder hat Schreib- und Leserechte auf die Repositories.
Im Prinzip wird ein dedizierter GIT-User angelegt, über den alle Entwickler via ssh Zugriff auf die Repositories haben. Die Authentisierung beim Server erfolgt über ssh-public-keys.

Voraussetzung ist ein Linux-Server mit ssh-Zugang und vorhandenen root-Rechten.

Git installieren: Als erstes sollte man auf dem Server git an sich installieren:

root@server:~# aptitude install git-core -y

Git-User anlegen: Danach wird der git-User angelegt und in dessen Home-Verzeichnis gewechselt:

root@server:~# adduser git
root@server:~# cd /home/git


Continue reading GIT-Server für kleine Entwicklergruppen aufsetzen einrichten (Debian basiert)