Showing posts with label mythtv. Show all posts
Showing posts with label mythtv. Show all posts

06 September 2025

Replacing HDHomeRun tuner

Since my HDHomeRun Connect died in a lightning storm possibly due to static build-up. I bought a replacement HDHomeRun Flex Duo as well as a lightning arrester/suppressor with a ground.

Here are the ones that I went with:

  • $109.99 HDHomeRun Flex Duo: Link
  • $17.95 Proxicast Coaxial Lightning Arrester/Suppressor: Link

I had considered the 4 tuner with ATSC 3.0 support, but with the threat of the channels becoming encrypted and the increased price made me go with the duo.


Device Setup

  • Add the lightning arrester/suppressor between the antenna and TV tuner and attach a ground wire
  • Plug in antenna, ethernet, and power into the HDHomeRun
  • Assign the HDHomeRun a static IP in your router
  • Reboot the HDHomeRun
  • Update the firmware: http://hdhomerun.local


Preparing Docker

setup.yml should be a copy of the mythtv docker-compose.yml, but update the image to dheaps/mythbackend:setup and add VNC_PASS=<super_secret_pass> to the environment section. Some key portions are:

  • network_mode: host
    • otherwise mythtv-setup will not be able to detect your HDHomeRun
  • hostname: <your_hostname>
    • otherwise mythtv-setup will use whatever generated hostname docker feeds it
  • environment variable VNC_PASS
    • the password to connect to VNC


Starting Docker

First and most importantly make sure your mythbackend is NOT running. I did this with:

  • docker compose down
  • docker ps

Next is starting the docker containers for mythtv-setup:

  • docker compose --file setup.yml up


Running Setup

Connect vnc to <ip_address>:5900. Then you will get prompted with several questions.

  • Add user to mythtv group? NO
  • Ignore the error and continue? NO
  • Would you like to start the mythtv backend? NO
  • Would you like to run mythfilldatabase? NO

After answering the questions,  I got dumped to the terninal.

On the command line run:

  • mythtv-setup.real

When done with setup exit with ESC and make sure to save changes if prompted. Then close vnc and press ctrl-C on the terninal running the docker container.


Appendix

Troubleshooting

  • mythweb: Unable to connect to 127.0.0.1:6543
    • in setup make sure that under General -> IP v4 address is set to the correct IP

Sources


10 June 2024

r730xd Server Part 3: Software

 I will be using Proxmox Helper Scripts (https://tteck.github.io/Proxmox/ or https://Helper-Scripts.com) to help configure the different LXCs and VMs that I want.


Disable nag screen

As I was tired of having to confirm that I didn't have a subscription, I ripped these commands from Proxmox VE Tools -> Proxmox VE Post Install (https://raw.githubusercontent.com/tteck/Proxmox/main/misc/post-pve-install.sh) and ran on the Shell command line

  • echo "DPkg::Post-Invoke { \"dpkg -V proxmox-widget-toolkit | grep -q '/proxmoxlib\.js$'; if [ \$? -eq 1 ]; then { echo 'Removing subscription nag from UI...'; sed -i '/.*data\.status.*{/{s/\!//;s/active/NoMoreNagging/}' /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js; }; fi\"; };" >/etc/apt/apt.conf.d/no-nag-script
  • apt --reinstall install proxmox-widget-toolkit


Setup Users

My philosophy was to put all actual users in the 1000s and system users in the 2000s
  • user1
    • useradd user1
    • usermod -g users user1
    • adduser user1 user1
    • id user1
  • user2
    • useradd user2
    • usermod -g users user2
    • adduser user2 user2
    • id user2
  • mythtv
    • groupadd -g 2001 mythtv
    • useradd -u 2001 -g 2001 mythtv
  • nginx
    • groupadd -g 2002 nginx
    • useradd -u 2002 -g 2002 nginx
  • edit /etc/subuid and add
    • root:1000:1000
    • root:2000:1000
  • edit /etc/subgid and add
    • root:100:1
    • root:1000:1000
    • root:2000:1000


Import ZFS

  • zpool import storage
  • I decided not to map the drive in Proxmox, but if you wanted to you would do that here
    • proxmox -> Datacenter -> Storage -> Add -> ZFS


Fix Directory/File Permissions

  • /storage/mythtv
    • cd /storage/mythtv
    • ls -al
    • find ./ -user <current owner> -print0 | xargs -0 chown -h mythtv
    • find ./ -group <current group> -print0 | xargs -0 chgrp -h mythtv
  • /storage/containers/mythtv
    • cd /storage/containers/mythtv
    • ls -al
    • find ./ -user <current owner> -print0 | xargs -0 chown -h mythtv
    • find ./ -group <current group> -print0 | xargs -0 chgrp -h mythtv
  • /storage/containers/webserver
    • cd /storage/containers
    • chown -R nginx webserver
    • chgrp -R nginx webserver


Create a Docker LXC

Now I needed a Docker LXC to run my webserver and MythTV

  • bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/docker.sh)"
  • I then edited the config to set a static IP and change the hostname
    • docker -> Network -> net0 -> Edit
    • docker -> DNS -> Hostname -> Edit
  • Add users
    • nas
      • groupadd -g 2000 nas
      • useradd -u 2000 -g 2000 nas
    • mythtv
      • groupadd -g 2001 mythtv
      • useradd -u 2001 -g 2001 mythtv
    • nginx
      • groupadd -g 2002 nginx
      • useradd -u 2002 -g 2002 nginx


MythTV

  • Edit /storage/containers/mythtv/docker-compose.yml
    • Change the User Ids and Groups Ids to 2001
  • Test
    • docker compose up -d
  • If it looks like API port changed from 6544 to 6744, then you need to fix the IPs
  • Check pin and update backend ip
    • apt-get install default-mysql-client
    • mysql -p -h 127.0.0.1 -P 3306 mythconverg
      • select * from settings where value like '%pin%'
      • update settings set data = '192.168.1.31' where data = '192.168.1.11' ;
      • quit;
  • Restart MythTV and Test
    • docker compose down && docker compose up -d
  • This time I put a copy of docker-mythtv.service in /storage/container/mythtv so I can easily copy it to /etc/systemd/system/ in the future
    • make sure to change `docker-compose` to `docker compose`
  • docker compose down
  • systemctl enable docker-mythtv
  • systemctl start docker-mythtv


Webserver

  • Test
    • docker compose up -d
    • docker compose down
  • This time I put a copy of docker-webserver.service, certbot.service, and certbot.timer in /storage/container/webserver/systemd so I can easily copy it to /etc/systemd/system/ in the future
    • make sure to change `docker-compose` to `docker compose`
  • cp certbot.service certbot.timer docker-webserver.server /etc/systemd/system/
  • systemctl enable docker-webserver
  • systemctl start docker-webserver
  • systemctl enable certbot.timer


Create a Debian LXC for File Sharing

  • following:
  • bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/debian.sh)"
  • Add users/groups
    • <container> -> Console
    • user1
      • useradd user1
      • usermod -g users user1
      • adduser user1 user1
      • id user2
    • user2
      • useradd user2
      • usermod -g users user2
      • adduser user2 user2
      • id user2
    • nas
      • groupadd -g 2000 nas
      • useradd nas -u 2000 -g 2000 -m -s /bin/bash
      • adduser nas sudo
      • passwd nas
  • shutdown the container
  • Set a static IP and change the hostname
    • <container> -> Network -> net0 -> Edit
    • <container> -> DNS -> Hostname -> Edit
  • Add more compute/memory (2 cores/1024MB)
    • <container> -> Resources -> Cores -> Edit
    • <container> -> Resources -> Memory -> Edit
  • Add our storage
    • edit /etc/pve/lxc/<container id>.conf
    • add a line for each of your datasets like the below examples:
      • mp0: /storage/folder1/dataset1,mp=/storage/folder1/dataset1
      • mp1: /storage/folder1/dataset2,mp=/storage/folder1/dataset2
      • mp2: /storage/dataset3,mp=/storage/dataset3
  • Map the users
    • Notes
      • /etc/subuid and /etc/subgid need to specify the user starting the lxc container (root)
      • /etc/pve/lxc/<container id>.conf needs to map all ids and not just the ones you want to remap
    • edit /etc/pve/lxc/<container id>.conf add these lines
      • lxc.idmap: u 0 100000 1000
      • lxc.idmap: u 1000 1000 1000
      • lxc.idmap: u 2000 102000 63535
      • lxc.idmap: g 0 100000 100
      • lxc.idmap: g 100 100 1
      • lxc.idmap: g 101 100101 899
      • lxc.idmap: g 1000 1000 1000
      • lxc.idmap: g 2000 102000 63535
  • Change the drive permissions
    • I couldn't get the container to boot with trying to remap root so don't do this step
    • cd /rpool/data/subvol-<container id>-disk-0
    • find ./ -user 100000 -print0 | xargs -0 chown -h 2000
    • find ./ -group 100000 -print0 | xargs -0 chgrp -h 2000
  • Start the container
  • Install cockpit
    • apt install cockpit --no-install-recommends
    • wget https://github.com/45Drives/cockpit-file-sharing/releases/download/v3.3.7/cockpit-file-sharing_3.3.7-1focal_all.deb
    •  wget https://github.com/45Drives/cockpit-navigator/releases/download/v0.5.10/cockpit-navigator_0.5.10-1focal_all.deb
    • wget https://github.com/45Drives/cockpit-identities/releases/download/v0.1.12/cockpit-identities_0.1.12-1focal_all.deb
    • apt install ./*.deb
    • rm *.deb
  • Configure cockpit
    • https://192.168.X.X:9090
    • use nas to login
    • enable administrative access
    • Identities
      • Set a Samba password for each of the users
    • File Sharing
      • Click "Fix Now"
      • Global Settings
        • Toggle Global MacOS Shares
        • Add `allow insecure wide links = yes` to Advanced
        • Apply
      • Add your shares
      • I used the following to ensure all users can access others files in advanced
        • create mask = 0664
        • force create mode = 0664
        • directory mask = 0775
        • force directory mode = 0775
      • I used the following to be able to follow symlinks
        • follow symlinks = yes
        • wide links = yes


Create a Ubuntu VM for VNC and Handbrake

I have read that x264 sees reduced performance with over 6 threads, so I gave the VM 12 virtual cores since I want to be able to process 2 discs at a time.

  • bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/ubuntu2404-vm.sh)"
  • Edit Cloud-Init
    • ubuntu -> Cloud-Init
    • set user/pass
    • set static IP
  • Disable start at boot
    • ubuntu -> Options -> Start at boot -> Edit
    • uncheck and the hit OK
  • Change resources
    • 12 Cores
    • 24 GB of memory (2 GB per core)
    • added 16 GB of storage
  • Console
    • start VM
    • login
  • Enable ssh with password
    • /etc/ssh/sshd_config.d/10_users.conf
      • Match User username
        • PasswordAuthentication yes
    • sudo systemctl restart ssh
  • VNC server
    • sudo apt install tigervnc-standalone-server
  • A window manager and terminal to use inside VNC
    • sudo apt install xfce4 xfce4-terminal
  • Keep proxmox console as text
    • sudo systemctl set-default multi-user.target
  • Start VNC
    • tigervncserver :1 -geometry 1600x900 -depth 24 -localhost no -SecurityTypes VncAuth,TLSVnc -xstartup /usr/bin/startxfce4
  • Add handbrake
    • sudo apt install handbrake libdvd-pkg
    • sudo dpkg-reconfigure libdvd-pkg
  • Set timezone (Added 2024-0620)
    • timedatectl list-timezones
    • sudo timedatectl set-timezone America/New_York
  • Setup samba shares
    • sudo apt install cifs-utils
    • create a file to save samba credentials in (eg smbcredentials)
      • username=username
      • password=password
    • mount the shares
      • sudo mount -t cifs //192.168.1.XX/nas /storage/encrypted/nas -o credentials=/home/<username>/smbcredentials,uid=<username>,gid=users
  • Add qemu agent (added 2024-07-29)
    • sudo apt install qemu-guest-agent
    • sudo systemctl start qemu-guest-agent


Appendix

Error
  •  Failed to run lxc.hook.pre-start for container
    • are your zfs pools mounted?
  • make sure cifs-utils are installed
    • sudo apt install cifs-utils
  • samba files are all owned by root
    • make sure to add the uid and gid to the mount command
Sources

26 May 2024

Dockerize MythTV

To prepare for my new server, I needed to migrate the rest of MythTV including its MySQL database to Docker containers.


Migrate MythTV Backend and MySQL to Docker

  • Edit docker-compose-webserver.service to remove references to mysql.service
    • This step is only necessary if you followed my other guide that dockerized mythweb
    • sudo systemctl daemon-reload
  • Stop and Disable MythTV Backend
    • sudo systemctl stop mythtv-backend
    • sudo systemctl disable mythtv-backend
  • Create directories and set permissions
    • sudo mkdir -p /storage/containers/mythtv/mysql/lib
    • sudo chown -R mysql /storage/containers/mythtv/mysql
    • sudo chgrp -R mysql /storage/containers/mythtv/mysql
  • Dump the current mythconverg database to a file and update the hostname
    • sudo su
    • mysqldump -p<existing root password> mythconverg > mythconverg.mysqldump
    • sed "s/'<old hostname>'/'mythtv-backend'/g" mythconverg.mysqldump > mythconverg.mysqldump.host
    • exit
  • Stop and disable current MySQL instance
    • sudo systemctl stop mysql
    • sudo systemctl disable mysql
  • Identify the needed UIDs and GIDs
    • id mysql && id mythtv
  • Create the docker-compose.yml with just a MySQL section
# Begin docker-compose.yml
version: '3.5'
services:
    mythtv-mysql:
        container_name: 'mythtv-mysql'
        hostname: 'mythtv-mysql'
        user: '<mysql uid>:<mysql gid>'
        image: mysql:latest
        restart: always
        ports:
            - '3306:3306'
        environment:
            - MYSQL_ROOT_PASSWORD=RootSuperSecretPassword
            - MYSQL_USER=mythtv
            - MYSQL_PASSWORD=YourSuperSecretPassword
        volumes:
            - ./mysql/lib:/var/lib/mysql
# End docker-compose.yml
  • Restore the database:
    • sudo docker-compose up --build
    • sudo mysql -p -h 127.0.0.1 -P 3306
      • create database mythconverg ;
      • connect mythconverg ;
      • source mythconverg.mysqldump.host ;
      • grant all privileges on mythconverg to 'mythtv'@'%' ;
      • grant all privileges on mythconverg.* to 'mythtv'@'%' ;
      • quit ;
    • Use Ctrl-C to stop the container
  • Add the backend to docker-compose.yml
# Begin docker-compose.yml
version: '3.5'
services:
    mythtv-mysql:
        container_name: 'mythtv-mysql'
        hostname: 'mythtv-mysql'
        user: '<mysql uid>:<mysql gid>'
        image: mysql:latest
        restart: always
        ports:
            - '3306:3306'
        environment:
            - MYSQL_ROOT_PASSWORD=RootSuperSecretPassword
            - MYSQL_USER=mythtv
            - MYSQL_PASSWORD=YourSuperSecretPassword
        volumes:
            - ./mysql/lib:/var/lib/mysql
    mythtv-backend:
        container_name: 'mythtv-backend'
        hostname: 'mythtv-backend'
        user: '<mythtv uid>:<mythtv gid>'
        image: dheaps/mythbackend:latest
        restart: always
        depends_on:
            - mythtv-mysql
        network_mode: host
        # entrypoint: 'echo backend disabled'
        environment:
            - USER_ID=<mythtv uid>
            - GROUP_ID=<mythtv gid>
            - DATABASE_HOST=host.docker.internal
            - DATABASE_PORT=3306
            - DATABASE_NAME=mythconverg
            - DATABASE_USER=mythtv
            - DATABASE_PWD=YourSuperSecretPassword
            - TZ=America/New_York
        volumes:
            - /storage/mythtv:/var/lib/mythtv
        extra_hosts:
            - host.docker.internal:host-gateway
# End docker-compose.yml
  • Test it out
    • docker-compose up --build
    • Ctrl-C to stop it once you confirm it works
  • Add it to systemd: /etc/systemd/system/docker-mythtv.service
# Begin docker-mythtv.service
[Unit]
Description=Docker Compose MythTV Service
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/storage/containers/mythtv
ExecStart=/usr/bin/docker-compose up --build -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target
# End docker-mythtv.service

  • Enable and start the service
    • sudo systemctl enable docker-mythtv
    • sudo systemctl start docker-mythtv
  • I also had to update docker-compose.yml for mythweb to use DATABASE_HOST=host.docker.internal and add the extra_hosts


Appendix

Errors

  • MythCoreContext::CheckSubnet(): Repeat denied connection from ip address
    • Connect to the MySQL database
      • sudo mysql -p -h 127.0.0.1 -P 3306
    • Run one of the following:
      • update settings set data = 1 where value = 'AllowConnFromAll' ;
      • OR
      • insert into settings(value, data, hostname)
      • values('AllowConnFromAll', '1', 'mythtv-backend')
      • ;
  • only one instance of "host" network is allowed
    • ensure that you are using either external host network or network_mode

Sources



03 December 2021

Xubuntu Server Ubgrade 16.04 to 18.04 to 20.04

As I have been busy the past few months, I failed to notice that 16.04 went past it's support window and hasn't been getting updates. Here are the steps that I went through to get current and fix the issues that I encountered

Perform the Upgrade

I upgraded using the GUI to walk me thru the steps
  • upgrade to 18.04
    • sudo do-release-upgrade -f DistUpgradeViewGtk3
  • reboot
  • upgrade to 20.04
    • sudo do-release-upgrade -f DistUpgradeViewGtk3
  • When prompted for debian-sys-maint password find it here:
    • sudo cat /etc/mysql/debian.cnf


Getting Unifi Web working again

127.0.0.1:8443 was giving a 404 error

  • Check the logs
    • tail -n 50 /usr/lib/unifi/logs/server.log
      • [2021-10-24TXX:XX:XX,XXX] <db-server> INFO  db     - DbServer stopped
    • tail -n 50 /usr/lib/unifi/logs/mongod.log
      • 2021-10-24TXX:XX:XX.XXX-XXXX F CONTROL  [initandlisten] ** IMPORTANT: UPGRADE PROBLEM: The data files need to be fully upgraded to version 3.4 before attempting an upgrade to 3.6; see http://dochub.mongodb.org/core/3.6-upgrade-fcv for more details.

So I needed to upgrade the mongo data files, but can't do that in version 3.6 so I used a combination of the following posts

Here are the actual steps that I used:

  • sudo apt-get install docker.io
  • sudo docker run --name mongo-migrate -v /var/lib/unifi/db:/data/db -p 127.0.0.1:27888:27017 -d mongo:3.4
  • mongo localhost:27888
    • db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
    • db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
    • exit
  • sudo docker stop mongo-migrate
  • sudo chown -R unifi:unifi /var/lib/unifi/db
  • sudo systemctl restart unifi


Fixing MythTV

I was seeing the following Fatal Error when accessing mythweb:

!!NoTrans: You are missing a php extension for mysql interaction. Please install php-mysqli or similar!!

I solved this error with the following steps:

  • apt-get install php7.4
  • sudo a2dismod php7.0
  • sudo a2enmod php7.4
  • sudo systemctl restart apache2

It then became this error:

!!NoTrans: MasterServerIP or MasterServerPort not found! You may need to check your mythweb.conf file or re-run mythtv-setup!!

I determined this to be an error with mysql

  • tail -n 100 /var/log/mysql/error.log
    • 2021-10-24TXX:XX:XX.XXXXXXZ 0 [ERROR] [MY-000067] [Server] unknown variable 'query_cache_limit=1M'.
    • 2021-10-24TXX:XX:XX.XXXXXXZ 0 [ERROR] [MY-000067] [Server] unknown variable 'query_cache_size=16M'.
  • sudo vi /etc/mysql/my.cnf
    • commented out the 2 lines regarding query_cache
  • sudo systemctl restart mysql

This got mysql running but, mythweb still had the same error. I tried a reboot of the server, but that didn't seem to help. It turns out that I needed to change the bind_address

  • sudo vi /etc/mysql/my.cnf
    • bind-address            = 127.0.0.1,192.168.X.X


VNC

I needed to fix my vnc setup and came across this:

  • vnc4server is no longer in the repo
  • tightvncserver works with the exception of window buttons. This is due to it not supporting Render: https://bugs.launchpad.net/ubuntu/+source/xfwm4/+bug/1860921
  • Solution: Use tigervncserver

Here are the steps that I used:

  • sudo apt-get install tigervnc-standalone-server
  • touch ${HOME}/.Xresources
  • tigervncserver :1 -geometry 1366x768 -depth 24 -localhost no


Let's Encrypt

Update 2021-12-14: Apparently, the upgrade broke my Let's Encrypt certificate, but fixing it was easy enough, I just needed to install 2 packages: sudo apt-get install certbot python3-certbot-apache


12 July 2020

Removing phantom tuner in MythTV

I had a tuner that did not appear on the tuner screen in setup, but would always throw an error about the default channel for it not being available when saving and exiting.

In order to resolve this, I followed the suggestion here: http://lists.mythtv.org/pipermail/mythtv-users/2010-March/284826.html

  1. manually login to the database
    1. mysql --user mythtv --password mythconverg
  2. find the phantom cards id
    1. select * from capturecard ; 
  3. delete it from the 'capturecard' table
    1. delete from capturecard where cardid = ;

14 August 2019

Ubuntu 14.04.6 upgrade to 16.04

Because of Ubuntu 14.04 no longer receiving security updates, I had to upgrade to 16.04. In general the experience went fairly smoothly, except for the heart wrenching error messages about sane failing to upgrade and leaving the system in a bad state. However, that did not seem to be the case, as the system was able to reboot fine.

However, not everything was working.

MythTV:
  • Error: Webpages say: !!NoTrans: You are missing a php extension for mysql interaction. Please install php-mysqli or similar!!
  • Error: Webpages say: contains nonaggregated column

Sane (scanning):
  • I accidently left a computer running xsane connected, so that may have been the reason it failed
  • It worked after telling systemd to start it
    • sudo systemctl start saned.socket
    • sudo systemctl enable saned.socket
    • sudo systemctl status saned.socket

Web Services Dynamic Discovery (wsdd):
  • Error: systemd would fail to start wsdd, but running it directly ran fine
    • edited /etc/systemd/system/wsdd.service to change group from nobody to nogroup
    • reloaded changes: sudo systemctl daemon-reload
    • started daemon: sudo systemctl start wsdd
    • checked status: sudo systemctl status wsdd

Software Updater:
  • Error: Not all updates can be installed
    • sudo apt dist-upgrade

Update 2020-05-30:
To fix wsdd, I also had to disable it listening on IP6 address. To do this I edited /etc/systemd/system/wsdd.service
  • ExecStart=/usr/bin/wsdd --shortlog -4
  • You could also have it just sleep before starting per this issue: https://github.com/christgau/wsdd/issues/18

05 December 2015

Sony XBR65X850C Review


Sony XBR65X850C Review

The Choice

As my aging LN-T4066F was too small for my new family room, I decided to go shopping for a new TV due to the good holiday pricing.  My debate was between the Sony XBR65X810C ($1500), Sony XBR65X850C ($1800), and Samsung UN65JS8500 ($2000).

My primary sources of information, was rtings.com, amazon.com, and bestbuy.com.

ModelRtings.comBestBuy.comAmazon.com
JS65008.34.7 (377 reviews)4.3 (195 reviews)
X850C7.74.6 (455 reviews)4.2 (187 reviews)
X810C8.04.2 (64 reviews)4.3 (38 reviews)

Notes:
  • Rtings.com ratings are for 55 inch , both Sony models have material differences in 65 inch:
    • X850C has a Full LED backlight, which should improve uniformity
    • X810C switches to an IPS display, which would reduce black intensity, but improve viewing angles
  • Amazon.com ratings are for all sizes combined

Key factors in choosing the X850C:
  • In person picture: very similar between all 3 at the store
  • Android TV: while still young and needs some refining, I believe this will be the future so I wanted this type of TV
  • Ability to do 24p via almost any source
  • Full Array LED Backlighting: Samsung was only border lit
  • Low input lag for games
  • No additional connections box (This could have been a plus with a longer cord)
  • Small not distracting bezel: the Samsung model had a bright stainless steel looking metallic border that I found to be very distracting

The Review

The picture on this TV is absolutely amazing. The upscaled 1080p contact looks life-like as we have been binge watching BBC's Sherlock. Netflix SD content looks okay, but that is more likely due to the source material.

Pros:
  • Excellent picture without requiring any tweaking
  • No flashlighting or dark corners as far as I can tell
  • Netflix and Amazon Instant Video built in
  • Access to all my Google Play Movies
  • Casting built-in
  • Ability to install Kodi (and decode MPEG2 content from MythTV)
  • Standard remote works well (haven't tried smart remote)
  • Ability to rename inputs and the easy switching from the home screen
Cons:
  • Some glare from windows
  • TV button on remote can only be mapped to an input and not an app
  • Inability to create a "favorites" app list: Built in apps are separated from installed apps
    • Update 1/12: You can now rearrange the apps, but I wish you could turn off featured apps and suggestions
  • No included 3D glasses, not a big deal for me, but something to be aware of
  • Remote is not universal
  • Cannot go back to the home screen via input button
In the middle:
  • Sound is decent, but not much is expected from TVs this thin and is about the same as my old one
  • Android TV requires some refining, have had to reboot the TV because of dropped frames in Kodi
  • No context menu button on remote, had to map Stop to it in Kodi

20 December 2014

Blank Kodi/XBMC MythTV channel icons

When mapping channel icons in my MythTV, they were showing up as blank! After some research, I determined this is the result from the removal of absolute paths from icon path in MythTV. Fixing this is a simple 2 step process.

  1. Create a new storage group in MythTV called "ChannelIcons" and map it to the directory with all the icons, Typically: /home/mythtv/.mythtv/channels
  2. Delete the cached empty icons off XBMC. On the firetv, they were located here: /storage/sdcard0/Android/data/org.xbmc.xbmc/files/.xbmc/userdata/addon_data/pvr.mythtv.cmyth/cache/channels
I used adb to remove the files:
adb kill-server
adb connect 192.168.1.XXX
adb shell
cd /storage/sdcard0/Android/data/org.xbmc.xbmc/files/.xbmc/userdata/addon_data/pvr.mythtv.cmyth/cache/channels
ls
rm *.jpg *.png


Software versions:
Ubuntu 14.04
MythTV 0.27
XBMC Kodi 14 release candidate

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

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