Raspbian raspberry pi kodi

HOW-TO:Install Kodi on Raspberry Pi

Raspberry Pi HOW-TO:Install Kodi on Raspberry Pi

The basic hardware you will need is

  • the R-Pi board itself
  • a power supply (Micro-USB, 5V, upto 2500 mA)
  • a (micro)SDHC memory card to install the software. (Because video decoding is more resource-intensive than many other operations, it may be more important to have a fast/high quality memory card for Kodi than for other uses.)


1 Basic options

Advanced / can be used with Kodi

  • Arch Linux ARM —RPi4 • RPi3 • RPi2 • RPi1

Note that Arch ARM provides different Kodi packages optimized for different RPi models. All builds feature popcornmix’s gbm_matrix branch of Kodi and offer some flavor of HW accelerated decoding just like LibreELEC. kodi-rpi for RPi 3/4/400 kodi-rpi-legacy for RPi 2 (popcornmix’s gbm_matrix branch)

  • Batocera Linux —Learn More
  • Buildroot — For experienced users only !
  • CarPC —Guide
  • Raspberry Pi OS — Up-to-date versions (Currently Leia 18.7) of Kodi are now on the default Raspbian repositories. See full guide here.
  • Recalbox —Installing

2 Specific install guides

For installs that don’t directly include and/or boot into Kodi automatically.

2.1 Raspberry Pi OS

Editor note: We need to expand on this section, but here are the basic commands if you are familiar with the command-line:

(Current Version — 18.7)

PVR Addons

  • PVR Addons can be installed directly from the command line:

but replace PACKAGENAMEHERE with the PVR addon required.

The PVR client add-on should now be installed. If Kodi was already running, restart it to load the add-on.

2.2 RetroPie

3 Compiling Kodi

Notes for advanced users who wish to try and build Kodi from source code.


Raspberry Pi

Devices Raspberry Pi
These pages are maintained by the community and should not be considered an endorsement or recommendation. Device pages are made when there’s a bunch of useful information for a particular device, and someone takes the time to make that page. Keep in mind, some devices simply don’t need a page of specific information, but are still excellent devices. *

For more info and help, check out the Kodi Raspberry Pi support forum

The Raspberry Pi, Raspberry Pi 2/3 and Raspberry Pi Zero are a series of ARM-powered, credit card-sized single-board computers (developer boards) made in the UK by the non-profit Raspberry Pi Foundation organization for educational and hobbyist purposes. These low power computers are mass produced at very low prices and the high number of units sold gives it massive community support. As Kodi HTPC, all Raspberry Pis support full 1080p (Full HD) video playback of the most commonly used codecs, most if not all Kodi add-ons, and have reasonably responsive GUI performance.


1 Installing Kodi

Advanced / can be used with Kodi

  • Arch Linux ARM —RPi4 • RPi3 • RPi2 • RPi1

Note that Arch ARM provides different Kodi packages optimized for different RPi models. All builds feature popcornmix’s gbm_matrix branch of Kodi and offer some flavor of HW accelerated decoding just like LibreELEC. kodi-rpi for RPi 3/4/400 kodi-rpi-legacy for RPi 2 (popcornmix’s gbm_matrix branch)

  • Batocera Linux —Learn More
  • Buildroot — For experienced users only !
  • CarPC —Guide
  • Raspberry Pi OS — Up-to-date versions (Currently Leia 18.7) of Kodi are now on the default Raspbian repositories. See full guide here.
  • Recalbox —Installing

2 Maximizing performance

Note: Some of these tweaks are more aimed at the Pi 1 CPUs (A, B, A+, B+, Compute Module, Zero) as they only have a slow single-core CPU. Raspberry Pi 2/3 probably doesn’t need some of these tweaks to run Kodi really well, but it also won’t hurt anything, if you really want to push things to their limit.

  • Avoid «heavy» skins and lots of «service» type add-ons that run in the background.
  • Turn off RSS feeds and any scrolling text options for your skin. Depending on the skin/text, this can really boost a Pi 1, sometimes even a Pi 2/3.
  • Use an SD card with good rewrite speeds. The class of the SD card doesn’t always mean it will be better, as that speed classification is for sustained reading and writing, whereas for Kodi, random read/write speeds are more important.
  • Raspberry Pi only supports SDHC cards, apart from a few exceptions where the cards are marked as SDXL but maintain SDHC compatibility.
  • The class 6/8 Samsung SD cards sold on the Raspberry Pi Store (the ones with NOOBS on them) typically have much better performance than many class 10 cards.
  • Samsung «EVO» SD/mSD cards also have very excellent read/write speed for their price.
  • For more information about SD card speeds, read this excellent thread on the R-Pi forum.
  • You can also try a combination of SD and fast USB drive for your Kodi install, but with the recent software improvements even just using a good SD card is about as fast as using a fast USB drive.
  • Avoid using wifi. If you do use wifi, use a wifi adapter that contains two antennae (internal or external) that advertises «300 Mbps». Otherwise, stick to wired ethernet, local USB drives, or ethernet-over-power devices (like Homeplug).
  • If you are using wifi and it seems just on the edge of being fast enough, check out HOW-TO:Modify the video cache.
  • Try using NFS file shares instead of SMB file shares.
  • Try mounting network shares through OS rather than Kodi. This allows more tweaking of filesystem options, like chosing UDP and larger block sizes.
  • Overclock. Most Pi’s can handle a significant overclock, as long as they have a good power supply. There is no universal setting that will work for everyone (except for the default speed that you get without overclocking). Try various overclocking settings and run Kodi for a while to see if it’s stable. If one group of overclocking settings causes crashes, try a group of lower settings.

Note: Overclocking is pretty important for the Raspberry Pi 1 (A, B, A+, B+) and Zero, but much less so on the Pi 2/3 due to the multiple CPU cores as well as increased speed per core. You can still overclock the Pi 2 if you really want to, but for most users it makes little difference.

  • By default, «Extract thumbnails from video files» (in Media Video Settings) is disabled on the Pi, improving browsing performance.
  • For smoother video playback, enable «Adjust display refresh rate» in |playback settings
  • When using dvdplayer, «Sync playback to display» for sync method are recommended; see playback settings.
  • Make sure the video is using H.264 (up to High Profile — Hi10P will not work), or MPEG-4, or, if additional codecs have been enabled, MPEG-2 or VC-1.
  • Passthrough is recommended as it lowers CPU usage for DTS and AC3. Use audio passthrough if your TV/receiver supports it.
  • To determine which audio passthrough formats your HDMI-connected TV supports, you can log in via SSH and run this command: /opt/vc/bin/tvservice a (on LibreELEC: tvservice -a ).
  • Feeling adventurous? Check out the latest LibreELEC test builds, which often have even more speed improvements. Just remember that these builds can often be unstable!
  • For locally connected drives containing videos and music, the filesystem can have an impact on read and write speeds. NTFS for example tends to be much slower on any Linux-based system than the more native ext2, ext3, etc.
  • If you use MySQL, you will want to make sure that your images are pre-cached using the Texture Cache Maintenance utility tool. Local libraries typically don’t need this as their images are cached when videos are scanned in. Using MySQL can improve performance as the database queries are handled by another machine.
  • Organizing your movies in single folders for each movie, rather than all movies in one folder, is recommended. The individual folders reduce the time it takes for Kodi to look for supporting media like external subtitles, which makes browsing, scanning and starting playback a little faster. You might also want to consider pre-scraping the meta data using a Library manager to reduce the time it takes to scan in both movies and TV shows.
  • For Raspberry Pi units with only 256MB of RAM, see this thread.

3 Remote controls

4 Further reading

5 Random notes

Feel free to place various notes, tips, and links here. As this section of the wiki gets more organized, those notes will be properly sorted. Consider this like a dumping ground for when you’re not sure where to put something.


О том, как я переизобретал медиацентр

С приобретением нового телевизора возник вопрос, какую приставку для него брать. Возможностей Chromecast уже не хватало и хотелось полноценный медиацентр на Kodi. Телевизор со SmartTV покупать не вариант — Kodi можно установить только на Android (из SmartTV платформ), а к нему я отношусь без особой любви, к тому же он уже внутри телевизора, а не в отдельной коробке, которую можно безбоязненно перепрошивать. Ну а зачем мне полноразмерный Android, со всеми его сервисами и программами в виртуальной машине, без полноценного GNU/Linux окружения и, скорее всего, без обновлений? По той же причине также были отметены многочисленные готовые медиацентры на Android, хотя та же приставка от Xiaomi довольно хороша. Можно было бы подумать насчёт SmartTV на TizenOS, но для него нет Kodi.

С такими требованиями, и при том, что это мой первый одноплатный компьютер, очевиден выбор — Raspberry Pi, а конкретно я взял RPi 3 model B.

Установка и предварительная настройка Raspbian

Как пользователь Debian, я сразу же установил Raspbian и начал играться с новой системой. Записать скачанный образ системы можно с помощью программы Etcher, либо из консоли:

Сначала очищаем содержимое карты, всё заполнив нулями…

затем записываем образ…

Запустив малинку с Raspbian установить Kodi очень просто — командой

Чтобы медиацентр запускался при включении малинки необходимо добавить в файл /home/pi/.config/lxsession/LXDE-pi/autostart строку

Несмотря на всю прелесть Raspberry Pi, у него есть один важный недостаток: при внезапном отключении питания есть вероятность того, что на SD карту успеет перезаписаться только часть данных, а потому карты памяти долго не живут и, в среднем, через год выходят из строя. На рынке существуют решения, которые решают эту проблему с помощью источника дополнительной энергии (например, конденсатора). Также SD карты имеют ограниченное количество циклов перезаписи и важно уменьшить количество этих самых перезаписей, чтобы карта памяти прослужила дольше.

Удаление нежелательных программ

Удалил dphys-swapfile, чтобы с концами удалить своп-файл, который расходует ресурс карты памяти, а также удалил разные игрушки и совсем лишние программы, по крайней мере, для меня.

Замена менеджера логов

Также я сменил сервис для записи логов:

Теперь логи записываются в кольцевой буфер, расположенный в ОЗУ, смотреть их можно командой logread

Увеличение надёжности при отключении питания

Самый логичный шаг — сделать раздел с системой доступным только для чтения, и тогда по определению не будет проблем при записи, ведь записи не будет. Но Raspbian — это полноценная система, которая не может работать на разделе, на котором полностью запрещена запись. Как минимум, необходимо вынести /var/log, /var/tmp и /tmp в tmpfs, т. е. хранить содержимое этих папок в ОЗУ. Но для практического использования необходимо внести значительно больше изменений.

Я решил сделать по-другому: создать многослойную файловую систему, где основу, хранящуюся на карте памяти, держать как read-only, а все изменения, которые производятся в системе, сохранять в оперативной памяти. Соответственно, все изменения сбрасываются при отключении питания и никому не вредят. Подход не новый, часто применяется в роутерах, например, а с помощью overlayfs очень легко реализуется.

На гиктаймс уже публиковалась ссылка на аналогичное решение с использованием UnionFS, но с момента его публикации в ядро линукс была добавлена поддержка файловой системы OverlayFS, разработанной компанией SUSE в качестве более прогрессивной замены UnionFS и AUFS, поэтому и настраивается всё это немного по-другому.

Я нашёл скрипт, который делает именно то, что я задумал: раздел системы на карте памяти монтирует в режиме только чтение, а все изменения сохраняются в верхнем слое, располагаемом в ОЗУ. К слову, этот скрипт поддерживает и AUFS.

Установка довольно проста:

Создаём файл root-ro в папке /etc/initramfs-tools/scripts/init-bottom/, в который кладём содержимое скрипта

Изменяем права доступа к скрипту:

Добавляем overlay в список модулей, которые будут подгружаться в initramfs

Пересоздаём initramfs образ:

Осталось добавить параметр root-ro-driver=overlay в загрузчик, в файл /boot/cmdline.txt

  • И ещё 3 строки в конфигурацию загрузчика по адресу /boot/config.txt:
  • Отключить режим только чтения, кстати, можно либо добавлением disable-root-ro=true в /boot/cmdline.txt, либо созданием файла disable-root-ro в корне файловой системы.

    В Debian (соответсвенно, и в Raspbian) существует пакет bilibop-lockfs, который делает примерно то же, что и этот скрипт. Однако, несмотря на то, что bilibop доступен для установки, он предназначен для работы совместно с GRUB, а не используемого в Raspbian загрузчика. В x86 версии Raspbian он корректно работает. Возможно, читатели смогут его пропатчить и для Raspberry Pi.

    Защита от переполнения файловой системы в памяти

    Для tmpfs по-умолчанию отводится половина объёма ОЗУ, и так как как память ограничена, то когда-то изменения корневой файловой системы достигнут предела. Очистить её можно простой перезагрузкой системы, для этого в /etc/crontab добавляем строку:

    и перезапускаем cron

    это позволит отреагировать на проблему в течение одной минуты.

    Корни отдельно, хомяки отдельно

    Использовал какое-то время такую конфигурацию, но надоело терять настройки и плагины в Kodi, а заранее всё не настроить, и решил я корневую систему оставить в режиме только чтения, а домашнюю папку хранить как есть, всё таки в ней производится не так много изменений.

    Естественно, тогда и раздел должен быть под F2FS — оптимизированной для SSD и прочих flash накопителей файловой системе. Как уже сказано, у карт памяти есть две беды: вероятность потерять часть данных при записи и относительно малое количество поддерживаемых перезаписей ячейки. F2FS относится к файловым системам, которые используют концепцию копирования при записи (Copy-On-Write), то есть новые данные не перезаписываются в те же ячейки, а записываются в новое место, и только если операция завершена успешно, ссылка на старую область носителя удаляется.

    Для работы с F2FS необходимо установить пакет f2fs-tools как в нашей raspberry pi, так и в системе, с помощью которой производится создание нового раздела. Для Debian-like (в том числе, Raspbian) необходимо выполнить команду

    Отрезал половину с помощью GParted, создал F2FS раздел и заодно дал метку home, чтобы удобнее обращаться к разделу.

    После этого внёс изменения в /etc/fstab, добавив строку

    Всё хорошо, но как теперь ставить обновления?

    Это я тоже продумал, вспомнив о проекте Ubuntu Core Snappy. В нём предусмотрено существование 2-х разделов, доступных на чтение всем остальным. Обновление системы атомарно записывается на неактивный раздел и производится перезагрузка системы, уже используя обновлённый раздел. Эти два раздела System-a/b также позволяют производить механизм отката на рабочую версию в случае проблем в обновлении.

    Аналогично сделал и я, разбив системный раздел на 2 равных раздела. Предварительно, конечно, скопировав данные с карты памяти на компьютер. Для этого удобно использовать утилиту копирования файлов rsync. Например:

    Разобьем вышеупомянутую команду и посмотрим, что делает каждый аргумент.

    • -aAXv – Файлы передаются в режиме «архив», который гарантирует, что символические ссылки, устройство, разрешение, владение, время изменения, списки контроля доступа, а также расширенные атрибуты сохраняются.
    • —exclude – Исключает данные каталоги из резервной копии.
    • /media/user/folder – Исходный каталог.
    • /home/user/backup_raspbian – Это папка назначения резервной копии.

    Итого я получил 4 раздела, где первый содержит загрузчик, два следующих — идентичные по размеру и содержат копию файловой системы (для удобства я их назвал root1fs и root2fs соответственно), и в последнем разделе — пользовательские данные.

    Осталось обратно скопировать резервную копию с компьютера на оба раздела карты памяти и прописать изменения в fstab и загрузчике.

    В разделе root1fs в файле /etc/fstab в строке, в которой монтируется корень меняем строку на

    а в разделе root2fs соответственно на root2fs

    Осталось внести изменения в /boot/cmdline.txt
    Надо там найти параметр root=PARTUUID=… и заменить на root=LABEL=root1fs или root=LABEL=root2fs , от этого будет зависеть, с какого раздела производится загрузка.

    Приготовления окончены, теперь можно провести первое обновление системы.
    На компьютере, где мы сохранили бэкап, нужно установить пакеты proot и qemu-system. Для Debian-like:

    Теперь можем сделать чрут в сохранённый бэкап.

    и внести нужные изменения. Например, то самое обновление, которое я выше предложил провести.

    после загрузки и установки обновлений выходим из чрута командой exit и можем синхронизировать с картой памяти:

    Заметьте, к уже упомянутой команде rsync я добавил исключение синхронизации /etc/fstab, так как этот файл уже настроен на каждом разделе отдельно.

    В данном случае изменения синхронизируются со вторым разделом (root2fs). Выбирая активный раздел в /boot/cmdline.txt есть возможность загрузиться как с исходной версии системы, так и с обновлённой.

    И было интересно поиграться с подобной синхронизацией, как и синхронизацией по сети с рабочей малинкой, однако необходимость управления с отдельного устройства неудобна. Будь у меня стойка из миникомпьютеров, или если бы предлагал использовать мой дистрибутив — конечно, подобные недоатомарные обновления были бы очень удобны, но в масштабах одного устройства нет смысла. И начал я уже думать о том, чтобы в автоматическом режиме скрипт производил обновления, либо чтобы некий скрипт даже прямо из Raspbian чрутился ко второму разделу и обновлял его, а затем менял загрузочный раздел, но прежде я решил ещё раз изучить существующие дистрибутивы, предназначенные для развёртывания медиацентра на Kodi. И вдруг…

    Счастье с XBian

    Не знаю, как я раньше проходил мимо XBian, но это именно то, что мне нужно. В отличии от других дистрибутивов с Kodi, представляющих собой вариации количества изначально установленного ПО, именно в XBian применены множество оптимизаций специально для работы в качестве медиацентра. В XBian релизовано то, к чему я стремился, только лучше продуманно.

    XBian основан на Debian, и, как и Debian, использует роллинг-релизы, потому пакеты всегда в актуальном состоянии. Более того — можно обновляться на тестовую ветку и возвращаться обратно на стабильную.

    Система находится на разделе с файловой системой Btrfs, которая, как и F2FS, использует механизм копирования при записи, но также поддерживает создание снапшотов, и в меню XBian есть удобные утилиты для управлениями снапшотами и настройки для автоматического создания снапшотов. Если всё таки какой-то файл будет повреждён, Btrfs мгновенно переведёт систему в режим только чтения, чтобы не допустить дальнейших повреждений системы, и предоставит средства для восстановления и отката на рабочую версию. Я считаю, Btrfs — это идеальный выбор для системного раздела в данном случае, а F2FS решил использовать на флешке с файлами, подключенной к Raspberry Pi. На флешке снапшоты мне не нужны, а вот данные в F2FS записываются строго последовательно, в отличии от Btrfs, не заботясь о фрагментации, что обеспечивает более равномерную нагрузку на ячейки.

    В XBian сервисы настроены на минимальное количество производимой записи на microSD, потому отсутствием Read-Only раздела можно пренебречь. В конце концов, мне магазин дал 10 лет гарантии на карту памяти, если что — поменяю.

    Единственный недостаток для меня — XBian в качестве системы инициализации использует upstart. Принято ругать systemd, да я и сам в шутку ругаю, но мне с ним гораздо удобнее. Но об этом можно не волноваться: upstart с 2014 года не развивается, однажды разработчикам придётся менять систему инициализации.

    Потом я нашёл замечательный плагин для Kodi под названием Quasar, о котором хочу отдельно рассказать. Он позволяет выбрать из различных топов, либо найти желаемый фильм или сериал и начать смотреть его, используя технологию torrent, а после просмотра плагин предложит сохранить этот фильм или сериал в библиотеку. Причем можно сохранить как загруженный файл, так и ссылку на него — тогда при нажатии на произведение начнётся загрузка с торрентов.

    Quasar Burst — это дополнение для Quasar, в котором находятся настройки того, какие торрент-трекеры использовать для поиска контента. В нём уже присутствуют популярные русские торрент-трекеры, например, rutor и rutracker, поэтому Quasar абсолютно подходит русскоязычным пользователям.

    UP: В комментариях порекомендовали Elementum — форк переставшего развиваться Quasar. Рекомендую его попробовать.

    Обход блокировок

    Однако, всё не так хорошо, как хотелось бы. Как известно, роскомнадзор требует от провайдеров блокировки кучи сайтов, в роде рецепта крафта динамита в майнкрафте или торрент-трекеров, и если для обхода блокировки на десктопе достаточно установки одного из дополнений для браузера, то для медиацентра это не так просто.

    Если весь трафик отправлять через Tor, VPN или прокси, то это скажется на скорости загрузки. Особенно в случае с Tor. Потому необходимо обходить блокировку только заблокированных адресов, а подключаться к другим пользователям torrent напрямую.

    Можно найти различные варианты обхода, различной степени надёжности и сложности, я выбрал использование VPN, причём не для всего трафика, а для специально указанного списка адресов.

    Можно использовать свой VPN сервер, где-то приобрести, или воспользоваться сервисом antizapret.prostovpn.org. Вроде как при установке этого VPN трафик до сайтов должен идти напрямую, если этот сайт не находится в списке заблокированных, но у меня на Raspberry Pi почему-то весь трафик шел в обход VPN, потому я принудительно указал, для каких адресов его использовать, о чём чуть позже.

    Команда для установки OpenVPN:

    Затем необходимо добавить модуль ядра tun в автозагрузку при запуске системы для того, чтобы обеспечить работу OpenVPN

    и в первый раз вручную его загрузить

    В случае с использованием VPN от antizapret, я скачал хранящийся там файл antizapret.ovpn, сохранил как файл /etc/openvpn/client.conf и добавил нужные мне адреса, которые должны передаваться через VPN

    важно, чтобы в конфигурации не было строки, начинающейся с redirect-gateway , иначе весь трафик будет идти через VPN.

    В файле /etc/default/openvpn производится настройка, какие конфигурации будут по-умолчанию запускаться при запуске OpenVPN. Достаточно раскомментировать AUTOSTART=»all» , либо вместо all указать client, то есть созданную нами конфигурацию.

    и добавление в автостарт:

    Также, для обхода блокировки служебных трекеров .t-ru.org выполнил команду в консоли и добавил в /etc/rc.local* перед `exit для автовыполнения команды при загрузке:

    Казалось бы, всё? Но нет. Мой провайдер оказался хитрым, потому мои DNS запросы, адресованные в гугл на адрес, перехватываются и изменяются, если я запрашиваю IP адрес заблокированного ресурса. Вот, что мне nslookup выдаёт:

    Что-ж, давно было пора перейти на DNSCrypt. Эта утилита, соединяется с DNS сервером по зашифрованному каналу, поэтому провайдер, или другой MitM не сможет прослушать, подменить или отфильтровать пакеты. Установил DNSCrypt на роутере, запустил и теперь всё шикарно.

    Как итог, я получил замечательный медиацентр, с огромным количеством доступного контента, который основан на лучших (по крайней мере, по моей оценке) технологиях, а использование Raspberry Pi открывает огромные возможности по кастомизации. Можно установить инфракрасный приёмник, чтобы управлять медиацентром с помощью пульта даже при подключении к телевизору, который не поддерживает HDMI-CEC, или играть в старые игры, подключив джойстик, а можно вовсе преобразовать из медиацентра в другое устройство.