HOW-TO talk:Install Kodi on Fedora 26 using RPMFusion packages
To Klojum (talk) - Thank you very much for the "kodi.service" changes re: gettys and plymouth. I did some testing with these changes, and with them I noticed I no longer get a tty login prompt when I do a "systemctl stop kodi". So for now I'm undo'ing your changes, but I will continue to look into this until I figure out what's wrong with the login prompt. Once I've sorted that out I will reinstate your changes accordingly. Thanks again for your contribution!
1 Guide rewrite
I am going to be revising a few sections soon.
- Firewall: You can leave it enabled and just open the following ports: TCP: 1151, 8080, and UDP: 1900, 9777
- Pulseaudio: Kodi is fully functional with pulseaudio installed and enabled.
- Systemd service: If you have GDM installed (and autologin enabled) you do not need any of the service script or other changes so it makes this guide much more simple. As the old saying goes: Keep It Simple Stupid.
- Thanks for the firewall-related tips. I believe the port-list that should be opened will depend on individual circumstances. For example on my standalone setup the kodi.bin process is listening on ports TCP (8080, 1147) and UDP (9777, 1900). Were I to utilize miniDLNA I would have to add TCP port 8200. Airplay can potentially require TCP (80, 443, 554, 3689, 5297, 5289) and UDP (554, 5289, 5353). Given that this is a standalone environment and making custom adjustments to the firewall as services are enabled/disabled is an advanced topic, it seems much simpler to leave the firewall disabled - with the caveats already mentioned in the wiki.
- Pulseaudio still has some deficiencies, such has lacking support for TrueHD or DTS-MA, preventing use of Dolby Pro Logic II, etc. Refer to PulseAudio for some further explanation. Actually, the only real advantage Pulseaudio offers is non-exclusive use of the audio subsystem, in cases where you'd like (for example) desktop sounds or other apps to co-exist with Kodi. Since this guide is strongly focused on creating a standalone Kodi environment, Pulseaudio makes little sense to utilize. Given its deficiencies and lack of countervailing advantages, there's no reason to utilize PulseAudio.
- Why would you want GDM to be installed? It's just an unnecessary layer of functionality that introduces complexity but offers little/no benefit. At the very least you'd then have to set up GDM-based auto-login, which is not only extra complexity but a potential security risk. The spirit of this guide is to create a standalone, lightweight installation of Kodi with minimal additional requirements. You are exactly right re: KISS, and introducing a dependency on an unnecessary software layer would seem to contravene this.
You made some earlier edits that removed the section on disabling SELinux. Kodi may have evolved to the point where it can properly function in an SELinux-Enforcing environment, but it used to have issues. I will test in an enforcing environment and update the wiki accordingly. However until I've tested it I will revert your changes to restore the SELinux section.
Thanks again for the tips!
Hope you don't mind that I added a section for CEC, it was a feature I needed and I thought it may be useful until libcec>=3.0.0 is put into the fedora repos and the rpm in rpmfusion is rebuilt.
Don't mind at all Slashnull - TYVM for the contribution, and also for maintaining the existing look-and-feel. I may reorder things a bit to avoid CEC users from doing a double install of the generic and then CEC-enabled RPMs, but that's trivial.
Hi Spazticclown - thanks for the video-group contribution. In my experience this is not actually necessary in order to run Kodi as described in this HowTo - not on any version of Fedora from F19 through to the current F23, anyway. I believe as long as the user is in group 'wheel' (which it is as a result of step 3.3), that is sufficient. Just to be sure I took a look at my main kodi box running in my livingroom, and confirmed that user Kodi is not present in group 'video' (gid 39). As such I have reverted back to before your change, but I did want to thank you again for your contribution.
It seems to me that there are two different objectives, here. As you say, this is guide, at the moment, is about setting up a minimal dedicated Kodi machine. However, some people are going to want a machine that can also be used as a more-or-less vanilla Fedora Workstation. In this situation, you’d likely want to keep firewalld, PulseAudio and GDM, and I think it’s worth mentioning this in the guide if possible. I’d welcome Mooninite’s method being written up as a separate section of the guide.
2 SELinux support, clean shutdown
I've been tweaking the startup on my Fedora/Kodi setup, and I have a simpler setup that:
- Supports shutdown/reboot etc w/o PolicyKit tweaks
- Allows for adding xrandr tweaks for "Broadcast RGB" etc
- Doesn't leave stray dbus processes
- Has X options for running w/o mouse and giving Kodi control of the screensaver
- Supported SELinux enforcing out of the box w/o any policy hacks
- Supports clean shutdown of Kodi on system shutdown/reboot
I've added this to the bottom of the page at HOW-TO:Install_Kodi_on_Fedora_26_using_RPMFusion_packages#ALTERNATIVE_Login_based_startup
3 firewalld knows about Kodi, now
Kodi 18 will include service definitions for
firewalld, which will allow the instructions for opening the firewall to be simplified slightly.
I haven't had the chance to test them yet, Mavit, but I like pretty-much all of the Alternative Startup aspects that you have added - thank you very much for investing in this Wiki. I'm especially interested to hear that Kodi v18 ships with Firewalld definitions - I've never been totally comfortable with disabling the firewall even on minimalistic installations. At this moment I do not see Kodi v18 (alpha) in the RPMFusion repositories. However as it happens I have a setup which utilizes Kodi built directly from the Master branch of the Kodi GitHub repo. So I will test your alternative setup with Kodi 18, and prepare some Wiki changes to be rolled in whenever Kodi v18 gets released and appears in RPMFusion.
I personally lean towards the approach of presenting two separate guides: This (minimalistic) approach, and a separate guide explaining how to install/configure Kodi on a more regularized workstation-based installation of Fedora. That 2nd guide would presumably be much more straightforward in that most of the audio/visual things would have already been prepared for the user's specific environment at installation time. Crosslinks to each other could be added near the beginning of each guide enabling choice, and also to HOW-TO:Install Kodi for Linux#Fedora for the sake of completeness.
However, someone else (other than me) will have to step forward to create and maintain that 2nd guide, as I do not have any non-minimalistic Fedora installations with which to develop this guide.
4 Adding Notes for CentOS
This is my first serious post on a wiki - so, if I get it wrong, just let me know what to do, nicely - happy to take down what I put up and put it somewhere else, or nowhere at all!
About 1/2 year ago I asked for write permission to suggest some notes for a CentOS set up for a few of reasons - amongst them, I use Fedora as my production OS, but I wanted this Kodi machine to also run as a server with some other stuff under VMs and I didn't want to be re-installing every year... It didn't work last time, so it's taken me a little while to get back on the horse - it hasn't worked this time either - but, this time I made detailed notes against the Wiki's numbering as I went.
So, following are my notes against the numbered steps of the How-To, I wonder if someone could help nut out why Kodi's not coming up as expected? On boot, Kodi is dead, but the service starts OK, but on starting the Kodi service there's no corresponding X started on the built in monitor.
It does occur to me that I've violated the *Notice* at the top of the page with this post - let me know.
OS GNU/Linux Kernel v 3.10.0-862.11.6.el7.x86_64 Distrobution CentOS 7 Kodi v17.4 from Nux Kodi repo Computer HP Compaq tc4400 Tablet PC with CPU Intel(R) Core(TM)2 CPU T7600 @ 2.33GHz Memory 2 x 2048 MB DDR2 SODIMM (4GB) Graphics Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller [8086:27a2] 3.1 1. Download http://mirrors.ukfast.co.uk/sites/ftp.centos.org/7.5.1804/isos/x86_64/CentOS-7-x86_64-Minimal-1804.iso 2. Written to usb stick with Fedora Media Writer gui app 3.2 3. SOFTWARE SELECTION > Minimal Install (only option on the Left Pane; no options available on the Right Pane) 4. INSTALLATION DESTINATION > ‘I will configure partitioning.’ (my intention is to run some VMs in addition to Kodi as the base install, so - while I’ve followed through to #7 - instructions at #8 might be more appropriate at some point) 80GB HD lvm /usr/local 1024 MiB /var/lib/libvirt 49.04 GiB /boot 500 MiB /var 5120 MiBCell text / 15 GiB swap 4096 MiB 5. NETWORK & HOSTNAME Set wireless network connection Set hostname to frontserver.lan 3.3 6. Done 3.4 7. Done 4 8. Done 4.1.1 9. For ‘firewallctl’ read ‘firewall-cmd’, ‘firewallctl’ is depreciated (https://github.com/firewalld/firewalld/issues/261) Zones ‘FedoraServer’ ‘FedoraWorkstation’ don’t exist in CentOS (unsurprisingly) and the default zone is ‘public’, inspecting my own Fedora 28 system I see zones ‘FedoraServer’ and ‘public’ seem identical excepting that the service ‘mdns’ is swapped for ‘cockpit’, so installing cockpit and adding the the service ‘cockpit’ to zone ‘public’: ‘sudo yum install cockpit’, ‘sudo firewall-cmd --add-service=cockpit’ and ‘mdns’ to zone ‘public’ (because it’s not included in ‘public’ on CentOS): ‘sudo firewall-cmd --add-service=mdns; and finally: sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" port port="8080" protocol="tcp" accept' 4.1.2 10. Done 4.3 11. There is no Kodi in RPMFusion for CentOS (or RHEL for that matter). Helpfully, there is the Nux repo at Coreix with Kodi. So: cd /etc/pki/rpm-gpg/ sudo wget mirrors.coreix.net/li.nux.ro/nux/RPM-GPG-KEY-nux.ro And in /etc/yum.repos.d put: [nux-kodi] name=Nux.Ro RPMs for Kodi baseurl=http://li.nux.ro/download/nux/tmp/kodi717/ http://mirrors.coreix.net/li.nux.ro/nux/tmp/kodi717/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro protect=0 [nux-kodi-pvr] name=Nux.Ro RPMs for Kodi PVR addons baseurl=http://li.nux.ro/download/nux/tmp/kodi-pvr-addons717/ http://mirrors.coreix.net/li.nux.ro/nux/tmp/kodi-pvr-addons717/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-nux.ro protect=0 12. Install EPEL: rpm -Uvh https://download.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 4.4 13. N/A 4.5 14. ‘base-x’ isn’t a package group on CentOS. So, instead, on my Fedora machine: dnf group info "base-x" Last metadata expiration check: 0:36:41 ago on Sat 22 Sep 2018 15:43:01 BST. Group: base-x Description: Local X.org display server Mandatory Packages: glx-utils mesa-dri-drivers plymouth-system-theme xorg-x11-drv-armsoc xorg-x11-drv-ati xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-intel xorg-x11-drv-libinput xorg-x11-drv-nouveau xorg-x11-drv-omap xorg-x11-drv-openchrome xorg-x11-drv-qxl xorg-x11-drv-vesa xorg-x11-drv-vmware xorg-x11-drv-wacom xorg-x11-server-Xorg xorg-x11-utils xorg-x11-xauth xorg-x11-xinit Optional Packages: Xorg-x11-drv-geode And, on my CentOS machine: yum install glx-utils mesa-dri-drivers plymouth-system-theme xorg-x11-drv-armsoc xorg-x11-drv-ati xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-intel xorg-x11-drv-libinput xorg-x11-drv-nouveau xorg-x11-drv-omap xorg-x11-drv-openchrome xorg-x11-drv-qxl xorg-x11-drv-vesa xorg-x11-drv-vmware xorg-x11-drv-wacom xorg-x11-server-Xorg xorg-x11-utils xorg-x11-xauth xorg-x11-xinit xorg-x11-drv-geode Of those, 3 packages didn’t exist: No package xorg-x11-drv-armsoc available. No package xorg-x11-drv-omap available. No package xorg-x11-drv-geode available. And, of those, only xorg-x11-drv-geode produced any info from Fedora 28 and as I don’t have AMD video hardware, I figure I don’t need to worry about that. The install from the above produced: … Installed: glx-utils.x86_64 0:8.2.0-3.el7 mesa-dri-drivers.x86_64 0:17.2.3-8.20171019.el7 plymouth-system-theme.x86_64 0:0.8.9-0.31.20140113.el7.centos xorg-x11-drv-ati.x86_64 0:7.10.0-1.el7 xorg-x11-drv-evdev.x86_64 0:2.10.5-2.1.el7 xorg-x11-drv-fbdev.x86_64 0:0.4.3-25.el7 xorg-x11-drv-intel.x86_64 0:2.99.917-27.20160929.el7 xorg-x11-drv-libinput.x86_64 0:0.25.0-2.el7 xorg-x11-drv-nouveau.x86_64 1:1.0.13-3.el7 xorg-x11-drv-openchrome.x86_64 0:0.5.0-3.el7 xorg-x11-drv-qxl.x86_64 0:0.1.5-3.el7 xorg-x11-drv-vesa.x86_64 0:2.3.2-25.1.el7 xorg-x11-drv-vmware.x86_64 0:13.2.1-1.el7 xorg-x11-drv-wacom.x86_64 0:0.34.2-5.el7 xorg-x11-server-Xorg.x86_64 0:1.19.5-5.el7 xorg-x11-utils.x86_64 0:7.5-22.el7 xorg-x11-xauth.x86_64 1:1.0.9-1.el7 xorg-x11-xinit.x86_64 0:1.3.4-2.el7 Dependency Installed: cairo.x86_64 0:1.14.8-2.el7 fontconfig.x86_64 0:2.10.95-11.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 graphite2.x86_64 0:1.3.10-1.el7_3 harfbuzz.x86_64 0:1.3.2-1.el7 libICE.x86_64 0:1.0.9-9.el7 libSM.x86_64 0:1.2.2-2.el7 libX11.x86_64 0:1.6.5-1.el7 libX11-common.noarch 0:1.6.5-1.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXcursor.x86_64 0:1.1.14-8.el7 libXdamage.x86_64 0:1.1.4-4.1.el7 libXdmcp.x86_64 0:1.1.2-6.el7 libXext.x86_64 0:1.3.3-3.el7 libXfixes.x86_64 0:5.0.3-1.el7 libXfont2.x86_64 0:2.0.1-2.el7 libXft.x86_64 0:2.3.2-2.el7 libXi.x86_64 0:1.7.9-1.el7 libXinerama.x86_64 0:1.1.3-2.1.el7 libXmu.x86_64 0:1.1.2-2.el7 libXrandr.x86_64 0:1.5.1-2.el7 libXrender.x86_64 0:0.9.10-1.el7 libXt.x86_64 0:1.1.5-3.el7 libXtst.x86_64 0:1.2.3-1.el7 libXv.x86_64 0:1.0.11-1.el7 libXvMC.x86_64 0:1.0.10-1.el7 libXxf86dga.x86_64 0:1.1.4-2.1.el7 libXxf86misc.x86_64 0:1.0.3-7.1.el7 libXxf86vm.x86_64 0:1.1.4-1.el7 libdmx.x86_64 0:1.1.3-3.el7 libepoxy.x86_64 0:1.3.1-2.el7_5 libevdev.x86_64 0:1.5.6-1.el7 libfontenc.x86_64 0:1.1.3-3.el7 libgudev1.x86_64 0:219-57.el7_5.1 libinput.x86_64 0:1.8.4-2.el7 libpng.x86_64 2:1.5.13-7.el7_2 libthai.x86_64 0:0.1.14-9.el7 libwacom.x86_64 0:0.24-4.el7 libwacom-data.noarch 0:0.24-4.el7 libwayland-client.x86_64 0:1.14.0-2.el7 libwayland-server.x86_64 0:1.14.0-2.el7 libxcb.x86_64 0:1.12-1.el7 libxkbfile.x86_64 0:1.0.9-3.el7 libxshmfence.x86_64 0:1.2-1.el7 llvm-private.x86_64 0:5.0.0-3.el7 lyx-fonts.noarch 0:2.2.3-1.el7 mesa-filesystem.x86_64 0:17.2.3-8.20171019.el7 mesa-libEGL.x86_64 0:17.2.3-8.20171019.el7 mesa-libGL.x86_64 0:17.2.3-8.20171019.el7 mesa-libgbm.x86_64 0:17.2.3-8.20171019.el7 mesa-libglapi.x86_64 0:17.2.3-8.20171019.el7 mesa-libxatracker.x86_64 0:17.2.3-8.20171019.el7 mtdev.x86_64 0:1.1.5-5.el7 pango.x86_64 0:1.40.4-1.el7 pixman.x86_64 0:0.34.0-1.el7 plymouth-graphics-libs.x86_64 0:0.8.9-0.31.20140113.el7.centos plymouth-plugin-label.x86_64 0:0.8.9-0.31.20140113.el7.centos plymouth-plugin-two-step.x86_64 0:0.8.9-0.31.20140113.el7.centos plymouth-theme-charge.x86_64 0:0.8.9-0.31.20140113.el7.centos xcb-util.x86_64 0:0.4.0-2.el7 xkeyboard-config.noarch 0:2.20-1.el7 xorg-x11-server-common.x86_64 0:1.19.5-5.el7 xorg-x11-server-utils.x86_64 0:7.7-20.el7 xorg-x11-xkb-utils.x86_64 0:7.7-12.el7 Complete! 4.6 15. N/A 4.7 16. Done 5.1 17. The first attempt at ‘sudo yum install kodi’ produced: … --> Finished Dependency Resolution Error: Package: kodi-17.4-1.el7.nux.x86_64 (nux-kodi) Requires: libcrossguid.so.0()(64bit) Error: Package: kodi-17.4-1.el7.nux.x86_64 (nux-kodi) Requires: shairplay-libs(x86-64) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest 18. The answer is: sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm 6.1 19. Done 6.2 20. Done 6.3 21. Done 6.4 22. Done 6.5 23. Done 6.6 24. Done 6.7 25. N/A 7 26. But it fails: [[email protected] ~]$ ssh [email protected] [email protected]'s password: Last failed login: Sat Sep 22 22:54:45 BST 2018 from morgansmachine.lan on ssh:notty There were 2 failed login attempts since the last successful login. Last login: Sat Sep 22 22:51:39 2018 from morgansmachine.lan [[email protected] ~]$ sudo systemctl status kodi [sudo] password for kodi: ● kodi.service - kodi-standalone using xinit Loaded: loaded (/etc/systemd/system/kodi.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Sat 2018-09-22 22:54:15 BST; 48s ago Process: 749 ExecStart=/usr/bin/xinit /usr/bin/dbus-launch /usr/bin/kodi-standalone -- :0 -nolisten tcp (code=exited, status=1/FAILURE) Main PID: 749 (code=exited, status=1/FAILURE) Sep 22 22:54:00 frontserver.lan systemd: Started kodi-standalone using xinit. Sep 22 22:54:00 frontserver.lan systemd: Starting kodi-standalone using xinit... Sep 22 22:54:15 frontserver.lan systemd: kodi.service: main process exited, code=exited, status=1/FAILURE Sep 22 22:54:15 frontserver.lan systemd: Unit kodi.service entered failed state. Sep 22 22:54:15 frontserver.lan systemd: kodi.service failed. [[email protected] ~]$ sudo systemctl start kodi [[email protected] ~]$ sudo systemctl status kodi ● kodi.service - kodi-standalone using xinit Loaded: loaded (/etc/systemd/system/kodi.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2018-09-22 22:59:46 BST; 4s ago Main PID: 1670 (xinit) CGroup: /system.slice/kodi.service ‣ 1670 /usr/bin/xinit /usr/bin/dbus-launch /usr/bin/kodi-standalone -- :0 -nolisten tcp Sep 22 22:59:46 frontserver.lan systemd: Started kodi-standalone using xinit. Sep 22 22:59:46 frontserver.lan systemd: Starting kodi-standalone using xinit... [[email protected] ~]$