RaspberryPi
Inhaltsverzeichnis
- 1 Updates & Upgrades
- 2 AVM FRITZ!WLAN USB Stick installieren/einrichten
- 3 Realtek RTL8188CUS Mini-USB Stick installieren/einrichten
- 4 TFTP-Server installieren
- 5 FTP-Server installieren:
- 6 Python -Setuptools installieren:
- 7 PIP installieren:
- 8 Feedparser installieren:
- 9 Cron-Logging einstellen
- 10 Uhrzeit per NTPDATE synchronisieren
- 11 Cron - Einstellungen aus Datei "Einstellungen_crontab.txt" importieren:
- 12 Fernseher über HDMI-CEC steuern
- 12.1 CEC-Client installieren, Neue Anleitung
- 12.2 cec-client installieren
- 12.3 Test
- 12.4 Fernseher per CEC-Client einschalten
- 12.5 Fernseher per CEC-Client ausschalten
- 12.6 Power-Status per CEC-Client auslesen
- 12.7 Fernseher per CEC-Client auf HDMI1 umschalten
- 12.8 Fernseher per CEC-Client auf HDMI4 umschalten
- 12.9 Fernseher wieder auf TV umschalten
- 12.10 Sprache des Fernsehers rausfinden
- 12.11 Befehle von "cec-client" anzeigen
- 12.12 CEC-Codes herausfinden
- 12.13 alle HDMI-CEC Geräte anzeigen
- 12.14 Python HDMI-CEC
- 13 Projekt: Raspberry spielt mit IR-Lichtschranke als Sensor eine MP3-Datei ab
- 14 USB-Sticks komfortabel mounten
- 15 Windows-Netzwerkfreigabe mounten
- 16 RaspberryPi per Script sichern
- 17 RDP einrichten
- 18 Email einrichten
- 19 Proxy einstellen (Raspbian)
- 20 SMB-Freigabe einrichten
- 21 Sprachausgabe
- 22 Radio hören
- 23 Interessante Links
Updates & Upgrades
sudo apt-get update
sudo apt-get upgrade
AVM FRITZ!WLAN USB Stick installieren/einrichten
- Konrolle ob Hardearetyp "zutrifft":
lsusb
eingeben.
- Die Ausgabe sollte so aussehen:
ID 057c:8401 AVM GmbH Fritz!WLAN N [Atheros AR9001U]
- Freie Firmware intallieren:
sudo apt-get install firmware-linux-free
- WLAN-Key einstellen/angeben
sudo pico /etc/wpa_supplicant/wpa_supplicant.conf
- Inhalt der Datei anpassen + speichern. Z. B.:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
network={ ssid="yyy" scan_ssid=1 proto=RSN group=CCMP pairwise=CCMP key_mgmt=WPA-PSK psk="xxxxxxxxxxxxxxxx" }
- In der Zeile ssid="yyy" den Netznamen (SSID) eintragen.
- In der Zeile psk="xxxxxxxxxxxxxxxx" den WLAN-Schlüssel eintragen.
- Test ob WLAN/WiFi-Netze gefunden werden:
sudo ifdown wlan0 sudo ifup wlan0 sudo iwlist wlan0 scan
oder
sudo iwlist wlan0 scan |grep "ESSID\|Quality"
Realtek RTL8188CUS Mini-USB Stick installieren/einrichten
- Kontrolle ob Hardwaretyp "zutrifft":
lsusb
eingeben.
- Die Ausgabe sollte so aussehen:
0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
ifconfig
eingeben.
- Die Ausgabe sollte so ähnlich aussehen:
wlan0 Link encap:Ethernet Hardware Adresse 00:13:ef:90:4b:2a UP BROADCAST MULTICAST MTU:1500 Metrik:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
- nach verfügbaren Netzwerken scannen:
sudo iwlist wlan0 scan
- Die Ausgabe sollte so ähnlich aussehen:
wlan0 Scan completed : Cell 01 - Address: 24:65:11:86:E7:53 ESSID:"xxx" Protocol:IEEE 802.11bgn Mode:Master Frequency:2.412 GHz (Channel 1) Encryption key:on Bit Rates:300 Mb/s Extra:rsn_ie=3014010xxxxxx040100000fac040100000xxc020000 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : CCMP Pairwise Ciphers (1) : CCMP Authentication Suites (1) : PSK IE: Unknown: DD6F0050F204104A0001101044000102103B00010310470010E5F1E6174F806C1C241124651186E74F1021000341564D1023000446426F78102400043030303010420004303030301054 000800060050F20400011011000446426F78100800022788103C0001031049000600372A000120 Quality=81/100 Signal level=63/100
- WLAN-Key einstellen/angeben
sudo pico /etc/wpa_supplicant/wpa_supplicant.conf
- Inhalt der Datei anpassen + speichern. Z. B.:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
network={ ssid="yyy" key_mgmt=WPA-PSK psk="xxxxxxxxxxxxxxxx" }
- In der Zeile ssid="yyy" den Netznamen (SSID) eintragen.
- In der Zeile psk="xxxxxxxxxxxxxxxx" den WLAN-Schlüssel eintragen.
- Neu starten
sudo reboot
- Test ob IP-Adresse bezohen wurde:
sudo ifconfig wlan0
- Ausgabe sollte so Änlich aussehen:
wlan0 Link encap:Ethernet Hardware Adresse 00:13:ef:xx:xx:xx inet Adresse:192.168.xxx.xxx Bcast:192.168.xxx.xxx Maske:255.xxx.xxx.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:45 errors:0 dropped:0 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:15320 (14.9 KiB) TX bytes:1398 (1.3 KiB)
- Stromsparmodus abschalten:
dazu eine Datei mit:
sudo nano /etc/modprobe.d/8192cu.conf
anlegen.
- Inhalt:
# Disable power saving options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
Kontrolle:
cat /sys/module/8192cu/parameters/rtw_power_mgnt cat /sys/module/8192cu/parameters/rtw_enusbss
Mögliche Parameter anzeigen:
ls /sys/module/8192cu/parameters/
TFTP-Server installieren
- Server installieren:
sudo apt-get install tftpd-hpa
- Einstelllungen anpassen:
sudo nano /etc/default/tftpd-hpa
Inhalt der Datei wie folgt ändern:
TFTP_USERNAME=”tftp” TFTP_DIRECTORY=”/srv/tftp” TFTP_ADDRESS=”0.0.0.0:69″ TFTP_OPTIONS=”–secure -4”
- Server neu starten:
sudo service tftpd-hpa restart
Hinweis: Dateien in /srv/tftp
ablegen.
FTP-Server installieren:
sudo apt-get install vsftpd
- FTP-Server konfigurieren:
sudo nano /etc/vsftpd.conf
- Folgende Änderungen (Auskommentieren) machen:
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES local_umask=022
- Neuen Nutzer hinzufügen
sudo useradd -m -s /sbin/false -g users ftpuser
- Kennwort setzen
sudo passwd ftpuser
- Sicherheitseinstellungen vornehmen:
sudo nano /etc/pam.d/vsftpd
- PAM konfigurieren (Auskommentieren)
#auth required pam_shells.so
- Server neu starten:
sudo service vsftpd restart
- Berechtigungen setzen:
sudo chmod a-w /home/ftpuser
Python -Setuptools installieren:
sudo apt-get install python-setuptools
PIP installieren:
sudo apt-get install python-pip
Feedparser installieren:
sudo pip install feedparser
Cron-Logging einstellen
sudo pico /etc/rsyslog.conf
- Auskommentieren (Rubrik:
############### #### RULES #### ###############)
# cron.* /var/log/cron.log
zu:
cron.* /var/log/cron.log
- Cron neu starten:
sudo /etc/init.d/rsyslog restart
Uhrzeit per NTPDATE synchronisieren
sudo apt-get purge ntp
sudo dpkg-reconfigure tzdata
sudo apt-get install ntpdate
Cron - Einstellungen aus Datei "Einstellungen_crontab.txt" importieren:
sudo crontab ./Einstellungen_crontab.txt
Fernseher über HDMI-CEC steuern
CEC-Client installieren, Neue Anleitung
CEC-client installieren:
- das Erste ist den RPI auf die letzen Paketstand zu bringen:
sudo apt-get update && sudo apt-get dist-upgrade sudo rpi-update sudo reboot
- als nächstes installiere die Voraussetzungen um libcec zu schaffen:
sudo apt-get install git cmake g++-4.8 checkinstall liblockdev1-dev libudev-dev libxrandr-dev python-dev swig
- clone das pluse-eight libcec repository:
cd /usr/src sudo git clone --recursive git://github.com/Pulse-Eight/libcec.git
- erzeuge die Platformbibliothek:
cd /usr/src/libcec/src/platform sudo mkdir build cd build cmake -DCMAKE_CXX_COMPILER=g++-4.8 .. sudo cmake -DCMAKE_CXX_COMPILER=g++-4.8 .. sudo make sudo checkinstall
- bilde letzlich libcec:
cd /usr/src/libcec sudo mkdir build cd build sudo cmake -DRPI_INCLUDE_DIR=/opt/vc/include -DRPI_LIB_DIR=/opt/vc/lib -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=1 .. sudo make sudo -s export LIBRARY_PATH=/opt/vc/lib checkinstall
cec-client installieren
sudo apt-get install autoconf build-essential git liblockdev1-dev libtool libudev-dev pkg-config git clone git://github.com/Pulse-Eight/libcec.git cd libcec/ ./bootstrap ./configure --with-rpi-include-path=/opt/vc/include --with-rpi-lib-path=/opt/vc/lib --enable-rpi
make sudo make install sudo ldconfig
Test
cec-client -l
Fernseher per CEC-Client einschalten
echo "on 0" | sudo cec-client -s -d 1
Fernseher per CEC-Client ausschalten
echo "standby 0" | sudo cec-client -s -d 1
Power-Status per CEC-Client auslesen
echo "pow 0" | sudo cec-client -s -d 1
Fernseher per CEC-Client auf HDMI1 umschalten
echo "tx 4F 82 10 00" | cec-client -s
Fernseher per CEC-Client auf HDMI4 umschalten
echo "tx 4F 82 40 00" | cec-client -s
Fernseher wieder auf TV umschalten
echo "txn 40 9D 00 00" | cec-client -s
Sprache des Fernsehers rausfinden
echo 'lang 0' | cec-client -t p -p 1 -d 1 -s | tail -n1 | grep 'language' | awk '{print $3}'
Befehle von "cec-client" anzeigen
echo h | cec-client -s -d 1
Ausgabe:
opening a connection to the CEC adapter... ================================================================================ Available commands: [tx] {bytes} transfer bytes over the CEC line. [txn] {bytes} transfer bytes but don't wait for transmission ACK. [on] {address} power on the device with the given logical address. [standby] {address} put the device with the given address in standby mode. [la] {logical address} change the logical address of the CEC adapter. [p] {device} {port} change the HDMI port number of the CEC adapter. [pa] {physical address} change the physical address of the CEC adapter. [as] make the CEC adapter the active source. [is] mark the CEC adapter as inactive source. [osd] {addr} {string} set OSD message on the specified device. [ver] {addr} get the CEC version of the specified device. [ven] {addr} get the vendor ID of the specified device. [lang] {addr} get the menu language of the specified device. [pow] {addr} get the power status of the specified device. [name] {addr} get the OSD name of the specified device. [poll] {addr} poll the specified device. [lad] lists active devices on the bus [ad] {addr} checks whether the specified device is active. [at] {type} checks whether the specified device type is active. [sp] {addr} makes the specified physical address active. [spl] {addr} makes the specified logical address active. [volup] send a volume up command to the amp if present [voldown] send a volume down command to the amp if present [mute] send a mute/unmute command to the amp if present [self] show the list of addresses controlled by libCEC [scan] scan the CEC bus and display device info [mon] {1|0} enable or disable CEC bus monitoring. [log] {1 - 31} change the log level. see cectypes.h for values. [ping] send a ping command to the CEC adapter. [bl] to let the adapter enter the bootloader, to upgrade the flash rom. [r] reconnect to the CEC adapter. [h] or [help] show this help. [q] or [quit] to quit the CEC test client and switch off all connected CEC devices. ================================================================================
CEC-Codes herausfinden
alle HDMI-CEC Geräte anzeigen
echo scan | cec-client -s -d 1
Python HDMI-CEC
Projekt: Raspberry spielt mit IR-Lichtschranke als Sensor eine MP3-Datei ab
Materialien:
Hardware:
- IR-Lichtschranke aus Ausbildung zum Kommunkationselektroniker bei der DBP/Deutschen Telekom Modul 2.11.06 bestehend aus:
- Sender
- Empfänger mit Relais
- 2 SteckerNetzteile mit möglichst guter Gleichrichtung. Eingang: 230V ~ Ausgang: 12V min. 200mA
- RaspberryPi Model B
- 1 SteckerNetzteil mit MiniUSB-Anschluss zum Betrieb des RaspberryPi (z. B. Ansmann Micro USB Charger 1A). Eingang: 230V ~ Ausgang: 5V max. 1A
- 16 GB SD-Karte
- "Aktive" Lautsprecherboxen (am besten mit Lautstärkeregler) für PC mit 3,5mm Klinkenstecker-Anschluss oder passendem Adapter.
Software:
Hardware Installation:
- Die zwei Relaiskontakte für dem Schliesser der Lichtschranke (3-poliger Schraubverbinder am DIL-Relais auf der Platine) mit 2 Drähten:
- 1x an PIN (Ground)
- 1x an PIN (GPIO24)
- des GPIO-Steckers des RaspberryPi anschliessen:
Software Installation:
- NOOBS installieren wie hier beschrieben
- SD-Karte in RaspberryPi stecken
- Strom anschliessen und booten
- in der grafischen Oberfläche "Deutsch + Deutsche Tastatur" einstellen
- Raspbian auswählen und installieren lassen
- Neu starten
- raspi-config ausführen - Punkte:
configure_keyboard - Set keyboard layout change_pass - Change password for 'pi' user change_locale - Set locale
Anmerkung: Am besten alle 3 deutschen 'locales' auswählen + die mit UTF-8 als aktuelle setzen.
change_timezone - Set timezone
durcharbeiten.
Einrichten
- Raspbian auf den "neusten Stand" bringen:
sudo apt-get update sudo apt-get upgrade
- MP3-Software installieren (alternativ geht auch
aplay
, dann eben mit.wav
-files (sollte vorinstalliert sein):
sudo apt-get install mpg321
- ALSA-Sound-Werkzeuge (falls nicht vorhanden):
sudo apt-get install alsa-utils
- optional - Wenn man später mit Python arbeiten will (falls nicht vorhanden):
sudo apt-get install python-dev sudo apt-get install python-rpi.gpio
- Dateien:
lightbarrier.sh lightbarrier_ini.sh hwk.mp3
Nach Verzeichnis /home/pi
kopieren. Z. B. über FTP-Zugriff oder vom Raspberry aus über sudo wget --ftp-user=Benutzer --ftp-password=Kennwort ftp://ftp.server.net/hwk.mp3
- Rechte der Dateien z. B. mit
sudo chmod 755 *
auf ausführbar setzen.
- Datei
/etc/rc.local
editieren:
sudo nano /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sudo /home/pi/lightbarrier_ini.sh sudo /home/pi/lightbarrier.sh # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi exit 0
- Audio Ausgang auf 3,5mm Klinke (grüne Buchse) einstellen
sudo amixer cset numid=3 1
- Kontrolle:
sudo amixer cget numid=3 1
sollte so ausehen:
numid=3,iface=MIXER,name='PCM Playback Route' ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0 : values=1
- Lautstärke auf Maximum setzen:
amixer sset 'PCM' 100%
- Raspberry neu booten
sudo reboot
bash-Scripte
-
/home/pi/lightbarrier_ini.sh:
#!/bin/bash # export GPIO pin 24 and set to input with pull-up echo "24" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio24/direction echo "high" > /sys/class/gpio/gpio24/direction
-
/home/pi/lightbarrier.sh:
#!/bin/bash # export GPIO pin 24 and set to input with pull-up is done by seperate script "lightbarrier_ini.sh" because this should be done only once # monitor GPIO pin 24 (wiringPi pin 5) for light-barrier signal # wait for pin to go low while [ true ] do if [ "$(cat /sys/class/gpio/gpio24/value)" == '0' ] then echo "playing mp3 ..." #exit 0 mpg123 /home/pi/hwk.mp3 fi sleep .1 done
Fehlersuche, Tuning ...
- Die
sleep
-Anweisung in obigem Script ist eine Art "Auslöse-Hysterese" ... je nach Länge der MP3-Datei ... - Zugriffsrechte auf z. B.
audio:x:29:pi,root sys:x:3:pi,root gpio:x:1003:pi,root
- anpassen.
- Kontrolle:
less /etc/group
- Ändern z. B.:
sudo usermod -aG gpio pi
- Lautstärkeregler (ALSA) "aufgedreht" + Regler an Aktivboxen + eingeschaltet?
- richtiger Audio-Ausgang mit
amixer
gesetzt? - Verkabelung des Relaiskontaktes? Kontrolle ob am GPIO24 richtig eingelesen wird:
cat /sys/class/gpio/gpio24/value
USB-Sticks komfortabel mounten
- Werkzeuge installieren:
sudo apt-get install usbmount
- Rechte (Schreiben) anpassen:
sudo nano /etc/usbmount/usbmount.conf
Zeile in:
FS_MOUNTOPTIONS="-fstype=vfat,gid=users,dmask=0007,fmask=0117"
ändern
Windows-Netzwerkfreigabe mounten
- CIFS-Software installieren
sudo apt-get install cifs-utils
- Verzeichnis erstellen
mkdir /media/nas
- Freigabe mounten:
sudo mount.cifs //<IP-Adresse des Servers>/<Freigabename> /media/nas -o user=<Benutzername>,pass=<Passwort>,sec=ntlm
[Quelle: http://www.forum-raspberrypi.de/Thread-freigegebenen-ordner-einbinden?pid=41711#pid41711]
RaspberryPi per Script sichern
- Script downloaden:
wget http://www.linux-tips-and-tricks.de/raspiBackupInstall.sh -O raspiBackupInstall.sh -q && sudo bash raspiBackupInstall.sh
- Script ausführen:
sudo /usr/local/bin/raspiBackup.sh -p /media/nas -t dd -z -v
RDP einrichten
sudo apt-get install xrdp
- weitere Einstellmöglichkeiten (nicht getestet):
/etc/xrdp/xrdp.ini und /etc/xrdp/sesman.ini
Email einrichten
https://rpi.tnet.com/project/faqs/smtp
Proxy einstellen (Raspbian)
Falls sich Ihr Raspberry Pi hinter einem Proxy-Server befindet, müssen Sie diesen für ausgehende HTTP-, HTTPS- und möglicherweise auch FTP-Verbindungen eintragen. Dazu erstellen Sie die Datei /etc/profile.d/proxy.sh mit einem Editor.
pi@raspberrypi ~ $ sudo vi /etc/profile.d/proxy.sh
- Fügen Sie die folgenden Zeilen in die Datei ein und passen die IP-Adressen und Portnummern entsprechend Ihrem Proxy-Server an.
export http_proxy=http://192.168.10.1:3128 export https_proxy=http://192.168.10.1:3128 export ftp_proxy=http://192.168.10.1:3128
export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$https_proxy export FTP_PROXY=$ftp_proxy
Sollte für den Zugriff auf den Proxy-Server eine Authentifizierung mit Benutzername und Passwort nötig sein, können Sie diese Daten wie folgt angeben.
export http_proxy="http://username:password@192.168.10.1:3128" export https_proxy="http://username:password@192.168.10.1:3128" export ftp_proxy="http://username:password@192.168.10.1:3128"
export HTTP_PROXY=$http_proxy export HTTPS_PROXY=$https_proxy export FTP_PROXY=$ftp_proxy
Wenn Sie Ihre aktuelle Terminal-Sitzung beenden und sich erneut anmelden, werden die Einstellungen automatisch geladen.
sudo nano /etc/apt.conf.d/10proxy
- Inhalt:
"http://username:password@proxy_server_address:port";
sudo nano ~/.profile
- Inhalt:
# Proxy server (example: http://username:password@10.0.0.1:8080). User/pass optional.
export http_proxy=http://[user]:[pass]@[proxy_server_address]:[port]
# Proxy exclusions (don't use the proxy server for these hostnames and IP addresses). export no_proxy=localhost,127.0.0.0/8
SMB-Freigabe einrichten
Software installieren
sudo apt-get update sudo apt-get install samba samba-common smbclient
- Prüfen ob die Dienste aktiv sind:
sudo service smbd status sudo service nmbd Status
Konfiguration
- Für die Samba-Grundkonfiguration gibt es eine zentrale Konfigurationsdatei "/etc/samba/smb.conf". Diese Datei ist in der Vorkonfiguration äußerst umfangreich und dadurch unübersichtlich. Für eine einfache Grundkonfiguration empfiehlt sich die Datei umzubenennen und neu zu erstellen.
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf_alt sudo nano /etc/samba/smb.conf
- Die folgende Grundkonfiguration ist nicht allgemeingültig, sondern für die meisten Anwendungen sinnvoll und zweckmäßig anzusehen. Das heißt, für den Anfang reicht es aus. Später muss sie vielleicht individuell angepasst werden.
[global] workgroup = WORKGROUP security = user encrypt passwords = yes
- Dann testen wir diese Konfigurationsdatei. Das hat den Vorteil, dass wenn wir etwas falsch oder fehlerhaft eintragen, dann können wir den Fehlstart des Samba-Servers vermeiden.
testparm
- Nach jeder Änderung an der Konfigurationsdatei müssen die Samba-Dienste neu gestartet werden. Erst dann wird die Konfiguration übernommen.
sudo service smbd restart sudo service nmbd restart
Sprachausgabe
Radio hören
mpg123 -@ http://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3