Ich versuche auf meinem Raspberry PI b+ ein Mediacenter einzurichten. Buildroot kommt daher sehr gelegen da man es bis auf 2 mb runtertrimmen
kann ein kodi somit (ohne schnickschnack) bei einem raspberry pi aif 25ßMB.
Da ich aus erfahrung kenne, je mehr komponenten man hat, dest so problematischer und anfälliger wird es. Daher auch den weg des "eigenen" MC die zielstellung ist:
Somit sollte es nach dem prinzip "einschalten, genießen ausschalten und fertig". Libreelect hat patches welche einige meiner ziele einfacher machen aber ist mir trotzdem
Brandet und nicht upstream patches.
- Kernel sollte stable und so klein wie möglich sein. (4.4-36)
- Erlaube keine custom-repos ("Unbekannte quellen wurde direkt aus dem kodi quellcode entfernt") das git-repo ist offiziell "Krypton-17".
- Das benden von KODI mittels Exit ist nicht möglich und da busybox keine Signale (EXIT und TERM) handelt sogar nötig.
- Startzeit so schnell wie möglich (aktuell 12 Sekunden laut printk-timer)
- Partitionen: Boot und rootfs
- USB kann verwendet werden (nur storage)
- SSH/Telnet/SMB sind deaktiviert (per default) (kodi kann per smbclient jedoch die medien abrufen)
- Buildroot muss eine erstkonfiguration beinhalten (kopiere also ein userdata ordner).
- Beim shutdown schreibe ein "dmesg > /kernel.[definition='1','0']log[/definition]" und "logread > /syslog.[definition='1','0']log[/definition]" damit man die kernel und system logs nachvollziehen kann.
- Bei probleme SD-karte also am rechner einhängen
Es ist klar dass es bei dem Umfang schwer wird. Daher versuche ich den aufbau wie weit ich bin hier in den thread einzubauen. Da das problem meiner meinung
an zwei orten liegen kann. KODI <-> LIRC oder Lircmap.xml Ich besitze die MCE 2005 Remote von Microsoft!
Versuche das System jedoch nur auf das nötigste zu beschränken:
Hier mein Standpunkt im Kernel:
- Remote Controller support
- Compile Remote Controller keymaps
- Remote Controller decoders (Alle einkompiliert)
- Remote Controller Devices (Alle einkompoiliert) bis auf "GPIO IR" und "Loopback" (beide deaktiviert)
Kernel boot:
Der kernel beim booten, registriert die remote als "ir-rc6-mce" und gibt mir ein "rc0" sowie ein lirc_dev(mceusb) ein "/dev/lirc0" aber auch ein /dev/lircd
Beim login habe ich auch die möglichkeit einige tasten zu drücken (asci zeichen erscheinen beim drücken von "UP DOWN LEFT RIGHT"
Kodi im buildroot navigiert auch soweit mit Navigation und KEY_ENTER jedoch nicht KEY_OK. Da lirc und kernel beide die signale verarbeiten habe ich das kernel protocol deaktiert
Das deaktiviert die kernel [definition=10,0][definition='3','0']keymap[/definition][/definition] und konnte somit auch mit irreccord problemlos eine saubere KEYMAP für mceusb als mceusb.lircd.conf erstellen. ohne dem deaktivieren habe ich Störungen beim erstellen der keymaps. Die [definition=10,0][definition='3','0']keymap[/definition][/definition] wurde kopiert und der pi mittels reboot neugestartet. Die mceusb.lircd.conf wird geladen und funktioniert auch mit irw nach dem reboot. irw reagiert auf alle tasten sauber und schnell. Beim erstellen der Keymap habe ich mich an die namen der KEY_* tasten im kernel gehalten. DAHER auch KEY_SLEEP. lirc lädt auf meinem MCE die remote mit dem treiber default, da ich ansonsten nicht das rc6 decodieren kann (toggle mask)... Die Keymap ist mit toggle mask und toggle bit.
Da kodi mittels busybox startet hat es vor dem login kein homeverzeichnis. buildroot legt es mittels Makefile als symlink auf "/var/kodi" in diesemfall HOME=/var/kodi verifiziert und kodi läuft auch normal
Laut dem wiki soll eine lircmap.xml nach /.kodi/userdata
Somit liegt meine Lircmap.conf in:
Diese wird jedoch nicht geladen und taucht auch nicht in der [definition=9,2]kodi.[definition='1','0']log[/definition][/definition] auf!
welche folgendes beinhaltet:
<?xml version="1.0" encoding="UTF-8"?>
<lircmap>
<remote device="mceusb">
<zero>KEY_NUMERIC_0</zero>
<one>KEY_NUMERIC_1</one>
<two>KEY_NUMERIC_2</two>
<three>KEY_NUMERIC_3</three>
<four>KEY_NUMERIC_4</four>
<five>KEY_NUMERIC_5</five>
<six>KEY_NUMERIC_6</six>
<seven>KEY_NUMERIC_7</seven>
<eight>KEY_NUMERIC_8</eight>
<nine>KEY_NUMERIC_9</nine>
<clear>KEY_DELETE</clear>
<enter>KEY_OK</enter>
<select>KEY_OK</select>
<start>KEY_MEDIA</start>
<mute>KEY_MUTE</mute>
<info>KEY_INFO</info>
<volumeplus>KEY_VOLUMEUP</volumeplus>
<volumeminus>KEY_VOLUMEDOWN</volumeminus>
<pageplus>KEY_CHANNELUP</pageplus>
<pageminus>KEY_CHANNELDOWN</pageminus>
<forward>KEY_FASTFORWARD</forward>
<reverse>KEY_REWIND</reverse>
<play>KEY_PLAY</play>
<record>KEY_RECORD</record>
<power>KEY_SLEEP</power>
<pause>KEY_PAUSE</pause>
<stop>KEY_STOP</stop>
<skipplus>KEY_NEXT</skipplus>
<skipminus>KEY_PREVIOUS</skipminus>
<star>KEY_NUMERIC_STAR</star>
<hash>KEY_NUMERIC_POUND</hash>
<up>KEY_UP</up>
<down>KEY_DOWN</down>
<left>KEY_LEFT</left>
<right>KEY_RIGHT</right>
<select>KEY_OK</select>
<back>KEY_EXIT</back>
<menu>KEY_DVD</menu>
<livetv>KEY_TUNER</livetv>
<title>KEY_EPG</title>
<recordedtv>KEY_PVR</recordedtv>
<subtitle>KEY_SUBTITLE</subtitle>
<teletext>KEY_SUBTITLE</teletext>
<red>KEY_RED</red>
<green>KEY_GREEN</green>
<yellow>KEY_YELLOW</yellow>
<blue>KEY_BLUE</blue>
</remote>
</lircmap>
Alles anzeigen
Im Wiki habe ich gelesen dass man als device="<how lirc calls the remote>" das "<how lirc calls the remote>" zu "mceusb" ändern soll, default-templates haben ebenso "mceusb" und in osmc sowie libreelec haben ebenso die sektion "mceusb".
In einem weiteren reboot wurde kodi als autostart deaktiviert um funktionen nochmals zu testen:
irw: gibt mir die gesamte [definition=10,0][definition='3','0']keymap[/definition][/definition] aus...
lircd: ist aktiv und gestartet (sichtbar in ps output)
Das kodi [definition='1','0']log[/definition] habe ich ebenfalls angehangen sowie auch die defconfig.
#
# Audio and video applications
#
BR2_PACKAGE_PROVIDES_LIBOPENMAX="rpi-userland"
BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS=y
BR2_PACKAGE_FFMPEG=y
BR2_PACKAGE_FFMPEG_GPL=y
BR2_PACKAGE_FFMPEG_NONFREE=y
BR2_PACKAGE_FFMPEG_FFMPEG=y
BR2_PACKAGE_FFMPEG_POSTPROC=y
BR2_PACKAGE_FFMPEG_SWSCALE=y
BR2_PACKAGE_FFMPEG_ENCODERS="all"
BR2_PACKAGE_FFMPEG_DECODERS="all"
BR2_PACKAGE_FFMPEG_MUXERS="all"
BR2_PACKAGE_FFMPEG_DEMUXERS="all"
BR2_PACKAGE_FFMPEG_PARSERS="all"
BR2_PACKAGE_FFMPEG_BSFS="all"
BR2_PACKAGE_FFMPEG_PROTOCOLS="all"
BR2_PACKAGE_FFMPEG_FILTERS="all"
BR2_PACKAGE_FFMPEG_INDEVS=y
BR2_PACKAGE_FFMPEG_OUTDEVS=y
BR2_PACKAGE_FFMPEG_EXTRACONF=""
BR2_PACKAGE_KODI_ARCH_SUPPORTS=y
BR2_PACKAGE_KODI_EGL_GLES=y
BR2_PACKAGE_KODI=y
BR2_PACKAGE_KODI_PLATFORM=y
BR2_PACKAGE_KODI_LIBCEC=y
BR2_PACKAGE_KODI_LIRC=y
BR2_PACKAGE_KODI_NONFREE=y
BR2_PACKAGE_KODI_LIBSMBCLIENT=y
BR2_PACKAGE_KODI_INPUTSTREAM_ADAPTIVE=y
BR2_PACKAGE_KODI_INPUTSTREAM_RTMP=y
BR2_PACKAGE_KODI_SKIN_DEFAULT_ESTUARY=y
BR2_PACKAGE_KODI_TEXTUREPACKER=y
BR2_PACKAGE_KODI_SKIN_ESTUARY=y
BR2_PACKAGE_KODI_VISUALISATION_SPECTRUM=y
BR2_PACKAGE_KODI_RESOURCE_LANGUAGE_de_de=y
BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS=y
BR2_PACKAGE_KODI_PVR_IPTVSIMPLE=y
Alles anzeigen