TSOP 1738 IR Empfänger am Raspberry Pi GPIO

Die Tage fiel mir beim Aufräumen eine alte Apple Remote in die Hände, die seit Jahren in einer dunklen Kiste ihr Dasein fristete. Dabei fiel mir ein, dass auch noch irgendwo ein IR-Empfänger sein musste, den ich mir vor vielen vielen Jahren mal für den Betrieb am seriellen Anschluss zusammengelötet hatte. Das wäre doch ideal, um damit den MPD auf meinem Raspberry Pi B+ zu steuern, dann müsste ich nicht immer umständlich über die Handy-App den Radio-Stream ein- und ausschalten. Also, den IR Empfänger rausgesucht, mit einem USB-Seriell-Adapter, den ich auch noch da hatte, angeschlossen und ausprobiert. Leider habe ich das ganze darüber nicht zum laufen bekommen. Ein Freund, der bei solchen Sachen etwas mehr Erfahrung hat, meinte dazu, dass über diese USB-Seriell-Adapter so einiges nicht funktioniert, aber ich habe doch ein wenig meine jugendlichen Lötkünste in Verdacht, die eventuell zu einem Kurzschluss geführt haben. TSOP 1738 IR Empfänger am Raspberry Pi GPIO weiterlesen

Ubuntu do-release-upgrade mit apt-cacher

Ein paarmal hatte ich jetzt schon das Problem dass sudo do-release-upgrade die neue Distribution nicht gefunden hat. Ein detaillierter Aufruf lieferte diese Meldung:

sudo do-release-upgrade -p
Checking for a new Ubuntu release
Err Upgrade tool signature
  403  Sorry, not allowed to fetch that type of file: trusty.tar.gz.gpg
Err Upgrade tool
  403  Sorry, not allowed to fetch that type of file: trusty.tar.gz
Fetched 0 B in 0s (0 B/s)
WARNING:root:file 'trusty.tar.gz.gpg' missing
Failed to fetch
Fetching the upgrade failed. There may be a network problem.

Das Problem war der apt-cacher, der das Herunterladen der Dateien nicht erlaubte. Bisher hatte ich dann für das Upgrade immer kurz den Proxy auf dem System, das ich aktualisieren wollte, deaktiviert, aber das ist ja auch keine dauerhafte Lösung.

Das eigentliche Problem ist schlicht und einfach, dass dem apt-cacher die neuen Ubuntu-Versionen noch nicht bekannt sind und er sie deshalb zurückweist. Man muss nur die Codenamen der neueren Distributionen in der Config-Datei eintragen:

sudo vi /etc/apt-cacher/apt-cacher.conf

ubuntu_release_names = dapper, edgy, feisty, gutsy, hardy, intrepid, jaunty, karmic, lucid, maverick, natty, oneiric, precise, quantal, raring, saucy, trusty

apt-cacher neu starten und fertig:

sudo service apt-cacher reload

Ein Hinweis noch zu LTS-Versionen: Ein direktes Upgrade von einer LTS-Version zur nächsten (z.B. von 12.04 auf 14.04) ist erst möglich wenn das erste Point-Release der neuen Version erschienen ist (in diesem Fall 14.04.1). Bis dahin muss man, wenn man die neue Version unbedingt braucht/will, jeden einzelnen Upgrade-Schritt dazwischen mitmachen.

Ubuntu Pakete downgraden und upgrades verhindern

Manchmal gibt es mit einer neueren Version eines Paketes Probleme mit Software die es verwendet, so dass man gezwungen ist bei einer älteren Version zu bleiben. apt bietet dafür recht einfache Mechanismen.

Automatisches Downgrade

Natürlich stellt man die Probleme erst fest, wenn das neue Paket installiert ist, als muss erstmal die alte Version wieder her. Die alte Version findet man im Log von dpkg:

$ grep upgrade /var/log/dpkg.log
2014-05-30 10:27:28 upgrade mercurial 2.8.2-1ubuntu1 3.0-1ppa1~precise1
2014-05-30 10:27:28 upgrade mercurial-common 2.8.2-1ubuntu1 3.0-1ppa1~precise1

Hier wurde mercurial von Version 2.8.2 auf 3.0 aktualisiert. Mit etwas Glück kann man mit der alten Versionsnummer einfach auf die alte Version zurück:

sudo apt-get install mercurial=2.8.2-1ppa2~precise1

In dem speziellen Fall funktionierte das bei mir leider nicht:

E: Version '2.8.2-1ppa2~precise1' for 'mercurial' was not found

Manuelles Downgrade

Ein manuelles Downgrade ist eigentlich auch nicht viel Arbeit, eigentlich muss man nur die Pakete manuell herunterladen und direkt mit dpkg -i installieren. Es kann nur etwas lästig sein Abhängigkeiten zu finden.

wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mercurial/mercurial-common_2.8.2-1ubuntu1_all.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mercurial/mercurial_2.8.2-1ubuntu1_amd64.deb
sudo dpkg -i mercurial_2.8.2-1ubuntu1_amd64.deb mercurial-common_2.8.2-1ubuntu1_all.deb

Zukünftige Upgrades verhindern

Damit Ubuntu das Paket auch bei zukünftigen Upgrades auf dieser Version hält müssen wir apt das noch mitteilen:

sudo echo "mercurial hold" | sudo dpkg --set-selections

Und schon werden für das Paket keine Updates mehr installiert. Natürlich ist das keine Dauerlösung, wenn man das eigentliche Problem behoben hat und das Update gefahrlos installiert werden kann muss man apt auch das wieder mitteilen:

sudo echo "mercurial install" | sudo dpkg --set-selections

Das ist alles.

GRUB mit btrfs wiederherstellen

Bei meinem Versuch den GRUB bei einer Ubuntu-Installation mit btrfs wiederherzustellen stieß ich heute auf eine unerwartete Fehlermeldung:

$ grub-install --recheck /dev/sda
Path '/boot/grub' is not readable by GRUB on boot. Installation is impossible. Aborting.

Nach einigen Versuchen fand ich die Lösung in diesem Blogbeitrag. Mein Fehler war, dass ich einfach /dev/sda1 nach /mnt gemountet, aber nicht das subvolume angegeben hatte. Also wie gewohnt eine Shell von CD oder DVD booten, dann:

mount -t btrfs -o subvol=@ /dev/sda1 /mnt/
mount -o bind /dev /mnt/dev
mount -t proc proc /mnt/proc
chroot /mnt /bin/bash
grub-install --recheck /dev/sda

Wichtig ist hier der Parameter -o subvol=@.

Natürlich nicht vergessen /dev/sda(1) durch die richtigen Platten und Partitionen zu ersetzen.

Kleiner Tipp am Rande wenn die Remote-Konsole Tastenkombinationen mit alt-gr blockiert: @ ist ASCII 64 (ALT gedrückt halten und 64 auf dem Nummernblock tippen). Bei der iDRAC 7 Konsole von Dell ist das nötig.

Alte Linux-Kernel unter Ubuntu entfernen

Wenn ein Linux über einen längeren Zeitraum läuft dann sammeln sich mit der Zeit einige Kernelversionen an. Hat man unter /boot eine eigene Partition gemountet läuft man Gefahr dass die Partition komplett voll läuft. Ich habe in einem Blogpost zwei nette Befehle gefunden mit dem sich alle alten Kernel komfortabel entfernen lassen.

Wichtig: Wenn nötig vorher nochmal die Maschine neu booten, damit der aktuellste Kernel in Benutzung ist. Die aktuell laufende Version kann man mit diesem Befehl überprüfen:

uname -r

Einmal testen welche Kernel entfernt werden würden:

sudo dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | \
cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt-get --dry-run remove

Befehl zum endgültig löschen:

sudo dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | \
cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt-get -y purge

Ich würde gerne die Quelle verlinken, leider scheint das Blog mittlerweile nicht mehr zu existieren.

Steam für Linux ist fertig

steam_linux

Gestern Abend haben Valve und Ubuntu das fertige Steam für Linux vorgestellt. Ich glaube das ist der größte Schritt für Linux seit … ich würde fast sagen der größte Schritt überhaupt. In den letzten Jahren haben viele Faktoren dazu beigetragen Linux dem Massenpublikum näher zu bringen, dazu gehören allen voran die Entwicklung von Ubuntu, das es aller Kontroversen zum Trotz geschafft hat Linux für die breite Masse interessant zu machen. Steam für Linux ist fertig weiterlesen

Schwarz-Weißes Bild beim Anschluss vom Raspberry Pi an einen analogen Fernseher

Der Raspberry Pi hat bekanntlich neben dem HDMI-Ausgang noch einen Composite Video-Ausgang mit dem man ihn an einen analogen Fernseher anschließen kann. Dafür benötigt man lediglich ein Cinch-Kabel, die für Video gedachten Kabel haben in der Regel gelbe Stecker.

Schließt man den Pi so an den Fernseher an dann kann es passieren dass auf dem Fernseher nur ein leicht verzerrtes Schwarz-Weiß Bild ankommt. Schwarz-Weißes Bild beim Anschluss vom Raspberry Pi an einen analogen Fernseher weiterlesen

Linux-System auf neue Festplatte kopieren

Mal wieder ein Artikel als Erinnerung für mich, damit ich mir das nächste Mal nicht wieder alles zusammen suchen muss.

Beide Festplatten anschließen und von Linux-CD/USB-Stick booten. mit fdisk -l nachschauen welche Platten die richtigen sind (in meinem aktuellen Fall sda und sdc). Zielplatte partitionieren. Linux-System auf neue Festplatte kopieren weiterlesen

Preseed für Ubuntu 10.04 für 12.04 aktualisieren

Meine Preseed-Datei für virtuelle Maschinen konnte ich eigentlich fast komplett übernehmen, nur ein Befehl hat sich geändert. console-setup/layoutcode heißt jetzt keyboard-configuration/layoutcode, so dass sich die Zeile

d-i console-setup/layoutcode string de

in

d-i keyboard-configuration/layoutcode string de

ändert. Weiterhin hat sich im Verzeichnis isolinux die Datei geändert, die das Bootmenü der CD beinhaltet. Sie heißt nicht mehr text.cfg, sondern txt.cfg. Eine Kleinigkeit habe ich noch beim Erstellen der eigenen CD vergessen, was mir kurz nach dem Start der Installation die Meldung „Incorrect CD-ROM detected“ bescherte.

Die Lösung: Es gibt auf der CD ein verstecktes Verzeichnis .disk, das man ebenfalls mitkopieren muss.

cp -rp * .disk /pfad/zum/ziel

Und schon klappt es.

Zu guter letzt noch meine genutzten Dateien: Preseed für Ubuntu 10.04 für 12.04 aktualisieren weiterlesen