Afatech AF9015: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(rework the "howto develop a usb based dvb device driver" section)
m (fix dk-5203 link)
 
(39 intermediate revisions by 17 users not shown)
Line 1: Line 1:
A [[DVB-T]] [[Demodulator|demodulator]] from [[Afatech]]. This is the company's second generation COFDM demodulator, and is the successor to the [[Afatech AF9005|AF900x]] family of chips.
A combination [[DVB-T]] [[Demodulator|demodulator]] and [[USB]] [[USB interface chipsets|bridge]] chip from [[Afatech]]. This is the company's second generation COFDM demodulator, and is the successor to the [[Afatech AF9005|AF900x]] family of chips. Given the chip's dual nature, the AF9015 is fairly complex. It is also very flexible, supporting a wide variety of device configurations (single USB, dual USB, Platform mode, PCI/PCIe based devices, and even SPI is supported by it with some tuners (such as for a Consumer Electronics product that runs Windows CE)). Documentation for the AF901x family can be obtained from AFA (under [[NDA]]), but it is apparently confusing, as well as incomplete -- as there are a lot of areas that are undocumented.
Unfortunately, tuner devices build on these chips are known to be unstable demanding frequent cold boots.


The AF901x family consists of the following chips:
The AF901x family consists of the following chips:
* ''(list chips here ...or perhaps start a new article for the AF901x family, and leave this one dedicated to the AF9015)''
* (list chips here)


{{Device_List_Low_Detail/Header
The AF9015 chip is the main USB control/demux in found in some currently available [[DVB-T USB Devices|DVB-T USB devices]], such as:
| content =
{{USB_Device_Data
|renderwith=Device_List_Low_Detail/Row
|selatt1=usbbridge
|selval1=af9015
}}
}}


Examples of [[DVB-T USB Devices|DVB-T USB devices]] in which the AF9015 chip can be found include:
* Dongles with USB ID 15a4:9016 or 15a4:9015
* Dongles with USB ID 15a4:9016 or 15a4:9015
* The WandTV (QT1010)
* The WandTV (QT1010)
* The [http://www.unisupport.net/lang/au/index.html Elements High Definition DVB-T Receiver Model no DK-5203].
* The [http://wayback.archive.org/web/20101012045841/http://www.unisupport.net/lang/au/usb_dvb-t.html Elements/Tevion High Definition DVB-T Receiver Model no DK-5203].
* [http://support.a-link.com/dtu/upd_idm.htm A-Link DTU(m)] (15a4:9016, MT2060)
* [http://support.a-link.com/dtu/upd_idm.htm A-Link DTU(m)] (15a4:9016, MT2060)
* Fujitech (15a4:9016)
* Fujitech (15a4:9016, MT2061)
* [http://www.equinux.com/us/products/tubestick/index.html TubeStick] (15a4:9015) (Mac)
* [http://www.equinux.com/us/products/tubestick/index.html TubeStick] (15a4:9015, for Mac)
* Geniatech T328B (15a4:9016, QT1010)
* Geniatech T328B (15a4:9016, QT1010)
* BestBuy Easy TV USB Stick (MT2061)
* BestBuy Easy TV USB Stick (MT2061)
* [http://www.denver-electronics.com/pages/visnyhed.asp?newsguid=24110&menuGuid= DENVER DVBT-2U] (15a4:9016, MT2060(F))
* [[TerraTec Cinergy T RC]] Mk II [http://www.terratec.net/en/products/Cinergy_T_Stick_RC_97818.html] (0ccd:0097, AF9015A + TDA18218HN)
* [[TerraTec Cinergy T USB XE]] Vers.2 [http://tven.terratec.net/modules.php?op=modload&name=News&file=article&sid=246] (0ccd:0069, Version 1 uses AF9005)
* Digitalnow TinyTwin
* [[Hama DVB-T USB2 Stick]] (15a4:9016, MT2060)
* [http://www.maxmediatek.com/pd-page/DVB-T_USB.htm MaxMedia 395U (1b80:e395), 397U (1b80:e397) & 399U (1b80:e399)] these are sold under HiVision & K-World branding
* [http://www.leadtek.com/eng/tv_tuner/overview.asp?lineid=6&pronameid=407 Leadtek USB Dongle Gold] (0413:6029)
* [http://www.blusens.com/en/soporte/archivo-de-productos/T5/ Blu:Sens T5] (15a4:9016, MT2060) (Only works with af9015 firmware 5.1.0.0)


The AF9015 chip is fairly complex and supports a wide variety of device configurations (single USB, dual USB, Platform mode, PCI/PCIe based devices, and even SPI is supported by it with some tuners (such as for a Consumer Electronics product that runs Windows CE)).

Documentation for the AF901x family can be obtained from AFA (under [[NDA]]), but it is apparently confusing, as well as incomplete -- as there are a lot of areas that are undocumented.


==Drivers==
==Drivers==

At present there are three different drivers Linux drivers available for the AF901x. That may strike one as being strange or showing signs of a state of dis-coordination, but in actuality, each driver has its own reason for being, and collectively they highlight the relative complexity of the chip and the flexibility in device design that its usage permits.
At present there are three different Linux drivers available for the AF901x. That may strike one as being strange or showing signs of a state of dis-coordination, but in actuality, each driver has its own reason for coming into existence. In addition, taken collectively, the development of three different drivers highlights the relative complexity of the chip, as well as the flexibility in device design that its employment permits.


===Opensource Mercurial Repositories===
===Opensource Mercurial Repositories===

* http://jusst.de/hg/af901x ... This is a second driver attempt for the AF901x by Manu Abrahams. In his personal assessment, he got many things right, but some things are still wrong. In addition, his driver works with just one particular device
The open source driver is now included in the linux kernel trunk since version 2.6.28. It should work out of the box !
* http://linuxtv.org/hg/~anttip/af9015/ (Supported tuners are: MT2060, MT2061 and QT1010.) ... This is a driver written from scratch, first by reverse engineering and afterwards finalized from the reference kit, by Antti Palosaari, that is specific to the AF9015 chip alone, and for device's with a "MASTER based configuration".

* http://jusst.de/hg/af901x ... This is a second driver attempt for the AF901x by Manu Abrahams. In his personal assessment, he got many things right, but some things are still wrong. In addition, his driver works with just one particular device.

* http://linuxtv.org/hg/~anttip/af9015/ (Supported tuners are: MT2060, MT2061 and QT1010.) ... This is a driver written from scratch, first by reverse engineering and afterwards finalized from the reference kit, by Antti Palosaari, that is specific to the AF9015 chip alone, and for devices with a "MASTER based configuration".
** You might also need to fetch a firmware file from http://palosaari.fi/linux/v4l-dvb/firmware/af9015/ before the driver works. The driver expects to find it in /lib/firmware/<kernel-version>/dvb-usb-af9015.fw

===Vendor Released Driver (Last Up to date)===
No external firmware needed !

* The modified Vendor released driver for current kernels (2.6.24+) is available from http://tombcore.free.fr/af9015.tar.bz2
Install linux headers, merge it with the last v4l-dvb source, then make, make install and enjoy.

* DKMS package for the driver available here : http://tombcore.free.fr/af9015.deb
* vl4-dvb + driver merged snapshot available here : http://tombcore.free.fr/af9015_150209.tar.bz2
(just make, make install and enjoy)

Full tutorial (french wiki) here : http://doc.ubuntu-fr.org/af9015


===Vendor Released Driver===
===Vendor Released Driver===

* A vendor-written driver specific to the AF9015 chip alone is available from http://af.zsolttech.com/. Apparently, AFA had this driver written (authour, Rick Huang?) specifically for a single device from one customer, who then in turn ended up violating the NDA. (It was from that leaked driver that Antti was able to largely base/ and derive his RE attempts; see above discussion).
* A vendor-written driver specific to the AF9015 chip alone is available from http://www.digittrade.de/shop/info/stick_treiber/linux/Linux_MT2060_2.6.20.tar . Apparently, AFA had this driver written (author Rick Huang?) specifically for a single device from one customer, who then in turn ended up violating the NDA.
http://www.linuxtv.org/pipermail/linux-dvb/2007-November/022050.html
In any regard, users have reported that this vendor driver is indeed working, including for x64_64 (for some further information see the threads [http://forum.ubuntuusers.de/topic/127976/#1029411 here] and [http://marc.info/?l=linux-dvb&m=119437137719022&w=2 here].
In any regard, users have reported that this vendor driver is indeed working, including for x64_64 (for some further information see the threads [http://forum.ubuntuusers.de/topic/127976/#1029411 here] and [http://marc.info/?l=linux-dvb&m=119437137719022&w=2 here].


Line 41: Line 75:
typedef unsigned int UData_t;
typedef unsigned int UData_t;


Then compile, install, modprobe dvb_usb_af9015 and you are finished.
Then compile, install, modprobe dvb_usb_af9015 and you are finished.


=== Original Vendor-released driver ===
===A Comprehensive OSS Driver===
For its part, Afatech does not want any of the above driver attempts to make their way into the kernel, as none of them are very robust in terms of chip support.


The above device driver probably originated from the code found at
Instead, AFA has embarked upon the development of yet another OSS driver, which will be generic in that it will be capable of supporting the entire AF901x family as well as all possible device configurations permitted. In addition to the expectation that it will be this driver that is eventually adopted into the kernel, AFA have also signaled that they intend provide continuous support (i.e. they will stay on as the driver's maintainer).
[http://www.digittrade.de/shop/info/stick_treiber/linux/linuxdriver.zip].


This original code has since been modified by somebody else (at afatech?)
Currently, this newest driver has reached a second round of testing in AFA labs, but that has only been in conjunction (with some peripheral manufacturers) with a few devices, and, as it stands, the code is still not particularly generic (due to both the complexities of the chip itself as well as those involved in getting the various device configurations to work). So, as of yet, there currently isn't anything for the end user to test. However, as soon things progress past this stage, there will be something released for users to test. There is no specific release timeframe set for this, but hopefully it will be soon, as the chip manufacturer (as well as everybody else involved) is under pressure, due to the large adoption of the chip by different peripheral manufacturers (Avermedia, Terratec, Azurewave, DigitalNow, Pinnacle, as well as some number of unbranded Chinese manufacturers too). In short, a lot more devices based on this chipset are expected to materialize.
to use the MXL5005 tuner and the Digitalnow TinyTwin is partly functional.


=== A Comprehensive OSS Driver ===
==External Links==
* [http://www.afatech.com.tw/product/e_product_AF901x.htm Afatech AF9015 product page]
* [http://otit.fi/~crope/v4l-dvb/af9015/af9015_firmware_cutter/firmware_files/ Afatech AF9015 firmware]


For its part, Afatech does not want any of the above driver attempts to make their way into the kernel, as none of them are very robust in terms of chip support.


Instead, AFA has embarked upon the development of yet another OSS driver, which will be generic in that it will be capable of supporting the entire AF901x family as well as all possible device configurations permitted. In addition to the expectation that it will be this driver that is eventually adopted into the kernel, AFA have also signaled that they intend provide continuous support (i.e. they will stay on as the driver's maintainer).
------


Currently, this newest driver has reached a second round of testing in AFA labs, but that has only been in conjunction (with some peripheral manufacturers) with a few devices, and, as it stands, the code is still not particularly generic (due to both the complexities of the chip itself as well as those involved in getting the various device configurations to work). So, as of yet, there currently isn't anything for the end user to test. However, as soon things progress past this stage, there will be something released for users to test. There is no specific release timeframe set for this, but hopefully it will be soon, as the chip manufacturer (as well as everybody else involved) is under pressure, due to the large adoption of the chip by different peripheral manufacturers (Avermedia, Terratec, Azurewave, DigitalNow, Pinnacle, as well as some number of unbranded Chinese manufacturers too). In short, a lot more devices based on this chipset are expected to materialize.


=== Missing drivers ===
{{Note|The following information, which has largely been adapted from an earlier part of this article, will soon be moved to another, more appropriate, spot in the wiki}}


There are a number of devices based on the TDA18218HK tuner chip currently not working in Linux but work is being done by subscribers of the gmane.linux.drivers.video-input-infrastructure group: [http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/13208]


==External Links==
This article is meant to serve as an introduction to the task of developing a driver for a usb based dvb device. Currently, in terms of this subject, there are a number of scattered resources available that, when organized together, could form the basis of a howto suitable for the noice developer. Hence, it might be very worthwile documenting the process.

The very first thing you would want to do is to identify the components used in your device. Refer to the section entitled "[[Supported_Hardware#Gathering Information About Your Unidentified/Unsupported Device|Gathering Information About Your Unidentified/Unsupported Device]]" for some clues on how to proceed with that task.

The next logical step would be to try to obtain technical datasheets on the components. Many chip manufacturers make this documentation readiablily available, while in other cases a google search for the chip's part or model number is necessary to track down other sources for such documentation.

To start with, there are some great Linux USB tutorials on Linux Journal:

* start here: [http://www.linuxjournal.com/article/4786 How to Write a Linux USB Device Driver]
* then here: [http://www.linuxjournal.com/article/7353 Writing a Simple USB Driver]
* [http://www.linuxjournal.com/article/5604 Hot Plug]
* and then: [http://www.linuxjournal.com/article/7582 Snooping the USB Data Stream]


* [http://www.ite.com.tw/EN/products_more.aspx?CategoryID=6&ID=15,62 Afatech AF9015 product page]
Also get the source for V4L-DVB:
* [http://palosaari.fi/linux/v4l-dvb/firmware/af9015// Afatech AF9015 firmware]
* [http://www.linuxtv.org/repo/ V4L-DVB download using mercurual]
* [http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/13208 Afatech AF9015 with TDA18218HK tuner driver work]
You will find the usb drivers are in ''./v4l-dvb/linux/drivers/media/dvb/dvb-usb''. Have a bit of a browse through them while you're reading through the first article above, get a feel for how the driver is put together (There is a procedure described in a thread found [http://www.ubuntuforums.org/showthread.php?p=1067326 here]).
* [http://ubuntuforums.org/showthread.php?t=606487&page=5 AF9015 with TDA18218HK tuner driver user stories]


[[Category:Chipsets]]
Sometimes you can get a good head start in your development efforts by attempting to leverage parts of earlier released code -- that which may have been written specificly for the exact same chip as contained in your own device or via code for a near similar chip, such as say from a previous production generation. Modifying existing code to suite your own endeavour can greatly expediate the process of driver development.
[[Category:Drivers]]

Latest revision as of 05:18, 4 June 2013

A combination DVB-T demodulator and USB bridge chip from Afatech. This is the company's second generation COFDM demodulator, and is the successor to the AF900x family of chips. Given the chip's dual nature, the AF9015 is fairly complex. It is also very flexible, supporting a wide variety of device configurations (single USB, dual USB, Platform mode, PCI/PCIe based devices, and even SPI is supported by it with some tuners (such as for a Consumer Electronics product that runs Windows CE)). Documentation for the AF901x family can be obtained from AFA (under NDA), but it is apparently confusing, as well as incomplete -- as there are a lot of areas that are undocumented.

Unfortunately, tuner devices build on these chips are known to be unstable demanding frequent cold boots.

The AF901x family consists of the following chips:

  • (list chips here ...or perhaps start a new article for the AF901x family, and leave this one dedicated to the AF9015)


Vendor Device/Model Supported Pictures / URL E
Afatech AF9015 DVB-T USB2.0 stick Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry
AVerMedia A309 Mini Card Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry
Alcor DTV DUO Yes, in kernel since 2.6.37 Jump to the place where you can edit this entry
AVerMedia AVerTV Digi Volar X (A815) Yes, in kernel since 2.6.28 Volar x.png[1] Jump to the place where you can edit this entry
AVerMedia AVerTV Volar Black HD (A850) Yes, in kernel since 2.6.30-rc1 AVerMedia AVerTV Volar Black HD (A850).png[2] Jump to the place where you can edit this entry
AVerMedia AVerTV Volar GPS 805 (A805) Yes, in kernel since 2.6.31 Jump to the place where you can edit this entry
Conceptronic USB2.0 DVB-T CTVDIGRCU V3.0 Yes, in kernel since 2.6.31 Jump to the place where you can edit this entry
Dikom USB-DVB-T Ultimate Yes, in kernel since 2.6.30 [3] Jump to the place where you can edit this entry
DigitalNow TinyTwin DVB-T Receiver Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry
DigitalNow TinyTwin DVB-T Receiver V2 Yes, in kernel since 2.6.34 Jump to the place where you can edit this entry
DigitalNow TinyTwin DVB-T Receiver V3 Yes, in kernel since 2.6.37 Jump to the place where you can edit this entry
DIGITTRADE DVB-T Stick Yes, in kernel since 2.6.?? [4] Jump to the place where you can edit this entry
Fujitsu-Siemens Slim Mobile USB DVB-T Yes, in kernel since 2.6.28 Fujitsu.JPG Jump to the place where you can edit this entry
Geniatech T328B Yes, in kernel since 2.6.28 Geniatech t328b.png[5] Jump to the place where you can edit this entry
Genius TVGo DVB-T03 (af9015 version) Yes, in kernel since 2.6.31 Jump to the place where you can edit this entry
Hama DVB-T USB2 Stick Yes, in hg since 2008-09 HamaDVB T-USB2-Stick.jpg Jump to the place where you can edit this entry
KWorld USB DVB-T TV Stick II (VS-DVB-T 395U) Yes, in kernel since 2.6.29 Jump to the place where you can edit this entry
KWorld USB Dual DVB-T TV Stick (DVB-T 399U) Yes, in kernel since 2.6.28 KWorld USB Dual DVB-T TV Stick (DVB-T 399U).png[6] Jump to the place where you can edit this entry
KWorld PlusTV Dual DVB-T PCI (DVB-T PC160-2T) Yes, in kernel since 2.6.28 Kworld pc160.jpg Jump to the place where you can edit this entry
KWorld Digial MC-810 Yes, in kernel since 2.6.31 Jump to the place where you can edit this entry
Leadtek WinFast DTV Dongle Gold Yes, in kernel since 2.6.28 Leadtek gold.jpg[7] Jump to the place where you can edit this entry
LifeView LV5T Yes, in hg since 2008-09 [8] Jump to the place where you can edit this entry
MSI DIGIVOX Duo Yes, in kernel since 2.6.28 [9] Jump to the place where you can edit this entry
MSI DIGIVOX mini II V3.0 (AF9015/MT2060 version) aka. K-Vox Yes, in kernel since 2.6.28 Dvb-t-usb-msi-digivox-ii-rev3-001.jpg[10] Jump to the place where you can edit this entry
MSI DIGIVOX mini III Yes, in kernel since 2.6.28 MSI DIGIVOX mini III.jpg Jump to the place where you can edit this entry
Peak 203244AGPK DVB-T Digital TV USB Stick Yes, in kernel since 2.6.30 Peak-203244agpk.jpg[11] Jump to the place where you can edit this entry
Pinnacle PCTV 71e Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry
Sveon Sveon STV22 Yes, in kernel since 3.1 Sveonstv22.png[12] Jump to the place where you can edit this entry
Shenzhen Forward Video EzTV859 Yes, in kernel since 2.6.28 [13] [14] Jump to the place where you can edit this entry
Telstar Starstick 2 Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry
TerraTec Cinergy T USB RC (mk II) Yes, in kernel since 2.6.37 Dvb-t-usb-terratec-cinergy-T-RC-mk2-001.jpg[15] Jump to the place where you can edit this entry
TerraTec Cinergy T USB XE (rev2) Yes, in kernel since 2.6.28 Dvb-t-usb-terratec-cinergy-t-usb-xe-001.jpg Jump to the place where you can edit this entry
Tevion DK-5203 Yes, in hg since 2008-09 Jump to the place where you can edit this entry
TrekStor DVB-T USB Stick Yes, in kernel since 2.6.30 Jump to the place where you can edit this entry
TVISTO TVT-DVBTUSB2 Yes, in kernel since 2.6.28 Tvisto USB DVB-T 15a4-9016.png Jump to the place where you can edit this entry
TVISTO TVT-DVBTUSB3 Yes, in kernel since 2.6.28 TVISTO new black DVB-T USB.png Jump to the place where you can edit this entry
TwinHan AzureWave AD-TU700(704J) Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry
Xtensions XD-380 Yes, in kernel since 2.6.28 Jump to the place where you can edit this entry

Examples of DVB-T USB devices in which the AF9015 chip can be found include:


Drivers

At present there are three different Linux drivers available for the AF901x. That may strike one as being strange or showing signs of a state of dis-coordination, but in actuality, each driver has its own reason for coming into existence. In addition, taken collectively, the development of three different drivers highlights the relative complexity of the chip, as well as the flexibility in device design that its employment permits.

Opensource Mercurial Repositories

The open source driver is now included in the linux kernel trunk since version 2.6.28. It should work out of the box !

  • http://jusst.de/hg/af901x ... This is a second driver attempt for the AF901x by Manu Abrahams. In his personal assessment, he got many things right, but some things are still wrong. In addition, his driver works with just one particular device.
  • http://linuxtv.org/hg/~anttip/af9015/ (Supported tuners are: MT2060, MT2061 and QT1010.) ... This is a driver written from scratch, first by reverse engineering and afterwards finalized from the reference kit, by Antti Palosaari, that is specific to the AF9015 chip alone, and for devices with a "MASTER based configuration".

Vendor Released Driver (Last Up to date)

No external firmware needed !

Install linux headers, merge it with the last v4l-dvb source, then make, make install and enjoy.

(just make, make install and enjoy)

Full tutorial (french wiki) here : http://doc.ubuntu-fr.org/af9015

Vendor Released Driver

http://www.linuxtv.org/pipermail/linux-dvb/2007-November/022050.html

In any regard, users have reported that this vendor driver is indeed working, including for x64_64 (for some further information see the threads here and here.

For devices based on the MT2060 tuner (such as the Geniatech T328B) you may need to patch the file MT2060M.h in the following way:

replace

typedef unsigned long   UData_t;

with

typedef unsigned int   UData_t;

Then compile, install, modprobe dvb_usb_af9015 and you are finished.

Original Vendor-released driver

The above device driver probably originated from the code found at [18].

This original code has since been modified by somebody else (at afatech?) to use the MXL5005 tuner and the Digitalnow TinyTwin is partly functional.

A Comprehensive OSS Driver

For its part, Afatech does not want any of the above driver attempts to make their way into the kernel, as none of them are very robust in terms of chip support.

Instead, AFA has embarked upon the development of yet another OSS driver, which will be generic in that it will be capable of supporting the entire AF901x family as well as all possible device configurations permitted. In addition to the expectation that it will be this driver that is eventually adopted into the kernel, AFA have also signaled that they intend provide continuous support (i.e. they will stay on as the driver's maintainer).

Currently, this newest driver has reached a second round of testing in AFA labs, but that has only been in conjunction (with some peripheral manufacturers) with a few devices, and, as it stands, the code is still not particularly generic (due to both the complexities of the chip itself as well as those involved in getting the various device configurations to work). So, as of yet, there currently isn't anything for the end user to test. However, as soon things progress past this stage, there will be something released for users to test. There is no specific release timeframe set for this, but hopefully it will be soon, as the chip manufacturer (as well as everybody else involved) is under pressure, due to the large adoption of the chip by different peripheral manufacturers (Avermedia, Terratec, Azurewave, DigitalNow, Pinnacle, as well as some number of unbranded Chinese manufacturers too). In short, a lot more devices based on this chipset are expected to materialize.

Missing drivers

There are a number of devices based on the TDA18218HK tuner chip currently not working in Linux but work is being done by subscribers of the gmane.linux.drivers.video-input-infrastructure group: [19]

External Links