Kategorie-Archiv: Linux

Alles rund um Linux

LIRC mit Python :: pylirc

Es gibt ein Modul namens pylirc, damit kann man unter Python LIRC ansprechen.
Vorraussetzung ist hier, dass LIRC eingerichtet ist und die Fernbedienung schon angelernt ist.

Zuerst muss pylirc2 installiert werden.

Als zweites legen wir uns neue Konfiguration an, die nennen wir demo_pylirc.conf.

begin pylirc
begin
prog = pylirc
button = KEY_1
repeat = 0
config = echo „Key 1“
end
begin
prog = pylirc
button = KEY_2
repeat = 0
config = echo „Key 2“
end
end pylirc

Damit euer Script überhaupt mit der Fernbedienung umgehen kann, muss man die Tasten zuweisen und sagen was die Taste tun soll.
Hier habe ich Taste 1 und Taste 2 belegt, drückt man eine Taste an der Fernbedieung soll Key 1 oder Key 2 ausgegeben werden.

Jetzt das Python-script dazu:
#!/usr/bin/python

try:
import pylirc
except ImportError:
raise plugin.MissingDependency(„pylirc“)

import time,os

blocking = 0;

if(pylirc.init(„pylirc“, „/home/pi/Desktop/script/f.conf“, blocking)):

code = {„config“ : „“}
while(code[„config“] != „quit“):

# Very intuitive indeed
if(not blocking):
time.sleep(1)

# Read next code
s = pylirc.nextcode(1)

# Loop as long as there are more on the queue
# (dont want to wait a second if the user pressed many buttons…)
while(s):

# Print all the configs…
for (code) in s:

handle = os.popen(code[„config“])
line = “ “
while line:
line = handle.read()
print line
handle.close()

if(code[„config“] == „blocking“):
blocking = 1
pylirc.blocking(1)

elif(code[„config“] == „nonblocking“):
blocking = 0
pylirc.blocking(0)

# Read next code?
if(not blocking):
s = pylirc.nextcode(1)
else:
s = []

# Clean up lirc
pylirc.exit()

Update shutdown.py

Ab jetzt wird geprüft, wielange der Button gedrückt wird. Wird der Button kurz gedrückt ca. 3 – 5 Sek, wird nun ein Software-Neustart ausgelöst. Drückt man länger, wird der Rechner heruntergefahren und bleibt aus.

Hier gehts zum Schaltplan (Raspberry Pi Auschalter/Neustart)

# import required modules
import RPi.GPIO as GPIO
import time
import subprocess

SleepTime = 1
press = 0

# set GPIO pin
PWpinNum = 31 # PW Power switch
LEDpinNum = 29 # LED

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # BCM (P5 Header)
GPIO.setup(PWpinNum, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(LEDpinNum, GPIO.OUT)

print „\n“

def blink(step):
for i in range(0,25):
GPIO.output(LEDpinNum, False)
time.sleep(step)
GPIO.output(LEDpinNum, True)
time.sleep(step)

def shutdown():
print „shutdown\n“
blink(0.20)
GPIO.output(LEDpinNum, False)
subprocess.call([„shutdown“, „-h“, „now“])

def reboot():
print „reboot\n“
blink(0.1)
GPIO.output(LEDpinNum, False)
subprocess.call([„shutdown“, „-r“, „now“])

try:
GPIO.output(LEDpinNum, False)
while True:
if GPIO.input(PWpinNum):
if press == 0:
time.sleep(SleepTime)
elif press < 8:
reboot()
break
else:
shutdown()
break
else:
press +=1
print press
time.sleep(0.5)

except KeyboardInterrupt:
GPIO.output(LEDpinNum, True)
GPIO.cleanup()

Samba Freigabe unter Debian

Samba Installieren:
apt-get install samba samba-common

Neue Festplatte formatieren:
Man muss als erstes rausfinden, welches Gerät die neue Festplatte ist. Normalerweise ist die 1. Festplatte das System und somit das Gerät /dev/sda1. Die neue Festplatte ist bei also /dev/sdb1, da ich keine weitere Festplatte angeschlossen habe.  Mit dem Befehl „df“, kann man das überprüfen:

/dev/sda5 234466152 2074648 220458220 1% /

Auf sda5 ist debian installiert. /dev/sdb1 wird nicht angezeigt, da ja noch keine Partition angelegt wurde und die Festplatte auch noch nicht eingebunden ist.

Meine neue platte ist /dev/sdb1. Deshalb muss ich folgendes eingeben:
cfdisk /dev/sdb1
select label: GPT

Jetzt kann man die Festplatte mit EXT4 formatieren:
mkfs.ext4 /dev/sdb1

Wer lieber EXT3 will:
mkfs.ext3 /dev/sdb1

Für NTFS:
mkfs.ntfs /dev/sdb1

Verzeichnis für die Daten anlegen:
Hier werden die Daten gespeichert, die im Netzlaufwerk verfügbar sind.

mkdir /media/share

Damit die Benutzer im Ordner auch speichern können, muss man noch die nötigen Schreibrechte setzen:
chmod 770 /media/share

Jetzt kann man die Fetplatte mounten:
mount /dev/sdb1 /media/share/

Beim Neustart wäre die Festplatte nocht mehr gemountet. Damit dies bei jedem Systemstart gemountet wird, muss man die Datei /etc/fstab anpassen.

vim /etc/fstab

Jetzt fügt man folgende Zeile ein:
/dev/sdb1 /media/share ext4 rw 0 0

Wer eine andere Partition als ext4 hat, muss das auch bei fstab ändern!

Benutzer für Netzwerkfreigabe anlegen:

Anlegen eines Benutzer „gast“
useradd gast

Passwort für Linux-System anlegen:
passwd gast
Nach eingabe euer Passwort für Benutzer „gast“ eingeben.

Passwort für die Freigabe anlegen:
smbpasswd -a gast
Nach eingabe euer Passwort für Benutzer „gast“ eingeben.

Man kann ein Public-Verzeichnis auch ohne Anmeldung in SAMBA einrichten, aber aus Sicherheitsgründen rate ich davon ab und gehe darauf nicht weiter ein.

vim /etc/samba/smb.conf

Inhalt der Datei:

[global]
workgroup = Arbeitsgruppe
server string = Samba Server
dns proxy = no
wins support = yes
security = user
encrypt passwords = true
invalid users = root

[Daten]
path = /media/share/
writable = yes
valid users = gast
comment = Datenfreigabe
printable = no
public = no

Samba-Dienst neustarten:
/etc/init.d/samba restart
oder
service smbd restart

Jetzt kann man die Verbindung testen:

Netzlaufwerk unter Windows 10 verbinden.

Mein Server heiß Debian im Netz, man kann aber auch dafür die IP vom Server eintragen.
\Daten kommt von der der Samba Config ([Daten]). Wichtig ist, das man hier die 2 Haken setzt.
Damit beim Neustart, dass Laufwerk automatisch verbunden wird und man sich mit dem User Gast anmelden kann.

Tip:
Ich habe eine zweite Netzwerkkarte eingebaut. Man kann Samba sagen, das es eth1 und nicht eth0 verwenden soll.

Kopiert was auf das Netzlaufwerk und gebt beim Server folgendes ein:

netstat -tapn | grep smbd

Jetzt sollte da die IP von eth1 zu sehen sein. Habe die Zeile makiert.

tcp 0 0 192.168.1.7:445 0.0.0.0:* LISTEN 1369/smbd
tcp 0 0 192.168.1.11:445 0.0.0.0:* LISTEN 1369/smbd
tcp 0 0 127.0.0.1:445 0.0.0.0:* LISTEN 1369/smbd
tcp 0 0 192.168.1.7:139 0.0.0.0:* LISTEN 1369/smbd
tcp 0 0 192.168.1.11:139 0.0.0.0:* LISTEN 1369/smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* LISTEN 1369/smbd
tcp 0 0 192.168.1.11:445 192.168.1.5:61417 VERBUNDEN 1386/smbd
tcp6 0 0 ::1:445 :::* LISTEN 1369/smbd
tcp6 0 0 ::1:139 :::* LISTEN 1369/smbd

Debian 9 Proxy Squid3 mit ClamAV (squidclamav)

Da es auf unserem Hof noch kein DSL gibt und ich 2 Jahre vergeblich bei der Telekom auf einen Telefonschluss warten musste, hatte ich nach einer anderen Lösung gesucht. Da blieb nur noch SAT oder LTE. Wir haben jetzt LTE genommen. Leider war der Empfang nicht ohne weiteres möglich, es musste eine Doppelaußenantenne her. Die LTE Antenne muss genau ausgerichtet werden und zum nächsten LTE- Masten zeigen. Das bekommt man beim Provider raus. Aber das ging auch nicht lange gut, weil der Traffic nie gereicht hat. Wir haben zwar 32 GB Traffic, aber das klingt mehr wie es ist.
Das Problem ist aber, dass sämtliche Geräte immer Updates machen wollen. Telefon, Smartphone, Laptop, … Heute kann man für fast alles Firmwares aktualisieren. Die Updates sind aber oft schon ein paar GB groß, dann geht man vieleicht noch auf facebook, da starten dann erstmal schön Videos und ein Haufen Werbung und dann muss facebook und co noch schön Daten sammeln ; ). Firefox updates, … Telefon läuft ja auch noch über LTE, da ja der Anschluss noch nicht dran ist.
Damit jetzt Traffic reduziert wird, bietet sich ein Proxyserver an.

Squid3 und clameav installieren:

apt-get update && apt-get upgrade
apt-get install squid3 c-icap clamav clamdscan clamav-daemon libicapapi-dev gcc make curl libcurl4-gnutls-dev libapache2-mod-perl2

Damit clamav mit squid3 funktioniert muss noch squidclamav installiert werden:

# wget http://downloads.sourceforge.net/project/squidclamav/squidclamav/6.16/squidclamav-6.16.tar.gz
# tar xvfz squidclamav-6.16.tar.gz
# cd squidclamav-6.16
# ./configure --with-c-icap && make && make install
# cp -rf cgi-bin /usr/lib/
# chmod -r 775 /usr/lib/cgi-bin/
# a2enmod cgi
# service apache2 restart
# cd ..
# ldconfig
# ln -s /etc/c-icap/squidclamav.conf /etc/squidclamav.conf
# vim /etc/default/c-icap

Hier START=no auf START=yes ändern.

# vim /etc/c-icap/c-icap.conf
Bei ServerAdmin eure e-mail angeben.
Der Name vom Server wird bei ServerName angeben. z.B.:
ServerName debian.local
und ca. in line 570 muss man noch diese Zeile hinzufügen.

Service squidclamav squidclamav.so
Nun Config speichern und verlassen.

c-icap neustarten:
systemctl restart c-icap

Falls es auch Probleme mit ClamAV gibt:
# freshclam
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

Löscht einfach die Logdatei. Das ist kein Problem, da die log ja wieder automatisch erstellt wird:
# rm /var/log/clamav/freshclam.log

Ob clamav lokal funktioniert, kann man so testen:
# cd /tmp
# wget http://www.eicar.org/download/eicar.com
# clamscan --infected --remove --recursive /tmp

Jetzt sollte dieser Test-virus gefunden und entfernt worden sein:
/tmp/eicar.com: Eicar-Test-Signature FOUND
/tmp/eicar.com: Removed.

———– SCAN SUMMARY ———–
Known viruses: 6297800
Engine version: 0.99.2
Scanned directories: 10
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 10.403 sec (0 m 10 s)

Wichtig!
Bei Debian 8 war squid im Verzeichniss /etc/squid3/ , heute wo ich Debian 9 installiert habe liegt squid unter etc/squid/
Darum bitte die pfade überüfen!

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Konfiguration bearbeiten:
vim /etc/squid/squid.conf oder für nano freunde "nano /etc/squid/squid.conf"

visible_hostname debian.local
error_directory /usr/share/squid/errors/de/
forwarded_for off
via off
#cache
cache_mem 512 MB
maximum_object_size 20480 KB
maximum_object_size_in_memory 512 MB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
cache_dir ufs /var/spool/squid3 2000 16 256
#timeouts
forward_timeout 30 seconds
connect_timeout 30 seconds
read_timeout 30 seconds
request_timeout 30 seconds
persistent_request_timeout 1 minute
client_lifetime 20 hours
#DNS
dns_nameservers 192.168.1.1 8.8.8.8 8.8.4.4
url_rewrite_children 20
#defaults
acl localnet src 192.168.1.0/24
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
acl bad_url dstdomain "/etc/squid/blacklist"
#acl no_updates dstdomain "/etc/squid/msupdates"
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
deny_info ERR_ACCESS_DENIED bad_url
http_access deny bad_url
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all
http_access allow localnet
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320


squidclamav.conf bearbeiten:

nano /etc/squidclamav.conf

maxsize 5000000
redirect http://192.168.x.x/cgi-bin/clwarn.cgi
clamd_local /var/run/clamav/clamd.ctl
clamd_ip 192.168.x.x,127.0.0.1
clamd_port 3310
timeout 1
logredir 0
dnslookup 1
safebrowsing 0
debug 0
stat 0

Server squid3 neustarten:
service squid restart

Unter Debian 8:
service squid3 restart

nun Dienste neustarten:

service c-icap restart
service apache2 restart
service clamav-daemon restart
service squid restart

Cache löschen:
service squid3 stop
rm -rf /var/spool/squid/*
service squid3 start


Client mit Proxy verbinden, Firefox:

Proxy im Firefox hinterlegen

 

Windows Proxyeinstellungen hinterlegen:

Proxy Windows 10

Jetzt Testen:
Geht mit Firefox nun auf http://www.eicar.org/download/eicar.com

Ihr solltet nun das im Browser sehen:
SquidClamAv Virus detected

Wenn CGI nicht geht, muss man noch folgendes tun. (War bei Debian 9 so)

tail -f /var/log/apache2/error.log

Jetzt im Browser folgende URL aufrufen:
http://www.eicar.org/download/eicar_com.zip

Jetzt sollte sich die URL ändern in:
http://192.168.x.xx/cgi-bin/clwarn.cgi?url=http://www.eicar.org/download/eicar_com.zip&source=192.168.x.xx&user=-&virus=stream:%20Eicar-Test-Signature%20FOUND

Passiert das nicht, müsst ihr nochmal die Anleitung durchgehen.
Wenn die URL sich ändert, fehlt nicht mehr viel. Es funktioniert aber schon mal, das CGI soll nur eine Fehlerseite ausgeben und da gab es auch bei mir unter Debian 9 Probleme. Unter Debian 8 hatte ich keine Probleme.

Kommt beim Befehl a2enmod cgi:
„Can’t activate CGI module with „a2enmod cgi“

Hilft folgendes:
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod cgi
sudo service apache2 restart

Steht in der log Can’t locate CGI.pm in @INC (you may need to install the CGI module), muss man CGi wie folgt installieren:

#perl -e shell -MCPAN
install CGI
exit

gehts immer noch nicht ?
Dann sollte man das Verzeichnis /usr/lib/cgi-bin/ überprüfen, das muss als root ausführbar sein und es sollten folgende Datein enthalten sein:
-rwxr-xr-x 1 root root 1827 Jun 21 13:59 clwarn.cgi
-rwxr-xr-x 1 root root 1827 Jun 21 13:21 clwarn.cgi.de_DE
-rwxr-xr-x 1 root root 1777 Jun 21 13:21 clwarn.cgi.en_EN
-rwxr-xr-x 1 root root 1898 Jun 21 13:21 clwarn.cgi.fr_FR
-rwxr-xr-x 1 root root 1995 Jun 21 13:21 clwarn.cgi.pt_BR
-rwxr-xr-x 1 root root 2099 Jun 21 13:21 clwarn.cgi.ru_RU

Und zum Abschluss noch ein wichtiges Detail. SSL ist end to end Verschlüsselung, also vom Browser zum Server. Also der Lokale Rechner mit der verschlüsselten Webseite. Was ich damit sagen will, squidclamav kann nur HTTP scannen. Bei HTTPS klappt das nicht! Auch im non transparent modus wird direkt vom Browser verschlüsselt.
Also sollte lokal am Rechner trotzdem ein Virenscanner laufen!

NTP Server (Debian)

NTP (Network Time Protocol) ist ein Hintergrundprozess, der als Server die Zeit für andere Systeme bereitstellen kann.
Die Zeit kann auch nur für das lokale System verwendet werden. Hier möchte ich euch zeigen, wie man alle Geräte im Netzwerk (Client) mit einem eignen Server synchronisieren kann.

Als Erstes muss das NTP installiert werden:

apt-get update
apt-get install ntp

NTP ist jetzt installiert, aber der Dienst läuft noch nicht und muss erst konfiguriert werden.
Da standardmäßig NTP nur vom 127.0.0.1 funktioniert, also nur vom selben Rechner funktioniert.
Ich möchte aber alle Geräte über diesen Server synchronisieren. Mein Computer hat die IP 192.168.1.15.

vim /etc/ntp.conf oder nano /etc/ntp.conf

Sucht dort folgenden Eintrag:
restrict 127.0.0.1
restrict ::1

Da meine IP 192.168.1.15 ist und ich ja alle Geräte im Netzwerk erlauben will, mus ich 192.168.1.0 angeben und nicht die 15.

Ich muss also folgende Zeile hinzufügen:
restrict 192.168.1.0 mask 255.255.255.0

Sieht also fertig so aus:

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
restrict 192.168.1.0 mask 255.255.255.0

Jetzt müssen wir den NTP Dienst starten:
service ntp start

Beenden geht mit:
service ntp stop

Dienst Neustarten:
service ntp restart

Hier synchronisiert nun der Testrechner mit dem Server:

Network Time Protocol (NTP), Windows 10

roundcubemail-1.2.3 Installationfehler

Fehler:
Net_IDNA2: NOT OK

Oder in der Konsole:
Net_IDNA2: NOT OK(Failed to load class Net_IDNA2 from pear.php.net; See http://pear.php.net/package/Net_IDNA2)

Lösung:
pear config-set preferred_state beta
pear install Net_IDNA2
pear config-set preferred_state stable

Net_IDNA2 ist aktuell bei Debian Jessie nur im Beta enthalten. Der erste Befehl erlaubt also das Installieren von Beta-Pakete. Der 2. Befehl installiert nun das benötigte Modul „Net_IDNA2“.
Damit keine weiteren Betaversionen installiert werden, setzt der letzte Befehl PEAR-Config auf „stable“.

Fehler:
Mail_mime: NOT OK

Lösung
pear install Mail_mime

Raspberry Pi Auschalter/Neustart

In dieser Anleitung, habe ich gezeigt wie man den Schalter baut und wie man per Software Raspberry Pi abschaltet:

https://www.marcuslausch.de/2014/01/27/ein-und-ausschalter-fuer-raspberry-pi/

Ich habe nun das Script erweitert. Nun kann man mit einem Schalter entweder Herunterfahren oder Neustarten. Das ganze ist mit einem kleinen Trick möglich. Ich zähle, wie lange der Kopf gedrückt wurde. Alles über 8 Sekunden ist ein Herunterfahren und weniger 8 Sekunden ist ein Neustart.
Ob Heruntergefahren wird oder ein Neustart erkannt wurde, erkennt man an der LED.
Die LED blinkt beim Herunterfahren langsam und beim Neustart schnell.

Installation ist einfach. Ersetzt einfach meine alte shutdown.py mit der neuen shutdown.py Datei.

shutdown (2)

Zugriff auf Cron verbieten

Benutzer den Zugriff auf Cron verbieten kann man, indem man den User in die cron.deny-Datei einträgt. Diese Datei findet sich üblicherweise unter /etc/cron.deny.

vim /etc/cron.deny

Dort den Benutzernamen angeben und mit :wq Speichern.

DS1307 RTC am Raspberry Pi

Heute will ich euch zeigen, wie man das Real-Time-Clock-Module „Tiny RTC – DS1307“ am Raspberry Pi betreiben kann. Raspberry Pi hat keine RTC und holt sich die aktuelle Uhrzeit über das Internet via ntp. Damit die Uhrzeit auch ohne Internet zur Verfügung steht, ist das Modul eine kostengünstige Lösung.

Als erstes wird i2c-tools benötigt:

apt-get install i2c-tools

Ich benutze lieber vim und nicht nano. Wer also lieber nano als Editor nimmt, muss vim durch nano ersetzen.

Raspberry hat in der neuen Version keine raspi-blacklist.conf mehr.

cd /etc/modprobe.d/

Liegt keine raspi-blacklist.conf im Verzeichnis, solltet ihr raspi-config verwenden.

raspi-config

Im Fenster auf „advance options“ gehen und da:

A6 SPI Enable/Disable automatic loading │
A7 I2C Enable/Disable automatic loading

beide Module aktivieren. Jetzt noch neustarten!

Wer die raspi-blacklist.conf noch hat, geht so vor:

vim /etc/modprobe.d/raspi-blacklist.conf

sucht diese Zeilen:
#blacklist spi-bcm2708
#blacklist i2c-bcm2708

und entfernt die „#“ am Anfang, so sollten die Zeilen aussehen:

blacklist spi-bcm2708
blacklist i2c-bcm2708

Damit die Module bei jedem Neustart wieder geladen werden, muss man die /etc/modules anpassen.
vim /etc/modules

Meine config sieht nun so aus:

/etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
spi-bcm2708
i2c-bcm2708
i2c-dev
rtc-ds1307

Um die Module zu aktivieren, müsst Ihr Raspberry Pi neu starten:

sudo reboot

Nach dem Neustart muss die RTC getestet werden:

i2cdetect -y 1

Sollte so aussehen:

0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Jetzt setzen wir erstmal die richtige Zeitzone:
sudo raspi-config
“Internationalization Options” -> “Time Zone”

Es sollte diese Meldung kommen:
Current default time zone: 'Europe/Berlin'
Local time is now: Thu Aug 27 15:53:11 CEST 2014.
Universal Time is now: Thu Aug 27 13:53:11 UTC 2014.

Die RTC bei jedem Neustart verwenden:

vim /etc/rc.local

Sucht nach der Zeile „exit 0“ am Schluss und ändert das so ab:
#RTC
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
#RTC END

exit 0

Die RTC Zeit einstellen:
Gebt erstmal date ein, für die aktuelle Systemzeit.

root@home:/home/pi# date
Thu Aug 27 16:13:23 CEST 2014

Nun hwclock -r um die Zeit von der RTC zu lesen:

root@home:/home/pi# hwclock -r
Thu 27 Aug 2014 16:13:29 CEST -0.676218 seconds

Stimmt die Zeit nicht, gebt hwclock -w ein.

sollte der Fehler „Cannot access the Hardware Clock“ kommen:

root@home:/home/pi# hwclock -r
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --debug option to see the details of our search for an access method.

Startet mal neu und gebt sudo bash ein und echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
Dann sollte der Befehl hwclock -r funktionieren.

LIRC neue Fernbedienung anlernen

Damit eine Fernbiedienung mit LIRC funktioniert, muss man Sie erst anlernen. Es sei denn, es gibt schon eine fertige Konfiguration.
Ich habe 2 Universal- Fernbedienungen, aber hier keine fertige Konfiguration. Das ist allerdings kein Problem, das Anlernen ist ganz einfach. Außer die Fernbedienung wird nicht erkannt und im RAW Format gespeichert. Diese würde ich bei Seite legen, da RAW nicht so genau ist. Zum Anlernen der Fernbedienung darf der Dienst LIRC nicht laufen. So kann man den Dienst anhalten:

/etc/init.d/lirc stop

Zum Konfigurieren der Tasten muss man die verfügbaren Namen kennen, diese Liste habe ich in den Editor kopiert.

irrecord –list-namespace

Hier habe ich mir meine benötigten Tasten rausgesucht.

Das sind meine Tasten:
KEY_0
KEY_1
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_PAUSE
KEY_PLAY
KEY_POWER
KEY_NEXT
KEY_PREVIOUS
KEY_STOP
KEY_VCR
KEY_CHANNELDOWN
KEY_CHANNELUP
KEY_VOLUMEDOWN
KEY_VOLUMEUP
KEY_RECORD
KEY_MUTE
KEY_E
KEY_F
KEY_G
KEY_H
KEY_MENU
KEY_SETUP
KEY_A
KEY_UP
KEY_DOWN
KEY_RIGHT
KEY_LEFT
KEY_OK
KEY_LAST
KEY_102ND

Jetzt muss „irrecord“ ausgeführt werden. Hier wird der gedrückten Taste ein Name hinterlegt.

irrecord -d /dev/lirc0 /root/lircd.conf

Am Anfang kommt ein Hinweistext, hier kann man mit Return bestätigen.
Jetzt soll man nach Eingabe von Return unterschiedliche Tasten drücken. Pro Taste wird ein Punkt am Bildschirm ausgegeben werden.
Das Ganze macht man so lange, bis der Assistent etwas Neues erwarten.
Jetzt verlangt der Assistent immer einen Namen, z.B. KEY_0. Nach Eingabe soll die Taste 0 gedrückt werden.
Das Ganze macht man bis man keine Tasten mehr hat oder man bricht vorher hab. Das Ganze macht man mit der Taste Return.

Jetzt muss die Konfigurations-datei am richtigen Ort abgelegt werden:
cp /root/lircd.conf /etc/lirc/lircd.conf

Nachdem am Anfang der Dienst gestoppt wurde, sollte man jetzt LIRC wieder starten:

/etc/init.d/lirc start

Jetzt kann man seine Aufnahme testen:

irw

Nach Eingabe des Befehls sollte man auf die Fernbedienung drücken. Als Ergebnis sieht man seine programmierten Tasten:

0000000000000002 00 KEY_1 /root/lircd.conf
0000000000000004 00 KEY_2 /root/lircd.conf
0000000000000005 00 KEY_3 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000007 00 KEY_5 /root/lircd.conf
0000000000000006 00 KEY_4 /root/lircd.conf
0000000000000009 00 KEY_7 /root/lircd.conf
000000000000000a 00 KEY_8 /root/lircd.conf
000000000000000b 00 KEY_9 /root/lircd.conf
0000000000000009 00 KEY_7 /root/lircd.conf
000000000000000a 00 KEY_8 /root/lircd.conf
000000000000000b 00 KEY_9 /root/lircd.conf
0000000000000006 00 KEY_4 /root/lircd.conf
0000000000000007 00 KEY_5 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 01 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf
0000000000000008 00 KEY_6 /root/lircd.conf

Falls etwas nicht funktioniert, sollte der lirc Treiber kontrolliert werden:
lsmod
modprobe lirc_dev
dmesg

Sollte hier kein fehler vorliegen, sollte man die Konfiguration (irrecord) prüfen:

/etc/init.d/ stop
mode2 -d /dev/lirc0

Jetzt auf der Fernbedienung rumdrücken und es sollte etwas am Bildschirm erscheinen. Damit kann man sehen, ob der IR-Empfänger überhaupt was empfangen kann. Sollte auch das funktionieren, muss man die hardware.conf überprüfen:

sudo nano /etc/lirc/hardware.conf

Die Zeile DEVICE sollte so aussehen:
DEVICE=/dev/lirc0

Ist auch das richtig, wurde vielleicht die lirc.conf nicht ins richtige Verzeichnis erstellt.
Am Besten überprüfen, ob die lircd.conf vorhanden ist.


cp -v /root/lircd.conf /etc/lirc/lircd.conf
chown root:root /etc/lirc/lircd.conf

LIRC jetzt wieder starten:
/etc/init.d/lirc start

Jetzt wieder irw ausführen und an der Fernbedienung drücken. Sollte da nichts erscheinen und vorher kein Fehler aufgetaucht sein, ist die Aufzeichnung der Tasten nicht in Ordnung. Es muss die Fernbedienung neu angelegt werden.

irrecord -d /dev/lirc0 /root/lircd.conf

Bei dem Befehl irw, werden nur angelernte Tasten ausgegeben!