20 December 2014

Amazon Fire TV as a XBMC MythTV Frontend

Amazon FireTV + XBMC + MythTV

I am quite pleased with using the Amazon FireTV as my MythTV Frontend using Kodi(was XMBC) and the myth plugin. Here are my overall views on the FireTV.

Pros:
  • Wireless Streaming works well across the 5GHz band (YMMV)
  • Quad Core in Fire TV can decode MPEG2 video without a stutter
  • One streaming box to do Amazon Prime, Netflix, and MythTV
  • HDMI CEC can turn on the TV
  • Amazon Prime streaming starts instantly

Cons:
  • XBMC 14 release candidate seems to be unstable on the box, changing recordings causes it to crash
  • Cannot launch XBMC from the Fire TV home screen (must used buried application menu or FiredTV launcher that works most of the time)
  • No power-off function (must wait for it to time-out)


Other Thoughts/TBD:
  • PLEX works well with streaming CBS and CW shows as well as many others


Setup:
  1. Download Kodi and FiredTV
  2. Enable ADB on Fire TV
    1. Settings
    2. Developer Options
    3. ADB -> On
  3. Determine IP Address of Fire TV
    1. Settings
    2. About
    3. Network
  4. Install ADB on your computer
    • apt-get install android-tools-adb
  5. Start the adb connection
    1. adb kill-server
    2. adb connect <ip-address>
  6. Install the 2 apks
    1. adb install path/kodi.apk
    2. adb install path/firedtv.apk

Xubuntu adb sideload Lollipop onto Nexus 5

As I was tired of waiting on the OTA to download directly to my phone, I decided to sideload it myself. Luckily, sideloading does not require root or an unlocked bootloader.

I followed this guide by Droid Life, but had to preface all adb commands with sudo as I was running it from my linux box. http://www.droid-life.com/2013/02/12/guide-how-to-use-adb-sideload-to-update-a-nexus-without-root-or-custom-recovery/


Fixing Tab in Xubuntu 14.04

One thing that was really annoying me was that on my Xubuntu 14.04 server, tab would switch windows by itself without holding alt. This was messing up my tab completion and putting tabs in files when using one of my VNC sessions.

After a bit of googling, I came across this forum which had other users experiencing the same problem: http://ubuntuforums.org/archive/index.php/t-1771058.html

The solution was simple.
  1. Edit this file: ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml
  2. Find this line:
  3. Change it to this:
  4. Restart any session including VNC ones

13 October 2014

Hiding partitions in Xubuntu 14.04

Hiding partitions in Xubuntu 14.04


After installing Xubuntu 14.04 LTS, it put an sda1 icon on my desktop, which was my boot drive, and I did not want it to keep showing up. Here are the steps that I went thru to prevent it.


1. Create or edit the udev rules:
sudo vi /etc/udev/rules.d/99-hide-disks.rules

2. Add the following lines where sda1 is the drive you want to hide:
KERNEL=="sda1", ENV{UDISKS_PRESENTATION_HIDE}="1"
KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"

3. Then reboot the system.

21 September 2014

Update to VNC: tightvncserver instability

Update to http://zmodemz.blogspot.com/2010/03/ubuntu-vnc.html


tightvncserver was crashing on me when doing simple things like opening file manager. I was getting the following error:


/var/log/syslog
Sep 14 00:21:45 servername kernel: [440445.907880] Xtightvnc[12447]: segfault at 7fffaf355000 ip 0000000000448a2e sp 00007fffaf352c80 error 6 in Xtightvnc[400000+178000]


Turns out that the instability is just in this version of tightvncserver, should be fixed in 1.3.10. So for the time being, I swapped out tightvncserver for vnc4server. The commands are identical as far as I can tell, so the switch was easy.


Software Versions:
Xubuntu 14.04.1 LTS (Trusty Tahr)
tightvncserver 1.3.9
vnc4server 4.1.1

20 September 2014

MythTV 0.27 backend setup

As I wanted my new server to act as a DVR, I decided to go with MythTV as my backend.

Install MythTV (server only, I will have separate frontends):


  1. Install htdigest (for password protecting MythWeb):
    • sudo apt-get install apache2-utils
  2. Install mythtv-backend-master (and all dependencies)
    • sudo apt-get install mythtv-backend-master
    • Answered yes to password protect MythWeb
    • Told it that MythWeb would not be the only thing running on Apache
    • Told it other computers would be connecting to it (remote frontends)
  3. Ran mythtv-setup
    1. Changed database password to match the one in /etc/mythtv/config.xml
    2. Changed it to listen on 192.168.1.XXX instead of 127.0.0.1
    3. Also change the backend ip to the same (learned this the hard way)
    4. Added my HDHomeRun Dual tuner (must do twice once as tuner 0, second as tuner 1)
    5. Created an OverAir video group (use EIT)
    6. Put both tuners in this group
    7. Scanned for channels
  4. Enable remote connections in mysql (learned this the hard way):
    1.  Change the bind-address in /etc/mysql/my.conf
      • bind-address            = 192.168.1.XXX
    2. Restart mysql
      • sudo service mysql restart

Software Versions:
Xubuntu 14.04.1 LTS (Trusty Tahr)
MythTV 0.27

Troubleshooting:



Make sure MythWeb password protection is on. In /etc/apache2/sites-enabled/mythweb.conf the following lines should be un-commented:
        AuthType           Digest
        AuthName           "MythTV"
        AuthUserFile       /var/www/htdigest
        Require            valid-user
        BrowserMatch       "MSIE"      AuthDigestEnableQueryStringHack=On
        Order              allow,deny
        Satisfy            any


Restart apache: sudo service apache2 restart
For more info see: http://www.mythtv.org/wiki/Securing_MythWeb



Error: "mythtv cannot connect to database":

My remote frontend was unable to connect to my backend mysql database until I changed /etc/mysql/my.cnf to allow remote connections by changing bind-address from 127.0.0.1 to 192.168.1.XXX (server ip)



Mythfilldatabase returning an error about no version response, really slow backend connections, and constant backend crashes:

Turns out that when changing the ip to listen on from 127.0.0.1 to 192.168.1.XXX, you HAVE to make sure to also change the backend ip from 127.0.0.1 to 192.168.1.XXX





10 September 2014

ZFS: quota, compression, and encryption

Here is how I used ZFS to setup my storage drive.


Initial setup:

Get the ZFS package:
    sudo apt-get install zfs-fuse

Find your drives:
    ls /dev/disk/by-id/

Create the array:
    sudo zpool create storage mirror /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-SERIAL#1 /dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-SERIAL#2

Check pool status:
    sudo zpool status



Quota:

Create a new zfs container:
    sudo zfs create storage/mythtv

Set the storage limit (quota):
    sudo zfs set quota=1T storage/mythtv


Compression:

Create a new zfs container:
    sudo zfs create -o compression=on storage/.encrypted

Or to turn on compression on an existing container:
    sudo zfs set compression=on storage/.encrypted

Check CompressRatio:
    sudo zfs get all storage/encrypted | grep compressratio


Encryption:

Since Linux ZFS does not support the encryption option (as of 2014-09), there are 2 options. The first is to place the encryption below the ZFS layer using LUKS, and the second is to encrypt on top of the ZFS layer using a file based encryption. I have chosen to use the latter because I have heard that ZFS data reliability works better if it is the layer closest to the hardware.

Get the encryption package:
    sudo apt-get install ecryptfs-utils

Create a mount point and start the encryption process:
    sudo mkdir /storage/encrypted
    sudo mount -t ecryptfs /storage/encrypted /storage/encrypted

Follow the prompts. I chose AES, 32 bytes (256 bit), and yes to encrypt the filenames.

Save settings to be able to mount later:
    cat /etc/mtab | grep ecryptfs

Add results from above to /etc/fstab and add the options noauto (to prevent mounting at boot) and ecryptfs_passthrough=n (not sure why this is not on the mtab entry)

Example /etc/fstab entry:
    /storage/.encrypted /storage/encrypted ecryptfs noauto,rw,ecryptfs_sig=12a34b567c8de9ff,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_fnek_sig=12a34b567c8de9ff,ecryptfs_unlink_sigs,ecryptfs_passthrough=n 0 0

Unmount:
    sudo umount /storage/encrypted


Mount:
    sudo mount /storage/encrypted

Encryption Update (2014-09-26):

Enabling Filename Encryption in ecryptfs lowers your maximum filename from 255 characters to 143 characters.
See: https://bugs.launchpad.net/ecryptfs/+bug/344878