ich habe das mal mit einem nucleo aufgebaut, funktioniert im Prinzip auch, d.h. ich kann über ein Terminal Kommandos schicken und er zeigt mir auch CEC-Daten an. Nur Kodi kann ihn nicht erkennen (läuft alles unter Ubuntu 16). Das Tool 'cec-client' kann mit dem Adapter ebenfalls nichts anfangen.
Wo muss ich jetzt noch "drehen"? Muss ich die libcec und cec-tools vom System runterwerfen und durch eine "händisch" erzeugte libcec (rainshadow-Branch) ersetzen? Geht dann automatisch auch Kodi? Und die cec-tools?
Jetzt beantworte ich das mal selber, weil ein bischen Gefrickel ist dabei. Dies ist für Debian-basierte Distributionen wie Ubuntu mit dem Ziel das als "ordentliche" Pakete zu installieren. Falls beim Bauen irgendetwas fehlt wird man freundlich darauf hingewiesen und muss nachinstallieren. Erstmal alle Standardpakete die mit CEC zu tun haben, entfernen, insbesondere libcec und cec-tools. Dann den rainshadow-Branch von libcec in einem Entwicklungsverzeichnis klonen:
git clone -b rainshadow https://github.com/gdachs/libcec.git
In ./libcec/debian/rules mit einem Texteditor die Option -DHAVE_RAINSHADOW_API=1 anfügen so dass das so aussieht:
override_dh_auto_configure:
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1 -DCMAKE_INSTALL_PREFIX=/usr -DHAVE_RAINSHADOW_API=1
Dann die Pakete (fast) nach Anleitung bauen mit:
cd libcec
source /etc/lsb-release
sed "s/#DIST#/${DISTRIB_CODENAME}/g" debian/changelog.in > debian/changelog
dpkg-buildpackage -uc -us
Ohne die Optionen -uc und -us versucht er signierte Pakete zu erzeugen, was bei mir nicht gefunzt hat und braucht man eh nicht wenn es nur für einen selber ist. Wenn das erfolgreich durchgelaufen ist hat man in ../ die .deb-Pakete die man dann ganz normal mit "dpkg -i <packet.deb>" installieren kann.
So, "cec-client -l" erkennt mir jetzt den Adapter, und "cec-client -m" zeigt mir alle Kommunikation die so stattfindet an. Allerdings macht Kodi nichts damit (kein vorhander Eintrag in System -> Settings -> System -> Input Devices -> Peripherals -> CEC adapter) und in "cec-client -m" scheint die Kommunikation nur zum Teil dekodiert zu werden. Hier z.B. der Start mit einmal "up" und "down" gedrückt auf der Fernbedienung:
> cec-client -m
starting a monitor-only client. use 'mon 0' to switch to normal mode
No device type given. Using 'recording device'
CEC Parser created - libCEC version 4.0.0
no serial port given. trying autodetect:
path: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-3
com port: /dev/ttyACM0
opening a connection to the CEC adapter...
DEBUG: [ 283] Broadcast (F): osd name set to 'Broadcast'
DEBUG: [ 418] connection opened, clearing any previous input and waiting for active transmissions to end before starting
NOTICE: [ 419] connection opened
waiting for input
DEBUG: [ 420] processor thread started
TRAFFIC: [ 422] >> 40:8f
TRAFFIC: [ 5696] >> 40:8f
TRAFFIC: [ 5783] >> 04:90:00
DEBUG: [ 5783] TV (0): power status changed from 'unknown' to 'on'
DEBUG: [ 5783] device TV (0) status changed to present after command report power status
TRAFFIC: [ 5871] >> 40:8f
TRAFFIC: [ 5958] >> 04:90:00
TRAFFIC: [ 13706] >> 40:8f
TRAFFIC: [ 13793] >> 04:90:00
TRAFFIC: [ 13880] >> 40:8f
TRAFFIC: [ 13967] >> 04:90:00
TRAFFIC: [ 14760] >> 51:44:01
TRAFFIC: [ 14885] >> 15:70:11:00
TRAFFIC: [ 14972] >> 50:72:01
DEBUG: [ 14973] device Audio (5) status changed to present after command set system audio mode
TRAFFIC: [ 15042] >> 51:45
TRAFFIC: [ 16011] >> 15:70:11:00
TRAFFIC: [ 16099] >> 5f:72:01
DEBUG: [ 16099] >> Audio (5) -> Broadcast (F): set system audio mode (72)
TRAFFIC: [ 16193] >> 50:72:01
TRAFFIC: [ 17082] >> 10:04
DEBUG: [ 17082] device Recorder 1 (1) status changed to present after command image view on
TRAFFIC: [ 17199] >> 1f:82:11:00
DEBUG: [ 17199] Recorder 1 (1): physical address changed from ffff to 1100
DEBUG: [ 17199] Recorder 1 (1): power status changed from 'unknown' to 'on'
DEBUG: [ 17199] making Recorder 1 (1) the active source
DEBUG: [ 17200] >> Recorder 1 (1) -> Broadcast (F): active source (82)
TRAFFIC: [ 17310] >> 05:70:11:00
TRAFFIC: [ 17389] >> 51:44:02
TRAFFIC: [ 17484] >> 5f:72:01
DEBUG: [ 17484] >> Audio (5) -> Broadcast (F): set system audio mode (72)
TRAFFIC: [ 17552] >> 51:45
TRAFFIC: [ 17649] >> 5f:72:01
DEBUG: [ 17649] >> Audio (5) -> Broadcast (F): set system audio mode (72)
TRAFFIC: [ 21714] >> 40:8f
TRAFFIC: [ 21802] >> 04:90:00
TRAFFIC: [ 21877] >> 40:8f
TRAFFIC: [ 21964] >> 04:90:0
Alles anzeigen
"Up" war wohl " das Paket "51:44:01" und "down" war "51:44:02". Also es geht schon was, aber es klemmt noch irgendwo. Kennt sich jemand mit den Tiefen des CEC-Protokolls aus?
Edit: Es scheint an der Version von Kodi zu liegen die bei Ubuntu 16 dabei ist. Nachdem ich Krypton installiert habe wird CEC erkannt und soweit ich das sehen kann funzt alles.