Notes for updating LibreElec to a new version

LibreElec has been my home media center (currently running on a modest Orange Pi PC) for many years now. Every now and then I need to update to the latest version, which involves a fresh SD card and some bit of configuration. The following is just some notes to myself (maybe it will help you also?)
Currently updating my system from LibreElec 10 to 11.

YouTube Setup

This involves setting up the YouTube Data Api and some keys (5 of them!). A bit laborious without copy-paste (todo: is there an easier way?)
Here is a link to a walk-through that helped me (2023)

Note: they did omit the step where you have to “publish” the app on google cloud account, it doesn’t work it it’s just set to “testing”.

Other Addons (my favourites)

  • TVO*currently not working, requires an updated version from the repository?
  • TVO Kids
  • Red Bull TV
  • Crackle TV
  • Nasa TV

Additional Repositories

Not everything is available in the Kodi default repo. Installing addons like Netflix and Showmax require an extra step

Example walk-through for Netflix:

Samba and SSH

To do any serious configuration (see below), the media center needs at minimum a static ip set up, and additionally I like to set the firewall and samba file sharing (handy for accessing media files over the network).

Remote Control setup:

My Orange Pi PC comes with an IR receiver, which is pretty easy to configure in LibreElec. I have an old DVD player remote which I use for this. Nowadays I just have to copy the config file over to the new installation and set it with one command (over ssh):

Here is the link to the docs for setting up a new remote:


LibreElec is able to run Docker containers in the background which gives it a whole additional functionality. The three containers I always install first are Portainer for managing containers, Pi-Hole for network-wide ad blocking and Transmission torrenting (for downloading large OS images overnight, use with the transmission-remote app in F-Droid store).

Pi-Hole setup instructions (with Portainer): – after installing “Docker” addon and installing Portainer via the command line:

docker volume create portainer_data

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --restart always portainer/portainer

Set up Portainer by using the browser, go to libreelec network ip eg: – assuming static IP is set up already.

The OrangePi PC is pretty low on specs, so it doesn’t handle any massive background services, but there are Docker containers for loads of useful things like ZoneMinder security, Jellyfin media streaming app, Home Assistant home automation and much more.

Other things:

Change the time to correct timezone.

Set the audio source (mine was set to HDMI out by default) settings -> audio, set to ALSA

Add some other addons like TMDB metadata addon (for local file naming and info).

Set media file locations (on HDD) and scan to add metadata (using addon). This applies to music as well as video. Takes a long time (todo: is there a way to copy the old data across?)

Shout out to ChatGPT for making code documentation easy

Just a quick shout out to ChatGPT for helping me with some drudgery in my job. I think this is the best use for it – basically summarising text.

I do have reservations about the skill of ChatGPT and others when it comes to actual coding, having tried ChatGPT, HuggingChat and Claude, as well as Bard and Bing.

That’s it really. Docstrings for Python, JSDoc for JavaScript, etc. Just type something like “Please add c++ documentation for the following function in a class”. Or just “Add documentation here” works fine. If you are in a hurry you can type “docs” and it will most likely get the idea. You follow this up by a paste of your code of course.

Here is a sample of some cool looking documentation I generated recently for a Python helper class – with help from my new coding buddy, ChatGPT.

Don’t forget, always check the output from ChatGPT – it is often horribly wrong, trust me!

The free ChatGPT course was a lot of fun

About a month ago I completed the free course – direct from OpenAI – called “ChatGPT Prompt Engineering for Developers”

This course uses the OpenAI api and helps you create interactive chatbots with a purpose. I promptly started working on a chatbot to take orders for my entertainment company – Big Top Entertainment.

The instructions I gave to the bot included a price list for services and motivation (“you are a customer service agent, make sure to get payment”) and just for fun I included the option to accept chickens as payment. Here is an example conversation with the bot I coded (in Python):

Welcome to Big Top Entertainment Chat Bot, how can I help you?
Enter text: I need some Balloons pls
Assistant: Hi there! Great to hear that you’re interested in our Balloon Twisting service. How many hours of Balloon Twisting would you like to order?
Enter text: 4 hours
Assistant: Awesome! We can definitely arrange that for you. Just to confirm, you’d like to order 4 hours of Balloon Twisting, correct? Also, when would you like to schedule this service?
Enter text: monday
Assistant: Sure thing! Just to clarify, would you like to schedule the Balloon Twisting service for this coming Monday? And what time would you like the service to start?
Enter text: 2pm
Assistant: Great! So, to confirm, you’d like to schedule 4 hours of Balloon Twisting starting at 2pm this coming Monday. Is that correct?
Enter text: yes
Assistant: Perfect! I have you down for 4 hours of Balloon Twisting starting at 2pm this coming Monday. Is there anything else you’d like to add to your order? Maybe some Face Painting or Stilt Walking?
Enter text: No thanks
Assistant: No problem at all. Just one last thing, could you please provide me with the address where you’d like the Balloon Twisting service to take place?
Enter text: 4 Bigtop Lane
Assistant: Thank you! We have your order for 4 hours of Balloon Twisting at 4 Bigtop Lane on Monday at 2pm. The total cost for this service will be R1600.00. We accept payment in cash or chickens, with each chicken valued at R100. How would you like to proceed with payment?
Enter text: chickens
Please try again in a second (rate limiting)chickens
Enter text: chickens
Assistant: Great! We accept chickens as payment. Please let us know how many chickens you would like to use to pay for the service.
Enter text: chickens
Assistant: I apologize for the confusion. Could you please let me know how many chickens you would like to use to pay for the service?
Enter text: how many does it cost?
Please try again in a second (rate limiting)
Enter text: how many chickens??
Assistant: I apologize for the confusion. The cost of the Balloon Twisting service is R1600.00. Since each chicken is valued at R100, you would need to provide 16 chickens to cover the cost of the service.
Enter text: OK great here you go 16 chickens
Assistant: Thank you for your payment of 16 chickens. We have received your order for 4 hours of Balloon Twisting at 4 Bigtop Lane on Monday at 2pm. We look forward to providing you with our service. If you have any further questions or concerns, please don’t hesitate to contact us. Have a great day!
Enter text: Thank you!
Assistant: You’re welcome! It was a pleasure doing business with you. Have a great day!
Enter text:


Chat bots are fun to code. Clearly I could have expanded on this with a full web interface, handing off to a payment gateway (chicken farm?) etc but it was enough to get the idea.

I don’t think I will be going further with the paid api after my $5 free trial expires though (actually it’s my second one so far – tip: duckduckgo email aliases are great if two factor isn’t enforced). In further testing I managed to make a booking of 4 months straight (7 days per week) for 20 face painters – which we would never do – and in addition the bot refused to send a truck to collect the chickens (“As an AI Language Model, I am unable to do that…”). It did, however, refuse to take bookings of more than 8 hours per day. I didn’t tell it that, but we wouldn’t take anything longer for sure.

I have already attempted to do the same using huggingchat api but they changed something halfway and I gave up on it for now. Next time I am bored I will have another look, since it’s actually open source and self-hostable.