Dienstag, 23. September 2014

Joins with Typo3 Extbase


Joins mit Extbase Vers 1.0

        // Erstmal: Selector erweitern:
        // Selector 1 ist das aktuelle Model:
        $selector1 = $query->getSource();
        $selector1_JoinField = "company.postcode";
        // QomFactory holen
        //$qomFactory = $this->persistenceManager->getBackend()->getQOMFactory();
        $backend = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Backend');
        $qomFactory = $backend->getQomFactory();
        // Selector 2 zusammenstellen:
        $model = null;
        $tableName = "postcode_test";
        $selector2_JoinField = "uid";
        $selector2 = $qomFactory->selector($model, $tableName);
        var_dump($selector2);
        // Selectoren Joinen:
        $joinCondition = $qomFactory->equiJoinCondition(
            $selector1->getSelectorName(), $selector1_JoinField,
            $selector2->getSelectorName(), $selector2_JoinField
        );

        $query->setSource(
            $qomFactory->join(
                $selector2,
                $selector1,
                // For the List of Joins,visit : http://typo3.org/api/typo3cms/_query_interface_8php_source.html
                \TYPO3\CMS\Extbase\Persistence\Generic\Qom\QueryObjectModelConstantsInterface::JCR_JOIN_TYPE_LEFT_OUTER,
                $joinCondition)
        );

Mittwoch, 9. April 2014

Olinuxino A20 - Enabling Battery Control.

Use this Tutorial to recompile Kernel with APM support
http://linux-sunxi.org/Advanced_Power_Management
Then:
apt-get install apmd
apm

Sonntag, 6. April 2014

Olinuxino A20 - Use both Cores.

For using both cores separately,you have to assign tasks to each core.
taskset -c 0 <cmd> // Core1
taskset -c 1 <cmd> // Core2

Samstag, 5. April 2014

Ralink Driver on Debian 7

I have bought a cheap Wlan Stick(3 Euro on Ebay). For using it,i had to remove "the old" driver,which was spamming my dmesg.



Entfernen von RF Driver:

rmmod rt5370sta
echo 'blacklist rt5370sta' | sudo tee -a /etc/modprobe.d/blacklist.conf



http://www.geekamole.com/2013/rt2800usb-fix-for-ralinkmediatek-3070-gentoo-linux/

Remove all loaded modules:
rmmod rt2x00usb rt2800lib rt2800usb rt2800usb rt2x00lib

Patch alle the Drivers:


find ./drivers/net/wireless/rt2x00/ -type f -exec sed -i -e 's|RF5370|RF3070|g' {} \;
 
Mod rt2800.h File:#define RF3070    0x3070   
 
Remove Old drivers from(new drivers will be in /lib/modules/3.4.79+/extra:
rm /lib/modules/3.4.79+/kernel/drivers/net/wireless/rt2x00/*
 

make M=drivers/net/wireless/rt2x00/

make M=drivers/net/wireless/rt2x00/ modules_install

*plug in Device *




Speedtest Results:
0bda:8189 Realtek Semiconductor Corp. RTL8187B:

Testing download speed........................................
Download: 3.87 Mbit/s
Testing upload speed..................................................
Upload: 2.12 Mbit/s








Mittwoch, 2. April 2014

Blue Usb Rocket Launcher Driver

 Usb Rocket Launcher Library for the Blue Model. Self Explaining use.




Find my Library under:
https://github.com/N8body/RocketLauncher

Olinuxino A20 H264 Encoding

This Blogpost is about the Hardware h264 Encoder on the A20 and how to use it.
After searching around,i found this Encoder(https://github.com/jemk/cedrus/tree/master/h264enc) but was not able to use it. After contacting the Author,i finally got it working,and the author told me,that there is another library,which was forked of his project,and should work well. I tried both. So enought Talk,here ist the instruction

1. git clone https://github.com/ebutera/gst-plugin-cedar
2. For Compiling youll need
apt-get install gstreamer0.10-tools libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

2. compile using the autogen.sh script & make
3.  On my Installation(Stock Debian 7 Image of Olinuxino A20 ) i had to put the two Files(libgstcedar.la & libgstcedar.so) to the right path. Trough "make install" they were copied to /usr/local/lib/gstreamer-0.10/ but in my Installation,the gstreamer path was  /usr/lib/arm-linux-gnueabihf/gstreamer-0.10/
4. Test if the Library is recognized correctly by  "gst-inspect cedar_h264enc". If you get no errors you have managed it.
5. Before using it,ensure you have a /dev/cedar_dev . if not,just make a modprobe sunxi_cedar_mod
for having it everytime use: put sunxi_cedar_mod in  /etc/modules 

Now to the Encoding Commands
1 Get Testoutput:
gst-launch -ve videotestsrc ! cedar_h264enc ! h264parse ! matroskamux ! filesink location="test.mkv"
2. Convert from some format to h264 (maybe with an error)
gst-launch -ve filesrc location=input.avi ! ffmpegcolorspace ! cedar_h264enc ! h264parse ! matroskamux ! filesink location="output.mkv" 
 3. Stream from your Webcam on Justin.Tv(you can also use ustream or twitch,or any other rtmp server)
gst-launch -ve v4l2src device=/dev/video0 ! ffmpegcolorspace ! video/x-raw-yuv, width=1280, height=720, format=(fourcc)NV12 ! cedar_h264enc ! h264parse ! flvmux streamable=true ! rtmpsink location=rtmp://live-fra.justin.tv/app/$STREAMKEY



For now the Cpu is going to 100% but i have read,its because of the Color Converting Routines.
There is some discussion about using a custom Filter(not the ffmpegcolorspace) here:
http://processors.wiki.ti.com/index.php/GstTIPlugin_Elements#TIPrepEncBuf
Havent tried it yet,but i think its possible to use. 
 The Cpu is going to 100% with or without the color conversion. The Plugin is experemental,maybe thats why.


For Overlays you can use:
Also consider about using https://developer.ridgerun.com/wiki/index.php/Fast_GStreamer_overlay_element for overlays.



Donnerstag, 20. März 2014

Add new script.bin

mount /dev/mmcblk0p1 /projects/mnt
cd /projects/mnt

git clone https://github.com/linux-sunxi/sunxi-tools
cd sunxi-tools 
make
cd .. 
sunxi-tools/bin2fex ./script.bin ./script.fex
 


[uart_para3]
uart_used = 1
uart_port = 3
uart_type = 2
uart_tx = port:PG06<4><1><default><default>
uart_rx = port:PG07<4><1><default><default>

sunxi-tools/fex2bin ./script.fex ./script_changed.bin


Testen mit:
dmesg | grep uart

[    0.624293] [uart]: used uart info.: 0xc9
[    0.629014] [uart]: serial probe 0 irq 33 mapbase 0x01c28000
[    0.655253] sunxi-uart.0: ttyS0 at MMIO 0x1c28000 (irq = 33) is a U6_16550A
[    1.395339] [uart]: serial probe 3 irq 36 mapbase 0x01c28c00
[    1.427200] sunxi-uart.3: ttyS1 at MMIO 0x1c28c00 (irq = 36) is a U6_16550A
[    1.439012] [uart]: serial probe 6 irq 51 mapbase 0x01c29800
[    1.470806] sunxi-uart.6: ttyS2 at MMIO 0x1c29800 (irq = 51) is a U6_16550A
[    1.482628] [uart]: serial probe 7 irq 52 mapbase 0x01c29c00
[    1.514441] sunxi-uart.7: ttyS3 at MMIO 0x1c29c00 (irq = 52) is a U6_16550A


Entnommen aus:
http://linux-sunxi.org/Fex_Guide#.5Buart_para1.5D
http://linux-sunxi.org/A20/PIO 
port:<port><mux feature><pullup/down><drive capability><output level> 
 

Dienstag, 18. März 2014

Nokia Display on A20




Folgende gits sind verfügbar:
https://github.com/N8body/DisplayC -> Library , die von Olimex stammt.
https://github.com/N8body/BitBang_A20_Python -> Python Library die um die Funktion für Bitbang-Spi erweitert wurde
https://github.com/N8body/pcd8544 -> Python Code. Mit beispielen

Dienstag, 11. März 2014

Olinuxino A20 - Erste Erweiterungen

Heute sind mir die passenden Erweiterungs-header angekommen. Benötigt werden sie,um zb den Microphone-Header oder die 5V Büchse rauszuführen. Nunden:
Die Header nennen sich :

JST 2.0 PH,falls jemand die nachkaufen möchte. Ich hab natürlich gleich ein 20ger-Pack für ungefähr 5 Euro gekauft(was an sich schon ein stolzer Preis ist,für ein wenig Plastik) Geheißen hat die kombination: "JST 2.0 PH 2-Pin Connector plug with Wire x 20 Sets". Natürlich hab ich beim Bestellen nicht wirklich auf die Farben geachtet sodas die mitgelieferten Kabel "falschfarbig" verdrahtet sind. Wichtig für die Stromführung ist das natürlich nicht,aber falschfarbige Käbel geben immer grundsätzlich eine zusätzliche Fehlerquelle. Zum Glück konnte man sie richtig "verdrahten" indem man die Header aufmacht und die beiden Drähte tauscht(rot und schwarz):
Rot rechts,Schwarz links.

Freitag, 28. Februar 2014

Olinuxino A20 - Mini Einrichtungstipps

Kurzer Tipp für alle:
folgende 2 zeilen in die ~/.bashrc rein,schon sieht die Welt ganz anders aus.

eval `dircolors`
alias ls='ls --color=auto '

 Datum: einfach folgendes eingeben und man hat immer ein normales Datum.
dpkg-reconfigure tzdata

Olinuxino A20 - Webcam aus dem Internet erreichbar machen

Nun um seine Webcam aus dem Internet erreichbar zu machen,muss man normalerweise seine Ports öffnen. Nicht mit mir. Es gibt das supertolle Programm namens NGrok(https://ngrok.com/),womit man sich einen Tunnel aufbauen kann. Das geschieht folgendermaßen:
1. Ngrok runterladen(es gibt einen linux-arm zweig)
2. ngrok binary in /usr/local/bin/ speichern(man kann auch einen anderen Ort wählen)
3. ngrok service machen:

#!/bin/sh
# /etc/init.d/ngrok


### BEGIN INIT INFO
# Provides:          ngrok
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Ngrok Nat Bypass
# Description:       Bypasses Nat with Ngrok
### END INIT INFO

BINARY=/usr/local/bin/ngrok
CONFIG=/usr/local/bin/ngrok-config
TUNNELS=webcam

start()
{
        echo "Starting ngrok..."
        screen -dmS ngrok $BINARY -config $CONFIG start $TUNNELS
}

stop()
{
  echo "Stopping ngrok..."
  kill -9 $(pidof ngrok) >/dev/null 2>&1
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

exit 0


Olinuxino A20 Webcam Streaming Part 2

Nun kümmern wir uns um die Auslieferung des Bildes. Das geschieht mit Apache
Zuvor noch:
a2enmod rewrite
a2enmod mod_proxy

Danach eine htacess Datei im Root Ordner und dort folgendes rein:


RewriteEngine On
RewriteRule ^snapshot.jpg$ http://127.0.0.1:8080/?action=snapshot  [P]

das sorgt für das Bild. wenn man es jetzt mit dem <img src="snapshot.jpg"> anzeigt

Olinuxino A20 Webcam Streaming Part1

Jetzt kommen wir zum spannenden Teil mit der Webcam

Erstmal lädt man sich Mjpeg Streamer runter unter der folgenden URL:
  1. https://github.com/codewithpassion/mjpg-streamer runterladen. Die normale Version ist leider nicht auf die neuste V4L Version gepatcht.
  2. entpacken
  3. make USE_LIBV4L2=true 
  4. VERSION=$( sed -n '/SOURCE_VERSION/s/^.*"\(.*\)".*$/\1/gp' < mjpg_streamer.h ) 
  5. REVISION=$( svnversion -cn | sed "s/.*://" ) 
  6. sudo checkinstall --pkgname=mjpg-streamer --pkgversion="$VERSION+$REVISION~checkinstall" --default
  7. Danach erstellt man noch eine StartDatei für den Mjpeg

#!/bin/sh
# /etc/init.d/mjpg_streamer


### BEGIN INIT INFO
# Provides:          mjpg_streamer
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: MJPG-Streamer
# Description:       MJPG-Streamer takes JPGs from Linux-UVC compatible webcams and streams them as M-JPEG via HTTP.
### END INIT INFO
VIDEOSRC="/dev/video0"
RESOLUTION="640x480"
FRAMERATE="15"
LED="blink"
PARAMETERS=""

BINARY=/usr/local/bin/
LIB=/usr/local/lib/


start()
{
        echo "Starting mjpg-streamer..."
        $BINARY/mjpg_streamer -i "$LIB/input_uvc.so -d $VIDEOSRC -l $LED -n -y -r $RESOLUTION -f $FRAMERATE" -o "$LIB/output_http.so -n -w /usr/local/www -p 8080" >/dev/null 2>&1 &
}

stop()
{
  echo "Stopping mjpg-streamer..."
  kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

exit 0

Unter Port 8080 erreicht man dann das Interface,in welchem das ganze dann zu finden ist.

Olinuxino A20 - Apache Installation mit Stats



Jetzt kommen wir zum Interessanten Teil: Apache Installation

1. apt-get install apache2 php5

2. a2enmod proxy_http (für später)


3. in /var/www folgende Sachen installieren:
http://phpsysinfo.sourceforge.net -> PHP System Info
Linfo http://linfo.sourceforge.net/








Donnerstag, 27. Februar 2014

Olinuxino A20 - Gate One Webserver

Nun da SSH geht,benötige ich eine verbesserte Variante davon. Am besten eine die per Web erreichbar ist. Ich entscheide mich für Gate One
Folgende Installationsanleitung:
  1. sudo apt-get install python-pip 
  2. sudo apt-get install build-essential python-dev(benötigt man für Tornado)
  3. pip install tornado kerberos
  4. pip install html5lib
  5. apt-get install dtach
  6. ./setup.py install
  7. gateone(ich musste ein paarmal einschalten,bis es sich komplett eingeschaltet hat)
     

Olimexino A20 - SSH Connection/Wlan Einrichtung

Da ich mich nun über Seriell eingeloggt habe,wird es Zeit für die Konfiguration von SSH
Dafür ist zunächst Wlan nötig.
Man macht folgendes:
  1. Anschließen von seinem NetzwerkAdapter über USB. Meiner hat einen RTL8187 Chipsatz.
  2. Nachschauen wie sein Netzwerkadapter genannt wird. Das macht man über das Kommando: dmesg . Es erscheinen folgende einstellungen:
    [  380.128474] Registered led device: rtl8187-phy0::radio
    [  380.139937] Registered led device: rtl8187-phy0::tx
    [  380.154694] Registered led device: rtl8187-phy0::rx
    [  380.164094] rtl8187: wireless switch is on
    [  380.173941] usbcore: registered new interface driver rtl8187
    [  380.368686] udevd[268]: renamed network interface wlan0 to wlan7
  3. Da jetzt nun klar ist,das es sich um Wlan7 handelt,macht man nun folgenden Eintrag in die /etc/network/interfaces.
nano /etc/network/interfaces
 
auto wlan7
allow-hotplug wlan7
iface wlan7 inet dhcp
wpa-ap-scan 1
wpa-scan-ssid 1
wpa-ssid "SSID"
wpa-psk "KEY" 

Bei SSID und Key natürlich dementsprechend richtige Werte eintragen
 
danach ein "service networking restart" und das Ding sollte im Wlan sein.
Überprüfen tut man es mit ifconfig. Dort sollte die aktuelle IP erscheinen.
Jetzt noch zu SSH:
Erstmal muss SSH aktiviert werden. Dazu macht man folgendes:
einfache Lösung: update-rc.d ssh defaults
Grafische Lösung: apt-get install rcconf,danach rcfonf 
und den Hacken bei rcconf rausmachen
Danach kann man gemütlich mithilfe von Putty sich draufconnecten: putty.exe -ssh root@192.168.178.24 -pw olimex  
 
 
 
Wenn das geklappt hat,kann man den Fenstermanager deaktivieren(braucht man ja nicht mehr)
 
das geht einfach indem man die /root/.bashrc bearbeitet und dort die Zeile mit XFCE auskommentiert. 

Olimexino A20 - Serial Connection

Da ich kein Fan von MiniPcs mit Monitoren bin,greife ich auf die Serielle Schnittstelle zu um den ersten Bootvorgang zu initieren. Dafür benötigt man ein TTL-Verbindungskabel. Meins ist ein FT232. Zuerst verbinde ich die Pins,und danach starte ich putty mit dem Befehl


putty.exe -serial COM7 -sercfg 115200
um eine Verbindung zu initieren. Danach kann ich mich direkt mit Root Rechten rumbewegen.

Olimex A20 - Inbetriebnahme

Jetzt kurz zum Interessanten Punkt: Wie nimmt man das Ding in den Betrieb?
  1.  Erstmal das "Ultimate Image Version 5" runterladen:https://docs.google.com/file/d/0B-bAEPML8fwlOWVVcUxnSTE4YTg/edit
    (Referenz von hier: https://www.olimex.com/wiki/A20-OLinuXino-MICRO#Linux)
     
  2. Die Datei entpacken(zb mit 7zip )
  3. Danach "kopiert" man die IMG Datei mithilfe von Windows Disk Imager auf die MicroSD. http://sourceforge.net/projects/win32diskimager/
  4. Wenn die MicroSD größer ist wie 4 Gb empfiehlt es sich die Größe der Ext3 Partition zu vergrößern. Das macht man mit einem Partitionierungs Tool. Welches man verwendet,bleibt einem selbst überlassen,ich verwende  gerne Paragon Partition Manager
  5. Fertig,nun kann man in Debian booten

Olimex A20 Gehäuse - A20-Enc

Hier noch ein Bild vom Gehäuse,ist ebenfalls heute gekommen. Das Gehäuse macht einen stabilen Eindruck,aber mit 10 Euro nicht gerade günstig. Es gibt aber 2 lustige "Bewerte" mich Sticker dazu.




 Hier noch die Anleitung für den Zusammenbau(falls man nicht selbst draufkommt)
https://www.olimex.com/Products/OLinuXino/A20/A20-ENC/

Olimexino A20 4Gb

Heute hab ich ein neues Spielzeug gekriegt,womit ich spielen werde. Es ist ein:

Olimex A20. Nach langer Recherche hab ich mich dafür entschieden,weil es P/L Technisch besonders gut ist. Bezahl hab ich 65 Euro mit Versand,allerdings mit 16GB Karte und gebraucht. Dennoch ein ordentlicher Preis,aber ich denke ich werde viel Spaß damit haben. Unten noch ein Bild von der Kiste.