diff -r -u -N -X diff.exclude -x release.19824.0127a -x release.19824.0127b release.19824.0127a/mythtv/libs/libmyth/mythcontext.cpp release.19824.0127b/mythtv/libs/libmyth/mythcontext.cpp
--- mythtv/libs/libmyth/mythcontext.cpp	2009-01-27 06:31:54.000000000 -0600
+++ mythtv/libs/libmyth/mythcontext.cpp	2009-01-27 17:03:09.000000000 -0600
@@ -80,6 +80,9 @@
     QString option;
     bool reverseOption;
 
+    print_verbose_messages = VB_IMPORTANT | VB_GENERAL;
+    verboseString = QString(" important general");
+
     if (arg.startsWith("-"))
     {
         cerr << "Invalid or missing argument to -v/--verbose option\n";
@@ -164,6 +167,7 @@
                      << option << endl;;
             }
         }
+        VERBOSE(VB_IMPORTANT, QString("Enabled verbose msgs: %1").arg(verboseString));
     }
 
     return GENERIC_EXIT_OK;
diff -r -u -N -X diff.exclude -x release.19824.0127a -x release.19824.0127b release.19824.0127a/mythtv/programs/mythbackend/main.cpp release.19824.0127b/mythtv/programs/mythbackend/main.cpp
--- mythtv/programs/mythbackend/main.cpp	2008-03-15 23:23:10.000000000 -0500
+++ mythtv/programs/mythbackend/main.cpp	2009-01-27 17:07:38.000000000 -0600
@@ -426,6 +426,8 @@
     bool daemonize = false;
     bool printsched = false;
     bool testsched = false;
+    bool setverbose = false;
+    QString newverbose = "";
     bool resched = false;
     bool nosched = false;
     bool noupnp = false;
@@ -526,6 +528,20 @@
                 return BACKEND_EXIT_INVALID_CMDLINE;
             }
         } 
+        else if (!strcmp(a.argv()[argpos],"--setverbose"))
+        {
+            setverbose = true;
+            if (a.argc()-1 > argpos)
+            {
+                newverbose = a.argv()[argpos+1];
+                ++argpos;
+            } 
+            else
+            {
+                cerr << "Missing argument to --setverbose option\n";
+                return BACKEND_EXIT_INVALID_CMDLINE;
+            }
+        } 
         else if (!strcmp(a.argv()[argpos],"--printsched"))
         {
             printsched = true;
@@ -680,6 +696,7 @@
                                                     "to filename" << endl <<
                     "-d or --daemon                 Runs mythbackend as a daemon" << endl <<
                     "-v or --verbose debug-level    Use '-v help' for level info" << endl <<
+                    "--setverbose debug-level       Change debug level if running backend" << endl <<
                     "--printexpire                  List of auto-expire programs" << endl <<
                     "--printsched                   Upcoming scheduled programs" << endl <<
                     "--testsched                    Test run scheduler (ignore existing schedule)" << endl <<
@@ -766,6 +783,26 @@
         return BACKEND_EXIT_OK;
     }
 
+    if (setverbose)
+    {
+        gContext->SetBackend(false);
+
+        if (gContext->ConnectToMasterServer())
+        {
+            QString message = "SET_VERBOSE "; 
+            message += newverbose;
+
+            RemoteSendMessage(message);
+            VERBOSE(VB_IMPORTANT, QString("Sent %1 message").arg(message));
+            return BACKEND_EXIT_OK;
+        }
+        else
+        {
+            VERBOSE(VB_IMPORTANT, "Unable to connect to backend, verbose level unchanged ");
+            return BACKEND_EXIT_NO_CONNECT;
+        }
+    }
+
     if (clearsettingscache)
     {
         if (gContext->ConnectToMasterServer())
diff -r -u -N -X diff.exclude -x release.19824.0127a -x release.19824.0127b release.19824.0127a/mythtv/programs/mythbackend/mainserver.cpp release.19824.0127b/mythtv/programs/mythbackend/mainserver.cpp
--- mythtv/programs/mythbackend/mainserver.cpp	2009-01-27 06:31:56.000000000 -0600
+++ mythtv/programs/mythbackend/mainserver.cpp	2009-01-27 17:05:21.000000000 -0600
@@ -502,6 +502,13 @@
     }
     else if (command == "MESSAGE")
     {
+        if (listline[1].left(11) == "SET_VERBOSE")
+            HandleSetVerbose(listline, pbs);
+        else
+            HandleMessage(listline, pbs);
+    }
+    else if (command == "MESSAGE")
+    {
         HandleMessage(listline, pbs);
     } 
     else if (command == "FILL_PROGRAM_INFO")
@@ -3739,6 +3746,32 @@
     SendResponse(pbssock, retlist);
 }
 
+void MainServer::HandleSetVerbose(QStringList &slist, PlaybackSock *pbs)
+{
+    MythSocket *pbssock = pbs->getSocket();
+    QStringList retlist = "OK";
+
+    // No need to dispatch this message to ourself, so handle it
+
+    QString newverbose = slist[1];
+    int len=newverbose.length();
+    if (len > 12)
+    {
+        newverbose = newverbose.right(len-12); // Chop off "SET_VERBOSE "
+        if (newverbose == "blank")
+            parse_verbose_arg("");
+        else
+            parse_verbose_arg(newverbose);
+    }
+    else
+    {
+        VERBOSE(VB_IMPORTANT, QString("Invalid SET_VERBOSE string: '%1'").arg(newverbose));
+        retlist = "Failed";
+    }
+
+    SendResponse(pbssock, retlist);
+}
+
 void MainServer::HandleIsRecording(QStringList &slist, PlaybackSock *pbs)
 {
     (void)slist;
diff -r -u -N -X diff.exclude -x release.19824.0127a -x release.19824.0127b release.19824.0127a/mythtv/programs/mythbackend/mainserver.h release.19824.0127b/mythtv/programs/mythbackend/mainserver.h
--- mythtv/programs/mythbackend/mainserver.h	2008-03-15 23:23:10.000000000 -0500
+++ mythtv/programs/mythbackend/mainserver.h	2009-01-27 16:49:48.000000000 -0600
@@ -105,6 +105,7 @@
     void HandleGetRecorderNum(QStringList &slist, PlaybackSock *pbs);
     void HandleGetRecorderFromNum(QStringList &slist, PlaybackSock *pbs);
     void HandleMessage(QStringList &slist, PlaybackSock *pbs);
+    void HandleSetVerbose(QStringList &slist, PlaybackSock *pbs);
     void HandleGenPreviewPixmap(QStringList &slist, PlaybackSock *pbs);
     void HandlePixmapLastModified(QStringList &slist, PlaybackSock *pbs);
     void HandleIsRecording(QStringList &slist, PlaybackSock *pbs);
diff -r -u -N -X diff.exclude -x release.19824.0127a -x release.19824.0127b release.19824.0127a/mythtv/programs/mythfrontend/networkcontrol.cpp release.19824.0127b/mythtv/programs/mythfrontend/networkcontrol.cpp
--- mythtv/programs/mythfrontend/networkcontrol.cpp	2009-01-27 06:31:56.000000000 -0600
+++ mythtv/programs/mythfrontend/networkcontrol.cpp	2009-01-27 14:39:58.000000000 -0600
@@ -251,6 +251,8 @@
         result = processPlay(tokens);
     else if (is_abbrev("query", tokens[0]))
         result = processQuery(tokens);
+    else if (is_abbrev("setverbose", tokens[0]))
+        result = processSetVerbose(tokens);
     else if (is_abbrev("help", tokens[0]))
         result = processHelp(tokens);
     else if ((tokens[0].lower() == "exit") || (tokens[0].lower() == "quit"))
@@ -675,6 +677,10 @@
                 result = "ERROR: Timed out waiting for reply from player";
         }
     }
+    else if (is_abbrev("verbose", tokens[1]))
+    {
+        return verboseString;
+    }
     else if (is_abbrev("liveTV", tokens[1]))
     {
         if(tokens.size() == 3) // has a channel ID
@@ -699,6 +705,36 @@
     return result;
 }
 
+QString NetworkControl::processSetVerbose(QStringList tokens)
+{
+    if (tokens.size() == 1)
+        return QString("ERROR: See 'help %1' for usage information")
+                       .arg(tokens[0]);
+
+    if (tokens.size() > 2)
+        return QString("ERROR: Seperate filters with commas with no space: playback,audio\r\n See 'help %1' for usage information")
+                       .arg(tokens[0]);
+
+    // return previous string and new string
+    QString oldVerboseString = verboseString;
+    QString result = "OK";
+
+    int pva_result;
+    if (tokens[1] == "blank") 
+        pva_result = parse_verbose_arg("");
+    else
+        pva_result = parse_verbose_arg(tokens[1]);
+
+    if (pva_result != 0 /*GENERIC_EXIT_OK */)
+        result = "Failed";
+
+    result += "\r\n";
+    result += " Previous filter: " + oldVerboseString + "\r\n";
+    result += "      New Filter: " + verboseString + "\r\n";
+
+    return result;
+}
+
 QString NetworkControl::processHelp(QStringList tokens)
 {
     QString command = "";
@@ -795,6 +831,16 @@
             "query liveTV          - List current TV schedule\r\n"
             "query liveTV CHANID   - Query current program for specified channel\r\n"
             "query time            - Query current time on server\r\n";
+            "query verbose         - Get current VERBOSE filter\r\n";
+    }
+    else if (is_abbrev("setverbose", command))
+    {
+        helpText +=
+            "setverbose verbose-string - Change the VERBOSE filter to 'verbose-string'\r\n";
+        helpText +=
+            "                            (i.e. 'setverbose playback,audio')\r\n";
+        helpText +=
+            "                            use 'setverbose blank' to revert to default 'general important'\r\n";
     }
     else if (command == "exit")
     {
@@ -815,6 +861,7 @@
         "key                - Send a keypress to the program\r\n"
         "play               - Playback related commands\r\n"
         "query              - Queries\r\n"
+        "setverbose         - Change the verbose logging filter\r\n"
         "exit               - Exit Network Control\r\n"
         "\r\n"
         "Type 'help COMMANDNAME' for help on any specific command.\r\n";
diff -r -u -N -X diff.exclude -x release.19824.0127a -x release.19824.0127b release.19824.0127a/mythtv/programs/mythfrontend/networkcontrol.h release.19824.0127b/mythtv/programs/mythfrontend/networkcontrol.h
--- mythtv/programs/mythfrontend/networkcontrol.h	2008-03-15 23:23:08.000000000 -0500
+++ mythtv/programs/mythfrontend/networkcontrol.h	2009-01-27 12:32:49.000000000 -0600
@@ -40,6 +40,7 @@
     QString processLiveTV(QStringList tokens);
     QString processPlay(QStringList tokens);
     QString processQuery(QStringList tokens);
+    QString processSetVerbose(QStringList tokens);
     QString processHelp(QStringList tokens);
 
     void notifyDataAvailable(void);
