From 43800d4c38c12fb8a222e10c39885b65ca78aa0e Mon Sep 17 00:00:00 2001 From: R3gi Date: Sun, 27 Dec 2020 17:37:19 +0100 Subject: [PATCH 01/63] =?UTF-8?q?=F0=9F=93=9A=20Update=20update.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Include the option to update via USB stick. It seems to be simple and always working solution to update LibreElec, which does not require almost any technical skills and should be therefore great for regular users. --- support/update.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/support/update.md b/support/update.md index 198106f..5c4c4bc 100644 --- a/support/update.md +++ b/support/update.md @@ -49,6 +49,12 @@ Once the download has completed, reboot to start the update process reboot ``` +## USB drive +1. Download the update file and place it to USB drive +2. Connect the USB drive to your LibreELEC device and navigate to the \(hidden\) `/storage/.update/` update folder using the Kodi File manager +3. Copy the update file from your USB drive into the _.update_ folder +4. Restart your LibreELEC device to launch the update process + ## Downgrade Kodi does not support downgrading. If "updating" within the same LibreELEC/Kodi major release, e.g. LibreELEC 9.2.6 to 9.2.5, the downgrade will normally work. If downgrading to an older LibreELEC/Kodi major version e.g. LibreELEC 9.2.6 to 9.0.2, the downgrade process will complete but Kodi may not gracefully handle being restarted with configuration files and add-ons from the \(newer\) previous release. Always make a backup before upgrading so that you can clean install then restore the backup to effect a downgrade without problems. From 9bd54b3bed90ec0070a5ae1f02877d90faba21ee Mon Sep 17 00:00:00 2001 From: Rolf Bachmann <1196109+rolfbachmann@users.noreply.github.com> Date: Sat, 13 Feb 2021 22:40:30 +0100 Subject: [PATCH 02/63] Fix md format of links in build-addons.md --- development/build-commands/build-addons.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/development/build-commands/build-addons.md b/development/build-commands/build-addons.md index a901c5d..8b79211 100644 --- a/development/build-commands/build-addons.md +++ b/development/build-commands/build-addons.md @@ -12,13 +12,13 @@ To compile all `game.libretro` add-ons: PROJECT=Generic ARCH=x86_64 scripts/create_addon game.* ``` -To compile all [https://github.com/LibreELEC/LibreELEC.tv/tree/master/packages/mediacenter/kodi-binary-addons](Kodi binary add-ons): +To compile all [Kodi binary add-ons](https://github.com/LibreELEC/LibreELEC.tv/tree/master/packages/mediacenter/kodi-binary-addons): ``` PROJECT=Generic ARCH=x86_64 scripts/create_addon binary ``` -To compile all [https://github.com/LibreELEC/LibreELEC.tv/tree/master/packages/addons](LibreELEC binary add-ons): +To compile all [LibreELEC binary add-ons](https://github.com/LibreELEC/LibreELEC.tv/tree/master/packages/addons): ``` PROJECT=Generic ARCH=x86_64 scripts/create_addon official From b43d86e5426f04e9b7bf0308dfd39a205e655007 Mon Sep 17 00:00:00 2001 From: Marie Dubremetz Date: Mon, 19 Apr 2021 10:51:30 +0200 Subject: [PATCH 03/63] Update pulseaudio.md `pactl set-default-source` was mentioned at the beginning of this doc but is never used. `pactl set-default-source` should be used for the input device and not `pactl set-default-sink`? --- configuration/pulseaudio.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configuration/pulseaudio.md b/configuration/pulseaudio.md index 85e0f6b..2ebc53b 100644 --- a/configuration/pulseaudio.md +++ b/configuration/pulseaudio.md @@ -183,10 +183,10 @@ For example: 38 module-tunnel-source server=[[192.168.1.70]]:4713 source=alsa_input.pci-0000_00_08.0.analog-stereo format=s16le channels=2 rate=44100 source_name=tunnel.lukas-macbook-pro.local.alsa_input.pci-0000_00_08.0.analog-stereo channel_map=front-left,front-right ``` -Configure the pulseuadio input device: +Configure the pulseaudio input device: ```text -pactl set-default-sink tunnel.lukas-macbook-pro.local.alsa_input.pci-0000_00_08.0.analog-stereo +pactl set-default-source tunnel.lukas-macbook-pro.local.alsa_input.pci-0000_00_08.0.analog-stereo ``` Restart Kodi: From 7ee58c49db4d4e98b4a63584dd51fb70558bcf81 Mon Sep 17 00:00:00 2001 From: inspector71 Date: Fri, 13 Aug 2021 14:45:14 +0000 Subject: [PATCH 04/63] Added rows for 9.2.7-8 Hope this is helpful. Guessed the hotfix/stable status. --- project/releases.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/project/releases.md b/project/releases.md index 646bfa8..bb59142 100644 --- a/project/releases.md +++ b/project/releases.md @@ -8,6 +8,8 @@ Nightly test and development snapshot images are here: [https://test.libreelec.t | Version | Status | Release Post | | :--- | :--- | :--- | +| 9.2.8 | Hotfix | [Blog](https://libreelec.tv/2021/07/le-9-2-fix-2-for-widevine/) | +| 9.2.7 | Hotfix | [Blog](https://libreelec.tv/2021/05/le-9-2-7-10b4-fix-widevine/) | | 9.2.6 | Stable | [Blog](https://libreelec.tv/2020/11/libreelec-leia-9-2-6) | | 9.2.5 | Hotfix | [Blog](https://libreelec.tv/2020/08/libreelec-leia-9-2-5) | | 9.2.4 | Stable | [Blog](https://libreelec.tv/2020/08/libreelec-leia-9-2-4) | From fa2da26cb175b96fe0edb0d9ad0f6186355e31f5 Mon Sep 17 00:00:00 2001 From: CvH Date: Wed, 18 Aug 2021 14:34:54 +0200 Subject: [PATCH 05/63] add mount_network_share --- how-to/mount_network_share.md | 180 ++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 how-to/mount_network_share.md diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md new file mode 100644 index 0000000..6506e37 --- /dev/null +++ b/how-to/mount_network_share.md @@ -0,0 +1,180 @@ +# Mounting network shares + +Examples for mounting an network share to LibreELEC. This might be +useful if you run a Tvheadend Server at LE and like to record to your +NAS and similar tasks where you need a connection to an network storage +because the software can't handle it. + +### Sample NAS setup + + - NAS IP: `192.168.1.222` + - Share user/pass: `nasuser1` / `123nas` + - Share name: `recordings` + - Full address to share: `\\192.168.1.222\recordings` + +# Samba Share +## Mounting a Samba share + +### 1. Create the folder where the share should be mounted + +Connect to your LibreELEC HTPC with SSH. + +`mkdir /storage/recordings` + + +### 2. Create the systemd definition file + +**Important:** you need to use the filename for the definition file +according to the folder where you want to mount your share . +In our case `storage-recordings.mount` represent path -\> `/storage/recordings`. +If you like an subfolder `storage-recordings-tv.mount` represent path -\> `/storage/recordings/tv`. + +`nano /storage/.config/system.d/storage-recordings.mount` + +Content of the definition file for a Samba share. + +``` +[Unit] +Description=cifs mount script +Requires=network-online.service +After=network-online.service +Before=kodi.service + +[Mount] +What=//192.168.1.222/recordings +Where=/storage/recordings +Options=username=nasuser1,password=123nas,rw,vers=2.1 +Type=cifs + +[Install] +WantedBy=multi-user.target +``` + +### 3. Things to edit + +Address of your share, remember to use / slashes: + +`What=//192.168.1.222/recordings` + +Path where the Share should be mounted: + +`Where=/storage/recordings` + +Options: + +`Options=username=nasuser1,password=123nas,rw,vers=2.1` + +`username=` Username of your network share +`password` Password of your network share +`rw` Read/write access +`vers=2.1` Version of the Samba protocol, `2.1` is supported since +Windows 7 several [other versions](https://wiki.samba.org/index.php/Samba3/SMB2#Introduction) are supported too + +### 4. Enable the mount + +Finally we need to enable the mountpoint. + +`systemctl enable storage-recordings.mount` + +### 5. Reboot + +Reboot your system to check if the mount works. + +### 6. Helpful command for troubleshooting + +Get status and error messages from the mount point. + +`systemctl status storage-recordings.mount` + +Remove mount point and disabling it. + +`systemctl disable storage-recordings.mount` + +# NFS Share + +## Mounting a NFS share + +### 1. Create the folder where the share should be mounted + +Connect to your LibreELEC HTPC [with SSH](/accessing_libreelec). + +`mkdir /storage/recordings` + + +### 2. Create the systemd definition file + +**Important:** you need to use the filename for the definition file +according to the folder where you want to mount your share . +In our case `storage-recordings.mount` represent path -\> `/storage/recordings`. +If you like an subfolder `storage-recordings-tv.mount` represent path -\> `/storage/recordings/tv`. + +`nano /storage/.config/system.d/storage-recordings.mount` + +Content of the definition file for a NFS share. + +``` +[Unit] +Description=test nfs mount script +Requires=network-online.service +After=network-online.service +Before=kodi.service + +[Mount] +What=192.168.1.222:/usr/data2/video +Where=/storage/recordings +Options= +Type=nfs + +[Install] +WantedBy=multi-user.target +``` + +### 3. Things to edit + +Address of your share; + +`What=192.168.1.222:/usr/data2/video` + +Path where the share should be mounted: + +`Where=/storage/recordings` + +Options: +At this section you are able to define specific NFS options, such as NFS +version for example. In our example here, we don't need it and we are +assuming you are using a NFSv3 share. + +Type: +`Type=nfs` + + +### 4. Start it for a test: + +`systemctl start storage-recordings.mount` + +Note: That's only a test and the mount won't be available after a +reboot. To make it available after boot you have to "enable" the service +first. + + +### 5. Enable the mount + +If the previous test worked, then please enable the service via: + +`systemctl enable storage-recordings.mount` + + +### 6. Reboot + +Reboot your system to see if the mount is available after boot. + + +### 7. Helpful command for troubleshooting + +Get status and error messages from the mount point. + +`systemctl status storage-recordings.mount` + +Remove mount point and disabling it. + +`systemctl disable storage-recordings.mount` From 68e060be2eb243890d6eae5f76e99238c1a6471d Mon Sep 17 00:00:00 2001 From: CvH Date: Wed, 18 Aug 2021 12:42:55 +0000 Subject: [PATCH 06/63] GitBook: [master] 2 pages modified --- SUMMARY.md | 1 + how-to/mount_network_share.md | 100 +++++++++++++++------------------- 2 files changed, 44 insertions(+), 57 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index d799d3c..e955a3e 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -47,6 +47,7 @@ * [Blacklist Kernel Module](how-to/blacklist-kernel-module.md) * [Change Bootsplash](how-to/change-bootscreen.md) * [Force Add-on Update](how-to/force-add-on-update.md) +* [Mount Network Share](how-to/mount_network_share.md) ## Development diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md index 6506e37..24ffd8c 100644 --- a/how-to/mount_network_share.md +++ b/how-to/mount_network_share.md @@ -1,39 +1,37 @@ -# Mounting network shares +# Mount Network Share -Examples for mounting an network share to LibreELEC. This might be -useful if you run a Tvheadend Server at LE and like to record to your -NAS and similar tasks where you need a connection to an network storage -because the software can't handle it. +## Mounting network shares -### Sample NAS setup +Examples for mounting an network share to LibreELEC. This might be useful if you run a Tvheadend Server at LE and like to record to your NAS and similar tasks where you need a connection to an network storage because the software can't handle it. - - NAS IP: `192.168.1.222` - - Share user/pass: `nasuser1` / `123nas` - - Share name: `recordings` - - Full address to share: `\\192.168.1.222\recordings` +#### Sample NAS setup -# Samba Share -## Mounting a Samba share +* NAS IP: `192.168.1.222` +* Share user/pass: `nasuser1` / `123nas` +* Share name: `recordings` +* Full address to share: `\\192.168.1.222\recordings` -### 1. Create the folder where the share should be mounted +## Samba Share + +### Mounting a Samba share + +#### 1. Create the folder where the share should be mounted Connect to your LibreELEC HTPC with SSH. `mkdir /storage/recordings` - -### 2. Create the systemd definition file +#### 2. Create the systemd definition file + +**Important:** you need to use the filename for the definition file according to the folder where you want to mount your share . +In our case `storage-recordings.mount` represent path -> `/storage/recordings`. +If you like an subfolder `storage-recordings-tv.mount` represent path -> `/storage/recordings/tv`. -**Important:** you need to use the filename for the definition file -according to the folder where you want to mount your share . -In our case `storage-recordings.mount` represent path -\> `/storage/recordings`. -If you like an subfolder `storage-recordings-tv.mount` represent path -\> `/storage/recordings/tv`. - `nano /storage/.config/system.d/storage-recordings.mount` Content of the definition file for a Samba share. -``` +```text [Unit] Description=cifs mount script Requires=network-online.service @@ -50,7 +48,7 @@ Type=cifs WantedBy=multi-user.target ``` -### 3. Things to edit +#### 3. Things to edit Address of your share, remember to use / slashes: @@ -67,20 +65,19 @@ Options: `username=` Username of your network share `password` Password of your network share `rw` Read/write access -`vers=2.1` Version of the Samba protocol, `2.1` is supported since -Windows 7 several [other versions](https://wiki.samba.org/index.php/Samba3/SMB2#Introduction) are supported too +`vers=2.1` Version of the Samba protocol, `2.1` is supported since Windows 7 several [other versions](https://wiki.samba.org/index.php/Samba3/SMB2#Introduction) are supported too -### 4. Enable the mount +#### 4. Enable the mount Finally we need to enable the mountpoint. `systemctl enable storage-recordings.mount` -### 5. Reboot +#### 5. Reboot Reboot your system to check if the mount works. -### 6. Helpful command for troubleshooting +#### 6. Helpful command for troubleshooting Get status and error messages from the mount point. @@ -90,29 +87,27 @@ Remove mount point and disabling it. `systemctl disable storage-recordings.mount` -# NFS Share +## NFS Share -## Mounting a NFS share +### Mounting a NFS share -### 1. Create the folder where the share should be mounted +#### 1. Create the folder where the share should be mounted Connect to your LibreELEC HTPC [with SSH](/accessing_libreelec). `mkdir /storage/recordings` - -### 2. Create the systemd definition file +#### 2. Create the systemd definition file + +**Important:** you need to use the filename for the definition file according to the folder where you want to mount your share . +In our case `storage-recordings.mount` represent path -> `/storage/recordings`. +If you like an subfolder `storage-recordings-tv.mount` represent path -> `/storage/recordings/tv`. -**Important:** you need to use the filename for the definition file -according to the folder where you want to mount your share . -In our case `storage-recordings.mount` represent path -\> `/storage/recordings`. -If you like an subfolder `storage-recordings-tv.mount` represent path -\> `/storage/recordings/tv`. - `nano /storage/.config/system.d/storage-recordings.mount` Content of the definition file for a NFS share. -``` +```text [Unit] Description=test nfs mount script Requires=network-online.service @@ -128,8 +123,8 @@ Type=nfs [Install] WantedBy=multi-user.target ``` - -### 3. Things to edit + +#### 3. Things to edit Address of your share; @@ -139,37 +134,27 @@ Path where the share should be mounted: `Where=/storage/recordings` -Options: -At this section you are able to define specific NFS options, such as NFS -version for example. In our example here, we don't need it and we are -assuming you are using a NFSv3 share. +Options: At this section you are able to define specific NFS options, such as NFS version for example. In our example here, we don't need it and we are assuming you are using a NFSv3 share. -Type: -`Type=nfs` +Type: `Type=nfs` - -### 4. Start it for a test: +#### 4. Start it for a test: `systemctl start storage-recordings.mount` -Note: That's only a test and the mount won't be available after a -reboot. To make it available after boot you have to "enable" the service -first. +Note: That's only a test and the mount won't be available after a reboot. To make it available after boot you have to "enable" the service first. - -### 5. Enable the mount +#### 5. Enable the mount If the previous test worked, then please enable the service via: `systemctl enable storage-recordings.mount` - -### 6. Reboot +#### 6. Reboot Reboot your system to see if the mount is available after boot. - -### 7. Helpful command for troubleshooting +#### 7. Helpful command for troubleshooting Get status and error messages from the mount point. @@ -178,3 +163,4 @@ Get status and error messages from the mount point. Remove mount point and disabling it. `systemctl disable storage-recordings.mount` + From ffef3aa0060b82e1ca3e395aa8199bd1ff1b321a Mon Sep 17 00:00:00 2001 From: CvH Date: Wed, 18 Aug 2021 14:48:19 +0200 Subject: [PATCH 07/63] add legacy redirects --- .gitbook.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitbook.yaml b/.gitbook.yaml index 2b80298..3c852fb 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -4,6 +4,7 @@ redirects: how_to/add_firmware: how-to/add-firmware.md how_to/blacklist_module: how-to/add-firmware.md how_to/change_bootscreen: how-to/change-bootscreen.md + how_to/mount_network_share: how-to/mount_network_share.md how_to/provide_logfile: support/log-files.md infrared_remotes: configuration/ir-remotes.md libreelec: README.md From e075973b1cb71cff42c66fe6f6dca26c456ff5ba Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 29 Aug 2021 14:38:41 +0000 Subject: [PATCH 08/63] GitBook: [master] one page modified --- how-to/mount_network_share.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md index 24ffd8c..ffd3f7b 100644 --- a/how-to/mount_network_share.md +++ b/how-to/mount_network_share.md @@ -164,3 +164,13 @@ Remove mount point and disabling it. `systemctl disable storage-recordings.mount` +## **Apple TimeCapsule** + +TimeCapsule devices share files using an Apple dialect of SMB that is not compatible with the Samba smbclient Kodi uses to connect to SMB shares. To access media on a TimeCapsule you can follow the steps described above for connecting to Samba shares with a systemd storage mount, but with one difference: the `Options` configuration must force SMB v1.0 and legacy NTLM authentication or the mount will fail. See below: + +```text +Options=username=MyUser,password=MyPass,sec=ntlm,vers=1.0 +``` + +SMB v1.0 is widely considered to be insecure, but TimeCapsules no longer receive software updates and there is no alternative; SMB v2/v3 are not supported. + From c9ca75ef46711d32570723ff6e23a80c0b546d88 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 29 Aug 2021 14:39:45 +0000 Subject: [PATCH 09/63] GitBook: [master] one page modified --- how-to/mount_network_share.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md index ffd3f7b..8f760b0 100644 --- a/how-to/mount_network_share.md +++ b/how-to/mount_network_share.md @@ -166,7 +166,7 @@ Remove mount point and disabling it. ## **Apple TimeCapsule** -TimeCapsule devices share files using an Apple dialect of SMB that is not compatible with the Samba smbclient Kodi uses to connect to SMB shares. To access media on a TimeCapsule you can follow the steps described above for connecting to Samba shares with a systemd storage mount, but with one difference: the `Options` configuration must force SMB v1.0 and legacy NTLM authentication or the mount will fail. See below: +TimeCapsule devices share files using an Apple dialect of SMB that is not compatible with the Samba `smbclient` Kodi uses to connect to SMB shares. To access media on a TimeCapsule you can follow the steps described above for connecting to Samba shares with a systemd storage mount, but with one difference: the `Options` configuration must force SMB v1.0 and legacy NTLM authentication or the mount will fail. See below: ```text Options=username=MyUser,password=MyPass,sec=ntlm,vers=1.0 From c507f7db0a2de060a69b3b8573ddeca63de23d91 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 29 Aug 2021 14:56:44 +0000 Subject: [PATCH 10/63] GitBook: [master] one page modified --- how-to/mount_network_share.md | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md index 8f760b0..60e0497 100644 --- a/how-to/mount_network_share.md +++ b/how-to/mount_network_share.md @@ -1,19 +1,16 @@ # Mount Network Share -## Mounting network shares +Kodi can natively mount SMB, NFS, SFTP, WebDAV \(and more\) remote filesystems \(shares\) to read media for playback, but many applications that write content, e.g. TVHeadend storing TV recordings, must write to "local" storage. Remote SMB and NFS shares can be "mounted" to the local filesystem using kernel mounts configured through systemd .mount files. -Examples for mounting an network share to LibreELEC. This might be useful if you run a Tvheadend Server at LE and like to record to your NAS and similar tasks where you need a connection to an network storage because the software can't handle it. - -#### Sample NAS setup +The following NAS configuration is used in the examples below: * NAS IP: `192.168.1.222` -* Share user/pass: `nasuser1` / `123nas` +* Username: `nasuser1` +* Password: `123nas` * Share name: `recordings` * Full address to share: `\\192.168.1.222\recordings` -## Samba Share - -### Mounting a Samba share +## SMB Shares #### 1. Create the folder where the share should be mounted @@ -21,15 +18,15 @@ Connect to your LibreELEC HTPC with SSH. `mkdir /storage/recordings` -#### 2. Create the systemd definition file +#### 2. Create the systemd .mount file -**Important:** you need to use the filename for the definition file according to the folder where you want to mount your share . -In our case `storage-recordings.mount` represent path -> `/storage/recordings`. -If you like an subfolder `storage-recordings-tv.mount` represent path -> `/storage/recordings/tv`. +**IMPORTANT:** The filename uses hypens to separate elements of the fileystem path to the share mount-point, e.g. `/storage/recordings` will be `storage-recordings.mount` and sub folders, e.g. `/storage/recordings/tv` would be `storage-recordings-tv.mount` + +Create the .mount file: `nano /storage/.config/system.d/storage-recordings.mount` -Content of the definition file for a Samba share. +Below is an example of the mount definition file for a Samba share: ```text [Unit] @@ -50,7 +47,7 @@ WantedBy=multi-user.target #### 3. Things to edit -Address of your share, remember to use / slashes: +Address of your share. Remember to always use / slashes: `What=//192.168.1.222/recordings` @@ -87,9 +84,7 @@ Remove mount point and disabling it. `systemctl disable storage-recordings.mount` -## NFS Share - -### Mounting a NFS share +## NFS Shares #### 1. Create the folder where the share should be mounted From 46751afee8339a2924232f9cd1a8ab9a26f1f39d Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 29 Aug 2021 15:04:21 +0000 Subject: [PATCH 11/63] GitBook: [master] one page modified --- how-to/mount_network_share.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md index 60e0497..cea73ef 100644 --- a/how-to/mount_network_share.md +++ b/how-to/mount_network_share.md @@ -20,7 +20,7 @@ Connect to your LibreELEC HTPC with SSH. #### 2. Create the systemd .mount file -**IMPORTANT:** The filename uses hypens to separate elements of the fileystem path to the share mount-point, e.g. `/storage/recordings` will be `storage-recordings.mount` and sub folders, e.g. `/storage/recordings/tv` would be `storage-recordings-tv.mount` +**IMPORTANT:** The filename uses hyphens to separate elements of the fileystem path to the share mount-point, e.g. `/storage/recordings` will be `storage-recordings.mount` and sub folders, e.g. `/storage/recordings/tv` would be `storage-recordings-tv.mount` Create the .mount file: From fe864a6caf4068a8cad7d14b608733ebc63fef41 Mon Sep 17 00:00:00 2001 From: chewitt Date: Fri, 3 Sep 2021 12:19:53 +0000 Subject: [PATCH 12/63] GitBook: [master] one page modified --- hardware/amlogic.md | 51 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/hardware/amlogic.md b/hardware/amlogic.md index 2fd534f..b8ef5b8 100644 --- a/hardware/amlogic.md +++ b/hardware/amlogic.md @@ -1,20 +1,20 @@ # Amlogic -Images for Amlogic hardware using modern, a.k.a "mainline" Linux kernels use different boot processes and device-tree files that are not compatible with Android or the older LibreELEC images that use the Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases. You must make a new/clean installation. +Images for Amlogic hardware using modern, a.k.a "mainline" Linux kernels use different boot processes and device-tree files that are not compatible with Android or the older LibreELEC images using Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases. You must make a new/clean installation. The `AMLGX` image ships with "box" and "board" configurations for the following SoCs: * GXBB \(S905\) * GXL \(S805X/S905X/D/W/L\) * GXM \(S912\) -* G12A \(S905X2/D2\) +* G12A \(S905X2/D2/Y2\) * G12B \(S922X/A311D\) * SM1 \(S905X3/D3\) The image type is identified by the -suffix appended: -* `LibreELEC-AMLGX.arm-9.95.0-box.img.gz` is the "box" image for Android devices -* `LibreELEC-AMLGX-arm-9.95.0-khadas-vim3.img.gz` is a "board" image \(for Khadas VIM3\) +* `LibreELEC-AMLGX.arm-10.0.0-box.img.gz` is the "box" image for Android devices +* `LibreELEC-AMLGX-arm-10.0.0-khadas-vim3.img.gz` is a "board" image \(for Khadas VIM3\) ## Box Images @@ -29,24 +29,57 @@ dtb_name=/dtb/@@DTB_NAME@@ bootargs=boot=UUID=2306-0801 disk=UUID=8268da37-3a8d-4f6d-aba0-08918faded56 quiet systemd.debug_shell=ttyAML0 console=ttyAML0,115200n8 console=tty0 ``` -To boot a Beelink GT-King Pro box change `@@DTB_NAME` to `meson-g12b-gtking-pro.dtb` like this: +To boot a Beelink GT-King Pro box change `@@DTB_NAME` to `meson-g12b-gtking-pro.dtb` ```text dtb_name=/dtb/meson-g12b-gtking-pro.dtb bootargs=boot=UUID=2306-0801 disk=UUID=8268da37-3a8d-4f6d-aba0-08918faded56 quiet systemd.debug_shell=ttyAML0 console=ttyAML0,115200n8 console=tty0 ``` -Once the device-tree name has been set you can insert the SD card in the box and power on. Some box devices will detect the card automatically. Others need you to trigger recovery mode using a reset button on the device. Sometimes the reset button is obvious. Sometimes it is hidden behind a small hole in the case requiring a paper-clip or needle to press it. Sometimes it is hidden at the end of the 3.5mm audio jack requiring a toothpick to press it. If a reset button is required you press the button and hold it then apply power to the box, and after 5-7 seconds you release the button. Due to differences in vendor u-boot configuration the exact timing varies and you may need to experiment a few times to get it right. +Once the device-tree name has been set you can insert the SD card in the box and power on. Some box devices will detect the card automatically. Others need you to trigger recovery mode using a reset button on the device. Sometimes the reset button is obvious. Sometimes it is hidden behind a small hole in the case requiring a paper-clip or needle to press it. Sometimes it is hidden at the end of the 3.5mm audio jack requiring a toothpick or paper-clip to press it. If a reset button is required you press the button and hold it then apply power to the box, and after 5-7 seconds you release the button. Due to differences in vendor u-boot configuration the exact timing varies and you may need to experiment a few times to get it right. ## Board Images -These images are built for Single Board Computer \(SBC\) devices which boot modern \(mainline\) u-boot via an SD card or removable eMMC module. Installation is normally simple requiring you to write the image to the SD card or eMMC module and then boot the device. If the board has non-removable eMMC storage it may be necessary to boot from a "box" image first. Once booted to a box image you can write the `board` image for your device to eMMC \(overwriting Android or other factory-installed images\). +These images are built for Single Board Computer \(SBC\) devices which boot modern u-boot via an SD card or removable eMMC module. Installation is normally simple requiring you to write the image to the SD card or eMMC module then boot the device. If the board has eMMC storage soldered \(not on a removable module\) it may be necessary to boot from the "box" image first. Once booted to a box image on SD card \(so eMMC is not in use\) you can write the correct `board` image to eMMC \(overwriting Android or other factory-installed images\). ## install2internal -Community created images using the legacy Amlogic kernels often include the `install2internal` script to reconfigure the factory boot process and run LibreELEC from the internal emmc storage. In the past when most box devices had 1GB RAM and SD cards were slow \(or badly written software ran them slower\) the performance difference was substantial, so the script evolved a cult following and many users belive they _must_ install to internal eMMC or their box will be unusuable. This is wrong advice. Using modern boxes with 2GB+ RAM and better SD card support the performance difference is marginal. You are not missing out by booting from an SD card! +Community images using the legacy Amlogic kernels often include the `install2internal` script to reconfigure the factory boot process and run LibreELEC from the internal eMMC storage. In the past when most box devices had 1GB RAM and SD cards were slow the performance difference between an SD card and "internal" storage was substantial, so the script evolved a cult following and many users belive they _must_ install to internal eMMC or their box will be unusuable. This is wrong advice. On modern boxes with faster CPUs, 2GB+ RAM and better SD card support, the performance difference is often marginal. -The main reason we do not provide or support emmc installs on "box" devices is the high level of support issues. Software and hardware quality in Android STB hardware is not great, and this complicates the process of successfully installing to the internal eMMC storage so many installs have problems resulting in a "bricked" box. Amlogic builds factory-restore mechanisms into their hardware and software that mean it is possible to recover the box, but this usually depends on finding a working Android image for the device, and the process is challenging for less technical users. Our forum staff are all volunteers who give time to the project for fun. Helping an never-ending stream of pissed-off inexperienced users recover bricked boxes is not fun. +The main reason we do not provide or support emmc installs on "box" devices is the high level of support issues. Software and hardware quality in Android STB hardware is not great, and this complicates the process of successfully installing to the internal eMMC storage so many installs have problems resulting in a "bricked" box. Amlogic builds factory-restore mechanisms into their software that mean it is always possible to recover the box, but this usually depends on finding an Android image for the device, and the process is challenging for less technical users. Our forum staff are all volunteers who give time to the project for fun. Helping a never-ending stream of pissed-off inexperienced users recover bricked boxes is not fun, so we actively discourage the existence and use of this script. If you want to run LibreELEC from eMMC storage please purchase a "board" device that supports it. If you find and run an `install2internal` script and something messes up; your problem is not our problem! +## emmctool + +In the `AMLGX` image there is an eMMC helper script called `emmctool` that supports a range of useful functions for backup/write/erase \(and more\) for eMMC storage. See: + +```text +LibreELEC:~ # emmctool + +info: boot device is /dev/mmcblk0, U-boot version is 2021.04 +info: emmc device is /dev/mmcblk1 + +Model: MMC 8WPD3R (sd/mmc) +Disk /dev/mmcblk1: 7818MB +Sector size (logical/physical): 512B/512B +Partition Table: gpt +Disk Flags: + +Number Start End Size File system Name Flags + 1 17.4kB 7818MB 7818MB ext4 EMMC_STORAGE + +usage: emmctool (w)rite : write .img/.img.gz to the eMMC module + (b)backup : dump the emmc partition to an .img.gz file + (d)etect : detect an eMMC module attached after boot + (i)nfo : show info about the eMMC module + (l)abels : change eMMC disk labels to / + (r)esize : resize the storage partition to 100% + (s)storage : convert emmc for use as /storage (boot from sdcard) + (u)boot : write signed u-boot to the eMMC module + (z)ero : zero (erase/wipe) the eMMC module + (h)elp : displays this help message +``` + +The `emmctool` helper supports a limited range of SBC boards with eMMC modules. On a generic Android device it will output the \(i\) info only. + From 5e99ae4c096d7bb70d22b5cd34db6658150e59d7 Mon Sep 17 00:00:00 2001 From: chewitt Date: Mon, 6 Sep 2021 23:57:49 +0000 Subject: [PATCH 13/63] GitBook: [master] one page modified --- hardware/nxp-imx6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/nxp-imx6.md b/hardware/nxp-imx6.md index 7121f02..23e13da 100644 --- a/hardware/nxp-imx6.md +++ b/hardware/nxp-imx6.md @@ -6,7 +6,7 @@ Current iMX6 images support the dual-lite and quad versions of the following boa * Wandboard * Udoo -Installation is done by writing the LibreELEC \*.img file to an SD card. The boards have internal hardware identifiers so there is no need to edit `extlinux.conf` on the card. Selection of the correct dtb for the device is handled internally within u-boot. +Installation is done by writing the LibreELEC \*.img file to an SD card. The boards have internal hardware identifiers so there is no need to edit `extlinux.conf` on the card. Selection of the correct device dtb is handled internally within u-boot. **NOTE** - ****It is not possible to update from older LibreELEC or OpenELEC imx6.arm images to LE 10.0 as the boot configuration for LE 10.0 is different and older kernels do not support zstd compression. If you attempt an upgrade the boot configuration of the old installation will be broken. You are advised to clean install LE 10.0 and manually restore sources and library DB files. Backups can be taken and restored, but as there is now a long time gap since LE 8.2.5 \(and OE 8.0.x\) it is best to start over with a clean system. From 9a2588992ddfbd5676c993ce50dc3e7f612e20f6 Mon Sep 17 00:00:00 2001 From: chewitt Date: Tue, 7 Sep 2021 01:15:10 +0000 Subject: [PATCH 14/63] GitBook: [master] one page modified --- hardware/amlogic.md | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/hardware/amlogic.md b/hardware/amlogic.md index b8ef5b8..5b87587 100644 --- a/hardware/amlogic.md +++ b/hardware/amlogic.md @@ -1,8 +1,10 @@ # Amlogic -Images for Amlogic hardware using modern, a.k.a "mainline" Linux kernels use different boot processes and device-tree files that are not compatible with Android or the older LibreELEC images using Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases. You must make a new/clean installation. +Current LibreELEC 10.0+ images for Amlogic hardware using modern "mainline" Linux kernels use different boot processes and device-tree files that are not compatible with older LibreELEC images that use Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases and must make a new/clean installation. -The `AMLGX` image ships with "box" and "board" configurations for the following SoCs: +There are two images supporting Amlogic Gen10+ \(64-bit\) SoCs and older Gen8 \(32-bit\) SoCs used in a range of Linux SBC and Android STB devices: + +`AMLGX` supports the following 64-bit SoCs: * GXBB \(S905\) * GXL \(S805X/S905X/D/W/L\) @@ -11,16 +13,24 @@ The `AMLGX` image ships with "box" and "board" configurations for the following * G12B \(S922X/A311D\) * SM1 \(S905X3/D3\) -The image type is identified by the -suffix appended: +`AMLMX` supports the following 32-bit SoCs: + +* Meson 8 \(S805\) +* Meson 8b \(S802\) +* Meson 8m2 \(S812\) + +There is low support for Meson 6 \(8726MX\) hardware in the upstream kernel and not much chance of support evolving to a point where modern-kernel LibreELEC images are viable. -* `LibreELEC-AMLGX.arm-10.0.0-box.img.gz` is the "box" image for Android devices -* `LibreELEC-AMLGX-arm-10.0.0-khadas-vim3.img.gz` is a "board" image \(for Khadas VIM3\) +`AMLGX` and `AMLMX` provide a "box" image for use with devices that run Amlogic \(aka Vendor or Legacy\) boot firmware \(U-Boot 2015.01 with Amlogic and manufacturer customisations\) and "board" images using modern boot firmware \(mainline U-Boot\) specific to a single SBC board or STB device. The image type can be identified by the filename `-suffix`: + +* `LibreELEC-AMLGX.arm-10.0.0-box.img.gz` is the `AMLGX` "box" image +* `LibreELEC-AMLGX-arm-10.0.0-khadas-vim3.img.gz` is a "board" image for Khadas VIM3 ## Box Images -The "box" image supports Set-Top "Box" \(STB\) and other devices with Android or Legacy Kernel Linux images \(and vendor u-boot\) installed on the internal eMMC storage. It is common for box vendors to make device-specific u-boot customisations so it is best to run LibreELEC from an SD card via the original bootloader. To use a box image you trigger "update" mode in the vendor u-boot. This causes u-boot to look for some standard filesnames which we have tweaked to load the LibreELEC `KERNEL` and `SYSTEM` files to boot the device. +Box images support SBC and STB devices with Android or "vendor" boot firmware running on the internal eMMC storage. LibreELEC is installed by triggering "recovery" mode boot in the Amlogic U-Boot firmware. Recovery mode searches for some standard files on SD and USB media. LibreELEC provides files tweaked to boot and run LibreELEC instead of recovering the device. Once recovery mode is activated the device will seach \(and find LibreELEC\) on each boot; until Android recovery completes \(it never does\). -As `box` images can be used on many devices, you must configure the device-tree file to use first. This is done by editing the uEnv.ini file in the root folder of the SD card and changing `@@DTB_NAME@@` with the name of the .dtb file to use. The device-tree files are in the `dtb` folder. +As `box` images can be used on many devices you must configure the device-tree file to use first. This is done by editing `uEnv.ini` in the root folder of the SD card. Change `@@DTB_NAME@@` to the name of the .dtb file to use. Current supported device-tree files are in the `dtb` folder. For example, here is the default `uEnv.ini` file: @@ -29,14 +39,21 @@ dtb_name=/dtb/@@DTB_NAME@@ bootargs=boot=UUID=2306-0801 disk=UUID=8268da37-3a8d-4f6d-aba0-08918faded56 quiet systemd.debug_shell=ttyAML0 console=ttyAML0,115200n8 console=tty0 ``` -To boot a Beelink GT-King Pro box change `@@DTB_NAME` to `meson-g12b-gtking-pro.dtb` +To boot a Beelink GT-King box change `@@DTB_NAME` to `meson-g12b-gtking.dtb` ```text -dtb_name=/dtb/meson-g12b-gtking-pro.dtb +dtb_name=/dtb/meson-g12b-gtking.dtb bootargs=boot=UUID=2306-0801 disk=UUID=8268da37-3a8d-4f6d-aba0-08918faded56 quiet systemd.debug_shell=ttyAML0 console=ttyAML0,115200n8 console=tty0 ``` -Once the device-tree name has been set you can insert the SD card in the box and power on. Some box devices will detect the card automatically. Others need you to trigger recovery mode using a reset button on the device. Sometimes the reset button is obvious. Sometimes it is hidden behind a small hole in the case requiring a paper-clip or needle to press it. Sometimes it is hidden at the end of the 3.5mm audio jack requiring a toothpick or paper-clip to press it. If a reset button is required you press the button and hold it then apply power to the box, and after 5-7 seconds you release the button. Due to differences in vendor u-boot configuration the exact timing varies and you may need to experiment a few times to get it right. +Once the device-tree name is set you can insert the SD card in the box and power on. Some box devices will detect the presence of the SD card automatically. Others need you to trigger recovery mode using a reset button on the device. Common locations for the button are: + +* Visible button marked "reset" or "recovery" or "power" button +* Visible pin-hole on the underside of the case +* Hidden button visible through ventilation holes in the case +* Hidden at the end of the 3.5mm audio jack + +In most cases you will need a small pin, unfolded paper-clip, or wooden toothpick to press the reset button with - hence the install process is often referred to as the "toothpick method" in forum posts. Press and hold the button, then power-on the box. After 5-7 seconds release the button to interrupt boot and start the recovery process. Due to differences in box speeds and vendor u-boot customisations the exact timing for button release varies and you will need to experiment to find the timing that works for your board. It is possible to see U-Boot output and remove the guesswork by attaching a UART serial cable to the board, although most STB box devices will need connector pins soldering to the board as most manufacturers omit them to save some pennies. ## Board Images From b900ee8ad7f9fb9108068b4792a1b1533430bbac Mon Sep 17 00:00:00 2001 From: chewitt Date: Tue, 7 Sep 2021 01:16:24 +0000 Subject: [PATCH 15/63] GitBook: [master] 3 pages modified --- SUMMARY.md | 2 +- hardware/{nxp-imx6.md => nxp-imx6-im8.md} | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) rename hardware/{nxp-imx6.md => nxp-imx6-im8.md} (90%) diff --git a/SUMMARY.md b/SUMMARY.md index e955a3e..0c51288 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -17,7 +17,7 @@ * [Allwinner](hardware/allwinner.md) * [Amlogic](hardware/amlogic.md) -* [NXP \(iMX6\)](hardware/nxp-imx6.md) +* [NXP - iMX6/iMX8](hardware/nxp-imx6-im8.md) * [Intel x86-64 \(Generic\)](hardware/intel-x86-64-generic.md) * [Qualcomm](hardware/qualcomm.md) * [Raspberry Pi](hardware/raspberry-pi.md) diff --git a/hardware/nxp-imx6.md b/hardware/nxp-imx6-im8.md similarity index 90% rename from hardware/nxp-imx6.md rename to hardware/nxp-imx6-im8.md index 23e13da..63d0ed2 100644 --- a/hardware/nxp-imx6.md +++ b/hardware/nxp-imx6-im8.md @@ -1,4 +1,4 @@ -# NXP \(iMX6\) +# NXP - iMX6/iMX8 Current iMX6 images support the dual-lite and quad versions of the following boards: @@ -6,6 +6,8 @@ Current iMX6 images support the dual-lite and quad versions of the following boa * Wandboard * Udoo +Current iMX8 images are experimental and do not support a specific board. + Installation is done by writing the LibreELEC \*.img file to an SD card. The boards have internal hardware identifiers so there is no need to edit `extlinux.conf` on the card. Selection of the correct device dtb is handled internally within u-boot. **NOTE** - ****It is not possible to update from older LibreELEC or OpenELEC imx6.arm images to LE 10.0 as the boot configuration for LE 10.0 is different and older kernels do not support zstd compression. If you attempt an upgrade the boot configuration of the old installation will be broken. You are advised to clean install LE 10.0 and manually restore sources and library DB files. Backups can be taken and restored, but as there is now a long time gap since LE 8.2.5 \(and OE 8.0.x\) it is best to start over with a clean system. From 1cce472474c8c34b55ba57434769df606ac04272 Mon Sep 17 00:00:00 2001 From: chewitt Date: Tue, 7 Sep 2021 03:53:38 +0000 Subject: [PATCH 16/63] GitBook: [master] one page modified --- hardware/amlogic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/amlogic.md b/hardware/amlogic.md index 5b87587..a716164 100644 --- a/hardware/amlogic.md +++ b/hardware/amlogic.md @@ -1,6 +1,6 @@ # Amlogic -Current LibreELEC 10.0+ images for Amlogic hardware using modern "mainline" Linux kernels use different boot processes and device-tree files that are not compatible with older LibreELEC images that use Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases and must make a new/clean installation. +Current LibreELEC 10.0+ images for Amlogic using modern Linux kernels use different boot processes and device-tree files that are not compatible with older LibreELEC images that use Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases and must make a new/clean installation. There are two images supporting Amlogic Gen10+ \(64-bit\) SoCs and older Gen8 \(32-bit\) SoCs used in a range of Linux SBC and Android STB devices: From 9a9bc9a6edc80895f1660c267183a3e82b0a83dd Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sat, 11 Sep 2021 15:33:27 +1000 Subject: [PATCH 17/63] update build commands for le10 Support for RPi0-1 is dropped, its unlikely to return (lacking horsepower for the new graphic stack) --- development-1/build-commands/build-commands-le10.md | 1 - 1 file changed, 1 deletion(-) diff --git a/development-1/build-commands/build-commands-le10.md b/development-1/build-commands/build-commands-le10.md index 71ce037..1df1042 100644 --- a/development-1/build-commands/build-commands-le10.md +++ b/development-1/build-commands/build-commands-le10.md @@ -11,7 +11,6 @@ | NXP/Freescale iMX.6 | PROJECT=NXP ARCH=arm DEVICE=iMX6 make image | | NXP/Freescale iMX.8 | PROJECT=NXP ARCH=arm DEVICE=iMX8 make image | | Qualcomm DragonBoard | PROJECT=Qualcomm ARCH=arm DEVICE=Dragonboard make image | -| Raspberry Pi 0/1 | PROJECT=RPi ARCH=arm DEVICE=RPi make image | | Raspberry Pi 2/3 | PROJECT=RPi ARCH=arm DEVICE=RPi2 make image | | Raspberry Pi 4 | PROJECT=RPi ARCH=arm DEVICE=RPi4 make image | | Samsung Exynos | PROJECT=Samsung ARCH=arm DEVICE=Exynos make image | From 908009e43360347839ee49a204e7078f2fe12b56 Mon Sep 17 00:00:00 2001 From: chewitt Date: Thu, 16 Sep 2021 09:56:55 +0000 Subject: [PATCH 18/63] GitBook: [master] one page modified --- how-to/add-firmware.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/how-to/add-firmware.md b/how-to/add-firmware.md index 799c0ed..ea6ff97 100644 --- a/how-to/add-firmware.md +++ b/how-to/add-firmware.md @@ -1,6 +1,6 @@ # Add Firmware -Linux kernel firmware files are normally installed in `/usr/lib/firmware` but in LibreELEC this directory is inside the read-only `SYSTEM` file preventing you from adding more files. To allow user changes we support an overlay system. You can copy your firmware files and subfolders to `/storage/.config/firmware` and reboot. On boot the new folders/files will be overlaid onto `/usr/lib/firmware` where kernel drivers expect to see them. +Linux kernel firmware files are normally installed in `/usr/lib/firmware` but in LibreELEC this directory is inside the read-only `SYSTEM` file preventing you from adding files. To allow user changes we support overlays. Copy firmware files and subfolders to `/storage/.config/firmware` and reboot. On boot the folders/files will be overlaid onto `/usr/lib/firmware` where kernel drivers expect to see them. ### Example From 333864ed757456f31b47ff46d5607b14bd65dda2 Mon Sep 17 00:00:00 2001 From: chewitt Date: Thu, 16 Sep 2021 10:02:51 +0000 Subject: [PATCH 19/63] GitBook: [master] one page modified --- project/releases.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/project/releases.md b/project/releases.md index bb59142..59dd06f 100644 --- a/project/releases.md +++ b/project/releases.md @@ -4,6 +4,12 @@ An offical archive of all Alpha, Beta, and Release images is here: [http://archi Nightly test and development snapshot images are here: [https://test.libreelec.tv](https://test.libreelec.tv) +## 10.0 \(Kodi v19, Matrix\) + +| Version | Status | Release Post | +| :--- | :--- | :--- | +| 10.0.0 | Stable | [Blog](https://libreelec.tv/2021/08/26/libreelec-matrix-10-0/) | + ## 9.2 \(Kodi v18, Leia\) | Version | Status | Release Post | From 708d781e02af2b873ca8fde8b62217f8ff689de9 Mon Sep 17 00:00:00 2001 From: chewitt Date: Thu, 16 Sep 2021 10:07:58 +0000 Subject: [PATCH 20/63] GitBook: [master] one page modified --- project/releases.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/project/releases.md b/project/releases.md index 59dd06f..104c918 100644 --- a/project/releases.md +++ b/project/releases.md @@ -85,3 +85,7 @@ Nightly test and development snapshot images are here: [https://test.libreelec.t | 7.0.1 | Stable | [Blog](https://libreelec.tv/2016/05/libreelec-jarvis-v7-0-1) | | 7.0.0 | Stable | [Blog](https://libreelec.tv/2016/04/libreelec-jarvis-v7-0-0-release) | +## 6.0 - 1.0 + +LibreELEC releases start at 7.0.0 after the project forked from OpenELEC. The team chose to continue the existing numbering scheme. + From e6cba8f65b329cfa3698a1c7bcd33b2b608ed9f3 Mon Sep 17 00:00:00 2001 From: CvH Date: Sun, 19 Sep 2021 11:00:42 +0000 Subject: [PATCH 21/63] GitBook: [master] 2 pages modified --- SUMMARY.md | 1 + .../build-commands-le-11.0.x.md | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 development-1/build-commands/build-commands-le-11.0.x.md diff --git a/SUMMARY.md b/SUMMARY.md index 0c51288..e0e6428 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -55,6 +55,7 @@ * [Building \(Advanced\)](development-1/build-advanced.md) * [Beginners Guide to Git](development-1/git-tutorial.md) * [Build Commands](development-1/build-commands/README.md) + * [Build Commands LE 11.0.x](development-1/build-commands/build-commands-le-11.0.x.md) * [Build Commands \(Add-ons\)](development-1/build-commands/build-addons.md) * [Build Commands LE 10.0.x](development-1/build-commands/build-commands-le10.md) * [Build Commands LE 9.2.x](development-1/build-commands/build-commands-le92.md) diff --git a/development-1/build-commands/build-commands-le-11.0.x.md b/development-1/build-commands/build-commands-le-11.0.x.md new file mode 100644 index 0000000..efb0db2 --- /dev/null +++ b/development-1/build-commands/build-commands-le-11.0.x.md @@ -0,0 +1,37 @@ +# Build Commands LE 11.0.x + +## Build Commands LE 11.0.x + +| Image | Command | +| :--- | :--- | +| Allwinner A64 | PROJECT=Allwinner ARCH=arm DEVICE=A64 make image | +| Allwinner H3 | PROJECT=Allwinner ARCH=arm DEVICE=H3 make image | +| Allwinner H5 | PROJECT=Allwinner ARCH=arm DEVICE=H5 make image | +| Allwinner H6 | PROJECT=Allwinner ARCH=arm DEVICE=H6 make image | +| Amlogic GXBB/GXL/GXM/G12/SM1 | PROJECT=Amlogic ARCH=arm DEVICE=AMLGX make image | +| Generic x86\_64 GBM | PROJECT=Generic DEVICE=Generic ARCH=x86\_64 make image | +| Generic x86\_64 X11 \(legacy\) | PROJECT=Generic DEVICE=Generic-legacy ARCH=x86\_64 make image | +| NXP/Freescale iMX.6 | PROJECT=NXP ARCH=arm DEVICE=iMX6 make image | +| NXP/Freescale iMX.8 | PROJECT=NXP ARCH=arm DEVICE=iMX8 make image | +| Qualcomm DragonBoard | PROJECT=Qualcomm ARCH=arm DEVICE=Dragonboard make image | +| Raspberry Pi 2/3 | PROJECT=RPi ARCH=arm DEVICE=RPi2 make image | +| Raspberry Pi 4 | PROJECT=RPi ARCH=arm DEVICE=RPi4 make image | +| Samsung Exynos | PROJECT=Samsung ARCH=arm DEVICE=Exynos make image | +| Rockchip RK3328 | PROJECT=Rockchip ARCH=arm DEVICE=RK3328 make image | +| Rockchip RK3288 | PROJECT=Rockchip ARCH=arm DEVICE=RK3288 make image | +| Rockchip RK3399 | PROJECT=Rockchip ARCH=arm DEVICE=RK3399 make image | + +### Notes + +To improve Jenkins/CI automation with ARM SoC `$PROJECT`\(s\) that support multiple `$DEVICE` types `make image` will iterate through all board/u-boot configurations defined in `scripts/uboot_helper` resulting in ~3-10 images in the target folder. To avoid this behaviour and build a single board-specific image `UBOOT_SYSTEM=` can be appended to the build command, e.g. to build an Amlogic image for a LibreComputer LePotato board: + +```text +PROJECT=Amlogic ARCH=arm DEVICE=AMLGX UBOOT_SYSTEM=lepotato make image +``` + +Several ARM SoC devices have a `UBOOT_SYSTEM=box` configuration which excludes u-boot and provides all device-trees, allowing the image to boot using the Android/BSP u-boot on emmc/spi. + +### Environment + +Official releases were built using Ubuntu 20.04 LTS. + From aacc1e340c4fb308a32548ea1d9a075a923701d4 Mon Sep 17 00:00:00 2001 From: chewitt Date: Tue, 21 Sep 2021 04:17:53 +0000 Subject: [PATCH 22/63] GitBook: [master] one page modified --- configuration/ir-remotes.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/configuration/ir-remotes.md b/configuration/ir-remotes.md index e835c1e..67e75f0 100644 --- a/configuration/ir-remotes.md +++ b/configuration/ir-remotes.md @@ -310,3 +310,33 @@ Although lircd disables all remote protocols \(and thus in-kernel decoding\) on Note: If you stop or disable LIRC in LibreELEC Settings you will need too reboot or set ir-keytable manually from the SSH console. Disabling LIRC does not automatically re-enable in-kernel decoding. +## Apple IR Remotes + +Older LibreELEC relases used `atvclient` to support the Apple IR sensor and send LIRC events to Kodi. Since 9.2.0 we use the native Linux kernel driver for the IR sensor, which sends normal HID events. Create a custom keymap in `/storage/.kodi/userdata/keymaps/keymap.xml` with the following content to map a White or Silver remote: + +```markup + + + + Left + Right + Up + Down + Back + + + + + VolumeUp + VolumeDown + + + + + VolumeUp + VolumeDown + + + +``` + From d6b402997b71f4d4342ef09171af16bbf197f52f Mon Sep 17 00:00:00 2001 From: chewitt Date: Sat, 25 Sep 2021 10:14:08 +0000 Subject: [PATCH 23/63] GitBook: [master] one page modified --- hardware/intel-x86-64-generic.md | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index a3b9811..3227813 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -1,2 +1,44 @@ # Intel x86-64 \(Generic\) +The LibreELEC "Generic" image supports a \(very\) broad range of x86\_64 compatible hardware using AMD, Intel, and nVidia GPU hardware. The GPU in a device determines what media can be played using hardware decoding and modern features like HDR, and the CPU determines if any unsupported codecs can be software decoded for playback by ffmpeg. + +## HDR + +HDR support in the Linux kernel, in Kodi, and in LibreELEC is ongoing "work in progress" that continues to evolve. HDR depends on a combination of the media format and colourspace properties, GPU hardware, HDMI output, and TV panel capabilities. Most users wrongly view HDR support like codec support, but it is much more complicated. Few people outside the world of broadcast media truly understand how it all works, and we are fortunate to have a small number of users from that professional background who provide direct and insightful feedback as progress is made. + +As GPU hardware is one of the major variables, please read the AMD, Intel, and nVidia GPU sections below for further information relevant to HDR support on that GPU type: + +## Intel GPUs + +< need to add something about different \*lake generations and support > + +## AMD GPUs + +< need to add something about different hardware generations and support > + +## nVidia GPUs + +LibreELEC v7.x - v10.x include two different nVidia GPU drivers; a "legacy" driver \(340.xx\) and the latest stable driver. The drivers provide `OpenGL` support via `Xorg` so Kodi can display a GUI on-screen, and Kodi supports`VDPAU` hardware decoding of H264 and some older SD era media codecs for efficient playback. Newer nVidia cards support 4K resolutions and `NVDEC` hardware decoding, but Kodi does not support `NVDEC`, and while Kodi can output 4K, nVidia drivers have no support for HEVC or VP9 \(the formats used with most 4K media\) and there is no support for HDR. It is no great surprise that project active-install stats show 80% of active nVidia installs are using the legacy nVidia driver, and the number of active installs continues to decline over time: meaning LibreELEC users are replacing nVidia devices with something that does not use an nVidia GPU. This trend is not new and influences our technical decisions: + +LibreELEC v11.x will switch "Generic" from Xorg OpenGL graphics to the Mesa OpenGL and the same DRM PRIME video stack used with ARM SoC devices. It is currently still possible to build a "Generic\_Legacy" image using Xorg, but if "GBM" image development continues to progress well our intention is to drop the legacy image \(and with it, nVidia support\). In lieu of this: + +_**The team does not recommend users purchase nVidia hardware for use with Kodi**_ + +LibreELEC v11.x "GBM" images are built with Mesa `nouveau` OpenGL support so users who upgrade will still see Kodi on-screen. However `nouveau` has no ability to "reclock" the GPU so the card runs at its lowest frequency so performance is bad \(too bad to be useful\). This issue is caused by nVidia requiring the use of signed \(closed-source\) firmware to interact with the card generations, and it is a problem with all modern nVidia cards and all Linux distributions. It means the `nouveau` driver is not a long-term solution for nVidia support in LibreELEC. + +nVidia has been working to reduce the differences between their `EGL Streams` alternative to `GBM` which may lead to support in Mesa which provides the OpenGL/GLES interface to render Kodi. If this happens it removes one technical blocker to LibreELEC supporting newer nVidia devices in future releases. However, it is not the only thing required. Kodi would also need to add support for `NVDEC` hardware decoding. However, Team Kodi has a firm policy of refusing to add more proprietary hardware-decoding APIs that complicate code maintenance. So far nobody in Team Kodi \(or outside it\) has volunteered to write the `NVDEC` support code and run the gauntlet of getting it accepted and merged. Even if an attempt was successful \(which is unlikely\) it would not benefit the majority of LibreELEC users with older nVidia GPU cards. So `NVDEC` support is not a long-term solution for nVidia support in LibreELEC either. + +NB: If \(when\) LibreELEC drops support for Xorg and nVidia users, it does not means Kodi has dropped support. nVidia users can continue to use their nVidia card with Xorg and any Desktop Linux distro that supports Kodi \(Arch, Debian, Ubuntu, etc.\) - although the long-term trend with Desktop distros is to move away from Xorg to Wayland \(which depends on Mesa\) so the trend there is negative too. In lieu of this, we say again: + +_**The team does not recommend users purchase nVidia hardware for use with Kodi**_ + +## Legacy Hardware + +Despite the range of devices that Generic x86\_64 images can run on, team development and testing has always been focussed on current and recent hardware packaged for use as HTPC devices. Users frequently mistake the minimalist nature of LibreELEC as perfect for recycling an older device \(laptops with a broken screen are a recurring theme\) into a medial player. You might be able to boot LibreELEC, but we are often missing hardware drivers for old hardware and the overall playback performance \(and power consumption\) of first generation Raspberry Pi boards is often way \(way\) better. As a general rule, project staff view any hardware over 7-8 years old as legacy hardware. If you do need to use legacy hardware; use an era-appropriate LibreELEC \(or OpenELEC\) image. + +## i386 Support + +Support for i386 hardware was dropped between OpenELEC v5.x and v6.x back in 2015 due to low numbers of users and LibreELEC staff have no interest in resurrecting support. It is still technically possible to restore i386 support to our buildsystem and self-build an i386 image since we support 32-bit ARM SoC devices and use 32-bit userspace with 64-bit ARM SoCs so most packages are still 32-bit compilable with little or no tweaking. However, there are still a moderate number of package that do need tweaks to restore i386 support, and there is no HOWTO guide that you can follow. Some users relish the intellectual challenge of figuring out how to restore support, but old i386 hardware is low-spec for modern Kodi use and our normal recommendation is to invest in an inexpensive Raspberry Pi board instead of spending tens or hundreds of hours performing buildsystem archeology. It will give a better overall result, costs less to run, and be zero hassle to maintain over time. + + + From c5f56da973b6fc53eaa8d32403976e70f8f8676c Mon Sep 17 00:00:00 2001 From: chewitt Date: Sat, 25 Sep 2021 10:49:35 +0000 Subject: [PATCH 24/63] GitBook: [master] one page modified --- hardware/qualcomm.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hardware/qualcomm.md b/hardware/qualcomm.md index 2d702a0..f0b554a 100644 --- a/hardware/qualcomm.md +++ b/hardware/qualcomm.md @@ -1,2 +1,6 @@ # Qualcomm +Dragonboard 410c support exists in LibreELEC as open-source `freedreno` drivers provided a stable Linux reference implementation of stateful V4L2m2m uAPI usage, allowing Team Kodi developers to evolve support for GBM and EGL/DRMPRIME rendering with zero-copy hardware decoding, which is now the foundation for future support of Kodi on Linux. + +Kodi runs well on the Dragonboard 410c due to mature support in the Linux kernel and ffmpeg, but it is a expensive board to purchase and rather fiddly to flash with a LibreELEC image, so is not hardware the project staff recommends. Device support remains in the buildsystem for occasional reference testing of changes and we do not provide release images. + From f14c22763366e0a408231497936dec3b5f9e67ed Mon Sep 17 00:00:00 2001 From: heitbaum Date: Sun, 26 Sep 2021 12:03:23 +1000 Subject: [PATCH 25/63] Intel GT Gen8+ support --- hardware/intel-x86-64-generic.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index 3227813..27c0084 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -10,7 +10,17 @@ As GPU hardware is one of the major variables, please read the AMD, Intel, and n ## Intel GPUs -< need to add something about different \*lake generations and support > +[Intel Graphics Technology (GT)][1] was first introduced in 2010. The Eighth generation (Gen8) Intel Graphics Technology was released with the Broadwell and Braswell (Gen5) CPUs. The Ninth generation (Gen9) Intel Graphics Technology was first released with the Skylake (Gen6) range of CPUs in 2015, the first Intel GT that supported H.265 (HEVC) hardware-accelerated video decompression algorithms. This was followed by the Intel GT (Gen9.5) with the following CPUs: Apollo Lake / Kaby Lake / Kaby Lake Refresh / Amber Lake / Coffee Lake / Coffee Lake Refresh / Whiskey Lake / Comet Lake (Gen7, Gen8, Gen9). Ice Lake CPUs (Gen 10) were released in 2019 with (Gen11) GT hardware. Tiger Lake CPUs (Gen11) were released at the end of 2020 with the new Iris Xe (Gen12) GT GPU, this is the first GPU to have the AV1 hardware-accelerated video decompression algorithm. + +The default Mesa OpenGL driver for the Gen8+ GT GPUs is the i915 driver since Mesa version 20. LibreELEC v10.x uses Mesa 21.x.x. The older i965 driver remains optionally available on machines with Gen8+ Intel Graphics Technology and it remains the default on machines with Gen<=7.5 GT. + +Hardware decoding with the i915 driver in LibreELEC v10.x works well and is tested regularly with Ninth generation (Gen9) Intel GT; specifically Skylake (SKL). + +- [Gen6 Intel Core][3] CPUs (NUC6) have both a HDMI 1.4b and a DisplayPort 1.2. + - The DisplayPort is capable if 3840 x 2160 @ 60Hz which the DMI port is only capable of 1920 x 1200 @ 60Hz. +- _**For HDR support Gen7 and Gen8 Intel Core CPUs require a [LSPCON][2] (Level Shifter and Protocol Converter) for connection to a HDMI2.0 TV, if using the HDMI port**_ +- LSPCON is avaialable in the Linux Kernel from 5.12 onwards. +- Tiger Lake (TGL) CPUs work with LibreELEC v10.0 are not fully supported in the Linux until 5.12. ## AMD GPUs @@ -40,5 +50,6 @@ Despite the range of devices that Generic x86\_64 images can run on, team develo Support for i386 hardware was dropped between OpenELEC v5.x and v6.x back in 2015 due to low numbers of users and LibreELEC staff have no interest in resurrecting support. It is still technically possible to restore i386 support to our buildsystem and self-build an i386 image since we support 32-bit ARM SoC devices and use 32-bit userspace with 64-bit ARM SoCs so most packages are still 32-bit compilable with little or no tweaking. However, there are still a moderate number of package that do need tweaks to restore i386 support, and there is no HOWTO guide that you can follow. Some users relish the intellectual challenge of figuring out how to restore support, but old i386 hardware is low-spec for modern Kodi use and our normal recommendation is to invest in an inexpensive Raspberry Pi board instead of spending tens or hundreds of hours performing buildsystem archeology. It will give a better overall result, costs less to run, and be zero hassle to maintain over time. - - +[1]: https://en.wikipedia.org/wiki/Intel_Graphics_Technology "Wikipedia: Intel Graphics Technology" +[2]: https://www.intel.com/content/dam/support/us/en/documents/graphics/HDR_Intel_Graphics_TechWhitePaper.pdf "High Dynamic Range (HDR) on Intel Graphics: Technical White Paper" +[3]: https://cdrdv2.intel.com/v1/dl/getContent/332687 "Intel SKL Data Sheet" From 09e18f7e33a1265cd602e988121855211df43807 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 26 Sep 2021 05:14:15 +0000 Subject: [PATCH 26/63] GitBook: [master] 2 pages modified --- configuration/hyperion.md | 2 +- hardware/intel-x86-64-generic.md | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/configuration/hyperion.md b/configuration/hyperion.md index fa4cc2c..7390fa0 100644 --- a/configuration/hyperion.md +++ b/configuration/hyperion.md @@ -1,6 +1,6 @@ # Hyperion -Hyperion requires some hardware and software configuration. For the software configuration pls head over to [Hypercon](hypercon.md). This page will describe the process to add Hyperion to Generic x86\_64 and Raspberry Pi hardware. +[Hyperion](https://github.com/hyperion-project/hyperion) is an open source project that provides an ambient lighting system, compatiblie with Kodi. Hyperion requires hardware and software configuration. This page describes the process to add Hyperion to Generic x86\_64 and Raspberry Pi hardware. For software configuration please head over to [Hypercon](hypercon.md). ## Adalight diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index 27c0084..ce5816f 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -10,17 +10,17 @@ As GPU hardware is one of the major variables, please read the AMD, Intel, and n ## Intel GPUs -[Intel Graphics Technology (GT)][1] was first introduced in 2010. The Eighth generation (Gen8) Intel Graphics Technology was released with the Broadwell and Braswell (Gen5) CPUs. The Ninth generation (Gen9) Intel Graphics Technology was first released with the Skylake (Gen6) range of CPUs in 2015, the first Intel GT that supported H.265 (HEVC) hardware-accelerated video decompression algorithms. This was followed by the Intel GT (Gen9.5) with the following CPUs: Apollo Lake / Kaby Lake / Kaby Lake Refresh / Amber Lake / Coffee Lake / Coffee Lake Refresh / Whiskey Lake / Comet Lake (Gen7, Gen8, Gen9). Ice Lake CPUs (Gen 10) were released in 2019 with (Gen11) GT hardware. Tiger Lake CPUs (Gen11) were released at the end of 2020 with the new Iris Xe (Gen12) GT GPU, this is the first GPU to have the AV1 hardware-accelerated video decompression algorithm. +[Intel Graphics Technology \(GT\)](https://en.wikipedia.org/wiki/Intel_Graphics_Technology) was first introduced in 2010. The Eighth generation \(Gen8\) Intel Graphics Technology was released with the Broadwell and Braswell \(Gen5\) CPUs. The Ninth generation \(Gen9\) Intel Graphics Technology was first released with the Skylake \(Gen6\) range of CPUs in 2015, the first Intel GT that supported H.265 \(HEVC\) hardware-accelerated video decompression algorithms. This was followed by the Intel GT \(Gen9.5\) with the following CPUs: Apollo Lake / Kaby Lake / Kaby Lake Refresh / Amber Lake / Coffee Lake / Coffee Lake Refresh / Whiskey Lake / Comet Lake \(Gen7, Gen8, Gen9\). Ice Lake CPUs \(Gen 10\) were released in 2019 with \(Gen11\) GT hardware. Tiger Lake CPUs \(Gen11\) were released at the end of 2020 with the new Iris Xe \(Gen12\) GT GPU, this is the first GPU to have the AV1 hardware-accelerated video decompression algorithm. -The default Mesa OpenGL driver for the Gen8+ GT GPUs is the i915 driver since Mesa version 20. LibreELEC v10.x uses Mesa 21.x.x. The older i965 driver remains optionally available on machines with Gen8+ Intel Graphics Technology and it remains the default on machines with Gen<=7.5 GT. +The default Mesa OpenGL driver for the Gen8+ GT GPUs is the i915 driver since Mesa version 20. LibreELEC v10.x uses Mesa 21.x.x. The older i965 driver remains optionally available on machines with Gen8+ Intel Graphics Technology and it remains the default on machines with Gen<=7.5 GT. -Hardware decoding with the i915 driver in LibreELEC v10.x works well and is tested regularly with Ninth generation (Gen9) Intel GT; specifically Skylake (SKL). +Hardware decoding with the i915 driver in LibreELEC v10.x works well and is tested regularly with Ninth generation \(Gen9\) Intel GT; specifically Skylake \(SKL\). -- [Gen6 Intel Core][3] CPUs (NUC6) have both a HDMI 1.4b and a DisplayPort 1.2. - - The DisplayPort is capable if 3840 x 2160 @ 60Hz which the DMI port is only capable of 1920 x 1200 @ 60Hz. -- _**For HDR support Gen7 and Gen8 Intel Core CPUs require a [LSPCON][2] (Level Shifter and Protocol Converter) for connection to a HDMI2.0 TV, if using the HDMI port**_ -- LSPCON is avaialable in the Linux Kernel from 5.12 onwards. -- Tiger Lake (TGL) CPUs work with LibreELEC v10.0 are not fully supported in the Linux until 5.12. +* [Gen6 Intel Core](https://cdrdv2.intel.com/v1/dl/getContent/332687) CPUs \(NUC6\) have both a HDMI 1.4b and a DisplayPort 1.2. + * The DisplayPort is capable if 3840 x 2160 @ 60Hz which the DMI port is only capable of 1920 x 1200 @ 60Hz. +* _**For HDR support Gen7 and Gen8 Intel Core CPUs require a**_ [_**LSPCON**_](https://www.intel.com/content/dam/support/us/en/documents/graphics/HDR_Intel_Graphics_TechWhitePaper.pdf) _**\(Level Shifter and Protocol Converter\) for connection to a HDMI2.0 TV, if using the HDMI port**_ +* LSPCON is avaialable in the Linux Kernel from 5.12 onwards. +* Tiger Lake \(TGL\) CPUs work with LibreELEC v10.0 are not fully supported in the Linux until 5.12. ## AMD GPUs @@ -50,6 +50,3 @@ Despite the range of devices that Generic x86\_64 images can run on, team develo Support for i386 hardware was dropped between OpenELEC v5.x and v6.x back in 2015 due to low numbers of users and LibreELEC staff have no interest in resurrecting support. It is still technically possible to restore i386 support to our buildsystem and self-build an i386 image since we support 32-bit ARM SoC devices and use 32-bit userspace with 64-bit ARM SoCs so most packages are still 32-bit compilable with little or no tweaking. However, there are still a moderate number of package that do need tweaks to restore i386 support, and there is no HOWTO guide that you can follow. Some users relish the intellectual challenge of figuring out how to restore support, but old i386 hardware is low-spec for modern Kodi use and our normal recommendation is to invest in an inexpensive Raspberry Pi board instead of spending tens or hundreds of hours performing buildsystem archeology. It will give a better overall result, costs less to run, and be zero hassle to maintain over time. -[1]: https://en.wikipedia.org/wiki/Intel_Graphics_Technology "Wikipedia: Intel Graphics Technology" -[2]: https://www.intel.com/content/dam/support/us/en/documents/graphics/HDR_Intel_Graphics_TechWhitePaper.pdf "High Dynamic Range (HDR) on Intel Graphics: Technical White Paper" -[3]: https://cdrdv2.intel.com/v1/dl/getContent/332687 "Intel SKL Data Sheet" From d2454ad37be8facca64aeecaf5a11fd50bb6f17e Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 26 Sep 2021 05:26:03 +0000 Subject: [PATCH 27/63] GitBook: [master] one page modified --- support/update.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/support/update.md b/support/update.md index 5c4c4bc..75a7b2e 100644 --- a/support/update.md +++ b/support/update.md @@ -13,11 +13,11 @@ Auto-Update is enabled by default and tracks minor version updates, e.g. LibreEL ## Setttings Add-On -Navigate to the Update section of the settings add-on, select the update channel \(LibreELEC major version\) and then the specific minor version to update to. The update .tar file will start downloading, and once complete the system will reboot to perform the update. +Navigate to the Update section of the settings add-on, select the update channel \(LibreELEC major version\) and then the specific minor version to update to. The update .tar file will start downloading, and once complete the system will reboot to perform the update. Please see the following video -{% embed url="https://www.youtube.com/watch?v=CjlHY6syRHw" %} +{% embed url="https://www.youtube.com/watch?v=CjlHY6syRHw" caption="" %} ## Samba Share @@ -49,11 +49,9 @@ Once the download has completed, reboot to start the update process reboot ``` -## USB drive -1. Download the update file and place it to USB drive -2. Connect the USB drive to your LibreELEC device and navigate to the \(hidden\) `/storage/.update/` update folder using the Kodi File manager -3. Copy the update file from your USB drive into the _.update_ folder -4. Restart your LibreELEC device to launch the update process +## USB Drive + +Download the LibreELEC image or update file and copy it to a USB drive. Connect the USB drive to your HTPC and navigate to the `/storage/.update/` update folder using Kodi File Manager \(you will need to enable viewing of hidden files and folders in Kodi settings\). Copy the update file from the USB drive to `/storage/.update` then reboot to start the update process. ## Downgrade From 6c82f2acfb60c6e11e459ca48e7b5fd89a734ad9 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 26 Sep 2021 09:58:42 +0000 Subject: [PATCH 28/63] GitBook: [master] one page modified --- hardware/intel-x86-64-generic.md | 37 +++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index ce5816f..959dea8 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -4,23 +4,36 @@ The LibreELEC "Generic" image supports a \(very\) broad range of x86\_64 compati ## HDR -HDR support in the Linux kernel, in Kodi, and in LibreELEC is ongoing "work in progress" that continues to evolve. HDR depends on a combination of the media format and colourspace properties, GPU hardware, HDMI output, and TV panel capabilities. Most users wrongly view HDR support like codec support, but it is much more complicated. Few people outside the world of broadcast media truly understand how it all works, and we are fortunate to have a small number of users from that professional background who provide direct and insightful feedback as progress is made. +HDR support in the Linux kernel, in Kodi, and in LibreELEC is ongoing "work in progress" that continues to evolve. HDR depends on a combination of the media format and colourspace properties, GPU hardware, HDMI output, and TV panel capabilities. Most users wrongly view HDR support like codec support, but it is significantly more complicated. Few people outside the broadcast media industry truly understand how it works \(in theory and in practice\) but we are fortunate to have users with that professional background providing testing and insightful feedback to the team as progress is made. As GPU hardware is one of the major variables, please read the AMD, Intel, and nVidia GPU sections below for further information relevant to HDR support on that GPU type: ## Intel GPUs -[Intel Graphics Technology \(GT\)](https://en.wikipedia.org/wiki/Intel_Graphics_Technology) was first introduced in 2010. The Eighth generation \(Gen8\) Intel Graphics Technology was released with the Broadwell and Braswell \(Gen5\) CPUs. The Ninth generation \(Gen9\) Intel Graphics Technology was first released with the Skylake \(Gen6\) range of CPUs in 2015, the first Intel GT that supported H.265 \(HEVC\) hardware-accelerated video decompression algorithms. This was followed by the Intel GT \(Gen9.5\) with the following CPUs: Apollo Lake / Kaby Lake / Kaby Lake Refresh / Amber Lake / Coffee Lake / Coffee Lake Refresh / Whiskey Lake / Comet Lake \(Gen7, Gen8, Gen9\). Ice Lake CPUs \(Gen 10\) were released in 2019 with \(Gen11\) GT hardware. Tiger Lake CPUs \(Gen11\) were released at the end of 2020 with the new Iris Xe \(Gen12\) GT GPU, this is the first GPU to have the AV1 hardware-accelerated video decompression algorithm. - -The default Mesa OpenGL driver for the Gen8+ GT GPUs is the i915 driver since Mesa version 20. LibreELEC v10.x uses Mesa 21.x.x. The older i965 driver remains optionally available on machines with Gen8+ Intel Graphics Technology and it remains the default on machines with Gen<=7.5 GT. - -Hardware decoding with the i915 driver in LibreELEC v10.x works well and is tested regularly with Ninth generation \(Gen9\) Intel GT; specifically Skylake \(SKL\). - -* [Gen6 Intel Core](https://cdrdv2.intel.com/v1/dl/getContent/332687) CPUs \(NUC6\) have both a HDMI 1.4b and a DisplayPort 1.2. - * The DisplayPort is capable if 3840 x 2160 @ 60Hz which the DMI port is only capable of 1920 x 1200 @ 60Hz. -* _**For HDR support Gen7 and Gen8 Intel Core CPUs require a**_ [_**LSPCON**_](https://www.intel.com/content/dam/support/us/en/documents/graphics/HDR_Intel_Graphics_TechWhitePaper.pdf) _**\(Level Shifter and Protocol Converter\) for connection to a HDMI2.0 TV, if using the HDMI port**_ -* LSPCON is avaialable in the Linux Kernel from 5.12 onwards. -* Tiger Lake \(TGL\) CPUs work with LibreELEC v10.0 are not fully supported in the Linux until 5.12. +Intel NUC and similar-sized Intel GPU devices are popular for building an HTPC device around since they combine well supported upstream GPU drivers with entry level Celeron and Core i3 chips to intermediate Core i5 and high-end Core i7 CPUs. + +Modern Intel GPUs have been shipping since "Nehalem" in 2010, and over time the number of different CPU and GPU generations and codenames have multiplied, making it confusing to figure out what media features a device can support. The following table is based on public sources like wikipedia, and it indicates hardware features, which do not always translate into what Linux and Kodi currently support in software: + +| CPU | Codename | Driver | H264 | HEVC | AV1 | 4K | HDR | +| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | +| Gen1 | Nehalem | i965 | Yes | No | No | No | No | +| Gen2 | Sandy-bridge | i965 | Yes | No | No | No | No | +| Gen3 | Ivy-Bridge | i965 | Yes | No | No | No | No | +| Gen4 | Haswell | i965 | Yes | No | No | No | No | +| Gen5 | Broadwell, Braswell | i915 | Yes | No | No | No | No | +| Gen6 | Skylake | i915 | Yes | Yes | No | DP | No | +| Gen7 | Kaby-lake, Apollo-lake | i915 | Yes | Yes | No | Yes | HDMI | +| Gen8 | Coffee-lake, Kaby-lake refresh, Whiskey-lake | i915 | Yes | Yes | No | Yes | HDMI | +| Gen9 | Coffee-lake refresh | i915 | Yes | Yes | No | Yes | HDMI | +| Gen10 | Comet-lake, Ice-lake, Amber-lake | i915 | Yes | Yes | No | Yes | Yes | +| Gen11 | Rocket-lake, Tiger-lake | i915 | Yes | Yes | Yes | Yes | Yes | + +* Gen6 CPUs \(Skylake\) have HDMI 1.4b and DisplayPort 1.2 connectors. HDMI can run at max 1920x1200@60 resolution, while DP can run at max 3840x2160@60 resolution. +* Gen7 and Gen8 CPUs use an LSPCON chip for HDMI 2.0 output. HDR is supported only when the HDMI output is connected to an HDMI 2.0 port on the TV. Users with Intel NUC devices are recommended to run the latest Intel firmware for their device. Lots of bugs in original/factory LSPCON firmwares have been fixed. +* Linux supports LSPCON chips for HDR from Linux 5.12 onwards +* Linux has full support for Tiger-Lake CPUs from Linux 5.12 onwards + +**LibreELEC 10.0 shipped with Linux 5.10 kernel support and Xorg graphics so it does not have support for HDR or Gen11 hardware**. Community created LibreELEC 10.0 images with newer Linux kernels supporting Gen11 hardware and `GBM` graphics with experimental HDR patches can be downloaded from the LibreELEC forums. LibreELEC 11.0 nightly development images from 21/9/21 onwards also use GBM graphics and include early \(pre-Alpha\) Kodi 20.0 support for HDR, but do not yet have newer kernels needed for Gen11 hardware support. ## AMD GPUs From 05e8bd6b78402b44698a22b71fedd6b66a6f7590 Mon Sep 17 00:00:00 2001 From: rudi Date: Sun, 26 Sep 2021 10:40:41 +0000 Subject: [PATCH 29/63] GitBook: [master] one page modified --- hardware/intel-x86-64-generic.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index 959dea8..c4bd62b 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -32,8 +32,11 @@ Modern Intel GPUs have been shipping since "Nehalem" in 2010, and over time the * Gen7 and Gen8 CPUs use an LSPCON chip for HDMI 2.0 output. HDR is supported only when the HDMI output is connected to an HDMI 2.0 port on the TV. Users with Intel NUC devices are recommended to run the latest Intel firmware for their device. Lots of bugs in original/factory LSPCON firmwares have been fixed. * Linux supports LSPCON chips for HDR from Linux 5.12 onwards * Linux has full support for Tiger-Lake CPUs from Linux 5.12 onwards +* The GPUs found in the table above are known as _Intel Graphics Technology \(GT\) integrated graphics processors \(IGPs\)_ and are within the CPU. The GPUs do have their own generation identifiers which do not match the CPU generation, though there is only one GPU generation within a CPU generation. -**LibreELEC 10.0 shipped with Linux 5.10 kernel support and Xorg graphics so it does not have support for HDR or Gen11 hardware**. Community created LibreELEC 10.0 images with newer Linux kernels supporting Gen11 hardware and `GBM` graphics with experimental HDR patches can be downloaded from the LibreELEC forums. LibreELEC 11.0 nightly development images from 21/9/21 onwards also use GBM graphics and include early \(pre-Alpha\) Kodi 20.0 support for HDR, but do not yet have newer kernels needed for Gen11 hardware support. + . + +**LibreELEC 10.0 shipped with Linux 5.10 kernel support and Xorg graphics, so it does not have support for HDR or Gen11 hardware**. Community created LibreELEC 10.0 images with newer Linux kernels supporting Gen11 hardware and `GBM` graphics with experimental HDR patches can be downloaded from the LibreELEC forums. LibreELEC 11.0 nightly development images from 21/9/21 onwards also use GBM graphics, include early \(pre-Alpha\) Kodi 20.0 support for HDR, and an updated kernel supporting Gen11 hardware. ## AMD GPUs From 3adfa9d7332fd63ec025234f75b2545750796225 Mon Sep 17 00:00:00 2001 From: chewitt Date: Wed, 29 Sep 2021 05:39:18 +0000 Subject: [PATCH 30/63] GitBook: [master] 52 pages modified --- hardware/intel-x86-64-generic.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index c4bd62b..580673e 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -32,29 +32,33 @@ Modern Intel GPUs have been shipping since "Nehalem" in 2010, and over time the * Gen7 and Gen8 CPUs use an LSPCON chip for HDMI 2.0 output. HDR is supported only when the HDMI output is connected to an HDMI 2.0 port on the TV. Users with Intel NUC devices are recommended to run the latest Intel firmware for their device. Lots of bugs in original/factory LSPCON firmwares have been fixed. * Linux supports LSPCON chips for HDR from Linux 5.12 onwards * Linux has full support for Tiger-Lake CPUs from Linux 5.12 onwards -* The GPUs found in the table above are known as _Intel Graphics Technology \(GT\) integrated graphics processors \(IGPs\)_ and are within the CPU. The GPUs do have their own generation identifiers which do not match the CPU generation, though there is only one GPU generation within a CPU generation. - - . +* Intel GPUs are known as _Integrated graphics processors \(IGPs\)_ and are embedded within the CPU core. Each CPU generation uses a single GPU generation but the generation ID's do not match, e.g. Gen10 CPUs have Gen11 GPUs. **LibreELEC 10.0 shipped with Linux 5.10 kernel support and Xorg graphics, so it does not have support for HDR or Gen11 hardware**. Community created LibreELEC 10.0 images with newer Linux kernels supporting Gen11 hardware and `GBM` graphics with experimental HDR patches can be downloaded from the LibreELEC forums. LibreELEC 11.0 nightly development images from 21/9/21 onwards also use GBM graphics, include early \(pre-Alpha\) Kodi 20.0 support for HDR, and an updated kernel supporting Gen11 hardware. ## AMD GPUs -< need to add something about different hardware generations and support > +AMD GPUs are a popular option for users building custom HTPCs from motherboards without onboard Intel graphics. LibreELEC embeds two AMD drivers: `radeon` is used with older cards, and `amdgpu` is used with newer cards \(starting from the 'Southern Islands' family\). + +Determining media features \(H264, HEVC, AV1, 4K, 4K60, HDR, etc.\) is complicated due to the sheer number of different AMD cards available. Each new GPU generation ships with low-end cards limited in capabilities, and high-end cards with multiple connectors. Media features like 4K and HDR have a dependency on connectors \(HDMI or Displayport\) and the standards the connectors support. For example, some cards might support HDMI 1.4b and a max resolution of up to 3840x2160@30 with 8-bit HDR output, while cards equipped with DisplayPort 1.4 or HDMI 2.0 connectors may support up to 3840x2160@60 with 10-bit output. + +The most accurate source of information is the [AMD Radeon Graphics](https://www.amd.com/en/products/specifications/graphics) website. + +NB: AMD cards are also highly configurable and sometimes require manual overrides via kernel boot paramaters to resolve hardware compatibility and software stability issues. ## nVidia GPUs -LibreELEC v7.x - v10.x include two different nVidia GPU drivers; a "legacy" driver \(340.xx\) and the latest stable driver. The drivers provide `OpenGL` support via `Xorg` so Kodi can display a GUI on-screen, and Kodi supports`VDPAU` hardware decoding of H264 and some older SD era media codecs for efficient playback. Newer nVidia cards support 4K resolutions and `NVDEC` hardware decoding, but Kodi does not support `NVDEC`, and while Kodi can output 4K, nVidia drivers have no support for HEVC or VP9 \(the formats used with most 4K media\) and there is no support for HDR. It is no great surprise that project active-install stats show 80% of active nVidia installs are using the legacy nVidia driver, and the number of active installs continues to decline over time: meaning LibreELEC users are replacing nVidia devices with something that does not use an nVidia GPU. This trend is not new and influences our technical decisions: +LibreELEC v7.x - v10.x include two different nVidia GPU drivers; a "legacy" driver \(340.xx\) and the latest stable driver. The drivers provide `OpenGL` support via `Xorg` so Kodi can display a GUI on-screen, and Kodi supports`VDPAU` hardware decoding of H264 and some older SD era media codecs for efficient playback. Newer nVidia cards support 4K resolutions and `NVDEC` hardware decoding, but Kodi does not support `NVDEC`, and while Kodi can output 4K, nVidia drivers have no support for HEVC or VP9 \(the formats used with most 4K media\) and there is no support for HDR. It is no surprise that project active-install stats show most nVidia installs are using the legacy nVidia driver, and the number of installs continues to decline over time: meaning LibreELEC users are replacing older nVidia devices with something that does not use an nVidia GPU. This trend is not new and influences our technical decisions: LibreELEC v11.x will switch "Generic" from Xorg OpenGL graphics to the Mesa OpenGL and the same DRM PRIME video stack used with ARM SoC devices. It is currently still possible to build a "Generic\_Legacy" image using Xorg, but if "GBM" image development continues to progress well our intention is to drop the legacy image \(and with it, nVidia support\). In lieu of this: _**The team does not recommend users purchase nVidia hardware for use with Kodi**_ -LibreELEC v11.x "GBM" images are built with Mesa `nouveau` OpenGL support so users who upgrade will still see Kodi on-screen. However `nouveau` has no ability to "reclock" the GPU so the card runs at its lowest frequency so performance is bad \(too bad to be useful\). This issue is caused by nVidia requiring the use of signed \(closed-source\) firmware to interact with the card generations, and it is a problem with all modern nVidia cards and all Linux distributions. It means the `nouveau` driver is not a long-term solution for nVidia support in LibreELEC. +LibreELEC v11.x "GBM" images are built with Mesa `nouveau` OpenGL support so nVidia users who upgrade will see Kodi on-screen. However `nouveau` has no ability to "reclock" modern nVidia GPUs so the card runs at its lowest clock frequency and performance is bad \(too bad to be useful\). This issue is caused by nVidia requiring the use of signed \(closed-source\) firmware to interact with newer card generations, and it is a problem with all modern nVidia cards and all Linux distributions. It means the `nouveau` driver only works with very old nVidia cards, and is not a long-term solution for nVidia support in LibreELEC. -nVidia has been working to reduce the differences between their `EGL Streams` alternative to `GBM` which may lead to support in Mesa which provides the OpenGL/GLES interface to render Kodi. If this happens it removes one technical blocker to LibreELEC supporting newer nVidia devices in future releases. However, it is not the only thing required. Kodi would also need to add support for `NVDEC` hardware decoding. However, Team Kodi has a firm policy of refusing to add more proprietary hardware-decoding APIs that complicate code maintenance. So far nobody in Team Kodi \(or outside it\) has volunteered to write the `NVDEC` support code and run the gauntlet of getting it accepted and merged. Even if an attempt was successful \(which is unlikely\) it would not benefit the majority of LibreELEC users with older nVidia GPU cards. So `NVDEC` support is not a long-term solution for nVidia support in LibreELEC either. +nVidia has been working to reduce the differences between their `EGL Streams` alternative to `GBM` which may lead to support in Mesa which provides the OpenGL/GLES interface to render Kodi. If this happens it removes one technical blocker to LibreELEC supporting newer nVidia devices in future releases. However, it is not the only thing required. Kodi would also need to add support for `NVDEC` hardware decoding. This would not be a big technical challenge to implemeent in Kodi. However, Team Kodi has an established policy of refusing to add more proprietary hardware-decoding APIs that complicate code maintenance. So far nobody has volunteered to write the `NVDEC` support code and run the gauntlet of getting it accepted and merged. Even if an attempt was successful \(which is unlikely\) it would not benefit the majority of LibreELEC users with older nVidia GPU cards. So `NVDEC` support is also not a long-term solution for nVidia support in LibreELEC either. -NB: If \(when\) LibreELEC drops support for Xorg and nVidia users, it does not means Kodi has dropped support. nVidia users can continue to use their nVidia card with Xorg and any Desktop Linux distro that supports Kodi \(Arch, Debian, Ubuntu, etc.\) - although the long-term trend with Desktop distros is to move away from Xorg to Wayland \(which depends on Mesa\) so the trend there is negative too. In lieu of this, we say again: +NB: If \(when\) LibreELEC drops support for Xorg and nVidia users, it does not means Kodi has dropped support. nVidia users can continue to use their nVidia card with Xorg and any Desktop Linux distro that supports Kodi \(Arch, Debian, Ubuntu, etc.\) - although the long-term trend with Desktop distros is to move away from Xorg to Wayland \(which depends on Mesa\) so the trend there is against nVidia too. In lieu of this, we say again: _**The team does not recommend users purchase nVidia hardware for use with Kodi**_ From 8fd2a33cc9b0cd99f86362c41588d545accb09f7 Mon Sep 17 00:00:00 2001 From: chewitt Date: Wed, 29 Sep 2021 05:48:01 +0000 Subject: [PATCH 31/63] GitBook: [master] one page modified --- hardware/intel-x86-64-generic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index 580673e..382b142 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -68,5 +68,5 @@ Despite the range of devices that Generic x86\_64 images can run on, team develo ## i386 Support -Support for i386 hardware was dropped between OpenELEC v5.x and v6.x back in 2015 due to low numbers of users and LibreELEC staff have no interest in resurrecting support. It is still technically possible to restore i386 support to our buildsystem and self-build an i386 image since we support 32-bit ARM SoC devices and use 32-bit userspace with 64-bit ARM SoCs so most packages are still 32-bit compilable with little or no tweaking. However, there are still a moderate number of package that do need tweaks to restore i386 support, and there is no HOWTO guide that you can follow. Some users relish the intellectual challenge of figuring out how to restore support, but old i386 hardware is low-spec for modern Kodi use and our normal recommendation is to invest in an inexpensive Raspberry Pi board instead of spending tens or hundreds of hours performing buildsystem archeology. It will give a better overall result, costs less to run, and be zero hassle to maintain over time. +Support for i386 hardware was dropped between OpenELEC v5.x and v6.x in 2015 due to low numbers of users, and LibreELEC has no interest in resurrecting support. It is still technically possible to hack/restore i386 support into our buildsystem and self-build an i386 image since we support 32-bit ARM SoC devices and use 32-bit userspace with 64-bit ARM SoCs so most packages in are still 32-bit compilable with little or no tweaking. However, there are still a few packages that do need tweaking to restore i386 support, and there is no HOWTO guide that you can follow. Some users enjoy the intellectual challenge of figuring out how to restore i386 support, but i386 hardware is super low-spec for modern Kodi use and our recommendation is to invest in a Raspberry Pi board instead of spending tens or hundreds of hours on codebase archeology. An inexpensive Pi board will give a better overall result, costs less to run, and be zero hassle to maintain over time. From 187ce031d948a3ace23e80c25f1b1b7d60e79224 Mon Sep 17 00:00:00 2001 From: chewitt Date: Wed, 29 Sep 2021 15:39:57 +0000 Subject: [PATCH 32/63] GitBook: [master] 52 pages modified --- hardware/intel-x86-64-generic.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index 382b142..2e86b37 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -40,11 +40,9 @@ Modern Intel GPUs have been shipping since "Nehalem" in 2010, and over time the AMD GPUs are a popular option for users building custom HTPCs from motherboards without onboard Intel graphics. LibreELEC embeds two AMD drivers: `radeon` is used with older cards, and `amdgpu` is used with newer cards \(starting from the 'Southern Islands' family\). -Determining media features \(H264, HEVC, AV1, 4K, 4K60, HDR, etc.\) is complicated due to the sheer number of different AMD cards available. Each new GPU generation ships with low-end cards limited in capabilities, and high-end cards with multiple connectors. Media features like 4K and HDR have a dependency on connectors \(HDMI or Displayport\) and the standards the connectors support. For example, some cards might support HDMI 1.4b and a max resolution of up to 3840x2160@30 with 8-bit HDR output, while cards equipped with DisplayPort 1.4 or HDMI 2.0 connectors may support up to 3840x2160@60 with 10-bit output. +Determining media features \(H264, HEVC, AV1, 4K, 4K60, HDR, etc.\) is complicated due to the sheer number of different AMD cards available. Each new GPU generation ships with low-end cards limited in capabilities, and high-end cards with multiple connectors. Media features like 4K and HDR also have a dependency on connectors \(HDMI or Displayport\) and the standards the connectors support. For example, some cards support HDMI 1.4b and a max resolution of up to 3840x2160@30 with 8-bit HDR output, while cards with DisplayPort 1.4 or HDMI 2.0 may support up to 3840x2160@60 with 10-bit output. -The most accurate source of information is the [AMD Radeon Graphics](https://www.amd.com/en/products/specifications/graphics) website. - -NB: AMD cards are also highly configurable and sometimes require manual overrides via kernel boot paramaters to resolve hardware compatibility and software stability issues. +The most accurate source of information is [https://www.x.org/wiki/RadeonFeature](https://www.x.org/wiki/RadeonFeature/) ## nVidia GPUs From 5f763ce93241d973ee14ec706cc407c7747eab0f Mon Sep 17 00:00:00 2001 From: chewitt Date: Sat, 16 Oct 2021 03:36:50 +0000 Subject: [PATCH 33/63] GitBook: [#60] update Generic to include new info on nVidia drivers --- hardware/intel-x86-64-generic.md | 57 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/hardware/intel-x86-64-generic.md b/hardware/intel-x86-64-generic.md index 2e86b37..8b0153f 100644 --- a/hardware/intel-x86-64-generic.md +++ b/hardware/intel-x86-64-generic.md @@ -1,10 +1,10 @@ -# Intel x86-64 \(Generic\) +# Intel x86-64 (Generic) -The LibreELEC "Generic" image supports a \(very\) broad range of x86\_64 compatible hardware using AMD, Intel, and nVidia GPU hardware. The GPU in a device determines what media can be played using hardware decoding and modern features like HDR, and the CPU determines if any unsupported codecs can be software decoded for playback by ffmpeg. +The LibreELEC "Generic" image supports a (very) broad range of x86\_64 compatible hardware using AMD, Intel, and nVidia GPU hardware. The GPU in a device determines what media can be played using hardware decoding and modern features like HDR, and the CPU determines if any unsupported codecs can be software decoded for playback by ffmpeg. ## HDR -HDR support in the Linux kernel, in Kodi, and in LibreELEC is ongoing "work in progress" that continues to evolve. HDR depends on a combination of the media format and colourspace properties, GPU hardware, HDMI output, and TV panel capabilities. Most users wrongly view HDR support like codec support, but it is significantly more complicated. Few people outside the broadcast media industry truly understand how it works \(in theory and in practice\) but we are fortunate to have users with that professional background providing testing and insightful feedback to the team as progress is made. +HDR support in the Linux kernel, in Kodi, and in LibreELEC is ongoing "work in progress" that continues to evolve. HDR depends on a combination of the media format and colourspace properties, GPU hardware, HDMI output, and TV panel capabilities. Most users wrongly view HDR support like codec support, but it is significantly more complicated. Few people outside the broadcast media industry truly understand how it works (in theory and in practice) but we are fortunate to have users with that professional background providing testing and insightful feedback to the team as progress is made. As GPU hardware is one of the major variables, please read the AMD, Intel, and nVidia GPU sections below for further information relevant to HDR support on that GPU type: @@ -14,57 +14,56 @@ Intel NUC and similar-sized Intel GPU devices are popular for building an HTPC d Modern Intel GPUs have been shipping since "Nehalem" in 2010, and over time the number of different CPU and GPU generations and codenames have multiplied, making it confusing to figure out what media features a device can support. The following table is based on public sources like wikipedia, and it indicates hardware features, which do not always translate into what Linux and Kodi currently support in software: -| CPU | Codename | Driver | H264 | HEVC | AV1 | 4K | HDR | -| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | -| Gen1 | Nehalem | i965 | Yes | No | No | No | No | -| Gen2 | Sandy-bridge | i965 | Yes | No | No | No | No | -| Gen3 | Ivy-Bridge | i965 | Yes | No | No | No | No | -| Gen4 | Haswell | i965 | Yes | No | No | No | No | -| Gen5 | Broadwell, Braswell | i915 | Yes | No | No | No | No | -| Gen6 | Skylake | i915 | Yes | Yes | No | DP | No | -| Gen7 | Kaby-lake, Apollo-lake | i915 | Yes | Yes | No | Yes | HDMI | -| Gen8 | Coffee-lake, Kaby-lake refresh, Whiskey-lake | i915 | Yes | Yes | No | Yes | HDMI | -| Gen9 | Coffee-lake refresh | i915 | Yes | Yes | No | Yes | HDMI | -| Gen10 | Comet-lake, Ice-lake, Amber-lake | i915 | Yes | Yes | No | Yes | Yes | -| Gen11 | Rocket-lake, Tiger-lake | i915 | Yes | Yes | Yes | Yes | Yes | - -* Gen6 CPUs \(Skylake\) have HDMI 1.4b and DisplayPort 1.2 connectors. HDMI can run at max 1920x1200@60 resolution, while DP can run at max 3840x2160@60 resolution. +| CPU | Codename | Driver | H264 | HEVC | AV1 | 4K | HDR | +| ----- | -------------------------------------------- | ------ | ---- | ---- | --- | --- | ---- | +| Gen1 | Nehalem | i965 | Yes | No | No | No | No | +| Gen2 | Sandy-bridge | i965 | Yes | No | No | No | No | +| Gen3 | Ivy-Bridge | i965 | Yes | No | No | No | No | +| Gen4 | Haswell | i965 | Yes | No | No | No | No | +| Gen5 | Broadwell, Braswell | i915 | Yes | No | No | No | No | +| Gen6 | Skylake | i915 | Yes | Yes | No | DP | No | +| Gen7 | Kaby-lake, Apollo-lake | i915 | Yes | Yes | No | Yes | HDMI | +| Gen8 | Coffee-lake, Kaby-lake refresh, Whiskey-lake | i915 | Yes | Yes | No | Yes | HDMI | +| Gen9 | Coffee-lake refresh | i915 | Yes | Yes | No | Yes | HDMI | +| Gen10 | Comet-lake, Ice-lake, Amber-lake | i915 | Yes | Yes | No | Yes | Yes | +| Gen11 | Rocket-lake, Tiger-lake | i915 | Yes | Yes | Yes | Yes | Yes | + +* Gen6 CPUs (Skylake) have HDMI 1.4b and DisplayPort 1.2 connectors. HDMI can run at max 1920x1200@60 resolution, while DP can run at max 3840x2160@60 resolution. * Gen7 and Gen8 CPUs use an LSPCON chip for HDMI 2.0 output. HDR is supported only when the HDMI output is connected to an HDMI 2.0 port on the TV. Users with Intel NUC devices are recommended to run the latest Intel firmware for their device. Lots of bugs in original/factory LSPCON firmwares have been fixed. * Linux supports LSPCON chips for HDR from Linux 5.12 onwards * Linux has full support for Tiger-Lake CPUs from Linux 5.12 onwards -* Intel GPUs are known as _Integrated graphics processors \(IGPs\)_ and are embedded within the CPU core. Each CPU generation uses a single GPU generation but the generation ID's do not match, e.g. Gen10 CPUs have Gen11 GPUs. +* Intel GPUs are known as _Integrated graphics processors (IGPs)_ and are embedded within the CPU core. Each CPU generation uses a single GPU generation but the generation ID's do not match, e.g. Gen10 CPUs have Gen11 GPUs. -**LibreELEC 10.0 shipped with Linux 5.10 kernel support and Xorg graphics, so it does not have support for HDR or Gen11 hardware**. Community created LibreELEC 10.0 images with newer Linux kernels supporting Gen11 hardware and `GBM` graphics with experimental HDR patches can be downloaded from the LibreELEC forums. LibreELEC 11.0 nightly development images from 21/9/21 onwards also use GBM graphics, include early \(pre-Alpha\) Kodi 20.0 support for HDR, and an updated kernel supporting Gen11 hardware. +**LibreELEC 10.0 shipped with Linux 5.10 kernel support and Xorg graphics, so it does not have support for HDR or Gen11 hardware**. Community created LibreELEC 10.0 images with newer Linux kernels supporting Gen11 hardware and `GBM` graphics with experimental HDR patches can be downloaded from the LibreELEC forums. LibreELEC 11.0 nightly development images from 21/9/21 onwards also use GBM graphics, include early (pre-Alpha) Kodi 20.0 support for HDR, and an updated kernel supporting Gen11 hardware. ## AMD GPUs -AMD GPUs are a popular option for users building custom HTPCs from motherboards without onboard Intel graphics. LibreELEC embeds two AMD drivers: `radeon` is used with older cards, and `amdgpu` is used with newer cards \(starting from the 'Southern Islands' family\). +AMD GPUs are a popular option for users building custom HTPCs from motherboards without onboard Intel graphics. LibreELEC embeds two AMD drivers: `radeon` is used with older cards, and `amdgpu` is used with newer cards (starting from the 'Southern Islands' family). -Determining media features \(H264, HEVC, AV1, 4K, 4K60, HDR, etc.\) is complicated due to the sheer number of different AMD cards available. Each new GPU generation ships with low-end cards limited in capabilities, and high-end cards with multiple connectors. Media features like 4K and HDR also have a dependency on connectors \(HDMI or Displayport\) and the standards the connectors support. For example, some cards support HDMI 1.4b and a max resolution of up to 3840x2160@30 with 8-bit HDR output, while cards with DisplayPort 1.4 or HDMI 2.0 may support up to 3840x2160@60 with 10-bit output. +Determining media features (H264, HEVC, AV1, 4K, 4K60, HDR, etc.) is complicated due to the sheer number of different AMD cards available. Each new GPU generation ships with low-end cards limited in capabilities, and high-end cards with multiple connectors. Media features like 4K and HDR also have a dependency on connectors (HDMI or Displayport) and the standards the connectors support. For example, some cards support HDMI 1.4b and a max resolution of up to 3840x2160@30 with 8-bit HDR output, while cards with DisplayPort 1.4 or HDMI 2.0 may support up to 3840x2160@60 with 10-bit output. The most accurate source of information is [https://www.x.org/wiki/RadeonFeature](https://www.x.org/wiki/RadeonFeature/) ## nVidia GPUs -LibreELEC v7.x - v10.x include two different nVidia GPU drivers; a "legacy" driver \(340.xx\) and the latest stable driver. The drivers provide `OpenGL` support via `Xorg` so Kodi can display a GUI on-screen, and Kodi supports`VDPAU` hardware decoding of H264 and some older SD era media codecs for efficient playback. Newer nVidia cards support 4K resolutions and `NVDEC` hardware decoding, but Kodi does not support `NVDEC`, and while Kodi can output 4K, nVidia drivers have no support for HEVC or VP9 \(the formats used with most 4K media\) and there is no support for HDR. It is no surprise that project active-install stats show most nVidia installs are using the legacy nVidia driver, and the number of installs continues to decline over time: meaning LibreELEC users are replacing older nVidia devices with something that does not use an nVidia GPU. This trend is not new and influences our technical decisions: +LibreELEC v7.x - v10.x include two different nVidia GPU drivers; a "legacy" driver (340.xx) and the latest stable driver. The drivers provide `OpenGL` support via `Xorg` so Kodi can display a GUI on-screen, and Kodi supports`VDPAU` hardware decoding of H264 and some older SD era media codecs for efficient playback. Newer nVidia cards support 4K resolutions and `NVDEC` hardware decoding, but Kodi does not support `NVDEC`, and while Kodi can output 4K, nVidia VDPAU drivers have no support for HEVC or VP9 (the formats used with most 4K media) and there is no support for HDR. It is no surprise that project active-install stats show most nVidia installs are using the legacy nVidia driver, and the number of installs continues to decline over time: which means LibreELEC users are replacing older nVidia devices with something that does not use an nVidia GPU. This trend is not new and influences our technical decisions: -LibreELEC v11.x will switch "Generic" from Xorg OpenGL graphics to the Mesa OpenGL and the same DRM PRIME video stack used with ARM SoC devices. It is currently still possible to build a "Generic\_Legacy" image using Xorg, but if "GBM" image development continues to progress well our intention is to drop the legacy image \(and with it, nVidia support\). In lieu of this: +LibreELEC v11.x will switch "Generic" from Xorg OpenGL graphics to the Mesa OpenGL and the same DRM PRIME video stack used with ARM SoC devices. It is currently still possible to build a "Generic_Legacy" image using Xorg, but if "GBM" image development continues to progress well our intention is to drop the legacy image (and with it, nVidia support). In lieu of this: _**The team does not recommend users purchase nVidia hardware for use with Kodi**_ -LibreELEC v11.x "GBM" images are built with Mesa `nouveau` OpenGL support so nVidia users who upgrade will see Kodi on-screen. However `nouveau` has no ability to "reclock" modern nVidia GPUs so the card runs at its lowest clock frequency and performance is bad \(too bad to be useful\). This issue is caused by nVidia requiring the use of signed \(closed-source\) firmware to interact with newer card generations, and it is a problem with all modern nVidia cards and all Linux distributions. It means the `nouveau` driver only works with very old nVidia cards, and is not a long-term solution for nVidia support in LibreELEC. +LibreELEC v11.x "GBM" images are built with Mesa `nouveau` OpenGL support so nVidia users who upgrade will see Kodi on-screen. However `nouveau` has no ability to "reclock" modern nVidia GPUs so the card runs at its lowest clock frequency and performance is bad (too bad to be useful). This issue is caused by nVidia requiring the use of signed (closed-source) firmware to interact with newer card generations, and it is a problem with all modern nVidia cards and all Linux distributions. It means the `nouveau` driver only works with very old nVidia cards, and is not a long-term solution for nVidia support in LibreELEC. -nVidia has been working to reduce the differences between their `EGL Streams` alternative to `GBM` which may lead to support in Mesa which provides the OpenGL/GLES interface to render Kodi. If this happens it removes one technical blocker to LibreELEC supporting newer nVidia devices in future releases. However, it is not the only thing required. Kodi would also need to add support for `NVDEC` hardware decoding. This would not be a big technical challenge to implemeent in Kodi. However, Team Kodi has an established policy of refusing to add more proprietary hardware-decoding APIs that complicate code maintenance. So far nobody has volunteered to write the `NVDEC` support code and run the gauntlet of getting it accepted and merged. Even if an attempt was successful \(which is unlikely\) it would not benefit the majority of LibreELEC users with older nVidia GPU cards. So `NVDEC` support is also not a long-term solution for nVidia support in LibreELEC either. +Update (Oct 2021): [nVidia has announced the latest drivers support GBM and mesa](https://www.phoronix.com/scan.php?page=news_item\&px=NVIDIA-495.29.05-Linux). This will allow Kodi to render the GUI via mesa OpenGL. It removes one technical blocker to LibreELEC supporting newer nVidia devices in future releases. However, it is not the only blocker. The latest driver uses `NVDEC` for hardware decoding so either Kodi would need to add support for `NVDEC` or nVidia would need to support `VAAPI` which is used by Intel and AMD. In theory `NVDEC` is not a big technical challenge to implement, but Team Kodi has an established policy of refusing to include more/new proprietary hardware-decoding APIs that complicate code maintenance. So far nobody on the current Kodi staff has volunteered to implement `NVDEC` support and run the gauntlet of getting it accepted and merged. Even if an attempt was successful (which is unlikely) it would not benefit the majority of LibreELEC users with older nVidia cards which still depend upon the legacy driver and `VDPAU` decoding. So the lastest drivers and `NVDEC` support are not the long-term solution for nVidia support in LibreELEC either. -NB: If \(when\) LibreELEC drops support for Xorg and nVidia users, it does not means Kodi has dropped support. nVidia users can continue to use their nVidia card with Xorg and any Desktop Linux distro that supports Kodi \(Arch, Debian, Ubuntu, etc.\) - although the long-term trend with Desktop distros is to move away from Xorg to Wayland \(which depends on Mesa\) so the trend there is against nVidia too. In lieu of this, we say again: +NB: If (when) LibreELEC drops support for Xorg and nVidia users, it does not means Kodi has dropped support. nVidia users can continue to use their nVidia card with Xorg and any Desktop Linux distro that supports Kodi (Arch, Debian, Ubuntu, etc.) - although the long-term trend with Desktop distros is to move away from Xorg to Wayland (which depends on Mesa) so the trend there is against nVidia too. In lieu of this, we say again: _**The team does not recommend users purchase nVidia hardware for use with Kodi**_ ## Legacy Hardware -Despite the range of devices that Generic x86\_64 images can run on, team development and testing has always been focussed on current and recent hardware packaged for use as HTPC devices. Users frequently mistake the minimalist nature of LibreELEC as perfect for recycling an older device \(laptops with a broken screen are a recurring theme\) into a medial player. You might be able to boot LibreELEC, but we are often missing hardware drivers for old hardware and the overall playback performance \(and power consumption\) of first generation Raspberry Pi boards is often way \(way\) better. As a general rule, project staff view any hardware over 7-8 years old as legacy hardware. If you do need to use legacy hardware; use an era-appropriate LibreELEC \(or OpenELEC\) image. +Despite the range of devices that Generic x86\_64 images can run on, team development and testing has always been focussed on current and recent hardware packaged for use as HTPC devices. Users frequently mistake the minimalist nature of LibreELEC as perfect for recycling an older device (laptops with a broken screen are a recurring theme) into a medial player. You might be able to boot LibreELEC, but we are often missing hardware drivers for old hardware and the overall playback performance (and power consumption) of first generation Raspberry Pi boards is often way (way) better. As a general rule, project staff view any hardware over 7-8 years old as legacy hardware. If you do need to use legacy hardware; use an era-appropriate LibreELEC (or OpenELEC) image. ## i386 Support Support for i386 hardware was dropped between OpenELEC v5.x and v6.x in 2015 due to low numbers of users, and LibreELEC has no interest in resurrecting support. It is still technically possible to hack/restore i386 support into our buildsystem and self-build an i386 image since we support 32-bit ARM SoC devices and use 32-bit userspace with 64-bit ARM SoCs so most packages in are still 32-bit compilable with little or no tweaking. However, there are still a few packages that do need tweaking to restore i386 support, and there is no HOWTO guide that you can follow. Some users enjoy the intellectual challenge of figuring out how to restore i386 support, but i386 hardware is super low-spec for modern Kodi use and our recommendation is to invest in a Raspberry Pi board instead of spending tens or hundreds of hours on codebase archeology. An inexpensive Pi board will give a better overall result, costs less to run, and be zero hassle to maintain over time. - From 31173b9f6ad062402271914bf331605932ad64c9 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sat, 6 Nov 2021 09:11:43 +0000 Subject: [PATCH 34/63] GitBook: [#61] add LaFrite instructions to the Amlogic section --- SUMMARY.md | 22 +++++------ hardware/{amlogic.md => amlogic/README.md} | 44 +++++++++++----------- hardware/amlogic/lafrite.md | 39 +++++++++++++++++++ hardware/nxp-imx6-im8.md | 4 +- how-to/mount_network_share.md | 25 ++++++------ 5 files changed, 85 insertions(+), 49 deletions(-) rename hardware/{amlogic.md => amlogic/README.md} (74%) create mode 100644 hardware/amlogic/lafrite.md diff --git a/SUMMARY.md b/SUMMARY.md index e0e6428..f799ad0 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -16,19 +16,20 @@ ## Hardware * [Allwinner](hardware/allwinner.md) -* [Amlogic](hardware/amlogic.md) +* [Amlogic](hardware/amlogic/README.md) + * [LaFrite](hardware/amlogic/lafrite.md) * [NXP - iMX6/iMX8](hardware/nxp-imx6-im8.md) -* [Intel x86-64 \(Generic\)](hardware/intel-x86-64-generic.md) +* [Intel x86-64 (Generic)](hardware/intel-x86-64-generic.md) * [Qualcomm](hardware/qualcomm.md) * [Raspberry Pi](hardware/raspberry-pi.md) * [Rockchip](hardware/rockchip.md) -* [Samsung \(Exynos\)](hardware/samsung-exynos.md) +* [Samsung (Exynos)](hardware/samsung-exynos.md) * [Virtual Image](hardware/virtual.md) ## Configuration * [Blu-Ray Playback](configuration/blu-ray.md) -* [Config.txt](configuration/config_txt.md) +* [Config.txt](configuration/config\_txt.md) * [Dual Boot](configuration/dual-boot.md) * [EDID](configuration/edid.md) * [Hypercon](configuration/hypercon.md) @@ -38,7 +39,7 @@ * [Network Boot](configuration/network-boot.md) * [Pulseaudio](configuration/pulseaudio.md) * [Startup & Shutdown](configuration/startup-shutdown.md) -* [Useful Scripts](configuration/useful_scripts.md) +* [Useful Scripts](configuration/useful\_scripts.md) * [WireGuard](configuration/wireguard.md) ## How To @@ -47,16 +48,16 @@ * [Blacklist Kernel Module](how-to/blacklist-kernel-module.md) * [Change Bootsplash](how-to/change-bootscreen.md) * [Force Add-on Update](how-to/force-add-on-update.md) -* [Mount Network Share](how-to/mount_network_share.md) +* [Mount Network Share](how-to/mount\_network\_share.md) -## Development +## Development -* [Building \(Basics\)](development-1/build-basics.md) -* [Building \(Advanced\)](development-1/build-advanced.md) +* [Building (Basics)](development-1/build-basics.md) +* [Building (Advanced)](development-1/build-advanced.md) * [Beginners Guide to Git](development-1/git-tutorial.md) * [Build Commands](development-1/build-commands/README.md) * [Build Commands LE 11.0.x](development-1/build-commands/build-commands-le-11.0.x.md) - * [Build Commands \(Add-ons\)](development-1/build-commands/build-addons.md) + * [Build Commands (Add-ons)](development-1/build-commands/build-addons.md) * [Build Commands LE 10.0.x](development-1/build-commands/build-commands-le10.md) * [Build Commands LE 9.2.x](development-1/build-commands/build-commands-le92.md) * [Build Commands LE 9.0.x](development-1/build-commands/build-commands-le90.md) @@ -73,4 +74,3 @@ * [Source Code](project/license/source-code.md) * [Documentation](project/license/documentation.md) * [Mirrors](project/mirrors.md) - diff --git a/hardware/amlogic.md b/hardware/amlogic/README.md similarity index 74% rename from hardware/amlogic.md rename to hardware/amlogic/README.md index a716164..6daaf0d 100644 --- a/hardware/amlogic.md +++ b/hardware/amlogic/README.md @@ -1,47 +1,48 @@ # Amlogic -Current LibreELEC 10.0+ images for Amlogic using modern Linux kernels use different boot processes and device-tree files that are not compatible with older LibreELEC images that use Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases and must make a new/clean installation. +Current LibreELEC 10.0+ images for Amlogic using modern Linux kernels use boot processes and device-tree files that are not compatible with older LibreELEC images that use Amlogic Linux 3.14 or 4.9 kernels. The change to boot processes means you cannot update from older releases and must make a new/clean installation. -There are two images supporting Amlogic Gen10+ \(64-bit\) SoCs and older Gen8 \(32-bit\) SoCs used in a range of Linux SBC and Android STB devices: +There are two images supporting Amlogic Gen10+ (64-bit) SoCs and older Gen8 (32-bit) SoCs used in a range of Linux SBC and Android STB devices: `AMLGX` supports the following 64-bit SoCs: -* GXBB \(S905\) -* GXL \(S805X/S905X/D/W/L\) -* GXM \(S912\) -* G12A \(S905X2/D2/Y2\) -* G12B \(S922X/A311D\) -* SM1 \(S905X3/D3\) +* GXBB (S905) +* GXL (S805X/S905X/D/W/L) +* GXM (S912) +* G12A (S905X2/D2/Y2) +* G12B (S922X/A311D) +* SM1 (S905X3/D3) `AMLMX` supports the following 32-bit SoCs: -* Meson 8 \(S805\) -* Meson 8b \(S802\) -* Meson 8m2 \(S812\) +* Meson 8 (S805) +* Meson 8b (S802) +* Meson 8m2 (S812) -There is low support for Meson 6 \(8726MX\) hardware in the upstream kernel and not much chance of support evolving to a point where modern-kernel LibreELEC images are viable. +NB: The WeTek Play(1)/OpenELEC box uses Meson 6 (8726MX) hardware. There is little support for Meson 6 hardware in the upstream kernel and low probability of support evolving to the point where modern-kernel LibreELEC images are viable. -`AMLGX` and `AMLMX` provide a "box" image for use with devices that run Amlogic \(aka Vendor or Legacy\) boot firmware \(U-Boot 2015.01 with Amlogic and manufacturer customisations\) and "board" images using modern boot firmware \(mainline U-Boot\) specific to a single SBC board or STB device. The image type can be identified by the filename `-suffix`: +`AMLGX` and `AMLMX` provide a "box" image for use with devices that run Amlogic (aka Vendor or Legacy) boot firmware (U-Boot 2015.01 with Amlogic and manufacturer customisations) and "board" images using modern boot firmware (mainline U-Boot) specific to a single SBC board or STB device. The image type can be identified by the filename `-suffix`: * `LibreELEC-AMLGX.arm-10.0.0-box.img.gz` is the `AMLGX` "box" image -* `LibreELEC-AMLGX-arm-10.0.0-khadas-vim3.img.gz` is a "board" image for Khadas VIM3 +* `LibreELEC-AMLGX-arm-10.0.0-khadas-vim3.img.gz` is a "board" image for VIM3 +* `LibreELEC-AMLMX-arm-10.0.0-box.img.gz` is a "box" image for Meson 8 devices ## Box Images -Box images support SBC and STB devices with Android or "vendor" boot firmware running on the internal eMMC storage. LibreELEC is installed by triggering "recovery" mode boot in the Amlogic U-Boot firmware. Recovery mode searches for some standard files on SD and USB media. LibreELEC provides files tweaked to boot and run LibreELEC instead of recovering the device. Once recovery mode is activated the device will seach \(and find LibreELEC\) on each boot; until Android recovery completes \(it never does\). +Box images support SBC and STB devices with Android or "vendor" boot firmware running on the internal eMMC storage. LibreELEC is installed by triggering "recovery" mode boot in the Amlogic U-Boot firmware. Recovery mode searches for some standard files on SD and USB media. LibreELEC provides files tweaked to boot and run LibreELEC instead of recovering the device. Once recovery mode is activated the device will seach (and find LibreELEC) on each boot; until Android recovery completes (it never does). As `box` images can be used on many devices you must configure the device-tree file to use first. This is done by editing `uEnv.ini` in the root folder of the SD card. Change `@@DTB_NAME@@` to the name of the .dtb file to use. Current supported device-tree files are in the `dtb` folder. For example, here is the default `uEnv.ini` file: -```text +``` dtb_name=/dtb/@@DTB_NAME@@ bootargs=boot=UUID=2306-0801 disk=UUID=8268da37-3a8d-4f6d-aba0-08918faded56 quiet systemd.debug_shell=ttyAML0 console=ttyAML0,115200n8 console=tty0 ``` To boot a Beelink GT-King box change `@@DTB_NAME` to `meson-g12b-gtking.dtb` -```text +``` dtb_name=/dtb/meson-g12b-gtking.dtb bootargs=boot=UUID=2306-0801 disk=UUID=8268da37-3a8d-4f6d-aba0-08918faded56 quiet systemd.debug_shell=ttyAML0 console=ttyAML0,115200n8 console=tty0 ``` @@ -57,7 +58,7 @@ In most cases you will need a small pin, unfolded paper-clip, or wooden toothpic ## Board Images -These images are built for Single Board Computer \(SBC\) devices which boot modern u-boot via an SD card or removable eMMC module. Installation is normally simple requiring you to write the image to the SD card or eMMC module then boot the device. If the board has eMMC storage soldered \(not on a removable module\) it may be necessary to boot from the "box" image first. Once booted to a box image on SD card \(so eMMC is not in use\) you can write the correct `board` image to eMMC \(overwriting Android or other factory-installed images\). +These images are built for Single Board Computer (SBC) devices which boot modern u-boot via an SD card or removable eMMC module. Installation is normally simple requiring you to write the image to the SD card or eMMC module then boot the device. If the board has eMMC storage soldered (not on a removable module) it may be necessary to boot from the "box" image first. Once booted to a box image on SD card (so eMMC is not in use) you can write the correct `board` image to eMMC (overwriting Android or other factory-installed images). ## install2internal @@ -69,9 +70,9 @@ If you want to run LibreELEC from eMMC storage please purchase a "board" device ## emmctool -In the `AMLGX` image there is an eMMC helper script called `emmctool` that supports a range of useful functions for backup/write/erase \(and more\) for eMMC storage. See: +In the `AMLGX` image there is an eMMC helper script called `emmctool` that supports a range of useful functions for backup/write/erase (and more) for eMMC storage. See: -```text +``` LibreELEC:~ # emmctool info: boot device is /dev/mmcblk0, U-boot version is 2021.04 @@ -98,5 +99,4 @@ usage: emmctool (w)rite : write .img/.img.gz to the eMMC (h)elp : displays this help message ``` -The `emmctool` helper supports a limited range of SBC boards with eMMC modules. On a generic Android device it will output the \(i\) info only. - +The `emmctool` helper supports a limited range of SBC boards with eMMC modules. On a generic Android device it will output the (i) info only. diff --git a/hardware/amlogic/lafrite.md b/hardware/amlogic/lafrite.md new file mode 100644 index 0000000..17e9a8d --- /dev/null +++ b/hardware/amlogic/lafrite.md @@ -0,0 +1,39 @@ +# LaFrite + +LibreComputer LaFrite (AML-S805X-AC) is an S805X (GXL) board with 512MB or 1GB of RAM and 16MB SPI boot flash. The board runs upstream u-boot from SPI, and has no SD card slot, so you can boot the AMLGX `box` or `lafrite` images written to a USB stick or eMMC module. Default boot order is: + +* SPI (built-in) +* EMMC (optional module) +* USB (socket furthest from the GPIO header) + +### Run LibreELEC from eMMC + +LibreComputer preinstalls their eMMC modules with Android, so if you power on the board with the module attached it will always boot into Android. To (over)write Android with LibreELEC the board must boot from USB without the module attached. Once in LibreELEC booted from USB, the module can be attached, detected, and erased or imaged with the `lafrite` image: + +1. Power on the Board, and boot the AMLGX `box` image from USB +2. Attach the eMMC module, and from the SSH console: +3. Run `emmctool d` to detect the module +4. Run `emmctool z` to erase (zero) the module +5. Copy the `lafrite` image to `/storage/` on the USB stick +6. Run `emmctool w /storage/LibreELEC-AMLGX.arm-10.0.0-lafrite.img.gz` to write the `lafrite` image to the eMMC module. +7. Power off the board, remove the USB stick +8. Power on the board, and LibreELEC will boot to eMMC and resize /storage + +### Updating U-Boot in SPI + +LibreComputer provides [u-boot firmware](http://share.loverpi.com/board/libre-computer-project/libre-computer-board/aml-s805x-ac/firmware/) files for updating the SPI flash. LibreELEC does not need a minimum version to boot, but newer u-boot firmware fixes some graphical on-screen glitches seen in the early boot stages. To update: + +1. Download the latest u-boot `.bin` and `.scr` files to a FAT formatted USB stick +2. Rename the `.scr` file to `boot.scr` +3. Connect the USB drive to the socket furthest from the GPIO header +4. Power on the board +5. Current u-boot checks if the new image matches existing firmware, and when it does not (as it is newer) the firmware will be updated. When complete: +6. Power off the board and remove the USB stick + +### UART + +The debugging UART is accessible on the 40pin GPIO header: + +* TX (Green) on Pin 3 +* RX (Grey) on Pin 5 +* GND (Black) on Pin 6 diff --git a/hardware/nxp-imx6-im8.md b/hardware/nxp-imx6-im8.md index 63d0ed2..1f9cb48 100644 --- a/hardware/nxp-imx6-im8.md +++ b/hardware/nxp-imx6-im8.md @@ -10,7 +10,5 @@ Current iMX8 images are experimental and do not support a specific board. Installation is done by writing the LibreELEC \*.img file to an SD card. The boards have internal hardware identifiers so there is no need to edit `extlinux.conf` on the card. Selection of the correct device dtb is handled internally within u-boot. -**NOTE** - ****It is not possible to update from older LibreELEC or OpenELEC imx6.arm images to LE 10.0 as the boot configuration for LE 10.0 is different and older kernels do not support zstd compression. If you attempt an upgrade the boot configuration of the old installation will be broken. You are advised to clean install LE 10.0 and manually restore sources and library DB files. Backups can be taken and restored, but as there is now a long time gap since LE 8.2.5 \(and OE 8.0.x\) it is best to start over with a clean system. - - +**NOTE **-** **It is not possible to update from older LibreELEC or OpenELEC imx6.arm images to LE 10.0 as the boot configuration for LE 10.0 is different and older kernels do not support zstd compression. If you attempt an upgrade the boot configuration of the old installation will be broken. You are advised to clean install LE 10.0 and manually restore sources and library DB files. Backups can be taken and restored, but as there is now a long time gap since LE 8.2.5 (and OE 8.0.x) it is best to start over with a clean system. diff --git a/how-to/mount_network_share.md b/how-to/mount_network_share.md index cea73ef..3d35db8 100644 --- a/how-to/mount_network_share.md +++ b/how-to/mount_network_share.md @@ -1,11 +1,11 @@ # Mount Network Share -Kodi can natively mount SMB, NFS, SFTP, WebDAV \(and more\) remote filesystems \(shares\) to read media for playback, but many applications that write content, e.g. TVHeadend storing TV recordings, must write to "local" storage. Remote SMB and NFS shares can be "mounted" to the local filesystem using kernel mounts configured through systemd .mount files. +Kodi can natively mount SMB, NFS, SFTP, WebDAV (and more) remote filesystems (shares) to read media for playback, but many applications that write content, e.g. TVHeadend storing TV recordings, must write to "local" storage. Remote SMB and NFS shares can be "mounted" to the local filesystem using kernel mounts configured through systemd .mount files. The following NAS configuration is used in the examples below: * NAS IP: `192.168.1.222` -* Username: `nasuser1` +* Username: `nasuser1` * Password: `123nas` * Share name: `recordings` * Full address to share: `\\192.168.1.222\recordings` @@ -28,7 +28,7 @@ Create the .mount file: Below is an example of the mount definition file for a Samba share: -```text +``` [Unit] Description=cifs mount script Requires=network-online.service @@ -59,9 +59,9 @@ Options: `Options=username=nasuser1,password=123nas,rw,vers=2.1` -`username=` Username of your network share -`password` Password of your network share -`rw` Read/write access +`username=` Username of your network share\ +`password` Password of your network share\ +`rw` Read/write access\ `vers=2.1` Version of the Samba protocol, `2.1` is supported since Windows 7 several [other versions](https://wiki.samba.org/index.php/Samba3/SMB2#Introduction) are supported too #### 4. Enable the mount @@ -88,21 +88,21 @@ Remove mount point and disabling it. #### 1. Create the folder where the share should be mounted -Connect to your LibreELEC HTPC [with SSH](/accessing_libreelec). +Connect to your LibreELEC HTPC [with SSH](https://app.gitbook.com/accessing\_libreelec). `mkdir /storage/recordings` #### 2. Create the systemd definition file -**Important:** you need to use the filename for the definition file according to the folder where you want to mount your share . -In our case `storage-recordings.mount` represent path -> `/storage/recordings`. -If you like an subfolder `storage-recordings-tv.mount` represent path -> `/storage/recordings/tv`. +**Important:** you need to use the filename for the definition file according to the folder where you want to mount your share .\ +In our case `storage-recordings.mount` represent path -> `/storage/recordings`.\ +If you like an subfolder `storage-recordings-tv.mount` represent path -> `/storage/recordings/tv`. `nano /storage/.config/system.d/storage-recordings.mount` Content of the definition file for a NFS share. -```text +``` [Unit] Description=test nfs mount script Requires=network-online.service @@ -163,9 +163,8 @@ Remove mount point and disabling it. TimeCapsule devices share files using an Apple dialect of SMB that is not compatible with the Samba `smbclient` Kodi uses to connect to SMB shares. To access media on a TimeCapsule you can follow the steps described above for connecting to Samba shares with a systemd storage mount, but with one difference: the `Options` configuration must force SMB v1.0 and legacy NTLM authentication or the mount will fail. See below: -```text +``` Options=username=MyUser,password=MyPass,sec=ntlm,vers=1.0 ``` SMB v1.0 is widely considered to be insecure, but TimeCapsules no longer receive software updates and there is no alternative; SMB v2/v3 are not supported. - From 662a1587eee454b7002bb859b4c4400e7dc556c4 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sat, 6 Nov 2021 09:27:05 +0000 Subject: [PATCH 35/63] GitBook: [#62] small edits in LaFrite text --- hardware/amlogic/lafrite.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/amlogic/lafrite.md b/hardware/amlogic/lafrite.md index 17e9a8d..70ac3b8 100644 --- a/hardware/amlogic/lafrite.md +++ b/hardware/amlogic/lafrite.md @@ -8,7 +8,7 @@ LibreComputer LaFrite (AML-S805X-AC) is an S805X (GXL) board with 512MB or 1GB o ### Run LibreELEC from eMMC -LibreComputer preinstalls their eMMC modules with Android, so if you power on the board with the module attached it will always boot into Android. To (over)write Android with LibreELEC the board must boot from USB without the module attached. Once in LibreELEC booted from USB, the module can be attached, detected, and erased or imaged with the `lafrite` image: +LibreComputer preinstalls their eMMC modules with Android, so if you power on the board with the module attached it will always boot into Android. To erase Android or overwrite with LibreELEC the board must first boot from USB without the module attached. Once in LibreELEC booted from USB, the module can be attached, detected, and erased or imaged with the `lafrite` image: 1. Power on the Board, and boot the AMLGX `box` image from USB 2. Attach the eMMC module, and from the SSH console: From 7d4afa192ebd0f26833639415d4e8825ca3e7b2d Mon Sep 17 00:00:00 2001 From: chewitt Date: Sat, 18 Dec 2021 17:13:49 +0000 Subject: [PATCH 36/63] GitBook: [#63] No subject --- SUMMARY.md | 3 +- configuration/4k-hdr.md | 68 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 configuration/4k-hdr.md diff --git a/SUMMARY.md b/SUMMARY.md index f799ad0..0058842 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -28,6 +28,7 @@ ## Configuration +* [4K / HDR](configuration/4k-hdr.md) * [Blu-Ray Playback](configuration/blu-ray.md) * [Config.txt](configuration/config\_txt.md) * [Dual Boot](configuration/dual-boot.md) @@ -50,7 +51,7 @@ * [Force Add-on Update](how-to/force-add-on-update.md) * [Mount Network Share](how-to/mount\_network\_share.md) -## Development +## Development * [Building (Basics)](development-1/build-basics.md) * [Building (Advanced)](development-1/build-advanced.md) diff --git a/configuration/4k-hdr.md b/configuration/4k-hdr.md new file mode 100644 index 0000000..303c844 --- /dev/null +++ b/configuration/4k-hdr.md @@ -0,0 +1,68 @@ +# 4K / HDR + +This page explains the configuration points: + +* Desktop Resolution +* Modeline Whitelist +* Adjust Refresh +* Deinterlacing +* HDR Questions + +### Desktop Resolution + +The primary impact of the Kodi desktop resolution is GUI performance, or how Kodi feels when you navigate around menus and libraries. Kodi leverages GPU hardware to accelerate rendering of GUI elements, but artwork and thumbnails (visible in most GUI views) are frequently adapted from original artwork on-the-fly, and already processed art must still be read from disk caches before being displayed. + +Higher-spec Intel CPU devices with Core i7 chips and SSD storage can normally run the Kodi GUI at 4K with 60fps refresh rates, but older and lower-spec Intel CPU devices, anything with a HDD (not SSD) and almost all ARM SoC devices struggle with a 4K desktop. Higher CPU activity from larger art and media also means higher power consumption from the HTPC device. + +The second impact of the Kodi desktop resolution is how media is scaled. If "Adjust Refresh" is not enabled, scaling SD and 720p media to 1080p while adding extra frames to match 60fps is handled well, as Kodi simply needs to duplicate frames, and the frames being duplicated and scaled are small in size so the amount of data being processed remains low. Hardware as low-spec as the first generation Raspberry Pi can manage this. Scaling 1080p media to 4K is a much bigger challenge. 4K is 4x the resolution of 1080p, so devices must process 4x the amount of source data. The scaling algorithms Kodi uses to create a higher resolution image from lower resolution source media also need a lot of CPU. Most devices struggle to use the best methods, e.g. Yadif, with 1080p media, let alone 4K content. Practically all hardware is insufficient for CPU upscaling to 4K resolutions. However, 4K resolution TV's have dedicated scaling hardware and handle the upscaling of a 1080p image from Kodi to the native 4K resolution of the screen much better than Kodi can scale the image itself. + +**Recommendation: Keep the Desktop resolution at 1080p, with 60fps refresh rate. Let TVs handle upscaling of SD and HD media to 4K without loading the HTPC.** + +### Whitelist + +Most 4K televisions support a broad range of resolutions and refresh rates to support different media standards. In Linux each output format is known as a "modeline" and Kodi allows you to configure a list of modes to use in combination with the "Adjust Refresh" option. + +**Recommendation: Configure Kodi for the following modes, if available:** + +* **3840x2160 @ 60/59.94/50/30/29.97/25/24/23.976** +* **1920x1080 @ 60/59.94/50/24/23.976** + +NB: You may not see 4K @ 60/59.94/50 if the hardware does not support HDMI 2.0 modes or the HDMI cable being used does not have adequate bandwidth. + +### Adjust Refresh + +Kodi can either upscale media to match the desktop resolution and refresh rate, or automatically switch to a resolution and rate that exactly or better matches the media. Switching to match the rate can eliminate or minimse the need for Kodi to make corrections (to keep things in-sync) by adding or dropping frames. Adding frames to the stream is generally harmless and rarely causes noticable artefacts, but dropping frames causes skips, glitches and audio pops. + +Kodi has three "Adjust Refresh" settings: + +* Off (scale media to the dekstop resolution/rate) +* On start/stop (change resolution/rate when playback starts and stops) +* Allways (change on start/stop and during playback if the media changes resolution/rate) + +**Recommendation: Set the Adjust Refresh setting to "On Start/Stop"** + +### Deinterlacing + +The challenge with interlaced media is: + +* Kodi cannot output interlaced frames, it always outputs progressive frames +* Kodi cannot detect media is interlaced until you start playing it + +Kodi converts interlaced media to progressive by doubling the original refresh rate and rendering each half-frame in its own full frame, e.g. PAL 1080i @ 25fps media becomes 1080p @ 50fps, and NTSC 1080i @ 29.97 becomes 1080p @ 59.94fps. For this rate doubling to work, we need to ensure the whitelisted 1080p modes do not contain 1080p @ 25/29.97/30Hz rates, else Kodi will see an exact match against resolution and refresh rate and you will see high CPU loads and 50% of frames being dropped. If the modes are removed, Kodi will use 50Hz/59.94Hz rates, and if the media is interlaced, Kodi can still render 100% of the frames. + +**Recommendation: Remove 1080 @ 30, 29.97 and 25 fps rates from the Modelist** + +NB: All 4K media is progressive, so there is no need to do the same with 4K modes. + +### HDR + +Broadcast and Internet media follow a multitude of formal standards for resolution, refresh-rate, bit-depth, and video format. HDR adds the further complication of colour-space, using static or dynamic metadata that accompanies either the stream or individual video frames. Kodi supports static metadata UHD formats like HDR, HDR10, HDR10+ but not proprietary dynamic metadata standards like Dolby Vision which do not have open-source implementations. + +Kodi aims to hide the mind-bending complexity of choosing how HDR media will be displayed on screen by detecting what your HTPC device and TV support and what the media to be played requires, allowing the display pipeline to automatically configure itself for the best result; whether that is an exact match or the best compromise. + +Here are some answers to common HDR questions: + +* Kodi does not (yet) support HDR to SDR conversion, known as tonemapping. If you play HDR media on a TV that does not support HDR, it will play but colours will be muted and washed out. In the future Kodi may support conversion, but it is not currently implemented. +* Kodi has no way to present OSD menus in SDR when playing HDR media, so menus will have bright saturated colours. In the future, plane based tonemapping may be able to correct this, but it is not currently implemented and not all hardware supports multiple planes. +* Kodi will attempt to output in the highest bit-depth supported by the display pipeline, e.g. on a Raspberry Pi 4 it will attempt 12-bit before falling back to 10-bit, then 8-bit. Not all 4K HDR capable hardware supports higher 12-bit and 10-bit depths. +* Kodi supports Dolby Vision under Android (if the device is licensed for it) but not Linux. Dolby requires implementations to license their Intellectual Property and use integration libraries to decode the HDR metadata. Unless FFMpeg comes up with a "clean room" reverse engineered open-source implementation, it is unlikely that Kodi will ever support it. From 967881e44830190a96afa2d2a0ef607f53151858 Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 19 Dec 2021 06:56:03 +0000 Subject: [PATCH 37/63] GitBook: [#64] 4K/HDR text changes --- configuration/4k-hdr.md | 44 +++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/configuration/4k-hdr.md b/configuration/4k-hdr.md index 303c844..4fb1b5b 100644 --- a/configuration/4k-hdr.md +++ b/configuration/4k-hdr.md @@ -10,25 +10,35 @@ This page explains the configuration points: ### Desktop Resolution -The primary impact of the Kodi desktop resolution is GUI performance, or how Kodi feels when you navigate around menus and libraries. Kodi leverages GPU hardware to accelerate rendering of GUI elements, but artwork and thumbnails (visible in most GUI views) are frequently adapted from original artwork on-the-fly, and already processed art must still be read from disk caches before being displayed. +The primary impact of the Kodi desktop resolution is GUI performance, or how Kodi feels when you navigate around menus and libraries. Kodi leverages GPU hardware to accelerate rendering of GUI elements, but fanart and thumbnails are frequently adapted from original artwork on-the-fly as you scroll around, and even when all images have been pre-processed, they must still be read from disk caches before being displayed. Higher levels of CPU activity from larger artwork and media also mean higher power consumption from the HTPC device. -Higher-spec Intel CPU devices with Core i7 chips and SSD storage can normally run the Kodi GUI at 4K with 60fps refresh rates, but older and lower-spec Intel CPU devices, anything with a HDD (not SSD) and almost all ARM SoC devices struggle with a 4K desktop. Higher CPU activity from larger art and media also means higher power consumption from the HTPC device. +The second impact of the Kodi desktop resolution is how media is scaled. If "Adjust Refresh" is not enabled, Kodi will scale all media played up or down to the desktop resolution and refresh rate, which by default is 1080p @ 60 fps. -The second impact of the Kodi desktop resolution is how media is scaled. If "Adjust Refresh" is not enabled, scaling SD and 720p media to 1080p while adding extra frames to match 60fps is handled well, as Kodi simply needs to duplicate frames, and the frames being duplicated and scaled are small in size so the amount of data being processed remains low. Hardware as low-spec as the first generation Raspberry Pi can manage this. Scaling 1080p media to 4K is a much bigger challenge. 4K is 4x the resolution of 1080p, so devices must process 4x the amount of source data. The scaling algorithms Kodi uses to create a higher resolution image from lower resolution source media also need a lot of CPU. Most devices struggle to use the best methods, e.g. Yadif, with 1080p media, let alone 4K content. Practically all hardware is insufficient for CPU upscaling to 4K resolutions. However, 4K resolution TV's have dedicated scaling hardware and handle the upscaling of a 1080p image from Kodi to the native 4K resolution of the screen much better than Kodi can scale the image itself. +Scaling SD and 720p media to 1080p while adding extra frames to match 60fps is handled well, as Kodi simply needs to duplicate frames to reach the higher fps rate, and the scaling algorithms which Kodi uses to reduce artefacts in the upscaled image move smaller amounts of data in/out of memory. Hardware as low-spec as the first generation Raspberry Pi can manage this well. -**Recommendation: Keep the Desktop resolution at 1080p, with 60fps refresh rate. Let TVs handle upscaling of SD and HD media to 4K without loading the HTPC.** +Scaling SD and 1080p media to 4K is a literally bigger challenge. Frame sizes for 4K media are 4x the size of 1080p so the amount of data being processed in/out of memory increases and the CPU resources needed also increase. Scaling 4K to 1080p is a larger challenge again. Source 4K media has large frame sizes and sophisticated scaling algorithms are required to greate a lossy image without massive artefacts. -### Whitelist +Higher-spec Intel CPU devices with recent Core i7 chips and SSD storage can normally run the Kodi GUI at 4K with 60fps refresh rates and scale media with reasonable quality, but older and lower-spec Intel CPU devices and anything running from a spinning HDD or removable USB/SD media will struggle with a 4K desktop, and ARM SoC devices simply fail as they don't have the memory bandwidth or CPU speeds to process the data volumes needed. -Most 4K televisions support a broad range of resolutions and refresh rates to support different media standards. In Linux each output format is known as a "modeline" and Kodi allows you to configure a list of modes to use in combination with the "Adjust Refresh" option. +However, all 4K resolution TV's have dedicated scaling hardware using sophiesticated algorithms to upscale 1080p images to the native 4K resolution of the screen. TVs do this better and much more efficiently than Kodi can scale images itself. -**Recommendation: Configure Kodi for the following modes, if available:** +**Recommendation: Keep the Desktop resolution at 1080p, with 60fps refresh rate. Allow Kodi to upscale SD media to HD, and let the TV handle upscaling to 4K** + +### Mode Whitelist + +Most 4K televisions support a broad range of resolutions and refresh rates to support different media standards. In Linux each output format is known as a "modeline" and Kodi allows you to configure a list of allowed modes to use in combination with the "Adjust Refresh" option. + +Raspberry Pi 4 devices require specific configuration in config.txt to enable 4K @ 60/59.94/50 mode output, but nearly all streaming media uses 4K@30/23.976 modes so most users do not need to enable these modes. Enabling 4K60 output also increases power consumption. + +4K @ 60/59.94/50 modes require hardware that supports HDMI 2.0 or higher, and an HDMI cable that supports the higher bandwidth needed. Suitable cables are normally sold as 4K@60 "certified" cables. Cheaper and lower-spec cables that support HDMI 1.4 modes (up to 4K@30) are a frequent cause of "I enabled 4K@60 but have a blank screen" issue reports in the forums. + +Some hardware supports 4096x2160 modes. Kodi evaulates the whitelist using the height (2160) and refresh rate, so if you include these in your whitelist selection Kodi will switch to them instead of 3840x2160 modes which are an exact or more accurate match with 4K streaming media. If you see black bars on the sides of 4K media while playing, remove 4096 modes from the whitelist. + +**Recommendation: Configure Kodi to allow the following modes, if available:** * **3840x2160 @ 60/59.94/50/30/29.97/25/24/23.976** * **1920x1080 @ 60/59.94/50/24/23.976** -NB: You may not see 4K @ 60/59.94/50 if the hardware does not support HDMI 2.0 modes or the HDMI cable being used does not have adequate bandwidth. - ### Adjust Refresh Kodi can either upscale media to match the desktop resolution and refresh rate, or automatically switch to a resolution and rate that exactly or better matches the media. Switching to match the rate can eliminate or minimse the need for Kodi to make corrections (to keep things in-sync) by adding or dropping frames. Adding frames to the stream is generally harmless and rarely causes noticable artefacts, but dropping frames causes skips, glitches and audio pops. @@ -43,26 +53,26 @@ Kodi has three "Adjust Refresh" settings: ### Deinterlacing -The challenge with interlaced media is: +4K media is progressive, so this is not a requirement for 4K or HDR playback, but many Kodi users have DVB setups where interlaced streams are common, so we need to set the mode whitelist to support them. The challenge with interlaced media is: * Kodi cannot output interlaced frames, it always outputs progressive frames * Kodi cannot detect media is interlaced until you start playing it -Kodi converts interlaced media to progressive by doubling the original refresh rate and rendering each half-frame in its own full frame, e.g. PAL 1080i @ 25fps media becomes 1080p @ 50fps, and NTSC 1080i @ 29.97 becomes 1080p @ 59.94fps. For this rate doubling to work, we need to ensure the whitelisted 1080p modes do not contain 1080p @ 25/29.97/30Hz rates, else Kodi will see an exact match against resolution and refresh rate and you will see high CPU loads and 50% of frames being dropped. If the modes are removed, Kodi will use 50Hz/59.94Hz rates, and if the media is interlaced, Kodi can still render 100% of the frames. +Kodi converts interlaced media for progressive output by doubling the original refresh rate and rendering each half-frame in its own full frame, e.g. PAL 1080i @ 25fps media becomes 1080p @ 50fps, and NTSC 1080i @ 29.97 becomes 1080p @ 59.94fps. For this rate doubling to work, we need to ensure the whitelisted 1080p modes do not contain 1080p @ 25/29.97/30Hz rates, else Kodi will see an exact match against resolution and refresh rate and you will see high CPU loads and 50% of frames being dropped. If the modes are removed, Kodi will use 50Hz/59.94Hz rates, and if the media is interlaced, Kodi can still render 100% of the frames. **Recommendation: Remove 1080 @ 30, 29.97 and 25 fps rates from the Modelist** -NB: All 4K media is progressive, so there is no need to do the same with 4K modes. - ### HDR -Broadcast and Internet media follow a multitude of formal standards for resolution, refresh-rate, bit-depth, and video format. HDR adds the further complication of colour-space, using static or dynamic metadata that accompanies either the stream or individual video frames. Kodi supports static metadata UHD formats like HDR, HDR10, HDR10+ but not proprietary dynamic metadata standards like Dolby Vision which do not have open-source implementations. +Broadcast and Internet media follow a multitude of formal standards for resolution, refresh-rate, bit-depth, video format and colour-space. HDR formats add static or dynamic metadata to the stream or even individual video frames to enhance how colours are displayed. Kodi on Linux can support HDR formats like HLG, HDR10, and HDR10+ but not proprietary formats like Dolby Vision which do not have open-source implementations. Users should understand HDR is not a simple "My TV can do 4K" type standard. HDR is a collection of competing technical standards (format wars are in progress) and the number of variables that must be determined and processed to render something nice looking on screen is huge. + +Kodi aims to hide the mind-bending complexity of choosing how HDR media will be displayed on screen by detecting what your HTPC device and TV support and what the media to be played requires, allowing the display pipeline to automatically configure itself for the best result; whether that is an exact match or the best compromise. Kodi and LibreELEC support for HDR formats is still in early stages. -Kodi aims to hide the mind-bending complexity of choosing how HDR media will be displayed on screen by detecting what your HTPC device and TV support and what the media to be played requires, allowing the display pipeline to automatically configure itself for the best result; whether that is an exact match or the best compromise. +**Recommendation: There is nothing specific to configure for HDR itself (only 4K things) so sit back and enjoy that Kodi and LibreELEC developers are working to bring HDR support to your living room, for free. Please be patient, because it's a long and complicated task!** Here are some answers to common HDR questions: -* Kodi does not (yet) support HDR to SDR conversion, known as tonemapping. If you play HDR media on a TV that does not support HDR, it will play but colours will be muted and washed out. In the future Kodi may support conversion, but it is not currently implemented. +* Kodi does not (yet) support HDR to SDR conversion, known as tonemapping. If you play HDR media on a TV that does not support HDR, it will often play but colours will be muted and washed out. In the future Kodi may support conversion, but it is not currently implemented. * Kodi has no way to present OSD menus in SDR when playing HDR media, so menus will have bright saturated colours. In the future, plane based tonemapping may be able to correct this, but it is not currently implemented and not all hardware supports multiple planes. * Kodi will attempt to output in the highest bit-depth supported by the display pipeline, e.g. on a Raspberry Pi 4 it will attempt 12-bit before falling back to 10-bit, then 8-bit. Not all 4K HDR capable hardware supports higher 12-bit and 10-bit depths. -* Kodi supports Dolby Vision under Android (if the device is licensed for it) but not Linux. Dolby requires implementations to license their Intellectual Property and use integration libraries to decode the HDR metadata. Unless FFMpeg comes up with a "clean room" reverse engineered open-source implementation, it is unlikely that Kodi will ever support it. +* Kodi supports Dolby Vision under Android (if the device is licensed for it) but not Linux. Dolby requires manufacturers to license their Intellectual Property and use integration libraries to decode the HDR metadata. Until FFMpeg comes up with a "clean room" reverse engineered open-source implementation, Kodi will not support it. From 318a412ad38eaf4517c4d253b76b100d69d8e6ed Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 19 Dec 2021 07:00:40 +0000 Subject: [PATCH 38/63] GitBook: [#65] No subject --- configuration/4k-hdr.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/configuration/4k-hdr.md b/configuration/4k-hdr.md index 4fb1b5b..fb97002 100644 --- a/configuration/4k-hdr.md +++ b/configuration/4k-hdr.md @@ -12,15 +12,13 @@ This page explains the configuration points: The primary impact of the Kodi desktop resolution is GUI performance, or how Kodi feels when you navigate around menus and libraries. Kodi leverages GPU hardware to accelerate rendering of GUI elements, but fanart and thumbnails are frequently adapted from original artwork on-the-fly as you scroll around, and even when all images have been pre-processed, they must still be read from disk caches before being displayed. Higher levels of CPU activity from larger artwork and media also mean higher power consumption from the HTPC device. -The second impact of the Kodi desktop resolution is how media is scaled. If "Adjust Refresh" is not enabled, Kodi will scale all media played up or down to the desktop resolution and refresh rate, which by default is 1080p @ 60 fps. +The second impact of the Kodi desktop resolution is how media is scaled. If "Adjust Refresh" is not enabled, Kodi will scale all media played up or down to the desktop resolution and refresh rate, which by default is 1080p @ 60 fps. Scaling SD and 720p media to 1080p while adding extra frames to match 60fps is handled well, as Kodi simply needs to duplicate frames to reach the higher fps rate, and the simple scaling algorithms which Kodi uses to reduce artefacts in the upscaled image move smaller amounts of data in/out of memory. Hardware as low-spec as the first generation Raspberry Pi can normally manage this well. -Scaling SD and 720p media to 1080p while adding extra frames to match 60fps is handled well, as Kodi simply needs to duplicate frames to reach the higher fps rate, and the scaling algorithms which Kodi uses to reduce artefacts in the upscaled image move smaller amounts of data in/out of memory. Hardware as low-spec as the first generation Raspberry Pi can manage this well. - -Scaling SD and 1080p media to 4K is a literally bigger challenge. Frame sizes for 4K media are 4x the size of 1080p so the amount of data being processed in/out of memory increases and the CPU resources needed also increase. Scaling 4K to 1080p is a larger challenge again. Source 4K media has large frame sizes and sophisticated scaling algorithms are required to greate a lossy image without massive artefacts. +Scaling SD and 1080p media to 4K is a literally bigger challenge. Frame sizes for 4K media are 4x the size of 1080p so the amount of data being processed in/out of memory increases and the CPU resources needed also increase. Scaling 4K to 1080p is a larger challenge again. Source 4K media has huge frame sizes and sophisticated (down)scaling algorithms are required to greate a lossy image without massive visual artefacts. Higher-spec Intel CPU devices with recent Core i7 chips and SSD storage can normally run the Kodi GUI at 4K with 60fps refresh rates and scale media with reasonable quality, but older and lower-spec Intel CPU devices and anything running from a spinning HDD or removable USB/SD media will struggle with a 4K desktop, and ARM SoC devices simply fail as they don't have the memory bandwidth or CPU speeds to process the data volumes needed. -However, all 4K resolution TV's have dedicated scaling hardware using sophiesticated algorithms to upscale 1080p images to the native 4K resolution of the screen. TVs do this better and much more efficiently than Kodi can scale images itself. +However, all 4K resolution TV's have dedicated scaling hardware using sophisticated algorithms to upscale 1080p images to the native 4K resolution of the screen. TVs do this better and much more efficiently than Kodi can scale images itself. **Recommendation: Keep the Desktop resolution at 1080p, with 60fps refresh rate. Allow Kodi to upscale SD media to HD, and let the TV handle upscaling to 4K** @@ -53,7 +51,7 @@ Kodi has three "Adjust Refresh" settings: ### Deinterlacing -4K media is progressive, so this is not a requirement for 4K or HDR playback, but many Kodi users have DVB setups where interlaced streams are common, so we need to set the mode whitelist to support them. The challenge with interlaced media is: +4K media is progressive so this is not a requirement for 4K or HDR playback, but many Kodi users have DVB setups where interlaced streams are common so we need to set the mode whitelist to support them. The challenge with interlaced media is: * Kodi cannot output interlaced frames, it always outputs progressive frames * Kodi cannot detect media is interlaced until you start playing it From bf70b8e657fc1996e1a9b8bed2caf035cc0a3ab1 Mon Sep 17 00:00:00 2001 From: chewitt Date: Tue, 28 Dec 2021 00:26:06 +0000 Subject: [PATCH 39/63] GitBook: [#66] No subject --- support/update.md | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/support/update.md b/support/update.md index 75a7b2e..1e9c606 100644 --- a/support/update.md +++ b/support/update.md @@ -1,73 +1,73 @@ # Updating -Updating LibreELEC is \(mostly\) simple and can be done automatically, manually from inside the Kodi GUI via the LibreELEC Settings add-on, by [downloading an update file from our website](https://libreelec.tv/downloads_new) and copying the file to a local Samba share, or by running a command from the SSH console. We publish two image file types: +Updating LibreELEC is (mostly) simple and can be done automatically, manually from inside the Kodi GUI via the LibreELEC Settings add-on, by [downloading an update file from our website](https://libreelec.tv/downloads\_new) and copying the file to a local Samba share, or by running a command from the SSH console. We publish two image file types: -* LibreELEC-Project.arch-9.6.7**.tar** \(update\) files which are used for updates only. -* LibreELEC-Project.arch-9.6.7**.img.gz** \(image\) files which are used for creating new USB/SD installation media but can also be used for updates. +* LibreELEC-Project.arch-9.6.7**.tar** (update) files which are used for updates only. +* LibreELEC-Project.arch-9.6.7**.img.gz** (image) files which are used for creating new USB/SD installation media but can also be used for updates. We can update from both **.tar** and **.img.gz** files, but .tar files are faster to process. ## Auto-Update -Auto-Update is enabled by default and tracks minor version updates, e.g. LibreELEC 9.2.0 will update to 9.2.1, 9.2.2, etc. as they are released. It will not perform major version updates as these involve Kodi add-on updates \(broken add-ons are the main source of update issues\) and user-experience changes we do not want to force onto users. If auto-update is enabled the latest update file will download in the background, then Kodi will prompt you to reboot and start the update process. If you prefer to manage system updates manually, auto-update can be disabled in the settings add-on. +Auto-Update is enabled by default and tracks minor version updates, e.g. LibreELEC 9.2.0 will update to 9.2.1, 9.2.2, etc. as they are released. It will not perform major version updates as these involve Kodi add-on updates (broken add-ons are the main source of update issues) and user-experience changes we do not want to force onto users. If auto-update is enabled the latest update file will download in the background, then Kodi will prompt you to reboot and start the update process. If you prefer to manage system updates manually, auto-update can be disabled in the settings add-on. -## Setttings Add-On +## Settings Add-On -Navigate to the Update section of the settings add-on, select the update channel \(LibreELEC major version\) and then the specific minor version to update to. The update .tar file will start downloading, and once complete the system will reboot to perform the update. +Navigate to the Update section of the settings add-on, select the update channel (LibreELEC major version) and then the specific minor version to update to. The update .tar file will start downloading, and once complete the system will reboot to perform the update. Please see the following video -{% embed url="https://www.youtube.com/watch?v=CjlHY6syRHw" caption="" %} +{% embed url="https://www.youtube.com/watch?v=CjlHY6syRHw" %} ## Samba Share -Using a file browser \(explorer.exe, not a web browser\) copy/paste an update file to the `\\LIBREELEC\UPDATE` Samba share on your LibreELEC device. Once the file transfer has completed, reboot LibreELEC to start the update process. +Using a file browser (explorer.exe, not a web browser) copy/paste an update file to the `\\LIBREELEC\UPDATE` Samba share on your LibreELEC device. Once the file transfer has completed, reboot LibreELEC to start the update process. ## SSH Console -SSH into your LibreELEC device and navigate to the \(hidden\) update folder +SSH into your LibreELEC device and navigate to the (hidden) update folder -```text +``` cd /storage/.update ``` Check to make sure there are no files in the folder -```text +``` ls -la ``` -Download the update file \(change the URL for the current release, etc.\) +Download the update file (change the URL for the current release, etc.) -```text +``` wget http://releases.libreelec.tv/LibreELEC-RPi4.arm-9.2.6.img.gz ``` Once the download has completed, reboot to start the update process -```text +``` reboot ``` ## USB Drive -Download the LibreELEC image or update file and copy it to a USB drive. Connect the USB drive to your HTPC and navigate to the `/storage/.update/` update folder using Kodi File Manager \(you will need to enable viewing of hidden files and folders in Kodi settings\). Copy the update file from the USB drive to `/storage/.update` then reboot to start the update process. +Download the LibreELEC image or update file and copy it to a USB drive. Connect the USB drive to your HTPC and navigate to the `/storage/.update/` update folder using Kodi File Manager (you will need to enable viewing of hidden files and folders in Kodi settings). Copy the update file from the USB drive to `/storage/.update` then reboot to start the update process. ## Downgrade -Kodi does not support downgrading. If "updating" within the same LibreELEC/Kodi major release, e.g. LibreELEC 9.2.6 to 9.2.5, the downgrade will normally work. If downgrading to an older LibreELEC/Kodi major version e.g. LibreELEC 9.2.6 to 9.0.2, the downgrade process will complete but Kodi may not gracefully handle being restarted with configuration files and add-ons from the \(newer\) previous release. Always make a backup before upgrading so that you can clean install then restore the backup to effect a downgrade without problems. +Kodi does not support downgrading. If "updating" within the same LibreELEC/Kodi major release, e.g. LibreELEC 9.2.6 to 9.2.5, the downgrade will normally work. If downgrading to an older LibreELEC/Kodi major version e.g. LibreELEC 9.2.6 to 9.0.2, the downgrade process will complete but Kodi may not gracefully handle being restarted with configuration files and add-ons from the (newer) previous release. Always make a backup before upgrading so that you can clean install then restore the backup to effect a downgrade without problems. ## Migrate OpenELEC In 2016 when we forked from OpenELEC the differences between projects were small and it was simple to migrate by using our update .tar file. Today there are some challenges: -* LibreELEC images for Generic x86\_64 hardware have grown to 240MB+ in size and most older OpenELEC installs have a small 230MB boot partition so LibreELEC files will not fit and the manaul .tar update process will fail \(gracefully\). Raspberry Pi and similar images are smaller and will still fit, but read on: +* LibreELEC images for Generic x86\_64 hardware have grown to 240MB+ in size and most older OpenELEC installs have a small 230MB boot partition so LibreELEC files will not fit and the manaul .tar update process will fail (gracefully). Raspberry Pi and similar images are smaller and will still fit, but read on: * Older Kodi add-ons are frequently incompatible with newer Kodi versions, causing crashes when the system restarts, and the bigger the version jump the more likely add-ons will cause problems. LibreELEC will detect when Kodi repeatedly fails to start and defaults to a "safe mode" configuration, but this normally requires you to access the SSH console to get back to a working setup. * Kodi does not self-manage media and add-on package caches so over-time filesystem litter accumulates. Starting over from a clean install removes all the not-needed junk resulting in a faster/lighter installation with an improved Kodi user experience. -To migrate essential Kodi data from the old installation before migrating \(which is likely to fail\) or making a clean installation, enable the SSH service in the Settings add-on, then log-in over SSH to stop Kodi and back-up the userdata folder: +To migrate essential Kodi data from the old installation before migrating (which is likely to fail) or making a clean installation, enable the SSH service in the Settings add-on, then log-in over SSH to stop Kodi and back-up the userdata folder: -```text +``` cd /storage/backup systemctl stop kodi tar -czf kodi_userdata.tar.gz /storage/.kodi/userdata @@ -75,12 +75,11 @@ tar -czf kodi_userdata.tar.gz /storage/.kodi/userdata Backup files are normally 1-2GB in size so move them off-box by copying to USB or moving them to `/storage/backup` which is accessible over the network via the `\\LIBREELEC\BACKUP` Samba share. After clean installing LibreELEC you can restore the backup: -```text +``` systemctl stop kodi rm -rf /storage/.kodi tar -xzf /storage/kodi_userdata.tar.gz systemctl start kodi ``` -The following video shows the migration process from OpenELEC v7.0 to LibreELEC v7.0 as it looked in 2016. The Kodi GUI now looks different \(the skin changed\) but the process remains the same: [https://youtu.be/Tkoxg-Q0Fe8](https://youtu.be/Tkoxg-Q0Fe8) - +The following video shows the migration process from OpenELEC v7.0 to LibreELEC v7.0 as it looked in 2016. The Kodi GUI now looks different (the skin changed) but the process remains the same: [https://youtu.be/Tkoxg-Q0Fe8](https://youtu.be/Tkoxg-Q0Fe8) From b48a86683349d54c77f6a88484ace20cd6f96eda Mon Sep 17 00:00:00 2001 From: chewitt Date: Sun, 16 Jan 2022 07:16:27 +0000 Subject: [PATCH 40/63] GitBook: [#67] use https download links --- installation/create-media.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/installation/create-media.md b/installation/create-media.md index eae2735..3242546 100644 --- a/installation/create-media.md +++ b/installation/create-media.md @@ -1,11 +1,11 @@ # Create Media -The “LibreELEC USB-SD Creator” app helps you choose and download the latest image for your HTPC device and create bootable USB or SD Card media. The tool is available for Windows 7 and newer, macOS 10.9 and newer, and Ubuntu Linux 32/64 bit \(and should also work on other Debian derivatives\). +The “LibreELEC USB-SD Creator” app helps you choose and download the latest image for your HTPC device and create bootable USB or SD Card media. The tool is available for Windows 7 and newer, macOS 10.9 and newer, and Ubuntu Linux 32/64 bit (and should also work on other Debian derivatives). -* [LibreELEC.USB-SD.Creator.Win32.exe](http://releases.libreelec.tv/LibreELEC.USB-SD.Creator.Win32.exe) -* [LibreELEC.USB-SD.Creator.macOS.dmg](http://releases.libreelec.tv/LibreELEC.USB-SD.Creator.macOS.dmg) -* [LibreELEC.USB-SD.Creator.Linux-32bit.bin](http://releases.libreelec.tv/LibreELEC.USB-SD.Creator.Linux-32bit.bin) -* [LibreELEC.USB-SD.Creator.Linux-64bit.bin](http://releases.libreelec.tv/LibreELEC.USB-SD.Creator.Linux-64bit.bin) +* [LibreELEC.USB-SD.Creator.Win32.exe](https://releases.libreelec.tv/LibreELEC.USB-SD.Creator.Win32.exe) +* [LibreELEC.USB-SD.Creator.macOS.dmg](https://releases.libreelec.tv/LibreELEC.USB-SD.Creator.macOS.dmg) +* [LibreELEC.USB-SD.Creator.Linux-32bit.bin](https://releases.libreelec.tv/LibreELEC.USB-SD.Creator.Linux-32bit.bin) +* [LibreELEC.USB-SD.Creator.Linux-64bit.bin](https://releases.libreelec.tv/LibreELEC.USB-SD.Creator.Linux-64bit.bin) ## Step 1 @@ -16,7 +16,7 @@ Choose the LibreELEC image and the app will show the latest stable release, e.g. * RaspberryPi 2/3 - LibreELEC-RPi2.arm-9.2.6.img.gz * RaspberryPi 4 - LibreELEC-RPi4.arm-9.2.6.img.gz -If you check 'Show all' the list also shows older stable releases and current Alpha \(x.90.xxx\) or Beta \(x.95.0\) releases. +If you check 'Show all' the list also shows older stable releases and current Alpha (x.90.xxx) or Beta (x.95.0) releases. ## Step 2 @@ -33,4 +33,3 @@ After selecting an image and target device the `Write` button is available. Clic ## Support If you have problems with the app, please post in the [USB-SD Creator Support forum](https://forum.libreelec.tv/forum-41.html). - From fa6e4987bdfb24daecda738c2eb3f41817509171 Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Wed, 26 Jan 2022 02:57:30 +0000 Subject: [PATCH 41/63] GitBook: [#68] Add PR acronym --- development-1/git-tutorial.md | 57 +++++++++++++++++------------------ 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/development-1/git-tutorial.md b/development-1/git-tutorial.md index 31dd2fa..c2ba350 100644 --- a/development-1/git-tutorial.md +++ b/development-1/git-tutorial.md @@ -10,43 +10,43 @@ The goal of this page is to explain essential git workflow and terms. Git is min ## Forking and Cloning -The project maintains its primary git epository \(repo\) at [https://github.com/LibreELEC/LibreELEC.tv/](https://github.com/LibreELEC/LibreELEC.tv/). The repo hosts the `master` development branch where the next release takes shape, and stable release branches, e.g. `libreelec-9.2` and `libreelec-9.0` that accumulate release-specific changes \(commits\) over time. +The project maintains its primary git epository (repo) at [https://github.com/LibreELEC/LibreELEC.tv/](https://github.com/LibreELEC/LibreELEC.tv/). The repo hosts the `master` development branch where the next release takes shape, and stable release branches, e.g. `libreelec-9.2` and `libreelec-9.0` that accumulate release-specific changes (commits) over time. -To self-build an image and test something you can simply `git clone` our sources and start building, but if you want to maintain personal customisations and changes over time it's better to `fork` our sources to your own git repo. Having your own fork makes the process of storing, sustaining, and sharing your changes easier. Forking is done online by visiting the LibreELEC repo and then pressing the fork button \(top right of the screen\). GitHub will make a copy of our sources under your own user account. Now instead of cloning OUR sources you `git clone` a copy of YOUR sources to your local hard-drive. +To self-build an image and test something you can simply `git clone` our sources and start building, but if you want to maintain personal customisations and changes over time it's better to `fork` our sources to your own git repo. Having your own fork makes the process of storing, sustaining, and sharing your changes easier. Forking is done online by visiting the LibreELEC repo and then pressing the fork button (top right of the screen). GitHub will make a copy of our sources under your own user account. Now instead of cloning OUR sources you `git clone` a copy of YOUR sources to your local hard-drive. -```text +``` git clone https://github.com/username/LibreELEC.tv cd LibreELEC.tv ``` ## Origin and Upstream -Like ours, your fork will have a `master` branch and release branches like `libreelec-9.2` which contain a sequence of commits. When you clone your repo to your local drive, git automatically creates references to your copy on GitHub which is the `origin` of your local sources. To update your local branches with changes from our `upstream` branches, we will define a `remote` repo. You can add many remote\(s\), but we will add just one: +Like ours, your fork will have a `master` branch and release branches like `libreelec-9.2` which contain a sequence of commits. When you clone your repo to your local drive, git automatically creates references to your copy on GitHub which is the `origin` of your local sources. To update your local branches with changes from our `upstream` branches, we will define a `remote` repo. You can add many remote(s), but we will add just one: -```text +``` git remote add upstream https://github.com/LibreELEC/LibreELEC.tv.git ``` ## Topic Branches -One of the most important principles of git is **NEVER WORK IN THE MASTER BRANCH !!**. To make a one-time change then build an image it's fine, but if you make changes in branches that we maintain \(upstream\) it becomes complicated to maintain your local \(downstream\) changes. It's best to keep your changes in a seperate "topic" branch. To create a new topic branch, you `checkout` a new branch from the one you want to modify. For example, to modify the `libreelec-9.2` branch, we switch to it, then create the "mychanges" topic branch: +One of the most important principles of git is **NEVER WORK IN THE MASTER BRANCH !!**. To make a one-time change then build an image it's fine, but if you make changes in branches that we maintain (upstream) it becomes complicated to maintain your local (downstream) changes. It's best to keep your changes in a seperate "topic" branch. To create a new topic branch, you `checkout` a new branch from the one you want to modify. For example, to modify the `libreelec-9.2` branch, we switch to it, then create the "mychanges" topic branch: -```text +``` git checkout libreelec-9.2 git checkout -b mychanges ``` ## Commit Changes -In git-speak when you save your work you `commit` changes to the working \(topic\) branch. The mantra for committing is "commit early, commit often" because it's always simple to combine \(squash\) commits together at a later stage, but hard to split a large commit into many smaller pieces. Commits can document changes to a single file or a collection of files, with a readable "commit message" that describes the changes. LibreELEC has a "house style" for commit messages: `tag: summary of changes made` where `tag` is the name of the package being changed or a functional area of the build system and `summary of changes made` explains in brieft what the change does. It helps to make them descriptive so you can read the `git log` later and understand which commit changed something. For example, if we enable an extra driver or module in the Linux kernel: +In git-speak when you save your work you `commit` changes to the working (topic) branch. The mantra for committing is "commit early, commit often" because it's always simple to combine (squash) commits together at a later stage, but hard to split a large commit into many smaller pieces. Commits can document changes to a single file or a collection of files, with a readable "commit message" that describes the changes. LibreELEC has a "house style" for commit messages: `tag: summary of changes made` where `tag` is the name of the package being changed or a functional area of the build system and `summary of changes made` explains in brieft what the change does. It helps to make them descriptive so you can read the `git log` later and understand which commit changed something. For example, if we enable an extra driver or module in the Linux kernel: -```text +``` nano projects/Generic/linux/linux.x86_64.conf ``` Make changes and save the file: -```text +``` git add projects/Generic/linux/linux.x86_64.conf git commit -m "linux: enable RTL8822CE wireless driver" ``` @@ -57,41 +57,41 @@ Most users will make changes first, then build and test them, then `commit` the Over time staff and users contribute chaanges to our `upstream` branches and your local fork falls behind. To update your "mychanges" topic branch you must first commit any unsaved changes, then switch back to the branch it was based upon, e.g. the `libreelec-9.2` branch: -```text +``` git checkout libreelec-9.2 ``` Next we need to `fetch` the latest changes from the `upstream` branch to our local cache, then reset the local copy of the branch to match the upstream one: -```text +``` git fetch upstream libreelec-9.2 git reset --hard upstream/libreelec-9.2 ``` -Now the local `libreelec-9.2` branch contains the latest changes we can change back to our `mychanges` topic branch and `rebase` the branch. Rebasing re-applies the single or handful of changes that you made \(and committed\) to the branch you are rebasing against, e.g. +Now the local `libreelec-9.2` branch contains the latest changes we can change back to our `mychanges` topic branch and `rebase` the branch. Rebasing re-applies the single or handful of changes that you made (and committed) to the branch you are rebasing against, e.g. -```text +``` git checkout mychanges git rebase libreelec-9.2 ``` If you look at the log of commits you will see the `mychanges` branch matches the upstream `libreelec-9.2` branch, with your local changes applied on top. -```text +``` git log --pretty=oneline ``` ## Interactive Rebasing -This is the git trick that everyone needs to learn. It is often the "Eureka!" moment that moves a user from novice to normal. Interactive rebasing allows you to \(re\)edit, remove, and reorder the sequence of commits in the branch. The reasons you will want/need to do this are dropping a change, grouping commits together so the sequence is easier to understand, to edit \(reword\) one or more commit messages, or to combine \(squash or fixup\) multiple small changes into a single larger commit. Interactive rebasing is done to a specific number of commits measured from the top \(HEAD\) of the branch, e.g. to rebase the last five changes: +This is the git trick that everyone needs to learn. It is often the "Eureka!" moment that moves a user from novice to normal. Interactive rebasing allows you to (re)edit, remove, and reorder the sequence of commits in the branch. The reasons you will want/need to do this are dropping a change, grouping commits together so the sequence is easier to understand, to edit (reword) one or more commit messages, or to combine (squash or fixup) multiple small changes into a single larger commit. Interactive rebasing is done to a specific number of commits measured from the top (HEAD) of the branch, e.g. to rebase the last five changes: -```text +``` git rebase -i HEAD~5 ``` -The list of commits will open in a text editor, e.g. "nano" and you can cut \(ctrl+k\) and paste \(ctrl+u\) the commits to reorder them. For example, lets say we have the following list which shows which commits are being pick\(ed\) to the branch: +The list of commits will open in a text editor, e.g. "nano" and you can cut (ctrl+k) and paste (ctrl+u) the commits to reorder them. For example, lets say we have the following list which shows which commits are being pick(ed) to the branch: -```text +``` pick 73d9356c36 fix typos in file A pick 29de6de78b add new file B pick be444ce9e7 more typos in A @@ -101,7 +101,7 @@ pick 750b824c04 changes to file B It would be more logical to group all the `file A` and `file B` commits like this: -```text +``` pick 73d9356c36 fix typos in file A pick be444ce9e7 more typos in A pick cf7149bc7e more typos in A @@ -109,9 +109,9 @@ pick 29de6de78b add new file B pick 750b824c04 changes to file B ``` -The next logical step might be to combine the changes so there are only two commits; one for changes to file A and one for changes to file B. This is done by changing `pick` to `squash` or `fixup` which combine commits. In the sequence below, the first commit is at the top, and we want to combine the next two minor changes into it. If you `squash`commits you will be asked to edit the commit messages \(choose which of the commits should be used for the message\) while `fixup` combines the lower \(second\) commit into the upper \(first\) commit and uses the first commit message without prompting. For example: +The next logical step might be to combine the changes so there are only two commits; one for changes to file A and one for changes to file B. This is done by changing `pick` to `squash` or `fixup` which combine commits. In the sequence below, the first commit is at the top, and we want to combine the next two minor changes into it. If you `squash`commits you will be asked to edit the commit messages (choose which of the commits should be used for the message) while `fixup` combines the lower (second) commit into the upper (first) commit and uses the first commit message without prompting. For example: -```text +``` pick 73d9356c36 fix typos in file A fixup be444ce9e7 more typos in A fixup cf7149bc7e more typos in A @@ -119,27 +119,26 @@ pick 29de6de78b add new file B fixup 750b824c04 changes to file B ``` -Once you save \(ctrl+o\) and exit edit mode \(ctrl+x\) the reordering and squash/fixup changes are applied, leaving you with two commits for "fix typos in file A" and "add new file B" in the branch. It is a good habit to squash and rebase frequently to keep your changes logically grouped and in a minimum number of commits. This is important if you want to send your changes upstream in a "pull request" to our repo. Project staff want to review a small and logical set of changes, not the monster list of nip-tuck changes you needed to figure out what changes were needed. +Once you save (ctrl+o) and exit edit mode (ctrl+x) the reordering and squash/fixup changes are applied, leaving you with two commits for "fix typos in file A" and "add new file B" in the branch. It is a good habit to squash and rebase frequently to keep your changes logically grouped and in a minimum number of commits. This is important if you want to send your changes upstream in a "pull request" to our repo. Project staff want to review a small and logical set of changes, not the monster list of nip-tuck changes you needed to figure out what changes were needed. ## Push and Force-Push -Another good habit is `pushing` your local changes back to your `origin` branch on GitHub. If something gets messed up in your local branch \(and when you are starting out with git, stuff will get messed up!\) you can always reset your local branch to the previous known-good state stored on GitHub. Pushing the changes is simple: +Another good habit is `pushing` your local changes back to your `origin` branch on GitHub. If something gets messed up in your local branch (and when you are starting out with git, stuff will get messed up!) you can always reset your local branch to the previous known-good state stored on GitHub. Pushing the changes is simple: -```text +``` git push origin mychanges ``` If you have rebased the `mychanges` branch the branch history will have different references and a force-push will be needed: -```text +``` git push -f origin mychanges ``` There are also no restrictions on the number of branches you can make. So fork branches and push them upstream. It's better to fork and store changes and then tidy things up occasionally than lose changes and have to repeat/reinvent them. -## Pull Requests +## Pull Requests (PR) -If your changes might benefit the project and you'd like to see them included `upstream` in our repo so you don't need to maintain them in your `downstream` fork, you'll need to submit a `pull request`. This is done in the GitHub interface. You need to push your changes to your origin branch, and then when you view the code on GitHub, select the "pull request" button. You'll be prompted to select the repo/branch to send the request to, e.g. `LibreELEC.tv/master` and you'll give the request a name and description. If your pull request modifies code, please include a good description of the problem that your changes solve or what the feature is that you added, and \(important!\) the testing you conducted. So called "blind requests" where there is no evidence of testing and no meaningful explanation of the change, are rarely merged \(or merged quickly\) into our codebase. +If your changes might benefit the project and you'd like to see them included `upstream` in our repo so you don't need to maintain them in your `downstream` fork, you'll need to submit a `pull request` (referred to as a PR). This is done in the GitHub interface. You need to push your changes to your origin branch, and then when you view the code on GitHub, select the "pull request" button. You'll be prompted to select the repo/branch to send the request to, e.g. `LibreELEC.tv/master` and you'll give the request a name and description. If your pull request modifies code, please include a good description of the problem that your changes solve or what the feature is that you added, and (important!) the testing you conducted. So called "blind requests" where there is no evidence of testing and no meaningful explanation of the change, are rarely merged (or merged quickly) into our codebase. Note: All functional changes should be submitted to the `master` branch first, even if the target for your changes is the current stable release branch. This way the branches remain in sync, and we don't have orphaned features. - From c3ba0cb63330c458c2e2049d684c0927288d9710 Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Wed, 26 Jan 2022 15:25:53 +1100 Subject: [PATCH 42/63] GLOSSARY.md: add initial glossary --- GLOSSARY.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 GLOSSARY.md diff --git a/GLOSSARY.md b/GLOSSARY.md new file mode 100644 index 0000000..af77c40 --- /dev/null +++ b/GLOSSARY.md @@ -0,0 +1,5 @@ +## PR +Pull Request + +## V4L2 +Video4Linux2 (V4L2 for short) is the second version of Video4Linux (V4L). From 28c69a94affc6d8a6270c13035e5a3043b33e8c2 Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Wed, 26 Jan 2022 04:49:57 +0000 Subject: [PATCH 43/63] GitBook: [#73] No subject --- development-1/git-tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/development-1/git-tutorial.md b/development-1/git-tutorial.md index c2ba350..72a9285 100644 --- a/development-1/git-tutorial.md +++ b/development-1/git-tutorial.md @@ -137,8 +137,8 @@ git push -f origin mychanges There are also no restrictions on the number of branches you can make. So fork branches and push them upstream. It's better to fork and store changes and then tidy things up occasionally than lose changes and have to repeat/reinvent them. -## Pull Requests (PR) +## Pull Requests (PR) -If your changes might benefit the project and you'd like to see them included `upstream` in our repo so you don't need to maintain them in your `downstream` fork, you'll need to submit a `pull request` (referred to as a PR). This is done in the GitHub interface. You need to push your changes to your origin branch, and then when you view the code on GitHub, select the "pull request" button. You'll be prompted to select the repo/branch to send the request to, e.g. `LibreELEC.tv/master` and you'll give the request a name and description. If your pull request modifies code, please include a good description of the problem that your changes solve or what the feature is that you added, and (important!) the testing you conducted. So called "blind requests" where there is no evidence of testing and no meaningful explanation of the change, are rarely merged (or merged quickly) into our codebase. +If your changes might benefit the project and you'd like to see them included `upstream` in our repo so you don't need to maintain them in your `downstream` fork, you'll need to submit a `pull request` (referred to as a PR.) This is done in the GitHub interface. You need to push your changes to your origin branch, and then when you view the code on GitHub, select the "pull request" button. You'll be prompted to select the repo/branch to send the request to, e.g. `LibreELEC.tv/master` and you'll give the request a name and description. If your pull request modifies code, please include a good description of the problem that your changes solve or what the feature is that you added, and (important!) the testing you conducted. So called "blind requests" where there is no evidence of testing and no meaningful explanation of the change, are rarely merged (or merged quickly) into our codebase. Note: All functional changes should be submitted to the `master` branch first, even if the target for your changes is the current stable release branch. This way the branches remain in sync, and we don't have orphaned features. From 234ddfa1a1d8de7c5f5518f0281d7eb0419b204c Mon Sep 17 00:00:00 2001 From: CvH Date: Thu, 27 Jan 2022 16:28:21 +0000 Subject: [PATCH 44/63] GitBook: [#74] mirrors switch to https --- project/mirrors.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/project/mirrors.md b/project/mirrors.md index a163e5c..581ef69 100644 --- a/project/mirrors.md +++ b/project/mirrors.md @@ -1,13 +1,13 @@ # Mirrors -To provide a better download experience and offload bandwidth and hosting charges from the project, our main downloads \(releases and installers\) are distributed over a global network of volunteer mirror servers. The project is always interesting in adding new mirrors to our pool, and we welcome offers of assistance! +To provide a better download experience and offload bandwidth and hosting charges from the project, our main downloads (releases and installers) are distributed over a global network of volunteer mirror servers. The project is always interesting in adding new mirrors to our pool, and we welcome offers of assistance! If you would like to help, you should: * Be an experienced provider of mirroring services * Be able to sync with a frequency between 1-12 hours * Be able to handle at least 100Mbit/sec of traffic with no bandwidth limits -* Be able to mirror for a long term period \(years\) +* Be able to mirror for a long term period (years) The majority of existing mirrors are ISP's or Universities, and whilst this is not a requirement they are our preferred solution. @@ -15,30 +15,30 @@ If you meet the criteria above please drop an email with the offer to [mirrors@l ## Sync Details -```text +``` rsync://releases.libreelec.tv/releases ``` ## Current Mirrors -| Country | Mirror Provider | Mirror URL | -| :--- | :--- | :--- | -| Australia | Digital Pacific | [http://libreelec.mirror.digitalpacific.com.au](http://libreelec.mirror.digitalpacific.com.au) | -| Belgium | Belnet | [http://ftp.belnet.be/mirror/libreelec.tv](http://ftp.belnet.be/mirror/libreelec.tv) | -| Bulgaria | Burgaslan | [http://mirrors.burgaslan.bg/libreelec](http://mirrors.burgaslan.bg/libreelec) | -| Czech Republic | Karneval | [http://mirror.karneval.cz/pub/linux/libreelec](http://mirror.karneval.cz/pub/linux/libreelec) | -| France | Reloumirrors | [http://libreelec.reloumirrors.net](http://libreelec.reloumirrors.net) | -| Germany | Friedrich-Alexander Universität | [http://ftp.fau.de/libreelec](http://ftp.fau.de/libreelec) | -| Germany | Heiko Richter | [http://ftp.heikorichter.name/libreelec](http://ftp.heikorichter.name/libreelec) | -| Germany | RWTH Aachen University | [http://ftp.halifax.rwth-aachen.de/libreelec](http://ftp.halifax.rwth-aachen.de/libreelec) | -| Greece | University of Crete | [http://ftp.cc.uoc.gr/mirrors/linux/libreelec](http://ftp.cc.uoc.gr/mirrors/linux/libreelec) | -| Netherlands | NLUUG | [http://ftp.nluug.nl/pub/mediaplayer/libreelec](http://ftp.nluug.nl/pub/mediaplayer/libreelec) | -| Netherlands | WeAreTriple | [http://libreelec.mirror.wearetriple.com](http://libreelec.mirror.wearetriple.com) | -| Netherlands | Weppel | [http://mirror.ehv.weppel.nl/libreelec](http://mirror.ehv.weppel.nl/libreelec) | -| Portugal | University of Porto | [http://mirrors.fe.up.pt/pub/libreelec](http://mirrors.fe.up.pt/pub/libreelec) | -| Sweden | University of Umea | [http://ftp.acc.umu.se/mirror/libreelec.tv/releases](http://ftp.acc.umu.se/mirror/libreelec.tv/releases) | -| United Kingdom | UK2.net | [http://libreelec.mirrors.uk2.net/releases](http://libreelec.mirrors.uk2.net/releases) | -| United Kingdom | University of Warwick | [http://anorien.csc.warwick.ac.uk/mirrors/libreelec](http://anorien.csc.warwick.ac.uk/mirrors/libreelec) | -| United States | Limestone Networks | [http://mirror.lstn.net/libreelec](http://mirror.lstn.net/libreelec) | -| United States | Georgia Tech | [http://www.gtlib.gatech.edu/pub/LibreELEC](http://www.gtlib.gatech.edu/pub/LibreELEC) | +| Country | Mirror Provider | Mirror URL | +| -------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------- | +| Australia | Digital Pacific | [https://libreelec.mirror.digitalpacific.com.au](http://libreelec.mirror.digitalpacific.com.au) | +| Belgium | Belnet | [https://ftp.belnet.be/mirror/libreelec.tv](http://ftp.belnet.be/mirror/libreelec.tv) | +| Bulgaria | Burgaslan | [http://mirrors.burgaslan.bg/libreelec](http://mirrors.burgaslan.bg/libreelec) | +| Czech Republic | Karneval | [https://mirror.karneval.cz/pub/linux/libreelec](http://mirror.karneval.cz/pub/linux/libreelec) | +| France | Reloumirrors | [http://libreelec.reloumirrors.net](http://libreelec.reloumirrors.net) | +| Germany | Friedrich-Alexander Universität | [https://ftp.fau.de/libreelec](http://ftp.fau.de/libreelec) | +| Germany | Heiko Richter | [http://ftp.heikorichter.name/libreelec](http://ftp.heikorichter.name/libreelec) | +| Germany | RWTH Aachen University | [https://ftp.halifax.rwth-aachen.de/libreelec](http://ftp.halifax.rwth-aachen.de/libreelec) | +| Greece | University of Crete | [https://ftp.cc.uoc.gr/mirrors/linux/libreelec](http://ftp.cc.uoc.gr/mirrors/linux/libreelec) | +| Netherlands | NLUUG | [https://ftp.nluug.nl/pub/mediaplayer/libreelec](http://ftp.nluug.nl/pub/mediaplayer/libreelec) | +| Netherlands | WeAreTriple | [https://libreelec.mirror.wearetriple.com](http://libreelec.mirror.wearetriple.com) | +| Netherlands | Weppel | [http://mirror.ehv.weppel.nl/libreelec](http://mirror.ehv.weppel.nl/libreelec) | +| Portugal | University of Porto | [https://mirrors.fe.up.pt/pub/libreelec](http://mirrors.fe.up.pt/pub/libreelec) | +| Sweden | University of Umea | [https://ftp.acc.umu.se/mirror/libreelec.tv/releases](http://ftp.acc.umu.se/mirror/libreelec.tv/releases) | +| United Kingdom | UK2.net | [http://libreelec.mirrors.uk2.net/releases](http://libreelec.mirrors.uk2.net/releases) | +| United Kingdom | University of Warwick | [https://anorien.csc.warwick.ac.uk/mirrors/libreelec](http://anorien.csc.warwick.ac.uk/mirrors/libreelec) | +| United States | Limestone Networks | [https://mirror.lstn.net/libreelec](http://mirror.lstn.net/libreelec) | +| United States | Georgia Tech | [http://www.gtlib.gatech.edu/pub/LibreELEC](http://www.gtlib.gatech.edu/pub/LibreELEC) | From d8f985551bbcd701ff3a7e4b71fc0f7c4a895b57 Mon Sep 17 00:00:00 2001 From: bam80 Date: Sun, 30 Jan 2022 17:33:34 +0300 Subject: [PATCH 45/63] Update ir-remotes.md fix typo, CTRL-C to abort --- configuration/ir-remotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration/ir-remotes.md b/configuration/ir-remotes.md index 67e75f0..43ff714 100644 --- a/configuration/ir-remotes.md +++ b/configuration/ir-remotes.md @@ -184,7 +184,7 @@ The table below has a selection of common keycodes: | KEY\_PAUSE | KEY\_SUBTITLE | KEY\_TV | | | KEY\_STOP | KEY\_LANGUAGE | KEY\_PVR | | -Once you are finished with the keytable, save the file, stop ir-keytable -t with `+` and then restart it with the keytable file: +Once you are finished with the keytable, save the file, stop ir-keytable -t with `CTRL-C` and then restart it with the keytable file: ```text LibreELEC:~ # ir-keytable -c -w /storage/.config/rc_keymaps/custom_remote From aedb92d1bfe7b7c01d367c0251f32ae6fece83d6 Mon Sep 17 00:00:00 2001 From: Chad Wagner <47257594+wagnerch@users.noreply.github.com> Date: Thu, 3 Feb 2022 19:20:24 -0500 Subject: [PATCH 46/63] Update startup-shutdown.md for autostop.sh script --- configuration/startup-shutdown.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/configuration/startup-shutdown.md b/configuration/startup-shutdown.md index 32cadaf..7016a36 100644 --- a/configuration/startup-shutdown.md +++ b/configuration/startup-shutdown.md @@ -17,6 +17,16 @@ You can place any commands in the script, but note they will block the boot proc )& ``` +## autostop.sh + +The `autostop.sh` script runs during the shutdown process, but before the network is shutdown. It does not exist by default, but you can create it using nano. + +```text +nano /storage/.config/autostop.sh +``` + +Like the `autostart.sh` script you can place any commands in the script, and they will block the shutdown process for up to 5 minutes and then will be terminated automatically. + ## shutdown.sh The `shutdown.sh` script run during the shutdown process. It does not exist by default, but you can create it using nano. From e6e1533da37405003fe6fd8183b882138a3ba890 Mon Sep 17 00:00:00 2001 From: Rudi Heitbaum Date: Sat, 5 Feb 2022 05:48:26 +0000 Subject: [PATCH 47/63] GitBook: [#75] Release Management page including update-tools documentation --- .gitbook/assets/image (3).png | Bin 0 -> 62800 bytes .gitbook/assets/image (4).png | Bin 0 -> 13892 bytes .gitbook/assets/image (5).png | Bin 0 -> 83493 bytes .gitbook/assets/image (6).png | Bin 0 -> 13372 bytes SUMMARY.md | 1 + development-1/release-management.md | 76 ++++++++++++++++++++++++++++ hardware/nxp-imx6-im8.md | 2 +- 7 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 .gitbook/assets/image (3).png create mode 100644 .gitbook/assets/image (4).png create mode 100644 .gitbook/assets/image (5).png create mode 100644 .gitbook/assets/image (6).png create mode 100644 development-1/release-management.md diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png new file mode 100644 index 0000000000000000000000000000000000000000..63b10b8691610d4d28bb99e8da87aecd36983079 GIT binary patch literal 62800 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 UrffVaZv3~WGAhz#lBNOw0k|Bnwg3PC literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png new file mode 100644 index 0000000000000000000000000000000000000000..96b024d950c4224911e732c1ea573709e5ab15f9 GIT binary patch literal 13892 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png new file mode 100644 index 0000000000000000000000000000000000000000..3b182bab1e8e710a055befadcc186cff4899ce99 GIT binary patch literal 83493 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

4d&edQkjpIG!!>dh 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (6).png b/.gitbook/assets/image (6).png new file mode 100644 index 0000000000000000000000000000000000000000..717f9115157b7818c310f27f760d8c116c315f1b GIT binary patch literal 13372 zcmdVAXH-*B*De~w3Id8C(p5mD3rLVIASFS10@78Qbm_e)Dk8o2DuEE1l+cTc^d=<) z5_$`S5~L(j0w=!XoH5S%{@i=NA7_mFBXei%k-ak4Tzjo&&gWT?dO8|(G;A~g0Dump z`OE+SxBvzKsIFYSOu3^^=TJ|%PJ%`7@HkDmfajtQlz&dHdwHpxJ#y=wDDl zmnoM*D;)GO44eA&|aSZ-o^)#Ot@qum|#&cU|x6NQ1n`I3V$xadwjyv^^DUoxo3BUMbbBRkl;tICIs>gm_b^A8 za}ImJQ`Z$xWFpUYy7PRqMd~1%h#09+BXdql)9&0IlOClf*XoLpmvR3pP6@EeYAd7- z#%(IxDeIf?Cu=NP;OfUv(%D^}Ze)!}4s8Iu=u}p>xJt$`nhFr6H;}~$TYu41zC|~7^s#Sm zT1&+IRbRXPm*?lA(|2eY^!dyN0-YwEsNBXg?Hw9Ca;wj&0E@ySWpn+=?RyNCoKDe^ zL8Q(A8QbgB0KkXZR=2NAhWdD5l(hP@v2*$RJ@8=4{hN1tW~t#ou+}kZ@>96?+nxO} zpLIr;Dbl3#2)2I6oBPb+Q#6OPTB@5OFYCuIAk?vMZz$LLeHW+XiMi#zvk@JWzhn** zS^F60sb(`B$N2}Af{-#Ex}9b-Ov4-D)i0*TxRrx?cMZqHa`V3*gK`E&_HA`RiBPQz z&8mdN2gt$<;U~rC_E@nP?WNcuJ(-g zS3kp?wVgh)FC8SiG@K%bWFh_So9$!IQjA|JBXi)TX_ow0+wn#9?CcYhRtn zv@eHlsV#B}_qW-g$$#IF+>shm@r$171DvqofwtR#Fu?GD+tO_4sm=9BrgHxn-p}W> z(L?U)iEHv=zN8St+cK(SCb-8a)c48NahroBr8@VtLF>KQUX3FC&0&eZF%Ek<`zkJ$ zMQS?zI~DVNb<&rgh`rH z>9#2kuK@pQ95Tx0mmvwX>FU2q1tr2Fy-1NkpVk3uH|{Xx zBoI{J{Mn8x*@RlI|JJgRY30aFNKa{w#D3Sw%8}dPH^|dUm(#F%^9Zv_U~%NHIlmU5 zc3U&B$>?>s*j8_KoyhX)yJ4|`2JFx>0<3YcoZ=n2KL2Vd%zkxKK}NgmQW247M61N< z5a_B;luCT^x;}3?UD(qyR4ug_zZutDoYgwjlDZjm%?Lgsq=7N=FVoQV_dUF6{iWA- z)h*?uxr{ska&0Sy1Gf)|BSnN@-2vm4F{C@-=^cHj+w}CKV%S%oZ49RD2u{~M@iN=J zoO>K~IEO*9%c@r>+76D}a%JND>Owft5=i{a<{ji-ytuKwuCDZ_WJu3xnyH^i-jmQ0 z9)-?ymwrv}Q`t?vo(k{5k;?6L*&Tk|ZU6n#Q?|o%+>~7dyXOosMCvy(R<>aVcfOxZ zUy-x0?&D;Et{Dl=uo?VA9ME8BPSwYrccVLG3~HUv^?UXjnj2HgOi1oMr{Njh&u8Ds z>}=C`nGd^i;Y@Yfx?SX*2KzqN%5g5sN_kam)>GATfX?k^?ZN#-G0r&utvI8QdhvA1 z3LJRWbB>Z4N%$1|Zl3G$+Bz{r^7rWXzt>%q$Qg$VHs>-03RM$L9rD#FP8pa6`JKOb z5|eeV+1`j@+c4|lo^Lr7fJHqw`5~-?E6KtM*Z;ZQ1vau$(G5xX*+8FIc}Q&>!Q^)S zK_1iFB9bUF8H_f^r0UviU1*D+1>49{t4m zk&tpu*J4~*|0dMSWc57hl~^6H`)>1FTt&-e80b z#2zq20jK~?smuAv60nAeQbYcQGW~HZYaYuX!BxeX2jFVS-lA*24%W zlCkX=QK$kXWxfkHZt|gC72t86+Un?whGFX#Uv8TnrkP>CS8P&Am&iZ@UA~;pe%b}^(^NN5$O%22eqwFdWM11dC@%C|B{^JTO zs9;*hbA(rm7T%KWZTO-E0;MXT7H^zt}s zY^(n}H|{fn58B_wY8~>#r@#3~pj)$i28(dNv8~5gL9T?goEiuWO|f} zlT`$;MJ3lmeG$*IkdR`9pm1?iW`$lh6K$8tZA1Nl_CMK>s7c=!{e|LtOP*D|y+h}Y z%cdKXWiGXJOCcYRTRogpm}?JPo}p%aU9upkPt>KDEv3q**8o?!{TY)*1x!p3lWu$r z^c)Yy+f4+b=C=8yv~14xiEyw%anYd%F*MPp#62rP;rMpbAIt)<;|&U9Fy8n*ce>q} z{?f^vlxW`Rw&B_DMD!)@{=nt=0ix9Q3GXuJ{gP16klf7+&ARm!K!WR+l>Sw%JDn^E zgOZ7v9#88lEO^J~S?|ZmZ;AeqF&&AWq1hL2uTKhCS> zJ~IQdvRFh^G%}I!R=t@bik6Jg9g{9ZYL6Aaw=AwF)zpc}8?M%M4s$j~Z-Y=&M2AUc{TqG@ z?oeg*AX(iIg`%{-AHYpMvJp}(zC{0dD({rhUF5eF75vq6Dn z*cb%x{nAYnWBg!kCAQx4r_q%EAKGw7I_TH}YwLZZHRX(~DKl5638Q9uKQ(pj?0fTM zV#}8N7UvgdN@5iA00r}U=o{?iF5rn;?fyI*(#`qIlaFDf?7g&w08IFpjvDZxqn8Fe zdg=Wexx|#^sUM#74>37f^OgH%?{BZK9_6FquZ=aE)_XaXuO!)d zJE6IB`v=@~6HWG0`w**9E8)tVD~?|S1ewM{G9Pv-kvs2MoufDPK!}ScGkr@~@=3D|kLjNs{P#-||+&!pOWo z9V!&t=J9xyL(Fe<$CbWti+xpW`8G*&4~sibD#aeGZ6I9qdhQw8jK*zRpel5U8-m-e zrJ}1^w@2M7MsCQkBeLH*=CqQtr%!y!Ayrluv`-LiW500f{l|t)C;57L#`!aDi`%F! z*}#%xKe!U{TP4_1Ed{bUe(t1ZTba5Iny%7CIvsbe11|t>DBdsQ>NNu4k(1mf`R}{a zXpJwszj~eu+fQTfyw98oNvly_Z4;>OSf z?M?e&&FY5Q8rwrs_imF+y;o7Igcae2K`?Ovccu&ON=^;T3+hMNey=tW(_CT<&fuWD z>&%8AHYDixW$5?Zmis5|EySu^mcoB~4eYAZBg3coh7G(UN6jX^Wu}D@2s6>k}%HLKz6Ze-1_d>}oq!Y;Ha} z2PNGJZYZe=Fe@&n|3=QZVoNMyu;65wBzQzX8sEzFMHw;s^S-^NiAe=X1by)hES&kq zZ7CQY5xk5ch+Jt3oHw$#+@?DFDc_H^gvmVj+~OG9N+~b=beX+nMi|4dsvq6)gQ)bjiTS6EeAEuNlhpLukO2`{p@zkhGUPY*FHZMDJ1tHguN6~`HCULq zOhJz3&Mez}7_?3Wdl;V5ANsF0DI&GQxdU|U+|Y3_{&~;KfE$+1_;+sI-(Y#&bE0kh zn+kMgA<3x+WfgQ0@5#GC8-eH>74sQ`={gd@hmw^ozslhyt)ag=N}f-pJ3e=}{1ug& zW+#%_k5Y5lBg}X7A-K_6247B=3=6vk_Wn4zz>;-Oit-ib{j1OHc6s*j_esl|6BPvL zrgYL}G@>UZJJCXmrJocyIG2+nipnFbl17<_4~HmtE_6{KExGka6WJT)bq`6-viaeg zwfZ76-_OG--GRF;Fg;b6+krl z^QpG85JW#9E=yFbp<~qBtU%mZa`62Xe0FT;fsMI@F!DXRh2QTtf@jK0y1zdthfby6_Xr}8_NIB4v&B^m3NqVP#u==!BCeg<2#||whkw>)`0-aYs z4Ud4*oDKz_F!z6=KYLDOCoq_P9uYEI+{{^YDj3Xt0+E$2d$9T?^L%v)_L_`ETFbiy ziIu+iwcqi&{MR^08t~y`K4MPPuBr5xT4iWoKDs?5Y%ufm>8`K+1;F0*n7d)}-(GFa z?&VP+Y2U3?NNH=Roo4r-GN*E^R;$dC71PrW0Cilx{-2qEtmj?F``DHX)YQ_SWS4{P!+amd$rV z1?!f{X=Goj#T8AmYWtnDI$pM5iRsE_UD^3!U!!Y)#@#(zb{MCmRf=0|a{T+AhWh8v~g@x{h$79WGdi&?6s~Sh{v!dvuk{zZk zNsmM?l4k@DVBu$PsB&MmuHr^WNA&6R3D6rQv(l3%e-FC+&_LxgTt~G>o+n)KNCqoM zhNLluTXH^hDc^Z}5nz7fNc5qM0lLpDjy^>!RH@veb;9bXVFs&lJUjnvbL-|+sS_nR z+eMP6%|^CV&8tmU<7tI1%GMO}Q(CX(N85frZe@K&0@!6&Z zyX~>J0+IFHGXal-NG2zs0Z9yD?q@gOnO{GdWR3 zeTH~v34$ohZQ~2L^H&L-M;9*hL8qR1Q^wzz4tKtluQEg{aP|LjR#d*z^ZOF!M3@C3 zkGef{+PEpci)A~hUt1&lvn5mh`KSIj)(C_&=Q$FHCjw zL;i=)``@V+)11=u;T^z;`^ucD+`5Z*H5D55{$2+F3x1E+F9@<)@xq%*JnE zAUWS1Ufz4J;om6n;H!Xae1AvX4FN2QPDQI)yMCan?T?B7p!qtt3c^awQnJsLOg|iK ziJvGKB)R0=%QFl0}5{7);Q7 zBKN+^(h<7;$hg&B)AZQUY`bcgsig&CKLKCE>>+;fZw7d?p0ua*uuY)W{8KMZGmM~% z1J7*TDpiBq?KQy}V`hN_pSTfX>-P+pF@Du7^JS&y@2%-d#;c)x^t;8xEL?SD4S!z* zIjfOaYY&RUoLhICnabt1^Qo-uu^=wu7G|EYIuQ6hH3A~qF~Rn|v~;*$4NrPj!?%h- zyFacZW@b7@HcVec0F zL{F6VAQ$Pi5l$3tOWrxXeBigzi?))$b1{{G9}t#}xuiH&YyA6mb<5^j%T&RvuBx^N zlH-!dSIEI{i&mELw7x~MZ2`?3u8M}V3!7_nNqO8Z>&Q5MvTwwJS=;c#A(@@)Am4#c z#d$3%ErLHbo^-=i6xVtqdj`8;; zvW|lkO*$-3IQA6``A3K}D(*44XoTg2n&qXQrzg}VrDRf&oC4%oinGXU3vX{Zvss-x z>@Ru9996(-X7>j6WNi<;-J<~>$Vi%{nrYXet+R_XtOV!Qm_;myZCR#?qLX1a1D~wV zG}S^X%}so^rWR?m>@*F=C*+aW!%puxzc=tfNH?LOG+#v}egKn=7FX)oM!VBP1;Z4^ zON$j>mpu@XwJHvtoa<0E-1hdHC7C*)w#B@>EsCrWzGDdX;P7}8#0_Z8yT>jsey4wV z$=ph0t1`$C8bH?w!{lp1t0sY!wia;!!-lLuP11|0!eISajM~T7oKM_nSVV;h9p~-F zFZQm39CJ-CKRvqvRPH;|P2{!3!1TyYMaed80q{h2Z+CI6Sjgdvv}W&Gh{dY9j_RmY z;GqxXhoF9atN4ev)~O5rm(w|{Q74{aEqH{3zJs zv|;?MB*9d&tWv%VI{eW|A-1B%=GeU=xipBCwBw#~dS~DBKK_e`sT8Jg(a-|+5`ob` zHr3F4>gAjt<6(9T*2;J;`2CXx%I^JRhmhKG^X4(PzBI@AHGIGYT#WsT`@B>~=u5O< z{LW)z?}&XEn{1h5O$0VYB6TGW4{lY&aa3^0U3wDZ4{dxo2r;WOi^l{sSc9-Iz4D+oM*<5nouX16m%UT>12{0}oLBrO(3ZUF|SlOozJj`6^x>iW9nbthR6~ zj~c5=E^)A8jsXCOXBn3IdT~F5>lFp|_c;G^c^i9`qB#R@|L^wAV9Ym(w+m0LuL6D= zzJ6UO{z0?bf-+P=-aoWgpEfT0qPpI-%>7qae)=zcZ(PYi zTDfcrGFpiW5|HlHKbHGFZvBteY!1h#ut;0e=rd5>!jxcS4Bo6`-n#vGCKMPq{z*X# zF5ggP)Ye|J5I>uqlyY?R4>-7-^o-ewBFeM}!Q{62Q_;0nVeG;_r^P%cMNk(J#y%{) zF+q_{t)Hj0tbejq9n~5+ zkA`HPS?pPfg#A;>DeFk!N%Y2%C28q5t6KFT-Z#SpBQn)>r>f)xn9> zd(S;2A}{o}N@B}|&UtLqC*3wU0;tsxtZEd4f5~A?QQO6w!O4)wk(q=!7KM|=BU5OS z@kYXbfT8kI3fA$NQ_^65by1$6xQE%{vf#FT!7*A>pf5lQRaS8jZzoIHzKQ!pmgatM z;9>5?qmGCjbg@G;#Z$PJMH}1TjN<&um zV~1A}O7jB-+O&XPrJu#m`o>e4tsIqx7@2B6JhN_55uAwHN8ly2UI$?d>Vh`-`~!ER zOpy~4eYHq`VyBbM5q`YVQL*+zuTAP?V_E48G?;C9U!iPn(Ac%?-Gz{O^G6-wZg-$n z6#c%=KOx^|Ud{4k0>P^jDL8G~Jl~<}RC0()52V~n(~foMG00)D3p0Qv+-lyA zZ?J>op>3u}QX`eRL!su-`Sst!+<>QNOsUF!MQm@%5^obe4euZx)jF11X8kbb!BsNM zCh@`Fu>2OirU(NESZ}0yZ))Z=&$fcEzoy_jIDH1{Bw}l8r)^!Ccvm}fehYeN*FKC4 z=sqV6$w=z?HBb)(;9eH#!Q?T%yD~=Yj!KFKJDA<#R@sV_=-|Rsaa8zn{_QVS0%kwc z^IK|KtIKJI*b!Ps5M&4ezy+mQFjIhm zb<4q8gNLOCu;sLd)O%u5(rfEy}V(;2URV+=`deE!e%C?~IR)22EVvF2Q+uHrbr$yX3U@j0WX(x(g53XX3)q zK7d|yP^j@eiA!1TaKqhKMo2hgaoSFKNy-~I;t_Ogye@fHHfK$ z@;F0R?TmgL5mi^?Uz;Mgm(Z4;QgcRxO&M5?{5S|&g-0QF6p_z>!Dq2$1VPG-tLp99 z&M2>9!_f1bkY2OxD|Cqyixhg!NM!X*gNbQMkz1$_DS60I6+~H`SWuG z#%OlK?$b-}D>J(?UoCo!pk+E+HB+cF=SgTBsOLRh8%Bf*u*Z-kXe9BecB(C~0Rq?i zaffZpZA=C*V9qO{UNA*p)x@Og(@Nv|~0 z71feRVF2V#iC4@SgAgZp&66(gnu9wGlvQ;V9CigoNX2u`ZsjN0_fb7PQ`e(l=eMW- zyCngx3gPR`09Wn3=-#?t1uoy9!1U90Ri%Hxiu;^Tf$o>@{(oifz0|9jc7EM}jS;87 zc5g{dO#hP~SMMa#FbneX>*hZ0rVQ+UUO!N9`6ACtJwektIEO+2L?`=+avy~_`TRz3 z0RH^ze;)cKlO6r4V{Ck!kB?7nY;24-ON~Oe{7gl-8uEbzdAqv0SPiKMfDiw1Fvc^7 zlyh1CS3~t=x=mfMoFwlYbkWB-L92?$i0UQG)*B z?!VCgSL@GPZ>3b)zS~iWM(Q#>UZc#mTJB}Oh>DM1@Y9d-7Kd77XhE9zl}5h|s#1K8 z@f}02KQ0kB(gAmW>J?u6pjUd{zCxqPk82k+Go|xrs}Bx*npJsW-21#uoBcB2L&G51zu@U4nbS&?MKCc?_EOW;Ret9CJl6m12<1l2HOau?un@R?qG)g z&zx2Lc7fk<%o_56dz%tOlIvbqwU;&6W;|T4nS))@G}b17yT#*{Wm=)}=K1Uv|2cEZ zzWon&tmE<-e6?)ON?TS7rDM$IbA81HdJZnQwKh*XUbgWbZ8F!gulrSXWq;cW~bNE~HxB2J#T$lBu8 z4%}*qiz{+T{CP>J?_K9{eR@!uBsw9<+6Ec-fO|qqXX1}wQj-Y{3u0qN?D#A_W#*R$ z`8Wi=gqak^E}5s{#7VO_yj=906=s=ZcP{rOELWaSbyM_lw^tb(DaCKU@yZYV{2X&7 zl3gSi^RR=M>F^xo|EcIX?$nBFRxHJShVLT{xA*0OhT0E;(8QvMqVoNTW*RwQi(;qe z>=)AxTD;r*a0p5}MeF~_mqMLP*a=RtRe4UL5K5t9wA zMbZ8i#1VzEA%@95!_u)gt1qmt1Aba*YEcfc@YF8W?;j3&$2ExsfM+-@_fZ1~HqDRu zLe{!{?~(>=Jn{6PIK)Hr?HH-GW>teA%thAfZA*XLf{y?PuKimE3o2=twj@(YLdFpM zE5JEQX?VLuq9UsP)B`7WuyifY@yAoEbKOKP?2EFwKNcjjjt+iMMjH5tk$M(oTVDnX zSY$G3ZfjFiDo*i5TKViNbfMz^-a7V)k+0WS65ZZH*fo>c?7zi}R32t~h&tKa5d-!x zW;A(bd&+T|rti{#SciAtgv33?7Ca#(&{VA{M*8mXj99-YeCa;j+!pQ`BJHb5^P0R? zpL}L))eu0=*0;z^Ba{vq_q3P^kQ77rNirTadb<8a6ZU(HL>Z5Xg7+pkj))??$fmE2 z&*VbwILI1#FL&ucf}f`((7lm44#NT;VJ|n!N0JQr3^PE(FA292lZ$f20xlH{Feci# zIr*}~*FBJ}h=V1^)RYNv)o8|2L&kZcc*U^}t;#t2m*8a;m$@~dl~zD?rYTlHl2?sj zz9Kjzn`^GqA4_;s&J5U#i@yxhLl_c)0XUj`JX zk4r2W^HYyTSzVt?(HN&T4i42E?RH@N)(T2iaR=orTw+`UPK(bif(#WWyCn@L`;|{% z22X(CDhUtE@}a02ntLth3Z--{a1s}20<1c5S`|xRj;vU7bxN5H(&fT>6L+hI^=?$T zMcjN)Th6a(in5ysnXdCK1Xj+SuPU)yy!$PNt1mzGdNK>= zV0g01xYpIZ!px-6zLG;K6*Y2&6!O_4h&L(JmplCJiWsl0#>eETi)N|cSL0~3m3)6| z`6nN^2mWdZ;+NczHZC1W;67(+xjDSVRYgh5IQ=&QU2JaeK8{$z(3xva9iao@iKJb{nGSzb@NmGYD0{Es-sIGOQCtyLb!W{sn!m zA;i~TQWN|_H~StiWS(w!MkjahEm-a~=vsqMT>NsA4xI+n(eZ20nOTs0U``8oX#UT2 zepcGpF99=7&ai%ujD4mdQCHT})AF z{-aw~TWq+zw#896_PQos#np&hijd9bK|OE?49xT7m0%0R4i6_7o@@<=>8tk-b8tQ4 zEd?s7W$%-rRi%kJl6~}%0wGP}U74)$V6<$7)bZR5u}7E>+yuk$WTaq^X*CZ|v2tNCZjR+8c0?vq~Y9L*mNrIb+?mKYh&#re?^fKo$ zN$Y;W?BtKUsIX@6ydWmDb-ZH`#eb}~87bj0)Ba-S6~K}9)Fr;Q*%49c&I)r*N zO99aV+&b5ZRY%3M@rjLgf7Ob4J6p=k$i?D~+!2Pl)%zJ|2|`o;hNh*Y9n^iSB+5+> zGrV^!*-vw9v3-1B8huOHlY3HlUX|UL&_UWWW%RX!c?;;&1?C|r2XT-I5*YWR{=Vbj zH0VT#)XDEXgaXVrmqhWCeL~&rka|ATYbvJ)v82W7sF#K{b4=c zkJi?)T%zPBRNs%7e3U^>bwVdL^NZyyjqjgw}lkd+`xl#H0PDCI;dri@u zX_T}9@Wxqz-3Ihhk`A+a_TQAB4ELU08?ABZF*Nl%P{_?a8DzerrQNacW8-%|x;0<{ zi2VysvyYoajC$Qg6x7eTjlD&m3<(06zd@L1cjA0C-j>pUvDbO_(?L!l+Vw)z(@bZSZW` zfDzBj4~dg;iFs$`9ztRbQv52TafwO+p_)6mHhiTzAva zUEUmByRRN2A<>!qaD)g+DQWF!{hMpQ zC)q#y;ZKclO=4z`aUt+haw$;=@GLP*xzu^_OJaiij;{2TpDD5(DF2-@N}}$u6OoR| zbL_bAl=s@5WK+vS_`ihQek6Cb%E=ruaa2C+@W!6Kc1Ofn3(|J~@^78%v06_0? A@c;k- literal 0 HcmV?d00001 diff --git a/SUMMARY.md b/SUMMARY.md index 0058842..749c143 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -66,6 +66,7 @@ * [Build Commands LE 8.0.x](development-1/build-commands/build-commands-le80.md) * [Build Commands LE 7.0.x](development-1/build-commands/build-commands-le70.md) * [Nightly Images](development-1/jenkins-ci.md) +* [Release Management](development-1/release-management.md) ## Project diff --git a/development-1/release-management.md b/development-1/release-management.md new file mode 100644 index 0000000..333a772 --- /dev/null +++ b/development-1/release-management.md @@ -0,0 +1,76 @@ +--- +description: Release management is as simple as plan, build, test, prepare and deploy. +--- + +# Release Management + +## Package management + +LibreELEC is made up of over 800 packages which are in themselves developed by many other teams and groups across the Internet. These packages are maintained in the `packages` directory. An example of a package is **Linux** which has its main **LibreELEC** `makefile` as `packages/linux/package.mk`, or **Kodi** `packages/mediacenter/kodi/package.mk`. + +The project team and Contributors prepare and regularly update the code that makes up the LibreELEC distribution. This is done by "bumping" the `PKG_VERSION` in the `package.mk` file and updating the other variables, code, patches and dependencies that make up the distribution. These are then rolled up into a [#pullrequests](git-tutorial.md#pullrequests "mention")and submitted as a change. + +### Release Monitoring + +The `update-scan` tool has been developed to check `PKG_VERSION` of packages against release monitoring sites. This tool currently uses **Anitya** from [https://release-monitoring.org/](https://release-monitoring.org) with the following distribution [https://release-monitoring.org/distro/LibreELEC/](https://release-monitoring.org/distro/LibreELEC/) + +An example of the output from `update-scan` is below: + +``` +$ tools/update-scan +Github api usage activated + +Updates found: + +Package | LE git master | upstream location +-------------------------------------------------------------- +Pillow | 8.4.0 | 9.0.1 +Python3 | 3.8.12 | 3.11.0a5 +RPi.GPIO | 0.7.1a4 | 0.7.0 +. +. +. +``` + +The tool provides a report at the end of the currency of the packages in the current checked out **LibreELEC** code. + +``` +Current 449: +Jinja2 Mako MarkupSafe ... + +Ignored 84: +adafruit-libraries alsa ... + +Packages not known at tracker 23: +RTL8192CU configtools dvb-latest edid-decode firmware-dragonboard \ +firmware-imx gcc-riscv64-unknown-linux-gnu getscancodes \ +gnulib jdk-aarch64-zulu jdk-arm-zulu jdk-x86_64-zulu kmscube \ +lan951x-led-ctl media_tree oscam szap-s2 t2scan tune-s2 unfsd \ +vdr-plugin-dummydevice vdr-plugin-wirbelscancontrol vdr-plugin-wirbelscan +``` + +Packages are ignored if either the `PKG_VERSION` _or_ `PKG_URL` __ are empty or hosted by **LibreELEC**. + +For packages not known at the tracker - this means that the package is either not release monitored or not configured for release monitoring at [https://release-monitoring.org/distro/LibreELEC/](https://release-monitoring.org/distro/LibreELEC/). + +The following image shows the **Projects of LibreELEC** monitored by **release-monitoring**. + +![](<../.gitbook/assets/image (3).png>) + +Adding a project to the distro can be made by logging in using your **Fedora** ID. + +![](<../.gitbook/assets/image (4).png>) + +Search for the project that you have developed the package.mk for and you want release-monitoring to monitor. In the example - we have added the distro **LibreELEC** to `aixlog`. + +![](<../.gitbook/assets/image (5).png>) + +Click the `Add new distribution mapping` button within the Project [https://release-monitoring.org/project/141477/](https://release-monitoring.org/project/141477/) (**aixlog** example.) + +![](<../.gitbook/assets/image (6).png>) + +You need to choose **LibreELEC** from the **Distribution** drop down. Then click `+ Add mapping to project`. + +{% hint style="info" %} +The Package Name must match the `PKG_NAME` variable from the **LibreELEC** `package.mk` file. The `Project name` from the Project in release-monitoring.org does not have to match the **LibreELEC** `PKG_NAME`. +{% endhint %} diff --git a/hardware/nxp-imx6-im8.md b/hardware/nxp-imx6-im8.md index 1f9cb48..e7ef2f0 100644 --- a/hardware/nxp-imx6-im8.md +++ b/hardware/nxp-imx6-im8.md @@ -10,5 +10,5 @@ Current iMX8 images are experimental and do not support a specific board. Installation is done by writing the LibreELEC \*.img file to an SD card. The boards have internal hardware identifiers so there is no need to edit `extlinux.conf` on the card. Selection of the correct device dtb is handled internally within u-boot. -**NOTE **-** **It is not possible to update from older LibreELEC or OpenELEC imx6.arm images to LE 10.0 as the boot configuration for LE 10.0 is different and older kernels do not support zstd compression. If you attempt an upgrade the boot configuration of the old installation will be broken. You are advised to clean install LE 10.0 and manually restore sources and library DB files. Backups can be taken and restored, but as there is now a long time gap since LE 8.2.5 (and OE 8.0.x) it is best to start over with a clean system. +**NOTE** - **** It is not possible to update from older LibreELEC or OpenELEC imx6.arm images to LE 10.0 as the boot configuration for LE 10.0 is different and older kernels do not support zstd compression. If you attempt an upgrade the boot configuration of the old installation will be broken. You are advised to clean install LE 10.0 and manually restore sources and library DB files. Backups can be taken and restored, but as there is now a long time gap since LE 8.2.5 (and OE 8.0.x) it is best to start over with a clean system. From 9f38c142b53d04975ad9ecb97fb91777fa235f58 Mon Sep 17 00:00:00 2001 From: CvH Date: Sun, 6 Feb 2022 17:25:09 +0000 Subject: [PATCH 48/63] GitBook: [#76] No subject --- SUMMARY.md | 1 + development-1/building-windows-wsl.md | 48 +++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 development-1/building-windows-wsl.md diff --git a/SUMMARY.md b/SUMMARY.md index 749c143..7ec09e3 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -55,6 +55,7 @@ * [Building (Basics)](development-1/build-basics.md) * [Building (Advanced)](development-1/build-advanced.md) +* [Building (Windows WSL)](development-1/building-windows-wsl.md) * [Beginners Guide to Git](development-1/git-tutorial.md) * [Build Commands](development-1/build-commands/README.md) * [Build Commands LE 11.0.x](development-1/build-commands/build-commands-le-11.0.x.md) diff --git a/development-1/building-windows-wsl.md b/development-1/building-windows-wsl.md new file mode 100644 index 0000000..2766cc7 --- /dev/null +++ b/development-1/building-windows-wsl.md @@ -0,0 +1,48 @@ +# Building (Windows WSL) + +## Requirements + +* Windows 10 or Windows 11 with installed WSL2 and Ubuntu WSL + +## Workarounds to make it work + +#### WSL adds Windows paths to the Linux path variable + +``` +wsl@PC:~$ echo $PATH +/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/snap/bin +``` + +This breaks the build and leads to unpredictable problems. + +To disable that behavior you need to create a file at your Ubuntu WSL `/etc/wsl.conf` and add these options to disable. Afterwards you need to reboot WSL or your system. + +``` + [interop] + enabled=false # enable launch of Windows binaries + appendWindowsPath=false # append Windows path to $PATH variable +``` + +#### Building at the native NTFS formatted storage (C:/; D:/ ...) is dead slow + +To interoperate with your Windows Desktop you want the git tree accessible from Windows.\ +So you clone the Git Tree to a location at windows and try to use it at WSL. + +For this example the Git Tree is cloned at `D:\WSL\LE` - `/mnt/d/WSL/LE`. \ +If you start building the build folder would be located at `D:\WSL\LE\build.YOURPROJECT` . + +To change the path for the build files you need to add some options to the LibreELEC options file `/home/YOURUSER/.libreelec/options` . + +``` +BUILD_DIR=/home/YOURUSER/LEbuild +``` + +After adding this line to the options file every build is now located at this folder. + +The /home folder is located at the WSL ext4.vhdx and not at the native NTFS storage. + +#### Optional: Move your WSL file to another location + +There are several ways in moving your WSL file, the easiest solution is the dedicated tool [LxRunOffline](https://github.com/DDoSolitary/LxRunOffline#install) . The version 3.5.0 is not supporting the current Windows Version so you need to use a more recent version or a development build. + +`lxrunoffline move -n Ubuntu-20.04 -d d:\wsl` From 2861cc24fa66470307e5f25a82ddf8ca6ddf285d Mon Sep 17 00:00:00 2001 From: CvH Date: Sun, 20 Feb 2022 21:11:03 +0000 Subject: [PATCH 49/63] GitBook: [#77] No subject --- .gitbook/assets/image (4) (1).png | Bin 0 -> 13892 bytes .gitbook/assets/image (4).png | Bin 13892 -> 181393 bytes .gitbook/assets/wsl-website.png | Bin 0 -> 243650 bytes SUMMARY.md | 1 + development-1/release-management.md | 2 +- development-1/website.md | 51 ++++++++++++++++++++++++++++ 6 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 .gitbook/assets/image (4) (1).png create mode 100644 .gitbook/assets/wsl-website.png create mode 100644 development-1/website.md diff --git a/.gitbook/assets/image (4) (1).png b/.gitbook/assets/image (4) (1).png new file mode 100644 index 0000000000000000000000000000000000000000..96b024d950c4224911e732c1ea573709e5ab15f9 GIT binary patch literal 13892 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png index 96b024d950c4224911e732c1ea573709e5ab15f9..df5908bd1e913aa1358576780b02ad37184f6246 100644 GIT binary patch literal 181393 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

IdHL2kT_|b-2($;#Q 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