RaspberryPi

Aus www.electronic-man.randschtoischlotzer.de
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Updates & Upgrades

sudo apt-get update
sudo apt-get upgrade

AVM FRITZ!WLAN USB Stick installieren/einrichten

  • Konrolle ob Hardwaretyp "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)

Quelle:

  • 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/


Quelle1: Quelle2: Quelle3:

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

Quelle:

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

Quelle:

Python -Setuptools installieren:

sudo apt-get install python-setuptools

PIP installieren:

sudo apt-get install python-pip

Feedparser installieren:

sudo pip install feedparser

Quelle:

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

Quelle:

Uhrzeit per NTPDATE synchronisieren

sudo apt-get purge ntp 
sudo dpkg-reconfigure tzdata
sudo apt-get install ntpdate

Quelle:

Cron - Einstellungen aus Datei "Einstellungen_crontab.txt" importieren:

sudo crontab ./Einstellungen_crontab.txt

Fernseher über HDMI-CEC steuern

CEC-Client installieren, normales Paket

sudo apt-get install cec-utils

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

Quelle:

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


Quelle

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

Quelle

Sprache des Fernsehers rausfinden

echo 'lang 0' | cec-client -t p -p 1 -d 1 -s | tail -n1 | grep 'language' | awk '{print $3}'

Quelle

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

Quelle

alle HDMI-CEC Geräte anzeigen

echo scan | cec-client -s -d 1

Python HDMI-CEC

Link1 Link2

Projekt: Raspberry spielt mit IR-Lichtschranke als Sensor eine MP3-Datei ab

Lichtschranke.png

Materialien:

Hardware:

  • IR-Lichtschranke aus Ausbildung zum Kommunkationselektroniker bei der DBP/Deutschen Telekom Modul 2.11.06 bestehend aus:
  1. Sender
  2. Empfänger mit Relais
    Datei:IR-Lichtschranke Modul 2-11-06.pdf
  • 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:

  • NOOBS 1.4.0 (Release date: 2015-02-18) Quelle:
  • SD Formatter 4.0 for SD/SDHC/SDXC Quelle:

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:

GPIO LightBarrier.png

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

Quelle:

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]

... automatisch bei Boot

  • z. B. Bash-Script mountscript.sh mit folgendem Inhalt erstellen:
#!/bin/bash
sudo mount.cifs //server/share /media/y: -o user=Benutzer,pass=Kennwort,sec=ntlm,iocharset=utf8
  • script ausführbar machen:
sudo chmod +x mountscript.sh
  • Script bei boot aufrufen - dazu in /etc/rc.local vor der Zeile mit exit 0 einfügen:
/home/pi/mountscript.sh &
  • per:
sudo raspi-config

im Punkt:

3 Boot Options                 Configure options for start-up

den Unterpunkt:

B2 Wait for Network at Boot Choose whether to wait for network connection during boot line

auf:

 Waiting for network on boot is enabled

stellen.

RaspberryPi per Script sichern

  • Script downloaden:
curl -s -L -O https://www.linux-tips-and-tricks.de/raspiBackupInstallUI.sh && sudo bash ./raspiBackupInstallUI.sh
alt: wget http://www.linux-tips-and-tricks.de/raspiBackupInstall.sh -O raspiBackupInstall.sh -q && sudo bash raspiBackupInstall.sh
  • Script ausführen:

neu ab ~ Version 0.6.1.2 :

sudo /usr/local/bin/raspiBackup.sh -a : -o : -t dd -z -v  /media/nas 

alt:

sudo /usr/local/bin/raspiBackup.sh -p /media/nas -t dd -z -v
  • Bei Problemen (z. B. wenn RPi hinter einem Proxy betrieben wird:
  • Script downloaden:
wget http://www.linux-tips-and-tricks.de/raspiBackupInstall.sh
  • Script mit Rechten versehen:
sudo chmod +x raspiBackupInstall.sh
  • Proxy-Einträge in Script einfügen
sudo nano raspiBackupInstall.sh
  • nach der ersten Zeile (Shebang) einfügen:
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

  • Script ausführen:
sudo ./raspiBackupInstall.sh
  • keine Betaversion auswählen
  • Als Modus "normal" nicht: partitionsorientiert auswählen
  • z. B. DD auswählen
  • z. B. Sprache Deutsch auswählen
  • z. B. ausführliche Meldungen auswählen

Quelle:

RDP einrichten

  • X-VNC-Server deinstallieren (bei neueren RPi-Images ~nach 6/2016)
sudo apt-get purge realvnc-vnc-server
sudo apt-get install xrdp 
  • weitere Einstellmöglichkeiten (nicht getestet):
/etc/xrdp/xrdp.ini und /etc/xrdp/sesman.ini

Quelle: Quelle2:

Email einrichten

https://rpi.tnet.com/project/faqs/smtp

Proxy einstellen (offizielle Anleitung)

  • Umgebung anpassen
sudo nano /etc/environment
  • einfügen:
export http_proxy="http://username:password@proxyipaddress:proxyport"
export https_proxy="http://username:password@proxyipaddress:proxyport"
export no_proxy="localhost, 127.0.0.1"
  • sudoers updaten:
sudo visudo
  • einfügen:
Defaults    env_keep+="http_proxy https_proxy no_proxy"
  • Neu starten:
reboot

Quelle:

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.

Quelle:

sudo nano /etc/apt.conf.d/10proxy
  • Inhalt:
Acquire::http::Proxy "http://proxy_server_address:port";

Quelle2:

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

Quelle3:

Proxy für git-clone einstellen

  • einstellen
sudo git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
  • anzeigen lassen:
sudo git config --global --get http.proxy
  • aufheben:
git config --global --unset http.proxy

Quelle:

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

Quelle:

Sprachausgabe

  • Paket herunterladen:
wget http://www.dr-bischoff.de/raspi/pico2wave.deb
  • Voraussetzungen installieren:
sudo apt-get install libpopt-dev
  • zusätzlich falls nicht vorhanden (in alsa-utils enthalten):
sudo apt-get install aplay 
  • Paket installieren:
sudo dpkg --install pico2wave.deb
  • ausprobieren:
sudo amixer cset numid=3 1
pico2wave --lang=de-DE --wave=/tmp/test.wav "hallo welt hier spricht der räspberri pei"; aplay /tmp/test.wav;rm /tmp/test.wav
  • Deeinstallation:
sudo apt-get remove pico2wave

Quelle:

Beispiele für Sprachausgabe

  • mit espeak:
ipadd=$(ifconfig wlan0 | grep "inet " | awk -F' ' '{print $2}' | tr -d "Adresse:") &&
/usr/bin/espeak -vde "meine Weeh-LAhN ei pie Adresse lautet" &&
espeak -s 150 -v german ${ipadd//./punkt} && ipadd=""
  • mit pico2wave:
ipadd=$(ifconfig wlan0 | grep "inet " | awk -F' ' '{print $2}' | tr -d "Adresse:") &&
pico2wave --lang=de-DE --wave=/tmp/test.wav "meine Weeh-LAhN ei pie Adresse lautet"; aplay /tmp/test.wav;rm /tmp/test.wav &&
pico2wave --lang=de-DE --wave=/tmp/test.wav ${ipadd//./punkt}; aplay /tmp/test.wav;rm /tmp/test.wav &&
ipadd=""

Radio hören

 mpg123 -@ http://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3

Interessante Links

Putty (für Windows) "richtig" einstellen:

Putty1.png

Putty2.png

VNC Viewer

  • mit
sudo raspi-config

unter

Advanced Options

scrollen

VNC > Yes

den VNC-Server einschalten

Quelle:

Download des VNC-Viewers (z. B. für Windows-PC

https://www.realvnc.com/download/viewer/

Bildschirmauflösung anzeigen lassen

  • Die aktuelle Auflösung des angeschlossenen Bildschirms anzeigen:
/opt/vc/bin/tvservice -s
  • Unterstützte Auflösungen des HDMI-Bildschirms mit CEA:
/opt/vc/bin/tvservice -m CEA
  • Unterstützte Auflösungen des HDMI-Bildschirms mit DMT:
/opt/vc/bin/tvservice -m DMT

Quelle:

Bildschirmauflösung fest einstellen

  • Möglichkeit 1:
    • im Auswahlpunkt "Advanced Options / Resolution“ die Auflösung einzustellen.
sudo raspi-config
  • Möglichkeit 2:

Die Auflösung kann man in der folgenden Konfigurationsdatei festlegen:

sudo nano /boot/config.txt

Zuerst nehmen wir eine sinnvolle Grundkonfiguration vor. Die folgenden Zeilen fügt man einfach in der Datei unten an.

# HDMI auch ohne Monitor in Betrieb nehmen (optional)
hdmi_force_hotplug=1
# Audio über HDMI ausgeben (optional)
hdmi_drive=2
# DMT-Betriebsmodus aktivieren
hdmi_group=2

Anschließend legen wir die Auflösung nach DMT fest (nur eine davon):

# Auflösung: 1024x768 / 60 Hz
hdmi_mode=16
# Auflösung: 1280x768 / 60 Hz
hdmi_mode=23
# Auflösung: 1366x768 / 60 Hz
hdmi_mode=81
# Auflösung: 1920x1080 / 60 Hz (1080p)
hdmi_mode=82

Quelle:

RPi an unterbechungsfreier Stromversorgung USV (USB-Anbindung)

  • USB-Tools installieren:
sudo apt-get install usbutils
  • Prüfen ob USV angeschlossen ist:
lsusb
  • Ausgabe sollte z. B. sein:
Bus 001 Device 004: ID 0463:ffff MGE UPS Systems UPS 
  • Networktools installieren
sudo apt-get install nut-client nut-server
  • konfigurieren:
sudo nano /etc/nut/ups.conf 
  • einfügen:
[EllipseECO1200]
       driver = usbhid-ups
       port = auto
       desc = "EATON Ellipse ECO 1200 UPS 1200VA"
  • Rechte setzen, Verzeichniss anlegen + neu starten:
sudo mkdir /var/run/nut
sudo chown root.nut /var/run/nut/
sudo chmod 770 /var/run/nut/
sudo upsdrvctl start
sudo reboot
  • Dienst starten:
sudo upsdrvctl start
  • anzeigen ob Dienste "laufen":
ps -ef | grep ups
  • Ergebnis:
nut        937     1  0 11:26 ?        00:00:13 /lib/nut/usbhid-ups -a EllipseECO1200
nut        953     1  0 11:26 ?        00:00:00 /lib/nut/upsd
root       958     1  0 11:26 ?        00:00:00 /lib/nut/upsmon
nut        959   958  0 11:26 ?        00:00:00 /lib/nut/upsmon
pi        1161  1051  0 12:41 pts/0    00:00:00 grep --color=auto ups
  • konfigurieren:
sudo nano /etc/nut/upsd.conf
  • einfügen:
LISTEN 127.0.0.1 3493
LISTEN 10.207.22.16 3493
  • konfigurieren:
sudo nano /etc/nut/upsd.users
  • einfügen
 [admin]
        password = <Kennwort>
        actions = SET
        instcmds = ALL

#
# --- Configuring for a user who can execute tests only
#
[testuser]
        password  = <Kennwort>  
        instcmds  = test.battery.start
        instcmds  = test.battery.stop

#
# --- Configuring for upsmon
#
# To add a user for your upsmon, use this example:
#
[upsmon_local]
        password  = <Kennwort>
        upsmon master
[upsmon_remote]
        password  = <Kennwort>
        upsmon slave
 
  • konfigurieren:
sudo nano /etc/nut/upsmon.conf 
  • einfügen:
MONITOR EllipseECO1200@localhost 1 upsmon_local local_pass master 
  • konfigurieren:
sudo nano /etc/nut/nut.conf 
  • einfügen:
MODE=none
ändern in
MODE=netserver
  • testen:
upsc EllipseEco1200
  • mögliche Kommandos anzeigen:
upscmd -l  EllipseEco1200

WinNut für Windows einstellen

  • in upsmon.conf eintragen:
MONITOR EllipseECO1200@10.207.22.16:3493 1 upsmon_remote <Kennwort> slave 
  • falls nichts funktioniert: Firewall(s) der Antivierensoftware pürfen etc. oder z. B. firewall.cpl aufrufen und winNut eintragen.

Mailversand einrichten

  • STMP installieren:
sudo apt-get install ssmtp mailutils
  • konfigurieren:
sudo nano /etc/ssmtp/ssmtp.conf
  • eintragen/ändern:
mailhub=<Mailserver>
  • Test:
echo "Test Email von RPi" | mail -s "Test Email von RPi" empfänger@firma.de

Quelle:

Mailversand von NUT einstellen

  • konfigurieren:
sudo nano /etc/nut/upsmon.conf
  • eintragen:
NOTIFYCMD /etc/nut/upssched-cmd.sh
NOTIFYFLAG ONLINE       SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT       SYSLOG+WALL+EXEC
  • upssched-cmd.sh erstellen:
sudo nano /etc/nut/upssched-cmd.sh
echo "$*" | mail -s "USV Haus OG02 DV01 INV10xxxx EATON 1200VA 750W" admin@firma.de  
  • Rechte usw. ändern:
sudo chown nut:nut /etc/nut/upssched-cmd.sh
sudo chmod 700 /etc/nut/upssched-cmd.sh
  • Test:
sudo /etc/nut/upssched-cmd.sh "This is a test message"
  • neu starten:
sudo service nut-client restart

Webseite einrichten

  • Webserver installieren:
sudo apt-get install apache2 -y
  • Test
http://10.207.22.16

(Webseite aus /var/www/html wird angezeigt)

  • CGI "einschalten"
sudo a2enmod cgi
sudo systemctl restart apache2
(alt: sudo service apache2 restart)
  • Nut-cgi installieren (Ziel: /usr/lib/cgi-bin/nut/...)
sudo apt-get install nut-cgi
  • konfigurieren
sudo nano /etc/nut/hosts.conf
  • eintragen:
MONITOR EllipseECO1200@localhost "EllipseECO1200@req8e0"
  • Test
http://10.207.22.16/cgi-bin/nut/upsstats.cgi?host=EllipseECO1200@localhost
http://10.207.22.16/cgi-bin/nut/upsstats.cgi


Link Link Link2 Doku und Projektseite

SNMP einrichten

  • SNMP installieren
sudo apt-get update
sudo apt-get install snmpd snmp
  • editieren:
sudo nano /etc/snmp/snmpd.conf
  • belassen:
#agentAddress udp:127.0.0.1:161
  • unter:
#agentAddress udp:161,udp6:[::1]:161
  • einfügen:
agentAddress udp:161
  • # entfernen:
#rocommunity public localhost

in:

rocommunity public localhost      


Quelle: Quelle2:

  • SNMP-Dämon bei Systemstart einschalten
systemctl enable snmpd
  • SNMP neu starten:
sudo /etc/init.d/snmpd restart

Quelle

NUT-SNMP einrichten

  • scripte downloaden:
sudo mkdir /etc/nut/snmpagent
cd /etc/nut/snmpagent
wget https://github.com/luizluca/nut-snmpagent/archive/master.zip

  • entpacken
unzip nut-snmpagent-master.zip
  • konfigurieren:
sudo nano /etc/snmp/snmpd.conf 
  • eintragen
pass_persist .1.3.6.1.4.1.26376.99 /etc/nut/snmpagent/nut-snmpagent-master/snmp-static.nut
  • SNMP neu starten:
sudo systemctl restart snmpd
alt: sudo /etc/init.d/snmpd restart


Link Quelle1: Quelle2:

RPi Temperaturmessung mit Dallas D18B20

  • In die Datei /boot/config.txt nachfolgende Zeilen am Ende eintragen:
sudo nano /boot/config.txt 
# activating 1-wire with pullup
dtoverlay=w1-gpio-pullup
  • neu starten
sudo reboot
  • prüfen ob die richtigen Module geladen wurden:
sudo lsmod | grep ^w1
  • Ausgabe sollte so ähnlich sein:
w1_therm                3584  0
w1_gpio                 3657  0
  • Ins 1-Wire-Verzeichnis wechseln:
cd /sys/bus/w1/devices/w1_bus_master1/
  • enthaltene Dateien ansehen:
ls
  • ins Verzeichnis wechseln, das mit 28 beginnt:
cd 28*
  • Sensordaten lesen
cat w1_slave

Beispiel:

b5 01 4b 46 7f ff 0b 10 a3 : crc=a3 YES
b5 01 4b 46 7f ff 0b 10 a3 t=27312
  • Kurzform:
cat /sys/bus/w1/devices/w1_bus_master1/28-*/w1_slave


Quelle: Quelle2:

RPi Temperaturmessung mit USB-Stick

  • Pakete installieren:
apt-get install libusb-dev
  • Proxy für Git einstellen (wenn RpI nicht hinter Proxy nicht erforderlich)
git config --global http.proxy http://<server-ip>:3128
  • Repository clonen:
git clone https://github.com/petervojtek/usb-thermometer.git
  • In Verzeichnis wechslen:
cd usb-thermometer 
  • Rules kopieren
cp 99-tempsensor.rules /etc/udev/rules.d/
  • Kompilieren:
make
  • USB-STick anschliessen
  • Testen:
sudo ./pcsensor
  • Kopieren
cp pcsensor /usr/local/bin/

Quelle1: Quelle2: Quelle3: Quelle4:

DMM Digitalmultimeter Metex/Voltcraft M3850 auslesen

  • DMM mit COM/USB-Wandler und Adapterkabel anschliessen und einschalten
  • pyserial installieren (je nach Python Version):
sudo apt-get install python-serial

oder

sudo apt-get install python3-serial
  • read_dmm.py erstellen:
nano read_dmm.py
  • einfügen:
import serial

# 1200 baud, 7 data bits, 2 stop bits, no parity, no flow control.
comm = serial.Serial("/dev/ttyUSB0", 1200, 7, "N", 2, timeout=1.)

# DTR line must be set to high, RTS line must be set to low.
comm.setDTR(1)
comm.setRTS(0)

# The instrument sends back currently displayed measurement each time
# you send 'D' over the line.
comm.write('D')

# This returns 14 characters that show type of measurement, value and
# unit - for example "DC  0.000   V\n".
print comm.readline()
  • speichern
  • read_py aufrufen:
python read_dmm.py

Quelle:

SSH untern Windows einschalten bei "frisch auf SD-Karte aufgespieltem Rasbian"

  • Im für Windows sichtbaren Ordner die Datei
SSH

(ohne) Dateiendung erstellen.

Quelle:

Diashow

http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2011/11/Der-schnelle-Bildbetrachter-Feh http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Monitor/fbi.html

RPi Monitor

  • Paketquellen hinzufügen:
sudo wget http://goo.gl/vewCLL -O /etc/apt/sources.list.d/rpimonitor.list
  • Schlüssel hinzufügen:
    • Work-around:
sudo -i
wget -qO - 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xe4e362de2c0d3c0f' | sudo apt-key add -

Quelle:

    • eigentlich/ursprünglich:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 2C0D3C0F
  • Quellinhalte updaten:
sudo apt-get update
  • RPI-Monitor installieren:
sudo apt-get install rpimonitor
  • Webseite aufrufen
http://<RPi-IpAddress:8888>/
  • OS-Versionsdaten aktualisieren
sudo /etc/init.d/rpimonitor update
  • Konfigurationsdatei
sudo nano /etc/rpimonitor/data.conf
  • Neustart nach Änderungen:
sudo /etc/init.d/rpimonitor restart
  • Helfer für Datendefinitionen:
rpimonitord -i

Quelle1: Quelle2:

Temperatursensor einbinden

Quelle:

Internet Explorer Kompatibilitätsmodus in Webseite angeben

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

Quellle:

Seriennummer

cat /proc/cpuinfo | grep Serial | cut -d ' ' -f 2

LAN-Interface-Status

mii-tool

MAC-Adresse

cat /sys/class/net/eth0/address

CID von SD-Karte lesen

cd /sys/class/mmc_host/mmc?/mmc?:*
echo "man:$(cat manfid) oem:$(cat oemid) name:$(cat name) hwrev:$(cat hwrev) fwrev:$(cat fwrev)"

Quelle:

Leaseinfo/time

cat /var/log/syslog | grep leased | tail -1
dhcpcd -U eth0
stat -c %Y /var/lib/dhcpcd5/dhcpcd-eth0.lease
date -d @`stat -c %Y /var/lib/dhcpcd5/dhcpcd-eth0.lease`
  • Shellscript: getleasetime.sh
#!/bin/bash
leaselast=`cat /var/log/syslog | grep leased | tail -1 | cut -d ' ' -f 10`
filemtime=`stat -c %Y /var/lib/dhcpcd5/dhcpcd-eth0.lease`
echo "Lease erhalten  :" $filemtime "=" `date -d @$filemtime`
leaseend=$(( (filemtime) + leaselast ))
echo "Lease gültig bis:" $leaseend "=" `date -d @$leaseend`
currtime=`date +%s`
echo "momentane Zeit  :" $currtime "=" `date -d @$currtime`
seconds=$((leaseend - currtime ))
echo "verbleibend     :" $seconds  "=" `eval "echo $(date -ud "@$seconds" +'$((%s/3600/24)) Tage %H Stunden  %Minuten %S Sekunden')"`
sudo dhclient -v

Bildschirm Aus/Einschalten screen off/on

Möglichkeit 1:

  • ausschalten:
vcgencmd display_power 0
  • einschalten:
vcgencmd display_power 1

Quelle1: Quelle4:

Möglichkeit 2:

  • ausschalten:
tvservice -o
  • einschalten:
tvservice -p
  • Konsole (Text) umschalten:
sudo chvt 1
  • Konsole (Grafik)
sudo chvt 7

Quelle2: Quelle 3:

IP-Adresse für Erststart vorgeben

  • in /boot/cmdline.txt ans Ende der Zeile schreiben:
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>

client-ip: Die IP die der Raspberry haben/bekommen soll.
server-ip: Definiert normalerweise die IP des Netboot-Server's, wird in diesem Fall aber nicht benötigt!
gw-ip: Die Gateway-IP, normalerweise die IP eures Routers.
netmask: Ist eigentlich immer 255.255.255.0 aber sollte für euer Netzwerk passen.
hostname: Hostname des RaspberryPI, über den er im LAN ansprechbar wäre (DNS). Wird hier nicht benötigt!
device: Das Netzwerk Device für das diese Zuweisung gelten soll, in diesem Fall fürs Kabel: eth0
autoconf: erlaubt die Aktivierung/Deaktivierung der automatischen Konfiguration. Hier wählen Sie off

Wichtig ist das ihr keine IP doppelt belegt, die client-ip darf also noch nicht benutzt werden!

Achtet außerdem darauf das ihr in cmdline.txt nur eine Zeile habt!

  • Beispiel:
ip=10.207.22.19::10.207.22.19:255.255.255.192:rpi:eth0:off

Quelle:

Webcam einrichten (Aiptek Hyper Vcam Fun / Aiptek Hyper Vcam Mobile / Logitech, Inc. QuickCam Messenger Plus

  • Paket fswebcam installieren:
sudo apt-get install fswebcam
  • Paket webcam (xawtv) installieren

sudo apt-get install webcam

  • Bilder erzeugen (Beispiele):
sudo LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so fswebcam  -d /dev/video0 logitech.jpeg
sudo LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libv4l/v4l1compat.so fswebcam  -d /dev/video1 aiptek.jpeg



Quelle1: Quelle2: Quelle3: Quelle4: Quelle5:

Hilreiche Kommandos

lsusb
dmesg | grep input 
sudo apt-get install hwinfo
hwinfo --camera
lsmod
find / -name v4l1compat.so

Splashscreen ändern (Raspbian Jessie)

  • Datei:
/usr/share/plymouth/themes/pix/splash.png

ersetzen.

Die Datei ist 1024x768 Pixel groß

Bildschirmschoner abschalten

sudo nano /home/pi/.xsession
  • auskommentieren/einfügen:
@xset -dpms
@xset s noblank
@xset s off
  • kontrollieren (per SSH)
export DISPLAY=:0
xdg-screensaver status

Quelle:

sudo nano /boot/cmdline.txt
  • anfügen:
consoleblank=0

Quelle:

Proxyeinstellung Iceweasel/Firefox prüfen

cat ~/.mozilla/firefox/*.default/prefs.js | grep "proxy.http"

Squid Filter-Beispieldatei

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl CONNECT method CONNECT

acl all src 0.0.0.0/0.0.0.0
#no_cache deny all

acl whitelist dstdom_regex "/etc/squid/whitelist"
http_access allow whitelist

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

#http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 3128

UHD (4K) (Jessie)

  • /boot/config:
hdmi_group=2
hdmi_mode=87
hdmi_ignore_edid=0xa5000080
hdmi_cvt 3840 2160 24
max_framebuffer_width=3840
max_framebuffer_height=2160
hdmi_pixel_freq_limit=400000000

Quelle:

LEDs

echo mmc0 | sudo tee /sys/class/leds/led1/trigger
echo cpu0 | sudo tee /sys/class/leds/led0/trigger

Quelle:

Epiphany-browser fullscreen + Autostart (Raspbian Buster)

  • installieren:
sudo apt-get install epiphany-browser x11-xserver-utils xautomation unclutter 
  • Script erstellen:
sudo nano ~./fullsceen.sh
    • Inhalt:
sudo -u pi epiphany-browser -a -i --profile ~/.config [URL] --display=:0 &
sleep 15s;
xte "key F11" -x:0
  • Eintrag für Autostart:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
    • Inhalt:
@xset s off
@xset -dpms
@xset s noblank
@/home/pi/fullscreen.sh

Quelle1:Quelle2:

Raspberry Pi A+ Pinout

Quelle:


Datum und Uhrzeit "von Hand" setzen

sudo date 0211114620

Quelle:

RFID-RC522 Lesemodul in Betrieb nehmen (Raspbian Buster)

Datasheet

  • Modul anschliessen:
Anschlusstabelle
PIN am RF522 Modul Adernfarbe Hardware PIN am
Raspberry Pi 2
GPIO Signal
SDA violett 24 8 CE0 (Chip Enable 0) / SS (Slave Select) / CS Chip Select
SCK grau 23 11 Serial Clock
MOSI weiß 19 10 Master Out Slave In
MISO schwarz 21 9 Master In Slave Out
IRQ rot - - -
GND braun 6 GND GND
RST orange 22 25 RESET
3,3V gelb 1 3V3 VCC
  • SPI einschalten:
sudo raspi-config
Unter
„ 5 Interfacing Options“ > „P4 SPI         Enable/Disable automatic loading of SPI kernel module “
aktivieren und den Neustart bestätigen (alternativ:
sudo reboot now
).
  • Prüfen ob SPI Module geladen wurden:
lsmod | grep "spi"

Ausgabe sollte sein:

spidev                 20480  0
spi_bcm2835            20480  0
  • Software installieren:
sudo apt-get install git python-dev --yes
git clone https://github.com/lthiery/SPI-Py.git
cd SPI-Py
git checkout -b 8cce26b9ee6e69eb041e9d5665944b88688fca68
sudo python setup.py install
cd..
git clone https://github.com/mxgxw/MFRC522-python.git
  • Lesen testen:
cd MFRC522-python
sudo python Read.py 

Ausgabe sollte sein:

Welcome to the MFRC522 data read example
Press Ctrl-C to stop.
Card detected
Card read UID: 217,132,xxx,xxx
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


Quelle1: Quelle2: Quelle3: Quelle4: Quelle5: Quelle6: Quelle7: