The core MythTV functionality is divided between the frontend(s) and the backend(s).
The frontend process (mythfrontend) is responsible for anything that requires interaction such Watching Recorded Programs or Watching TV. It provides the GUI you use on your TV or monitor as well as the LiRc, keyboard, or other input handling for Frontend Navigation. In addition, any MythTV Modules, or plugins, that are installed execute on the same machine that the user is interacting with. As such, the hardware requirements for a frontend are those necessary to support these features. Underpowered machines may not have enough processing power to decode recordings in software while the same machine could perform these functions if hardware decoding is available.
The MythTV architecture supports a theoretically unlimited number of frontend processes connecting to backends. A frontend process can run on the same machine as a backend in the instance of a combined machine, but is often found running on smaller, quieter, more stylish hardware since it the piece of equipment that usually sits within view of the user. When used on a separate machine from a backend, the frontend process connects over a network, either wired or wireless. It communicates with the backend to retreive the Electronic Program Guide and recorded content which is either streamed to the machine or directly accessed if the frontend has access to the same hardware and file storage the backend does.
The frontend process also has the widest platform support. Frontends have been ported to the Xbox and Mac OS X (see the Myth On Mac OS X guide) as well as the standard Linux Distros with additional work being done to port it to Windows under Cygwin.
Debugging MythFrontend Problems
Check the logs. They are by default written to stdout. To save them to a file, run mythfrontend -l file.log
Mythtv frontend on a remote machine can't access backend running on a second machine
If mythfrontend is not being run on the same machine as mythbackend, trouble accessing the backend may be encountered.
Two separate issues related to MYSQL on the backend may be at work:
First, ensure that networking is enabled in the my.cnf file '/etc/mysql/my.cnf' on the backend machine. In this file, by default there exists either the following (depending on version) which prevents a remote frontend from accessing the info on the backend.
The solution in all three cases is to comment out the line (or change 'bind-address' to the machine's LAN IP address from 127.0.0.1).
Second, it may be necessary to alter the privileges table for the mythtv database to allow the frontend to access the backend (NB; The frontend communicates with the backend by logging on to its mysql database -- generally as the user mythtv. On some systems by default mysql will not allow a user on another machine to login. The following grants users with id mythtv from any machine access to the mythtv databaases).
This can be done by executing the following from the command line on the backend machine (thanks to Torfinn Ingolfsen, Norway for this).
mysql -u root -p mysql mysql> grant all on mythconverg.* to 'mythtv'@'%' identified by 'passwd'; mysql> flush privileges; mysql> exit;
Don't forget to secure the default mysql accounts: http://dev.mysql.com/doc/refman/5.0/en/default-privileges.html