Geniatech T230C: Difference between revisions

From LinuxTVWiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
 
(27 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[File:Geniatech-t230.jpg|thumb|Geniatech T230C]]
The Geniatech T230C (also branded as MyGica T230C) is an evolution of [[Geniatech_T230|Geniatech T230]]. Although it has the same external appearence, it uses different hardware, and is not supported by mainstream 2016-grade kernels.
[[File:MyGica T230C.jpg|thumb|T230C, PCB in MyGica's black case]]
[[File:MyGica T230C PCB 1.jpg|thumb|MyGica T230C or Geniatech T230C PCB (top)]]
[[File:MyGica T230C PCB 2.jpg|thumb|MyGica T230C or Geniatech T230C PCB (bottom)]]
[[File:eyeTV T2 PCB 1.jpg|thumb|eyeTV T2, eyeTV T2 hybrid or eyeTV T2 lite PCB (top), note the missing IR receiver (bottom right)]]
[[File:eyeTV T2 PCB 2.jpg|thumb|eyeTV T2, eyeTV T2 hybrid or eyeTV T2 lite PCB (bottom)]]
The '''[[Geniatech]] T230C''' (also branded as '''MyGica T230C''' with a black case instead of a white one) is an evolution of [[Geniatech_T230|Geniatech T230]]. Although it has the same external appearence, it uses different hardware. Support for "T230C v2" has made it to the vanilla kernel in the fall of 2019. The MyGica-branded device can be found on websites that ship hardware directly from China.

There is a version without IR called '''[[Elgato|eyeTV]] T2''', '''eyeTV T2 hybrid''' and '''eyeTV T2 lite''' (three names for the same hardware). Targetting a Mac OS audience, they are 5 to 6 times as expensive as the MyGica T230C which does feature IR support (and comes with a 28-button remote control). These three share the same conic case, while MyGica and GeniaTech devices get wider only around the IEC connector. The T2 lite has a white case (and different EEPROM), the other two have a case that is silver with a transparent cap. [http://forum.ixbt.com/topic.cgi?id=73:5142:846#846 ] (There is also a [https://macandegg.de/2016/09/review-eyetv-t2-und-hybrid-fuer-dvb-t2-hevc-h-265-empfang-im-test/ bulky eyeTV hybrid], which lacks the "T2" in its name but supports DVB-T2 nonetheless unlike its [[Elgato EyeTV hybrid|predecessor of the same name]]. Its hardware is currently unknown.)

The device can be used with the PadTV HD app on Android if connected via a USB OTG adapter. That app supports H.265, but the phone must be fast enough. On Windows, [https://redeemer.biz/images/dvb-t2-hd/T230C-Driver.rar 28 Jun 2017 drivers] (shipped with some devices in 2018, probably ones with updated "T230C2" EEPROM) are required to prevent frequent blue screens in nearly all apps.




Line 6: Line 16:
===Components Used===
===Components Used===


'''Contributions are welcome'''
The following components are used on the device
The following components are used on the device


* USB interface: ?
* USB interface: Cypress CY7C68013A-56LTXC
* Demodulator: ?
* Demodulator: [[Silicon Labs Si2168]]-D60
* Tuner: ?
* Tuner: [[Silicon Labs Si2141]]-A10

Guesses are open, based on the corresponding needed firmware files


==Driver support==
==Driver support==


As of kernel 4.4, drivers are not included in the kernel (at least not in Raspbian 8).
As of kernel 4.4, drivers are not shipped with the kernel (at least not in Raspbian 8).<br/>
Kernel 4.9.24 included in Raspbian 8 (installed when upgrading packages through apt-get) does not ship the driver either.<br/>
However, the driver '''dvb_usb_cxusb''' fully supports the device, and can be found in the Video4Linux project. It is possible to build it using CrazyCat's media_build tool.
Kernel 4.14 (included in Raspbian 9 in 2019) ships with the correct driver to support the T230C.<br/>
Kernel 5.4 vanilla has moved some code about, the T230C and T230C v2 are now supported by driver '''dvb_usb_dvbsky''', rather than the previously responsible '''dvb_usb_cxusb'''. For years, CrazyCat has done a patient job of keeping the T230C hardware supported in '''dvb_usb_cxusb''' in his own build of the "media" driver subsystem. The list of T230 flavours supported by the
vanilla driver '''dvb_usb_dvbsky''' as of kernel 5.4 goes like this:


<PRE>
The T230C appears as a 0572:c689 device
VID PID "Description"
0x0572 0xc688 "MyGica Mini DVB-T2 USB Stick T230"
0x0572 0xc689 "MyGica Mini DVB-T2 USB Stick T230C"
0x0572 0xc68a "MyGica Mini DVB-T2 USB Stick T230C v2"
0x0572 0xc699 "MyGica Mini DVB-T2 USB Stick T230C Lite" (no IR remote sensor)
The USB VID=0x0572 means Conexant.
</PRE>

The rest of this paragraph and the whole chapter on Building the driver, contain data that may still be useful, but is starting to feel dated, now with the suport in vanilla. Obviously the vanilla driver is nowadays inherently "in the tree" and builds as part of the kernel, and will eventually make it into distro kernels. The following data is related to the past "CrazyCat solution".

Example device detection in the log:
<pre>
<pre>
usb 1-1.3.3: New USB device found, idVendor=0572, idProduct=c689
usb 1-1.3.3: New USB device found, idVendor=0572, idProduct=c689
Line 30: Line 51:


'''To be confirmed''': it looks like this device is better integrated into LibreElec system (see [http://cvh.libreelec.tv/ here] how to use the Crazycat-CC driver pack).
'''To be confirmed''': it looks like this device is better integrated into LibreElec system (see [http://cvh.libreelec.tv/ here] how to use the Crazycat-CC driver pack).



==Building the driver==
==Building the driver==


The following procedure works on a 4.4.43-v7+ kernel and was tested on a Raspberry Pi.
The following procedure works (at least) on a Raspberry Pi running 4.4.43-v7+ or 4.9.30-v7+ kernel (but does not seem to work with the 4.9.24-v7+ kernel).
It should be pretty similar on other distros.
It should be pretty similar on other distros and/or with other kernels.


Run ''apt-get install raspberrypi-kernel-headers'' to get the correct headers (i.e. the headers corresponding to your '''exact''' current kernel build) into /lib/modules/<some folders about your current $(uname -r) kernel version>/. In my case, 2 folders were created: 4.4.43+ and 4.4.43-v7+.\\
Run ''apt-get install raspberrypi-kernel-headers'' to get the correct headers (i.e. the headers corresponding to your '''exact''' current kernel build) into /lib/modules/<some folders about your current $(uname -r) kernel version>/. In my case, 2 folders were created: 4.4.43+ and 4.4.43-v7+.
In case it does not download the right kernel version headers (there may be a mismatch between ''uname -r'' and the folder names in /lib/modules), you can grab the raspi sources by running:
In case it does not download the right kernel version headers (there may be a mismatch between ''uname -r'' and the folder names in /lib/modules), you can grab the raspi sources by running:
<pre>
<pre>
Line 43: Line 63:
wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source
wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source
chmod u+x rpi-source
chmod u+x rpi-source

./rpi-source --dest /somewhere/that/has/free/space
./rpi-source --dest /somewhere/that/has/free/space

# It does not create headers into /usr/src though or symlinks everywhere in /lib/modules, so:
# Older versions might need to have linux-headers installed into /usr/src and symlinks everywhere in /lib/modules
ln -s /somewhere/that/has/free/space /usr/src/linux-headers/$(uname -r)
# This is not needed anymore (since mid-2017? Was it even needed at some point?)
ln -s /usr/src/linux-headers/$(uname -r) /lib/modules/$(uname -r)/build
ln -s /usr/src/linux-headers/$(uname -r) /lib/modules/$(uname -r)/source
ln -s /somewhere/that/has/free/space/linux /usr/src/linux-headers-$(uname -r)
ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build
ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/source
...and do the same with uname -r, but without the trailing -v7+ (eg 4.4.43+ if uname -r is 4.4.43-v7+)
...and do the same with uname -r, but without the trailing -v7+ (eg 4.4.43+ if uname -r is 4.4.43-v7+)
</pre>
</pre>
Line 74: Line 95:


The process should have installed the correct corresponding firmwares into /lib/firmware. If it is not the case, grab and install the needed firmwares from https://bitbucket.org/CrazyCat/media_build/downloads/dvb-firmwares.tar.bz2.
The process should have installed the correct corresponding firmwares into /lib/firmware. If it is not the case, grab and install the needed firmwares from https://bitbucket.org/CrazyCat/media_build/downloads/dvb-firmwares.tar.bz2.




==Firmware==
==Firmware==
The Geniatech T230C requires these firmwares (available in https://bitbucket.org/CrazyCat/media_build/downloads/dvb-firmwares.tar.bz2):
The Geniatech T230C and T230C v2 requires these firmwares (available at https://github.com/osmc/dvb-firmware-osmc):
* dvb-demod-si2168-d60-01.fw
* dvb-demod-si2168-d60-01.fw
* dvb-tuner-si2141-a10-01.fw
* dvb-tuner-si2141-a10-01.fw
They must be copied in /lib/firmware
They must be copied in /usr/lib/firmware.



==IR Remote Control==
==IR Remote Control==


The dvbsky driver as of vanilla Linux 5.4 registers a devinput device for the IR sensor and reports support for the RC5 protocol only. The sensor happily picks up codes transmitted by various remote controllers - such as those packaged with TV's and other hardware by Philips or Vestel. Using the ir-keytable command-line tool, these feral scan codes received via the IR sensor can be mapped to meaningful devinput events - these are then directly accepted by the Xwindows xinput layer (which can be prevented via xorg.conf if desired) or can be passed to LIRC for further application steering.
It has not been tested yet. '''Contributions are welcome.'''


If the device is unable to initialize, you may want to prevent the IR from loading:

<pre>
# cat /etc/modprobe.d/dvb_usb.conf
options dvb-usb disable_rc_polling=1
</pre>

A reboot is needed to take effect.


==Supported streams==
==Supported streams==


This DVB-T stick supports every French DVB-T channel (i.e. both HDTV and SDTV, broadcast as MPEG4).
This DVB-T stick supports every French DVB-T channel (i.e. both HDTV and SDTV, broadcast as MPEG4).
They are succesfully processed through tvheadend.\\
They are succesfully processed through tvheadend.

It should support DVB-T2 (it is advertised on the package), although this has not been tested yet. '''Contributions are welcome.'''
Another tester reports success in receiving DVB-T and DVB-T2 with MPEG2, MPEG4 and HEVC encodings, in the Czech Republic, played back by VDR 2.4.1 with the softhdvaapi front end.

DVB-C is advertised on the package and is recognized by tvheadend, however this requires the model that includes DVB-C.

'''Contributions are welcome.'''


[[Category:DVB-T USB Devices]]
[[Category:DVB-T USB Devices]]

Latest revision as of 21:58, 16 January 2020

Geniatech T230C
T230C, PCB in MyGica's black case
MyGica T230C or Geniatech T230C PCB (top)
MyGica T230C or Geniatech T230C PCB (bottom)
eyeTV T2, eyeTV T2 hybrid or eyeTV T2 lite PCB (top), note the missing IR receiver (bottom right)
eyeTV T2, eyeTV T2 hybrid or eyeTV T2 lite PCB (bottom)

The Geniatech T230C (also branded as MyGica T230C with a black case instead of a white one) is an evolution of Geniatech T230. Although it has the same external appearence, it uses different hardware. Support for "T230C v2" has made it to the vanilla kernel in the fall of 2019. The MyGica-branded device can be found on websites that ship hardware directly from China.

There is a version without IR called eyeTV T2, eyeTV T2 hybrid and eyeTV T2 lite (three names for the same hardware). Targetting a Mac OS audience, they are 5 to 6 times as expensive as the MyGica T230C which does feature IR support (and comes with a 28-button remote control). These three share the same conic case, while MyGica and GeniaTech devices get wider only around the IEC connector. The T2 lite has a white case (and different EEPROM), the other two have a case that is silver with a transparent cap. [1] (There is also a bulky eyeTV hybrid, which lacks the "T2" in its name but supports DVB-T2 nonetheless unlike its predecessor of the same name. Its hardware is currently unknown.)

The device can be used with the PadTV HD app on Android if connected via a USB OTG adapter. That app supports H.265, but the phone must be fast enough. On Windows, 28 Jun 2017 drivers (shipped with some devices in 2018, probably ones with updated "T230C2" EEPROM) are required to prevent frequent blue screens in nearly all apps.


Overview/Features

Components Used

The following components are used on the device

Driver support

As of kernel 4.4, drivers are not shipped with the kernel (at least not in Raspbian 8).
Kernel 4.9.24 included in Raspbian 8 (installed when upgrading packages through apt-get) does not ship the driver either.
Kernel 4.14 (included in Raspbian 9 in 2019) ships with the correct driver to support the T230C.
Kernel 5.4 vanilla has moved some code about, the T230C and T230C v2 are now supported by driver dvb_usb_dvbsky, rather than the previously responsible dvb_usb_cxusb. For years, CrazyCat has done a patient job of keeping the T230C hardware supported in dvb_usb_cxusb in his own build of the "media" driver subsystem. The list of T230 flavours supported by the vanilla driver dvb_usb_dvbsky as of kernel 5.4 goes like this:

VID    PID    "Description"
0x0572 0xc688 "MyGica Mini DVB-T2 USB Stick T230"
0x0572 0xc689 "MyGica Mini DVB-T2 USB Stick T230C"
0x0572 0xc68a "MyGica Mini DVB-T2 USB Stick T230C v2"
0x0572 0xc699 "MyGica Mini DVB-T2 USB Stick T230C Lite" (no IR remote sensor)
The USB VID=0x0572 means Conexant.

The rest of this paragraph and the whole chapter on Building the driver, contain data that may still be useful, but is starting to feel dated, now with the suport in vanilla. Obviously the vanilla driver is nowadays inherently "in the tree" and builds as part of the kernel, and will eventually make it into distro kernels. The following data is related to the past "CrazyCat solution".

Example device detection in the log:

usb 1-1.3.3: New USB device found, idVendor=0572, idProduct=c689
usb 1-1.3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.3.3: Product: EyeTV Stick
usb 1-1.3.3: Manufacturer: Geniatech
usb 1-1.3.3: SerialNumber: 160421

To be confirmed: it looks like this device is better integrated into LibreElec system (see here how to use the Crazycat-CC driver pack).

Building the driver

The following procedure works (at least) on a Raspberry Pi running 4.4.43-v7+ or 4.9.30-v7+ kernel (but does not seem to work with the 4.9.24-v7+ kernel). It should be pretty similar on other distros and/or with other kernels.

Run apt-get install raspberrypi-kernel-headers to get the correct headers (i.e. the headers corresponding to your exact current kernel build) into /lib/modules/<some folders about your current $(uname -r) kernel version>/. In my case, 2 folders were created: 4.4.43+ and 4.4.43-v7+. In case it does not download the right kernel version headers (there may be a mismatch between uname -r and the folder names in /lib/modules), you can grab the raspi sources by running:

# get the rpi-source tool
wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source
chmod u+x rpi-source
./rpi-source --dest /somewhere/that/has/free/space

# Older versions might need to have linux-headers installed into /usr/src and symlinks everywhere in /lib/modules
# This is not needed anymore (since mid-2017? Was it even needed at some point?)
ln -s /somewhere/that/has/free/space/linux /usr/src/linux-headers-$(uname -r)
ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/build
ln -s /usr/src/linux-headers-$(uname -r) /lib/modules/$(uname -r)/source
...and do the same with uname -r, but without the trailing -v7+ (eg 4.4.43+ if uname -r is 4.4.43-v7+)

Check that a correct .config file (corresponding to the exact current build of your kernel) is available at /lib/modules/$(uname -r)/build/.config It should normally have been fetched by rpi-source. If it was not the case, run modprobe configs, and the .config file that you want is available in the compressed file /proc/config.gz

Now we have the correct sources and .config file, we can fetch the driver sources and build it by using CrazyCat's media_build tool:

git clone https://bitbucket.org/CrazyCat/media_build
cd media_build
./build --main-git

Be sure to have some space left, as it downloads a part of the kernel tree.


In case the build fails about frame_vector.c: No rule to make target '..../v4l/frame_vector.c' , comment the following lines in media_build/v4l/Makefile, so that they appear like this:

#ifeq ($(makefile-mm),1)
#-include $(obj)/Makefile.mm
#endif

Then you can install the drivers by running sudo make install

The process should have installed the correct corresponding firmwares into /lib/firmware. If it is not the case, grab and install the needed firmwares from https://bitbucket.org/CrazyCat/media_build/downloads/dvb-firmwares.tar.bz2.

Firmware

The Geniatech T230C and T230C v2 requires these firmwares (available at https://github.com/osmc/dvb-firmware-osmc):

  • dvb-demod-si2168-d60-01.fw
  • dvb-tuner-si2141-a10-01.fw

They must be copied in /usr/lib/firmware.

IR Remote Control

The dvbsky driver as of vanilla Linux 5.4 registers a devinput device for the IR sensor and reports support for the RC5 protocol only. The sensor happily picks up codes transmitted by various remote controllers - such as those packaged with TV's and other hardware by Philips or Vestel. Using the ir-keytable command-line tool, these feral scan codes received via the IR sensor can be mapped to meaningful devinput events - these are then directly accepted by the Xwindows xinput layer (which can be prevented via xorg.conf if desired) or can be passed to LIRC for further application steering.

If the device is unable to initialize, you may want to prevent the IR from loading:

# cat /etc/modprobe.d/dvb_usb.conf
options dvb-usb disable_rc_polling=1

A reboot is needed to take effect.

Supported streams

This DVB-T stick supports every French DVB-T channel (i.e. both HDTV and SDTV, broadcast as MPEG4). They are succesfully processed through tvheadend.

Another tester reports success in receiving DVB-T and DVB-T2 with MPEG2, MPEG4 and HEVC encodings, in the Czech Republic, played back by VDR 2.4.1 with the softhdvaapi front end.

DVB-C is advertised on the package and is recognized by tvheadend, however this requires the model that includes DVB-C.

Contributions are welcome.