Resume from suspend fails when DVB-T card is plugged in

Bug #279143 reported by Peng Deng
40
This bug affects 7 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Won't Fix
Medium
Unassigned

Bug Description

If my USB DVB-T TV Card (Hauppauge WinTV-HVR 900) is plugged in my Laptop (Thinkpad T43 2668), when the system is suspended, it won't successfully resume. The resume process seems already started: external USB Hard disk, USB keyboard, USB webcam have all received power while the monitor still stays black screen. The process will hang at this state but if the USB TV Card is disconnected at this point, the process will continue and eventually the resume will be successful. (There is typically ~40 seconds between disconnection of the TV Card and the resume finishes during which there seems no obvious activities with the laptop e.g. disk I/O).

From the kernel log, such a pause could be observed:
...
Oct 2 14:54:58 strasbourg kernel: [ 335.492394] xc2028 0-0061: creating new instance
Oct 2 14:54:58 strasbourg kernel: [ 335.492396] xc2028 0-0061: type set to XCeive xc2028/xc3028 tuner
Oct 2 14:54:58 strasbourg kernel: [ 335.492404] firmware: requesting xc3028-v27.fw
Oct 2 14:54:58 strasbourg kernel: [ 395.492043] xc2028 0-0061: Error: firmware xc3028-v27.fw not found.
Oct 2 14:54:58 strasbourg kernel: [ 395.492472] tvp5150 debug 0-005c: i2c i/o error: rc == -71 (should be 1)
...

Although the firmware file xc3028-v27.fw is missing in the default installation of Intrepid as described in Bug #278656, my system has had the firmware installed manually under /lib/firmware/ before doing the suspend/resume test and the TV card is working well before suspend.

If em28xx-new, the TV Card driver/kernel modules maintained by Markus Rechberger, are compiled and installed, there wil be no problem with suspend/resume.

Revision history for this message
Peng Deng (d6g) wrote :
Revision history for this message
Peng Deng (d6g) wrote :
Revision history for this message
Peng Deng (d6g) wrote :
Revision history for this message
Peng Deng (d6g) wrote :
Revision history for this message
Peng Deng (d6g) wrote :
Revision history for this message
Peng Deng (d6g) wrote :
Revision history for this message
Peng Deng (d6g) wrote :

I've tried the debug method shown at https://wiki.ubuntu.com/DebuggingKernelSuspend.

The output of dmesg shows following:

[ 1.684506] Magic number: 0:953:49
[ 1.684509] hash matches /build/buildd/linux-2.6.27/drivers/base/power/main.c:390
[ 1.684605] acpi NSC1100:00: hash matches

Attached is the kernel log of using the debug method

description: updated
Revision history for this message
Peng Deng (d6g) wrote :

Quote from Devin Heitmueller at em28xx mailing list:

"Just to be clear, Ubuntu 8.10 ships with the version of the em28xx
driver that is maintained by the linux-dvb project. It is not the
version maintained by mcentral.de. As a result, some devices will
work and others will not, as there are devices supported in the
Mcentral.de driver and not in the linux-dvb driver (and vice-versa).

The Xceive 3028 firmware is not shipped with Ubuntu because Xceive has
not approved its redistribution. Mrec's version of the driver has the
firmware embedded in the source code."

Changed in linux:
assignee: nobody → ubuntu-kernel-team
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
Launchpad Janitor (janitor) wrote : Kernel team bugs

Per a decision made by the Ubuntu Kernel Team, bugs will longer be assigned to the ubuntu-kernel-team in Launchpad as part of the bug triage process. The ubuntu-kernel-team is being unassigned from this bug report. Refer to https://wiki.ubuntu.com/KernelTeamBugPolicies for more information. Thanks.

Revision history for this message
Gonzhauser (gonzhauser) wrote :

1. Is anybody working on this?
When resuming from sleep my kernel message is:
[68192.252096] dvb-usb: did not find the firmware file. (dvb-usb-dib0700-1.20.fw) Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2)

The firmware ist here:
/lib/firmware/dvb-usb-dib0700-1.20.fw
and can normally be found. Why isn't it found when resuming?

2. And by the way: Resuming doesn't fail for me, it only takes 40 to 60 second to recover from that error.

3. Why isn't the kernel team not responsible for this as both packages (linux-image-2.6.28-11-generic
and linux-firmware) show:

Maintainer: Ubuntu Kernel Team <email address hidden>

Thank you.

Revision history for this message
Gonzhauser (gonzhauser) wrote :

Is it possible that the firmware can't be found because it is not included in the initrd?

Revision history for this message
Gonzhauser (gonzhauser) wrote :

The following script seems to fix the 1 minute hang when resuming. It belongs in /etc/pm/sleep.d:
echo 50_dvb_usb_dib0700_quirk:

#!/bin/sh

case "$1" in
 hibernate|suspend)
  rmmod dvb_usb_dib0700
  ;;
 thaw|resume)
  modprobe dvb_usb_dib0700
  ;;
 *) exit $NA
  ;;
esac

Revision history for this message
Robert Hensing (rjhensing) wrote :

@Gonzhauser: Nice workaround! Does not work when the card is in use though. I rarely use my built-in DVB-USB device, so I will use this for a while. There is a real fix though.

The problem applies to other DVB-USB cards as well.

The kernel tries to initialize all devices before resuming user space, but it can not do so for these DVB-USB cards because firmware has to be loaded through udev (userspace).

A fix would be to store the firmware in kernel memory before suspend. Then it is available when resuming, without depending on user space resume.
This is sufficient when the device was plugged in at suspend time. Otherwise, the firmware should be loaded after user space resume.

I am not familiar with the linux kernel code itself, so I don't know how to implement the fix myself.

Revision history for this message
Jeremy Foshee (jeremyfoshee) wrote :

This bug report was marked as Triaged a while ago but has not had any updated comments for quite some time. Please let us know if this issue remains in the current Ubuntu release, http://www.ubuntu.com/getubuntu/download . If the issue remains, click on the current status under the Status column and change the status back to "New". Thanks.

[This is an automated message. Apologies if it has reached you inappropriately; please just reply to this message indicating so.]

Revision history for this message
Gonzhauser (gonzhauser) wrote :

Ping.

Changed in linux (Ubuntu):
status: Triaged → New
Revision history for this message
Gonzhauser (gonzhauser) wrote :

I think update-initramfs forgets to include ls /lib/firmware/dvb-usb-dib0700-1.20.fw although
lsmod shows dvb_usb_dib0700 and the .firmware field in that module includes above firmware.

Revision history for this message
Jeremy Foshee (jeremyfoshee) wrote :

Reset to triaged as New is an incorrect state for this bug.

~JFo

Changed in linux (Ubuntu):
status: New → Triaged
Revision history for this message
YAFU (yafu) wrote :

Is this report still active?

I have exactly the same problem since Kubuntu 10.04 Lucid until 11.04 Natty.
My USB dongle is a MyGica s870 using dvb_usb_dib0700 module.

Revision history for this message
Brad Figg (brad-figg) wrote : Unsupported series, setting status to "Won't Fix".

This bug was filed against a series that is no longer supported and so is being marked as Won't Fix. If this issue still exists in a supported series, please file a new bug.

This change has been made by an automated script, maintained by the Ubuntu Kernel Team.

Changed in linux (Ubuntu):
status: Triaged → Won't Fix
Revision history for this message
flying sheep (flying-sheep) wrote :

where can i look up if it is supported? i have an avermedia a309 (in a hp pavilion dv7) and the bug affects me.

since ubuntu offered me to install the drivers for it, i assume it is supported.
if not, the fact that it offers the driver installation is another bug

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.