- 1 Goal: Better Mac backend
- 2 Applescript Helpers
- 3 What's new?
- 4 Known issues
- 5 Download or build?
- 6 Initial Installation
- 7 Upgrading an Existing Installation
- 8 MythWeb
- 9 Scripts
- 10 Other
Goal: Better Mac backend
The current Perl-based build processes are great for producing a self-contained Mac frontend. But if you want to run the backend on OS X, then having the essential programs packaged deep in an application bundle is less than ideal. The MacPorts distribution aims to make it much easier to install the backend and run it in a production mode:
- Full support of the Perl/python bindings. This means that standard Myth backup, optimization, and metadata functions will work.
- Install and run Myth like other 'server-type' software such as MySQL, file-sharing, web-serving, etc. Control the Myth backend with standard OS X functions (launchctl) and have the system start automatically during the boot process.
- Provide the full suite of myth programs, if you need them, like mythmetadatalookup, mythutil, etc. This, in turn, means that various user jobs and scripts from the wiki will function with fewer glitches and modifications.
The documentation on this page will focus on running the Myth master backend (version 0.27), including the MySQL database server, on an OS X machine. Using the MacPorts install it is also possible to run the machine as a slave backend or job queue server. It may be possible to run the machine as a Myth media server; this configurations hasn't been tested. If you do, please share the results by updating these pages!
On OS X, diving into the command line just to start the Myth frontend isn't very 'Mac-like'! So the MacPorts installation of Myth included a handful of simple Applescript applications to make common activities just a little more convenient:
Myth_Setup and Myth_Filldatabase are probably only going to be necessary when you first confgure Myth or make major changes. Myth_Frontend, however, is the preferred way to start the frontend. You may want to drag the Myth_Frontend icon onto your Dock if you plan to use it regularly.
Myth_Stop_Start provides a simple way to start the Myth backend and to schedule daily log file rotation and pruning. Note that the Myth backend is run as a server process. That means, if enabled, it starts automatically when OS X is started--no user needs to be logged on. Similarly, f you click "Stop MythBackend", the server process will remain disabled through restarts, etc.
The script looks for a MySQL server running on the current machine and won't start the backend without one. If your database server is running on another machine on your network, this script won't work for you. You'll have to manually issue the appropriate launchctl commands.
Myth generates a LOT of log files. We use logrotate to keep the most important ones (mythbackend, mythfrontend, mythtv-setup, etc) for two months and to delete those created by some of Myth's 'utility' programs (mythpreviewgen, mythcommflag, mythfilldatabase, mythmetadatalookup, etc).
- Pre-built installer! No more long compiles...just a long download!
- October 2014 update avoids the impending Schedules Direct URL Change and fixes many long-standing concerns with LiveTV. Moves to a more modern database (MariaDB v.5.5).
- Initial testing indicates that Myth is compatible with OS X 10.10 (Yosemite)
- With the October 19, 2014 release of the Myth 0.27.4 installer, if you receive the above error message while trying to use Myth_Start_Stop to start the backend, you can fix the problem with the following command:
sudo ln -s /opt/dvr/Library/LaunchDaemons/org.mythtv.mythbackend.plist /Library/LaunchDaemons/
This issue was fixed with the October 24, 2014 release of the installer and all users are strongly encouraged to use the latest available version.
- AirPlay streaming of photos may not work on all systems. On one frontend, a large red slash-zero was displayed rather than the requested photo. More feedback may help to identify the problem.
- PPC and 32 bit Intel support has been dropped in 0.26 and later. It appears possible to support these platforms but time is limited and hardware that is 6-plus years old is barely up to the task anyway. If someone wants to help, contact me on the macports-users or mythtv-users mailing lists and I'll try to point you in the right direction.
- Myth 0.26 may prevent your system from going to sleep. Even when the system is otherwise not doing anything, mythlogserver passes 'heartbeat' messages with any running client programs, such as mythbackend. OS X interprets this message passing as work being performed and therefore does not put the system to sleep. The system may therefore use more electricity.
- Myth 0.26 logging may fail in some circumstances. If mythlogserver is not currently running, it will not be automatically launched by starting another Myth program from the command line (eg mythfrontend, mythutil, mythshutdown, etc). OS X's Console app will show crash reports (possibly many) for mythlogserver. However, a backend machine with mythbackend started via Myth_Stop_Start will always have mythlogserver running and will therefore not exhibit this problem. The applescript helpers for MythFrontend, MythFillDatabase and Myth-Setup all ensure that mythlogserver is either running or started before launching any of these programs.
Plugins are not installed.
Download or build?
Most users will want to download the pre-built installer:
However, don't use the downloaded installer if any of the following are true:
- You want a version earlier than 0.27.
- You already have MacPorts installed for other software.
- You think you might want to install MacPorts to use some of the thousands of other software packages available.
- You like watching the compiler churn away building millions of lines of code! ;)
See Building Myth for Mac with MacPorts for details on that process.
Seriously, most users will want to download the pre-built installer. It will give you a complete install of MythTV for OS X, including:
- backend and MySQL, the background processes that are the heart of Myth's recording system
- frontend, the interface to setting recording rules and enjoying TV, videos, etc.
- MythWeb, for accessing and controlling your Myth system via a web browser
- all the support packages to make everything 'just work'!
The main difference between installing from the pre-built installer and building your own is the path to all the files. The pre-built installer loads everything under "/opt/dvr" while building your own puts everything under "/opt/local". For example, the frontend program is at '/opt/dvr/bin/mythfrontend' from the pre-built installer while the version you build yourself will be at '/opt/local/bin/mythfrontend'. The following instructions assume you're using the pre-built installer. If you built your own, change every instance of '/opt/dvr' to '/opt/local' in the following.
MythTV built by MacPorts has been successfully tested on OS X 10.5 through 10.9. Building with firewire support to capture mpeg streams from a set top box has been successfully implemented under 10.5.8 on a PPC G5, and under 10.8 on an Intel Mini.
Upgrading? See the following section, first.
Terminal and PATH
We'll need to run some commands from Terminal.app (Applications > Utilities folder). It will make life simpler if PATH includes appropriate directories for the software you just installed. Check you path by entering:
If you built Myth yourself, your path should include "/opt/local/bin:/opt/local/sbin" and some other directories. If you downloaded the MythTV installer, your PATH needs to include "/opt/dvr/bin:/opt/dvr/sbin" but doesn't! To fix that, we'll create or add to the hidden '.bash_profile' account in your Home directory:
echo "export PATH=/opt/dvr/bin:/opt/dvr/sbin:/opt/dvr/lib/mariadb/bin:$PATH" >> ~/.bash_profile
You must quit and restart Terminal for the change to take effect. After that, use the 'echo $PATH' command to check that the change has taken effect.
- Myth's database (mythconverg) has to be intialized, and the server software started, with the following four commands:
sudo -u _mysql mysql_install_db sudo cp /opt/dvr/share/mythtv/database/my.cnf /opt/dvr/etc/mariadb sudo launchctl load -w /Library/LaunchDaemons/org.macports.mariadb-server.plist mysql -u root < /opt/dvr/share/mythtv/database/mythconverg_init.sql
Add '-p' to the third command if you've followed the (very reasonable) instructions to protect the root account on your MySQL database with a password.
After this command, look in Activity Monitor to see that the "mysqld" is running. We can't go further until it is!
mysql -u mythtv -p mythconverg
The above step simply verifies that you can connect to the database as the 'mythtv' user (default password is 'mythtv'). Type 'exit;' and press return to exit back to the Terminal.
- A one-time step is required to install support for multiple time zones in MySQL. Follow the procedure on MySQL Time Zone Tables to ensure that your MySQL installation is ready for Myth 0.26 or 0.27. Doing this will not affect the operation of Myth 0.25, either.
Note, on MySQL on my system, the user "mythtv" has the password "mythtv" but the user "root" has no password. (Don't tell anyone, OK? I don't want my database hacked! ;) Terminal may not be able to find the command unless you enter the full path. The command that worked for me was:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
This final step loads time zone information into MySQL. (Again, add '-p', if necessary.) You may get a series of warning messages. These are no cause for alarm unless your specific time zone is not loaded.
Media Storage Locations
Next, Myth needs to be told where to store all your media. It is common to dedicate one or more external disks--and usually not the startup disk--to hold your recordings, videos, music, etc. At the bare minimum, create at least one new folder to use as the default for everything that Myth wants to store. More commonly, you'll have separate directories for TV, Videos, Music, Images, and Metadata. It will be simpler to use volume and folder names that do not include spaces. On OS X, the path to a folder on an external drive is "/Volumes/<drive_name>/<folder_name>".
The User Manual also has general information on how to Setup Storage Directories for MythTV.
Initial Myth Setup
After you've created the directories you want to use (and made note of the paths), you must run the mythtv-setup program. You can do this from the command line but there is also an Applescript (Myth_Setup) short cut. Be sure to complete each of the steps.
Capture Cards and Video Sources
Pretty much the only Capture Cards that are supported on OS X are the HDHomerun tuners from Silicondust...although some IPTV or HTTP Live Streaming services may also work. From the linked page, find the model you are using (Prime, Plus, Dual, etc) and follow the instructions to add and configure the tuners. Your video source depends on which tuner you are using and where in the world you are located. SchedulesDirect is highly recommended for North America. In mythtv-seup, create an appropriate Video Source and connect it to your Capture Card(s) using the Input Connections screen.
You will likely need to run Myth_Filldatabase at this point to populate the fill in all those television programs that your tuner(s) will be able to record. Unfortunately, the Applescript can't show the progress of this program as it runs. Activity Monitor should list mythfilldatabase as it is running and it should finish within a few minutes.
Start It Up!
We're getting close now. With Myth's setup done, it is time to start the backend. Use the Myth_Start_Stop Applescript to start the backend. Again, in Activity Monitor you should see a new line for "mythbackend".
The grand finale: start up the frontend with the Myth_Frontend Applescript. Hopefully all has gone well and you're off and running with Myth on OS X!!
If you switch to Activity Monitor (via Command-Tab), you'll see MySQL, the backend and the fronted all running:
Upgrading an Existing Installation
If you installed Myth from the all-in-one installer before October 17, 2014, there are some steps you should take before upgrading to the new version (0.27.4, released on SourceForge on October 19, 2014). Despite the version number change (0.27.1 to 0.27.4) there are actually several major changes in supporting software. In particular, we're now using MariaDB version 5.5 in place of MySQL version 5.1. It is not hard to transfer all your recording rules, history, etc from the old database to the new one, but you need to follow the precise order shown in the following steps.
- Use Myth_Stop_Start to stop MythBackend and ensure Log Rotation is not enabled.
- Backup your existing MySQL 5.1 database. In Terminal, enter the following command:
/opt/dvr/share/mythtv/mythconverg_backup.pl --directory ~/Desktop --mysqldump /opt/dvr/bin/mysqldump5 --verbose
A file should be created on your Desktop, named with the pattern "mythconverg-1317-2014mmddnnnnnn.sql.gz". As long as the size is non-zero, you have a successful backup.
- Shut down MySQL 5.1:
sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist
- Ensure the Apache2 web server software (used by MythWeb) is not running:
sudo launchctl unload /opt/dvr/etc/LaunchDaemons/org.macports.apache2/org.macports.apache2.plist
- Move the existing software 'out of the way' before we install the new version. If something goes horribly wrong, we can always move this back and restart Myth 0.27.1. Two directories need to be renamed:
sudo mv /opt/dvr /opt/old sudo mv /Applications/MacPorts /Applications/OldMacPorts
- Now use the Myth 0.27.4 installer freshly downloaded from SourceForge and install the new software
- Update your $PATH. Our version of the MariaDB software is installed in '/opt/dvr/lib/mariadb/bin' and it makes life a lot simpler if that directory is included in our default search $PATH. To do that, edit the hidden '.bash_profile' file in your home directory and add '/opt/dvr/lib/mariadb/bin' to the list of directories to search. Remember that each entry is separated by the ":" (colon) character.
Quit and restart the Terminal for the new $PATH to take effect. You can verify that the $PATH is correct if you get the same output show below:
$ mysql --version mysql Ver 15.1 Distrib 5.5.39-MariaDB, for osx10.6 (x86_64) using readline 5.1
- Initialize the database setup. Follow the steps above in Database up to and including the step to load time zone data.
- Finally, restore the database backup to MariaDB 5.5:
/opt/dvr/share/mythtv/mythconverg_restore.pl --drop_database --create_database --directory ~/Desktop --verbose
- Use Myth_Stop_Start to start up the Myth 0.27.4. Follow the configuration instructions for MythWeb to ensure it is set up for the new software environment. And you should be off and running!
MythWeb is installed automatically with the pre-built installer. If you don't want to use it, just ignore it. (It only takes up a MB's of disk space.
To get started using MythWeb, see MythWeb via MacPorts for instructions.
One of the strengths of Myth is the ability to customize the system to your particular needs, often using scripts written in Python, Perl or Bash (shell scripts). See User Job Scripts for examples.
You can run all these kinds of scripts on your OS X machine although there is one 'gotcha' to watch for with Myth via MacPorts. Perl and Python scripts often use "bindings" provided by MythTV to simplify the programming required to interface with Myth's database. Those bindings are built and installed with Myth under MacPorts--but you will probably have to make a slight modification to such scripts so they make use of the bindings.
Modifying Perl scripts
Change the first line of the script from
Modifying Python scripts
For example, mythvidexport.py. Change to first line of the script from
Currently, Myth via MacPorts includes a handful of scripts which have already been modified and are ready to use. These include the backup and restore scripts
To do: running the Job queue on other OS X machines ...