go seven !

Neues RaspberryPi Modell A+ (A plus)

Liebe RaspberryPi Fangemeinde, es gibt ein neues Modell. Nachdem im Juli das Modell B+ angekündigt wurde, gibt es nun bald das Modell A+. Dieses besticht unter anderem dadurch, dass es noch kleiner ist und noch günstiger.

A-plus_Overhead

Features:

  • Mehr GPIO. Es gibt nun 40 statt 26 Pins, die alten 26 sind kompatibel
  • Micro SD, statt SD. Steht nicht hinüber hinaus, leichter zu installieren…
  • Verbessertes Audio, durch Low-Noise-Netzteil

Das Modell kostet jetzt nur noch 20$ (werden wohl 20€) satt 25$. Finde ich gut. Und die Größe reduziert sich auf 86 x 65 mm. Sobald man es kaufen kann, werde ich hier wieder informieren!

A-plus_3

via

Freier Grafiktreiber für den RaspberryPi

Endlich ist es soweit! Ein freier Grafiktreiber für den Raspberry ist verfügbar. Momentan muss man dazu aber noch den Kernel selber compilieren:

SETTING UP THE DEVICE

You will need:

  • a Raspberry Pi, preferably a 512MB version, with the latest Raspbian
  • a network connection
  • a monitor capable of displaying 1080p
  • an SD card, at least 8GB (10GB is recommended)

We need plenty of space to build the kernel. Compiling will take around 12 hours, so it is helpful to overclock the Pi for this task. We also require the latest firmware, and the necessary packages we’re going to use to build the code.

Note: We’re going to use gcc 4.7, as the code generated is 10% faster than with 4.6. 4.8 is 10% faster still, but this is not available on Raspbian. If you cross-compile you can get better frame times.

Enter the raspi-config utility with:

sudo raspi-config

Expand the filesystem, set the overclock to at least medium (900 MHz), and reboot. Now perform an update with:

sudo rpi-update

and reboot again. We need to install several packages. Enter the following command to do this:

sudo apt-get -y install gcc make bc screen ncurses-dev g++-4.7 libsdl1.2-dev

FETCHING THE SOFTWARE

Enter the following commands to retrieve the necessary software from GitHub:

git clone --depth=1 https://github.com/raspberrypi/linux.git
git clone https://github.com/simonjhall/challenge
git clone https://github.com/simonjhall/dma
git clone https://github.com/raspberrypi/quake3.git

BUILDING THE KERNEL

This will take around 10 hours with all kernel modules. Pruning the modules to the bare minimum can improve compile times if you wish. Enter the following commands:

cd linux
git apply ~/challenge/kernel/patch.diff
zcat /proc/config.gz > .config
make oldconfig
make menuconfig

Enter “general setup”, select “local version”, enter the string “simon” and then exit to the main menu and save. Now build the kernel with:

make ARCH=arm

INSTALLING THE KERNEL

Enter the following commands to install the new kernel:

sudo make ARCH=arm modules_install
sudo cp arch/arm/boot/Image /boot/kernel_simon.img
sudo su
echo kernel=kernel_simon.img >> /boot/config.txt
echo gpu_mem=128 >> /boot/config.txt
reboot

When the devices comes back up, verify that the new kernel is loaded with the following command:

uname -a

You should see something similar to this:

Linux raspberrypi 3.10.33simon+ #1 PREEMPT Sat Mar 22 09:49:59 UTC 2014 armv6l x

BUILDING THE REST

Enter the following commands to build the rest of the software:

cd ~/quake3
git apply ~/challenge/quake/patch.diff
./build.sh
cd ~/dma
cp ~/challenge/kernel/module/dmaer.c .
make
./install.sh

Next, verify that the module has installed with this command:

tail /var/log/kern.log

You should see something similar to this:

Mar 23 15:22:45 raspberrypi kernel: [ 20.814750] smsc95xx 1-1.1:1.0 eth0:lin1
Mar 23 15:22:45 raspberrypi kernel: [ 21.376702] bcm2835-cpufreq: switching td
Mar 23 15:22:45 raspberrypi kernel: [ 21.376710] bcm2835-cpufreq: switching td
Mar 23 15:22:46 raspberrypi kernel: [ 24.472575] Adding 102396k swap on /var/S
Mar 23 15:25:02 raspberrypi kernel: [ 143.984835] 20c00000 f2c00000 deadbeef
Mar 23 15:25:02 raspberrypi kernel: [ 143.984866] major device number 248
Mar 23 15:25:02 raspberrypi kernel: [ 143.984890] vma list size 12, page list 6
Mar 23 15:25:02 raspberrypi kernel: [ 143.984909] allocated dma channel 4(f208
Mar 23 15:25:02 raspberrypi kernel: [ 143.985242] qpu ENABLED
Mar 23 15:25:02 raspberrypi kernel: [ 143.985264] V3D identify test: V3D versi2

Now enter the following commands:

cd ~/challenge/source
make
sudo make install

SETTING UP THE GAME

First of all you must ensure that you have the Quake 3 Arena data files on your Pi. You require the ‘point release’ pak files installed. There are various ways to do this but you could either transfer them from another machine with SCP, or copy them across on a USB stick. Copy the files into a folder called ‘baseq3′. This should now contain pak files numbered from 0 to 8 (eg pak1.pk3).

Next, enter the following commands:

sudo mkdir /root/.q3a
sudo mv baseq3/ /root/.q3a/
cd ~/quake3/build/release-linux-arm/
sudo mknod char_dev c 100 0
sudo cp ~/challenge/quake/demo.cfg /root/.q3a/baseq3/

RUNNING THE GAME

Enter the game folder with the following command:

cd ~/quake3/build/release-linux-arm/

Run the game using this command:

sudo ./ioquake3.arm +exec demo

If you wish to play the game after a reboot, you must run the following commands to re-load the necessary files:

cd ~/dma
./install.sh

Ich werde das Ganze demnächst auf deutsch anbieten – momentan probiere ich es aber noch selbst aus – was ja bekanntlich etwas dauern kann, auf dem Pi. Cross-compiling werde ich dann auch noch anschneiden… Viel Spaß euch mit Quake 3 und dem Pi!

7462_full

RaspberryPi, Relaisboard, WebGPIO und was ich damit anstelle

Kurzes Vorwort: Ich habe einen RaspberryPi, ein Relaisboard (als 4er oder 2er) und dafür eine Websteuerung geschrieben. Nun was damit anfangen? In meiner Studentenbude habe ich (auch mit einem Pi) ein Heimkinosystem mit Beamer, Soundsystem & co. Da man als Automatisierungstechniker grundsätzlich faul ist, möchte ich den Beamer nicht per Fernbedienung einschalten (und auch Kanalwechsel und co per Handy steuern) sowie das Soundsystem & Beamer komplett vom Netz trennen können (da ich ja in dem Zimmer schlafe).

Dazu soll der Beamer (Benq MP610) per Seriell-Verbindung gesteuert werden und alle Komponenten per Relaisboard spannungsfrei geschaltet werden. Letzteres habe ich nun (Prototypenmäßig) realisiert. Für Bastelwillige, die dies nachbauen wollen, hier eine Materialliste:

  • RaspberryPi
  • WLAN-Modul (wenn man kein LAN-Kabel verlegen will)
  • Aufputz-Verteilerdose (oder ähnliches, großes Gehäuse)
  • Relaisboard
  • Diverse NYM-Kabel (gibt es bei Obi, alternativ kann man auch flexibles Kabel nehmen)
  • Diverse Steckkabel (Jumperkabel, female-female und male-female)
  • Steckdosen (an die die Relaisausgänge im Endeffekt angeschlossen werden)
  • 5V Netzteil

Der Pi, wird mit Spannungsversorgung (5V) sowie den Railaisboard(s) in der Verteilerdose untergebracht:

pi-box

Ich möchte an dieser Stelle darauf hinweisen, dass die Verkabelung nicht Final ist. Es handelt sich hierbei um einen PROTOTYPEN. Man möge mir deshalb die Unprofessionalität verzeihen. Kurz zusammengefasst kann ich die Verdrahtung so zusammenfassen:

Das schwarze Kabel sorgt für die Spannungsversorgung (230V). Derzeit nur per Schuko-Steckdose – also Maximal 16A. Später soll der Pi im Unterverteiler meines Zimmers sitzen und dann werden die 3 Phasen auf die diversen Relais aufgeteilt (jedes Maximal 10A), um eine Lastverteilung zu garantieren und mehr als nur 16A Gesamtstrom haben zu können. Diese Spannungsversorgung speist das 5V Netzteil (ganz links) sowie die Eingänge der Relais 1 bis 6.

Die 5V Spannungsversorgung speist den Pi (über PIN 2 und 6) sowie VCC der Relaisboards (VCC und GND, der Jumper zwischen JD-VCC und VCC muss gesetzt sein). Die Steuereingänge der Relaisboards gehen direkt auf die GPIO-Pins des Pi.

Zusätzlich habe ich eine LED angebracht (Rot, hinter einem 100Ohm Widerstand), welche den Betriebszustand signalisiert. Diese ist direkt zwischen GND und PIN11 angeschlossen (MIT Widerstand 😛 ).

Die Softwareseite ist regelmäßigen Lesern schon bekannt. Ich setze Raspbian ein, zusätzlich meine Websteuerung. Damit kann ich über ein Webinterface die GPIO’s lesen und schreiben.

Todo:

  • Serielle Verbindung zum Beamer herstellen
  • Oberfläche bereinigen, anpassen
  • Als Android-App umsetzen
  • Umsetzung auf Hutschiene (bei Pollin gibt es da ein tolles Set)

UPDATE:

Auf Wunsch eines Lesers habe ich hier mal die grundsätzliche Verschaltung dargelegt:

connection

Man entschuldige bitte die Unprofessionalität der Zeichnung – sie entstand in kürzester Zeit im Zug 🙂 Wichtig: Die hier dargestellte Weise funktioniert zwar, ist aber bezüglich der Spannungsversorgung des Boards nicht zu empfehlen, wenn der Pi nur über MicroUSB befeuert wird. Am besten werden das Board UND der Pi an den GPIO’s versorgt. PS: Die GPIO’s sind frei wählbar. Der Jumper muss gesetzt sein.

RaspberryPi als PPTP-VPN-Server

Wenn man (aus welchem Grund auch immer) Zugriff auf ein anderes Netzwerk haben möchte, das direkte Mitlesen beim Surfen im Internetcafé unterbinden will oder einfach nur mal eine andere IP-Adresse braucht, dann ist man sicher schon mal auf den Begriff VPN gestoßen. Ein VirtuellesPrivatesNetzwerk – Netzwerktunnel oder so ähnlich. Nun kann man sich bei einem Anbieter für teuer Geld Produkte (CyberGhost, AvastVPN etc.) verkaufen lassen, in die man nicht “hineinschauen” kann. Oder man greift sich seinen RaspberryPi und macht es selber. Es ist einfacher als gedacht!

Ich setze mal voraus, dass Raspbian oder eine vergleichbare Distribution installiert ist. Internetzugriff ist natürlich auch essentiell.

Als Erstes bringen wir den Pi auf den aktuellen Stand:

sudo apt-get update ; sudo apt-get upgrade ; sudo apt-get dist-upgrade

Dann testen wir die Vorbedingungen:

sudo modprobe ppp-compress-18

Keine Fehler? Dann kann es ja losgehen. Wir installieren den Server:

sudo apt-get install pptpd

Wenn dies erfolgreich geschehen ist, müssen noch ein paar Anpassungen in Konfigurationsdateien durchgeführt werden. Als erstes nehmen wir und die pptp.conf vor:

sudo nano /etc/pptp.conf

Darin wird folgende Zeile angepasst:

localip 192.168.0.1

Die IP-Adresse muss natürlich durch die Adresse des Pi’s ersetzt werden (per ifconfig herausfinden). Mit Strg+x schließen und speichern. Jetzt öffnen wir /etc/ppp/pptpd-options :

sudo nano /etc/ppp/pptpd-options

Und geben folgendes ein am Ende der Datei ein:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Die IP-Adressen könne so gelassen werden (wenn der Pi wie meinem im Rack hängt (PCextreme.nl o.ä.)) sollten aber hinter einem Router durch dessen IP ersetzt werden. Speichern und in der Datei /etc/ppp/chap-sectrets die Nutzernamen und Passwörter festlegen.

sudo nano /etc/ppp/chap-secrets

Beispiel:

# Secrets for authentication using CHAP
# client              server     secret                                  IP adresses
nutzername    *                 passwort                            *

Speichern. Und Service neustarten.

sudo service pptpd restart

Jetzt musst die IP-Weiterleitung aktiviert werden. Dazu wird /etc/sysctl.conf editiert:

sudo nano /etc/sysctl.conf

Jetzt net.ipv4.ip_forward=1 suchen oder einfügen. Speichern. Als letzten schreiben wir noch folgendes in /etc/rc.local vor exit 0:

sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

nano-vpn-rc.local

Jetzt den Pi neustarten und: Fertig!

Temeraturgesteuerter Lüfter für den RaspberryPi

Ich habe meinen RaspberryPi im Einsatz für die Hausautomation und als Datencenter. Damit er und die Zusatzkomponenten (Netzteil, Relaiskarte…) nicht “rumliegen” habe ich alles in ein Gehäuse gesetzt. Dieses habe ich sehr kompakt gehalten. Allerdings gibt es dabei einen Nachteil: Die Hitze von Netzteil und Pi stauen sich darin (trotz Lüftungsöffnungen). Da ich dies vorhergesehen habe kaufte ich gleich noch einen Lüfter um diesen automatisiert einzusetzen – d.h. immer wenn die CPU-Temperatur des RaspberryPi über 50°C steigt, wird der Lüfter für 15 Sekunden aktiviert, dann erfolgt eine neue Abfrage der Temperatur, falls diese < 50°C ausfällt, schaltet der Lüfter aus und wartet bis zum nächsten Temperaturanstieg.

Die Hardware dazu ist simpel. Am Pi hängt ein PicoBorg und dahinter ein günstiger 5V-Lüfter von Amazon. Wesentlich interessanter ist ist die Software-Seite. Ich habe herumprobiert mit einem Shell-Script, dieses stürze aber oft nach einigen Minuten ab (und der Lüfter blieb an…). Deshalb versuchte ich es mit Python und war erfolgreich. Das Script sieht nun so aus:

import RPi.GPIO as GPIO
import time
import os
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT) 

def getCPUtemperature():
res = os.popen(‘vcgencmd measure_temp’).readline()
return(res.replace(“temp=”,””).replace(“‘Cn”,””))

SOLL_temp = “50.0” 

while 1:
if (getCPUtemperature() >= SOLL_temp):
GPIO.output(18, True) 
time.sleep(15) 
continue
else:
GPIO.output(18, False) 
time.sleep(20)

In meinem Fall wird GPIO 18 verwendet – das müsste man anpassen, wenn ein anderer PIN verwendet werden soll. Ich habe das Script als “status.py” in “/home/pi/lueftersteuerung/” abgelegt und per sudo chmod +x status.py ausführbar gemacht. Wenn man nun noch in “/etc/rc.local” vor dem “exit 0″ folgendes einträgt wird der Script automatisch beim Start geladen: “sudo python /home/pi/lueftersteuerung/status.py”.