--- /dev/null
+diff -u libs/libtuxtxt_orig/libtuxtxt.c libs/libtuxtxt/libtuxtxt.c
+--- libs/libtuxtxt_orig/libtuxtxt.c 2009-01-29 21:21:08.000000000 +0100
++++ libs/libtuxtxt/libtuxtxt.c 2009-01-29 21:26:49.000000000 +0100
+@@ -65,6 +65,13 @@
+ tuxtxt_cache.thread_id = 0;
+ tuxtxt_cache.dmx = -1;
+ pthread_mutex_unlock(&tuxtxt_control_lock);
++
++#if HAVE_DVB_API_VERSION < 3
++ strcpy(tuxtxt_cache.demux, "/dev/dvb/card0/demux0");
++#else
++ strcpy(tuxtxt_cache.demux, "/dev/dvb/adapter0/demux0");
++#endif
++
+ return 1;//tuxtxt_init_demuxer();
+ }
+
+@@ -82,7 +89,7 @@
+ pthread_mutex_unlock(&tuxtxt_control_lock);
+ return res;
+ }
+-int tuxtxt_start(int tpid)
++int tuxtxt_start(int tpid, int demux)
+ {
+ int ret = 1;
+ pthread_mutex_lock(&tuxtxt_control_lock);
+@@ -92,10 +99,26 @@
+ tuxtxt_clear_cache();
+ tuxtxt_cache.page = 0x100;
+ tuxtxt_cache.vtxtpid = tpid;
++ if (demux >= 0)
++ {
++#if HAVE_DVB_API_VERSION < 3
++ snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/card0/demux%d", demux);
++#else
++ snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/adapter0/demux%d", demux);
++#endif
++ }
+ ret = tuxtxt_start_thread();
+ }
+ else if (!tuxtxt_cache.thread_starting && !tuxtxt_cache.receiving)
+ {
++ if (demux >= 0)
++ {
++#if HAVE_DVB_API_VERSION < 3
++ snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/card0/demux%d", demux);
++#else
++ snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/adapter0/demux%d", demux);
++#endif
++ }
+ ret = tuxtxt_start_thread();
+ }
+ pthread_mutex_unlock(&tuxtxt_control_lock);
+diff -u libs/libtuxtxt_orig/tuxtxt_common.h libs/libtuxtxt/tuxtxt_common.h
+--- libs/libtuxtxt_orig/tuxtxt_common.h 2009-01-29 21:24:32.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_common.h 2009-01-29 21:26:49.000000000 +0100
+@@ -1751,9 +1751,9 @@
+ if (tuxtxt_cache.dmx != -1)
+ {
+ ioctl(tuxtxt_cache.dmx, DMX_STOP);
+-// close(tuxtxt_cache.dmx);
+- }
+-// tuxtxt_cache.dmx = -1;
++ close(tuxtxt_cache.dmx);
++ }
++ tuxtxt_cache.dmx = -1;
+ #if 1//DEBUG
+ printf("TuxTxt stopped service %x\n", tuxtxt_cache.vtxtpid);
+ #endif
+diff -u libs/libtuxtxt_orig/tuxtxt_def.h libs/libtuxtxt/tuxtxt_def.h
+--- libs/libtuxtxt_orig/tuxtxt_def.h 2009-01-29 21:19:23.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_def.h 2009-01-29 21:26:49.000000000 +0100
+@@ -19,12 +19,12 @@
+ #define pes_type pesType
+ #define dmx_sct_filter_params dmxSctFilterParams
+ #include <ost/dmx.h>
+- #define DMX "/dev/dvb/card0/demux0"
+ #else
+ #include <linux/dvb/dmx.h>
+- #define DMX "/dev/dvb/adapter0/demux0"
+ #endif
+
++#define DMX tuxtxt_cache.demux
++
+ #include <ft2build.h>
+ #include FT_FREETYPE_H
+ #include FT_CACHE_H
+@@ -325,6 +325,7 @@
+ short flofpages[0x900][FLOFSIZE];
+ unsigned char adip[0x900][13];
+ unsigned char subpagetable[0x900];
++ char demux[64];
+ int dmx;
+ int vtxtpid;
+ int cached_pages, page, subpage, pageupdate,page_receiving, current_page[9], current_subpage[9];