Vorstellung Homerserver auf Banana Pi Basis

Begonnen von cerberus, 14 November 2014, 09:31:26

Vorheriges Thema - Nächstes Thema

Waldmensch

Ich habe mal die alte FW mit einem Hex Editor angeschaut, da findet man aber nix, was auf einen Versionsstring schließen läßt. Ich kann nur sagen, das sie am 18.1.2014 auf meiner Platte gelandet ist. Kann sie auch mal mit anhängen, wenn Du forschen willst.

Curzon

Wenn dein Filedatum stimmt hattest du laut Repository History maximal eine v1.57 drauf, die stammt vom 2013-07-02.

Die nächste Änderung (aber immer noch 1.57) gab es erst am 2014-02-15 und die 1.58 kam am 2014-03-14 raus.

Also kann man davon ausgehen das eine COC Firmware <=1.57 nicht mit dem BPi läuft.

Waldmensch

#62
Ich habe die ALTE Firmware aus Januar 2014 hier mal angehangen, falls jemand Lust auf die Gegenprobe hat. Die angehängte Firmware funktionierte NICHT auf meinem BananaPro. Wer die testweise flasht, sollte einen RaspberryPi in der Hinterhand haben, um notfalls zurückzuflashen.

Zusammenfassend muß ich aber sagen, das zwischen einem RaspBerry (erste Version) und dem BananaPro schon Welten in der Performance liegen. FHEM Webinterface läuft wesentlich flüssiger.

TeleDet

Hallo an alle BPi Mitstreiter  ;) ;D

Erst mal vielen, vielen Dank an Curzon ! ... Dank Dir und Deiner Anleitung hat die tagelange Grübelei
ein Ende und die bei Google sind jetzt sicher wegen der abnehmenden Trafikzahlen etwas erleichtert.   ;D

Mein BPi läuft nun auch mit busware COC und mein RPi gönnt sich eine Verschnaufpause ob der vielen
Daten in den LOG-Files von FHEM.  ;)

Übrigens Waldmensch ... im Gegensatz zu Dir hatte ich wohl Glück im Unglück. Als ich meinen
COC vom RPi getrennt hatte hat sich irgendwie die FW verabschiedet ... respektive ich habe den COC
nur mit Neuinstallation der FW wieder zum leben erwecken können! Hatte natürlich dann auch gleich die
neueste genommen -> V 1.63 CSM868 ... wat n zufall  ::)

Also noch mal großartige Arbeit Curzon !!! Ich denke diese Anleitung gehört ins FHEM-WIKI !!!

Gruß TeleDet


Waldmensch

#64
Auf jeden Fall sollte das ins wiki!

Mal noch in die Runde gefragt: Das COC hat ja eine RTC und OneWire an Bord. Muß man da noch was aktivieren bzw. konfigurieren? Zumindest die RTC sollte schon genutzt werden, wenn sie schon dranhängt.

Edit: Habe rausgefunden, das zwar i2c im Kernel integriert ist, der Dallas Treiber failed aber beim modprobe FATAL: Module rtc-ds1307 not found Schade

Curzon

#65
Zitat von: Waldmensch am 29 März 2015, 23:19:57
Mal noch in die Runde gefragt: Das COC hat ja eine RTC und OneWire an Bord. Muß man da noch was aktivieren bzw. konfigurieren? Zumindest die RTC sollte schon genutzt werden, wenn sie schon dranhängt.

Edit: Habe rausgefunden, das zwar i2c im Kernel integriert ist, der Dallas Treiber failed aber beim modprobe FATAL: Module rtc-ds1307 not found Schade

Das Module brauchst du nicht laden, die RTC kannst du über I2C ansprechen.

Dazu musst du allerdings zuvor in der .Fex die I2C Schnittstelle zum COC aktiviert haben, die beiden Pins liegen beim COC auf PB21 (SDA) und PB20 (SDC):


COCGPIO LeisteRaspberryPiBananaPI (Angabe in der .Fex)
I2C Data (SDA)PIN3GPIO 2PB21
I2C Clk (SCL)PIN5GPIO 3PB20

Edit: Eine Übersicht der BPi Steckplätze findest du unter Banana Pi - Pin definition.
Die Beschreibung der .FEX Datei findest du unter linux sunxi - Fex Guide

Also wie gehabt  .FEX erstellen, editieren (z.B. I2C #2 aktivieren) und Fex-Datei zurückwandeln ins BIN-Format:

# sudo bin2fex /boot/bananapi.bin /boot/bananapi.fex
# sudo nano /boot/bananapi.fex


I2C Schnittstelle 2 aktivieren:

[twi2_para]
twi2_used = 1
twi2_scl = port:PB20<2><default><default><default>
twi2_sda = port:PB21<2><default><default><default>


Anschliessend:

sudo fex2bin /boot/bananapi.fex /boot/bananapi.bin


Nach einem Neustart des BPi die I2C Schnittstelle 2 unter /sys/class/i2c-adapter/i2c-2/ im System vorhanden sein. Noch ein Test, ob die Treiber auch geladen sind:

# sudo cat /sys/class/i2c-adapter/i2c-2/device/uevent
DRIVER=sunxi-i2c
MODALIAS=platform:sunxi-i2c


Nun aktivierst du die RTC auf dem COC mit:

# echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-2/new_device
ds1307 0x68


Jetzt prüfen wir, ob das geklappt hat:

1. Unter /sys/class/i2c-adapter/i2c-2/ sollte ein die COC RTC unter 2-0068 auftauchen und der passende Treiber aktiviert sein:

# sudo cat /sys/class/i2c-adapter/i2c-2/2-0068/modalias
i2c:ds1307


2. sudo ls /dev/rtc* sollte zwei RTCs ausgeben, die interne /dev/rtc0 und die externe vom COC /dev/rtc1

Jetzt haben wir's fast. Die COC RTC läßt sich zum Test auslesen:

# sudo hwclock --rtc=/dev/rtc1 -r
Fr 07 Jan 2000 04:03:03 CET  -0.461191 seconds


Setzen läßt sich die COC RTC nun auch mit hwclock.

BPi Systemzeit in COC RTC schreiben:

sudo hwclock --rtc=/dev/rtc1 --systohc

Beliebige Systemzeit in COC RTC schreiben:

sudo hwclock --rtc=/dev/rtc1 --set --date="2015-03-30 11:38:00"

Systemzeit nach COC RTC stellen:

sudo hwclock --rtc=/dev/rtc1 --hctosys

Mehr dazu liefert man hwclock.


Wenn man nun die COC RTC als Uhr verwenden will, ändert man das permanent in zwei Dateien:

1. Ändere /etc/rc.local und füge die Zeilen zum aktivieren der COC RTC hinzu:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-2/new_device

2. Ändere in /etc/init.d/hwclock.sh die Zeile

HCTOSYS_DEVICE=rtc1

,um die COC RTC zu verwenden.


Waldmensch

#66
Also bis zum device komme, dann wird aber nur eins angezeigt:

root@lemaker ~ > cat /sys/class/i2c-adapter/i2c-2/device/uevent
DRIVER=sunxi-i2c
MODALIAS=platform:sunxi-i2c
root@lemaker ~ > cat /sys/class/i2c-adapter/i2c-2/2-0068/modalias
cat: /sys/class/i2c-adapter/i2c-2/2-0068/modalias: No such file or directory
root@lemaker ~ > echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-2/new_device
ds1307 0x68
root@lemaker ~ > cat /sys/class/i2c-adapter/i2c-2/2-0068/modalias
i2c:ds1307
root@lemaker ~ > ls /dev/rtc*
/dev/rtc0
root@lemaker ~ >


Die Fex war schon richtig bei Überprüfung. Image ist immernoch das Raspbian für den BPro

Curzon

Dazu fallen mir spntan zwei Fragen ein, da die Uhr auf dem COC sich wohl nicht aktivieren läßt:

Welche der beiden aktuellen Firmware 1.63 hast du auf den COC geflashed? Die full oder radio only?
Ich habe meine COC Firmware durch clonen des Repository als Quelltext geladen, auf dem BPi übersetzt und die full version geflashed.

Was gibt den i2cdetect -y 2 aus?

Waldmensch

Ich habe natürlich die aktuelle "full" geflasht

root@lemaker ~ > i2cdetect -y 2
-bash: i2cdetect: command not found

ic2-tools installiert, danach:
root@lemaker ~ > i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@lemaker ~ >

Kann es sein, das das Raspbian die originale RTC auf dem BPI Board gar nicht installiert und die vom COC die einzige ist und somit auf /dev/rtc0 ?

Curzon

Zitat von: Waldmensch am 31 März 2015, 09:29:00
Kann es sein, das das Raspbian die originale RTC auf dem BPI Board gar nicht installiert und die vom COC die einzige ist und somit auf /dev/rtc0 ?

Das verrät dir dmesg (hier bei mir nach einem reboot des BPi):
# dmesg -T | grep "rtc"
[Mo Mär 30 15:48:31 2015] sunxi-rtc sunxi-rtc: Warning: RTC time is wrong!
[Mo Mär 30 15:48:31 2015] sunxi-rtc sunxi-rtc: rtc core: registered rtc as rtc0
[Mo Mär 30 15:48:33 2015] sunxi-rtc sunxi-rtc: setting system clock to 2010-01-01 00:00:00 UTC (1262304000)
[Mo Mär 30 15:49:22 2015] rtc-ds1307 2-0068: rtc core: registered ds1307 as rtc1
[Mo Mär 30 15:49:22 2015] rtc-ds1307 2-0068: 56 bytes nvram


sunxi-rtc ist die interne BPi, die ist nach einem Reset nicht gestellt (da der BPi keine Batterie hat), deshalb die Warnung. Welche rtc benutzt wird siehst du ja hinter "registred ... as"

Waldmensch

Warum sollte es bei mir auch klappen :(

root@lemaker ~ > dmesg -T | grep "rtc"
[Tue Mar 31 20:08:24 2015] sunxi-rtc sunxi-rtc: rtc core: registered rtc as rtc0
[Tue Mar 31 20:08:36 2015] sunxi-rtc sunxi-rtc: setting system clock to 2015-03-31 18:08:36 UTC (1427825316)

Waldmensch

Ich glaube mein Problem ist der fehlende Treiber im Raspian
root@lemaker ~ > modprobe rtc-ds1307
FATAL: Module rtc-ds1307 not found.

Curzon

Zitat von: Waldmensch am 31 März 2015, 23:24:48
Ich glaube mein Problem ist der fehlende Treiber im Raspian

Dann bleibt nur die harte Tour  ;D

Howto: Build and install a modified linux kernel directly on Bananian

Du musst vor dem Compile folgende Option in linux-bananapi/arch/arm/configs/sun7i_defconfig hinzufügen:

CONFIG_RTC_DRV_DS1307=m

und dann den Kernel und Module übersetzen (Dauer um die 3h).

Danach sollte ein

# modprobe rtc-ds1307
# echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-2/new_device


funktionieren.


Waldmensch

Mit Bananian bringst Du jetzt nach Raspbian und der von Igor die Dritte Distro ins Spiel. Welche benutzt Du denn aktuell? Bei Dir scheint es ja drin zu sein. Vielleicht ist es einfacher gleich die zu nehmen. FHEM liegt sowieso auf einem Stick bei mir.

Curzon

#74
Wie in meinem ursprünglichen Post beschrieben, verwende ich immer noch genau das Debian Wheezy Image 3.4.106 mit der boot.cmd und Fex die hier anhängt.

Ich hatte mich ein einziges mal in meinem Post #53 vertan, aber auch entschuldigt  :D - wenn dich das verwirrt wäre Urlaub angesagt.
Etwas mehr Kampfgeist bitte ;) - mein Link oben sollte doch nur Helfen es mal mit einem Image zu probieren, für das es eine Anleitung zum Selbsterstellen gibt und man das fehlende Modul compilieren kann.