<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kambala</id>
	<title>Official Kodi Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://kodi.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kambala"/>
	<link rel="alternate" type="text/html" href="https://kodi.wiki/view/Special:Contributions/Kambala"/>
	<updated>2026-06-27T01:08:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://kodi.wiki/index.php?title=Userdata&amp;diff=249592</id>
		<title>Userdata</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Userdata&amp;diff=249592"/>
		<updated>2024-01-20T07:40:14Z</updated>

		<summary type="html">&lt;p&gt;Kambala: fix name of macOS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Settings]]|[[Kodi data folder]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
The Userdata folder is a subfolder of the &#039;&#039;&#039;[[Kodi data folder|Kodi Data Folder]]&#039;&#039;&#039;. The folders and files described on this page may vary between releases and forks.&lt;br /&gt;
&lt;br /&gt;
This Userdata folder is used for the &#039;&#039;&#039;Master&#039;&#039;&#039; (default) profile. When creating a new profile, the userdata folder for the new profile is stored in the Profiles folder detailed below.&lt;br /&gt;
&lt;br /&gt;
Modifying items in the Userdata folder is an advanced topic and not recommended. If you find it necessary, create a &#039;&#039;&#039;[[Backup]]&#039;&#039;&#039; of the Kodi data folder first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Location =&lt;br /&gt;
&amp;lt;section begin=&amp;quot;location all&amp;quot; /&amp;gt;&lt;br /&gt;
The Userdata folder is a subfolder of the &#039;&#039;&#039;&#039;&#039;[[Kodi data folder|Kodi Data Folder]]&#039;&#039;&#039;&#039;&#039; and is located as shown in the table below. &lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; ! style=&amp;quot;width:150px; background-color:#dbdf26; | Operating system&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; ! style=&amp;quot;width:700px; background-color:#dbdf26; | Userdata Folder&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Android&#039;&#039;&#039; || {{userdata|Android}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iOS&#039;&#039;&#039; || {{userdata|iOS}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LibreELEC&#039;&#039;&#039; || {{userdata|LibreELEC}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Linux&#039;&#039;&#039; || {{userdata|Linux}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;macOS&#039;&#039;&#039; || {{userdata|Mac}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039; Nvidia Shield (SMB) || {{userdata|Nvidia Shield (SMB)}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OSMC&#039;&#039;&#039; || {{userdata|OSMC}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;tvOS&#039;&#039;&#039; || {{userdata|iOS}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows&#039;&#039;&#039; || {{userdata|Windows}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows Portable&#039;&#039;&#039; || &amp;lt;&#039;&#039;Install location chosen by you&#039;&#039;&amp;gt;\portable_data\userdata\&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows via Microsoft Store&#039;&#039;&#039; || {{userdata|Windows UWP}}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows Xbox&#039;&#039;&#039; || {{userdata|Windows UWP}}&lt;br /&gt;
|}&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; In some Android setups the path may be slightly different to the one stated above.&lt;br /&gt;
&amp;lt;section end=&amp;quot;location all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Folders =&lt;br /&gt;
The following subfolders are located in the Userdata folder:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== addon_data ==&lt;br /&gt;
Is the counterpart to the &#039;&#039;&#039;[[Kodi_data_folder#addons|addons]]&#039;&#039;&#039; folder in the Kodi Data folder.&lt;br /&gt;
&lt;br /&gt;
For addons that require it, this folder holds user specified settings and other data. Not all installed add-ons will have a folder here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
{{See|Databases}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== keymaps ==&lt;br /&gt;
This folder is where your customized keymapping files reside (e.g. MyRemote.xml or keyboard.xml)&lt;br /&gt;
&lt;br /&gt;
{{See|Keyboard controls}}&lt;br /&gt;
{{See|Keymap}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== library ==&lt;br /&gt;
The folder where user created library nodes are stored.&lt;br /&gt;
&lt;br /&gt;
If creating a new node, first copy the contents of the identical &#039;&#039;&#039;library&#039;&#039;&#039; folder located in the program installation folder. Once copied across, you are able to modify existing nodes or add new nodes. Using the &#039;&#039;&#039;[[Add-on:Library_Node_Editor|Node Editor]]&#039;&#039;&#039; will automatically copy the files across.&lt;br /&gt;
&lt;br /&gt;
If you need to remove a node, open the xml file and add &#039;&#039;&#039;visible=&amp;quot;false&amp;quot;&#039;&#039;&#039; to the opening &#039;&#039;&amp;lt;node&amp;gt;&#039;&#039; tag. eg &#039;&#039;&#039;&#039;&#039;&amp;lt;node order=&amp;quot;80&amp;quot; type=&amp;quot;folder&amp;quot; visible=&amp;quot;false&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{See|Music nodes}}&lt;br /&gt;
{{See|Video nodes}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== peripheral_data ==&lt;br /&gt;
Settings and other data for hardware using the Peripheral API, such as joysticks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== playlists ==&lt;br /&gt;
Playlists are saved in one of the following subfolders. &lt;br /&gt;
&lt;br /&gt;
If using the {{kodi}} interface to create your smart playlist, {{kodi}} will save the playlist to the correct folder. If creating a playlist using an XML editor, ensure the playlist is saved to the correct folder or it will not be available in {{kodi}}.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;mixed&#039;&#039;&#039; - playlists containing both music and music videos, will show in both the Music and Video Libraries.&lt;br /&gt;
* &#039;&#039;&#039;music&#039;&#039;&#039; - playlists containing music only, will show in the Music Library.&lt;br /&gt;
* &#039;&#039;&#039;video&#039;&#039;&#039; - playlists containing videos only, will show in the Video Library.&lt;br /&gt;
&lt;br /&gt;
{{See|Playlists}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== profiles ==&lt;br /&gt;
Available only when one or more new profiles have been created.&lt;br /&gt;
&lt;br /&gt;
New Profiles are created in this folder. Each subfolder is a Profile and contains a replica of the Userdata folder. Depending on which settings you chose during setup, the Profile Userdata folder may contain structure and data or structure only.&lt;br /&gt;
&lt;br /&gt;
{{See|Profiles}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Savestates ==&lt;br /&gt;
Save points for the Games section of {{kodi}}&lt;br /&gt;
&lt;br /&gt;
{{See|Games}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Thumbnails ==&lt;br /&gt;
This is the location of all the cached artwork.&lt;br /&gt;
&lt;br /&gt;
{{See|Artwork}}&lt;br /&gt;
{{See|Artwork/Cache}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Files =&lt;br /&gt;
The following files are located in the Userdata folder:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== advancedsettings.xml ==&lt;br /&gt;
&#039;&#039;&#039;This file does not exist by default. It must be created by the user.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This file can be used to modify additional settings that are not displayed in the {{kodi}} Settings pages.&lt;br /&gt;
&lt;br /&gt;
{{See|Advancedsettings.xml}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== autoexec.py ==&lt;br /&gt;
&#039;&#039;&#039;This file does not exist by default. It must be created by the user.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An autoexec.py file can be used to perform certain actions during startup of {{kodi}}.&lt;br /&gt;
&lt;br /&gt;
;Notes:&lt;br /&gt;
* From v12 - v18 either the autoexec.py or the Autoexec Service methods can be used (not both).&lt;br /&gt;
* From v19 the autoexec.py feature has been removed for security reasons. Use the Autoexec Service instead and delete the autoexec.py file if one remains from a previous setup.&lt;br /&gt;
&lt;br /&gt;
{{See|Autoexec Service}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== favourites.xml ==&lt;br /&gt;
Contains the items that have been added through the use of &#039;&#039;&#039;&#039;&#039;Add to favourites&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The file is created by {{Kodi}} when adding items to Favourites for the first time, or it can be manually created by the user.&lt;br /&gt;
&lt;br /&gt;
{{See|Favourites}}&lt;br /&gt;
{{See|Favourites.xml}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== guisettings.xml ==&lt;br /&gt;
Holds the configuration of all the settings in the {{kodi}} Settings pages.&lt;br /&gt;
&lt;br /&gt;
{{See|Settings}}&lt;br /&gt;
&lt;br /&gt;
It is also possible to transfer these settings out of the settings pages and into the advancedsettings.xml file.&lt;br /&gt;
&lt;br /&gt;
:{{big|See: &#039;&#039;&#039;[[Advancedsettings.xml#guisettings.xml_Setting_Conversion|Settings Conversion]]}}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lircmap.xml ==&lt;br /&gt;
Created when there are changes to the default Lircmap (Linux Only).&lt;br /&gt;
&lt;br /&gt;
{{See|LIRC}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== mediasources.xml ==&lt;br /&gt;
Similar to sources.xml, but used to add custom network locations when browsing in the GUI for a path. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mediasources.xml&#039;&#039;&#039; does not exist by default and is only created when &#039;&#039;&#039;Add network location...&#039;&#039;&#039; is used in the &#039;&#039;Browse for new share window&#039;&#039; when adding a new Source.&lt;br /&gt;
&lt;br /&gt;
{{warning|Editing this file &#039;&#039;&#039;does not&#039;&#039;&#039; change the paths in your library. The folder paths for library items are stored in the databases.}}&lt;br /&gt;
&lt;br /&gt;
An example entry of a network share in the mediasources.xml file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;mediasources&amp;gt;&lt;br /&gt;
    &amp;lt;network&amp;gt;&lt;br /&gt;
        &amp;lt;location id=&amp;quot;0&amp;quot;&amp;gt;smb://192.168.0.20/j/&amp;lt;/location&amp;gt;&lt;br /&gt;
    &amp;lt;/network&amp;gt;&lt;br /&gt;
&amp;lt;/mediasources&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PartyMode.xsp ==&lt;br /&gt;
Contains the rules for the &#039;&#039;Party Mode playlist&#039;&#039; when it has been edited from the default rules. The file does not exist until the &#039;&#039;Party mode playlist&#039;&#039; has been edited.&lt;br /&gt;
&lt;br /&gt;
{{See|Party Mode}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== passwords.xml ==&lt;br /&gt;
{{warning|Passwords are stored in unencrypted text format.}}&lt;br /&gt;
Contains the passwords for your network shares. These passwords are stored as text which can be easily read by prying eyes.&lt;br /&gt;
&lt;br /&gt;
We recommend creating a new user on your network to access your media files only and not any other sensitive files. Use a new and simple password for the new user login.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== profiles.xml ==&lt;br /&gt;
Holds data for the Master (default) profile as well as any additional profiles and allows you to switch between profiles.&lt;br /&gt;
&lt;br /&gt;
{{See|Profiles}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RssFeeds.xml ==&lt;br /&gt;
RssFeeds.xml is used to configure the RSS feeds displayed on the home screen.&lt;br /&gt;
&lt;br /&gt;
{{see|RssFeeds.xml}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== sources.xml ==&lt;br /&gt;
Defines the paths for Media Sources as displayed in the GUI. The file does not exist until a media Source is added to {{kodi}} for the first time.&lt;br /&gt;
&lt;br /&gt;
{{warning|Editing this file &#039;&#039;&#039;does not&#039;&#039;&#039; change the paths in your library. The folder paths for library items are stored in the databases.}}&lt;br /&gt;
&lt;br /&gt;
{{See|Sources.xml}}&lt;br /&gt;
{{See|Sources.xml/Types}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== upnpserver.xml ==&lt;br /&gt;
Created when {{kodi}} is enabled as either a uPnP Client or Server.&lt;br /&gt;
&lt;br /&gt;
{{See|UPnP}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== wakeonlan.xml ==&lt;br /&gt;
Automatically created when the Wake On Lan setting is enabled. The file can be edited to add or remove options.&lt;br /&gt;
&lt;br /&gt;
{{See|Wake on lan}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{top}}&lt;br /&gt;
&lt;br /&gt;
{{updated|20}}&lt;br /&gt;
[[Category:Karellen]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Kodi_data_folder&amp;diff=249591</id>
		<title>Kodi data folder</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Kodi_data_folder&amp;diff=249591"/>
		<updated>2024-01-20T07:39:29Z</updated>

		<summary type="html">&lt;p&gt;Kambala: fix name of macOS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav||[[Settings]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&amp;lt;section begin=&amp;quot;KodiDataFolder&amp;quot; /&amp;gt;Once {{Kodi}} is installed, all subsequent changes and usage data are saved in the [[Kodi data folder]] which is the parent folder of the &#039;&#039;&#039;[[Userdata]]&#039;&#039;&#039; folder. When you install a new skin or an add-on it is installed in this folder. Playlists and edits to Nodes are stored here, and the library databases are created here along with the artwork cache and any other changes you make during your travels with {{kodi}}.&lt;br /&gt;
&lt;br /&gt;
Basically anything you add or modify, after installation, occurs in this folder and sub-folders.&amp;lt;section end=&amp;quot;KodiDataFolder&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:{{see also|Backup}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Location =&lt;br /&gt;
The location of this folder varies between operating systems and the table below lists their locations. &lt;br /&gt;
&amp;lt;section begin=&amp;quot;KodiDataFolderLocation&amp;quot; /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; ! style=&amp;quot;width:150px; background-color:#a1f5e4; | Operating system&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; ! style=&amp;quot;width:700px; background-color:#a1f5e4; | Kodi Data folder path&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Android&#039;&#039;&#039; || Android/data/org.xbmc.kodi/files/.kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;iOS&#039;&#039;&#039; || /private/var/mobile/Library/Preferences/Kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LibreELEC&#039;&#039;&#039; || /storage/.kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Linux&#039;&#039;&#039; || ~/.kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;macOS&#039;&#039;&#039; || /Users/&amp;lt;your_user_name&amp;gt;/Library/Application Support/Kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Nvidia Shield (SMB)&#039;&#039;&#039; || smb://&amp;lt;nvidiashieldurl&amp;gt;/internal/Android/data/org.xbmc.kodi/files/.kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OSMC&#039;&#039;&#039; || /home/osmc/.kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;tvOS&#039;&#039;&#039; || /private/var/mobile/Library/Preferences/Kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WebOS&#039;&#039;&#039; || /media/developer/apps/usr/palm/applications/org.xbmc.kodi/.kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows&#039;&#039;&#039; || C:\Users\&amp;lt;&#039;&#039;YourUsername&#039;&#039;&amp;gt;\AppData\Roaming\Kodi&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows Portable&#039;&#039;&#039; || &amp;lt;&#039;&#039;Install location chosen by you&#039;&#039;&amp;gt;\portable_data&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Windows Xbox&#039;&#039;&#039; || %LOCALAPPDATA%\Packages\XBMCFoundation.Kodi_4n2hpmxwrvr6p\LocalCache\Roaming\Kodi\ &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note:&#039;&#039;&#039; In some Android setups the path may be slightly different to the one stated above.&lt;br /&gt;
&amp;lt;section end=&amp;quot;KodiDataFolderLocation&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Folders =&lt;br /&gt;
The following are the sub-folders in the Kodi Data folder. Forks of {{kodi}} may have additional folders not covered here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== addons ==&lt;br /&gt;
Any add-on installed in {{kodi}} is installed in this folder along with any subsequent updates.&lt;br /&gt;
&lt;br /&gt;
Many add-ons have an additional folder located in &#039;&#039;&#039;\userdata\addon_data&#039;&#039;&#039;. This folder contains data created due to user preference or usage. eg, changed settings, channel line-up, etc&lt;br /&gt;
&lt;br /&gt;
{{kodi}} comes pre-installed with a series of default add-ons that are required for basic functioning, such as language add-ons, scrapers, default skins etc. These pre-installed add-ons are located in the Programs folder along with the remainder of the Kodi program files. When these pre-installed add-ons receive a subsequent update, the update is saved in this folder and the original add-on remains but is ignored.&lt;br /&gt;
&lt;br /&gt;
{{see|Add-ons}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== cache ==&lt;br /&gt;
The cache folder and its subfolders are used as temporary storage for some {{kodi}} functions. They can be used by:&lt;br /&gt;
* Scrapers to cache results and reduce API calls to remote sites.&lt;br /&gt;
* Caching navigation nodes that are slow to load in larger libraries&lt;br /&gt;
* File view of non-library items that entails tag reading which can be slow&lt;br /&gt;
&lt;br /&gt;
This folder is self-cleaning with items generally kept for 3 hours for the python Pickle cache, and 24 hours or more for scraper caches.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== media ==&lt;br /&gt;
The media folder may contain other sub-folders that may need to be created manually.&lt;br /&gt;
&lt;br /&gt;
=== Fonts ===&lt;br /&gt;
The &#039;&#039;Fonts&#039;&#039; sub-folder, can be used to add additionals subtitle fonts, which can be used as alternative to the default Kodi font.&lt;br /&gt;
We strongly suggest to avoid adding more than 100 fonts in this folder, otherwise you may experience of playback slowdowns and system instability.&lt;br /&gt;
&lt;br /&gt;
If your intent is to provide a big library of fonts as support to subtitles format type like ASS/SSA,&lt;br /&gt;
we suggest you to install these fonts in your operative system and avoid to use this folder to store them,&lt;br /&gt;
some Kodi distributions could provide a special folder, where you can place your own font library.&lt;br /&gt;
&lt;br /&gt;
{{note|On Kodi 20 - At each startup Kodi will check if files have been added and/or removed in this folder, and then rebuilds the font cache if necessary.&lt;br /&gt;
When the font cache has been builded will be saved a &amp;lt;code&amp;gt;fontcache.xml&amp;lt;/code&amp;gt; file in this folder. To optimise Kodi startup, please do not delete this file.}}&lt;br /&gt;
&lt;br /&gt;
== system ==&lt;br /&gt;
Not used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== userdata ==&lt;br /&gt;
{{see|Userdata}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Files =&lt;br /&gt;
For {{kodi}} installations on Windows, the log files are saved in this folder. (For location of log files in other platforms, see: &#039;&#039;[[Template:LogfilePath|Log file Paths]]&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
; \kodi.log&lt;br /&gt;
; \kodi.old.log&lt;br /&gt;
&lt;br /&gt;
{{#lst:Log_file|WhichLog}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:See &#039;&#039;&#039;[[Log_file|Debug Log]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{top}}&lt;br /&gt;
{{updated|20}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Karellen]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Keymap&amp;diff=249590</id>
		<title>Keymap</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Keymap&amp;diff=249590"/>
		<updated>2024-01-20T07:38:28Z</updated>

		<summary type="html">&lt;p&gt;Kambala: fix path to XBMC_keytable.cpp&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav| [[Remote controls]] }}&lt;br /&gt;
&amp;lt;section begin=&amp;quot;intro&amp;quot; /&amp;gt;Keymaps are XML base files that define the mappings of keys (keyboard keys, mouse/remote/joysticks buttons and more) to Kodi actions.&amp;lt;section end=&amp;quot;intro&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Customizing keymaps through the GUI ==&lt;br /&gt;
{{main|Add-on:Keymap Editor}}&lt;br /&gt;
Users can customize keymaps for remotes in GUI by using the community [[Add-on:Keymap Editor|Keymap Editor]] add-on.&lt;br /&gt;
&lt;br /&gt;
== Location of keymaps ==&lt;br /&gt;
User modified keymap files must be stored in the &amp;quot;&#039;&#039;&#039;keymaps&#039;&#039;&#039;&amp;quot; folder in the [[userdata]] folder:&lt;br /&gt;
{{#lst:userdata|location all}}&lt;br /&gt;
&lt;br /&gt;
=== Defaults ===&lt;br /&gt;
Default keymaps are included when Kodi is installed, but users should not edit those install files directly. Instead, place user modified keymaps in the [[userdata]]/keymaps/ directory.&lt;br /&gt;
&lt;br /&gt;
Kodi can process multiple keymap files and does so like this:&lt;br /&gt;
&lt;br /&gt;
* All *.xml files from the default install settings and userdata/keymaps/ folders are applied as keymaps.&lt;br /&gt;
* All *.xml files are processed in alphabetical order.&lt;br /&gt;
* Keymaps defined in an .xml file add to or override mappings in previous .xml file.&lt;br /&gt;
* Keymaps defined in the userdata folder add to or override mappings in the global keymap.&lt;br /&gt;
&lt;br /&gt;
By default there will be no files in these locations, so grab one from the link below to make a new one/over-ride:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039; https://github.com/xbmc/xbmc/tree/master/system/keymaps &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039; https://github.com/kodi-game/peripheral.joystick/tree/master/peripheral.joystick/resources/buttonmaps/xml &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
There is one &#039;&#039;&#039;global&#039;&#039;&#039; keymap and several &#039;&#039;&#039;window&#039;&#039;&#039;-specific keymaps.&amp;lt;br /&amp;gt;&lt;br /&gt;
Kodi falls back to the global map when the window-specific map hasn&#039;t bound the key being pressed.&lt;br /&gt;
&lt;br /&gt;
The format of keymapping files is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;keymap&amp;gt;&lt;br /&gt;
  &amp;lt;global&amp;gt;&lt;br /&gt;
    &amp;lt;gamepad&amp;gt;&lt;br /&gt;
      &amp;lt;A&amp;gt;Select&amp;lt;/A&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/gamepad&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;remote&amp;gt;&lt;br /&gt;
      &amp;lt;select&amp;gt;Select&amp;lt;/select&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/remote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;keyboard&amp;gt;&lt;br /&gt;
      &amp;lt;enter&amp;gt;Select&amp;lt;/enter&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;mouse&amp;gt;&lt;br /&gt;
      &amp;lt;leftclick&amp;gt;Select&amp;lt;/leftclick&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/mouse&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;universalremote&amp;gt;&lt;br /&gt;
      &amp;lt;obc25&amp;gt;ActivateWindow(MyMusic)&amp;lt;/obc25&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/universalremote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;joystick name=&amp;quot;PLAYSTATION(R)3 Controller (00:1B:FB:F6:E0:F2)&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;button id=&amp;quot;15&amp;quot;&amp;gt;Select&amp;lt;/button&amp;gt;&lt;br /&gt;
      [...]&lt;br /&gt;
    &amp;lt;/joystick&amp;gt;&lt;br /&gt;
  &amp;lt;/global&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Home&amp;gt;&lt;br /&gt;
    [...]&lt;br /&gt;
  &amp;lt;/Home&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  [...]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/keymap&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can see, it&#039;s divided into a &amp;lt;global&amp;gt; section, and a number of window sections (such as &amp;lt;Home&amp;gt;).&amp;lt;br /&amp;gt;&lt;br /&gt;
A list of the available window names can be seen [[Window IDs|here]]. The WINDOW can also be a custom window formatted as &amp;lt;windowId#&amp;gt; (e. g. &amp;lt;window1113&amp;gt;). &amp;lt;br /&amp;gt;&lt;br /&gt;
Each of these sections can contain Gamepad, Remote, Keyboard, Universal Remote, and custom Joystick sections.&lt;br /&gt;
&lt;br /&gt;
The format for mapping a particular key under one of these device types is as follows:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;keyname&amp;gt;action&amp;lt;/keyname&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keynames ==&lt;br /&gt;
Depending on your device you will need to use a specific &amp;quot;keyname&amp;quot;.&lt;br /&gt;
=== Gamepads ===&lt;br /&gt;
An up to date list of the available actions can be found in the source code of Kodi in [https://github.com/xbmc/xbmc/blob/master/xbmc/input/ButtonTranslator.cpp ButtonTranslator.cpp] where the &#039;&#039;TranslateGamepadString()&#039;&#039; function does the work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gamepad&amp;gt;&lt;br /&gt;
  &amp;lt;A&amp;gt;Select&amp;lt;/A&amp;gt;&lt;br /&gt;
&amp;lt;/gamepad&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remotes ===&lt;br /&gt;
An up to  date list of IR-remote button names can be found in the source code of Kodi [https://github.com/xbmc/xbmc/blob/master/xbmc/input/IRTranslator.cpp IRTranslator.cpp]. See the method TranslateString().&lt;br /&gt;
&lt;br /&gt;
The available actions are discussed in section [[Keymap#Actions|Actions]].&lt;br /&gt;
&lt;br /&gt;
{{Note|Some remotes (e.g. FLIRC) are actually seen as &amp;quot;keyboards&amp;quot;. Those will need to use the &amp;lt;keyboard&amp;gt; tag instead.}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;remote&amp;gt; &lt;br /&gt;
  &amp;lt;play&amp;gt;Play&amp;lt;/play&amp;gt;&lt;br /&gt;
&amp;lt;/remote&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Universal Remotes ===&lt;br /&gt;
To map Universal Remote buttons using the RCA infrared protocol, you may add &#039;&#039;&#039;&amp;lt;universalremote&amp;gt;&#039;&#039;&#039; sections to keymap.xml.&amp;lt;br /&amp;gt;&lt;br /&gt;
In this case, the tags used are &amp;lt;obc#&amp;gt; where # is the original button code (OBC) of the button.&amp;lt;br /&amp;gt;&lt;br /&gt;
You would put it inside a &amp;lt;universalremote&amp;gt; section in the &amp;lt;window&amp;gt; or &amp;lt;global&amp;gt; sections.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;universalremote&amp;gt; &lt;br /&gt;
  &amp;lt;obc148&amp;gt;Stop&amp;lt;/obc148&amp;gt;&lt;br /&gt;
&amp;lt;/universalremote&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Will map &#039;&#039;Stop Playback&#039;&#039; to the RCA DVD repeat button &amp;lt;obc148&amp;gt;, which is not used by Kodi by default. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Note:&#039;&#039;&#039; ensure that the &amp;lt;universalremote&amp;gt; section is &#039;&#039;&#039;NOT&#039;&#039;&#039; added &#039;within&#039; the &amp;lt;remote&amp;gt; section - it can appear before or after. Otherwise it will not be recognised and produces errors in the logfile.&lt;br /&gt;
&lt;br /&gt;
Remote keys can be observed in the kodi.log file (&#039;&#039;&#039;~/.kodi/temp/kodi.log&#039;&#039;&#039; on Linux) when debugging is enabled in the GUI (Settings -&amp;gt; debugging ). The list of pre-defined OBC codes can be found at [https://github.com/xbmc/xbmc/blob/master/xbmc/input/XBIRRemote.h XBIRRemote.h].&lt;br /&gt;
&lt;br /&gt;
=== Keyboards ===&lt;br /&gt;
Valid keyboard keymap syntax includes &amp;lt;keyname&amp;gt;, &amp;lt;key id=&amp;quot;&amp;quot;&amp;gt;, and &amp;lt;keyname mod=&amp;quot;&amp;quot;&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Mapping for arbitrary key codes can be configured using the following syntax: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;key id=&amp;quot;123&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
where &amp;quot;123&amp;quot; is replaced by the key code.&lt;br /&gt;
&lt;br /&gt;
A full list of valid keynames can be found in &lt;br /&gt;
* the [https://github.com/xbmc/xbmc/blob/master/xbmc/input/keyboard/XBMC_keytable.cpp XBMC_keytable.cpp] source code file&lt;br /&gt;
* or in [[List_of_keynames]].&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;keyboard&amp;gt;&lt;br /&gt;
  &amp;lt;key id=&amp;quot;123&amp;quot;&amp;gt;action&amp;lt;/key&amp;gt; -- id is the keys keycode. &amp;gt;&lt;br /&gt;
  &amp;lt;a mod=&amp;quot;shift,alt&amp;quot;&amp;gt;action&amp;lt;/a&amp;gt; -- corresponds to shift-alt-a, the mod=&amp;quot;&amp;quot; syntax is enabled since build 26407. &amp;gt;&lt;br /&gt;
  &amp;lt;space&amp;gt;action&amp;lt;/space&amp;gt; -- for a complete list of valid keynames, see ButtonTranslator.cpp or List of Kodi keynames above. &amp;gt;&lt;br /&gt;
&amp;lt;/keyboard&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Modifiers&lt;br /&gt;
* shift&lt;br /&gt;
* alt&lt;br /&gt;
* ctrl&lt;br /&gt;
&lt;br /&gt;
=== Mouse ===&lt;br /&gt;
&lt;br /&gt;
As this highly depends on the mouse you are using and which kind of buttons are available, we only mention the most common buttons on a mouse:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;keymap&amp;gt;&lt;br /&gt;
  &amp;lt;mouse&amp;gt;&lt;br /&gt;
    &amp;lt;global&amp;gt;&lt;br /&gt;
      &amp;lt;leftclick&amp;gt;...&amp;lt;/leftclick&amp;gt;&lt;br /&gt;
      &amp;lt;middleclick&amp;gt;...&amp;lt;/middleclick&amp;gt;&lt;br /&gt;
      &amp;lt;rightclick&amp;gt;...&amp;lt;/rightclick&amp;gt;&lt;br /&gt;
      &amp;lt;wheelup&amp;gt;...&amp;lt;/wheelup&amp;gt;&lt;br /&gt;
      &amp;lt;wheeldown&amp;gt;...&amp;lt;/wheeldown&amp;gt;&lt;br /&gt;
    &amp;lt;/global&amp;gt;&lt;br /&gt;
  &amp;lt;/mouse&amp;gt;&lt;br /&gt;
&amp;lt;/keymap&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Example for changing the volume while on MusicOSD (On Screen Display) window using the mouse wheel&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;keymap&amp;gt;&lt;br /&gt;
  &amp;lt;MusicOSD&amp;gt;&lt;br /&gt;
    &amp;lt;mouse&amp;gt;&lt;br /&gt;
      &amp;lt;wheeldown&amp;gt;VolumeDown&amp;lt;/wheeldown&amp;gt;&lt;br /&gt;
      &amp;lt;wheelup&amp;gt;VolumeUp&amp;lt;/wheelup&amp;gt;&lt;br /&gt;
    &amp;lt;/mouse&amp;gt;&lt;br /&gt;
  &amp;lt;/MusicOSD&amp;gt;&lt;br /&gt;
&amp;lt;/keymap&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Custom Joystick Configuration ===&lt;br /&gt;
See [[HOW-TO:Modify_joystick.xml]].&lt;br /&gt;
&lt;br /&gt;
== Long-press ==&lt;br /&gt;
{{note| Longpress seems to only be working on keyboard keymaps at the moment }}&lt;br /&gt;
Depending on the device, many remotes, keyboards, and gamepads can use the long-press modifier. This allows a button to do a separate action when held for a short period of time. The syntax for this is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;button mod=&amp;quot;longpress&amp;quot;&amp;gt;action&amp;lt;/button&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not all devices will correctly work with the longpress action, but most should. &lt;br /&gt;
&lt;br /&gt;
{{Note|Long-press will disable keyrepeat for that key/window.}}&lt;br /&gt;
&lt;br /&gt;
=== Removing a long-press action from a default keymap ===&lt;br /&gt;
If you want to simply remove a long-press action, rather than override it, you can place an empty long-press tag in a keymap. This also has the effect of re-enabling keyrepeat for the short-press action.&lt;br /&gt;
&lt;br /&gt;
For example, this will remove the context menu action from the default keyboard.xml keymap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;keymap&amp;gt;&lt;br /&gt;
  &amp;lt;global&amp;gt;&lt;br /&gt;
    &amp;lt;keyboard&amp;gt;&lt;br /&gt;
      &amp;lt;return mod=&amp;quot;longpress&amp;quot;&amp;gt;&amp;lt;/return&amp;gt;&lt;br /&gt;
      &amp;lt;enter mod=&amp;quot;longpress&amp;quot;&amp;gt;&amp;lt;/enter&amp;gt;&lt;br /&gt;
    &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
  &amp;lt;/global&amp;gt;&lt;br /&gt;
&amp;lt;/keymap&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
The most recent available actions can be found in [https://github.com/xbmc/xbmc/blob/master/xbmc/input/actions/ActionIDs.h ActionIDs.h].&lt;br /&gt;
&lt;br /&gt;
For those debugging integer action codes from the debug log, the mapping of action codes to constants is in [https://github.com/xbmc/xbmc/blob/master/xbmc/input/Key.h Key.h]&lt;br /&gt;
&lt;br /&gt;
In addition to the following actions, you can also use &#039;&#039;&#039;[[Built-in scripting]]&#039;&#039;&#039; in Kodi.&lt;br /&gt;
&lt;br /&gt;
=== Actions ===&lt;br /&gt;
{{Main|Action IDs}}&lt;br /&gt;
{{#lst:Action IDs|Action IDs}}&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
{{main|List of built-in functions|Built-in scripting}}&lt;br /&gt;
{{#lst:List of built-in functions|functions}}&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
{{main|Window IDs}}&lt;br /&gt;
{{#lst:Window IDs|main content}}&lt;br /&gt;
&lt;br /&gt;
== Additional keys ==&lt;br /&gt;
Other keys that can be mapped to actions.&lt;br /&gt;
&lt;br /&gt;
=== Media keyboards/remotes ===&lt;br /&gt;
* browser_back&lt;br /&gt;
* browser_forward&lt;br /&gt;
* browser_refresh&lt;br /&gt;
* browser_stop&lt;br /&gt;
* browser_search&lt;br /&gt;
* browser_favorites&lt;br /&gt;
* browser_home&lt;br /&gt;
* volume_mute&lt;br /&gt;
* volume_down&lt;br /&gt;
* volume_up&lt;br /&gt;
* next_track&lt;br /&gt;
* prev_track&lt;br /&gt;
* stop&lt;br /&gt;
* play_pause&lt;br /&gt;
* launch_mail&lt;br /&gt;
* launch_media_select&lt;br /&gt;
* launch_app1&lt;br /&gt;
* launch_app2&lt;br /&gt;
* play&lt;br /&gt;
* pause&lt;br /&gt;
* fastforward&lt;br /&gt;
* rewind&lt;br /&gt;
* channelup&lt;br /&gt;
* channeldown&lt;br /&gt;
&lt;br /&gt;
=== Mouse actions ===&lt;br /&gt;
* leftclick&lt;br /&gt;
* rightclick &lt;br /&gt;
* middleclick&lt;br /&gt;
* doubleclick&lt;br /&gt;
* wheelup&lt;br /&gt;
* wheeldown&lt;br /&gt;
* mousemove&lt;br /&gt;
* mousedrag&lt;br /&gt;
* mousedragstart&lt;br /&gt;
* mousedragend&lt;br /&gt;
* mouserdrag - right button drag&lt;br /&gt;
* mouserdragstart - start of right button drag&lt;br /&gt;
* mouserdragend - end of right button drag&lt;br /&gt;
&lt;br /&gt;
== Examples and pre-made keymaps ==&lt;br /&gt;
{{see|:Category:Remotes}}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Remote controls]]&lt;br /&gt;
* [[Keyboard controls]]&lt;br /&gt;
* [[Add-on development]]&lt;br /&gt;
* [[Python development]]&lt;br /&gt;
* [[Skinning]]&lt;br /&gt;
&lt;br /&gt;
{{Updated|16}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Remotes]]&lt;br /&gt;
[[Category:Settings]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Install_Kodi_on_Apple_TV_4_and_5_(HD_and_4K)&amp;diff=246019</id>
		<title>HOW-TO:Install Kodi on Apple TV 4 and 5 (HD and 4K)</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Install_Kodi_on_Apple_TV_4_and_5_(HD_and_4K)&amp;diff=246019"/>
		<updated>2023-06-18T10:29:13Z</updated>

		<summary type="html">&lt;p&gt;Kambala: /* Install on a jailbroken Apple TV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[IOS]]|page={{FULLPAGENAME}} }}&lt;br /&gt;
&lt;br /&gt;
== Install from Windows (only for Apple TV 4) ==&lt;br /&gt;
&lt;br /&gt;
=== What about the Apple TV 4K? ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Unfortunately the Apple TV 4K does not have a USB-C. If you are not jailbroken the only official way to sideload Kodi on your device is to use Xcode on macOS with a wireless connection.&lt;br /&gt;
To get macOS on you computer you can use a virtual machine or check for building an [[w:Hackintosh|hackintosh]], but we will not discuss this here.}}&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Cydia Impactor is still a work-in-progress, There might be some bugs that you face while installing Kodi. It is not for the faint of heart.&lt;br /&gt;
This method also requires that Kodi be re-installed every &#039;&#039;&#039;7 days&#039;&#039;&#039; if you are using a free Apple developer account.}}&lt;br /&gt;
&lt;br /&gt;
* [http://cydiaimpactor.com/ Cydia Impactor]&lt;br /&gt;
* Windows 7 or higher&lt;br /&gt;
* Latest version of iTunes is needed to be installed.&lt;br /&gt;
* Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)]&lt;br /&gt;
* A USB-C cable, without that, you can&#039;t connect your Apple TV with computer&lt;br /&gt;
&lt;br /&gt;
=== Converting deb into ipa ===&lt;br /&gt;
&lt;br /&gt;
Before beginning the installation, you have to convert .deb file of Kodi into .ipa. That is because Cydia Impactor only accepts .ipa files and not .deb files. If you already know how to convert .deb into .ipa, you can skip to the installation below.&lt;br /&gt;
&lt;br /&gt;
*You will need to [http://www.7-zip.org/download.html/ Download 7-zip] and install it in your PC&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Follow the steps given below and you will be able to convert .deb file into .ipa file.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc1.jpg|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Right Click on .deb file of Kodi that you downloaded on your PC and Select 7-zip &amp;gt; Extract files. Click OK in the next Window.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc3.jpg|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open the resulting Folder and you will find data.tar file inside. Simply extract data.tar file with Right Click &amp;gt; 7-zip &amp;gt; Extract Files.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc4.jpg|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Now you should have data folder and data.tar file in the folder.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc5.jpg|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Go inside the data folder and open Applications folder. Here you will find a folder named Kodi.app.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc6.jpg|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Here create a new folder and name it “Payload” without quotes. Now you should have 2 folders. Payload and Kodi.app folder. Make sure that the P is capital in Payload.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc7.jpg|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Now simply drag the Kodi.app folder and drop it on top of the Payload folder. In other words, copy kodi.app and paste it inside Payload folder.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc8.jpg|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Next you have to Right-click the Payload folder and Click 7-zip &amp;gt; Add to archive option.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc9.jpg|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; A new window will pop up. Here you have to make sure that the Archive format is set to zip and name the archive ending with .ipa . Something like Kodi.ipa. After that click OK. &amp;lt;br&amp;gt; Now you should have your kodi.ipa file ready for installation.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;[https://www.drgeeky.com/convert-deb-file-into-ipa-file-for-sideloading-cydia-apps/ Source]&lt;br /&gt;
&lt;br /&gt;
=== Install Kodi on your Apple TV ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Connect your Apple TV 4 with power and make sure that it is turned ON before proceeding.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:1-USB-C-on-Apple-TV-4.jpg|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Connect your Apple TV4 with your computer, and make sure that it is turned ON. If iTunes or some other program pops up then close that first. &lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-and-XCode1.jpg|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Extract the Impactor zip file somewhere in your computer and Open Impactor.exe. Don’t select “Run as Administrator” for Cydia Impactor.&lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-windows2.jpg|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Make sure that your Apple TV is detected by Cydia Impactor. After that Drag and drop the Kodi.ipa file in Cydia Impactor. &lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-windows3.jpg|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Cydia Impactor will ask you to Enter your Apple ID. Enter a Valid Apple ID here and click OK Cydia Impactor will start installing Kodi on your Apple TV.&lt;br /&gt;
File:Kodi-Apple-TV-1024x570.jpg|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Wait for the installation to complete. Once done, simply look for Kodi icon on your Apple TV 4 main screen and Now you can open it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{{notice|If you are using a free Apple developper account you will need to do this step every 7 days, so keep your IPA file on your computer}}&lt;br /&gt;
[https://www.drgeeky.com/install-kodi-apple-tv-without-mac-using-windows/ Source]&lt;br /&gt;
&lt;br /&gt;
== Install from Mac ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [http://dantheman827.github.io/ios-app-signer/ iOS App Signer]&lt;br /&gt;
* An iCloud account (required to download Xcode and to obtain your signing certificate and the provisioning profile)&lt;br /&gt;
* Xcode (you can download it directly from your Mac App Store)&lt;br /&gt;
* Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)]&lt;br /&gt;
* (optional) A USB-C cable if you have the Apple TV 4 (but just like the Apple TV 4K, the Apple TV 4 can also communicates wirelessly)&lt;br /&gt;
&lt;br /&gt;
=== Connect your device ===&lt;br /&gt;
&lt;br /&gt;
If you have an Apple TV 4 and a USB-C cable you can power on your device and plug in with your Mac.&lt;br /&gt;
Else if you have an Apple TV 4K or an Apple TV 4 without a USB-C cable you will need to pair your device wirelessly with Xcode.&lt;br /&gt;
You can follow the step-by-step guide below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Pair atv4 1bis.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; On your Apple TV open &amp;quot;Settings&amp;quot;.&lt;br /&gt;
File:Pair atv4 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open &amp;quot;Remotes and Devices&amp;quot;.&lt;br /&gt;
File:Pair atv4 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Open &amp;quot;Remote App and Devices&amp;quot;.&lt;br /&gt;
File:Pair atv4 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Now keep your Apple TV at this screen and take your Mac.&lt;br /&gt;
File:Pair atv4 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Launch Xcode and then navigate to &amp;quot;Window&amp;quot; --&amp;gt; &amp;quot;Devices and Simulators&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Pair atv4 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Select your Apple TV on the left panel and click &amp;quot;Pair&amp;quot;.&lt;br /&gt;
File:Pair atv4 7.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Fill the verification code that appear on your Apple TV screen and click on &amp;quot;Connect&amp;quot;. Your device is now paired with Xcode!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Connect your Apple account in Xcode ===&lt;br /&gt;
&lt;br /&gt;
Follow the step-by-step guide below in order to connect your iCloud/Apple account in Xcode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Connect icloud account 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Launch Xcode and open &amp;quot;Preferences&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Connect icloud account 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open the &amp;quot;Accounts&amp;quot; tab and add an account with the &amp;quot;+&amp;quot; button.&lt;br /&gt;
File:Connect icloud account 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Choose &amp;quot;Apple ID&amp;quot; then click &amp;quot;Continue&amp;quot;.&lt;br /&gt;
File:Connect icloud account 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Fill in your Apple account credentials then click &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Connect icloud account 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Now your Apple account is linked with Xcode!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generate Kodi IPA file from deb file ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have a free Apple developper account (this is usually the case if you are a &amp;quot;lambda&amp;quot; user) please follow the section [[#.28option_A.29_FREE_Apple_dev_account|FREE Apple dev account]], else if you have a paid developper account (99$/year) please follow the [[#.28option_B.29_PAID_Apple_dev_account|PAID Apple dev account]] section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== (option A) FREE Apple dev account without [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] ====&lt;br /&gt;
&lt;br /&gt;
{{notice|If you are using a free Apple developper account you will need to re-sign and re-install Kodi every 7 days and the [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] feature will not work}}&lt;br /&gt;
&lt;br /&gt;
Follow the step-by-step guide below in order to (i) obtain a valid signing certificate and provisioning profile for your Kodi app and (ii) pack and sign Kodi &#039;&#039;.deb&#039;&#039; file in an &#039;&#039;.ipa&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Generata ipa atv free 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Open Xcode and click on &amp;quot;Create a new Xcode project&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot; and &amp;quot;Single View App&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi&amp;quot;, choose your Apple account name for the team, choose your name for the &amp;quot;Organization Name&amp;quot; and &amp;quot;com.yourusername&amp;quot; (without any space) for your &amp;quot;Organization identifier&amp;quot;. Then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Finally choose a location for the Xcode project then click on &amp;quot;Create&amp;quot;. &lt;br /&gt;
File:Generata ipa atv free 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Your Xcode project is now alive, open the devices list by clicking on the target device on the top left.&lt;br /&gt;
File:Generata ipa atv free 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose your your &amp;quot;real&amp;quot; connected Apple TV. Also, check for a &amp;quot;Fix issue&amp;quot; button on the signing panel, if this button is present click on it. Now you can close your Xcode window.&lt;br /&gt;
File:Generata ipa atv free 7.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Now open iOS App Signer, click on &amp;quot;Browse&amp;quot; and choose the Kodi DEB file, select the signing certificate corresponding to your Apple account, select the provisioning profile corresponding to the organization identifier that you have previously chosen, then click on &amp;quot;Start&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 8.png|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; Click on &amp;quot;Save&amp;quot; and wait until the Kodi IPA file appears in the same folder as the DEB file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== (option B) PAID Apple dev account with [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] ====&lt;br /&gt;
&lt;br /&gt;
During the step-by-step guide below you will need to extract the &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; file and also a &amp;lt;code&amp;gt;.tar.xz&amp;lt;/code&amp;gt; file, to do that you can use an extractor app like [https://theunarchiver.com The Unarchiver], or also a Terminal with the command:&lt;br /&gt;
* &amp;lt;code&amp;gt;ar -p kodi-tvos.deb data.tar.xz | tar -xf -&amp;lt;/code&amp;gt;, new directory &#039;&#039;&#039;Applications&#039;&#039;&#039; will appear where you can find Kodi.app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Generata ipa atv paid 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Open Xcode and click on &amp;quot;Create a new Xcode project&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot; and &amp;quot;Single View App&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi&amp;quot;, choose your Apple account name for the team, choose your name for the &amp;quot;Organization Name&amp;quot; and &amp;quot;com.yourusername&amp;quot; (without any space) for your &amp;quot;Organization identifier&amp;quot;. Then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Finally choose a location for the Xcode project then click on &amp;quot;Create&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Your Xcode project is now alive, open the devices list by clicking on the target device on the top left.&lt;br /&gt;
File:Generata ipa atv paid 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose your your &amp;quot;real&amp;quot; connected Apple TV. Also, check for a &amp;quot;Fix issue&amp;quot; button on the signing panel, if this button is present click on it. Now you can close your Xcode window.&lt;br /&gt;
File:Generata ipa atv paid 6bis.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Click on &amp;quot;Capabilities&amp;quot;, then enable &amp;quot;App Groups&amp;quot;, click on the &amp;quot;+&amp;quot; button and create a new group group.com.yourusername.kodi, and finally enable this group.&lt;br /&gt;
File:Generata ipa atv paid 7.png|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; Click on &amp;quot;File&amp;quot; --&amp;gt; &amp;quot;New&amp;quot; --&amp;gt; &amp;quot;Target..&amp;quot; &lt;br /&gt;
File:Generata ipa atv paid 8.png|&#039;&#039;&#039;Step 9:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot;, &amp;quot;TV Services Extension&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 9.png|&#039;&#039;&#039;Step 10:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi topshelf&amp;quot;, choose your Apple account name for the team and choose your name for the &amp;quot;Organization Name&amp;quot;, then click on &amp;quot;Finish&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 10.png|&#039;&#039;&#039;Step 11:&#039;&#039;&#039; Click on &amp;quot;Activate&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 11.png|&#039;&#039;&#039;Step 12:&#039;&#039;&#039; Click on &amp;quot;Capabilities&amp;quot;, then enable &amp;quot;App Groups&amp;quot; and enable the group previously created.&lt;br /&gt;
File:Generata ipa atv paid 12.png|&#039;&#039;&#039;Step 13:&#039;&#039;&#039; Now close Xcode and open the folder that contains your Kodi DEB file, then right click on it and open it with your unarchiver app. You will obtain 3 files.&lt;br /&gt;
File:Generata ipa atv paid 13.png|&#039;&#039;&#039;Step 14:&#039;&#039;&#039; Right click on &amp;quot;data.tar.lzma&amp;quot; and open it with your unarchiver app. You will obtain a folder named &amp;quot;data&amp;quot;. Open &amp;quot;data&amp;quot; and all other folders until you find the &amp;quot;Kodi.app&amp;quot; file. Right click on it and choose &amp;quot;Show Package Contents&amp;quot; then open the &amp;quot;PlugIns&amp;quot; folder.&lt;br /&gt;
File:Generata ipa atv paid 14.png|&#039;&#039;&#039;Step 15:&#039;&#039;&#039; Open iOS App Signer, drag and drop &amp;quot;TVOSTopShelf.appex&amp;quot; in the &amp;quot;Input File&amp;quot; field, select the signing certificate corresponding to your Apple account, select the provisioning profile &amp;quot;com.yourusername.kodi.kodi-topshelf&amp;quot;, then click on &amp;quot;Start&amp;quot;. When the process has finished close iOS App Signer.&lt;br /&gt;
File:Generata ipa atv paid 15.png|&#039;&#039;&#039;Step 16:&#039;&#039;&#039; In your Finder window go back until you see the &amp;quot;Kodi.app&amp;quot; file. Open iOS App Signer, drag and drop &amp;quot;Kodi.ipa&amp;quot; in the &amp;quot;Input File&amp;quot; field, select the signing certificate corresponding to your Apple account, select the provisioning profile &amp;quot;com.yourusername.kodi&amp;quot;, &#039;&#039;&#039;check &amp;quot;ignore PlugIns folder&amp;quot;&#039;&#039;&#039;, then click on &amp;quot;Start&amp;quot;. Click on &amp;quot;Save&amp;quot; and wait until the Kodi IPA file appears in the same folder as the &amp;quot;Kodi.app&amp;quot; file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install Kodi on your Apple TV ===&lt;br /&gt;
&lt;br /&gt;
Finally you have to install your freshly created IPA file to your device. To do that follow the step-by-step guide below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Pair atv4 5.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Start your Apple TV and stay on the main menu screen. Launch Xcode and then navigate to &amp;quot;Window&amp;quot; --&amp;gt; &amp;quot;Devices and Simulators&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Sideload atv 1.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Select your device on the left panel and click on the &amp;quot;+&amp;quot; button.&lt;br /&gt;
File:Sideload atv 2.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Select your freshly generated IPA file then click on &amp;quot;Open&amp;quot;, finally wait until Kodi appear on your Apple TV main menu screen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install on a jailbroken Apple TV ==&lt;br /&gt;
&lt;br /&gt;
It is simple to get Kodi working on your [[w:iOS jailbreaking|jailbroken]] Apple TV. Here you can find the current tvOS versions with an available jailbreak for the Apple TV 4 and 4K:&lt;br /&gt;
* &#039;&#039;&#039;10.2.2 to 11.1:&#039;&#039;&#039; [https://wiki.awkwardtv.org/wiki/Backr00m backr00m]&lt;br /&gt;
* &#039;&#039;&#039;11.0 to 11.4.1:&#039;&#039;&#039; [https://coolstar.org/electra/ electraTV]&lt;br /&gt;
* &#039;&#039;&#039;12.0 to 12.1.1:&#039;&#039;&#039; [https://chimera.sh chimeraTV]&lt;br /&gt;
* &#039;&#039;&#039;13.4.5 and below&#039;&#039;&#039; [https://unc0ver.dev/tvos/ unc0verTV]&lt;br /&gt;
* &#039;&#039;&#039;All versions&#039;&#039;&#039; [https://checkra.in Checkra1n]&lt;br /&gt;
&lt;br /&gt;
Once your Apple TV is jailbroken:&lt;br /&gt;
# Download the Kodi .deb file for tvOS: [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi nightly build] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old)] and put it on your Desktop.&lt;br /&gt;
# Open a terminal window on your computer.&lt;br /&gt;
# Move to your desktop with &amp;lt;code&amp;gt;cd ~/Desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Send the deb file to your Apple TV with &amp;lt;code&amp;gt;scp DEB_FILE root@IP_ADDRESS:/var/root/&#039;&amp;lt;/code&amp;gt; (adapt with your case, for example  &amp;lt;code&amp;gt;scp kodi-20180227-4a25e62-yab-tvos.deb root@192.168.1.3:/var/root/&amp;lt;/code&amp;gt;), the default password is &amp;lt;code&amp;gt;alpine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Connect to your Apple TV with &amp;lt;code&amp;gt;ssh root@IP_ADDRESS&amp;lt;/code&amp;gt;, default password is &amp;lt;code&amp;gt;alpine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Install Kodi with &amp;lt;code&amp;gt;dpkg -i /var/root/kodi-20180227-4a25e62-yab-tvos.deb&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Refresh icons cache with &amp;lt;code&amp;gt;uicache&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Kodi should be on your main Apple TV screen.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.awkwardtv.org/wiki/Installing_Deb_Files Source]&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Apple]]&lt;br /&gt;
[[Category:How-to|IOS]]&lt;br /&gt;
[[Category:Installation|IOS]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Install_Kodi_on_Apple_TV_4_and_5_(HD_and_4K)&amp;diff=246018</id>
		<title>HOW-TO:Install Kodi on Apple TV 4 and 5 (HD and 4K)</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Install_Kodi_on_Apple_TV_4_and_5_(HD_and_4K)&amp;diff=246018"/>
		<updated>2023-06-18T10:27:44Z</updated>

		<summary type="html">&lt;p&gt;Kambala: /* (option B) PAID Apple dev account with Top Shelf */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[IOS]]|page={{FULLPAGENAME}} }}&lt;br /&gt;
&lt;br /&gt;
== Install from Windows (only for Apple TV 4) ==&lt;br /&gt;
&lt;br /&gt;
=== What about the Apple TV 4K? ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Unfortunately the Apple TV 4K does not have a USB-C. If you are not jailbroken the only official way to sideload Kodi on your device is to use Xcode on macOS with a wireless connection.&lt;br /&gt;
To get macOS on you computer you can use a virtual machine or check for building an [[w:Hackintosh|hackintosh]], but we will not discuss this here.}}&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Cydia Impactor is still a work-in-progress, There might be some bugs that you face while installing Kodi. It is not for the faint of heart.&lt;br /&gt;
This method also requires that Kodi be re-installed every &#039;&#039;&#039;7 days&#039;&#039;&#039; if you are using a free Apple developer account.}}&lt;br /&gt;
&lt;br /&gt;
* [http://cydiaimpactor.com/ Cydia Impactor]&lt;br /&gt;
* Windows 7 or higher&lt;br /&gt;
* Latest version of iTunes is needed to be installed.&lt;br /&gt;
* Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)]&lt;br /&gt;
* A USB-C cable, without that, you can&#039;t connect your Apple TV with computer&lt;br /&gt;
&lt;br /&gt;
=== Converting deb into ipa ===&lt;br /&gt;
&lt;br /&gt;
Before beginning the installation, you have to convert .deb file of Kodi into .ipa. That is because Cydia Impactor only accepts .ipa files and not .deb files. If you already know how to convert .deb into .ipa, you can skip to the installation below.&lt;br /&gt;
&lt;br /&gt;
*You will need to [http://www.7-zip.org/download.html/ Download 7-zip] and install it in your PC&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Follow the steps given below and you will be able to convert .deb file into .ipa file.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc1.jpg|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Right Click on .deb file of Kodi that you downloaded on your PC and Select 7-zip &amp;gt; Extract files. Click OK in the next Window.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc3.jpg|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open the resulting Folder and you will find data.tar file inside. Simply extract data.tar file with Right Click &amp;gt; 7-zip &amp;gt; Extract Files.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc4.jpg|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Now you should have data folder and data.tar file in the folder.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc5.jpg|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Go inside the data folder and open Applications folder. Here you will find a folder named Kodi.app.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc6.jpg|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Here create a new folder and name it “Payload” without quotes. Now you should have 2 folders. Payload and Kodi.app folder. Make sure that the P is capital in Payload.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc7.jpg|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Now simply drag the Kodi.app folder and drop it on top of the Payload folder. In other words, copy kodi.app and paste it inside Payload folder.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc8.jpg|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Next you have to Right-click the Payload folder and Click 7-zip &amp;gt; Add to archive option.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc9.jpg|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; A new window will pop up. Here you have to make sure that the Archive format is set to zip and name the archive ending with .ipa . Something like Kodi.ipa. After that click OK. &amp;lt;br&amp;gt; Now you should have your kodi.ipa file ready for installation.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;[https://www.drgeeky.com/convert-deb-file-into-ipa-file-for-sideloading-cydia-apps/ Source]&lt;br /&gt;
&lt;br /&gt;
=== Install Kodi on your Apple TV ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Connect your Apple TV 4 with power and make sure that it is turned ON before proceeding.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:1-USB-C-on-Apple-TV-4.jpg|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Connect your Apple TV4 with your computer, and make sure that it is turned ON. If iTunes or some other program pops up then close that first. &lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-and-XCode1.jpg|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Extract the Impactor zip file somewhere in your computer and Open Impactor.exe. Don’t select “Run as Administrator” for Cydia Impactor.&lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-windows2.jpg|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Make sure that your Apple TV is detected by Cydia Impactor. After that Drag and drop the Kodi.ipa file in Cydia Impactor. &lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-windows3.jpg|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Cydia Impactor will ask you to Enter your Apple ID. Enter a Valid Apple ID here and click OK Cydia Impactor will start installing Kodi on your Apple TV.&lt;br /&gt;
File:Kodi-Apple-TV-1024x570.jpg|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Wait for the installation to complete. Once done, simply look for Kodi icon on your Apple TV 4 main screen and Now you can open it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{{notice|If you are using a free Apple developper account you will need to do this step every 7 days, so keep your IPA file on your computer}}&lt;br /&gt;
[https://www.drgeeky.com/install-kodi-apple-tv-without-mac-using-windows/ Source]&lt;br /&gt;
&lt;br /&gt;
== Install from Mac ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [http://dantheman827.github.io/ios-app-signer/ iOS App Signer]&lt;br /&gt;
* An iCloud account (required to download Xcode and to obtain your signing certificate and the provisioning profile)&lt;br /&gt;
* Xcode (you can download it directly from your Mac App Store)&lt;br /&gt;
* Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)]&lt;br /&gt;
* (optional) A USB-C cable if you have the Apple TV 4 (but just like the Apple TV 4K, the Apple TV 4 can also communicates wirelessly)&lt;br /&gt;
&lt;br /&gt;
=== Connect your device ===&lt;br /&gt;
&lt;br /&gt;
If you have an Apple TV 4 and a USB-C cable you can power on your device and plug in with your Mac.&lt;br /&gt;
Else if you have an Apple TV 4K or an Apple TV 4 without a USB-C cable you will need to pair your device wirelessly with Xcode.&lt;br /&gt;
You can follow the step-by-step guide below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Pair atv4 1bis.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; On your Apple TV open &amp;quot;Settings&amp;quot;.&lt;br /&gt;
File:Pair atv4 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open &amp;quot;Remotes and Devices&amp;quot;.&lt;br /&gt;
File:Pair atv4 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Open &amp;quot;Remote App and Devices&amp;quot;.&lt;br /&gt;
File:Pair atv4 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Now keep your Apple TV at this screen and take your Mac.&lt;br /&gt;
File:Pair atv4 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Launch Xcode and then navigate to &amp;quot;Window&amp;quot; --&amp;gt; &amp;quot;Devices and Simulators&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Pair atv4 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Select your Apple TV on the left panel and click &amp;quot;Pair&amp;quot;.&lt;br /&gt;
File:Pair atv4 7.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Fill the verification code that appear on your Apple TV screen and click on &amp;quot;Connect&amp;quot;. Your device is now paired with Xcode!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Connect your Apple account in Xcode ===&lt;br /&gt;
&lt;br /&gt;
Follow the step-by-step guide below in order to connect your iCloud/Apple account in Xcode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Connect icloud account 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Launch Xcode and open &amp;quot;Preferences&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Connect icloud account 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open the &amp;quot;Accounts&amp;quot; tab and add an account with the &amp;quot;+&amp;quot; button.&lt;br /&gt;
File:Connect icloud account 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Choose &amp;quot;Apple ID&amp;quot; then click &amp;quot;Continue&amp;quot;.&lt;br /&gt;
File:Connect icloud account 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Fill in your Apple account credentials then click &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Connect icloud account 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Now your Apple account is linked with Xcode!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generate Kodi IPA file from deb file ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have a free Apple developper account (this is usually the case if you are a &amp;quot;lambda&amp;quot; user) please follow the section [[#.28option_A.29_FREE_Apple_dev_account|FREE Apple dev account]], else if you have a paid developper account (99$/year) please follow the [[#.28option_B.29_PAID_Apple_dev_account|PAID Apple dev account]] section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== (option A) FREE Apple dev account without [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] ====&lt;br /&gt;
&lt;br /&gt;
{{notice|If you are using a free Apple developper account you will need to re-sign and re-install Kodi every 7 days and the [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] feature will not work}}&lt;br /&gt;
&lt;br /&gt;
Follow the step-by-step guide below in order to (i) obtain a valid signing certificate and provisioning profile for your Kodi app and (ii) pack and sign Kodi &#039;&#039;.deb&#039;&#039; file in an &#039;&#039;.ipa&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Generata ipa atv free 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Open Xcode and click on &amp;quot;Create a new Xcode project&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot; and &amp;quot;Single View App&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi&amp;quot;, choose your Apple account name for the team, choose your name for the &amp;quot;Organization Name&amp;quot; and &amp;quot;com.yourusername&amp;quot; (without any space) for your &amp;quot;Organization identifier&amp;quot;. Then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Finally choose a location for the Xcode project then click on &amp;quot;Create&amp;quot;. &lt;br /&gt;
File:Generata ipa atv free 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Your Xcode project is now alive, open the devices list by clicking on the target device on the top left.&lt;br /&gt;
File:Generata ipa atv free 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose your your &amp;quot;real&amp;quot; connected Apple TV. Also, check for a &amp;quot;Fix issue&amp;quot; button on the signing panel, if this button is present click on it. Now you can close your Xcode window.&lt;br /&gt;
File:Generata ipa atv free 7.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Now open iOS App Signer, click on &amp;quot;Browse&amp;quot; and choose the Kodi DEB file, select the signing certificate corresponding to your Apple account, select the provisioning profile corresponding to the organization identifier that you have previously chosen, then click on &amp;quot;Start&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 8.png|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; Click on &amp;quot;Save&amp;quot; and wait until the Kodi IPA file appears in the same folder as the DEB file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== (option B) PAID Apple dev account with [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] ====&lt;br /&gt;
&lt;br /&gt;
During the step-by-step guide below you will need to extract the &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; file and also a &amp;lt;code&amp;gt;.tar.xz&amp;lt;/code&amp;gt; file, to do that you can use an extractor app like [https://theunarchiver.com The Unarchiver], or also a Terminal with the command:&lt;br /&gt;
* &amp;lt;code&amp;gt;ar -p kodi-tvos.deb data.tar.xz | tar -xf -&amp;lt;/code&amp;gt;, new directory &#039;&#039;&#039;Applications&#039;&#039;&#039; will appear where you can find Kodi.app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Generata ipa atv paid 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Open Xcode and click on &amp;quot;Create a new Xcode project&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot; and &amp;quot;Single View App&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi&amp;quot;, choose your Apple account name for the team, choose your name for the &amp;quot;Organization Name&amp;quot; and &amp;quot;com.yourusername&amp;quot; (without any space) for your &amp;quot;Organization identifier&amp;quot;. Then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Finally choose a location for the Xcode project then click on &amp;quot;Create&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Your Xcode project is now alive, open the devices list by clicking on the target device on the top left.&lt;br /&gt;
File:Generata ipa atv paid 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose your your &amp;quot;real&amp;quot; connected Apple TV. Also, check for a &amp;quot;Fix issue&amp;quot; button on the signing panel, if this button is present click on it. Now you can close your Xcode window.&lt;br /&gt;
File:Generata ipa atv paid 6bis.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Click on &amp;quot;Capabilities&amp;quot;, then enable &amp;quot;App Groups&amp;quot;, click on the &amp;quot;+&amp;quot; button and create a new group group.com.yourusername.kodi, and finally enable this group.&lt;br /&gt;
File:Generata ipa atv paid 7.png|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; Click on &amp;quot;File&amp;quot; --&amp;gt; &amp;quot;New&amp;quot; --&amp;gt; &amp;quot;Target..&amp;quot; &lt;br /&gt;
File:Generata ipa atv paid 8.png|&#039;&#039;&#039;Step 9:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot;, &amp;quot;TV Services Extension&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 9.png|&#039;&#039;&#039;Step 10:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi topshelf&amp;quot;, choose your Apple account name for the team and choose your name for the &amp;quot;Organization Name&amp;quot;, then click on &amp;quot;Finish&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 10.png|&#039;&#039;&#039;Step 11:&#039;&#039;&#039; Click on &amp;quot;Activate&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 11.png|&#039;&#039;&#039;Step 12:&#039;&#039;&#039; Click on &amp;quot;Capabilities&amp;quot;, then enable &amp;quot;App Groups&amp;quot; and enable the group previously created.&lt;br /&gt;
File:Generata ipa atv paid 12.png|&#039;&#039;&#039;Step 13:&#039;&#039;&#039; Now close Xcode and open the folder that contains your Kodi DEB file, then right click on it and open it with your unarchiver app. You will obtain 3 files.&lt;br /&gt;
File:Generata ipa atv paid 13.png|&#039;&#039;&#039;Step 14:&#039;&#039;&#039; Right click on &amp;quot;data.tar.lzma&amp;quot; and open it with your unarchiver app. You will obtain a folder named &amp;quot;data&amp;quot;. Open &amp;quot;data&amp;quot; and all other folders until you find the &amp;quot;Kodi.app&amp;quot; file. Right click on it and choose &amp;quot;Show Package Contents&amp;quot; then open the &amp;quot;PlugIns&amp;quot; folder.&lt;br /&gt;
File:Generata ipa atv paid 14.png|&#039;&#039;&#039;Step 15:&#039;&#039;&#039; Open iOS App Signer, drag and drop &amp;quot;TVOSTopShelf.appex&amp;quot; in the &amp;quot;Input File&amp;quot; field, select the signing certificate corresponding to your Apple account, select the provisioning profile &amp;quot;com.yourusername.kodi.kodi-topshelf&amp;quot;, then click on &amp;quot;Start&amp;quot;. When the process has finished close iOS App Signer.&lt;br /&gt;
File:Generata ipa atv paid 15.png|&#039;&#039;&#039;Step 16:&#039;&#039;&#039; In your Finder window go back until you see the &amp;quot;Kodi.app&amp;quot; file. Open iOS App Signer, drag and drop &amp;quot;Kodi.ipa&amp;quot; in the &amp;quot;Input File&amp;quot; field, select the signing certificate corresponding to your Apple account, select the provisioning profile &amp;quot;com.yourusername.kodi&amp;quot;, &#039;&#039;&#039;check &amp;quot;ignore PlugIns folder&amp;quot;&#039;&#039;&#039;, then click on &amp;quot;Start&amp;quot;. Click on &amp;quot;Save&amp;quot; and wait until the Kodi IPA file appears in the same folder as the &amp;quot;Kodi.app&amp;quot; file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install Kodi on your Apple TV ===&lt;br /&gt;
&lt;br /&gt;
Finally you have to install your freshly created IPA file to your device. To do that follow the step-by-step guide below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Pair atv4 5.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Start your Apple TV and stay on the main menu screen. Launch Xcode and then navigate to &amp;quot;Window&amp;quot; --&amp;gt; &amp;quot;Devices and Simulators&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Sideload atv 1.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Select your device on the left panel and click on the &amp;quot;+&amp;quot; button.&lt;br /&gt;
File:Sideload atv 2.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Select your freshly generated IPA file then click on &amp;quot;Open&amp;quot;, finally wait until Kodi appear on your Apple TV main menu screen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install on a jailbroken Apple TV ==&lt;br /&gt;
&lt;br /&gt;
It is simple to get Kodi working on your [[w:iOS jailbreaking|jailbroken]] Apple TV. Here you can find the current tvOS versions with an available jailbreak for the Apple TV 4 and 4K:&lt;br /&gt;
* &#039;&#039;&#039;10.2.2 to 11.1:&#039;&#039;&#039; [https://wiki.awkwardtv.org/wiki/Backr00m backr00m]&lt;br /&gt;
* &#039;&#039;&#039;11.0 to 11.4.1:&#039;&#039;&#039; [https://coolstar.org/electra/ electraTV]&lt;br /&gt;
* &#039;&#039;&#039;12.0 to 12.1.1:&#039;&#039;&#039; [https://chimera.sh chimeraTV]&lt;br /&gt;
* &#039;&#039;&#039;13.4.5 and below&#039;&#039;&#039; [https://unc0ver.dev/tvos/ unc0verTV]&lt;br /&gt;
* &#039;&#039;&#039;All versions&#039;&#039;&#039; [https://checkra.in Checkra1n]&lt;br /&gt;
&lt;br /&gt;
Once your Apple TV is jailbroken:&lt;br /&gt;
# Download the Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)] and put it on your Desktop.&lt;br /&gt;
# Open a terminal window on your computer.&lt;br /&gt;
# Move to your desktop with &amp;lt;code&amp;gt;cd ~/Desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Send the deb file to your Apple TV with &amp;lt;code&amp;gt;scp DEB_FILE root@IP_ADDRESS:/var/root/&#039;&amp;lt;/code&amp;gt; (adapt with your case, for example  &amp;lt;code&amp;gt;scp kodi-20180227-4a25e62-yab-tvos.deb root@192.168.1.3:/var/root/&amp;lt;/code&amp;gt;), the default password is &amp;lt;code&amp;gt;alpine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Connect to your Apple TV with &amp;lt;code&amp;gt;ssh root@IP_ADDRESS&amp;lt;/code&amp;gt;, default password is &amp;lt;code&amp;gt;alpine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Install Kodi with &amp;lt;code&amp;gt;dpkg -i /var/root/kodi-20180227-4a25e62-yab-tvos.deb&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Refresh icons cache with &amp;lt;code&amp;gt;uicache&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Kodi should be on your main Apple TV screen.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.awkwardtv.org/wiki/Installing_Deb_Files Source]&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Apple]]&lt;br /&gt;
[[Category:How-to|IOS]]&lt;br /&gt;
[[Category:Installation|IOS]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=HOW-TO:Install_Kodi_on_Apple_TV_4_and_5_(HD_and_4K)&amp;diff=246017</id>
		<title>HOW-TO:Install Kodi on Apple TV 4 and 5 (HD and 4K)</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=HOW-TO:Install_Kodi_on_Apple_TV_4_and_5_(HD_and_4K)&amp;diff=246017"/>
		<updated>2023-06-18T10:27:18Z</updated>

		<summary type="html">&lt;p&gt;Kambala: improved extraction terminal command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[IOS]]|page={{FULLPAGENAME}} }}&lt;br /&gt;
&lt;br /&gt;
== Install from Windows (only for Apple TV 4) ==&lt;br /&gt;
&lt;br /&gt;
=== What about the Apple TV 4K? ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Unfortunately the Apple TV 4K does not have a USB-C. If you are not jailbroken the only official way to sideload Kodi on your device is to use Xcode on macOS with a wireless connection.&lt;br /&gt;
To get macOS on you computer you can use a virtual machine or check for building an [[w:Hackintosh|hackintosh]], but we will not discuss this here.}}&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
{{warning|Cydia Impactor is still a work-in-progress, There might be some bugs that you face while installing Kodi. It is not for the faint of heart.&lt;br /&gt;
This method also requires that Kodi be re-installed every &#039;&#039;&#039;7 days&#039;&#039;&#039; if you are using a free Apple developer account.}}&lt;br /&gt;
&lt;br /&gt;
* [http://cydiaimpactor.com/ Cydia Impactor]&lt;br /&gt;
* Windows 7 or higher&lt;br /&gt;
* Latest version of iTunes is needed to be installed.&lt;br /&gt;
* Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)]&lt;br /&gt;
* A USB-C cable, without that, you can&#039;t connect your Apple TV with computer&lt;br /&gt;
&lt;br /&gt;
=== Converting deb into ipa ===&lt;br /&gt;
&lt;br /&gt;
Before beginning the installation, you have to convert .deb file of Kodi into .ipa. That is because Cydia Impactor only accepts .ipa files and not .deb files. If you already know how to convert .deb into .ipa, you can skip to the installation below.&lt;br /&gt;
&lt;br /&gt;
*You will need to [http://www.7-zip.org/download.html/ Download 7-zip] and install it in your PC&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Follow the steps given below and you will be able to convert .deb file into .ipa file.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc1.jpg|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Right Click on .deb file of Kodi that you downloaded on your PC and Select 7-zip &amp;gt; Extract files. Click OK in the next Window.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc3.jpg|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open the resulting Folder and you will find data.tar file inside. Simply extract data.tar file with Right Click &amp;gt; 7-zip &amp;gt; Extract Files.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc4.jpg|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Now you should have data folder and data.tar file in the folder.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc5.jpg|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Go inside the data folder and open Applications folder. Here you will find a folder named Kodi.app.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc6.jpg|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Here create a new folder and name it “Payload” without quotes. Now you should have 2 folders. Payload and Kodi.app folder. Make sure that the P is capital in Payload.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc7.jpg|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Now simply drag the Kodi.app folder and drop it on top of the Payload folder. In other words, copy kodi.app and paste it inside Payload folder.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc8.jpg|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Next you have to Right-click the Payload folder and Click 7-zip &amp;gt; Add to archive option.&lt;br /&gt;
File:Convert-.deb-file-into-.ipa-file-on-windows-pc9.jpg|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; A new window will pop up. Here you have to make sure that the Archive format is set to zip and name the archive ending with .ipa . Something like Kodi.ipa. After that click OK. &amp;lt;br&amp;gt; Now you should have your kodi.ipa file ready for installation.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;[https://www.drgeeky.com/convert-deb-file-into-ipa-file-for-sideloading-cydia-apps/ Source]&lt;br /&gt;
&lt;br /&gt;
=== Install Kodi on your Apple TV ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Connect your Apple TV 4 with power and make sure that it is turned ON before proceeding.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:1-USB-C-on-Apple-TV-4.jpg|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Connect your Apple TV4 with your computer, and make sure that it is turned ON. If iTunes or some other program pops up then close that first. &lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-and-XCode1.jpg|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Extract the Impactor zip file somewhere in your computer and Open Impactor.exe. Don’t select “Run as Administrator” for Cydia Impactor.&lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-windows2.jpg|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Make sure that your Apple TV is detected by Cydia Impactor. After that Drag and drop the Kodi.ipa file in Cydia Impactor. &lt;br /&gt;
File:install-kodi-on-iPhone-without-jailbreak-windows3.jpg|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Cydia Impactor will ask you to Enter your Apple ID. Enter a Valid Apple ID here and click OK Cydia Impactor will start installing Kodi on your Apple TV.&lt;br /&gt;
File:Kodi-Apple-TV-1024x570.jpg|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Wait for the installation to complete. Once done, simply look for Kodi icon on your Apple TV 4 main screen and Now you can open it.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
{{notice|If you are using a free Apple developper account you will need to do this step every 7 days, so keep your IPA file on your computer}}&lt;br /&gt;
[https://www.drgeeky.com/install-kodi-apple-tv-without-mac-using-windows/ Source]&lt;br /&gt;
&lt;br /&gt;
== Install from Mac ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [http://dantheman827.github.io/ios-app-signer/ iOS App Signer]&lt;br /&gt;
* An iCloud account (required to download Xcode and to obtain your signing certificate and the provisioning profile)&lt;br /&gt;
* Xcode (you can download it directly from your Mac App Store)&lt;br /&gt;
* Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)]&lt;br /&gt;
* (optional) A USB-C cable if you have the Apple TV 4 (but just like the Apple TV 4K, the Apple TV 4 can also communicates wirelessly)&lt;br /&gt;
&lt;br /&gt;
=== Connect your device ===&lt;br /&gt;
&lt;br /&gt;
If you have an Apple TV 4 and a USB-C cable you can power on your device and plug in with your Mac.&lt;br /&gt;
Else if you have an Apple TV 4K or an Apple TV 4 without a USB-C cable you will need to pair your device wirelessly with Xcode.&lt;br /&gt;
You can follow the step-by-step guide below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Pair atv4 1bis.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; On your Apple TV open &amp;quot;Settings&amp;quot;.&lt;br /&gt;
File:Pair atv4 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open &amp;quot;Remotes and Devices&amp;quot;.&lt;br /&gt;
File:Pair atv4 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Open &amp;quot;Remote App and Devices&amp;quot;.&lt;br /&gt;
File:Pair atv4 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Now keep your Apple TV at this screen and take your Mac.&lt;br /&gt;
File:Pair atv4 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Launch Xcode and then navigate to &amp;quot;Window&amp;quot; --&amp;gt; &amp;quot;Devices and Simulators&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Pair atv4 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Select your Apple TV on the left panel and click &amp;quot;Pair&amp;quot;.&lt;br /&gt;
File:Pair atv4 7.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Fill the verification code that appear on your Apple TV screen and click on &amp;quot;Connect&amp;quot;. Your device is now paired with Xcode!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Connect your Apple account in Xcode ===&lt;br /&gt;
&lt;br /&gt;
Follow the step-by-step guide below in order to connect your iCloud/Apple account in Xcode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Connect icloud account 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Launch Xcode and open &amp;quot;Preferences&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Connect icloud account 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Open the &amp;quot;Accounts&amp;quot; tab and add an account with the &amp;quot;+&amp;quot; button.&lt;br /&gt;
File:Connect icloud account 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Choose &amp;quot;Apple ID&amp;quot; then click &amp;quot;Continue&amp;quot;.&lt;br /&gt;
File:Connect icloud account 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Fill in your Apple account credentials then click &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Connect icloud account 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Now your Apple account is linked with Xcode!&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generate Kodi IPA file from deb file ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you have a free Apple developper account (this is usually the case if you are a &amp;quot;lambda&amp;quot; user) please follow the section [[#.28option_A.29_FREE_Apple_dev_account|FREE Apple dev account]], else if you have a paid developper account (99$/year) please follow the [[#.28option_B.29_PAID_Apple_dev_account|PAID Apple dev account]] section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== (option A) FREE Apple dev account without [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] ====&lt;br /&gt;
&lt;br /&gt;
{{notice|If you are using a free Apple developper account you will need to re-sign and re-install Kodi every 7 days and the [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] feature will not work}}&lt;br /&gt;
&lt;br /&gt;
Follow the step-by-step guide below in order to (i) obtain a valid signing certificate and provisioning profile for your Kodi app and (ii) pack and sign Kodi &#039;&#039;.deb&#039;&#039; file in an &#039;&#039;.ipa&#039;&#039; file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Generata ipa atv free 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Open Xcode and click on &amp;quot;Create a new Xcode project&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot; and &amp;quot;Single View App&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi&amp;quot;, choose your Apple account name for the team, choose your name for the &amp;quot;Organization Name&amp;quot; and &amp;quot;com.yourusername&amp;quot; (without any space) for your &amp;quot;Organization identifier&amp;quot;. Then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Finally choose a location for the Xcode project then click on &amp;quot;Create&amp;quot;. &lt;br /&gt;
File:Generata ipa atv free 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Your Xcode project is now alive, open the devices list by clicking on the target device on the top left.&lt;br /&gt;
File:Generata ipa atv free 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose your your &amp;quot;real&amp;quot; connected Apple TV. Also, check for a &amp;quot;Fix issue&amp;quot; button on the signing panel, if this button is present click on it. Now you can close your Xcode window.&lt;br /&gt;
File:Generata ipa atv free 7.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Now open iOS App Signer, click on &amp;quot;Browse&amp;quot; and choose the Kodi DEB file, select the signing certificate corresponding to your Apple account, select the provisioning profile corresponding to the organization identifier that you have previously chosen, then click on &amp;quot;Start&amp;quot;.&lt;br /&gt;
File:Generata ipa atv free 8.png|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; Click on &amp;quot;Save&amp;quot; and wait until the Kodi IPA file appears in the same folder as the DEB file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== (option B) PAID Apple dev account with [https://streambuzz.net/apple-tv-top-shelf/ Top Shelf] ====&lt;br /&gt;
&lt;br /&gt;
During the step-by-step guide below you will need to extract the &amp;lt;code&amp;gt;.deb&amp;lt;/code&amp;gt; file and also a &amp;lt;code&amp;gt;.tar.xz&amp;lt;/code&amp;gt; file, to do that you can use an extractor app like [https://theunarchiver.com The Unarchiver], or also a Terminal with the command:&lt;br /&gt;
* &amp;lt;code&amp;gt;ar -p kodi-tvos.deb | tar -xf -&amp;lt;/code&amp;gt;, new directory &#039;&#039;&#039;Applications&#039;&#039;&#039; will appear where you can find Kodi.app&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Generata ipa atv paid 1.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Open Xcode and click on &amp;quot;Create a new Xcode project&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 2.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot; and &amp;quot;Single View App&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 3.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi&amp;quot;, choose your Apple account name for the team, choose your name for the &amp;quot;Organization Name&amp;quot; and &amp;quot;com.yourusername&amp;quot; (without any space) for your &amp;quot;Organization identifier&amp;quot;. Then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 4.png|&#039;&#039;&#039;Step 4:&#039;&#039;&#039; Finally choose a location for the Xcode project then click on &amp;quot;Create&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 5.png|&#039;&#039;&#039;Step 5:&#039;&#039;&#039; Your Xcode project is now alive, open the devices list by clicking on the target device on the top left.&lt;br /&gt;
File:Generata ipa atv paid 6.png|&#039;&#039;&#039;Step 6:&#039;&#039;&#039; Choose your your &amp;quot;real&amp;quot; connected Apple TV. Also, check for a &amp;quot;Fix issue&amp;quot; button on the signing panel, if this button is present click on it. Now you can close your Xcode window.&lt;br /&gt;
File:Generata ipa atv paid 6bis.png|&#039;&#039;&#039;Step 7:&#039;&#039;&#039; Click on &amp;quot;Capabilities&amp;quot;, then enable &amp;quot;App Groups&amp;quot;, click on the &amp;quot;+&amp;quot; button and create a new group group.com.yourusername.kodi, and finally enable this group.&lt;br /&gt;
File:Generata ipa atv paid 7.png|&#039;&#039;&#039;Step 8:&#039;&#039;&#039; Click on &amp;quot;File&amp;quot; --&amp;gt; &amp;quot;New&amp;quot; --&amp;gt; &amp;quot;Target..&amp;quot; &lt;br /&gt;
File:Generata ipa atv paid 8.png|&#039;&#039;&#039;Step 9:&#039;&#039;&#039; Choose &amp;quot;tvOS&amp;quot;, &amp;quot;TV Services Extension&amp;quot; then click on &amp;quot;Next&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 9.png|&#039;&#039;&#039;Step 10:&#039;&#039;&#039; Fill the &amp;quot;Product Name&amp;quot; with &amp;quot;kodi topshelf&amp;quot;, choose your Apple account name for the team and choose your name for the &amp;quot;Organization Name&amp;quot;, then click on &amp;quot;Finish&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 10.png|&#039;&#039;&#039;Step 11:&#039;&#039;&#039; Click on &amp;quot;Activate&amp;quot;.&lt;br /&gt;
File:Generata ipa atv paid 11.png|&#039;&#039;&#039;Step 12:&#039;&#039;&#039; Click on &amp;quot;Capabilities&amp;quot;, then enable &amp;quot;App Groups&amp;quot; and enable the group previously created.&lt;br /&gt;
File:Generata ipa atv paid 12.png|&#039;&#039;&#039;Step 13:&#039;&#039;&#039; Now close Xcode and open the folder that contains your Kodi DEB file, then right click on it and open it with your unarchiver app. You will obtain 3 files.&lt;br /&gt;
File:Generata ipa atv paid 13.png|&#039;&#039;&#039;Step 14:&#039;&#039;&#039; Right click on &amp;quot;data.tar.lzma&amp;quot; and open it with your unarchiver app. You will obtain a folder named &amp;quot;data&amp;quot;. Open &amp;quot;data&amp;quot; and all other folders until you find the &amp;quot;Kodi.app&amp;quot; file. Right click on it and choose &amp;quot;Show Package Contents&amp;quot; then open the &amp;quot;PlugIns&amp;quot; folder.&lt;br /&gt;
File:Generata ipa atv paid 14.png|&#039;&#039;&#039;Step 15:&#039;&#039;&#039; Open iOS App Signer, drag and drop &amp;quot;TVOSTopShelf.appex&amp;quot; in the &amp;quot;Input File&amp;quot; field, select the signing certificate corresponding to your Apple account, select the provisioning profile &amp;quot;com.yourusername.kodi.kodi-topshelf&amp;quot;, then click on &amp;quot;Start&amp;quot;. When the process has finished close iOS App Signer.&lt;br /&gt;
File:Generata ipa atv paid 15.png|&#039;&#039;&#039;Step 16:&#039;&#039;&#039; In your Finder window go back until you see the &amp;quot;Kodi.app&amp;quot; file. Open iOS App Signer, drag and drop &amp;quot;Kodi.ipa&amp;quot; in the &amp;quot;Input File&amp;quot; field, select the signing certificate corresponding to your Apple account, select the provisioning profile &amp;quot;com.yourusername.kodi&amp;quot;, &#039;&#039;&#039;check &amp;quot;ignore PlugIns folder&amp;quot;&#039;&#039;&#039;, then click on &amp;quot;Start&amp;quot;. Click on &amp;quot;Save&amp;quot; and wait until the Kodi IPA file appears in the same folder as the &amp;quot;Kodi.app&amp;quot; file.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install Kodi on your Apple TV ===&lt;br /&gt;
&lt;br /&gt;
Finally you have to install your freshly created IPA file to your device. To do that follow the step-by-step guide below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;225px&amp;quot;&amp;gt;&lt;br /&gt;
File:Pair atv4 5.png|&#039;&#039;&#039;Step 1:&#039;&#039;&#039; Start your Apple TV and stay on the main menu screen. Launch Xcode and then navigate to &amp;quot;Window&amp;quot; --&amp;gt; &amp;quot;Devices and Simulators&amp;quot; from the menu bar on top.&lt;br /&gt;
File:Sideload atv 1.png|&#039;&#039;&#039;Step 2:&#039;&#039;&#039; Select your device on the left panel and click on the &amp;quot;+&amp;quot; button.&lt;br /&gt;
File:Sideload atv 2.png|&#039;&#039;&#039;Step 3:&#039;&#039;&#039; Select your freshly generated IPA file then click on &amp;quot;Open&amp;quot;, finally wait until Kodi appear on your Apple TV main menu screen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Install on a jailbroken Apple TV ==&lt;br /&gt;
&lt;br /&gt;
It is simple to get Kodi working on your [[w:iOS jailbreaking|jailbroken]] Apple TV. Here you can find the current tvOS versions with an available jailbreak for the Apple TV 4 and 4K:&lt;br /&gt;
* &#039;&#039;&#039;10.2.2 to 11.1:&#039;&#039;&#039; [https://wiki.awkwardtv.org/wiki/Backr00m backr00m]&lt;br /&gt;
* &#039;&#039;&#039;11.0 to 11.4.1:&#039;&#039;&#039; [https://coolstar.org/electra/ electraTV]&lt;br /&gt;
* &#039;&#039;&#039;12.0 to 12.1.1:&#039;&#039;&#039; [https://chimera.sh chimeraTV]&lt;br /&gt;
* &#039;&#039;&#039;13.4.5 and below&#039;&#039;&#039; [https://unc0ver.dev/tvos/ unc0verTV]&lt;br /&gt;
* &#039;&#039;&#039;All versions&#039;&#039;&#039; [https://checkra.in Checkra1n]&lt;br /&gt;
&lt;br /&gt;
Once your Apple TV is jailbroken:&lt;br /&gt;
# Download the Kodi .deb file for tvOS: [http://mirrors.kodi.tv/test-builds/darwin/tvos/kodi-20180227-4a25e62-yab-tvos.deb Kodi 17.6 from Memphiz YAB branch (old but stable)] &#039;&#039;&#039;OR&#039;&#039;&#039; [http://mirrors.kodi.tv/nightlies/darwin/tvos/ latest Kodi 19 nightly build (it&#039;s an alpha version...)] and put it on your Desktop.&lt;br /&gt;
# Open a terminal window on your computer.&lt;br /&gt;
# Move to your desktop with &amp;lt;code&amp;gt;cd ~/Desktop&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Send the deb file to your Apple TV with &amp;lt;code&amp;gt;scp DEB_FILE root@IP_ADDRESS:/var/root/&#039;&amp;lt;/code&amp;gt; (adapt with your case, for example  &amp;lt;code&amp;gt;scp kodi-20180227-4a25e62-yab-tvos.deb root@192.168.1.3:/var/root/&amp;lt;/code&amp;gt;), the default password is &amp;lt;code&amp;gt;alpine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Connect to your Apple TV with &amp;lt;code&amp;gt;ssh root@IP_ADDRESS&amp;lt;/code&amp;gt;, default password is &amp;lt;code&amp;gt;alpine&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Install Kodi with &amp;lt;code&amp;gt;dpkg -i /var/root/kodi-20180227-4a25e62-yab-tvos.deb&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Refresh icons cache with &amp;lt;code&amp;gt;uicache&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Kodi should be on your main Apple TV screen.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.awkwardtv.org/wiki/Installing_Deb_Files Source]&lt;br /&gt;
&lt;br /&gt;
[[Category:Manual]]&lt;br /&gt;
[[Category:Apple]]&lt;br /&gt;
[[Category:How-to|IOS]]&lt;br /&gt;
[[Category:Installation|IOS]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=MySQL/Setting_up_Kodi&amp;diff=244581</id>
		<title>MySQL/Setting up Kodi</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=MySQL/Setting_up_Kodi&amp;diff=244581"/>
		<updated>2023-04-20T16:45:30Z</updated>

		<summary type="html">&lt;p&gt;Kambala: fixed redv element&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:MySQL/Contents}}&lt;br /&gt;
{{mininav| [[MySQL]] }}&lt;br /&gt;
Each device that will be sharing a library will need an [[Advancedsettings.xml|advancedsetting.xml]] file.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
{{-}}&lt;br /&gt;
==Make files accessible over the network==&lt;br /&gt;
If you haven&#039;t already done so, you will need to make your media files accessible to all your Kodi devices by sharing them on the network through file sharing. Kodi itself or the MySQL server will not share the actual files for this setup. Most operating systems have built-in methods for sharing files to the network, or a NAS device can be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
*If you use passwords on your network shares then you will need to copy (or [[MySQL/Sync other parts of Kodi|sync]]) your passwords.xml file from the userdata folder to each Kodi device.&lt;br /&gt;
*Do not use mapped drives on the OS-level, as Kodi will see those as local drives.&lt;br /&gt;
*If you use smb:// paths, you may want to use static IP addresses rather than NetBIOS names, as not all your devices may be able to resolve the latter.&lt;br /&gt;
*&#039;&#039;&#039;Even if the media is on the same computer as one of the Kodi instances, you MUST use a network share path. You cannot use a local file path with MySQL.&#039;&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[:Category:File sharing]] for some of the file sharing methods that work with Kodi.&lt;br /&gt;
&lt;br /&gt;
==Exporting==&lt;br /&gt;
{{see also|Backup|Import-export library}}&lt;br /&gt;
&lt;br /&gt;
{{note|You only need to do the exporting steps if you are migrating an existing local library to a MySQL database. The MySQL setup creates an entirely new library on the MySQL server, so this step allows you to preserve your old library and restore it once MySQL is used in Kodi.}}&lt;br /&gt;
&lt;br /&gt;
{{redv|&#039;&#039;&#039;Warning:&#039;&#039;&#039; |This will create individual &amp;quot;.nfo&amp;quot; and image files along side your video files. This is considered the safest way to backup and/or migrate a library (MySQL or otherwise), but some users might not want the file clutter.}}&lt;br /&gt;
&lt;br /&gt;
#Open Kodi on the computer that has the library you want to share&lt;br /&gt;
##Export the Video Library by doing the following:&lt;br /&gt;
###Go to &#039;&#039;&#039;Settings/Media/Library/Video Library&#039;&#039;&#039; and select &#039;&#039;&#039;Export library&#039;&#039;&#039;&lt;br /&gt;
###Select &#039;&#039;&#039;Multiple files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
##Export the Music Library by doing the following:&lt;br /&gt;
###Go to &#039;&#039;&#039;&#039;Settings/Media/Library/Music Library&#039;&#039;&#039; and select &#039;&#039;&#039;Export library&#039;&#039;&#039;&lt;br /&gt;
###Select &#039;&#039;&#039;Multiple files&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==MySQL and advancedsettings.xml==&lt;br /&gt;
{| class=infobox&lt;br /&gt;
| advancedsettings.xml:&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;advancedsettings&amp;gt;&lt;br /&gt;
  &amp;lt;videodatabase&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;mysql&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;***.***.***.***&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;3306&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;user&amp;gt;kodi&amp;lt;/user&amp;gt;&lt;br /&gt;
    &amp;lt;pass&amp;gt;kodi&amp;lt;/pass&amp;gt;&lt;br /&gt;
  &amp;lt;/videodatabase&amp;gt; &lt;br /&gt;
  &amp;lt;musicdatabase&amp;gt;&lt;br /&gt;
    &amp;lt;type&amp;gt;mysql&amp;lt;/type&amp;gt;&lt;br /&gt;
    &amp;lt;host&amp;gt;***.***.***.***&amp;lt;/host&amp;gt;&lt;br /&gt;
    &amp;lt;port&amp;gt;3306&amp;lt;/port&amp;gt;&lt;br /&gt;
    &amp;lt;user&amp;gt;kodi&amp;lt;/user&amp;gt;&lt;br /&gt;
    &amp;lt;pass&amp;gt;kodi&amp;lt;/pass&amp;gt;&lt;br /&gt;
  &amp;lt;/musicdatabase&amp;gt;&lt;br /&gt;
  &amp;lt;videolibrary&amp;gt;&lt;br /&gt;
    &amp;lt;importwatchedstate&amp;gt;true&amp;lt;/importwatchedstate&amp;gt;&lt;br /&gt;
    &amp;lt;importresumepoint&amp;gt;true&amp;lt;/importresumepoint&amp;gt;&lt;br /&gt;
  &amp;lt;/videolibrary&amp;gt;&lt;br /&gt;
&amp;lt;/advancedsettings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;&#039;&#039;See also this note about using the &amp;lt;name&amp;gt; tag: [[#Name tag]]&amp;lt;br/&amp;gt;&amp;lt;importwatchedstate&amp;gt; is only needed when you&#039;re importing a previous library from exported files.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
#Create (or add to, if you already have one) an [[Advancedsettings.xml#.3Cmusicdatabase.3E.2F.3Cvideodatabase.3E|advancedsettings.xml]] file:&lt;br /&gt;
##Open up a plain text editor&lt;br /&gt;
##Copy and paste the text from the right-hand box into a new text document&lt;br /&gt;
##Replace the two instances of &amp;lt;code&amp;gt;***.***.***.***&amp;lt;/code&amp;gt; with local network IP address of your MySQL server. If you installed MySQL on a Windows machine, do not use its NetBIOS name, as not all devices may be able to resolve them.&lt;br /&gt;
##Save the file as &#039;&#039;&#039;advancedsettings.xml&#039;&#039;&#039;&lt;br /&gt;
#Copy this &#039;&#039;advancedsettings.xml&#039;&#039; file you just created to the &#039;&#039;&#039;[[Userdata]]&#039;&#039;&#039; of every Kodi install you want to sync with.&lt;br /&gt;
{{-}}&lt;br /&gt;
&lt;br /&gt;
{{note|Sometimes it takes your dhcp too long before an ip-address is assigned to the local machine and the [https://github.com/samnazarko/osmc/issues/131 mysql driver are therefore not loaded]. In this case the library will appear empty and will not show resumepoints and watchedstates. In that case run &amp;lt;code&amp;gt;sudo systemctl enable connman-wait-for-network.service&amp;lt;/code&amp;gt; on the shell or look for the option &amp;quot;wait for a network connection before loading&amp;quot; in the network options}}&lt;br /&gt;
&lt;br /&gt;
==Importing==&lt;br /&gt;
At this point Kodi is using the MySQL server for the database, which means it has a new blank library. Now we can either import an old library (see below) or simply start a new library (see [[HOW-TO:Create_Video_Library]]). From this point on, Kodi behaves exactly like it would as if it had a local database, except that database is on the MySQL server and multiple installs can access that single database.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open any of your installs and re-import your library data, &#039;&#039;or&#039;&#039; simply set up a new library if you are starting fresh.&lt;br /&gt;
# Add (or just &amp;quot;set content&amp;quot; on) the networked video source to Kodi and scan it in as if you were setting up your library for the first time (see [[HOW-TO:Create_Video_Library|adding videos to the library]]). However, Kodi will read the exported nfo files and images and use those instead of rebuilding the library from scratch. The end result will be an identical library, and your watched status for videos will be preserved.&lt;br /&gt;
#:{{Note|You must add a network source using Kodi&#039;s standard formatting. For example, use &amp;quot;smb://192.168.1.20/Videos/&amp;quot; and not &amp;quot;\\BOBPC\Videos\&amp;quot;.  Try to use static IP addresses over NetBIOS names if using SMB.}}&lt;br /&gt;
# Import the Music Library by doing the following: Same idea as videos, but using the steps for [[HOW-TO:Create_Music_Library|adding music to the library]]. You&#039;ll end up with an identical library.&lt;br /&gt;
You can now add files and update the library from any of your devices and the library for all of them will stay in sync.&lt;br /&gt;
&lt;br /&gt;
== Adding new Kodi devices to the MySQL setup ==&lt;br /&gt;
Since the database has now been set up on the MySQL server, all you need to do for any additional Kodi devices, is to copy a small number of files/folders.&lt;br /&gt;
* Copy the MySQL connections section for video and/or music databases into the &#039;&#039;&#039;advancedsettings.xml&#039;&#039;&#039; file on the other Kodi client(s). If you have identical Kodi devices, simply copy the whole advancedsettings.xml file from the initially setup Kodi device.&lt;br /&gt;
* Copy from the same userdata root folder the files, such as &amp;quot;&#039;&#039;&#039;favourites.xml&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;sources.xml&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;mediasources.xml&#039;&#039;&#039;&amp;quot;, &amp;quot;&#039;&#039;&#039;passwords.xml&#039;&#039;&#039;&amp;quot; (if present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To have the other Kodi client(s) also benefit from the already downloaded/cached art thumbnails:&lt;br /&gt;
* Copy the &#039;&#039;&#039;Textures13.db&#039;&#039;&#039; file from the &#039;&#039;&#039;userdata/Database folder&#039;&#039;&#039; to the other Kodi client(s).&lt;br /&gt;
* Copy the full &#039;&#039;&#039;Thumbnails&#039;&#039;&#039; subfolder from the userdata folder to other Kodi client(s). (This subfolder may contain several megabytes of small files when dealing with large video/music collections)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You don&#039;t need to do any of the other steps, such as rescanning or reimporting. Any fanart not already cached will be downloaded shortly after. If this method works on one device, it should work on all of them, as they are basically sharing the same &amp;quot;brain&amp;quot; for the video/music metadata.&lt;br /&gt;
&lt;br /&gt;
If you however used a metadata collector add-on ([[Scrapers|scraper]]) that does not ship by default with new installations, such as the [[Add-on:Universal Movie Scraper|Universal Movie Scraper]] you will not be able to display the [[Basic_controls|media information screen]] on the new Kodi device. To fix that, you need to install the same metadata collector add-on on the new device.&lt;br /&gt;
&lt;br /&gt;
==Name tag==&lt;br /&gt;
&amp;lt;section begin=&amp;quot;name tag&amp;quot; /&amp;gt;&lt;br /&gt;
An additional &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; tag can be used for both the &amp;lt;code&amp;gt;&amp;lt;videodatabase&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;musicdatabase&amp;gt;&amp;lt;/code&amp;gt; entries in advancedsettings.xml file, if you want to change the name of the database. The &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; tag is not required. Kodi will use &amp;quot;MyVideos&amp;quot; and &amp;quot;MyMusic&amp;quot; as database names if the &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; tag is not specified. &lt;br /&gt;
&lt;br /&gt;
You may want to do this if you want to have multiple separate libraries (with different content) on the same MySQL server. For example, if you want to create multiple profiles, each with their own shared library, so that each Kodi device can &amp;quot;log-into&amp;quot; that library. (a kids library, a guest library, etc)&lt;br /&gt;
&lt;br /&gt;
{{note|Don&#039;t try to merge the video and music databases! You need to use different values in the &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; tag or you&#039;ll end up confusing Kodi leading to the library functionality not working at all. In other words, don&#039;t use &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;Kids&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt; for both music and videos, but instead use something like &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;Kids-music&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;Kids-video&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
{{Krypton updated}}&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Official_Kodi_Remote/iOS&amp;diff=225176</id>
		<title>Official Kodi Remote/iOS</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Official_Kodi_Remote/iOS&amp;diff=225176"/>
		<updated>2021-04-03T11:56:28Z</updated>

		<summary type="html">&lt;p&gt;Kambala: update URL to Github repo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{mininav|[[Main_Page]]|[[Remote_controls]]|[[Smartphone/tablet_remotes|Phones/tablets]]|[[Official Kodi Remote|Official]] }}&lt;br /&gt;
{{Infobox information appliance&lt;br /&gt;
| name         = Official Kodi Remote&lt;br /&gt;
| logo         = [[File:IOS_remote_icon.png]]&lt;br /&gt;
| image        = &lt;br /&gt;
| caption      = &lt;br /&gt;
| developer    = Team Kodi&lt;br /&gt;
| os = iOS 5 and above&lt;br /&gt;
| website      = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Official Kodi Remote&#039;&#039;&#039; for iOS is a full-featured, open source remote control for Kodi Media Center. It features library browsing, now playing informations and a direct remote control. &lt;br /&gt;
It&#039;s freely available on [http://itunes.apple.com/us/app/unofficial-official-xbmc-remote/id520480364?ls=1&amp;amp;mt=8 AppStore]&lt;br /&gt;
&lt;br /&gt;
Please note: Supported Kodi version is v11 (Eden) or higher.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== General ===&lt;br /&gt;
* Remote control&lt;br /&gt;
* Control Kodi&#039;s volume&lt;br /&gt;
* Manage multiple Kodi instances&lt;br /&gt;
* Live view of currently playing playlist&lt;br /&gt;
* Setting that prevents your phone locking the screen.&lt;br /&gt;
* Swipe left and right gesture recognizer for an easy navigation&lt;br /&gt;
=== Music Library ===&lt;br /&gt;
* Cover art is shown where available&lt;br /&gt;
* Now playing screen allows skipping, seeking, stop and pause&lt;br /&gt;
* Browse by album, artist, genre&lt;br /&gt;
* List all albums and songs of an artist&lt;br /&gt;
* Browse files directly&lt;br /&gt;
* Play and queue albums, songs, genre selections and much more directly without having to turn on your TV. &lt;br /&gt;
* Listing of current playlist with options to jump to another song or remove a song with Music Party mode support&lt;br /&gt;
=== Movie Library ===&lt;br /&gt;
* Browse by title, actors, genre.&lt;br /&gt;
* Displays movie poster and actor thumbs where available.&lt;br /&gt;
=== TV Shows Library ===&lt;br /&gt;
* Browse by show, season, episode.&lt;br /&gt;
* Dynamic thumb rendering with wide banner support&lt;br /&gt;
* Displays episode and show details&lt;br /&gt;
&lt;br /&gt;
== iPhone/iPod Screenshots (app version 1.2.x) ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:1 three screens mainmenu.png&lt;br /&gt;
File:2 three screens now playing.png&lt;br /&gt;
File:3 three screens remote.png&lt;br /&gt;
File:4 two screens music album.png&lt;br /&gt;
File:5 two screens tvshow seasons.png&lt;br /&gt;
File:6 three screens clearlogo.png&lt;br /&gt;
File:Official XBMC Remote 1.2 a.png&lt;br /&gt;
File:Official XBMC Remote 1.2 b.png&lt;br /&gt;
File:Official XBMC Remote 1.2 c.png&lt;br /&gt;
File:Official XBMC Remote 1.2 d.png&lt;br /&gt;
File:Official XBMC Remote 1.2 e.png&lt;br /&gt;
File:Official XBMC Remote 1.2 f.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== iPad Screenshots (app version 1.2.x) ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:A1.png&lt;br /&gt;
File:iOS-A2.png&lt;br /&gt;
File:A3.png&lt;br /&gt;
File:A4.png&lt;br /&gt;
File:Official XBMC Remote 1.2 g.png&lt;br /&gt;
File:Official XBMC Remote 1.2 h.png&lt;br /&gt;
File:Official XBMC Remote 1.2 i.png&lt;br /&gt;
File:Official XBMC Remote 1.2 l.png&lt;br /&gt;
File:Official XBMC Remote 1.2 m.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== old iPhone/iPod Screenshots (app version 1.0.x - 1.1.x) ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Fest small.png&lt;br /&gt;
File:Old_iOS_remote_logo&lt;br /&gt;
File:Unofficial official xbmc remote 1.png&lt;br /&gt;
File:Unofficial official xbmc remote 2.png&lt;br /&gt;
File:Unofficial official xbmc remote 3.png&lt;br /&gt;
File:Unofficial official xbmc remote 4.png&lt;br /&gt;
File:Unofficial official xbmc remote 5.png&lt;br /&gt;
File:Unofficial official xbmc remote 6.png&lt;br /&gt;
File:Unofficial official xbmc remote 7.png&lt;br /&gt;
File:Unofficial official xbmc remote 8.png&lt;br /&gt;
File:Unofficial official xbmc remote 9.png&lt;br /&gt;
File:Unofficial official xbmc remote 10.png&lt;br /&gt;
File:Unofficial official xbmc remote 11.png&lt;br /&gt;
File:Unofficial official xbmc remote 12.png&lt;br /&gt;
File:Unofficial official xbmc remote 13.png&lt;br /&gt;
File:Unofficial official xbmc remote 14.png&lt;br /&gt;
File:Official XBMC remote 1.png&lt;br /&gt;
File:Official XBMC remote 2.png&lt;br /&gt;
File:Unofficial official xbmc remote 16.png&lt;br /&gt;
File:Unofficial official xbmc remote 17.png&lt;br /&gt;
File:Unofficial official xbmc remote 18.png&lt;br /&gt;
File:Unofficial official xbmc remote 19.png&lt;br /&gt;
File:Unofficial official xbmc remote 20.png&lt;br /&gt;
File:Unofficial official xbmc remote 21.png&lt;br /&gt;
File:Unofficial official xbmc remote 22.png&lt;br /&gt;
File:Unoffical Official XBMC Remote for iOS.png&lt;br /&gt;
File:Official_xbmc_remote_forum_announcement.jpg‎&lt;br /&gt;
File:XBMC jeans pocket.png&lt;br /&gt;
File:Remote Control Quick Help.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== old iPad Screenshots  (app version 1.0.x - 1.1.x) ==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Old_iOS_remote_logo.png&lt;br /&gt;
File:Official xbmc remote 1.png&lt;br /&gt;
File:Official xbmc remote 2.png&lt;br /&gt;
File:Official xbmc remote 3.png&lt;br /&gt;
File:Official xbmc remote 4.png&lt;br /&gt;
File:Official xbmc remote 5.png&lt;br /&gt;
File:Official xbmc remote 5b.png&lt;br /&gt;
File:Official xbmc remote 5c.png&lt;br /&gt;
File:Official xbmc remote 5d.png&lt;br /&gt;
File:Official xbmc remote 6.png&lt;br /&gt;
File:Official xbmc remote 7.png&lt;br /&gt;
File:Official xbmc remote 8.png&lt;br /&gt;
File:Official xbmc remote 9.png&lt;br /&gt;
File:Official xbmc remote 9b.png&lt;br /&gt;
File:Official xbmc remote 11.png&lt;br /&gt;
File:Official xbmc remote 11b.png&lt;br /&gt;
File:Official xbmc remote 12.png&lt;br /&gt;
File:Official xbmc remote 14.png&lt;br /&gt;
File:Remote Control Quick Help.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== old iPhone Video demo  (app version 1.0.x - 1.1.x) ==&lt;br /&gt;
{{youtube|eAaKlgbD7_U}}&lt;br /&gt;
&lt;br /&gt;
== old iPad Video demo  (app version 1.0.x - 1.1.x) ==&lt;br /&gt;
{{youtube|uP8P9gSm8lE}}&lt;br /&gt;
&lt;br /&gt;
== Support Forum ==&lt;br /&gt;
* [https://forum.kodi.tv/forumdisplay.php?fid=193 Kodi Remote for iOS Official Forum]&lt;br /&gt;
&lt;br /&gt;
== GitHub Project ==&lt;br /&gt;
* [https://github.com/xbmc/Official-Kodi-Remote-iOS &amp;quot;Official Kodi Remote&amp;quot; GitHub project]&lt;br /&gt;
&lt;br /&gt;
[[Category:Remotes]]&lt;br /&gt;
[[Category:Apple]]&lt;br /&gt;
[[Category:Manual]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_settings&amp;diff=191393</id>
		<title>Add-on settings</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_settings&amp;diff=191393"/>
		<updated>2020-01-05T10:14:39Z</updated>

		<summary type="html">&lt;p&gt;Kambala: fixed first setting name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|Deprecated - Addons submitted to the Kodi 19 Matrix (and up) can use the new setting format.  see [[Add-on_settings_conversion]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{mininav|[[Development]]|[[Add-on development]]}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{see also|Python development}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
settings.xml is a XML file that contains the current configuration for the addon and should be placed in the resources direcory (my.addon.id/resources/settings.xml). If your addon has&lt;br /&gt;
configurable items that are set by the user, put them here. This file defines what the user sees&lt;br /&gt;
when they click on Addon settings for your addon. You don&#039;t need to do any coding to utilise this functionality.&lt;br /&gt;
The format for the settings file is relatively straightforward as can be seen in the following example:&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;settings&amp;gt;&lt;br /&gt;
    &amp;lt;category label=&amp;quot;32001&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32011&amp;quot; type=&amp;quot;text&amp;quot;   id=&amp;quot;username&amp;quot; default=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32012&amp;quot; type=&amp;quot;text&amp;quot;   id=&amp;quot;password&amp;quot; option=&amp;quot;hidden&amp;quot;  enable=&amp;quot;!eq(-1,)&amp;quot; default=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32053&amp;quot; type=&amp;quot;slider&amp;quot; id=&amp;quot;limit&amp;quot; subsetting=&amp;quot;true&amp;quot; default=&amp;quot;20&amp;quot; range=&amp;quot;5,5,100&amp;quot; option=&amp;quot;int&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;setting type=&amp;quot;sep&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting id=&amp;quot;debug&amp;quot; type=&amp;quot;bool&amp;quot; label=&amp;quot;32013&amp;quot; default=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/category&amp;gt;&lt;br /&gt;
    &amp;lt;category label=&amp;quot;32010&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32032&amp;quot; type=&amp;quot;action&amp;quot; action=&amp;quot;RunScript(my.addon.id, downloadreport)&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to supply at least one category element.&lt;br /&gt;
The label attribute of both categories and settings should be the id of a language string in your language files or the one of the main Kodi language file.&lt;br /&gt;
&lt;br /&gt;
There are some functionality not cover by this wiki page. See C++ source:&lt;br /&gt;
  https://github.com/xbmc/xbmc/tree/master/xbmc/addons/settings/GUIDialogAddonSettings.cpp&lt;br /&gt;
&lt;br /&gt;
== Elements ==&lt;br /&gt;
&lt;br /&gt;
=== Separators ===&lt;br /&gt;
Separators are purely user-interface elements that do not allow user input and therefore have no meaningful value as a setting.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;sep&amp;quot; ====&lt;br /&gt;
A line separator, it adds a horizontal line that is useful to separate groups of settings.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting type=&amp;quot;sep&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;lsep&amp;quot; ====&lt;br /&gt;
A label separator, it adds a heading text that can be used to display on top of a group of settings.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32032&amp;quot; type=&amp;quot;lsep&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Text input ===&lt;br /&gt;
Text input elements allow a user to input text in various formats. The &amp;quot;label&amp;quot; attribute must contain an id from the language file that indicates which text to display for the input field.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;text&amp;quot; ====&lt;br /&gt;
Allow a user to enter one line of text.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* option=&amp;quot;hidden&amp;quot;|&amp;quot;urlencoded&amp;quot; (optional)&lt;br /&gt;
:if set to &amp;quot;hidden&amp;quot;, each characters entered by the user will be obfuscated with an asterisks (&amp;quot;*&amp;quot;), as is usual for entering passwords.&lt;br /&gt;
:if set to &amp;quot;urlencoded&amp;quot;, each non-alphanumeric characters entered by the user will be &amp;quot;escaped&amp;quot; using %XX encoding.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;text&amp;quot; id=&amp;quot;username&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;username&amp;quot; value=&amp;quot;john.doe&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|Security consideration: when using &amp;lt;nowiki&amp;gt;option=&amp;quot;hidden&amp;quot;&amp;lt;/nowiki&amp;gt;, the value entered by the user is still saved as an unencrypted string value on disk.}}&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;ipaddress&amp;quot; ====&lt;br /&gt;
Allow a user to enter an ip address as text.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32035&amp;quot; type=&amp;quot;ipaddress&amp;quot; id=&amp;quot;ipaddress&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;ipaddress&amp;quot; value=&amp;quot;127.0.0.1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Numeric input ===&lt;br /&gt;
Numeric input elements allow a user to enter a number. The &amp;quot;label&amp;quot; attribute must contain an id from the language file that indicates which text to display for the input field.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;number&amp;quot; ====&lt;br /&gt;
Allows the user to enter an integer using up/down buttons.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32036&amp;quot; type=&amp;quot;number&amp;quot; id=&amp;quot;code&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;code&amp;quot; value=&amp;quot;127000&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Python, calling xbmcplugin.getSetting will return the number as a string value, which must be converted to an integer value if needed}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Date and time  input ===&lt;br /&gt;
==== type=&amp;quot;date&amp;quot; ====&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display or string&lt;br /&gt;
* default=&amp;quot;2015-03-12&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;record_date&amp;quot; type=&amp;quot;date&amp;quot; label=&amp;quot;32030&amp;quot; default=&amp;quot;2015-03-12&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;time&amp;quot; ====&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display or string&lt;br /&gt;
* default=&amp;quot;13:13&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;record_time&amp;quot; type=&amp;quot;time&amp;quot; label=&amp;quot;32031&amp;quot; default=&amp;quot;13:13&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
Boolean input elements allow a user to switch a setting on or off.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;bool&amp;quot; ====&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;true&amp;quot;|&amp;quot;false&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;bool&amp;quot; id=&amp;quot;background&amp;quot; default=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&amp;quot;true&amp;quot; and &amp;quot;false&amp;quot; are case sensitive!}}&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;background&amp;quot; value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Python, calling xbmcplugin.getSetting will return a string &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;, which must be converted to a boolean value if needed}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Select dialog ===&lt;br /&gt;
Will open separate selection window &lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;select&amp;quot; ====&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;values=&amp;quot;&#039;&#039;value1&#039;&#039;[|&#039;&#039;value2&#039;&#039;[...]]&amp;quot; - or -&lt;br /&gt;
* &#039;&#039;&#039;lvalues=&amp;quot;&#039;&#039;id1&#039;&#039;[|&#039;&#039;id2&#039;&#039;[...]]&amp;quot; (required): A list of values or language file ids from which the user can choose.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;id_select&amp;quot; type=&amp;quot;select&amp;quot; label=&amp;quot;32000&amp;quot; lvalues=&amp;quot;32001|32002|32003|32004&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;addon&amp;quot; ====&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;addontype=&amp;quot;&#039;&#039;xbmc.metadata.scraper.movies&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - type of addon.&lt;br /&gt;
* multiselect=&amp;quot;&#039;&#039;true|false&#039;&#039;&amp;quot; (optional) - allows to select several addons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;id_addon&amp;quot; type=&amp;quot;addon&amp;quot; label=&amp;quot;32111&amp;quot; default=&amp;quot;&amp;quot; addontype=&amp;quot;xbmc.metadata.scraper.movies&amp;quot;  multiselect=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spinner ===&lt;br /&gt;
A rotary selector allows the user to selected from a list of predefined values. &lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;enum&amp;quot; or &amp;quot;labelenum&amp;quot; ====&lt;br /&gt;
Both element types work the same except that the &amp;quot;enum&amp;quot; type will use the index of the chosen value, wheras the &amp;quot;labelenum&amp;quot; will use the actual value.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;values=&amp;quot;&#039;&#039;value1&#039;&#039;[|&#039;&#039;value2&#039;&#039;[...]]&amp;quot; - or -&lt;br /&gt;
* &#039;&#039;&#039;lvalues=&amp;quot;&#039;&#039;id1&#039;&#039;[|&#039;&#039;id2&#039;&#039;[...]]&amp;quot; (required):&lt;br /&gt;
: A list of values or language file ids from which the user can choose.&lt;br /&gt;
* values=&amp;quot;$HOURS&amp;quot; is special case to select hour&lt;br /&gt;
* sort=&amp;quot;yes&amp;quot; - sorts labels ( works only for type=&amp;quot;labelenum&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32018&amp;quot; type=&amp;quot;enum&amp;quot; id=&amp;quot;service1&amp;quot; lvalues=&amp;quot;32021|32022|32023|32024&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32020&amp;quot; type=&amp;quot;labelenum&amp;quot; id=&amp;quot;service3&amp;quot; lvalues=&amp;quot;32021|32022|32023|32024&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32022&amp;quot; type=&amp;quot;enum&amp;quot; id=&amp;quot;default_enumhours&amp;quot; values=&amp;quot;$HOURS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Selecting the value &amp;quot;One&amp;quot; will return the int value &amp;quot;0&amp;quot;, selecting the value &amp;quot;Two&amp;quot; will return the int value &amp;quot;1&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string. For &amp;quot;enum&amp;quot;-type settings the index of the value is saved, starting at 0 for the first value. For &amp;quot;labelenum&amp;quot;-type settings the value is saved or, in case the lvalues attribute is used, the label translated in the language of the user.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;service1&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;service3&amp;quot; value=&amp;quot;SomethingTranslated&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Slider ===&lt;br /&gt;
Will display a slider control&lt;br /&gt;
==== type=&amp;quot;slider&amp;quot; ====&lt;br /&gt;
Allows the user to select a numberic value using a horizontal sliding bar.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32053&amp;quot; type=&amp;quot;slider&amp;quot; id=&amp;quot;limit&amp;quot; default=&amp;quot;20&amp;quot; range=&amp;quot;5,5,100&amp;quot; option=&amp;quot;int&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32053&amp;quot; type=&amp;quot;slider&amp;quot; id=&amp;quot;limit&amp;quot; default=&amp;quot;20&amp;quot; range=&amp;quot;0,100&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;range=&amp;quot;&#039;&#039;min&#039;&#039;[,&#039;&#039;step&#039;&#039;],&#039;&#039;max&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - specify the range of valid values.&lt;br /&gt;
* &#039;&#039;&#039;option=&amp;quot;int&amp;quot;|&amp;quot;float&amp;quot;|&amp;quot;percent&amp;quot;&#039;&#039;&#039; (required) - specifies whether to allow the user to choose between integers, floating point numbers or a percentage.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string representation of a floating point value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;limit&amp;quot; value=&amp;quot;5.000000&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Python, calling xbmcplugin.getSetting will return a string, which must be converted to an int, float or percentage value if needed}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Browser dialog ===&lt;br /&gt;
File and folder browsing elements allow a user to select a file or folder by browsing the local disks or network. You can specify a media type to show only files of the chosen type to the user. The &amp;quot;label&amp;quot; attribute must contain an id from the language file that indicates which text to display for the input field.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;file&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;video&amp;quot;, &amp;quot;image&amp;quot; or &amp;quot;executable&amp;quot; ====&lt;br /&gt;
Allow the user to browse for and select a file. When using type=&amp;quot;audio&amp;quot;, &amp;quot;video&amp;quot;, &amp;quot;image&amp;quot; or &amp;quot;executable&amp;quot;, only files of those types are displayed to the user.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;file&amp;quot; id=&amp;quot;file&amp;quot; default=&amp;quot;path_to_files&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full path to the file selected by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;file&amp;quot; value=&amp;quot;smb://path_to_files/file.ext&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;folder&amp;quot; ====&lt;br /&gt;
Allow the user to browse for and select a folder.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* source=&amp;quot;video&amp;quot;, &amp;quot;music&amp;quot;, &amp;quot;pictures&amp;quot;, &amp;quot;programs&amp;quot;, &amp;quot;files&amp;quot;, &amp;quot;local&amp;quot; or blank - will show the respective folders from sources.xml in the browse dialog. source=&amp;quot;&amp;quot; will list both local drives and network shares.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional, default=&amp;quot;&amp;quot;) - the default value.&lt;br /&gt;
* option=&amp;quot;writeable&amp;quot; (optional, default=&amp;quot;&amp;quot;) - the user can be allowed to create and select new folders by setting this argument.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;folder&amp;quot; id=&amp;quot;folder&amp;quot; source=&amp;quot;auto&amp;quot; option=&amp;quot;writeable&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full path to the folder selected by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;folder&amp;quot; value=&amp;quot;smb://path_to_files/&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;fileenum&amp;quot; ====&lt;br /&gt;
Display files in a folder as an enum selector.&lt;br /&gt;
&lt;br /&gt;
Example: List sub-folders of the &#039;resources&#039; folder for this add-on in the settings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32000&amp;quot; id=&amp;quot;myenum&amp;quot; type=&amp;quot;fileenum&amp;quot; values=&amp;quot;resources&amp;quot; mask=&amp;quot;/&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Extra attributes ====&lt;br /&gt;
&lt;br /&gt;
* mask=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; - filter selectable files. Examples: &amp;quot;/&amp;quot; - display only folders. &amp;quot;*.txt&amp;quot; - display only .txt files.&lt;br /&gt;
* option=&amp;quot;hideext&amp;quot; - hide file extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Action execution ===&lt;br /&gt;
==== type = &amp;quot;action&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Adds line to configuration windows which allow to execute action&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32032&amp;quot; type=&amp;quot;action&amp;quot; action=&amp;quot;RunScript(my.addon.id, downloadreport)&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
List of actions that can be used:&lt;br /&gt;
* [[List of built-in functions]]&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* option=&amp;quot;close&amp;quot; (close the settings dialog before executing the action)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Settings can optionally have a visible and/or enable attribute:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| visible=&amp;quot;&amp;quot; || &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot; or conditional.&amp;lt;br /&amp;gt;Determines if the setting is displayed in the settings dialog (default = &#039;true&#039;)&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| enable=&amp;quot;&amp;quot; || &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot; or conditional.&amp;lt;br /&amp;gt;Allows you to determine whether this setting should be shown as greyed-out and unable to be changed.&lt;br /&gt;
|-&lt;br /&gt;
| conditions || 3 comparators are available to allow a setting to be made visible or enabled based on other settings:&lt;br /&gt;
* eq() Equal to&lt;br /&gt;
* gt() Greater than&lt;br /&gt;
* lt() Less than&lt;br /&gt;
&lt;br /&gt;
One can AND the comparators using the + symbol, and OR the comparators using the | symbol. A combination of AND and OR is not currently supported.&lt;br /&gt;
&lt;br /&gt;
One can negate a comparator using the ! symbol (e.g. !eq() ).&lt;br /&gt;
&lt;br /&gt;
Each comparator takes 2 operands:&lt;br /&gt;
* Relative position of setting to compare&lt;br /&gt;
* Value to compare against&lt;br /&gt;
&lt;br /&gt;
Thus if we place settings in our file in this order:&lt;br /&gt;
: myFirstSetting&lt;br /&gt;
: mySecondSetting&lt;br /&gt;
: myThirdSetting&lt;br /&gt;
&lt;br /&gt;
for the third setting we might add the option:&amp;lt;br /&amp;gt;&lt;br /&gt;
enable=&amp;quot;gt(-2,3) + lt(-2,8)&amp;quot;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also use a conditional statement: enable=&amp;quot;System.HasAddon(plugin.video.youtube)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Comparisons CANNOT be made across category/page boundaries. If one needs to compare to a setting on a different page, a copy of the setting with the same id can be placed on the page where the comparison is to take place and then hidden by setting visible to &#039;false&#039;. The value is automatically updated when the setting on the other page is updated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Subsettings==&lt;br /&gt;
&lt;br /&gt;
You can create a subsetting by adding &#039;&#039;&#039;subsetting=&amp;quot;true&amp;quot;&#039;&#039;&#039; to a setting. &lt;br /&gt;
This will add dash in front of the setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-ons|*]]&lt;br /&gt;
[[Category:Settings]]&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Add-on_settings&amp;diff=190297</id>
		<title>Add-on settings</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Add-on_settings&amp;diff=190297"/>
		<updated>2019-12-29T09:39:55Z</updated>

		<summary type="html">&lt;p&gt;Kambala: fixed URL to C++ source&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{note|Deprecated - Addons submitted to the Kodi 19 Matrix (and up) can use the new setting format.  see [[Add-on_settings_conversion]]}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{mininav|[[Development]]|[[Add-on development]]}}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{see also|Python development}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
settings.xml is a XML file that contains the current configuration for the addon and should be placed in the resources direcory (my.addon.id/resources/settings.xml). If your addon has&lt;br /&gt;
configurable items that are set by the user, put them here. This file defines what the user sees&lt;br /&gt;
when they click on Addon settings for your addon. You don&#039;t need to do any coding to utilise this functionality.&lt;br /&gt;
The format for the settings file is relatively straightforward as can be seen in the following example:&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;settings&amp;gt;&lt;br /&gt;
    &amp;lt;category label=&amp;quot;32001&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32011&amp;quot; type=&amp;quot;text&amp;quot;   id=&amp;quot;username&amp;quot; default=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32012&amp;quot; type=&amp;quot;text&amp;quot;   id=&amp;quot;password&amp;quot; option=&amp;quot;hidden&amp;quot;  enable=&amp;quot;!eq(-1,)&amp;quot; default=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32053&amp;quot; type=&amp;quot;slider&amp;quot; id=&amp;quot;limit&amp;quot; subsetting=&amp;quot;true&amp;quot; default=&amp;quot;20&amp;quot; range=&amp;quot;5,5,100&amp;quot; option=&amp;quot;int&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;setting type=&amp;quot;sep&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting id=&amp;quot;debug&amp;quot; type=&amp;quot;bool&amp;quot; label=&amp;quot;32013&amp;quot; default=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/category&amp;gt;&lt;br /&gt;
    &amp;lt;category label=&amp;quot;32010&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting label=&amp;quot;32032&amp;quot; type=&amp;quot;action&amp;quot; action=&amp;quot;RunScript(my.addon.id, downloadreport)&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/category&amp;gt;&lt;br /&gt;
&amp;lt;/settings&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to supply at least one category element.&lt;br /&gt;
The label attribute of both categories and settings should be the id of a language string in your language files or the one of the main Kodi language file.&lt;br /&gt;
&lt;br /&gt;
There are some functionality not cover by this wiki page. See C++ source:&lt;br /&gt;
  https://github.com/xbmc/xbmc/tree/master/xbmc/addons/settings/GUIDialogAddonSettings.cpp&lt;br /&gt;
&lt;br /&gt;
== Elements ==&lt;br /&gt;
&lt;br /&gt;
=== Separators ===&lt;br /&gt;
Separators are purely user-interface elements that do not allow user input and therefore have no meaningful value as a setting.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;sep&amp;quot; ====&lt;br /&gt;
A line separator, it adds a horizontal line that is useful to separate groups of settings.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting type=&amp;quot;sep&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;lsep&amp;quot; ====&lt;br /&gt;
A label separator, it adds a heading text that can be used to display on top of a group of settings.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32032&amp;quot; type=&amp;quot;lsep&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Text input ===&lt;br /&gt;
Text input elements allow a user to input text in various formats. The &amp;quot;label&amp;quot; attribute must contain an id from the language file that indicates which text to display for the input field.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;text&amp;quot; ====&lt;br /&gt;
Allow a user to enter one line of text.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* option=&amp;quot;hidden&amp;quot;|&amp;quot;urlencoded&amp;quot; (optional)&lt;br /&gt;
:if set to &amp;quot;hidden&amp;quot;, each characters entered by the user will be obfuscated with an asterisks (&amp;quot;*&amp;quot;), as is usual for entering passwords.&lt;br /&gt;
:if set to &amp;quot;urlencoded&amp;quot;, each non-alphanumeric characters entered by the user will be &amp;quot;escaped&amp;quot; using %XX encoding.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;text&amp;quot; id=&amp;quot;username&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;username&amp;quot; value=&amp;quot;john.doe&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|Security consideration: when using &amp;lt;nowiki&amp;gt;option=&amp;quot;hidden&amp;quot;&amp;lt;/nowiki&amp;gt;, the value entered by the user is still saved as an unencrypted string value on disk.}}&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;ipaddress&amp;quot; ====&lt;br /&gt;
Allow a user to enter an ip address as text.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32035&amp;quot; type=&amp;quot;ipaddress&amp;quot; id=&amp;quot;ipaddress&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;ipaddress&amp;quot; value=&amp;quot;127.0.0.1&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Numeric input ===&lt;br /&gt;
Numeric input elements allow a user to enter a number. The &amp;quot;label&amp;quot; attribute must contain an id from the language file that indicates which text to display for the input field.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;number&amp;quot; ====&lt;br /&gt;
Allows the user to enter an integer using up/down buttons.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32036&amp;quot; type=&amp;quot;number&amp;quot; id=&amp;quot;code&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;code&amp;quot; value=&amp;quot;127000&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Python, calling xbmcplugin.getSetting will return the number as a string value, which must be converted to an integer value if needed}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Date and time  input ===&lt;br /&gt;
==== type=&amp;quot;date&amp;quot; ====&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display or string&lt;br /&gt;
* default=&amp;quot;2015-03-12&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;record_date&amp;quot; type=&amp;quot;date&amp;quot; label=&amp;quot;32030&amp;quot; default=&amp;quot;2015-03-12&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;time&amp;quot; ====&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display or string&lt;br /&gt;
* default=&amp;quot;13:13&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;record_time&amp;quot; type=&amp;quot;time&amp;quot; label=&amp;quot;32031&amp;quot; default=&amp;quot;13:13&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Boolean ===&lt;br /&gt;
Boolean input elements allow a user to switch a setting on or off.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;bool&amp;quot; ====&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;true&amp;quot;|&amp;quot;false&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;bool&amp;quot; id=&amp;quot;background&amp;quot; default=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|&amp;quot;true&amp;quot; and &amp;quot;false&amp;quot; are case sensitive!}}&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;background&amp;quot; value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Python, calling xbmcplugin.getSetting will return a string &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;, which must be converted to a boolean value if needed}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Select dialog ===&lt;br /&gt;
Will open separate selection window &lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;select&amp;quot; ====&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;values=&amp;quot;&#039;&#039;value1&#039;&#039;[|&#039;&#039;value2&#039;&#039;[...]]&amp;quot; - or -&lt;br /&gt;
* &#039;&#039;&#039;lvalues=&amp;quot;&#039;&#039;id1&#039;&#039;[|&#039;&#039;id2&#039;&#039;[...]]&amp;quot; (required): A list of values or language file ids from which the user can choose.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;id_select&amp;quot; type=&amp;quot;select&amp;quot; label=&amp;quot;32000&amp;quot; lvalues=&amp;quot;32001|32002|32003|32004&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;addon&amp;quot; ====&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;addontype=&amp;quot;&#039;&#039;xbmc.metadata.scraper.movies&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - type of addon.&lt;br /&gt;
* multiselect=&amp;quot;&#039;&#039;true|false&#039;&#039;&amp;quot; (optional) - allows to select several addons&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;id_addon&amp;quot; type=&amp;quot;addon&amp;quot; label=&amp;quot;32111&amp;quot; default=&amp;quot;&amp;quot; addontype=&amp;quot;xbmc.metadata.scraper.movies&amp;quot;  multiselect=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spinner ===&lt;br /&gt;
A rotary selector allows the user to selected from a list of predefined values. &lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;enum&amp;quot; or &amp;quot;labelenum&amp;quot; ====&lt;br /&gt;
Both element types work the same except that the &amp;quot;enum&amp;quot; type will use the index of the chosen value, wheras the &amp;quot;labelenum&amp;quot; will use the actual value.&lt;br /&gt;
&lt;br /&gt;
Arguments:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;values=&amp;quot;&#039;&#039;value1&#039;&#039;[|&#039;&#039;value2&#039;&#039;[...]]&amp;quot; - or -&lt;br /&gt;
* &#039;&#039;&#039;lvalues=&amp;quot;&#039;&#039;id1&#039;&#039;[|&#039;&#039;id2&#039;&#039;[...]]&amp;quot; (required):&lt;br /&gt;
: A list of values or language file ids from which the user can choose.&lt;br /&gt;
* values=&amp;quot;$HOURS&amp;quot; is special case to select hour&lt;br /&gt;
* sort=&amp;quot;yes&amp;quot; - sorts labels ( works only for type=&amp;quot;labelenum&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32018&amp;quot; type=&amp;quot;enum&amp;quot; id=&amp;quot;service1&amp;quot; lvalues=&amp;quot;32021|32022|32023|32024&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32020&amp;quot; type=&amp;quot;labelenum&amp;quot; id=&amp;quot;service3&amp;quot; lvalues=&amp;quot;32021|32022|32023|32024&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32022&amp;quot; type=&amp;quot;enum&amp;quot; id=&amp;quot;default_enumhours&amp;quot; values=&amp;quot;$HOURS&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Selecting the value &amp;quot;One&amp;quot; will return the int value &amp;quot;0&amp;quot;, selecting the value &amp;quot;Two&amp;quot; will return the int value &amp;quot;1&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string. For &amp;quot;enum&amp;quot;-type settings the index of the value is saved, starting at 0 for the first value. For &amp;quot;labelenum&amp;quot;-type settings the value is saved or, in case the lvalues attribute is used, the label translated in the language of the user.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;service1&amp;quot; value=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;service3&amp;quot; value=&amp;quot;SomethingTranslated&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Slider ===&lt;br /&gt;
Will display a slider control&lt;br /&gt;
==== type=&amp;quot;slider&amp;quot; ====&lt;br /&gt;
Allows the user to select a numberic value using a horizontal sliding bar.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32053&amp;quot; type=&amp;quot;slider&amp;quot; id=&amp;quot;limit&amp;quot; default=&amp;quot;20&amp;quot; range=&amp;quot;5,5,100&amp;quot; option=&amp;quot;int&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32053&amp;quot; type=&amp;quot;slider&amp;quot; id=&amp;quot;limit&amp;quot; default=&amp;quot;20&amp;quot; range=&amp;quot;0,100&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting.&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* &#039;&#039;&#039;range=&amp;quot;&#039;&#039;min&#039;&#039;[,&#039;&#039;step&#039;&#039;],&#039;&#039;max&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - specify the range of valid values.&lt;br /&gt;
* &#039;&#039;&#039;option=&amp;quot;int&amp;quot;|&amp;quot;float&amp;quot;|&amp;quot;percent&amp;quot;&#039;&#039;&#039; (required) - specifies whether to allow the user to choose between integers, floating point numbers or a percentage.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
The value entered by the user is saved as a string representation of a floating point value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;limit&amp;quot; value=&amp;quot;5.000000&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|In Python, calling xbmcplugin.getSetting will return a string, which must be converted to an int, float or percentage value if needed}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Browser dialog ===&lt;br /&gt;
File and folder browsing elements allow a user to select a file or folder by browsing the local disks or network. You can specify a media type to show only files of the chosen type to the user. The &amp;quot;label&amp;quot; attribute must contain an id from the language file that indicates which text to display for the input field.&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;file&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;video&amp;quot;, &amp;quot;image&amp;quot; or &amp;quot;executable&amp;quot; ====&lt;br /&gt;
Allow the user to browse for and select a file. When using type=&amp;quot;audio&amp;quot;, &amp;quot;video&amp;quot;, &amp;quot;image&amp;quot; or &amp;quot;executable&amp;quot;, only files of those types are displayed to the user.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional) - the default value.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;file&amp;quot; id=&amp;quot;file&amp;quot; default=&amp;quot;path_to_files&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full path to the file selected by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;file&amp;quot; value=&amp;quot;smb://path_to_files/file.ext&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;folder&amp;quot; ====&lt;br /&gt;
Allow the user to browse for and select a folder.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;id=&amp;quot;&#039;&#039;string&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - the name of the setting&lt;br /&gt;
* &#039;&#039;&#039;label=&amp;quot;&#039;&#039;id&#039;&#039;&amp;quot;&#039;&#039;&#039; (required) - an id from the language file that indicates which text to display.&lt;br /&gt;
* source=&amp;quot;video&amp;quot;, &amp;quot;music&amp;quot;, &amp;quot;pictures&amp;quot;, &amp;quot;programs&amp;quot;, &amp;quot;files&amp;quot;, &amp;quot;local&amp;quot; or blank - will show the respective folders from sources.xml in the browse dialog. source=&amp;quot;&amp;quot; will list both local drives and network shares.&lt;br /&gt;
* default=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; (optional, default=&amp;quot;&amp;quot;) - the default value.&lt;br /&gt;
* option=&amp;quot;writeable&amp;quot; (optional, default=&amp;quot;&amp;quot;) - the user can be allowed to create and select new folders by setting this argument.&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32033&amp;quot; type=&amp;quot;folder&amp;quot; id=&amp;quot;folder&amp;quot; source=&amp;quot;auto&amp;quot; option=&amp;quot;writeable&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full path to the folder selected by the user is saved as a string value on disk:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting id=&amp;quot;folder&amp;quot; value=&amp;quot;smb://path_to_files/&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== type=&amp;quot;fileenum&amp;quot; ====&lt;br /&gt;
Display files in a folder as an enum selector.&lt;br /&gt;
&lt;br /&gt;
Example: List sub-folders of the &#039;resources&#039; folder for this add-on in the settings.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32000&amp;quot; id=&amp;quot;myenum&amp;quot; type=&amp;quot;fileenum&amp;quot; values=&amp;quot;resources&amp;quot; mask=&amp;quot;/&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Extra attributes ====&lt;br /&gt;
&lt;br /&gt;
* mask=&amp;quot;&#039;&#039;value&#039;&#039;&amp;quot; - filter selectable files. Examples: &amp;quot;/&amp;quot; - display only folders. &amp;quot;*.txt&amp;quot; - display only .txt files.&lt;br /&gt;
* option=&amp;quot;hideext&amp;quot; - hide file extensions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Action execution ===&lt;br /&gt;
==== type = &amp;quot;action&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Adds line to configuration windows which allow to execute action&lt;br /&gt;
&lt;br /&gt;
Example code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;setting label=&amp;quot;32032&amp;quot; type=&amp;quot;action&amp;quot; action=&amp;quot;RunScript(my.addon.id, downloadreport)&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
List of actions that can be used:&lt;br /&gt;
* [[List of built-in functions]]&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* option=&amp;quot;close&amp;quot; (close the settings dialog before executing the action)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conditions ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Settings can optionally have a visible and/or enable attribute:&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot; border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| visible=&amp;quot;&amp;quot; || &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot; or conditional.&amp;lt;br /&amp;gt;Determines if the setting is displayed in the settings dialog (default = &#039;true&#039;)&amp;quot;&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| enable=&amp;quot;&amp;quot; || &amp;quot;true&amp;quot;, &amp;quot;false&amp;quot; or conditional.&amp;lt;br /&amp;gt;Allows you to determine whether this setting should be shown as greyed-out and unable to be changed.&lt;br /&gt;
|-&lt;br /&gt;
| conditions || 3 comparators are available to allow a setting to be made visible or enabled based on other settings:&lt;br /&gt;
* eq() Equal to&lt;br /&gt;
* gt() Greater than&lt;br /&gt;
* lt() Less than&lt;br /&gt;
&lt;br /&gt;
One can AND the comparators using the + symbol, and OR the comparators using the | symbol. A combination of AND and OR is not currently supported.&lt;br /&gt;
&lt;br /&gt;
One can negate a comparator using the ! symbol (e.g. !eq() ).&lt;br /&gt;
&lt;br /&gt;
Each comparator takes 2 operands:&lt;br /&gt;
* Relative position of setting to compare&lt;br /&gt;
* Value to compare against&lt;br /&gt;
&lt;br /&gt;
Thus if we place settings in our file in this order:&lt;br /&gt;
: myFirst setting&lt;br /&gt;
: mySecondSetting&lt;br /&gt;
: myThirdSetting&lt;br /&gt;
&lt;br /&gt;
for the third setting we might add the option:&amp;lt;br /&amp;gt;&lt;br /&gt;
enable=&amp;quot;gt(-2,3) + lt(-2,8)&amp;quot;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
You can also use a conditional statement: enable=&amp;quot;System.HasAddon(plugin.video.youtube)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Comparisons CANNOT be made across category/page boundaries. If one needs to compare to a setting on a different page, a copy of the setting with the same id can be placed on the page where the comparison is to take place and then hidden by setting visible to &#039;false&#039;. The value is automatically updated when the setting on the other page is updated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Subsettings==&lt;br /&gt;
&lt;br /&gt;
You can create a subsetting by adding &#039;&#039;&#039;subsetting=&amp;quot;true&amp;quot;&#039;&#039;&#039; to a setting. &lt;br /&gt;
This will add dash in front of the setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Add-ons|*]]&lt;br /&gt;
[[Category:Settings]]&lt;br /&gt;
[[Category:Add-on development]]&lt;br /&gt;
[[Category:Skin development]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=Log_file/iOS_native_sharing&amp;diff=183890</id>
		<title>Log file/iOS native sharing</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=Log_file/iOS_native_sharing&amp;diff=183890"/>
		<updated>2019-10-11T19:39:03Z</updated>

		<summary type="html">&lt;p&gt;Kambala: Created page with &amp;quot;{{Warning |Available only since Kodi &amp;#039;&amp;#039;&amp;#039;v19&amp;#039;&amp;#039;&amp;#039;!}}  == Introduction == This page describes another method to access the &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;log file&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; using the native iOS sharing shee...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Warning |Available only since Kodi &#039;&#039;&#039;v19&#039;&#039;&#039;!}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This page describes another method to access the &#039;&#039;&#039;&#039;&#039;[[log file]]&#039;&#039;&#039;&#039;&#039; using the native iOS sharing sheet. It&#039;s shared as an ordinary file, so, for example, it will be an email attachment.&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
# Navigate to Logging settings located at &#039;&#039;&#039;&#039;&#039;[[Settings/System/Logging#Debug|Settings &amp;gt; System Settings &amp;gt; Logging]]&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
# Tap last entry in the first section: &#039;&#039;&#039;Share debug log&#039;&#039;&#039;.&lt;br /&gt;
# Native sharing sheet is presented, select the sharing method you like.&lt;br /&gt;
&lt;br /&gt;
[[File:logging-settings.png]]&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
	<entry>
		<id>https://kodi.wiki/index.php?title=File:Logging-settings.png&amp;diff=183889</id>
		<title>File:Logging-settings.png</title>
		<link rel="alternate" type="text/html" href="https://kodi.wiki/index.php?title=File:Logging-settings.png&amp;diff=183889"/>
		<updated>2019-10-11T19:19:01Z</updated>

		<summary type="html">&lt;p&gt;Kambala: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Kambala</name></author>
	</entry>
</feed>