2015-04-16 4 views
12

Ich arbeite an einem Minix NEO X8-H (Android Media Center, 4.4.2) und ich muss HDMI-CEC-Befehl an TV senden: wenn meine App empfängt einen Anruf Ich möchte automatisch die TV-Quelle auf die Minix-HDMI-Quelle ändern.Android - senden HDMI CEC Befehle zu TV - Minix - libCEC

Tatsächlich bieten die Minix einige Optionen, um HDMI-CEC und die Media Center-Software zu aktivieren XBMC soll CEC unterstützen. Aber nur im "Empfangsmodus" schätze ich: Der Nutzer kann das Android-Gerät über TV-Fernbedienung steuern. Ich möchte den umgekehrten Weg gehen. Ich stöbere im Quellcode von XBMC und habe einen sehr interessanten Code gefunden, weiß aber nicht, ob er für mich nützlich sein kann.

fand ich das serielle Gerät, das HDMI-CEC-Eingang bekommen

/dev/input/event7 

Der Kernel Referenzen platziert Befehle an: "/ sys/devices/virtual/input/input7 /"

# cat /sys/devices/virtual/input/input7/name 
cec_input 

Dies ist ein Teil von dmesg log:

http://pastebin.com/raw.php?i=A5dE3qLu

<5>[ [email protected]] Kernel command line: init=/init console=ttyS0,115200n8 no_console_suspend storage=5 cvbsdrv=0 vdaccfg=0xa007 logo=osd1,loaded,0x15100000,4k2ksmpte,full hdmimode=4k2ksmpte cvbsmode=576cvbs androidboot.firstboot=0 hdmitx=cec0 
<4>[ [email protected]] kernel get hdmimode form uboot is 4k2ksmpte 
<4>[ [email protected]] hdmitx: cec: Function List: disable, , , 
<4>[ [email protected]] hdmitx: cec: HDMI aml_read_reg32(P_AO_DEBUG_REG0):0x0 
<4>[ [email protected]] hdmitx: cec: HDMI hdmi_cec_func_config:0x0 
<4>[ [email protected]] hdmitx: cec: CEC not ready 
<4>[ [email protected]] hdmitx: cec: CEC init 
<4>[ [email protected]] hdmitx: cec: CEC task process 
<4>[ [email protected]] hdmitx: cec: hdmitx_device->cec_init_ready:0x1 

das beweist die effektive Präsenz von HDMI-CEC integrierte Unterstützung.

Ich fand libCEC und ich gelang es Cross-Compile es mit Android NDK Toolchain und ich konnte "libcec.so" und eine Demo-Client binäre "Cec-Client" auf dem Minix zu installieren.

Dies sind die Build-Optionen:

[email protected]:~/Desktop/libcec/libcec-master/build$ cmake .. 
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 
-- Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR) 
-- Configured features: 
-- Pulse-Eight CEC Adapter:    no 
-- Pulse-Eight CEC Adapter detection:  no 
-- lockdev support:      no 
-- xrandr support:       no 
-- Raspberry Pi support:     no 
-- TDA995x support:      no 
-- Exynos support:       no 
-- Python support:       no 
-- lib info: compiled on Linux-3.13.0-35-generic, features: P8_USB 
-- Configuring done 
-- Generating done 
-- Build files have been written to: /home/asd/Desktop/libcec/libcec-master/build 

weiß ich, dass libcec arbeitet mit einem externen HDMI-CEC-Controller oder, bauen, wenn mit Himbeer-Funktion zur Unterstützung läuft es kann problemlos auf einem Raspi, seiner integrierten Videocontroller mit .

Wenn es auf raspi laufen kann, muss es in der Lage sein, auf einem Minix zu laufen, denke ich.

Der cec-Client war ein Demo-Client, mit einer seriellen Schnittstelle zur Kommunikation entwickelt und es kann eigentlich nicht mit/dev/input/evet7 kommuniziert wegen einiger Fehler:

[email protected]:/data # cec-client -t p -p 4 /dev/input/event7      
== using device type 'playback device' 
using HDMI port '4' 
CEC Parser created - libCEC version 3.0.0 
opening a connection to the CEC adapter... 
DEBUG: [    7]  Broadcast (F): osd name set to 'Broadcast' 
ERROR: [   3520]  error opening serial port '/dev/input/event7': Invalid argument 
ERROR: [   3521]  could not open a connection (try 1) 
ERROR: [   6355]  error opening serial port '/dev/input/event7': Too many open files 
ERROR: [   6355]  could not open a connection (try 2) 
ERROR: [   8243]  error opening serial port '/dev/input/event7': Too many open files 
ERROR: [   8243]  could not open a connection (try 3) 
ERROR: [   9501]  error opening serial port '/dev/input/event7': Too many open files 
ERROR: [   9501]  could not open a connection (try 4) 
unable to open the device on port /dev/input/event7 
NOTICE: [   10506]  connection opened 

Aber AFAIK HDMI-CEC Verwenden Sie ein serielles Kommunikationsprotokoll über Pin 13 des HDMI-Anschlusses. Selbst wenn "cec-client" ein Demo-Client ist, muss er ordnungsgemäß funktionieren können! Wie Sie sehen, gibt es ein Problem beim Sperren des Geräts oder etwas Ähnliches.

Probleme:

  • es möglich ist, CEC-Befehl über Android mit Java zu schicken?
  • wenn nicht, weiß jemand, wie man den libCEC/cec-client an Minix anpasst?

Wenn Java Weg gibt es nicht möglich ist, keine Probleme: meine eigene App mit Qt gebaut und ich bin eigentlich schon ein paar native shared librare „.so“

jemand Tipps hat mit? Wie kann das erreicht werden?

+0

Wie hast du das verstanden? Es ist etwas, über das ich mich sehr bald für ein Projekt informieren muss, an dem ich gerade arbeite. Ich habe es geschafft, es mit Embedded Linux, aber noch nicht für Android zu arbeiten. Eine schnelle neugierige herum und ich fand dies: http://0x1c3.blogspot.co.uk/2015/09/libcec-compilation-for-android-example.html – WLGfx

+0

@Matt können Sie mir bitte helfen, wie Sie libCEC integriert haben Android – PankajAndroid

+0

@Matt Hast du eine Lösung gefunden, um den Fernseher über die Minix Hardware zu steuern? –

Antwort

1

Zunächst einmal sehr beeindruckende Reverse-Engineering-Arbeit!

Zweitens habe ich ein ähnliches Problem (aber mit einem nicht-Minix-Produkt). Haben Sie auf eine neuere Firmware versucht, ein Upgrade, wie diese:

http://minixforum.com/threads/x8-x8-plus-x8-h-official-firmware-004a-not-for-x8-h-plus.5567/

Ich schlage vor, dies als eine mögliche Lösung, weil eines der Themen, es behebt, ist dies:

Fest HDMI-CEC Multi-Geräte-Probleme

Das bedeutet, das Gerät ist nicht nur ein "Slave", sondern auch ein "Master" (dh kann Befehle an andere HDMI-Geräte senden).

Bitte beachten Sie, dass, wie in dem Link angegeben, es nicht für die Plus-Version gedacht ist.

Viel Glück!

+0

Vielen Dank für Ihre Tipps, aber nach fast 3 Jahren habe ich keine Lösung für dieses Problem gefunden! – Matt