[linux-dvb] Random kernel oopses using TwinhanDTV Alpha and dvb-usb-vp7045

Tomas psycho at pobox.com
Fri Mar 2 18:16:32 CET 2007


Hello,

First of all, I apologize in advance for a long post, but I
figure it's better to provide some error messages instead of just
writing a stupid "help, TwinhanDTV doesn't work, why?" post. I
find it hard to believe I'm the only one experiencing these
problems, but digging around with google and on linuxtv.org
haven't been of any help.

Here goes:

I'm experiencing random kernel errors with my TwinhanDTV Alpha
USB 2.0 DVB-T receiver using the dvb-usb-vp7045 kernel module:

1. Sometimes the kernel completely freezes up. Powercycle needed.

2. Sometimes the kernel completely freezes up with the CapsLock
   and ScrLk LEDs on my keyboard blinking. Powercycle needed.

3. Sometimes the keyboard/mouse stops working in X but pressing
   the power button makes acpid initiate a shutdown (so at least
   the kernel isn't completely hosed). The shutdown hangs at
   "Unmounting local filesystems" at which point the keyboard is
   working again (I guess it was only dead in X) so I can do a
   Alt-SysRq-S followed by Alt-SysRq-B.

4. And very rarely not even the keyboard/mouse stops working in
   X, but I get all the syslog error messages printed to every
   xterm.

Any one of these errors (though very rarely number 4) happens
about 30%-50% of the time when I'm using the DVB receiver.

My experience as a programmer tells me that when such random
errors occur they're usually due to something simple such as an
uninitialized variable being used (but there are no such warnings
when compiling the modules) or a pointer that has an incorrect
value.

The freezes all seem to occur either when the dvb-usb-vp7045
module gets loaded by modprobe or when it's unloaded. At least
that's what I'm guessing after reading through the error messages
in /var/log/kern.log .

The crashes occur with both kernel 2.6.18.2 and 2.6.20.1 . (AMD
Athlon XP 2500+ with 512MB RAM on an ASUS A7N8X Deluxe
motherboard.)

Today's crash (of type 2) occurred when I was trying to start a
recording scheduled by crontab at 12:58. I discovered the crash
at 16:18. It left these traces in /var/log/kern.log :

Mar  2 07:03:20 miguel kernel: usb 1-1: USB disconnect, address 4
Mar  2 12:58:01 miguel logger: Initializing recording
Mar  2 12:58:01 miguel logger: rmmod dvb-usb-vp7045
Mar  2 12:58:15 miguel kernel: usbcore: deregistering interface driver dvb_usb_vp7045
Mar  2 12:58:15 miguel kernel: dvb-usb: Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II) successfully deinitialized and disconnected.
Mar  2 12:58:15 miguel logger: rmmod dvb-usb
Mar  2 12:58:15 miguel logger: rmmod dvb-usb-vp7045
Mar  2 12:58:15 miguel logger: rmmod dvb-usb
Mar  2 12:58:15 miguel logger: modprobe dvb-usb
Mar  2 12:58:15 miguel logger: modprobe dvb-usb-vp7045
Mar  2 16:18:58 miguel kernel: klogd 1.4.1#20, log source = /proc/kmsg started.

(The 14 second delay is due to sync being run to ensure that
syslog messages are written to disk. It takes that long since I
have four drives in my machine.)
These are the commands that ran to produce the above output:

#!/bin/sh -x
/usr/bin/logger -p local7.info Initializing recording
/bin/sync &
/usr/bin/logger -p local7.info rmmod dvb-usb-vp7045
/bin/sync
/sbin/rmmod dvb-usb-vp7045
/usr/bin/logger -p local7.info rmmod dvb-usb
/bin/sync
/sbin/rmmod dvb-usb
/usr/bin/logger -p local7.info rmmod dvb-usb-vp7045
/bin/sync
/sbin/rmmod dvb-usb-vp7045
/usr/bin/logger -p local7.info rmmod dvb-usb
/bin/sync
/sbin/rmmod dvb-usb
/usr/bin/logger -p local7.info modprobe dvb-usb
/bin/sync
/sbin/modprobe dvb-usb >/dev/null 2>&1
/usr/bin/logger -p local7.info modprobe dvb-usb-vp7045
/bin/sync
/sbin/modprobe dvb-usb-vp7045 >/dev/null 2>&1

Yesterday's and Wednesday's crashes (both of type 3) occurred
when a crontab-scheduled recording was finished at 13:17. I
discovered yesterday's crash at 17:45. It left these traces in
/var/log/kern.log :

Mar  1 07:19:14 miguel kernel: usb 1-1: USB disconnect, address 2
Mar  1 12:58:07 miguel kernel: usbcore: deregistering interface driver dvb_usb_vp7045
Mar  1 12:58:07 miguel kernel: dvb-usb: Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II) successfully deinitialized and disconnected.
Mar  1 12:58:07 miguel kernel: dvb-usb: found a 'Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II)' in warm state.
Mar  1 12:58:07 miguel kernel: dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
Mar  1 12:58:07 miguel kernel: DVB: registering new adapter (Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II)).
Mar  1 12:58:07 miguel kernel: dvb-usb: MAC address: 08:ca:1a:f6:64:ff
Mar  1 12:58:07 miguel kernel: DVB: registering frontend 0 (Twinhan VP7045/46 USB DVB-T)...
Mar  1 12:58:07 miguel kernel: input: IR-receiver inside an USB DVB receiver as /class/input/input4
Mar  1 12:58:07 miguel kernel: dvb-usb: schedule remote query interval to 400 msecs.
Mar  1 12:58:07 miguel kernel: dvb-usb: Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II) successfully initialized and connected.
Mar  1 12:58:07 miguel kernel: usbcore: registered new interface driver dvb_usb_vp7045
Mar  1 13:17:14 miguel kernel: usbcore: deregistering interface driver dvb_usb_vp7045
Mar  1 13:17:14 miguel kernel: dvb-usb: Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II) successfully deinitialized and disconnected.
Mar  1 13:17:14 miguel kernel: BUG: unable to handle kernel paging request at virtual address e0876c90
Mar  1 13:17:14 miguel kernel:  printing eip:
Mar  1 13:17:14 miguel kernel: e0876c90
Mar  1 13:17:14 miguel kernel: *pde = 01475067
Mar  1 13:17:14 miguel kernel: *pte = 00000000
Mar  1 13:17:14 miguel kernel: Oops: 0000 [#1]
Mar  1 13:17:14 miguel kernel: PREEMPT
Mar  1 13:17:14 miguel kernel: Modules linked in: nvidia(P) eeprom w83l785ts asb100 hwmon_vid hwmon dvb_core crc32 firmware_class dvb_pll aic7xxx ide_cd scsi_transport_spi cdrom forcedeth i2c_nforce2 i2c_core
Mar  1 13:17:14 miguel kernel: CPU:    0
Mar  1 13:17:14 miguel kernel: EIP:    0060:[<e0876c90>]    Tainted: P      VLI
Mar  1 13:17:14 miguel kernel: EFLAGS: 00010247   (2.6.20.1 #2)
Mar  1 13:17:14 miguel kernel: EIP is at 0xe0876c90
Mar  1 13:17:14 miguel kernel: eax: decadfa8   ebx: decadfa8   ecx: dff86000   edx: 00000000
Mar  1 13:17:14 miguel kernel: esi: 00000296   edi: dffe4b20   ebp: e0876c90   esp: dff87f58
Mar  1 13:17:14 miguel kernel: ds: 007b   es: 007b   ss: 0068
Mar  1 13:17:14 miguel kernel: Process events/0 (pid: 4, ti=dff86000 task=dffc6a90 task.ti=dff86000)
Mar  1 13:17:14 miguel kernel: Stack: c012eaa7 0000743b dffc6b9c 000076f0 00000000 dffe4b28 dffe4b38 dffe4b20
Mar  1 13:17:14 miguel kernel:        dffe4b28 dffe4b30 dff87f9c c012f197 00000001 00000000 00000001 00010000
Mar  1 13:17:14 miguel kernel:        00000000 00000000 dffc6a90 c011a960 00100100 00200200 ffffffff ffffffff
Mar  1 13:17:14 miguel kernel: Call Trace:
Mar  1 13:17:14 miguel kernel:  [<c012eaa7>] run_workqueue+0xa7/0x190
Mar  1 13:17:14 miguel kernel:  [<c012f197>] worker_thread+0x147/0x170
Mar  1 13:17:14 miguel kernel:  [<c011a960>] default_wake_function+0x0/0x10
Mar  1 13:17:14 miguel kernel:  [<c012f050>] worker_thread+0x0/0x170
Mar  1 13:17:14 miguel kernel:  [<c0132098>] kthread+0xa8/0xe0
Mar  1 13:17:14 miguel kernel:  [<c0131ff0>] kthread+0x0/0xe0
Mar  1 13:17:14 miguel kernel:  [<c0103bcb>] kernel_thread_helper+0x7/0x1c
Mar  1 13:17:14 miguel kernel:  =======================
Mar  1 13:17:14 miguel kernel: Code:  Bad EIP value.
Mar  1 13:17:14 miguel kernel: EIP: [<e0876c90>] 0xe0876c90 SS:ESP 0068:dff87f58
Mar  1 17:46:02 miguel kernel:  <6>usb 1-1: new high speed USB device using ehci_hcd and address 5
Mar  1 17:46:02 miguel kernel: usb 1-1: configuration #1 chosen from 1 choice
Mar  1 17:46:02 miguel kernel: hub 1-1:1.0: USB hub found
Mar  1 17:46:02 miguel kernel: hub 1-1:1.0: 4 ports detected
Mar  1 17:48:45 miguel kernel: SysRq : Emergency Sync
Mar  1 17:48:45 miguel kernel: Emergency Sync complete
Mar  1 17:48:52 miguel kernel: SysRq : Emergency Sync
Mar  1 17:48:52 miguel kernel: Emergency Sync complete
Mar  1 17:49:25 miguel kernel: Kernel logging (proc) stopped.
Mar  1 17:49:25 miguel kernel: Kernel log daemon terminating.
Mar  1 17:50:32 miguel kernel: klogd 1.4.1#20, log source = /proc/kmsg started.

The Wednesday crash was practically identical, except for the
register values and stack values.

Unfortunately I had no logger writing debug messages in my script
until today, but the commands that ran yesterday were (a bit
simplified):

#!/bin/sh -x
/sbin/rmmod dvb-usb dvb-usb-vp7045
/sbin/rmmod dvb-usb dvb-usb-vp7045
/sbin/modprobe dvb-usb >/dev/null 2>&1
/sbin/modprobe dvb-usb-vp7045 >/dev/null 2>&1
/usr/local/bin/dvbstream ........ &
sleep 1140
kill dvbstream
/sbin/rmmod dvb-usb dvb-usb-vp7045
/sbin/rmmod dvb-usb dvb-usb-vp7045

So, does anyone have any ideas? I'm willing to do some coding
(I'm a programmer, but not a Linux kernel programmer) and testing
to find out what's wrong, if someone can point me in the right
direction.

Should I insert lots of printk()'s into the module source code
(and also sync() calls (which ones? sync(2)? fsync(2)?) to find
the problem?

Can it be the firmware? (I'm using the standard
dvb-usb-vp7045-01.fw file.)

I'm a complete novice at kernel debugging and error hunting, but
could the call trace perhaps indicate that the module hasn't
been unlinked from some scheduling list?

Looking through the archives I've not found many posts mentioning
problems with the TwinhanDTV, but this one mention similar
problems:
http://www.linuxtv.org/pipermail/linux-dvb/2006-January/007385.html
Unfortunately there was no reply to his post.


I am well aware that my recording scripts aren't perfect, but
they are not the problem here and shouldn't be blamed. The rmmods
immediately before the modprobes may be unnecessary but I like to
do some cleaning up. (Cleaning up modules is necessary on my
other machine which has my Twinhan PCI card and a Hauppauge
PVR-150 card, as those two cards seem to share some modules, so
I've adopted that strategy on my TwinhanDTV Alpha-equipped
machine as well.) I like using crontab and dvbstream instead of a
MythTV or some other available solution. I'll write better
scripts when the kernel quits crashing.


When everything works the quality of recordings made with the
TwinhanDTV Alpha using the crappy bundled indoor antenna is way
better than recordings of the same TV program made with my
Twinhan PCI DVB-T card using a big grid antenna. We're talking
0-20 errors compared to 100-1000 errors (as reported by
ProjectX). So I'd really like to get the TwinhanDTV Alpha working
reliably.

Again, sorry for the long post. I can supply more info (full
kernel config etc.) on request, but I figure if this mail gets
any larger noone will even bother opening it in the first place.
:)

/Tomas



More information about the linux-dvb mailing list