Asus U3100 Mini plus DVB-T: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
(af9035 no longer works.)
No edit summary
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
There is now kernel support for the demodulator and the USB bridge (af9035 chip) and for the tuner (FC2580).
This is just some thoughts and rambling about the Asus U3100 based on the AF9035 instead of the previous DiB models.


Glue code to support the Asus U3100 Mini plus has now landed in the current staging tree and has been pull-requested for 3.7.
This device is currently only partially supported. The below stuff worked only on specific versions and wasn't that great at that.

http://git.linuxtv.org/media_tree.git/tree/staging/for_v3.7


There is now kernel support for the demodulator and the USB bridge (af9035 chip) but not for the tuner (FC2580).


{{Device List Full Detail/Header
{{Device List Full Detail/Header
Line 12: Line 13:
}}
}}


Image of the tuner and USB Bridge/Demodulator.
[[image:Asus_U3100_Mini_plus_DVB-T_02.JPG|120px]] [[image:Asus_U3100_Mini_plus_DVB-T_03.JPG|120px]]


Image of the other side of the V2
[[EzCap_DVB_T_Stick]] is the guide to be followed to get this stick working. Read both articles thoroughly and it should be able to get it working.
[[image:Dvb-t_asus_u3100mini_plus_v2_2.JPG|120px]]


USB Quircks should no longer be needed for this device. For the time being still listed here.
A [http://www.ubuntu-hr.org/forum/index.php?topic=5668.0 croatian forum post]. They link an [http://www.linux-cam.com/downloads/MiniTV_For_Linux.rar archive] with an installer in it.

When running the shell script in this archive, setup is called which extracts data to /tmp. If the setup is canceled in any way, the temporary directory gets removed. Whats interesting is, that in this directory, is the full source for various tuners and for the af9035.

To get the Asus U3100 working with this source package, a few things need to be modified. Firstly, there is a syntax error. The defines (commented):
<pre>#define CRYSTAL_19.2_MHZ
#define CRYSTAL_20.48_MHZ</pre>
cannot have dots in them. Remove the dots with a find and replace to something without one, such like:
<pre>#define CRYSTAL_19_MHZ
#define CRYSTAL_20_MHZ</pre>

I've created a repository including my changes. Legally, I don't know what its status is, but at least there's source and has been and it can be made workable. Far more then what Afatech is doing themselves and their misterious opensource driver nobody has seen yet. Feel free to clone and send patches, I will gladly integrate them. Don't expect a proper review, as I don't really know what I'm doing ;)

[http://git.schinagl.nl/AF903x_SRC.git/ AF903x source]

Then the USB ID for the U3100plus needs to be added to the kernels in drivers/media/dvb/dvb-usb/dvb-usb-ids.h
Such like:
<pre>
#define USB_PID_ASUS_U3100MINI 0x1779
</pre>

Then, the af903x driver needs to be told about this ID. This is done in af903x-devices.c
Find the struct af903x_usb_id_table and add the ID's:
<pre>
struct usb_device_id af903x_usb_id_table[] = {
{ USB_DEVICE(0x15A4,0x1000) },
{ USB_DEVICE(0x15A4,0x1001) },
{ USB_DEVICE(0x15A4,0x1002) },
{ USB_DEVICE(0x15A4,0x1003) },
{ USB_DEVICE(0x15A4,0x9035) },
{ USB_DEVICE(USB_VID_ASUS, USB_PID_ASUS_U3100MINI) },
{ 0}, /* Terminating entry */
};
</pre>

file af903x-drv.c in all calling functions DL_SetBusTuner with hardcoded tuner Tuner_Afatech_AF9007, or other
<pre>
error = DL_SetBusTuner (PDC, Bus_USB, Tuner_Afatech_AF9007);
</pre>
must be change to Tuner_FCI_FC2580
<pre>
error = DL_SetBusTuner (PDC, Bus_USB, Tuner_FCI_FC2580);
</pre>


file af903x-devices.c
<pre>
line with .num_adapters = 1, needs to change to 2
</pre>

And finally, add the struct to the device section listing the devices.
<pre>
.num_device_descs = 2,
.devices = {
{"ITEtech USB2.0 DVB-T Receiver",
{&af903x_usb_id_table[0],
&af903x_usb_id_table[1],
&af903x_usb_id_table[2],
&af903x_usb_id_table[3],
&af903x_usb_id_table[4],
NULL},
{NULL},
}, {"Asus U3100MINI_PLUS/T/RC Receiver",
{&af903x_usb_id_table[5],
NULL},
{NULL},
}, {
NULL
},
}

</pre>
Don't know if this is ALL what is needed though.

USB Quircks are also needed for this device.
<pre>options usbhid quirks=0x0b05:0x1779:0x0004</pre>
<pre>options usbhid quirks=0x0b05:0x1779:0x0004</pre>


The original rare drivers v9.08.14.1 had been uploaded to http://ubuntuforums.org/showpost.php?p=10176778&postcount=20
dmesg output:
<pre>
[ 37.342184] usb 1-3.1: new high speed USB device using ehci_hcd and address 6
[ 37.422512] usb 1-3.1: New USB device found, idVendor=0b05, idProduct=1779
[ 37.422524] usb 1-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 37.422533] usb 1-3.1: Product: AF9035A USB Device
[ 37.422541] usb 1-3.1: Manufacturer: Afa Technologies Inc.
[ 37.422549] usb 1-3.1: SerialNumber: AF0102020700001
[ 37.431790] input: Afa Technologies Inc. AF9035A USB Device as /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.1/1-3.1:1.1/input/input8
[ 37.432503] generic-usb 0003:0B05:1779.0002: input,hidraw1: USB HID v1.01 Keyboard [Afa Technologies Inc. AF9035A USB Device] on usb-0000:00:1d.7-3.1/input1
[ 37.727056] AF903X: af903x_module_init
[ 37.727110] DRIVER_RELEASE_VERSION : v9.08.14.1
[ 37.727117] FW_RELEASE_VERSION : v8_8_63_0
[ 37.727125] API_RELEASE_VERSION : 200.20090402.0
[ 38.248134] dvb-usb: found a 'Asus U3100MINI_PLUS/T/RC Receiver' in warm state.
[ 38.346245] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 38.346779] DVB: registering new adapter (Asus U3100MINI_PLUS/T/RC Receiver)
[ 38.353203] DVB: registering adapter 0 frontend 0 (AF903X USB DVB-T)...
[ 38.364856] dvb-usb: Asus U3100MINI_PLUS/T/RC Receiver successfully initialized and connected.
[ 38.364946] usbcore: registered new interface driver dvb_usb_af903x
</pre>


I can't figure out how to load or tell the af9035 what tuner to use. dvbscan doesn't do much either.
<pre>dvbscan /usr/share/dvb/dvb-t/nl-All
Unable to query frontend status</pre>
and adding -out vdr13 just waits for a long time. Leds don't go on.

Update.
dvbscan just doesn't seem to work. I haven't tried scan yet, but [http://wirbel.htpc-forum.de/w_scan/index2.html w_scan] seems to be working though! Generating a intial scan config makes scan work.


Compiling v9.08.14.1 may be very adventurous. I have made some pathology to original driver :) and reduce it only to ASUS_U3100_mini device and fix various incompatibilities. Minimum additional modification are needed to installing. Works well for kernel < 2.6.35.
In the meantime, I have gotten it to work! Success, hurray. Suspend is utterly broken when running VDR though. Not sure if it is related to VDR or the module. Also, the module has some bug with it's register count, sometimes I see it showing up as a huge number, looking like it went from 0 -1 on an unsigned 32 bit int.


This old driver currently still lives in my git repository for the [http://git.schinagl.nl/AF903x_SRC.git AF903x] and keep pushing changes I receive until 3.7 is released.
Feel free to send me a message to get this asus stick working :)


'''09.07.2013'''
edit: I have uploaded the rare drivers v9.08.14.1 to http://ubuntuforums.org/showpost.php?p=10176778&postcount=20
The device does not seem to work.
Seems to be a problem with I2C communication between frontend and tuner.
The error is
dvb_usb_v2: 'Asus U3100Mini Plus' error while loading driver (-19)
dvb_usb_v2: 'Asus U3100Mini Plus' successfully deinitialized and disconnected


'''19.07.2013'''
edit2: Thanks for upload, some peoples are contacting me to get help with newest kernel and gcc. Compiling v9.08.14.1 may be very adventurous. I have made some pathology to original driver :) and reduce it only to ASUS_U3100_mini device and fix various incompatibilities. Minimum additional modification are needed to installing. Works well for kernel < 2.6.35. Regarding wiki copyrights restriction I can't upload it until I find out options of published.
Ubuntu 13.04, kernel 3.11.0-999-generic #201307180423 x86_64, firmware http://palosaari.fi/linux/v4l-dvb/firmware/af9035/dvb-usb-af9035-02.fw_f71efe295151ba76cac2280680b69f3f_11.5.9.0_5.17.9.1.
In circa 1 case of 50 is the device successfully identified by i2c and working:
Jul 18 22:08:22 thinkpad kernel: [ 2249.356481] i2c i2c-6: af9033: firmware version: LINK=11.5.9.0 OFDM=5.17.9.1
Jul 18 22:08:22 thinkpad kernel: [ 2249.360331] usb 1-1: DVB: registering adapter 0 frontend 0 (Afatech AF9033 (DVB-T))...
Jul 18 22:08:22 thinkpad kernel: [ 2249.412901] i2c i2c-6: fc2580: FCI FC2580 successfully identified
Jul 18 22:08:22 thinkpad kernel: [ 2249.424688] usb 1-1: dvb_usb_v2: 'Asus U3100Mini Plus' successfully initialized and connected


Otherwise it throws the "error while loading driver (-19)" mention above. Full part of syslog and file contents I have collected from /sys/bus/i2c/devices/i2c-6/device/ for debugging can be found here: http://ubuntuone.com/5u0sfwtb2HZihFScRGsaPR .


--[[User:SignElSoft|SignElSoft]] 22:04, 20 February 2014 (CET)<br>
I have seen the same problem.<br>
I have made a little change on the /usr/src/linux/drivers/media/tuners/fc2580.c file, and compiled a new fc2580.ko module, and it works fine.
<br><br>
struct dvb_frontend *fc2580_attach(struct dvb_frontend *fe,
struct i2c_adapter *i2c, const struct fc2580_config *cfg)<br>
{<br>
...<br>
<br>


/* check if the tuner is there */<br>
Update:
ret = fc2580_rd_reg(priv, 0x01, &chip_id);<br>
I've created a git repository for the [http://git.schinagl.nl/AF903x_SRC.git AF903x] and will push changes mentioned here into it asap. In many moons time, I will try to cleanup the build structure to make it more streamlined with other packages.
/* *************** COMMENT OUT THIS PART *****************************<br>
if (ret < 0)<br>
goto err;<br>
<br>
dev_dbg(&priv->i2c->dev, "%s: chip_id=%02x\n", __func__, chip_id);<br>
<br>
switch (chip_id) {<br>
case 0x56:<br>
case 0x5a:<br>
break;<br>
default:<br>
goto err;<br>
}<br>
*/<br>
...<br>

Latest revision as of 21:04, 20 February 2014

There is now kernel support for the demodulator and the USB bridge (af9035 chip) and for the tuner (FC2580).

Glue code to support the Asus U3100 Mini plus has now landed in the current staging tree and has been pull-requested for 3.7.

http://git.linuxtv.org/media_tree.git/tree/staging/for_v3.7


did vendor device standard supported pic url hostinterface usbid hw tuner demodulator usbbridge fw comment E
asus-my-cinema-u3100-mini-plus ASUS My Cinema U3100 Mini Plus DVBT Tuner DVB-T Yes, Yes, in kernel since 3.7 Asus U3100 Mini plus DVB-T 01.JPG [1] USB2.0 0b05:1779 Afatech AF9035 FCI2580 af9033 af9035 [2] There's an older device by almost the same name (without the "plus"), which is dib7xxx based and works out of the box. Jump to the place where you can edit this entry
asus-my-cinema-u3100-mini-plus-v2 ASUS My Cinema U3100 Mini Plus V2 DVB-T Yes Dvb-t asus u3100mini plus v2.JPG [3] USB2.0 1b80:d393 Afatech DVB-T receiver [RTL2832U] Jump to the place where you can edit this entry

Image of the tuner and USB Bridge/Demodulator. Asus U3100 Mini plus DVB-T 02.JPG Asus U3100 Mini plus DVB-T 03.JPG

Image of the other side of the V2 Dvb-t asus u3100mini plus v2 2.JPG

USB Quircks should no longer be needed for this device. For the time being still listed here.

options usbhid quirks=0x0b05:0x1779:0x0004

The original rare drivers v9.08.14.1 had been uploaded to http://ubuntuforums.org/showpost.php?p=10176778&postcount=20

Compiling v9.08.14.1 may be very adventurous. I have made some pathology to original driver :) and reduce it only to ASUS_U3100_mini device and fix various incompatibilities. Minimum additional modification are needed to installing. Works well for kernel < 2.6.35.

This old driver currently still lives in my git repository for the AF903x and keep pushing changes I receive until 3.7 is released.

09.07.2013 The device does not seem to work. Seems to be a problem with I2C communication between frontend and tuner. The error is

dvb_usb_v2: 'Asus U3100Mini Plus' error while loading driver (-19)
dvb_usb_v2: 'Asus U3100Mini Plus' successfully deinitialized and disconnected

19.07.2013 Ubuntu 13.04, kernel 3.11.0-999-generic #201307180423 x86_64, firmware http://palosaari.fi/linux/v4l-dvb/firmware/af9035/dvb-usb-af9035-02.fw_f71efe295151ba76cac2280680b69f3f_11.5.9.0_5.17.9.1. In circa 1 case of 50 is the device successfully identified by i2c and working:

Jul 18 22:08:22 thinkpad kernel: [ 2249.356481] i2c i2c-6: af9033: firmware version: LINK=11.5.9.0 OFDM=5.17.9.1
Jul 18 22:08:22 thinkpad kernel: [ 2249.360331] usb 1-1: DVB: registering adapter 0 frontend 0 (Afatech AF9033 (DVB-T))...
Jul 18 22:08:22 thinkpad kernel: [ 2249.412901] i2c i2c-6: fc2580: FCI FC2580 successfully identified
Jul 18 22:08:22 thinkpad kernel: [ 2249.424688] usb 1-1: dvb_usb_v2: 'Asus U3100Mini Plus' successfully initialized and connected

Otherwise it throws the "error while loading driver (-19)" mention above. Full part of syslog and file contents I have collected from /sys/bus/i2c/devices/i2c-6/device/ for debugging can be found here: http://ubuntuone.com/5u0sfwtb2HZihFScRGsaPR .

--SignElSoft 22:04, 20 February 2014 (CET)
I have seen the same problem.
I have made a little change on the /usr/src/linux/drivers/media/tuners/fc2580.c file, and compiled a new fc2580.ko module, and it works fine.

struct dvb_frontend *fc2580_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, const struct fc2580_config *cfg)
{
...

/* check if the tuner is there */
ret = fc2580_rd_reg(priv, 0x01, &chip_id);
/* *************** COMMENT OUT THIS PART *****************************
if (ret < 0)
goto err;

dev_dbg(&priv->i2c->dev, "%s: chip_id=%02x\n", __func__, chip_id);

switch (chip_id) {
case 0x56:
case 0x5a:
break;
default:
goto err;
}

*/

...