Installation of USB TV stick kills system - need help

This time I overdid it definitively.
System is a Samsung Q35 pro Barnit with 2,5 GB Ram and Intel Chipset.
OS Information
OS: Linux 2.6.27.29-0.1-pae i686
System: openSUSE 11.1 (i586)
KDE: 3.5.10 “release 61”
No Xen installed.

I wanted a linux compatible stick for watching DTV with my laptop. So DVBT/TDT High Definition Tuner Zaapa ZT-DVBTSTUSB.I choose the stick because the producer puts explicitly a nice penguin on the box and claims “supports Linux”.
fine, so far so good.
I prepared the system conveniently. The system required V4L, kernel-sources and headers and ncurses-devel.
I installed all of it.
You open the box and find the stick and an install CD. This has a directory for linux and a how-to to be followed. I report it here below.

Driver Installation in Linux (How-to of the producer). -begin-

1 Copy the folder ‘080821_rtd2831u_driver’ to the desktop.
2 Click ‘Applications’ → ‘Accessories’ → ‘Terminal’ to enter the console mode.
3 Type ‘cd /root/Desktop/080821_rtd2831u_driver’ to enter the folder.
4 In the folder ‘080821_rtd2831u_driver’, type the following command to compile & install.
a. Type ‘cp -f . /usr/src/linux-$(uname -r)’/drivers/media/dvb/dvb-usb’ to copy all files into
linux kernel code.
b. add the following lines to Makefile in /usr/src/linux-$(uname -r)’/drivers/media/dvb/dvbusb.
dvb-usb-rtl2831u-objs = math_mpi.o foundation_2831u.o demod_rtl2830.o tuner_demod_io.o
tuner_mxl5005s.o mt_spuravoid.o
mt_userdef.o mt2060_basic.o tuner_ah.o MT2060Tuner.o rtd2830.o rtd2830u.o
obj-$(CONFIG_DVB_USB_RTL2831U) += dvb-usb-rtl2831u.o
c. add the following lines to Kconfig in /usr/src/linux-$(uname -r)’/drivers/media/dvb/dvbusb.
config DVB_USB_RTL2831U
tristate “Realtek RTL2831U DVB-T USB2.0 support”
depends on DVB_USB
help
Realtek RTL2831U DVB-T driver.
d. Type ‘cd /usr/src/linux-$(uname -r)’ and type ‘make menuconfig’
Device Drivers —>
Multimedia devices —>
Digital Video Broadcasting Devices —>
[li] DVB For Linux
[/li]<M> DVB Core Support

<M> Support for various USB DVB devices----->

<M> Realtek RTL2831U DVB-T USB2.0 support
And ‘YES’ to save your new kernel configuration.
e. Type ‘make modules’
f. Type ‘make modules_install’
5 Plug in our DVB-T USB device;
6 Type ‘lsmod | grep dvb’, and it will show
dvb_usb_rtl2831u
dvb_usb
dvb_core
i2c_core
Your driver has been installed successfully.

End of How-to

The recommended installation procedure fails with the following error(s)
the command a) give the output that /usr/src/linux-2.6.27.29-0.1-pae is not a directory.
It copies alright if you replace the uname with the directory name /usr/src/linux-2.6.27.29-0.1.
Up to point e) then everything is ok.
After point d) the kernel advices to run make (while the howto requests only make modules ).
Question: Is it correct to run make modules only or do I have to run make (what at the end I did after trying in vane with make modules and make_install, since I got a huge number of error messages during compile)?

e) runs but give a lot of errors

In file included from drivers/media/dvb/dvb-usb/tuner_mxl5005s.h:429,
from drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:13:
drivers/media/dvb/dvb-usb/tuner_base_2831u.h:16:24: error: foundation.h: No such file or directory
In file included from drivers/media/dvb/dvb-usb/tuner_mxl5005s.h:429,
from drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:13:
drivers/media/dvb/dvb-usb/tuner_base_2831u.h:266: error: expected specifier-qualifier-list before
‘BASE_INTERFACE_MODULE’
In file included from drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:13:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.h:581: error: expected declaration specifiers or ‘…’
before ‘BASE_INTERFACE_MODULE’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:74: error: expected declaration specifiers or ‘…’
before ‘BASE_INTERFACE_MODULE’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘BuildMxl5005sModule’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:102: error: ‘TUNER_MODULE’ has no member
named ‘pBaseInterface’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:102: error: ‘pBaseInterfaceModuleMemory’
undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:102: error: (Each undeclared identifier is reported
only once
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:102: error: for each function it appears in.)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:103: error: ‘TUNER_MODULE’ has no member
named ‘pI2cBridge’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:114: error: ‘TUNER_MODULE’ has no member
named ‘SetDeviceAddr’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:116: error: ‘TUNER_MODULE’ has no member
named ‘GetTunerType’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:117: error: ‘TUNER_MODULE’ has no member
named ‘GetDeviceAddr’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:119: error: ‘TUNER_MODULE’ has no member
named ‘Initialize’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:120: error: ‘TUNER_MODULE’ has no member
named ‘SetRfFreqHz’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:121: error: ‘TUNER_MODULE’ has no member
named ‘GetRfFreqHz’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:132: error: ‘NO’ undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:140: error: ‘IF_FREQ_4570000HZ’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:141: error: ‘CRYSTAL_FREQ_16000000HZ’
undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:175: error: ‘TUNER_TYPE_MXL5005S’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:178: error: ‘TUNER_MODULE’ has no member
named ‘SetDeviceAddr’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetDeviceAddr’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:227: error: ‘YES’ undeclared (first use in this
function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_GetDeviceAddr’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:281: error: ‘YES’ undeclared (first use in this
function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:287: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:291: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_Initialize’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:338: error: ‘LEN_1_BYTE’ undeclared (first use in
this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:338: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:353: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetRfFreqHz’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:378: error: ‘BASE_INTERFACE_MODULE’
undeclared (first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:378: error: ‘pBaseInterface’ undeclared (first use in
this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:380: warning: ISO C90 forbids mixed declarations
and code
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:392: error: ‘TUNER_MODULE’ has no member
named ‘pBaseInterface’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:406: error: ‘LEN_1_BYTE’ undeclared (first use in
this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:406: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:450: error: ‘YES’ undeclared (first use in this
function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:457: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_GetRfFreqHz’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:482: error: ‘YES’ undeclared (first use in this
function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:488: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:492: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetRegsWithTable’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:585: error: ‘TUNER_MODULE’ has no member
named ‘GetDeviceAddr’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:590: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:599: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetRegMaskBits’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:658: error: ‘LEN_1_BYTE’ undeclared (first use in
this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:658: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:666: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetSpectrumMode’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:685: error: ‘SPECTRUM_MODE_NUM’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:703: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:711: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:685: warning: unused variable ‘BbIqswapTable’
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function ‘mxl5005s_SetBandwidthHz’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:750: error: ‘FUNCTION_SUCCESS’ undeclared
(first use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:758: error: ‘FUNCTION_ERROR’ undeclared (first
use in this function)
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c: In function
‘mxl5005s_SetI2cBridgeModuleTunerArg’:
drivers/media/dvb/dvb-usb/tuner_mxl5005s.c:809: error: ‘TUNER_MODULE’ has no member
named ‘pI2cBridge’
make[4]: *** [drivers/media/dvb/dvb-usb/tuner_mxl5005s.o] Error 1
make[3]: *** [drivers/media/dvb/dvb-usb] Error 2
make[2]: *** [drivers/media/dvb] Error 2
make[1]: *** [drivers/media] Error 2
make: *** [drivers] Error 2
f) does not compile and gives only errors

cp: cannot stat drivers/gpu/drm/mga/mga.ko': No such file or directory INSTALL drivers/gpu/drm/r128/r128.ko cp: cannot stat drivers/gpu/drm/r128/r128.ko’: No such file or directory
INSTALL drivers/gpu/drm/radeon/radeon.ko
cp: cannot stat drivers/gpu/drm/radeon/radeon.ko': No such file or directory INSTALL drivers/gpu/drm/savage/savage.ko cp: cannot stat drivers/gpu/drm/savage/savage.ko’: No such file or directory
INSTALL drivers/gpu/drm/sis/sis.ko
cp: cannot stat `drivers/gpu/drm/sis/sis.ko’: No such file or directory
INSTALL drivers/gpu/drm/tdfx/tdfx.ko
And so on and so forth…
Since the modules did not build the system now does not start (only up to root giving a large number of error messages about modules).

If anybody is out there that has an idea about how to get out of the situation without a reinstall fine, and I will post the rest of the long error story.
In all cases I need the stick to run (or to give it back claiming that it is not compatible). I think there is something assumed in the howto that is just different in openSUSE.
a) I would like to repair the system
b) I would like to have the stick installed
c) I would be seriously delighted to take this as an occasion to be able to learn and to understand where is the problem and how to solve it on my own the next time. So please be verbose when explaining and take nothing for granted. I am confident that what will help me will help the next one with a similar problem.

Thanks in advance.

I’m not going to tackle all your issues; however, the main one is that
the driver has not been modified to handle kernels as new as 2.6.27.
The developers do not change the ABI, but they do change the API. This
leads to compile errors like the “xxxx is not a member of yyyy”
because the structs have been changed.

First, look for a newer driver than what is on the CD. Who knows how
long ago that was mastered. You might also look at the Mythtv websites
to see if that hardware is said to be compatible. If so, the user will
know what it takes. The other thing you can do there is find USB
tuners that meet your requirements.

I have a USB tuner, but it is analog and would not meet your HD
requirement.

This “installation guide” is one of biggest loads of horse sh** I ever read, even for a vendor written one (and I have read a lot of crap in vendor’s README/INSTALL/whatever-files).

c) I would be seriously delighted to take this as an occasion to be able to learn

Well, your first lesson is:

“NEVER type make install (or similar) if make did not succeed!”

Acknowledged. Any way back or a full re-install of the system? Just to see whether I can get out of if. Of course a reinstall would be easier. Not learning anything though. But how can I know that this situation will not happen in some way again. With other words, I would like to learn if there is any way out of it.
P.S. Well, this horse…by-product is written long and large as “supports linux” on the outside. Therefore it is actually causing damage to the reputation of linux if what you say is right. Not to say to the user. But for shure make_install is not going to happen anymore if make did not succeed.

The “vanished” modules are located in the packages

  • kernel-$FLAVOR

  • kernel-$FLAVOR-base

  • kernel-$FLAVOR-extra

So booting the system to a minimal runlevel (1 = maintainence mode) or booting from installation CD and using “start installed system” (IIRC one of the “installation” options) and then installing the respective RPM packages by hand will solve the problem.

In worst case, one will need to boot another system (Live CD), chroot to the damaged system and install or if that’s not possible unpack the files from the respective RPM packages (rpm2cpio)

As you said, you want to learn, no details, but I underlined the most important words for you (to use them with a search engine or man pages).

Thank you. The system boots to init 5 so it will be easy to do it from init 1.
The biggest thing will be getting an install CD as I am not at my desk and internet is scarce. Does the life-CD have the rpms and could I use it as a source?

Ps. for this particular tuner it is best not to rely on what the vendor gives you. Effectively I found the info (once I have now access to an internet cafè) on Rtl2831 devices - LinuxTVWiki Apparently they are going to include the code sooner or later into the main code.
For who is finding this info searching in google for zaapa usb tv tuners:
hg clone ~jhoogenraad/rtl2831-r2: log](http://linuxtv.org/hg/~jhoogenraad/rtl2831-r2)
make
make install

*should be giving a proper driver at all times. *
As the site reports. I will tell when I succeed.

BTW: the modules I created with the failed “make modules” command were crippeled or not created at all? If they where not created at all, make_install should not have overwritten the existing ones…? So what was actually owerwriting the original parts of the kernel?

If the system boots into any runlevel and you have network connection, then just reinstall the kernel packages via zypper.

DON’T use runlevel 1 then, you won’t have network there.

Your description sounded like “system does no longer boot”, so be more specific next time.

zypper in --help

will give you an idea how to reinstall $PACKAGE.

If not, get the rpms from an appropriate Repo and install them with the appropriate rpm-command, -U and --force are your friends.

I have downloaded printed and read the zypper manual. I understand -f (force) but why do you mention -U. This would be applicable when? I do a search to see what has been unadvertedly uninstalled?
The command as I do understand it would be
**zypper -f -U package **
?
Now with -f I force, -U I would tell that he is processing only the ones not installed and package would process all packages. How do I tell him to ONLY look at the kernel packages?
(-u, --uninstalled-only)
After all one has only a small part of all the packages installed. So how do I focus (and how do I write correctly the name / find out the name) of a package or a selection.

BTW: of this part of the manual I do not understand the meaning (may be a problem of language):

The NAME component of a capability is not only a package name but any symbol provided by packages: /bin/vi, libcurl.so.3, perl(Time:: ParseDate). Just remember to quote to protect the special characters from the shell, for example: zypper&gt;0.8.10 or 'zypper>0.8.10’

If anybody could explain me this with an example I would be greatful. What are symbols in this context? Why would I put them? I am just able to understand the part with the “quotes to protect the symbols”. The rest is for right now a bit too much “mandarine”.

Well, that’s not what I wrote:

As for zypper, read the manual page on how to search and how to install (or reinstall with -f) certain packages (by name).

This means I can install with “rpm” packages that I have downloaded i.e. on an USB stick and install them in absence of connection through the command line?

You see, I am in travel and ethernet is a luxury and free access to internet also.

Anybody else out there that does not feel the compelled need to share his/her knowledge? Would be enough to help me out of this situation.
The current “hints” where nice but quite half hearted. If I said “verbous” to “learn” something, that did not ment: show off, be cryptic and handle me like a intellectually challenged person that has to be send to elementary school. I know very well that people ask for help unduely while they “could read the f manual”. But in this case I do not have the time, not the access to internet to do so. Every 30 minutes cost me 1 euro minimum. Just to make that point clearer.

Since the system has no access to the internet (modules are not working - no matter the runlevel) I could try to set the sources to Cd and install from there. I can download the relevant CD only and that would be possible (the speed for the DVD on the available connects is too low). Question: does anybody know which install CD I have to download to find the kernel modules (sources, base and extra)?
2nd question: I managed to recover here a 64 bit DVD (the installed system is 32 bit). I therefore could simply opt for a reinstall but there is a question that I do not understand: /home is on a separate partition, encrypted with LUKS following the crypto-howto. The other aren’t encrypted. When I did run the life CD I could not recover access to the /home in order to make a emergency backup of mail and some documents.
I did put in the correct password (on the request of the OS) but the volume would not open.

a) why is this so? Does the life CD use another cryptomodule than LUKS?

b) if I do reinstall with 64, will I gain again access to the volume or do I HAVE to recover stringently the damaged 32 bit version?
(Neither /root nor /swap are currently encrypted, only /home)

No, you don’t have to recover the 32bit version. Make a backup of /home and install 64bit. AFAIK you can reconfigure LUKS during install for the partition /home is on and mount it.

Make sure you install the Linux Kernel Development pattern, saves a lot of trouble afterwards.

please also post output of lsusb with stick connected.

I am downloading the
**kernel source/
kernel base and
kernel extra **of the flavour installed prior to the accident.
Is this what you mean with kernel development pattern? Or are things missing?
**Make/automake/gcc and ncurse-devel **are also installed.
If more has to be downloaded, please tell me if I can already restore the kernel with these packages, then I can recover the download function and install what is missing online via wlan.
I have gotten the info that I can create a directory on the harddisk with the life CD (usb module and ethernet do not work anymore on the orignal system but I can create directories on the HDD with the life CD).
I will give the directory as source to yast and give a very hight priority (10) telling then to update all the three sources.
Up to now I am confident that this should restore the functionality of the base system. If you think that this information is incorrect, please tell me.

I thought of doing it in init 1 with yast (as yast works and the system can boot up to init5 (in failsafe it is even capable to start the Xserver (but no hardware works like usb/eth/wlan/cd all is unservable. Basicly you have access to root.

lsusb:
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0a5c:2101 Broadcom Corp. A-Link BlueUsbA2 Bluetooth
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 0bda:2831 Realtek Semiconductor Corp. 2831U Device
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub