bcm203x firmware will not load

Bug #85247 reported by BHowell on 2007-02-15
16
This bug affects 1 person
Affects Status Importance Assigned to Milestone
linux-source-2.6.20 (Ubuntu)
Undecided
Unassigned
linux-source-2.6.22 (Ubuntu)
Medium
Ben Collins

Bug Description

Binary package hint: linux-source-2.6.20

Not sure if this is a kernel bug but my Broadcom USB bluetooth dongle is not working on feisty.
It appears that the firmware is not being uploaded successfully to the dongle. I have the
BCM2033-FW.bin and BCM2033-MD.hex files located in /lib/firmware. These are the same files that worked under Dapper.

lsusb output:

Bus 003 Device 008: ID 04b8:0005 Seiko Epson Corp. Stylus Printer
Bus 003 Device 006: ID 047b:0001 Silitek Corp.
Bus 003 Device 005: ID 09da:0006 A4 Tech Co., Ltd Optical Mouse WOP-35 / Trust 450L Optical Mouse
Bus 003 Device 002: ID 05e3:0606 Genesys Logic, Inc.
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 005: ID 0a5c:2033 Broadcom Corp. BCM2033 Bluetooth
Bus 001 Device 001: ID 0000:0000

dmesg output is attached. The critical line being "[34921.387254] bcm203x_complete: URB failed with status -108". I beleive this indicates that the firmware was not successfully uploaded.

BHowell (mute-howell-ersatz) wrote :

Thanks for taking the time to report this bug. Unfortunately we can't fix it, because your description didn't include enough information.

Please include the following additional information, if you have not already done so (please pay attention to lspci's additional options), as required by the Ubuntu Kernel Team:
1. Please include the output of the command "uname -a" in your next response. It should be one, long line of text which includes the exact kernel version you're running, as well as the CPU architecture.
2. Please run the command "dmesg > dmesg.log" and attach the resulting file "dmesg.log" to this bug report.
3. Please run the command "lspci -vvnn > lspci-vvnn.log" and attach the resulting file "lspci-vvnn.log" to this bug report.

For your reference, the full description of procedures for kernel-related bug reports is available here: <http://wiki.ubuntu.com/DebuggingKernelProblems> Thanks!

BHowell (mute-howell-ersatz) wrote :

Umm... thanks for the cut n' paste response but I attached dmesg output. The kernel is the latest update for feisty on amd64: 2.6.20-8

This is a USB device having problems so lspci is not going to be very useful for debugging but if you want it you got it:

00:00.0 Host bridge: ATI Technologies Inc RS480 Host Bridge (rev 01)
00:01.0 PCI bridge: ATI Technologies Inc RS480 PCI Bridge
00:06.0 PCI bridge: ATI Technologies Inc RS480 PCI Bridge
00:13.0 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller
00:13.1 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller
00:13.2 USB Controller: ATI Technologies Inc IXP SB400 USB2 Host Controller
00:14.0 SMBus: ATI Technologies Inc IXP SB400 SMBus Controller (rev 11)
00:14.1 IDE interface: ATI Technologies Inc Standard Dual Channel PCI IDE Controller ATI
00:14.3 ISA bridge: ATI Technologies Inc IXP SB400 PCI-ISA Bridge
00:14.4 PCI bridge: ATI Technologies Inc IXP SB400 PCI-PCI Bridge
00:14.5 Multimedia audio controller: ATI Technologies Inc IXP SB400 AC'97 Audio Controller (rev 02)
00:14.6 Modem: ATI Technologies Inc ATI SB400 - AC'97 Modem Controller (rev 02)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:05.0 VGA compatible controller: ATI Technologies Inc ATI Radeon XPRESS 200M 5955 (PCIE)
02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8036 PCI-E Fast Ethernet Controller (rev 10)
08:05.0 CardBus bridge: ENE Technology Inc CB1410 Cardbus Controller (rev01)
08:07.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
08:0e.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)

I know you guys have tons of bug reports to plow through but it would be nice if you read the report to make sure that you're not making any redundant or unnecessary requests before pasting in a generic response.

Kyle McMartin (kyle) wrote :

Hi!

Can you please try copying them to /lib/firmware/`uname -r`/ and let me know if that fixes the problem? We should probably be supplying a seperately looked at directly for user firmware... Sigh.

Cheers,
 Kyle

Changed in linux-source-2.6.20:
assignee: nobody → kyle
status: Unconfirmed → Confirmed
Changed in linux-source-2.6.20:
status: Confirmed → Needs Info
krist (post-cmund) wrote :

I'm experiencing the same problem with this dongle. It worked fine with Edgy but I can't get it to work with Feisty.

If the firmware wouldn't have been found the message would be:

bcm203x_probe: Mini driver request failed
bcm203x: probe of 1-1:1.0 failed with error -5

But instead it is

bcm203x_complete: URB failed with status -108

or

bcm203x_complete: URB failed with status -84

Adam McDaniel (adamrmcd) wrote :

I've had this same problem for a couple weeks now. After a little digging I believe that the likely culprit was introduced in 2.6.19. From that kernel's changelog:

> commit 3f5306927d800306ebba542438cfdf1a1c418376
> Author: Marcel Holtmann
> Date: Sun Oct 15 17:31:19 2006 +0200
>
> [Bluetooth] Use work queue to trigger URB submission
>
> The bcm203x firmware loading driver uses a timer to trigger the
> URB submission. It is better to use a work queue instead.
>
> Signed-off-by: Marcel Holtmann

Right now I'm trying to build 2.6.20 without this specific check-in to see if this fixes things. FWIW, there appears to be another "bluetooth firmware" check-in, to 2.6.21-rc2, which may already fix the issue. I'll test that out next :)

Adam McDaniel (adamrmcd) wrote :

Success! .. I backported drivers/bluetooth/bcm203x.c from 2.6.20 to 2.6.18 and recompiled the module within the 2.6.20 source. My BT-120 device is back online in fiesty!

I'll attach a diff here of what I did, it's very straight forward.

I still need to test to see if 2.6.21-rc2 or later already addresses this issue.

Unfortunately, due to a lack of kernel hacking experience, I'm not sure if I can actually debug Marcel Holtmann's original check-in so that it properly loads the firmware using the correct "work queue" way :)

I've got the same issue with Feisty and the 2.6.20-16 kernel. After connecting the dongle and waiting a bit and then a disconnect the output from dmesg is:

[ 74.449625] Bluetooth: HCI device and connection manager initialized
[ 74.449632] Bluetooth: HCI socket layer initialized
[ 74.578322] Bluetooth: L2CAP ver 2.8
[ 74.578333] Bluetooth: L2CAP socket layer initialized
[ 74.624702] Bluetooth: RFCOMM socket layer initialized
[ 74.624733] Bluetooth: RFCOMM TTY layer initialized
[ 74.624737] Bluetooth: RFCOMM ver 1.8
[ 126.955108] usb 1-1: new full speed USB device using uhci_hcd and address 3
[ 127.106230] usb 1-1: configuration #1 chosen from 1 choice
[ 127.571169] Bluetooth: HCI USB driver ver 2.9
[ 127.572593] usbcore: registered new interface driver hci_usb
[ 127.614522] Bluetooth: Broadcom Blutonium firmware driver ver 1.1
[ 127.694143] usbcore: registered new interface driver bcm203x
[ 148.526188] bcm203x_complete: URB failed with status -84
[ 148.632436] usb 1-1: USB disconnect, address 3

I backported the driver from 2.6.18 as Adam suggested and then dropped the bcm module (without the custom kernel) into the standard kernel directory and the dongle comes up fine.

I noticed that the state of this bug is 'Needs info'. If you can let me know what you need (maybe I just missed it above) I can try to provide the data.

kjsteuer (kjsteuer) wrote :

How do I backport the driver? I am having the same issue.

I followed the instructions in the bug report and the instructions at
http://www.howtoforge.com/kernel_compilation_ubuntu . I haven't tried
the older module with the latest kernel from 7.04.

On Wed, 2007-06-13 at 18:34 +0000, kjsteuer wrote:
> How do I backport the driver? I am having the same issue.
>

Good luck,

Paul

Adam McDaniel (adamrmcd) wrote :

I just upgraded to gutsy (tribe4) running 2.6.22 and found that the problem still exists. The only thing different that I noticed is the dmesg failure error code

[19681.456000] bcm203x_complete: URB failed with status -108

I assume that my original patch still works (about to try the patch now), but its pretty annoying having to recompile bcm203x.o by hand after every upgrade.

Adam McDaniel (adamrmcd) wrote :

The problem was originally discovered in Feisty (2.6.20), but Gutsy (2.6.22) is also affected.

Changed in linux-source-2.6.22:
assignee: nobody → ubuntu-kernel-team
importance: Undecided → Medium
status: New → Triaged
Ben Collins (ben-collins) wrote :

Gutsy commit e553585d897d2b63c362f2ccb261bbdeb6ff2f47

Changed in linux-source-2.6.22:
assignee: ubuntu-kernel-team → ben-collins
status: Triaged → Fix Committed
Ben Collins (ben-collins) wrote :
Download full text (4.0 KiB)

linux-source-2.6.22 (2.6.22-11.32) gutsy; urgency=low

  [Amit Kucheria]

  * Build system: Allow custom builds to comprise multiple patches
  * Move UME to a Custom build and add first setup of thermal framework

  [Ben Collins]

  * ubuntu: Enable CONFIG_BLK_DEV_IO_TRACE
  * bcm203x: Fix firmware loading
    - LP: #85247
  * ubuntu: mtd changes caused module renaming. Ignore
  * rt: Do not patch top level Makefile for SUBLEVEL. Will always end up
    breaking

  [Chuck Short]

  * [USB] Unusual Device support for Gold MP3 Player Energy
    - LP: #125250
  * [SIERRA] Adds support for Onda H600 ZTE MF330
    - LP: #129433
  * [HDAPS] Add Thinkpad T61P to whitelist.
    - LP: #133636
  * [USB] Add support for Toshiba (Novatel Wireless) HSDPA for M400.
    - LP: #133650

  [Kyle McMartin]

  * apparmor 10.3 hooks
  * unionfs 2.1 hooks
  * nuke UNION_FS stuff from fs/{Kconfig,Makefile}

  [Tim Gardner]

  * Paravirt-ops I/O hypercalls
  * Fix lazy vmalloc bug for Gutsy
  * bluetooth headset patch
    - LP: #130870
  * Add the PCI ID of this ICH4 in list of laptops that use short cables.
  * v2.6.22.5 merge
  * Update Xen config options.
    - LP: #132726
  * Remove mtd modules from ABI
  * Support parallel=<n> in DEB_BUILD_OPTIONS
    - LP: #136426

  [Upstream Kernel Changes]

  * hwmon: fix w83781d temp sensor type setting
  * hwmon: (smsc47m1) restore missing name attribute
  * sky2: restore workarounds for lost interrupts
  * sky2: carrier management
  * sky2: check for more work before leaving NAPI
  * sky2: check drop truncated packets
  * revert "x86, serial: convert legacy COM ports to platform devices"
  * ACPICA: Fixed possible corruption of global GPE list
  * ACPICA: Clear reserved fields for incoming ACPI 1.0 FADTs
  * AVR32: Fix atomic_add_unless() and atomic_sub_unless()
  * r8169: avoid needless NAPI poll scheduling
  * forcedeth: fix random hang in forcedeth driver when using netconsole
  * libata: add ATI SB700 device IDs to AHCI driver
  * Hibernation: do not try to mark invalid PFNs as nosave
  * i386: allow debuggers to access the vsyscall page with compat vDSO
  * x86_64: Check for .cfi_rel_offset in CFI probe
  * x86_64: Change PMDS invocation to single macro
  * i386: Handle P6s without performance counters in nmi watchdog
  * i386: Fix double fault handler
  * JFFS2 locking regression fix.
  * [Input]: appletouch - improve powersaving for Geyser3 devices
  * [Input]: add driver for Fujitsu serial touchscreens
  * [sdhci]: add support to ENE-CB714
  * v2.6.22.5
  * [MTD] Makefile fix for mtdsuper
  * ocfs2: Fix bad source start calculation during kernel writes
  * NET: Share correct feature code between bridging and bonding
  * sky2: don't clear phy power bits
  * uml: fix previous request size limit fix
  * i386: fix lazy mode vmalloc synchronization for paravirt
  * signalfd: fix interaction with posix-timers
  * signalfd: make it group-wide, fix posix-timers scheduling
  * DCCP: Fix DCCP GFP_KERNEL allocation in atomic context
  * IPV6: Fix kernel panic while send SCTP data with IP fragments
  * IPv6: Invalid semicolon after if statement
  * Fix soft-fp underflow handling.
  * Netfilter: Missing Kbuild entry for netfil...

Read more...

Changed in linux-source-2.6.22:
status: Fix Committed → Fix Released
Changed in linux-source-2.6.20:
assignee: kyle → nobody
status: Incomplete → Won't Fix
Paul Sladen (sladen) wrote :

Just hit this on a feitsy machine. Is the bcm203x fix too intrusive stick the update in the next driver/security-fix round up?

Luis Villa (luis-villa) wrote :

Wait, wait... so the fix is to take a 2.6.18 driver which the maintainer has deliberately changed and slam it into 2.6.20/22? Seriously? Was this problem reported upstream? (Google suggests 'no'.)

Luis Villa (luis-villa) wrote :

(But of course Google has been wrong before.)

Luis Villa (luis-villa) wrote :

For the record, someone else did report it upstream, and the author confirms that this fix is the wrong fix, but did not apparently propose a different one or even really acknowledge the bug:

http://fixunix.com/kernel/336629-2-6-24-bcm203x-bluetooth-dongle-does-not-work.html

Luis Villa (luis-villa) wrote :

And Debian has the same bug report as well, but also didn't report it to bugzilla.kernel.org:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=458719

Ville Ranki (ville-ranki) wrote :

I'm suffering from this, running 10.10:

[1484047.788648] bcm203x_complete: URB failed with status -84
[1484047.793058] usb 8-2: USB disconnect, address 9
[1484051.928027] usb 8-2: new full speed USB device using uhci_hcd and address 10

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

Other bug subscribers

Bug attachments

Remote bug watches

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