Fedora 20: HTPC Build Notes

So, this was quite a bit more frustrating than I had anticipated.  The end goal was to have a silent HTPC with a ton of storage.  I am watercooling to keep it super quiet.  I also wanted it to be budget-ish. The actual build went well (after some initial troubles with a DOA PSU and some faulty water cooling fittings).  The OS setup is where I ran into issues interestingly enough.

This post will discuss the various issues I ran into and their solutions. The build features the hardware:

Motherboard: Gigabyte GA-F2A88XN-WIFI
APU: AMD A10-6800k 4.1 GHz (4.4 GHz Turbo) w/ AMD Radeon HD 8670D
RAM: 8GB Corsair Dominator Platinum 2133 MHz
PSU: Seasonic 460W Platinum Fanless
SSD: Kingston SSDNow 60GB
HDD: 2x Toshiba 7200RPM 3TB 
ODD: Samsung DVD RW Slim
OS: Fedora 20 64-bit

The APU has the integrated graphics that are more than strong enough for HD video playback.  The motherboard features a built-in wifi chip (802.11 ac) so that I do not need to run cables.

Now onto the actual post:

PWM Fan/Pump Control

The benefit of PWM is that your motherboard can adjust the speed of your components in order to achieve optimal quietness and performance based on the temperature of your system.  The problem was that the system was not reporting any of the temperatures nor did it find the pwm outputs.

First the installation

su -c "yum install lm_sensors"

Now to get the system working correctly

In a file /etc/modprobe.d/lm_sensors.conf

options it87 force_id=0x8728

The run as root:

modprobe it87
service fancontrol restart

Now run the command  sensors and get the correct output:

it8728-isa-0228
Adapter: ISA adapter
in0:          +0.88 V  (min =  +0.00 V, max =  +3.06 V)
in1:          +1.52 V  (min =  +0.00 V, max =  +3.06 V)
in2:          +2.03 V  (min =  +0.00 V, max =  +3.06 V)
in3:          +1.99 V  (min =  +0.00 V, max =  +3.06 V)
in4:          +2.03 V  (min =  +0.00 V, max =  +3.06 V)
in5:          +2.23 V  (min =  +0.00 V, max =  +3.06 V)
in6:          +2.23 V  (min =  +0.00 V, max =  +3.06 V)
3VSB:         +3.31 V  (min =  +0.00 V, max =  +6.12 V)
Vbat:         +2.93 V  
fan1:        4787 RPM  (min =    0 RPM)
fan2:        1591 RPM  (min =    0 RPM)
fan3:           0 RPM  (min =    0 RPM)
fan4:           0 RPM  (min =    0 RPM)
fan5:           0 RPM  (min =    0 RPM)
temp1:        +41.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp2:         -8.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp3:        +21.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = Intel PECI
intrusion0:  ALARM

Great! Now we can run pwmconfig  and set the pwm curves!

Now, we need to have the module loaded and fancontrol started on boot.  While normally I’d use the modprobe modules to load on startup configuration, this did not work because not all system resources were available yet to correctly load the module.  Therefore, I did the easy way and used the rc.local service.

First enable the service

ln -s /usr/lib/systemd/system/rc-local.service /etc/systemd/system

Now create the file /etc/rc.d/rc.local as root and add the following

#!/bin/bash

modprobe it87
service fancontrol restart

exit 0

And finally make it executable:

su -c "chmod +x /etc/rc.d/rc.local"

When the OS boots, all my fans move to the appropriate speeds!

Media Drives

There really wasn’t too much of an issue here, but I am adding this section for completion.  The main thing here was getting the drive formatted correctly, mounted, and setup ACL so that my non-root user could have RW access by default, as well as, have new files created with appropriate group permissions.

For the 3TB drives, I chose to go with an XFS filesystem.  The reason for this is that it does not have a hard limit on the filesize like other filesystems do and it also is optimized for working with large files. Since I plan on loading this baby up with 1080p video, large file support was definitely the biggest concern. I simply used GParted to format my drive.

NOTE: The msdos  partition table can not be used for this drive when creating a single partition as it is 3TB capacity and msdos has a strict max of 2TB. Instead a linux or other partition table could be used…I ended up using the gpd table.

In order to mount the drive to a location on startup, an entry in fstab must be created.  First, lookup the information on your partition before closing gparted and copy the UUID field. Now run the following as root:

echo "UUID=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx /path/to/mount/point xfs defaults 0 0" >> /etc/fstab

This is done for each drive.

Now, to setup the permissions:

cd /path/to/mount/point/..
chgrp -R media /mount/point
chmod g+srwx /mount/point
setfacl -m g:media:rwx /mount/point

So, all files get created under the media group. All members of media group will have access to the drive and can read, write, and execute. Now just make sure the user has been added to the group.

 Google Chrome

While not imperative to the operation of the machine, I prefer to use Google Chrome as my web browser.  That being said, for whatever reason, the download install off the site does not always work. However, there is a yum repo that can be installed that gives failproof results!

First, as root, create a file /etc/yum.repos.d/google-chrome.repo and add to it:

[google-chrome]
name=google-chrome - 64-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

Note: if you are using a 32-bit version, then you will want to use  http://dl.google.com/linux/chrome/rpm/stable/i386 as the baseurl parameter.

Now simply run:

su -c "yum install google-chrome-stable"

And you should be good to go!

XBMC Installation

So, you can do the download and build the source route or take the much easier route and use the good ol rpmfusion repos. These can be installed easily thru the following command:

su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'

Now, simply install xbmc

su -c "yum install xbmc"

And it is ready to go!

However, if you intend to use this as just an HTPC as I am, you may want to automatically start XBMC on startup so that this is all the user sees. In order to do this, we can leverage the autostart directory in GNOME3 config.

Open the file /home/username/.config/autostart/xbmc.desktop as the user that will be running XBMC and enter the following:

[Desktop Entry]
Type=Application
Exec=xbmc -d 3 –standalone -fs
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_En]=xbmc
Name=xbmc
Comment[en_En]=Media Center
Comment=Media Center

This will tell GNOME3 to start xbmc in standalone mode, after a 3 second delay after the user has logged in.  You will need to reboot for the change to take effect, of course.

HDMI Audio

The HDMI audio drivers were all available, the sound settings had the device as the default, audio mixers showed output going to the device, however, I had no sound through my HDMI cable.

After doing some research, there was apparently a bug with the opensource Radeon drivers that caused a black screen problem with Fedora, so a lot of the Radeon features ended up getting disabled by default…go figure.

Getting to this realization took reading through quite a few forums, looking into system configs, failing miserably, trying the solution to no avail only because of a typeo, and finally solving the problem.

First of all, do not try to install the AMD Catalyst drivers on Fedora 20 right now.  Fedora does some experimental things with wayland and you will get the black screen and have to boot runlevel 3 and uninstall these drivers in order to restore your system. It may be possible to hack on the driver code in order to get it to work, but honestly, when you see the solution, you will not want to go through the trouble.

Remember I said that the Radeon options got disabled? Well audio output (from the APU specifically) is one of those options that got disabled. So, we can simply add it via a boot option in our grub config.

As root, open up /etc/default/grub and location the option  GRUB_CMDLINE_LINUX . It should get a string of space-separated options.  At the end, there will likely be an option quiet  . Just before that, add the option  radeon.audio=1 .

For example, my line looks like:

GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/rhcrashkernel-param || :) rhgb radeon.audio=1 quiet

Now, we simply commit our config

grub2-mkconfig -o /boot/grub2/grub.cfg

And then reboot the system.  Your HDMI audio from your Radeon chip should now work!

Conclusions

Like I said, this ended up taking way longer than I felt it should have, but I am through it and am really happy with the performance of this machine.  I hope that someone may stumble upon this post that may encounter some of these issues and be able to remedy them quicker than I did.

As always, please feel free to comment or ask questions.

 Maintenance and Updates

As I have been using the system, I have made a couple changes that I felt were relevant to add to this original blog post.

Plex + Plex Home Theatre Instead of XMBC

After some system update, the XMBC libs decided to commit suicide any time I tried to play any video not in AVI format. Since my videos are mostly MKV copies from DVDs that I own, this posed quite a bit of a problem. The interesting part was that the native video player (Totem) played the videos of all formats with no issue at all. Pretty much isolated to the XBMC. It looked like the problem could have been resolved by recompiling XBMC by hand with special flags to disable the use of some libraries (Intel and nVidia specifics I think). I am still puzzled as to why there would be no problem for awhile and then one suddenly creeped up, since I did not update XBMC.

Anyway, due to this frustration, I decided to go ahead and setup a Plex server and run Plex Home Theatre (really a skinned XBMC) and have had no issues since. Plex also gives me the added benefit of being able to remotely access my library, so I can watch any of my movies and TV shows from anywhere I’d like, pretty slick, eh? The Home Theatre app gives me that nice UI for the living room as well.

Plex Media Server Setup

The media server is the meat of the software involved.  This is a backend process that runs on your system which basically inventories and serves your content.  Setup is as simple as downloading the rpm in my case from https://plex.tv/downloads and then installing it.  After that a quick start and enable from the service, you will have it up and running in no time (run as root).

systemctl start plexmediaserver.service
systemctl enable plexmediaserver.service

You will need to create an account on the plex.tv website and bind your server to that account via the setup wizard on the web app located at your IP address, port 34200, with the web context. For example, if your IP address was 192.168.1.123, then your URL would be:  http://192.168.1.123:34200/web. After going through the wizard, you are set!

You can alternatively, add a yum repo and do a simple yum install.  The yum repo file should be:

[PlexRepo]
name=PlexRepo
baseurl=http://plex.r.worldssl.net/PlexMediaServer/fedora-repo/release/$basearch/
enabled=1
gpgkey=https://plexapp.com/plex_pub_key.pub
gpgcheck=1
 Plex Home Theatre Setup

You can build it yourself or do what I did and add the yum repo and just yum install it.  The repo file is as follows:

[PlexHTRepo]
name=PlexHTRepo
baseurl=http://repo.markwalker.dk/plexht/fc20/$basearch/
enabled=1
gpgcheck=0

After installing, you can have it run on startup similar to how we configured XBMC originally. I added the file /home/username/.config/autostart/plex.desktop with the following content:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Plex Home Theater
Name[en_US]=Plex Home Theater
Exec=/usr/bin/env XBMC_HOME=/opt/plexhometheater/share/XBMC /opt/plexhometheater/bin/plexhometheater -d 5
Icon=/usr/share/pixmaps/plexhometheater.png
Comment[en_US]=Plex Home Theater
StartupNotify=true
Categories=AudioVideo

I then removed the xbmc.desktop file that I had before so that they both didn’t startup.  A simple reboot, and we are running!

Kernel Panic FTL

I am writing this update on July 14th, 2014. About a month ago I applied some system updates (typical yum update) and I started getting Kernel Panics rather frequently, which were quite frustrating to say the least. My observations were as follows:

  • They never occurred if I did not log in
  • Occurrences were somewhat unpredictable, however, usually seemed to occur when the system was idling
  • The log info seemed to point to some video error

I did some research and found that there were some options that have helped others with similar issues (seemed specific to AMD based systems) that helped keep Kernel Panic away.

Basically, there we just need to add the options  iommu=memmaper iommu=soft vga=normal vesa=0 to the GRUB_CMDLINE_LINUX option in the /etc/default/grub file, similar to the option we added in the HDMI Audio setup. After adding these, there have been no Kernel Panics!

SSHD

As time progressed, there became more and more of a need for me to remote into the machine from another.

  • My other computers have DVD readers that are way faster and can clone discs way faster, so I needed a good way to transfer content around my home network
  • My girlfriend was watching TV and I didn’t feel like moving the computer from room to room to do the above or do software updates
  • I think of something I want to do and can log in and perform the action without moving rooms, yeah, that lazy 😛

So, I enabled sshd and voila, we are good to go:

systemctl start sshd
systemctl enable sshd

done and happy

Share on Facebook+1Share on Twitter Share
Posted in Programming, Uncategorized Tagged with: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
5 comments on “Fedora 20: HTPC Build Notes
  1. Dan says:

    God, you just saved me days of my life. I have almost the exact setup. Major karma going your way.

  2. Dan says:

    Oh, and a quick typo in your post: your /etc/rc.d/rc.local sample file says “modprob” where it should say “modprobe”. Don’t want to throw off any copy-and-pasters in the audience.

1 Pings/Trackbacks for "Fedora 20: HTPC Build Notes"
  1. … [Trackback]

    […] Read More Infos here: blog.jyore.com/?p=265 […]

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">