User Tools

Site Tools


doc:appunti:hardware:raspberrypi_micromediahub

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:hardware:raspberrypi_micromediahub [2017/12/17 09:30] – [USB 3.0 VIA Labs Hub Problems] niccolodoc:appunti:hardware:raspberrypi_micromediahub [2020/09/28 20:45] (current) – [Kodi] niccolo
Line 1: Line 1:
-====== Rapberry Pi Micro Media-Hub ======+====== Raspberry Pi Micro Media-Hub ======
  
 ===== Components ===== ===== Components =====
Line 9: Line 9:
   * Joystick controller   * Joystick controller
   * LCD display 16x2 charaters   * LCD display 16x2 charaters
 +
 +====== Current consumption ======
 +
 +See **[[https://www.raspberrypi.org/documentation/faqs/#powerReqs|FAQS PowerReqs]]**.
 +
 +  * **Raspberry Pi 3 Model B**
 +    * 1GB RAM
 +    * Typical bare-board active current consumption: 400mA
 +    * Maximum total USB peripheral current draw: 1.2A
 +    * Recommended PSU current capacity: 2.5A
 +  * **Raspberry Pi 3 Model A+**
 +    * 512MB LPDDR2 SDRAM
 +    * Typical bare-board active current consumption: 350mA
 +    * Maximum total USB peripheral current draw: Limited by PSU, board, and connector ratings only.
 +  * **Toshiba Canvio Basics 1Tb**
 +    * USB bus power (max. 900mA)
  
 ====== Kodi ====== ====== Kodi ======
  
-We started with a Raspbian 2017-11-29 lite, based on Debian Stretch. To have a minimal Kodi installation and support for the joystick, just install the following packages:+We started with a **Raspbian 2017-11-29 lite**, based on Debian Stretch. To have a minimal Kodi installation and support for the joystick, just install the following packages:
  
   * kodi   * kodi
Line 18: Line 34:
   * kodi-peripheral-joystick   * kodi-peripheral-joystick
  
-Kodi will not start automatically at boot, just execute **kodi** from the command line.+Kodi will not start automatically at boot, just execute **kodi-standalone** from the command line. 
 + 
 +**NOTICE**: Raspbian based on **Debian Stretch 9.11** uses two repositories: 
 + 
 +  * **[[http://raspbian.raspberrypi.org/raspbian/]]** (by file /etc/apt/sources.list) 
 +  * **[[http://archive.raspberrypi.org/debian/]]** (by file /etc/apt/sources.list.d/raspi.list) 
 + 
 +The first repository provides **Kodi 17.1** as per Debian Stretch. The second repository provided **Kodi version 17.6** on December 2017, but it was upgraded to **Kodi version 18** on february 2019. So beware of what packages you are installing, respect the right dependencies and be carefull with upgrades. 
 + 
 +Our current installation uses these versions: 
 + 
 +^ kodi                         | 2:17.6-2~stretch 
 +^ kodi-bin                     | 2:17.6-2~stretch 
 +^ kodi-eventclients-common     | 2:18.1-1~stretch 
 +^ kodi-eventclients-kodi-send  | 2:18.1-1~stretch 
 +^ kodi-peripheral-joystick     | 1.3.4-1~stretch   | 
 +^ libkodiplatform17:armhf      | 17.4.0~stretch    | 
 + 
 +To activate a joypad you have to go through **//Settings//** => //System settings// => //Input// => **//Configure attacched controllers//**. 
 +===== Starting Kodi at Boot ===== 
 + 
 +There are several recipes on the internet to start Kodi on boot; we searched one with the following features: 
 + 
 +  * **Does not require xserver.xorg**, as we have installed Raspbian Stretch Lite. 
 +  * Run Kodi as **unprivileged** user. 
 +  * **Run as a service**, do not use autologin and autostart tricks. 
 +  * Should be compliant with the underlying init system, which is **systemd** in Raspbian Stretch. 
 +  * Can perform **reboot** and **poweroff** from Kodi menu. 
 + 
 +So we want to execute **kodi-standalone** as **kodi** user. Create that user first, and assign him to the required groups: 
 + 
 +<code> 
 +adduser --disabled-password --gecos "User to run Kodi Media Center" kodi 
 +adduser kodi audio 
 +adduser kodi video 
 +adduser kodi plugdev 
 +adduser kodi input 
 +</code> 
 + 
 +Then we created a **systemd** unit file **/etc/systemd/system/kodi.service** to start Kodi as a service. Please do not use an old fashioned **sysvinit** start/stop script (e.g. ''/etc/init.d/kodi''), because the new systemd can use it only in //compatibility mode//. 
 + 
 +<file> 
 +[Unit] 
 +Description = Kodi Media Center 
 + 
 +# if you don't need the MySQL DB backend, this should be sufficient 
 +After = systemd-user-sessions.service network.target sound.target 
 + 
 +# if you need the MySQL DB backend, use this block instead of the previous 
 +# After = systemd-user-sessions.service network.target sound.target mysql.service 
 +# Wants = mysql.service 
 + 
 +[Service] 
 +User = kodi 
 +Group = kodi 
 +Type = simple 
 +ExecStart = /usr/bin/kodi-standalone 
 +Restart = always 
 +RestartSec = 15 
 + 
 +[Install] 
 +WantedBy = multi-user.target 
 +</file> 
 + 
 +To actually enable and start the service, run: 
 + 
 +<code> 
 +systemctl daemon-reload 
 +systemctl enable kodi.service 
 +systemctl start kodi.service 
 +</code> 
 + 
 +Now we have to solve a problem: the unprivileged Kodi user cannot perform reboot and poweroff actions: as you can se the exit menu of Kodi shows only the **Exit** item. We need a piece of software: **policykit-1**. This package contains the framework which handles the authorizations, according to the Freedesktop.org guidelines. 
 + 
 +<code> 
 +apt-get install policykit-1 
 +</code> 
 + 
 +We created the file **/etc/polkit-1/localauthority/50-local.d/50-kodi.pkla**, which  allows the Kodi user to execute some privileged actions: 
 + 
 +<file> 
 +[Actions for kodi user] 
 +Identity=unix-group:kodi 
 +Action=org.freedesktop.upower.*;org.freedesktop.udisks.*;org.freedesktop.login1* 
 +ResultActive=yes 
 +ResultAny=yes 
 +ResultInactive=no 
 +</file> 
 + 
 +===== Problem Decoding Webm (VP8 Encoded) Videos ===== 
 + 
 +We got a severe problem trying to play some **.webm** video files: the audio starts but it freeze shortly, the video does not start at all. After that, all the Kodi interface was frozen and we need to reboot (ssh access still working). Into kodi.log we get the following error: 
 + 
 +<code> 
 +CMMALVideo::Open Failed to commit format for decoder 
 +    input port vc.ril.video_decode:in:0(VP8 ) (status=3 EINVAL) 
 +</code> 
 + 
 +To confirm that the video codec is VP8, we installed the **mediainfo** package an run the tool against the video; which actually uses the VP8 codec. The official **[[http://kodi.wiki/view/Raspberry_Pi_FAQ|Kodi Wiki]]** says that VP8 is supported on the Raspberry Pi architecture, so we are searching for the problem somewhere else. 
 + 
 +**[[https://forum.kodi.tv/showthread.php?tid=204239|This post]]** says that VP8 hardware (GPU) decoding is supported only if firmware **start_x.elf** is loaded: //Note that GPU accelerated software codecs (and camera) are only available from start_x.elf. Add start_x=1 to config.txt (or use raspi-config and enable camera)//. This means that we have to add the following line in **/boot/config.txt** (The required file is already in the ''/boot'' directory): 
 + 
 +<file> 
 +start_x=1 
 +</file> 
 + 
 +See also the page **[[https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md|Boot options in config.txt]]**. We have also **gpu_mem=128** in the same config file. 
 +===== Starting Kodi only if USB hard disk is present ===== 
 + 
 +We keep all our media files (video, images, etc.) into an **USB hard disk**, connected through a powered USB hub. It can be possible that **the Raspberry Pi will be started without the disk attached**. In this case we want **no Kodi service** to be started. See **[[..:linux:sa:systemd#starting_a_service_when_a_filesystem_is_available_an_mounted|this paragrph]]** on how to configure systemd unit for that purpose. 
 + 
 +==== Web References ====
  
-FIXMEHow to start Kodi at bootHow to run Kodi as unpriviliged user.+  * [[https://www.raspberrypi.org/forums/viewtopic.php?t=108209|Kodi 14.2 Shutdown Functions not available - Raspian]] 
 +  * [[https://www.raspberrypi.org/forums/viewtopic.php?t=131647|Autostart Kodi in Raspbian Jessie]] 
 +  * [[https://gist.github.com/Cyberek/33af1b92c071791a71aa8bccf87b8a3a|Starting Kodi automatically on Raspbian Jessie and Stretch]] 
 +  * [[https://unix.stackexchange.com/questions/395914/kodi-standalone-no-possibilty-for-poweroff-and-reboot|kodi-standalone no possibilty for poweroff and reboot]] 
 +  * [[https://forum.kodi.tv/showthread.php?tid=313432|Shutdown does not work when Kodi autoboots with the Pi]] 
 +  * [[http://kodi.wiki/view/HOW-TO:Autostart_Kodi_for_Linux#Add_a_new_systemd_script|Archive:HOW-TO:Autostart Kodi for Linux]]
  
 ====== USB 3.0 VIA Labs Hub Problems ====== ====== USB 3.0 VIA Labs Hub Problems ======
  
-The first attempt was an **Amazon Basic USB 3.0 4 ports hub**. Unfortunately it is based on the VIA Labs chips, which seems to have a bug, so **it is uncompatibile with the Raspberry Pi**.+The first attempt was an **Amazon Basics USB 3.0 4 ports hub**. Unfortunately it is based on the VIA Labs chips, which seems to have a bug, so **it is uncompatibile with the Raspberry Pi**.
  
 The device is listed on the USB bus: The device is listed on the USB bus:
doc/appunti/hardware/raspberrypi_micromediahub.1513499455.txt.gz · Last modified: 2017/12/17 09:30 by niccolo