A computer as a home media center
Recently (which in the meantime is one year ago) I helped to set up a new computer, and shortly after we asked ourselves, what to do with the old one.
The old computer is a Toshiba Satellite C660, according to some websites it was released in 2010, which means that it has been used at least for 10 years.
It came with Windows 7 preinstalled and was updated to Windows 10. It got replaced because it was extremely slow at every operation, even idling.
After taking dust for a couple of months in a box, I decided to play with it and create a home theatre and backup service.
If your PC happens to be a Raspberry, there are a lot of already packaged solutions that require little to no configuration.
For example, just download LibreELEC, flash it on the SD card, insert it into the Raspberry, and connect the Raspberry with an HDMI cable to the TV.
With the TV remote it is possible to control the whole UI thanks to CEC.
Librelec is indeed a minimal system.
If you plan to do something else (it is a computer after all!), LibreELEC and similar systems might not be enough.
The good thing is that on a PC, contrary to smart devices, you can nearly do anything you want.
No need to root or hack it, just install the operating system or programs you like.
Unfortunately, contrary to the Raspberry, I did not find a preconfigured solution similar to LibreElec.
For experimenting, I choose to stick with Debian.
I’ve downloaded the ISO from cdimage, flashed it on a USB stick, and booted the PC from it.
During the installation process, I avoided setting a root password (this way
sudo is automatically enabled, and the root user is disabled), configured a user called
toshiba (not very creative), and avoided installing a graphical environment (remember, I want a minimal system).
I’ve just installed ssh as it makes it easier to configure the PC.
vim ~/.ssh/config # add values for the new machine, for example, the username ssh-keygen # reply to questions ssh-copy-id toshiba
Now I can log on to the machine with just
ssh toshiba, without needing to type the password or the name of the user/machine.
This is pretty much straightforward
sudo aptitude install kodi;
You might want to install additional packages like
kodi-pvr-iptvsimple, and so on. Just do
aptitude search kodi and see what packages are available and what might look interesting.
After installing Kodi, as the PC will be connected to a TV most of the time, it would make sense to log in automatically and start-up Kodi immediately.
lightdm is a standalone login manager, and can be configured easily to accomplish both tasks.
Also for making the system a little more secure, it makes sense to create a separate Kodi user.
Execute as an administrator following commands
# add group for graphical login without password, see https://wiki.debian.org/DebianDesktopHowTo for details addgroup --system nopasswdlogin; if ! grep --quiet --fixed-strings nopasswdlogin /etc/pam.d/lightdm; then :; sed -i '/^@include common-auth/i auth sufficient pam_succeed_if.so user ingroup nopasswdlogin\n' /etc/pam.d/lightdm; fi # add restricted user kodi adduser --disabled-password --comment "" kodi; usermod -a -G cdrom,video,plugdev,users,dialout,dip,input,netdev,nopasswdlogin kodi; # add autologin with kodi program printf '[Seat:*] # autologin user kodi by default autologin-user=kodi autologin-session=kodi user-session=kodi # show user list, remove the need to type name in case of logout greeter-hide-users=false ' > /etc/lightdm/lightdm.conf.d/99-home-theatre.conf;
And that’s it.
Reboot the PC and it will start Kodi automatically.
Except that contrary to the Raspberry, you will not be able to control it with the TV remote. It does not matter how hard I search, there is no PC on the market that supports CEC (the hardware is simply missing).
If you happen to have a PC that does support CEC (please contact me in that case, I was not able to find anything) or a dongle like the CEC adapter of pulse-eight (currently the adapter I was able to find), then CEC will work out of the box.
It might make sense to install the package
cec-utils, but it seems to be optional.
Also, Kodi has no GUI for managing the network (especially WiFi), and Bluetooth devices. LibreElec has preinstalled some addons done directly by the team for adding those functionalities.
If your PC can be connected with an ethernet cable, it should be the preferred solution, as it works out-of-the-box.
Otherwise, it is possible to configure the Wi-Fi manually by adding a configuration file under
An alternative is to use an interactive program from the command line.
Network Manager has also a command line interface (
nmtui) available after
sudo aptitude install network-manager.
This is probably more user-friendly if there are multiple networks, or if the PC might need to change from one network to the other because it is moved from one location to another.
As a Bluetooth manager, one can use
bluetoothcl from the command line, or install blueman as a lightweight graphical alternative.
From Kodi, it is possible to execute external programs, for example with the Advanced Emulator Launcher plugins
There are multiple reasons you might want to execute something else, it could be
execute a native game
a browser instance pointed to www.netflix.com (as there are no native and official clients for GNU/Linux systems)
a graphical Wi-Fi/Bluetooth manager
or something else entirely
By executing some programs, I’ve encountered at least a couple of issues.
The first is that with some programs, after closing them, the keyboard did not work anymore in Kodi. I had to log out and log in again.
The second one is that some programs have difficulties determining the screen size. Thus even if executed as full-screen programs, they won’t be.
The third is that the is no close button (for those programs that are not fullscreen).
Adding a window manager solved all those issues. Openbox is pretty minimal and can be configured, so it seems a good fit.
There are surely others that are as good, maybe even better.
# install openbox apt install openbox # configure it to start Kodi automatically sudo -u kodi sh -c 'mkdir -p ~/.config/openbox/; printf "kodi --fs --standalone\nopenbox --exit\n">~/.config/openbox/autostart' # add autologin with Openbox program instead of starting Kodi directly printf '[Seat:*] # autologin kodi with openbox by default autologin-user=kodi autologin-session=openbox user-session=openbox # show user list, remove the need to type name in case of logout greeter-hide-users=false ' > /etc/lightdm/lightdm.conf.d/99-home-theatre.conf;
Thus instead of executing Kodi directly from the login manager, Openbox is started. Openbox will then execute Kodi on startup, and exit after Kodi is closed.
With those changes
Applications do not have any more issues determining the size of the monitor, and full-screen programs are actually fullscreen
there is a close button for every non-full-screen program
never had an issue with the keyboard anymore
What happens when the lid of a laptop is closed?
Even if connected to an external monitor, it puts the machine on standby, at least this was my case.
This can be changed by adding the following command
# from https://wiki.debian.org/SystemdSuspendSedation printf '[Login] HandleLidSwitch=ignore HandleLidSwitchDocked=ignore HandleLidSwitchExternalPower=ignore ' > /etc/systemd/logind.conf.d/99-disable-suspend.conf;
If you want to disable suspend and hibernation completely, you should also add the following lines
AllowSuspend=no AllowHibernation=no AllowSuspendThenHibernate=no AllowHybridSleep=no
While the instructions for setting up a minimal home theatre are short, I was a little bit unlucky, as I had several issues with the hardware, which means it took me much more time than expected (multiple days), to settings up the system.
Maybe using another operating system would have helped, but maybe not.
At first, I thought how lucky I was that the machine had an ethernet port. Just attach the cable and no need to think about Wi-Fi.
Unfortunately, it turned out that the ethernet port disappeared every second boot. I do not know if this is a software or hardware issue but using the network card (which worked out of the box) solved the issue.
I also had issues with the monitor.
Even if standby was disabled, starting the PC with a closed lid did not send the video signal through HDMI, except once. I was never able to reproduce it.
The laptop has an Nvidia card, and the correct packages are currently unavailable, the main reason is unsolved security issues. The open-source driver seems to work well enough, but not so much when using both monitors at the same time. After trying (and failing) to install the official Nvidia package, I decided to keep the open-source variant, as normally I am going to use only one monitor (the external one).
I solved the monitor issue by turning off the internal monitor and activating the monitor attached via HDMI. As the values are hardcoded, it does not make my solution portable between TVs and devices, but it is also true that it is attached to only one and I have no intention to move it.
~/.config/openbox/autostart file currently looks like
xrandr --output LVDS-1 --off xrandr --output HDMI-1 --mode 1920x1080 kodi --fs --standalone openbox --exit
xrandr is packaged in
Note that it also works correctly if the machine starts while the TV is turned off, and turned on after the boot is completed.
From Kodi, it is possible to configure after how much time the monitor should be turned off. But even if you disable all screensaver settings, the monitor will turn itself off after a given period of "inactivity".
xset s off -dpms it is possible to disable the screensaver and DPMS (Energy Star) features.
If using a window manager, it should be trivial to add such a command after logging in, for example with Openbox it can be added in
But an even better approach would be to start the X server with those features disabled, this can be done for example in
lightdm, by adding
[Seat:*] # keep the screen on all the time xserver-command=X -s 0 -dpms
to the other (for example autologin) options.
At last, I also had an issue with the audio. It did not matter how loud I turned the volume in Kodi, no sound came out of the machine.
It turns out that with some audio cards, the audio is muted (unfortunately I cannot find the reference anymore).
alsamixer (from the package
alsa-utils) I unmuted the audio, and the issue did not reappear anymore.
Because of reasons, I’ve switched from alsa to pulseaudio.
For Kodi this is not an issue, there is a graphical interface for configuring the output device.
But if you are starting other programs from Kodi, those will not necessarily use the same output device.
Thus I wanted to set the default audio device globally.
pacmd list-sinks | grep -e 'name:' -e 'index:' it is possible to list the output devices; in my case, the output looked like
index: 0 name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra3> index: 1 * name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
Since I want, by default, to output everything over HDMI, I created the configuration file
Even if has been harder than thought, the "old" PC is still in use.
While experimenting I put more focus on Video files, but Kodi offers a very decent interface for also handling music files and pictures.
The machine is even more than powerful enough for handling other jobs, installing a minimal system can really revive old hardware.
It could be used for automating tasks, like creating backups of content over the network, sharing files, and downloading (or uploading) data…
Do you want to share your opinion? Or is there an error, some parts that are not clear enough?
You can contact me anytime.