Showing posts with label AF9015. Show all posts
Showing posts with label AF9015. Show all posts

2012-10-20

Naked hardware #5: TwinHan AzureWave AD-TU700(704J)

TwinHan AzureWave AD-TU700(704J)


TwinHan AzureWave AD-TU700(704J)

Key components:

Afatech AF9015
Afatech AF9013
MaxLinear MxL5003S


Keywords: TwinHan AzureWave AD-TU700(704J), Afatech AF9015, Afatech AF9013, MaxLinear MxL5003S, Afa Technology, ITE Tech, AF9035, AF9005, MxL5005S

Afatech AF9015

Afatech AF9015



There is two visible square dints on that metal plate. AF9015 is under the dint which is quite center of that picture, near USB-connector and just beside 8pin IC which is clearly visible. That 8pin IC is 2k serial eeprom, markings are ISSI 635 402B2GLI. As usually, eeprom is used for storing device specific information, notably USB ID and USB strings. AF9015 uses eeprom for storing a lot of board specific information too. For example dual mode, remote controller type, remote controller protocol, used RF-tuner, intermediate frequency (IF between demod and tuner). AF9015 clocked at 12.000 MHz. Crystal is located on the other side of the PCB.

AF9015 is quite popular USB DVB-T chip. It integrates DVB-T demodulator named AF9013. Firmware (dvb-usb-af9015.fw) is needed in order to operate. AF9015 firmware contains firmware for both AF9015 and AF9013. Chips has hardware PID filters which means it supports USB1.1 too.

Among the all typical features of DTV USB-interface there is one which is not so typical. That feature is support for two simulatanous television streams. There is external serial transport stream interface that could be used for connecting external demodulator. You could connect one external AF9013 demodulator to that chip which means there is total of two AF9013 demodulators as one is already integrated! That feature offers easy support for dual tuner devices.

AF9005 is predecessor and AF9035 is successor of that chip.

Linux driver:

name: dvb_usb_af9015
author: Antti Palosaari <crope@iki.fi>


Afatech AF9013

Afatech AF9013

AF9013 is just basic DVB-T demodulator and nothing more. That device in question is a little bit special as it has two tuners "dual tuner". As explained earlier, one AF9013 is integrated to AF9015 and the other is on separate chip. That not-integrated AF9013 is located under the dint just center of that picture. AF9013 needs firmware. In case of AF9013 integrated to AF9015 that firmware is carried with the AF9015 firmware.

Linux driver:

name: af9013
author: Antti Palosaari <crope@iki.fi>


MaxLinear MxL5003S

MaxLinear MxL5003S





Unfortunately MxL5003S RF-tuners are hidden under that metal plate. There is two MxL5003S tuners as this device is dual tuner model. Tuners are clocked at 16 MHz, crystal is likely under the metal plate too.


MxL5003S is very typical digital television silicon tuner. Absolutely nothing special to mention.

There is more feature rich model MxL5005S that supports analog too. MxL5003S and MxL5005S are same silicon design - MxL5005S driver could ran MxL5003S too.


Linux driver:

name: mxl5005s
author: Steven Toth


USB interface

IDLE current drain without a driver: 45mA




Pictures















2012-06-08

AF9015 driver converted to new DVB USB

AF9015 driver converted!

I finally decided to publish one rather complex DVB USB driver as a demonstration what it looks like. I selected Afatech AF9015 driver as it is one of the most complex and main motivator of whole DVB USB changes. I have also Anysee, AU6610 and EC168 drivers converted, but those are far away complexity compared for AF9015, since not so interesting.

Code size reduced a lot

All-in-all, code size goes down rather much. It was 2084 LOC and now it is 1609 LOC - it is near 500 LOC less. Basically it is all coming from the removed hacks. Now all needed functionality is generalized to the common DVB USB and ugly hacks are removed from the individual driver.

PATCH: af9015: switch to new DVB-USB

Near future plans

I am quite happy for features common DVB USB now supports. I think all but dynamic USB ID are implemented somehow for those I initially planned. There is still much work to do when implementing all correctly and test error paths. There is still at one big technical problem to solve. It is that delayed init which was added to fix firmware loading. I can get it crashing rather easily just repeatedly loading and unloading DVB USB driver... I suspect it is coming from the fact both workqueue running delayed device intialization and USB-core end up same routines. For example workqueue is downloading firmware and at the same time module is unloaded by user. Likely some locking is needed to prevent module unload in that case.