MythTV Community Forum - MythTV talk.com

Go Back   MythTV Community Forum - MythTV talk.com > MythTV > Hardware
Want to give back to the MythTV Community? Help answer threads with 0 replies.


Reply
 
LinkBack Thread Tools Display Modes
  #11  
Old 02-22-2010, 11:56 AM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 13
Default

So, did you have any success getting the card to work ? Or did you decide not to try this driver, and wait for an official one or just buy another card ?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #12  
Old 02-23-2010, 12:00 PM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 10
Default

Hi
no luck as yet.
I tried the patch and got a couple of errors and could not get a complete install of the new v4l drivers.
I copied over the V4L folder ran the patches, but still my install of Myth Tv under ubuntu will still not see the card.
I've tried a fresh install of myth tv but the same results.(It seems not to have cleared the old install fully)

So now I have mythbuntu installed. It sees the card. I have not yet got the patch to run on a V4L folder, mythbuntu will not unzip the file on your web page (TAR problem), and the patch will not run on the V4l folder I downloaded.

I'll keep you up to date

Thanks Again
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #13  
Old 02-23-2010, 01:21 PM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 13
Default

Quote:
Originally Posted by nickm View Post
no luck as yet.
I tried the patch and got a couple of errors and could not get a complete install of the new v4l drivers.
What errors did you get ? Did the errors occur while compiling (that might suggest kernel version related problems) ?

Quote:
I copied over the V4L folder ran the patches, but still my install of Myth Tv under ubuntu will still not see the card.
So, did it compile and install successfully in the end, but the card just does not work ? In that case, it might be worth looking at the output of 'dmesg' after booting:
Code:
  dmesg | grep cx88
  dmesg | grep xc4000
Quote:
So now I have mythbuntu installed. It sees the card. I have not yet got the patch to run on a V4L folder, mythbuntu will not unzip the file on your web page (TAR problem), and the patch will not run on the V4l folder I downloaded.
Do you mean the 14021dfc00f3.tar.bz2 file ? It is in .tar.bz2 format, so it can be unpacked with "tar -xpjvf". Does this exact set of commands work ?
Code:
rm -Rf v4l-dvb-14021dfc00f3
rm -f 14021dfc00f3.tar.bz2 xc4000-winfast-14021dfc00f3.patch

wget http://linuxtv.org/hg/v4l-dvb/archive/14021dfc00f3.tar.bz2
wget http://www.sharemation.com/IstvanV/v4l/xc4000-winfast-14021dfc00f3.patch
wget http://www.sharemation.com/IstvanV/v4l/xc4000-1.4.fw

tar -xpjvf 14021dfc00f3.tar.bz2
cd v4l-dvb-14021dfc00f3
patch -p1 < ../xc4000-winfast-14021dfc00f3.patch
make clean
make
su -c 'make install'
su -c 'cp -f ../xc4000-1.4.fw /lib/firmware/xc4000.fw'
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #14  
Old 02-24-2010, 08:27 AM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 10
Default

Hi
I ran

rm -Rf v4l-dvb-14021dfc00f3
rm -f 14021dfc00f3.tar.bz2 xc4000-winfast-14021dfc00f3.patch

wget http://linuxtv.org/hg/v4l-dvb/archiv...fc00f3.tar.bz2
wget http://www.sharemation.com/IstvanV/v...1dfc00f3.patch
wget http://www.sharemation.com/IstvanV/v4l/xc4000-1.4.fw

tar -xpjvf 14021dfc00f3.tar.bz2
cd v4l-dvb-14021dfc00f3
patch -p1 < ../xc4000-winfast-14021dfc00f3.patch
make clean
make
sudo make install
cd ..
sudo cp -f xc4000-1.4.fw /lib/firmware/xc4000.fw


In both setups after running the patch I get "Failed to open card" in the capture card setting on the back-end of mythtv. Re entering /dev/video0 fails etc.
I'm not sure what is happening.
Errors come from the "make" command and seem to relate to a firewire driver.

At present i'm not knowledgeable enough with linux to delve further.
any advice?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #15  
Old 02-24-2010, 11:05 AM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 13
Default

Quote:
Originally Posted by nickm View Post
In both setups after running the patch I get "Failed to open card" in the capture card setting on the back-end of mythtv. Re entering /dev/video0 fails etc.
I'm not sure what is happening.
Errors come from the "make" command and seem to relate to a firewire driver.

At present i'm not knowledgeable enough with linux to delve further.
any advice?
Well, if it does fail while running 'make', then, assuming that all development tools and the kernel source/headers are correctly installed, there is probably a compatibility problem with the kernel version you have. Posting the actual error messages with which 'make' stopped could be helpful. Also, what is your kernel version ? Maybe I can create a patch for a V4L revision that works with that.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #16  
Old 02-24-2010, 12:53 PM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 10
Default

thanks again for walking me through.
my kernel is 2.6.31-19-generic on both.
I have taken some lines of the error report out as the forum would not allow all.
make report

make -C /home/nick/v4l-dvb-14021dfc00f3/v4l
make[1]: Entering directory `/home/nick/v4l-dvb-14021dfc00f3/v4l'
creating symbolic links...
make -C firmware prep
make[2]: Entering directory `/home/nick/v4l-dvb-14021dfc00f3/v4l/firmware'
make[2]: Leaving directory `/home/nick/v4l-dvb-14021dfc00f3/v4l/firmware'
make -C firmware
make[2]: Entering directory `/home/nick/v4l-dvb-14021dfc00f3/v4l/firmware'
make[2]: Nothing to be done for `default'.
make[2]: Leaving directory `/home/nick/v4l-dvb-14021dfc00f3/v4l/firmware'
Kernel build directory is /lib/modules/2.6.31-19-generic/build
make -C /lib/modules/2.6.31-19-generic/build SUBDIRS=/home/nick/v4l-dvb-14021dfc00f3/v4l modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.31-19-generic'
CC [M] /home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.o
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:21:17: error: dma.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:22:21: error: csr1212.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:23:23: error: highlevel.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:24:19: error: hosts.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:25:22: error: ieee1394.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'node_of':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:90: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:90: warning: type defaults to 'int' in declaration of '__mptr'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:90: warning: initialization from incompatible pointer type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:90: error: invalid use of undefined type 'struct unit_directory'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'node_lock':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:95: error: 'quadlet_t' undeclared (first use in this function)
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:95: error: (Each undeclared identifier is reported only once
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:95: error: for each function it appears in.)
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:95: error: 'd' undeclared (first use in this function)
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:96: warning: ISO C90 forbids mixed declarations and code
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:98: error: implicit declaration of function 'hpsb_node_lock'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:99: error: 'EXTCODE_COMPARE_SWAP' undeclared (first use in this function)
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'node_read':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:107: error: implicit declaration of function 'hpsb_node_read'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'node_write':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:112: error: implicit declaration of function 'hpsb_node_write'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'start_iso':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:123: error: implicit declaration of function 'hpsb_iso_recv_init'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:123: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:125: error: 'HPSB_ISO_DMA_DEFAULT' undeclared (first use in this function)
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:127: warning: assignment makes pointer from integer without a cast
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:134: error: implicit declaration of function 'hpsb_iso_recv_start'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:137: error: implicit declaration of function 'hpsb_iso_shutdown'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'stop_iso':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:148: error: implicit declaration of function 'hpsb_iso_stop'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: At top level:
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:163: warning: 'struct hpsb_host' declared inside parameter list
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'fcp_request':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:176: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:177: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'node_probe':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:191: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:191: warning: type defaults to 'int' in declaration of '__mptr'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:191: warning: initialization from incompatible pointer type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:191: error: invalid use of undefined type 'struct unit_directory'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:196: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:197: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:198: error: implicit declaration of function 'CSR1212_TEXTUAL_DESCRIPTOR_LEAF_DATA'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:198: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:198: warning: assignment makes pointer from integer without a cast
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: At top level:
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:257: warning: 'struct unit_directory' declared inside parameter list
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'node_update':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:259: error: dereferencing pointer to incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: At top level:
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:267: error: variable 'fdtv_driver' has initializer but incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:268: error: unknown field 'name' specified in initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:268: warning: excess elements in struct initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:268: warning: (near initialization for 'fdtv_driver')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:269: error: unknown field 'id_table' specified in initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:269: warning: excess elements in struct initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:269: warning: (near initialization for 'fdtv_driver')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:270: error: unknown field 'update' specified in initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:270: warning: excess elements in struct initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:270: warning: (near initialization for 'fdtv_driver')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:271: error: unknown field 'driver' specified in initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:271: error: extra brace group at end of initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:271: error: (near initialization for 'fdtv_driver')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:274: warning: excess elements in struct initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:274: warning: (near initialization for 'fdtv_driver')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:277: error: variable 'fdtv_highlevel' has initializer but incomplete type
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:278: error: unknown field 'name' specified in initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:278: warning: excess elements in struct initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:278: warning: (near initialization for 'fdtv_highlevel')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:279: error: unknown field 'fcp_request' specified in initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:279: warning: excess elements in struct initializer
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:279: warning: (near initialization for 'fdtv_highlevel')
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'fdtv_1394_init':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:286: error: implicit declaration of function 'hpsb_register_highlevel'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:287: error: implicit declaration of function 'hpsb_register_protocol'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:290: error: implicit declaration of function 'hpsb_unregister_highlevel'
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c: In function 'fdtv_1394_exit':
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:297: error: implicit declaration of function 'hpsb_unregister_protocol'
make[3]: *** [/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.o] Error 1
make[2]: *** [_module_/home/nick/v4l-dvb-14021dfc00f3/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.31-19-generic'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/nick/v4l-dvb-14021dfc00f3/v4l'
make: *** [all] Error 2

Last edited by nickm; 02-24-2010 at 01:03 PM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #17  
Old 02-24-2010, 01:20 PM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 13
Default

Quote:
Originally Posted by nickm View Post
thanks again for walking me through.
my kernel is 2.6.31-19-generic on both.
I also have 2.6.31 (more precisely, 2.6.31.5, and openSuSE 11.2 x86_64 distribution). So, kernel version is hopefully not the issue.

Quote:
make[2]: Entering directory `/usr/src/linux-headers-2.6.31-19-generic'
CC [M] /home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.o
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:21:17: error: dma.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:22:21: error: csr1212.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:23:23: error: highlevel.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:24:19: error: hosts.h: No such file or directory
/home/nick/v4l-dvb-14021dfc00f3/v4l/firedtv-1394.c:25:22: error: ieee1394.h: No such file or directory
This information is indeed quite helpful. Doing a search for 'Ubuntu V4L "2.6.31" firedtv' I got links to several posts on various forums and mailing lists reporting similar errors while building V4L drivers on Ubuntu. So, you may try the various suggestions posted to fix the problem, which usually involve simply disabling the firedtv driver that causes the compile to fail. For example:
Re: v4l-dvb compile broken with stock Ubuntu Karmic build (firedtv-ieee1394.c errors) - msg#00486 - linux-media
[ubuntu] v4l-dvb compile error [Archive] - Ubuntu Forums
https://lists.ubuntu.com/archives/ub...er/009555.html
Hopefully these can be of some help to fix the compile error.

By the way, if you do get the compile to finish successfully, make sure to remove the old V4L driver modules from /lib/modules/<KERNELVERSION>/kernel/drivers/media first before running 'make install'. In particular, the file "/lib/modules/2.6.31.5-0.1-desktop/kernel/drivers/media/common/ir-common.ko" (change the path according to the distribution) should definitely be deleted, since I got a lot of module symbol errors and the new drivers did not work because of that file.

Last edited by istvanv; 02-24-2010 at 01:39 PM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #18  
Old 02-26-2010, 01:32 AM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 10
Default

Hi again

I got the patch to run
after "make config" and selecting N to the firewire.

All installed to a blank "/lib/modules/2.6.31.19-generic/kernel/drivers/media/" folder (no common or other folders)

After the install mythtv and mythbuntu now reports the correct card. But still no tuner function.
It only reports 3 inputs Television, composite and S-VHS.

From my understanding the card has 4 DVB-T,analog TV, composite and S-VHS, or something like that with the FM tuner. Under a generic install myth TV sees 4 inputs.
Do you think the tuner issue is still a driver issue or a myth TV config issue ?

Thanks for your patience. I have to say that I really like ubuntu. I went back to windows to check the card out.....I don't know how i put up with it for so long.

Last edited by nickm; 02-26-2010 at 01:34 AM.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #19  
Old 02-26-2010, 09:59 AM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 13
Default

Quote:
Originally Posted by nickm View Post
After the install mythtv and mythbuntu now reports the correct card. But still no tuner function.
It only reports 3 inputs Television, composite and S-VHS.

From my understanding the card has 4 DVB-T,analog TV, composite and S-VHS, or something like that with the FM tuner. Under a generic install myth TV sees 4 inputs.
Do you think the tuner issue is still a driver issue or a myth TV config issue ?
Well, it could be found out if the driver works by trying some other TV and radio applications (e.g. tvtime, kradio, etc.). Does analog TV and FM radio work with such programs ? You can also list the video devices created with:
Code:
ls -l /dev/video* /dev/radio* /dev/vbi* /dev/dvb/*/*
If the /dev/dvb devices do exist, is it possible to tune to a DVB channel with a simple utility like 'dvbtune' ?
Loading the xc4000 module with the "debug=1" option also allows printing debug information from the driver with the 'dmesg' command.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #20  
Old 02-27-2010, 03:21 AM
MythTV Friend in Training
 
Join Date: Feb 2010
Posts: 10
Default

partial success!!!


Under Xawtv I can get a signal... but it's analog.

MythTV will not scan channels when the card is set to V4L.

It allows scans under other card setting but they do not work.

Windows allows 4 inputs to this card. The new driver only 3. I'm starting to understand this all a little more. Is it the patch file or the firmware that determines this?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply

Tags
leadtek, xc4000


Similar Threads
Thread Thread Starter Forum Replies Last Post
Issues with Leadtek DTV2000H Jonchilds Installation Issues 0 02-22-2009 12:22 AM
cx8802_timeout leadtek + ubuntu 7.04 darlo Installation Issues 6 05-04-2007 03:57 PM
Mythtv problem with Leadtek PVR2000 nosilla99 Installation Issues 3 04-16-2007 04:36 PM
Leadtek Woes rflook Hardware 0 02-15-2007 06:10 PM
Leadtek WinFast PVR2000 wjohnsaunders Hardware 2 10-13-2006 10:24 AM

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 08:25 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2