From 太極
Jump to navigation Jump to search

Install on Raspberry Pi OS

sudo apt-get update
sudo apt-get install kodi

When it is launched, it will ask if we want to enable "version check" add-on. We can enable it. If we want to change mind, we need to go to Kodi -> Add-on -> Box icon on top-left corner. Install from repository -> Services and select "Version Check".

Some tips

  • When I use "htop" from another machine to check the memory usage when I watch pluto.tv, it uses 580MB.
  • Inputstream adaptive missing? sudo apt-get install kodi-inputstream-adaptive It works on my Kodi 19.
  • If I hit 'ESC' key, it will bring up a Kodi menu and put the video playing in the background. To go back to the video, hit the tab key. See Best Kodi Keyboard Shortcuts You Should Know in 2020.

Install to USB

  • On RPI 3B+, I can directly install Kodi/LibreElec to USB and boot from it.
  • On RPI 3B, it's a 2-step process.
    • The OS contains 2 partitions. One is fat32 and the other is ext4. For LibreElec case, the fat32 partition took only 511.7M.
    • I first install the Kodi/LibreElec to SD card. Then move the rootfs/STORAGE partition (ext4) from SD card to USB drive. I also need to open cmdline.txt file from the fat32 partition and modify the 2nd UUID (like, ab60c86b-b9bd-4048-ab59-2f570bce4662, below obtained by using the blkid command) to match it with my USB drive.
    boot=UUID=0603-1735 disk=UUID=ab60c86b-b9bd-4048-ab59-2f570bce4662 quiet

    As we can see below, the original /STORAGE partition from SD card (/dev/mmcblk0p2 or /var/media/STORAGE) is empty. And the new STORAGE partition is on the USB drive (/dev/sda1).

    LibreELEC:~ # df -h
    Filesystem                Size      Used Available Use% Mounted on
    devtmpfs                330.5M      4.0K    330.5M   0% /dev
    tmpfs                   184.4M      9.3M    175.2M   5% /run
    /dev/mmcblk0p1          511.7M    124.9M    386.9M  24% /flash
    /dev/loop0              110.0M    110.0M         0 100% /
    /dev/sda1                28.3G      1.3G     25.6G   5% /storage
    tmpfs                   461.0M         0    461.0M   0% /dev/shm
    tmpfs                     4.0M         0      4.0M   0% /sys/fs/cgroup
    tmpfs                   461.0M      2.3M    458.8M   0% /var
    tmpfs                   461.0M         0    461.0M   0% /tmp
    /dev/mmcblk0p2           27.4G    398.0K     27.4G   0% /var/media/STORAGE
    LibreELEC:~ # du -sh /var/media/STORAGE
    1.0K	/var/media/STORAGE

Install using PPA on Ubuntu

If we want to install it directly, Kodi is available in the universe repository of Ubuntu. Also Ubuntu 20.04 still has Kodi 18.6 (maybe useful for some old addons using python2).


sudo apt-get install software-properties-common
sudo add-apt-repository ppa:team-xbmc/ppa
sudo apt-get update
sudo apt-get install kodi



docker run --name=kodi-headless \
  -v <path to data>:/config/.kodi \
  -e PGID=1000 -e PUID=1000 \
  -p 8080:8080 \
  -p 9090:9090 \
  -p 9777:9777/udp \

The username/password is kodi/kodi



# ssh [email protected]
# vcgencmd measure_temp

# cat /etc/os-release

PRETTY_NAME="LibreELEC (official): 10.0.2"

LibreELEC:~ # ls /flash
SYSTEM                    bcm2710-rpi-3-b-plus.dtb  cmdline.txt
SYSTEM.md5                bcm2710-rpi-3-b.dtb       config.txt
bcm2708-rpi-b-plus.dtb    bcm2710-rpi-cm3.dtb       distroconfig.txt
bcm2708-rpi-b-rev1.dtb    bcm2710-rpi-zero-2-w.dtb  fixup.dat
bcm2708-rpi-b.dtb         bcm2710-rpi-zero-2.dtb    kernel.img
bcm2708-rpi-cm.dtb        bcm2711-rpi-4-b.dtb       kernel.img.md5
bcm2708-rpi-zero-w.dtb    bcm2711-rpi-400.dtb       overlays
bcm2708-rpi-zero.dtb      bcm2711-rpi-cm4.dtb       start.elf
bcm2709-rpi-2-b.dtb       bcm2711-rpi-cm4s.dtb
bcm2710-rpi-2-b.dtb       bootcode.bin



Install CLI in Ubuntu/debian

sudo apt update
sudo apt install openvpn dialog python3-pip python3-setuptools
sudo pip3 install protonvpn-cli

Setup ProtonVPN

sudo protonvpn init
# Enter username/password
# Choose UDP
# done!

Disable IPV6. sudo nano /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1 
net.ipv6.conf.default.disable_ipv6 = 1 
net.ipv6.conf.lo.disable_ipv6 = 1 
net.ipv6.conf.tun0.disable_ipv6 = 1

sudo sysctl -p

Connect to ProtonVPN

sudo protonvpn connect
# Select a server location
# Select UDP for fast speeds

Run curl ifconfig.me to confirm the new IP.

To disconnect from VPN

sudo protonvpn disconnect



The 12 Best Kodi skins for 2023 and how to install them

Chinese font

Settings - Interface - Skin - Fonts - Change to Arial from default.

Data location

Kodi data folder

Configuration file




Mount Network Share


Stream video to browser, phone

Internet video and audio streams

Kodi wiki. I can create an .strm file (supports http, mms and rtsp protocols) and include my motionEye camera http://IP:8081 URL. It works.

Remote controller and CEC

  • Kodi wiki
    • CEC. Kodi comes with libCEC (CEC abstraction and interface library from Pulse-Eight) which allows control of the Kodi input over the standard TV remote that comes with your TV.
    • Remote controls
  • If your TV and media center both support HDMI-CEC (the CEC stands for Consumer Electronics Control), you'll be able to use the TV remote to control Kodi. How to Set Up a Kodi Remote Control

Web interface/remote control via HTTP



How to set up a Kodi UPnP server

How to set up a Kodi UPnP server

Resume video playback

Kodi builds


Use Kodi to stream files available from server (http, https, smb, nfs, ...). Not related to TV.

  • You don't need JELLYFIN, EMBY, OR PLEX (so no need a browser to access videos)
  • tvheadend server should be installed in Linux. On Kodi, we need to install Tvheadend HTSP client add-on from the 'PVR clients' addon category.


TV Guide

  • https://www.tvtv.us/ Local over the air
  • Electronic Program Guide; TV Guide (it is a problem with tvheadend, not Kodi)
  • Tvheadend EPG guide from hdhomerun.
    • Generate an XMLTV-Compliant File from HDHomeRun:
      • First, you’ll need to create an XMLTV-compliant file using a Python script that fetches data from your HDHomeRun device.
      • Download the script named hdhomerun.py from this link and rename it to hdhomerun.py.
      • Run the script on your system (e.g., via SSH) to generate an hdhomerun.xml file. This file contains EPG data from your HDHomeRun device
    • Configure TVHeadend:
      • Open the TVHeadend web interface (usually accessible at http://<TVHeadend_IP>:9981/).
      • Navigate to Configuration > General > Image Cache and enable it (to cache channel icons locally).
      • In Configuration > Channel/EPG > EPG Grabber, ensure that “Update channel icon” is checked.
      • Enable the Internal XMLTV EPG Grabber module.
      • Set your channels to map correctly (auto-mapping by channel number might not work consistently).
      • Re-run the internal EPG grabbers to fetch EPG content
    • Configure Kodi:
      • In Kodi, go to Settings > PVR & Live TV and clear the data.
      • Force a refresh of the guide content and channel icons in Kodi.
      • Now your TV guide should display icons and EPG data from HDHomeRun!



https://forum.libreelec.tv/thread/1265-rsync/ It's in the LibreELEC Add-ons -> Program add-ons -> Network-tools, bundled with a few other bits and bobs.



  • It is in the Program add-on -> System tools. See here.
  • As I can see from htop, streaming from YT does not use much CPU nor Memory in raspberry pi (hardware accelerated decoding). See also Settings/Player/Videos in Kodi wiki.
    • CPU is 3-10% for each core.
    • Memory usage is increased from 280MB to 330MB.


  • https://kodi.wiki/view/Add-on:YouTube,
    • Latest release. On my Kodi/LibreElec 19.2 Matrix, the youtube addon is 6.8.x and youtube playback failed suddenly for some reason. However, once I download the latest zip file ( and install the addon via this zip file, youtube works again. sftp [email protected] (libreelec). The home folder for root is /storage. Note that installation via zip file will not be able to get an update.
    • Configure the API on Github page.


  • youtube.com/activate and google.com/device go to the same place.
  • The "project name" should not contain any space or use the project ID (check the URL to find the ID),
  • It is pain to enter the credentials API key, client ID & client Secret in Kodi. We can also create a json file (~/.kodi/userdata/addon_data/plugin.video.youtube/api_keys.json); see the Github page. It's a good idea to save the file for future use if we want to re-installl Youtube addon on Kodi. NOTE: On Raspbian Lite ~/.kodi is a soft link to /opt/retropie/configs/ports/kodi for the Kodi installed. So we essentially need to back up the corresponding file from there.
  • You have to enter the authorization codes two times. On the 2nd time, I will get an error 403 - access denied. The trick is to add a test user and click the button of "publish the app" on OAuth page (not sure if both are needed). At the 2nd time verification, we won't see the 403 error. But we need to go to "Advanced" and click the "Allow" button.
  • Some instruction based on an old version of addon How to install the YouTube Kodi addon 2017
  • The Youtube addon does not provide much more information about videos (eg how popular a video). So it is better to use the 'cast' function to send videos from Android or PC's browsers to Kodi. See Web interface/remote control via HTTP.



Clear cache



How to Install Kodi Plex Addon & Use Plex Media Server (2021)


What else can I do with Kodi, apart from streaming?



  • SMB from Kodi wiki. SMB v2 or higher must be used1. Note that SMB v1 is not supported in Kodi.
    • Method 1. To add a share using this method, select Windows Network (SMB) from the Browse for new shares list, then browse to the required Source folder.
    • Method 2. Add Network Location.
  • LibreELEC
  • How to access network storage in Kodi with step-by-step screenshots.


Web browser